create-campsitejs 0.0.9 → 0.0.11

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.js CHANGED
@@ -9,8 +9,6 @@ import kleur from "kleur";
9
9
 
10
10
  const __dirname = dirname(fileURLToPath(import.meta.url));
11
11
  const templateDir = join(__dirname, "template");
12
- // Variant pages live under the template folder
13
- const variantDir = join(templateDir, "variants");
14
12
  const pkgJsonPath = join(__dirname, "package.json");
15
13
 
16
14
  async function getCliVersion() {
@@ -108,21 +106,22 @@ async function copyBaseTemplate(targetDir) {
108
106
 
109
107
  async function writeConfig(targetDir, answers) {
110
108
  const configPath = join(targetDir, "campsite.config.js");
111
- const primaryEngine = answers.templateEngines[0] || "nunjucks";
112
109
  const photoFormats = answers.photoCompression.length > 0
113
110
  ? JSON.stringify(answers.photoCompression)
114
111
  : "[]";
115
112
  const compressPhotos = answers.photoCompression.length > 0;
116
113
 
117
114
  const config = `export default {
115
+ port: 4173,
118
116
  siteName: "${answers.projectName}",
117
+ siteUrl: "https://example.com",
119
118
  srcDir: "src",
120
119
  outDir: "dist",
121
- templateEngine: "${primaryEngine}",
122
- markdown: ${answers.markdown},
120
+ templateEngine: "nunjucks",
121
+ frontmatter: ${answers.frontmatter},
123
122
  minifyCSS: ${answers.minifyAssets},
124
123
  minifyHTML: ${answers.minifyAssets},
125
- cacheBustAssets: ${answers.cacheBustAssets}, // Add content hashes to JS/CSS filenames
124
+ cacheBustAssets: ${answers.cacheBustAssets},
126
125
  compressPhotos: ${compressPhotos},
127
126
  compressionSettings: {
128
127
  quality: 80,
@@ -158,7 +157,7 @@ async function updatePackageJson(targetDir, answers) {
158
157
  } else {
159
158
  devDeps["basecampjs"] = "^0.0.1";
160
159
  }
161
- if (answers.markdown) devDeps["markdown-it"] = "^14.1.0";
160
+ if (answers.templateEngines.includes("markdown")) devDeps["markdown-it"] = "^14.1.0";
162
161
  if (answers.templateEngines.includes("nunjucks")) devDeps["nunjucks"] = "^3.2.4";
163
162
  if (answers.templateEngines.includes("liquid")) devDeps["liquidjs"] = "^10.12.0";
164
163
  if (answers.templateEngines.includes("mustache")) devDeps["mustache"] = "^4.2.0";
@@ -166,7 +165,7 @@ async function updatePackageJson(targetDir, answers) {
166
165
  if (answers.jsFrameworks.includes("alpine")) deps["alpinejs"] = "^3.13.0";
167
166
 
168
167
  // CSS framework selection
169
- const cssFramework = answers.cssFramework || "tailwind";
168
+ const cssFramework = answers.cssFramework || "none";
170
169
  const cssDeps = {
171
170
  bootstrap: ["bootstrap", "^5.3.3"],
172
171
  foundation: ["foundation-sites", "^6.8.1"],
@@ -180,6 +179,7 @@ async function updatePackageJson(targetDir, answers) {
180
179
 
181
180
  if (cssFramework === "tailwind") {
182
181
  devDeps["tailwindcss"] = "^4.1.18";
182
+ devDeps["@tailwindcss/cli"] = "^4.1.18";
183
183
  devDeps["npm-run-all"] = "^4.1.5";
184
184
  pkg.scripts["build:css"] = "tailwindcss -i ./src/styles/tailwind.css -o ./public/style.css --minify";
185
185
  pkg.scripts["dev:css"] = "tailwindcss -i ./src/styles/tailwind.css -o ./public/style.css --watch";
@@ -188,10 +188,14 @@ async function updatePackageJson(targetDir, answers) {
188
188
  pkg.scripts["prebuild"] = "npm run build:css";
189
189
  pkg.scripts["build"] = "camper build";
190
190
  pkg.scripts["serve"] = "camper serve";
191
- pkg.scripts["postinstall"] = "npm run build:css";
191
+ } else if (cssFramework === "none") {
192
+ // No CSS framework - just basic scripts
193
+ delete devDeps["@tailwindcss/cli"]; delete devDeps["@tailwindcss/cli"]; delete devDeps["npm-run-all"];
194
+ pkg.scripts["dev"] = "camper dev";
195
+ pkg.scripts["build"] = "camper build";
196
+ pkg.scripts["serve"] = "camper serve";
192
197
  } else {
193
- delete devDeps["tailwindcss"];
194
- delete devDeps["npm-run-all"];
198
+ delete devDeps["@tailwindcss/cli"]; delete devDeps["@tailwindcss/cli"]; delete devDeps["npm-run-all"];
195
199
  Object.entries(cssDeps).forEach(([key, [name]]) => {
196
200
  if (key !== cssFramework) delete deps[name];
197
201
  });
@@ -208,93 +212,6 @@ async function updatePackageJson(targetDir, answers) {
208
212
  await writeFile(pkgPath, JSON.stringify(pkg, null, 2), "utf8");
209
213
  }
210
214
 
211
- async function copyVariantFiles(srcDir, destDir, ext) {
212
- if (!existsSync(srcDir)) return;
213
- await ensureDir(destDir);
214
- const entries = await readdir(srcDir);
215
- for (const entry of entries) {
216
- if (entry.endsWith(ext)) {
217
- await cp(join(srcDir, entry), join(destDir, entry));
218
- }
219
- }
220
- }
221
-
222
- async function applyTemplateVariants(targetDir, answers) {
223
- const wantsNunjucks = answers.templateEngines.includes("nunjucks");
224
- const wantsLiquid = answers.templateEngines.includes("liquid");
225
- const wantsMustache = answers.templateEngines.includes("mustache");
226
- const srcRoot = join(targetDir, "src");
227
- const layoutsDir = join(srcRoot, "layouts");
228
- const pagesDir = join(srcRoot, "pages");
229
- const partialsDir = join(srcRoot, "partials");
230
-
231
- // Reset engine-specific dirs
232
- await Promise.all([
233
- rm(layoutsDir, { recursive: true, force: true }),
234
- rm(pagesDir, { recursive: true, force: true }),
235
- rm(partialsDir, { recursive: true, force: true })
236
- ]);
237
- await Promise.all([ensureDir(layoutsDir), ensureDir(pagesDir), ensureDir(partialsDir)]);
238
-
239
- const njkLayouts = join(variantDir, "layouts");
240
- const liquidLayouts = join(variantDir, "layouts");
241
- const mustacheLayouts = join(variantDir, "layouts");
242
- const njkPages = join(variantDir, "pages");
243
- const liquidPages = join(variantDir, "pages");
244
- const mustachePages = join(variantDir, "pages");
245
- const njkPartials = join(variantDir, "partials");
246
- const liquidPartials = join(variantDir, "partials");
247
- const mustachePartials = join(variantDir, "partials");
248
-
249
- if (wantsNunjucks) {
250
- await copyVariantFiles(njkLayouts, layoutsDir, ".njk");
251
- await copyVariantFiles(njkPages, pagesDir, ".njk");
252
- await copyVariantFiles(njkPartials, partialsDir, ".njk");
253
- }
254
-
255
- if (wantsLiquid) {
256
- await copyVariantFiles(liquidLayouts, layoutsDir, ".liquid");
257
- await copyVariantFiles(liquidPages, pagesDir, ".liquid");
258
- await copyVariantFiles(liquidPartials, partialsDir, ".liquid");
259
- }
260
-
261
- if (wantsMustache) {
262
- await copyVariantFiles(mustacheLayouts, layoutsDir, ".mustache");
263
- await copyVariantFiles(mustachePages, pagesDir, ".mustache");
264
- await copyVariantFiles(mustachePartials, partialsDir, ".mustache");
265
- }
266
-
267
- // Provide a Markdown starter when requested, pointing at the primary engine layout
268
- const primaryEngine = answers.templateEngines[0] || "nunjucks";
269
- const layoutExtMap = { liquid: "base.liquid", mustache: "base.mustache", nunjucks: "base.njk" };
270
- const mdLayout = layoutExtMap[primaryEngine] || "base.njk";
271
-
272
- if (answers.markdown) {
273
- const mdContent = `---
274
- title: Welcome to CampsiteJS
275
- layout: ${mdLayout}
276
- description: Cozy, fast static sites with CampsiteJS.
277
- ---
278
-
279
- ## Welcome, camper
280
-
281
- CampsiteJS sets up a warm starter for Markdown, Nunjucks, Liquid, Vue, and Alpine.
282
-
283
- - Edit src/pages/index.md to make it yours.
284
- - Tweak the layout in src/layouts/${mdLayout}.
285
- - Add data under src/collections/, components in src/components/, and partials in src/partials/.
286
-
287
- Happy camping! 🌲🏕️🔥
288
- `;
289
- await writeFile(join(pagesDir, "index.md"), mdContent, "utf8");
290
- } else {
291
- await rm(join(pagesDir, "index.md"), { force: true }).catch(() => {});
292
- }
293
-
294
- // Clean up variant sources from the generated project
295
- await rm(join(targetDir, "variants"), { recursive: true, force: true }).catch(() => {});
296
- }
297
-
298
215
  async function pruneComponents(targetDir, answers) {
299
216
  const componentDir = join(targetDir, "src", "components");
300
217
  if (!answers.jsFrameworks.includes("vue")) {
@@ -306,11 +223,13 @@ async function pruneComponents(targetDir, answers) {
306
223
  }
307
224
 
308
225
  async function pruneCssFramework(targetDir, answers) {
309
- if (answers.cssFramework === "tailwind") return;
310
- const tailwindFiles = [
311
- join(targetDir, "src", "styles", "tailwind.css")
312
- ];
313
- await Promise.all(tailwindFiles.map((file) => rm(file).catch(() => {})));
226
+ // Remove tailwind.css if not using Tailwind (but keep styles.css)
227
+ if (answers.cssFramework !== "tailwind") {
228
+ const tailwindFiles = [
229
+ join(targetDir, "src", "styles", "tailwind.css")
230
+ ];
231
+ await Promise.all(tailwindFiles.map((file) => rm(file).catch(() => {})));
232
+ }
314
233
  }
315
234
 
316
235
  async function installDependencies(targetDir, packageManager) {
@@ -356,8 +275,8 @@ async function main() {
356
275
  },
357
276
  {
358
277
  type: "toggle",
359
- name: "markdown",
360
- message: "Include Markdown + frontmatter support?",
278
+ name: "frontmatter",
279
+ message: "Include Frontmatter?",
361
280
  initial: true,
362
281
  active: "yes",
363
282
  inactive: "no"
@@ -368,11 +287,11 @@ async function main() {
368
287
  message: "Choose templating languages",
369
288
  hint: "Use space to toggle, enter to confirm",
370
289
  instructions: false,
371
- min: 1,
290
+ min: 0,
372
291
  choices: [
373
- { title: "Nunjucks", value: "nunjucks", selected: true },
374
- { title: "Liquid", value: "liquid" },
375
- { title: "Mustache", value: "mustache" }
292
+ { title: "Liquid", value: "liquid", selected: false },
293
+ { title: "Mustache", value: "mustache", selected: true },
294
+ { title: "Nunjucks", value: "nunjucks", selected: false }
376
295
  ]
377
296
  },
378
297
  {
@@ -393,6 +312,7 @@ async function main() {
393
312
  message: "CSS framework",
394
313
  initial: 0,
395
314
  choices: [
315
+ { title: "None", value: "none" },
396
316
  { title: "Tailwind CSS", value: "tailwind" },
397
317
  { title: "Bootstrap", value: "bootstrap" },
398
318
  { title: "Foundation", value: "foundation" },
@@ -457,7 +377,6 @@ async function main() {
457
377
  const targetDir = resolve(process.cwd(), answers.projectName);
458
378
  await ensureTargetDir(targetDir);
459
379
  await copyBaseTemplate(targetDir);
460
- await applyTemplateVariants(targetDir, answers);
461
380
  await pruneComponents(targetDir, answers);
462
381
  await pruneCssFramework(targetDir, answers);
463
382
  await writeConfig(targetDir, answers);
@@ -473,7 +392,19 @@ async function main() {
473
392
  }
474
393
 
475
394
  console.log(kleur.bold().green("Setup Complete...") + " " + kleur.bold().cyan("Happy Camping! 🌲⛺🔥"));
476
- console.log(`\n🧭 Navigate to ${kleur.bold(answers.projectName)} and run: ${kleur.cyan(`${answers.packageManager} run dev`)}`);
395
+ console.log(`\n🧭 Navigate to ${kleur.bold(answers.projectName)} and run:`);
396
+
397
+ // If they didn't install deps, tell them to install first
398
+ if (!answers.install) {
399
+ console.log(` ${kleur.cyan(`${answers.packageManager} install`)}`);
400
+ }
401
+
402
+ // If using Tailwind CSS, remind them to build CSS first
403
+ if (answers.cssFramework === "tailwind") {
404
+ console.log(` ${kleur.cyan(`${answers.packageManager} run build:css`)} ${kleur.dim("(build Tailwind styles)")}`);
405
+ }
406
+
407
+ console.log(` ${kleur.cyan(`${answers.packageManager} run dev`)}`);
477
408
  console.log("\n");
478
409
  }
479
410
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-campsitejs",
3
- "version": "0.0.9",
3
+ "version": "0.0.11",
4
4
  "type": "module",
5
5
  "description": "Create a new Campsite static site (create-campsitejs alias).",
6
6
  "bin": {
@@ -1,9 +1,11 @@
1
1
  export default {
2
+ port: 8080,
2
3
  siteName: "Campsite",
4
+ siteUrl: "https://example.com",
3
5
  srcDir: "src",
4
6
  outDir: "dist",
5
7
  templateEngine: "nunjucks",
6
- markdown: true,
8
+ frontmatter: true,
7
9
  minifyCSS: false,
8
10
  minifyHTML: false,
9
11
  cacheBustAssets: false,
@@ -10,11 +10,10 @@
10
10
  "dev": "npm-run-all -p dev:css dev:site",
11
11
  "prebuild": "npm run build:css",
12
12
  "build": "camper build",
13
- "serve": "camper serve",
14
- "postinstall": "npm run build:css"
13
+ "serve": "camper serve"
15
14
  },
16
15
  "dependencies": {
17
- "basecampjs": "^0.0.11"
16
+ "basecampjs": "^0.0.13"
18
17
  },
19
18
  "devDependencies": {
20
19
  "npm-run-all": "^4.1.5",
@@ -0,0 +1,74 @@
1
+ html {
2
+ height: 100%;
3
+ --hdr-gradient: radial-gradient(
4
+ farthest-corner circle at top in oklab,
5
+ #331500 0%, #000 100%
6
+ );
7
+ --sdr-gradient: radial-gradient(farthest-corner circle at top, #331500 0%, #000 100%);
8
+ background: var(--hdr-gradient);
9
+ }
10
+
11
+ body {
12
+ max-width: 1200px;
13
+ margin: 0 auto;
14
+ padding: 24px 32px;
15
+ font-family: "Roboto", sans-serif;
16
+ font-size: 16px;
17
+ color: #fff;
18
+ }
19
+ body a {
20
+ color: #FFB511;
21
+ }
22
+ body a:hover {
23
+ color: #fff;
24
+ }
25
+
26
+ header {
27
+ display: flex;
28
+ justify-content: space-between;
29
+ align-items: center;
30
+ }
31
+ header > a > img {
32
+ height: 30px;
33
+ width: auto;
34
+ }
35
+ header nav {
36
+ display: flex;
37
+ align-items: center;
38
+ gap: 0 10px;
39
+ }
40
+ header nav a {
41
+ padding: 4px 10px;
42
+ text-decoration: none;
43
+ }
44
+ header nav a.active {
45
+ font-weight: 600;
46
+ text-decoration: underline;
47
+ }
48
+ header nav a.active, header nav a:hover {
49
+ color: #fff;
50
+ text-decoration: underline;
51
+ }
52
+
53
+ h1 {
54
+ font-family: "Nunito", sans-serif;
55
+ }
56
+
57
+ main {
58
+ padding: 48px 0;
59
+ }
60
+ main code {
61
+ background-color: #000;
62
+ padding: 2px 5px;
63
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;
64
+ font-size: 14px;
65
+ line-height: 18px;
66
+ border-radius: 4px;
67
+ color: limegreen;
68
+ display: inline-block;
69
+ }
70
+
71
+ footer {
72
+ color: #83817F;
73
+ font-size: 14px;
74
+ }
@@ -0,0 +1,51 @@
1
+ <!doctype html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Welcome to CampsiteJS</title>
7
+ <meta name="description" content="A cozy CampsiteJS starter.">
8
+ <meta property="og:title" content="Welcome to CampsiteJS">
9
+ <meta property="og:description" content="A cozy CampsiteJS starter.">
10
+ <meta property="og:type" content="website">
11
+ <meta property="og:site_name" content="Campsite">
12
+ <meta name="twitter:card" content="summary_large_image">
13
+ <meta name="twitter:title" content="Welcome to CampsiteJS">
14
+ <meta name="twitter:description" content="A cozy CampsiteJS starter.">
15
+ <link rel="stylesheet" href="/base.css">
16
+ <link rel="stylesheet" href="/style.css">
17
+ <link rel="preconnect" href="https://fonts.googleapis.com">
18
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
19
+ <link
20
+ href="https://fonts.googleapis.com/css2?family=Nunito:wght@200..1000&family=Roboto:ital,wght@0,100..900;1,100..900&display=swap"
21
+ rel="stylesheet">
22
+ </head>
23
+ <body>
24
+ <header>
25
+ <a href="/" title="Go to the homepage">
26
+ <img src="https://cdn.foxgrove.media/csjs/logo_white.svg" alt="CampsiteJS homepage">
27
+ </a>
28
+ <nav aria-label="Main navigation">
29
+ <a href="/" class="active" aria-current="page">Home</a>
30
+ <a href="https://campsitejs.dev/docs/overview" target="_blank">Docs</a>
31
+ <a href="https://github.com/foxgrovemedia/campsitejs" target="_blank">GitHub</a>
32
+ </nav>
33
+ </header>
34
+ <main>
35
+ <article>
36
+ <h1>Welcome, camper!</h1>
37
+ <p>CampsiteJS sets up a warm starter for Markdown, Nunjucks, Liquid, Vue, and Alpine.</p>
38
+ <ul>
39
+ <li>Edit <code>./src/pages/index.html</code> to make it yours.</li>
40
+ <li>Add pages in <code>./src/pages/</code> with your preferred template language.</li>
41
+ <li>Add layouts, partials, collections, and components as needed.</li>
42
+ </ul>
43
+ <p>Happy camping! 🌲🏕️🔥</p>
44
+ </article>
45
+ </main>
46
+ <footer>
47
+ CampsiteJS built with ❤️ by:
48
+ <a href="https://foxgrovemedia.com" target="_blank" title="Visit the Fox Grove Media website">Fox Grove Media</a>.
49
+ </footer>
50
+ </body>
51
+ </html>
@@ -1,79 +1 @@
1
1
  @import "tailwindcss";
2
-
3
- @theme {
4
- --color-campfire-50: #fff0e5;
5
- --color-campfire-100: #ffe1cc;
6
- --color-campfire-200: #ffc499;
7
- --color-campfire-300: #ffa666;
8
- --color-campfire-400: #ff8833;
9
- --color-campfire-500: #ff6a00;
10
- --color-campfire-600: #cc5500;
11
- --color-campfire-700: #994000;
12
- --color-campfire-800: #662b00;
13
- --color-campfire-900: #331500;
14
- --color-campfire-950: #0a0501;
15
-
16
- --color-grove-ink: #0b0c10;
17
- --color-grove-foam: #f4ede0;
18
- --color-grove-glow: #f97316;
19
- --color-grove-forest: #1f5130;
20
-
21
- --font-family-sans: "Inter", system-ui, -apple-system, sans-serif;
22
- --font-family-mono: "JetBrains Mono", Menlo, Consolas, monospace;
23
- }
24
-
25
- @layer base {
26
- code {
27
- @apply inline-block bg-campfire-950 text-lime-500 font-mono py-1.5 px-3 rounded-md;
28
- }
29
- pre {
30
- @apply py-1 font-mono;
31
- }
32
- a {
33
- @apply text-amber-500 hover:text-white;
34
- }
35
- nav a.active {
36
- @apply text-white underline font-semibold;
37
- }
38
- nav a.not-active {
39
- @apply text-amber-500 hover:text-white hover:underline;
40
- }
41
- article h1, article h2, article h3, article h4, article h5, article h6 {
42
- @apply mb-4 tracking-wide;
43
- }
44
- article h1 {
45
- @apply text-4xl;
46
- }
47
- article h2 {
48
- @apply text-3xl mt-8;
49
- }
50
- article h3 {
51
- @apply text-2xl mt-6;
52
- }
53
- article h4 {
54
- @apply text-xl mt-4;
55
- }
56
- article h5 {
57
- @apply text-lg;
58
- }
59
- article h6 {
60
- @apply text-base mb-0;
61
- }
62
- article p {
63
- @apply mb-4;
64
- }
65
- article ul {
66
- @apply list-disc list-inside mb-8 pl-4;
67
- }
68
- article ol {
69
- @apply list-decimal list-inside mb-8 pl-4;
70
- }
71
- article ol li, article ul li {
72
- @apply mb-2;
73
- }
74
- }
75
-
76
- h1, h2, h3, h4, h5, h6 {
77
- font-family: "Caprasimo", serif;
78
- font-style: normal;
79
- }
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="550" height="139" fill="none" viewBox="0 0 550 139"><path fill="#000" d="M546.049 88.96q1.664 0 2.56 1.024 1.024 1.024 1.024 2.56 0 1.408-1.024 2.816-3.712 4.48-11.136 7.168-7.296 2.56-15.872 2.56-9.216 0-16.64-4.096-7.424-4.224-11.648-11.648-4.224-7.425-4.224-16.768 0-9.855 4.352-17.792 4.48-8.064 12.032-12.672 7.68-4.608 17.024-4.608 7.296 0 12.928 2.56 5.76 2.432 8.96 6.912 3.2 4.352 3.2 9.728 0 7.552-6.912 12.288-6.784 4.608-18.048 4.608-7.424 0-14.336-1.92-6.784-2.048-10.88-5.248-.64 3.584-.64 6.656 0 7.04 3.2 12.672 3.2 5.505 8.832 8.576t12.8 3.072q7.553 0 13.056-1.792 5.504-1.92 8.32-5.504 1.152-1.152 3.072-1.152m-23.552-43.776q-7.552 0-13.568 3.712-6.017 3.712-9.216 10.368 3.583 2.944 9.6 4.992 6.144 2.048 13.312 2.048 7.936 0 12.544-2.56 4.736-2.56 4.736-6.784 0-4.992-4.864-8.32-4.864-3.456-12.544-3.456M483.336 39.04q1.663 0 2.688 1.152 1.152 1.024 1.152 2.688 0 1.536-1.152 2.688-1.024 1.152-2.688 1.152h-13.824q0 34.688.128 39.168.128 4.864 2.304 6.912 2.304 2.048 5.888 2.944 1.663.383 2.688 1.664 1.024 1.152 1.024 2.816t-1.28 2.688q-1.152 1.024-2.816 1.024-3.968 0-7.552-1.92-3.584-2.047-5.76-5.76t-2.176-8.576q0-23.935-.128-40.96h-7.04q-1.536 0-2.688-1.152t-1.152-2.688q0-1.664 1.152-2.688 1.152-1.152 2.688-1.152h7.04V16.384q0-1.536 1.024-2.688 1.152-1.152 2.816-1.152 1.536 0 2.688 1.152t1.152 2.688V39.04zM435.029 18.048q-2.56 0-4.224-1.664-1.664-1.665-1.664-4.096 0-2.304 1.664-3.968 1.793-1.665 4.224-1.664 2.304 0 3.84 1.664 1.664 1.536 1.664 3.968t-1.664 4.096q-1.536 1.665-3.84 1.664m0 86.656q-1.536 0-2.688-1.152-1.152-1.024-1.152-2.56l.384-26.368.384-21.632q.128-2.431-1.024-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792-.768-.768-.768-1.92 0-1.665 1.28-2.56a4.58 4.58 0 0 1 2.944-1.024q4.48 0 7.296 4.096 2.944 3.968 2.944 10.752 0 6.912-.256 18.816-.128 11.904-.256 18.176l-.256 11.904q0 1.663-1.152 2.688a3.92 3.92 0 0 1-2.688 1.024M386.088 104.576q-7.168 0-14.848-3.84-7.552-3.967-11.264-9.856a3.8 3.8 0 0 1-.512-1.92q0-1.664 1.024-2.688 1.152-1.152 2.816-1.152 2.176 0 3.2 1.792 2.432 4.48 8.064 7.424 5.76 2.816 11.52 2.816 7.936 0 12.544-2.432 4.736-2.56 4.736-7.04 0-4.224-3.968-7.296t-13.824-6.656q-9.857-3.585-16.128-7.808-6.144-4.352-6.144-11.776 0-4.864 3.072-8.704 3.2-3.968 8.448-6.144 5.376-2.304 11.776-2.304 8.448 0 14.976 3.84 6.656 3.712 9.216 9.856.256.512.256 1.664 0 1.792-1.024 2.816t-2.688 1.024q-1.024 0-2.048-.512a5.8 5.8 0 0 1-1.536-1.664q-1.92-4.224-6.656-6.912t-10.752-2.688q-6.656 0-11.008 2.816-4.352 2.688-4.352 6.912t4.736 7.296q4.865 2.944 13.056 5.504 11.904 3.84 17.024 8.448 5.248 4.608 5.248 12.288 0 7.936-6.656 12.416t-18.304 4.48M321.778 36.224q9.089 0 16.512 4.48 7.424 4.352 11.648 12.032t4.224 17.152q0 9.855-4.224 17.92-4.224 7.936-11.648 12.544-7.424 4.48-16.64 4.48-7.424 0-13.696-3.712-6.144-3.84-10.24-10.368-.512 40.576-.64 44.416 0 1.536-1.152 2.688-1.024 1.152-2.816 1.152-1.536 0-2.688-1.152a3.92 3.92 0 0 1-1.024-2.688l1.024-82.176q0-2.431-1.28-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792a3.06 3.06 0 0 1-.768-2.048q0-1.665 1.28-2.56 1.28-.896 2.944-.896 3.968 0 6.784 3.328 2.944 3.2 3.584 8.96 4.096-6.144 10.24-9.728 6.272-3.584 13.568-3.584m-.128 60.928q7.04 0 12.672-3.584t8.832-9.728q3.328-6.272 3.328-13.952 0-7.425-3.328-13.312-3.2-5.887-8.832-9.216-5.632-3.456-12.672-3.456-6.784 0-12.16 3.456-5.376 3.328-8.448 9.216t-3.072 13.312q0 7.808 3.072 14.08 3.072 6.144 8.448 9.728 5.376 3.456 12.16 3.456M275.15 98.176q1.536.896 2.432 1.792.896.768.896 1.92 0 1.664-1.28 2.56t-3.072.896q-4.608 0-7.552-4.224t-2.816-11.392l.256-25.856q0-9.089-4.096-13.952-3.968-4.864-11.904-4.864-8.064 0-12.928 5.12t-5.632 13.056q0 6.784-.128 20.608-.128 13.696-.256 16.128a3.72 3.72 0 0 1-1.28 2.56q-1.152.896-2.688.896-1.663 0-2.688-1.024-1.024-1.024-1.024-2.432.128-3.967.256-17.664.128-13.696.128-19.968 0-7.808-4.224-12.544-4.096-4.864-10.88-4.864-7.807 0-13.056 4.864-5.248 4.865-6.272 12.288l-.768 37.888q0 1.663-1.152 2.688-1.152 1.024-2.816 1.024a3.92 3.92 0 0 1-2.688-1.024 3.92 3.92 0 0 1-1.024-2.688l.896-46.976q0-2.431-1.152-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792a3.06 3.06 0 0 1-.768-2.048q0-1.665 1.28-2.56 1.28-.896 2.944-.896 3.712 0 6.4 2.944 2.688 2.816 3.584 7.936 3.584-5.12 8.832-7.808 5.376-2.688 11.136-2.688 6.784 0 12.16 3.712t7.936 10.112q3.328-6.655 8.96-10.24t12.288-3.584q11.136 0 17.152 6.912 6.144 6.784 6.144 19.072l-.256 25.984q0 2.432 1.152 5.12t2.56 3.456M143.486 37.957c1.42 1.196 1.617 3.333.407 4.754l-7.171 8.535 30.009 35.677a6.75 6.75 0 0 1 1.589 4.345v6.652a5.623 5.623 0 0 1-5.625 5.625h-60.75a5.623 5.623 0 0 1-5.625-5.625v-6.652c0-1.589.563-3.121 1.59-4.345l30.008-35.677-7.171-8.535a3.38 3.38 0 0 1 .407-4.754 3.383 3.383 0 0 1 4.754.408l6.412 7.636 6.413-7.622c1.195-1.42 3.332-1.617 4.753-.407zM103.07 91.268v5.527h8.888l2.151-2.306 15.75-16.875a3.34 3.34 0 0 1 2.461-1.07c.928 0 1.828.395 2.461 1.07l15.75 16.875 2.151 2.306h8.888v-5.527l-29.25-34.79zm18.113 5.527h22.26L132.306 84.87l-11.138 11.925zM80.512 85.76q1.025-1.152 2.688-1.152 1.536 0 2.688 1.152 1.152 1.025 1.152 2.688 0 1.536-1.28 2.816-6.144 6.272-16 9.856-9.728 3.456-19.712 3.456-14.208 0-25.6-6.528-11.392-6.655-17.92-18.432T0 52.864t6.528-27.008q6.528-12.16 17.92-18.944Q35.84 0 50.048 0q22.144 0 34.56 14.08 1.28 1.408 1.28 2.944t-1.152 2.688-2.816 1.152-2.688-1.152q-5.376-6.272-12.672-8.96-7.296-2.816-16.512-2.816-11.904 0-21.632 5.76-9.6 5.76-15.104 16-5.376 10.24-5.376 23.168 0 12.8 5.376 22.784 5.505 9.984 15.104 15.488 9.6 5.505 21.632 5.504 10.112 0 18.176-2.688t12.288-8.192"/></svg>
@@ -1,100 +0,0 @@
1
- :root {
2
- --fg-ink: #0b0c10;
3
- --fg-ink-soft: #161821;
4
- --fg-foam: #f4ede0;
5
- --fg-glow: #f97316;
6
- --fg-forest: #1f5130;
7
- }
8
- * {
9
- box-sizing: border-box;
10
- }
11
- body {
12
- margin: 0;
13
- font-family: "Inter", system-ui, -apple-system, sans-serif;
14
- }
15
- a {
16
- color: #fbbf24;
17
- }
18
- .site-header, .site-footer {
19
- display: flex;
20
- align-items: center;
21
- justify-content: space-between;
22
- padding: 1rem 1.25rem;
23
- background: rgba(12, 13, 19, 0.8);
24
- border-bottom: 1px solid rgba(255, 255, 255, 0.08);
25
- }
26
- .site-footer {
27
- border-top: 1px solid rgba(255, 255, 255, 0.08);
28
- border-bottom: none;
29
- }
30
- .brand {
31
- font-weight: 700;
32
- letter-spacing: 0.04em;
33
- }
34
- nav a {
35
- margin-left: 1rem;
36
- text-decoration: none;
37
- }
38
- main {
39
- padding: 2rem 1.5rem 3rem;
40
- max-width: 900px;
41
- margin: 0 auto;
42
- }
43
- .hero {
44
- padding: 2.5rem;
45
- border-radius: 24px;
46
- background: linear-gradient(135deg, rgba(249, 115, 22, 0.2), rgba(31, 81, 48, 0.2));
47
- border: 1px solid rgba(255, 255, 255, 0.08);
48
- box-shadow: 0 20px 60px rgba(0, 0, 0, 0.35);
49
- }
50
- .hero .eyebrow {
51
- text-transform: uppercase;
52
- letter-spacing: 0.24em;
53
- font-size: 0.8rem;
54
- opacity: 0.8;
55
- }
56
- .hero h1 {
57
- margin: 0.2rem 0 0.6rem;
58
- font-size: 2.4rem;
59
- }
60
- .hero p {
61
- margin: 0.4rem 0;
62
- }
63
- pre, code {
64
- font-family: "JetBrains Mono", Menlo, Consolas, monospace;
65
- }
66
- .alpine-card {
67
- margin-top: 1.5rem;
68
- padding: 1rem;
69
- background: rgba(255, 255, 255, 0.04);
70
- border: 1px solid rgba(255, 255, 255, 0.08);
71
- border-radius: 12px;
72
- }
73
- .alpine-card button {
74
- background: #f97316;
75
- color: #0b0c10;
76
- border: none;
77
- border-radius: 8px;
78
- padding: 0.6rem 1rem;
79
- cursor: pointer;
80
- }
81
- .alpine-card .tip {
82
- margin-top: 0.75rem;
83
- }
84
- @media (max-width: 640px) {
85
- .site-header, .site-footer {
86
- flex-direction: column;
87
- gap: 0.5rem;
88
- text-align: center;
89
- }
90
- nav a {
91
- margin-left: 0;
92
- margin-right: 1rem;
93
- }
94
- .hero {
95
- padding: 1.5rem;
96
- }
97
- .hero h1 {
98
- font-size: 1.9rem;
99
- }
100
- }
@@ -1,19 +0,0 @@
1
- [
2
- {
3
- "label": "Home",
4
- "url": "/",
5
- "target": "_self",
6
- "class": "",
7
- "rel": ""
8
- },
9
- {
10
- "label": "Docs",
11
- "url": "https://campsitejs.dev/docs/overview",
12
- "target": "_blank"
13
- },
14
- {
15
- "label": "Github",
16
- "url": "https://github.com/foxgrovemedia/campsitejs",
17
- "target": "_blank"
18
- }
19
- ]
@@ -1,36 +0,0 @@
1
- <template>
2
- <div class="card">
3
- <h2>Vue + Campsite</h2>
4
- <p>{{ message }}</p>
5
- <button @click="count++">You clicked {{ count }} times</button>
6
- </div>
7
- </template>
8
-
9
- <script setup>
10
- import { ref } from 'vue';
11
-
12
- const count = ref(0);
13
- const message = 'This Vue component is ready to hydrate in your Campsite build.';
14
- </script>
15
-
16
- <style scoped>
17
- .card {
18
- border: 1px solid var(--fg-ink-soft);
19
- border-radius: 12px;
20
- padding: 1rem;
21
- background: #0e1117;
22
- color: #f6f4ef;
23
- }
24
- button {
25
- margin-top: 0.75rem;
26
- background: linear-gradient(120deg, #f97316, #ea580c);
27
- color: #0b0c10;
28
- border: none;
29
- padding: 0.6rem 1rem;
30
- border-radius: 8px;
31
- cursor: pointer;
32
- }
33
- button:hover {
34
- filter: brightness(1.05);
35
- }
36
- </style>
@@ -1,4 +0,0 @@
1
- <div x-data="{ open: false }" class="alpine-card">
2
- <button @click="open = !open">Toggle campfire tip</button>
3
- <p x-show="open" class="tip">Pack light, carry warmth.</p>
4
- </div>
@@ -1,7 +0,0 @@
1
- {% extends "base.njk" %}
2
- {% block content %}
3
- <section>
4
- <h1>Welcome, camper!</h1>
5
- <p>Swap this template with your own content in <code>src/pages/index.njk</code>.</p>
6
- </section>
7
- {% endblock %}
@@ -1,53 +0,0 @@
1
- {%- assign meta_title = frontmatter.title | default: title | default: site.name -%}
2
- {%- assign meta_description = frontmatter.description | default: page.description | default: "A cozy CampsiteJS starter." -%}
3
- {%- assign meta_url = frontmatter.canonical | default: frontmatter.url -%}
4
- <!doctype html>
5
- <html lang="en" class="min-h-screen bg-radial bg-gradient-to-br from-campfire-900 from-10% to-black to-90%">
6
- <head>
7
- <meta charset="UTF-8">
8
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
9
- <title>{{ meta_title }}</title>
10
- <meta name="description" content="{{ meta_description }}">
11
- {%- if frontmatter.robots %}<meta name="robots" content="{{ frontmatter.robots }}">{%- endif %}
12
- {%- if meta_url %}<link rel="canonical" href="{{ meta_url }}">{%- endif %}
13
- <meta property="og:title" content="{{ meta_title }}">
14
- <meta property="og:description" content="{{ meta_description }}">
15
- {%- if meta_url %}<meta property="og:url" content="{{ meta_url }}">{%- endif %}
16
- <meta property="og:type" content="{{ frontmatter.og_type | default: " website" }}">
17
- <meta property="og:site_name" content="{{ site.name }}">
18
- <meta name="twitter:card" content="{{ frontmatter.twitter_card | default: " summary_large_image" }}">
19
- <meta name="twitter:title" content="{{ meta_title }}">
20
- <meta name="twitter:description" content="{{ meta_description }}">
21
- {%- if meta_url %}<meta name="twitter:url" content="{{ meta_url }}">{%- endif %}
22
- <link rel="stylesheet" href="/style.css">
23
- <link rel="preconnect" href="https://fonts.googleapis.com">
24
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
25
- <link href="https://fonts.googleapis.com/css2?family=Caprasimo&display=swap" rel="stylesheet">
26
- </head>
27
- <body class="space-y-12 font-serif">
28
- <header class="bg-stone-950 flex items-stretch justify-between py-2 px-6">
29
- <a href="/" class="inline-flex items-center text-amber-50 font-bold text-lg tracking-wide py-3">
30
- <svg class="h-6" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 550 139"><path d="M546.049 88.96q1.664 0 2.56 1.024 1.024 1.024 1.024 2.56 0 1.408-1.024 2.816-3.712 4.48-11.136 7.168-7.296 2.56-15.872 2.56-9.216 0-16.64-4.096-7.424-4.224-11.648-11.648-4.224-7.425-4.224-16.768 0-9.855 4.352-17.792 4.48-8.064 12.032-12.672 7.68-4.608 17.024-4.608 7.296 0 12.928 2.56 5.76 2.432 8.96 6.912 3.2 4.352 3.2 9.728 0 7.552-6.912 12.288-6.784 4.608-18.048 4.608-7.424 0-14.336-1.92-6.784-2.048-10.88-5.248-.64 3.584-.64 6.656 0 7.04 3.2 12.672 3.2 5.505 8.832 8.576t12.8 3.072q7.553 0 13.056-1.792 5.504-1.92 8.32-5.504 1.152-1.152 3.072-1.152m-23.552-43.776q-7.552 0-13.568 3.712-6.017 3.712-9.216 10.368 3.583 2.944 9.6 4.992 6.144 2.048 13.312 2.048 7.936 0 12.544-2.56 4.736-2.56 4.736-6.784 0-4.992-4.864-8.32-4.864-3.456-12.544-3.456M483.336 39.04q1.663 0 2.688 1.152 1.152 1.024 1.152 2.688 0 1.536-1.152 2.688-1.024 1.152-2.688 1.152h-13.824q0 34.688.128 39.168.128 4.864 2.304 6.912 2.304 2.048 5.888 2.944 1.663.383 2.688 1.664 1.024 1.152 1.024 2.816t-1.28 2.688q-1.152 1.024-2.816 1.024-3.968 0-7.552-1.92-3.584-2.047-5.76-5.76t-2.176-8.576q0-23.935-.128-40.96h-7.04q-1.536 0-2.688-1.152t-1.152-2.688q0-1.664 1.152-2.688 1.152-1.152 2.688-1.152h7.04V16.384q0-1.536 1.024-2.688 1.152-1.152 2.816-1.152 1.536 0 2.688 1.152t1.152 2.688V39.04zM435.029 18.048q-2.56 0-4.224-1.664-1.664-1.665-1.664-4.096 0-2.304 1.664-3.968 1.793-1.665 4.224-1.664 2.304 0 3.84 1.664 1.664 1.536 1.664 3.968t-1.664 4.096q-1.536 1.665-3.84 1.664m0 86.656q-1.536 0-2.688-1.152-1.152-1.024-1.152-2.56l.384-26.368.384-21.632q.128-2.431-1.024-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792-.768-.768-.768-1.92 0-1.665 1.28-2.56a4.58 4.58 0 0 1 2.944-1.024q4.48 0 7.296 4.096 2.944 3.968 2.944 10.752 0 6.912-.256 18.816-.128 11.904-.256 18.176l-.256 11.904q0 1.663-1.152 2.688a3.92 3.92 0 0 1-2.688 1.024M386.088 104.576q-7.168 0-14.848-3.84-7.552-3.967-11.264-9.856a3.8 3.8 0 0 1-.512-1.92q0-1.664 1.024-2.688 1.152-1.152 2.816-1.152 2.176 0 3.2 1.792 2.432 4.48 8.064 7.424 5.76 2.816 11.52 2.816 7.936 0 12.544-2.432 4.736-2.56 4.736-7.04 0-4.224-3.968-7.296t-13.824-6.656q-9.857-3.585-16.128-7.808-6.144-4.352-6.144-11.776 0-4.864 3.072-8.704 3.2-3.968 8.448-6.144 5.376-2.304 11.776-2.304 8.448 0 14.976 3.84 6.656 3.712 9.216 9.856.256.512.256 1.664 0 1.792-1.024 2.816t-2.688 1.024q-1.024 0-2.048-.512a5.8 5.8 0 0 1-1.536-1.664q-1.92-4.224-6.656-6.912t-10.752-2.688q-6.656 0-11.008 2.816-4.352 2.688-4.352 6.912t4.736 7.296q4.865 2.944 13.056 5.504 11.904 3.84 17.024 8.448 5.248 4.608 5.248 12.288 0 7.936-6.656 12.416t-18.304 4.48M321.778 36.224q9.089 0 16.512 4.48 7.424 4.352 11.648 12.032t4.224 17.152q0 9.855-4.224 17.92-4.224 7.936-11.648 12.544-7.424 4.48-16.64 4.48-7.424 0-13.696-3.712-6.144-3.84-10.24-10.368-.512 40.576-.64 44.416 0 1.536-1.152 2.688-1.024 1.152-2.816 1.152-1.536 0-2.688-1.152a3.92 3.92 0 0 1-1.024-2.688l1.024-82.176q0-2.431-1.28-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792a3.06 3.06 0 0 1-.768-2.048q0-1.665 1.28-2.56 1.28-.896 2.944-.896 3.968 0 6.784 3.328 2.944 3.2 3.584 8.96 4.096-6.144 10.24-9.728 6.272-3.584 13.568-3.584m-.128 60.928q7.04 0 12.672-3.584t8.832-9.728q3.328-6.272 3.328-13.952 0-7.425-3.328-13.312-3.2-5.887-8.832-9.216-5.632-3.456-12.672-3.456-6.784 0-12.16 3.456-5.376 3.328-8.448 9.216t-3.072 13.312q0 7.808 3.072 14.08 3.072 6.144 8.448 9.728 5.376 3.456 12.16 3.456M275.15 98.176q1.536.896 2.432 1.792.896.768.896 1.92 0 1.664-1.28 2.56t-3.072.896q-4.608 0-7.552-4.224t-2.816-11.392l.256-25.856q0-9.089-4.096-13.952-3.968-4.864-11.904-4.864-8.064 0-12.928 5.12t-5.632 13.056q0 6.784-.128 20.608-.128 13.696-.256 16.128a3.72 3.72 0 0 1-1.28 2.56q-1.152.896-2.688.896-1.663 0-2.688-1.024-1.024-1.024-1.024-2.432.128-3.967.256-17.664.128-13.696.128-19.968 0-7.808-4.224-12.544-4.096-4.864-10.88-4.864-7.807 0-13.056 4.864-5.248 4.865-6.272 12.288l-.768 37.888q0 1.663-1.152 2.688-1.152 1.024-2.816 1.024a3.92 3.92 0 0 1-2.688-1.024 3.92 3.92 0 0 1-1.024-2.688l.896-46.976q0-2.431-1.152-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792a3.06 3.06 0 0 1-.768-2.048q0-1.665 1.28-2.56 1.28-.896 2.944-.896 3.712 0 6.4 2.944 2.688 2.816 3.584 7.936 3.584-5.12 8.832-7.808 5.376-2.688 11.136-2.688 6.784 0 12.16 3.712t7.936 10.112q3.328-6.655 8.96-10.24t12.288-3.584q11.136 0 17.152 6.912 6.144 6.784 6.144 19.072l-.256 25.984q0 2.432 1.152 5.12t2.56 3.456M143.486 37.957c1.42 1.196 1.617 3.333.407 4.754l-7.171 8.535 30.009 35.677a6.75 6.75 0 0 1 1.589 4.345v6.652a5.623 5.623 0 0 1-5.625 5.625h-60.75a5.623 5.623 0 0 1-5.625-5.625v-6.652c0-1.589.563-3.121 1.59-4.345l30.008-35.677-7.171-8.535a3.38 3.38 0 0 1 .407-4.754 3.383 3.383 0 0 1 4.754.408l6.412 7.636 6.413-7.622c1.195-1.42 3.332-1.617 4.753-.407zM103.07 91.268v5.527h8.888l2.151-2.306 15.75-16.875a3.34 3.34 0 0 1 2.461-1.07c.928 0 1.828.395 2.461 1.07l15.75 16.875 2.151 2.306h8.888v-5.527l-29.25-34.79zm18.113 5.527h22.26L132.306 84.87l-11.138 11.925zM80.512 85.76q1.025-1.152 2.688-1.152 1.536 0 2.688 1.152 1.152 1.025 1.152 2.688 0 1.536-1.28 2.816-6.144 6.272-16 9.856-9.728 3.456-19.712 3.456-14.208 0-25.6-6.528-11.392-6.655-17.92-18.432T0 52.864t6.528-27.008q6.528-12.16 17.92-18.944Q35.84 0 50.048 0q22.144 0 34.56 14.08 1.28 1.408 1.28 2.944t-1.152 2.688-2.816 1.152-2.688-1.152q-5.376-6.272-12.672-8.96-7.296-2.816-16.512-2.816-11.904 0-21.632 5.76-9.6 5.76-15.104 16-5.376 10.24-5.376 23.168 0 12.8 5.376 22.784 5.505 9.984 15.104 15.488 9.6 5.505 21.632 5.504 10.112 0 18.176-2.688t12.288-8.192"/></svg>
31
- </a>
32
- {%- render "partials/navbar", navbar: navbar, collections: collections, page: page -%}
33
- </header>
34
- <main class="mx-auto max-w-5xl px-4 sm:px-6 lg:px-8">
35
- <div class="rounded-lg bg-white/5 shadow dark:bg-gray-800/50 dark:shadow-none dark:outline dark:outline-1 dark:-outline-offset-1 dark:outline-white/10 text-white">
36
- <article class="px-4 py-5 sm:p-6">
37
- {%- if content -%}
38
- {{ content }}
39
- {%- else -%}
40
- <section>
41
- <p>Campfire ready</p>
42
- <h1>Welcome to CampsiteJS</h1>
43
- <p>Edit <code>src/pages/index.liquid</code> to get started.</p>
44
- </section>
45
- {%- endif -%}
46
- </article>
47
- </div>
48
- </main>
49
- <footer class="text-xs text-amber-50/40 text-center">
50
- <p><span class="font-semibold text-amber-50/60">CampsiteJS</span> built with ❤️ by: <a href="https://foxgrovemedia.com" class="text-amber-500 hover:text-white">Fox Grove Media</a>.</p>
51
- </footer>
52
- </body>
53
- </html>
@@ -1,60 +0,0 @@
1
- <!doctype html>
2
- <html lang="en" class="min-h-screen bg-radial bg-gradient-to-br from-campfire-900 from-10% to-black to-90%">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>{{#page.title}}{{page.title}}{{/page.title}}{{^page.title}}{{#site.name}}{{site.name}}{{/site.name}}{{/page.title}}</title>
7
- <meta name="description" content="{{#page.description}}{{page.description}}{{/page.description}}{{^page.description}}A cozy CampsiteJS starter.{{/page.description}}">
8
- {{#frontmatter.robots}}
9
- <meta name="robots" content="{{frontmatter.robots}}">
10
- {{/frontmatter.robots}}
11
- {{#frontmatter.canonical}}
12
- <link rel="canonical" href="{{frontmatter.canonical}}">
13
- {{/frontmatter.canonical}}
14
- <meta property="og:title" content="{{#page.title}}{{page.title}}{{/page.title}}{{^page.title}}{{#site.name}}{{site.name}}{{/site.name}}{{/page.title}}">
15
- <meta property="og:description" content="{{#page.description}}{{page.description}}{{/page.description}}{{^page.description}}A cozy CampsiteJS starter.{{/page.description}}">
16
- {{#frontmatter.canonical}}
17
- <meta property="og:url" content="{{frontmatter.canonical}}">
18
- {{/frontmatter.canonical}}
19
- <meta property="og:type" content="{{#frontmatter.og_type}}{{frontmatter.og_type}}{{/frontmatter.og_type}}{{^frontmatter.og_type}}website{{/frontmatter.og_type}}">
20
- <meta property="og:site_name" content="{{site.name}}">
21
- <meta name="twitter:card" content="{{#frontmatter.twitter_card}}{{frontmatter.twitter_card}}{{/frontmatter.twitter_card}}{{^frontmatter.twitter_card}}summary_large_image{{/frontmatter.twitter_card}}">
22
- <meta name="twitter:title" content="{{#page.title}}{{page.title}}{{/page.title}}{{^page.title}}{{#site.name}}{{site.name}}{{/site.name}}{{/page.title}}">
23
- <meta name="twitter:description" content="{{#page.description}}{{page.description}}{{/page.description}}{{^page.description}}A cozy CampsiteJS starter.{{/page.description}}">
24
- {{#frontmatter.canonical}}
25
- <meta name="twitter:url" content="{{frontmatter.canonical}}">
26
- {{/frontmatter.canonical}}
27
- <link rel="stylesheet" href="/style.css">
28
- <link rel="preconnect" href="https://fonts.googleapis.com">
29
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
30
- <link href="https://fonts.googleapis.com/css2?family=Caprasimo&display=swap" rel="stylesheet">
31
- </head>
32
- <body class="space-y-12 font-serif">
33
- <header class="bg-stone-950 flex items-stretch justify-between py-2 px-6">
34
- <a href="/" class="inline-flex items-center text-amber-50 font-bold text-lg tracking-wide py-3">
35
- <svg class="h-6" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 550 139"><path d="M546.049 88.96q1.664 0 2.56 1.024 1.024 1.024 1.024 2.56 0 1.408-1.024 2.816-3.712 4.48-11.136 7.168-7.296 2.56-15.872 2.56-9.216 0-16.64-4.096-7.424-4.224-11.648-11.648-4.224-7.425-4.224-16.768 0-9.855 4.352-17.792 4.48-8.064 12.032-12.672 7.68-4.608 17.024-4.608 7.296 0 12.928 2.56 5.76 2.432 8.96 6.912 3.2 4.352 3.2 9.728 0 7.552-6.912 12.288-6.784 4.608-18.048 4.608-7.424 0-14.336-1.92-6.784-2.048-10.88-5.248-.64 3.584-.64 6.656 0 7.04 3.2 12.672 3.2 5.505 8.832 8.576t12.8 3.072q7.553 0 13.056-1.792 5.504-1.92 8.32-5.504 1.152-1.152 3.072-1.152m-23.552-43.776q-7.552 0-13.568 3.712-6.017 3.712-9.216 10.368 3.583 2.944 9.6 4.992 6.144 2.048 13.312 2.048 7.936 0 12.544-2.56 4.736-2.56 4.736-6.784 0-4.992-4.864-8.32-4.864-3.456-12.544-3.456M483.336 39.04q1.663 0 2.688 1.152 1.152 1.024 1.152 2.688 0 1.536-1.152 2.688-1.024 1.152-2.688 1.152h-13.824q0 34.688.128 39.168.128 4.864 2.304 6.912 2.304 2.048 5.888 2.944 1.663.383 2.688 1.664 1.024 1.152 1.024 2.816t-1.28 2.688q-1.152 1.024-2.816 1.024-3.968 0-7.552-1.92-3.584-2.047-5.76-5.76t-2.176-8.576q0-23.935-.128-40.96h-7.04q-1.536 0-2.688-1.152t-1.152-2.688q0-1.664 1.152-2.688 1.152-1.152 2.688-1.152h7.04V16.384q0-1.536 1.024-2.688 1.152-1.152 2.816-1.152 1.536 0 2.688 1.152t1.152 2.688V39.04zM435.029 18.048q-2.56 0-4.224-1.664-1.664-1.665-1.664-4.096 0-2.304 1.664-3.968 1.793-1.665 4.224-1.664 2.304 0 3.84 1.664 1.664 1.536 1.664 3.968t-1.664 4.096q-1.536 1.665-3.84 1.664m0 86.656q-1.536 0-2.688-1.152-1.152-1.024-1.152-2.56l.384-26.368.384-21.632q.128-2.431-1.024-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792-.768-.768-.768-1.92 0-1.665 1.28-2.56a4.58 4.58 0 0 1 2.944-1.024q4.48 0 7.296 4.096 2.944 3.968 2.944 10.752 0 6.912-.256 18.816-.128 11.904-.256 18.176l-.256 11.904q0 1.663-1.152 2.688a3.92 3.92 0 0 1-2.688 1.024M386.088 104.576q-7.168 0-14.848-3.84-7.552-3.967-11.264-9.856a3.8 3.8 0 0 1-.512-1.92q0-1.664 1.024-2.688 1.152-1.152 2.816-1.152 2.176 0 3.2 1.792 2.432 4.48 8.064 7.424 5.76 2.816 11.52 2.816 7.936 0 12.544-2.432 4.736-2.56 4.736-7.04 0-4.224-3.968-7.296t-13.824-6.656q-9.857-3.585-16.128-7.808-6.144-4.352-6.144-11.776 0-4.864 3.072-8.704 3.2-3.968 8.448-6.144 5.376-2.304 11.776-2.304 8.448 0 14.976 3.84 6.656 3.712 9.216 9.856.256.512.256 1.664 0 1.792-1.024 2.816t-2.688 1.024q-1.024 0-2.048-.512a5.8 5.8 0 0 1-1.536-1.664q-1.92-4.224-6.656-6.912t-10.752-2.688q-6.656 0-11.008 2.816-4.352 2.688-4.352 6.912t4.736 7.296q4.865 2.944 13.056 5.504 11.904 3.84 17.024 8.448 5.248 4.608 5.248 12.288 0 7.936-6.656 12.416t-18.304 4.48M321.778 36.224q9.089 0 16.512 4.48 7.424 4.352 11.648 12.032t4.224 17.152q0 9.855-4.224 17.92-4.224 7.936-11.648 12.544-7.424 4.48-16.64 4.48-7.424 0-13.696-3.712-6.144-3.84-10.24-10.368-.512 40.576-.64 44.416 0 1.536-1.152 2.688-1.024 1.152-2.816 1.152-1.536 0-2.688-1.152a3.92 3.92 0 0 1-1.024-2.688l1.024-82.176q0-2.431-1.28-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792a3.06 3.06 0 0 1-.768-2.048q0-1.665 1.28-2.56 1.28-.896 2.944-.896 3.968 0 6.784 3.328 2.944 3.2 3.584 8.96 4.096-6.144 10.24-9.728 6.272-3.584 13.568-3.584m-.128 60.928q7.04 0 12.672-3.584t8.832-9.728q3.328-6.272 3.328-13.952 0-7.425-3.328-13.312-3.2-5.887-8.832-9.216-5.632-3.456-12.672-3.456-6.784 0-12.16 3.456-5.376 3.328-8.448 9.216t-3.072 13.312q0 7.808 3.072 14.08 3.072 6.144 8.448 9.728 5.376 3.456 12.16 3.456M275.15 98.176q1.536.896 2.432 1.792.896.768.896 1.92 0 1.664-1.28 2.56t-3.072.896q-4.608 0-7.552-4.224t-2.816-11.392l.256-25.856q0-9.089-4.096-13.952-3.968-4.864-11.904-4.864-8.064 0-12.928 5.12t-5.632 13.056q0 6.784-.128 20.608-.128 13.696-.256 16.128a3.72 3.72 0 0 1-1.28 2.56q-1.152.896-2.688.896-1.663 0-2.688-1.024-1.024-1.024-1.024-2.432.128-3.967.256-17.664.128-13.696.128-19.968 0-7.808-4.224-12.544-4.096-4.864-10.88-4.864-7.807 0-13.056 4.864-5.248 4.865-6.272 12.288l-.768 37.888q0 1.663-1.152 2.688-1.152 1.024-2.816 1.024a3.92 3.92 0 0 1-2.688-1.024 3.92 3.92 0 0 1-1.024-2.688l.896-46.976q0-2.431-1.152-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792a3.06 3.06 0 0 1-.768-2.048q0-1.665 1.28-2.56 1.28-.896 2.944-.896 3.712 0 6.4 2.944 2.688 2.816 3.584 7.936 3.584-5.12 8.832-7.808 5.376-2.688 11.136-2.688 6.784 0 12.16 3.712t7.936 10.112q3.328-6.655 8.96-10.24t12.288-3.584q11.136 0 17.152 6.912 6.144 6.784 6.144 19.072l-.256 25.984q0 2.432 1.152 5.12t2.56 3.456M143.486 37.957c1.42 1.196 1.617 3.333.407 4.754l-7.171 8.535 30.009 35.677a6.75 6.75 0 0 1 1.589 4.345v6.652a5.623 5.623 0 0 1-5.625 5.625h-60.75a5.623 5.623 0 0 1-5.625-5.625v-6.652c0-1.589.563-3.121 1.59-4.345l30.008-35.677-7.171-8.535a3.38 3.38 0 0 1 .407-4.754 3.383 3.383 0 0 1 4.754.408l6.412 7.636 6.413-7.622c1.195-1.42 3.332-1.617 4.753-.407zM103.07 91.268v5.527h8.888l2.151-2.306 15.75-16.875a3.34 3.34 0 0 1 2.461-1.07c.928 0 1.828.395 2.461 1.07l15.75 16.875 2.151 2.306h8.888v-5.527l-29.25-34.79zm18.113 5.527h22.26L132.306 84.87l-11.138 11.925zM80.512 85.76q1.025-1.152 2.688-1.152 1.536 0 2.688 1.152 1.152 1.025 1.152 2.688 0 1.536-1.28 2.816-6.144 6.272-16 9.856-9.728 3.456-19.712 3.456-14.208 0-25.6-6.528-11.392-6.655-17.92-18.432T0 52.864t6.528-27.008q6.528-12.16 17.92-18.944Q35.84 0 50.048 0q22.144 0 34.56 14.08 1.28 1.408 1.28 2.944t-1.152 2.688-2.816 1.152-2.688-1.152q-5.376-6.272-12.672-8.96-7.296-2.816-16.512-2.816-11.904 0-21.632 5.76-9.6 5.76-15.104 16-5.376 10.24-5.376 23.168 0 12.8 5.376 22.784 5.505 9.984 15.104 15.488 9.6 5.505 21.632 5.504 10.112 0 18.176-2.688t12.288-8.192"/></svg>
36
- </a>
37
- {{>navbar}}
38
- </header>
39
- <main class="mx-auto max-w-5xl px-4 sm:px-6 lg:px-8">
40
- <div
41
- class="rounded-lg bg-white/5 shadow dark:bg-gray-800/50 dark:shadow-none dark:outline dark:outline-1 dark:-outline-offset-1 dark:outline-white/10 text-white">
42
- <article class="px-4 py-5 sm:p-6">
43
- {{#content}}
44
- {{{content}}}
45
- {{/content}}
46
- {{^content}}
47
- <section>
48
- <p>Campfire ready</p>
49
- <h1>Welcome to CampsiteJS</h1>
50
- <p>Edit <code>src/pages/index.md</code> to get started.</p>
51
- </section>
52
- {{/content}}
53
- </article>
54
- </div>
55
- </main>
56
- <footer class="text-xs text-amber-50/40 text-center">
57
- <p><span class="font-semibold text-amber-50/60">CampsiteJS</span> built with ❤️ by: <a href="https://foxgrovemedia.com" class="text-amber-500 hover:text-white">Fox Grove Media</a>.</p>
58
- </footer>
59
- </body>
60
- </html>
@@ -1,47 +0,0 @@
1
- {% set meta_title = frontmatter.title or title or site.name %}{% set meta_description = frontmatter.description or page.description or "A cozy CampsiteJS starter." %}{% set meta_url = frontmatter.canonical or frontmatter.url %}<!doctype html>
2
- <html lang="en" class="min-h-screen bg-radial bg-gradient-to-br from-campfire-900 from-10% to-black to-90%">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>{{ meta_title }}</title>
7
- <meta name="description" content="{{ meta_description }}">{% if frontmatter.robots %}
8
- <meta name="robots" content="{{ frontmatter.robots }}">{% endif %}{% if meta_url %}
9
- <link rel="canonical" href="{{ meta_url }}">{% endif %}
10
- <meta property="og:title" content="{{ meta_title }}">
11
- <meta property="og:description" content="{{ meta_description }}">{% if meta_url %}
12
- <meta property="og:url" content="{{ meta_url }}">{% endif %}
13
- <meta property="og:type" content="{{ frontmatter.og_type or " website" }}">
14
- <meta property="og:site_name" content="{{ site.name }}">
15
- <meta name="twitter:card" content="{{ frontmatter.twitter_card or " summary_large_image" }}">
16
- <meta name="twitter:title" content="{{ meta_title }}">
17
- <meta name="twitter:description" content="{{ meta_description }}">{% if meta_url %}
18
- <meta name="twitter:url" content="{{ meta_url }}">{% endif %}
19
- <link rel="stylesheet" href="/style.css">
20
- <link rel="preconnect" href="https://fonts.googleapis.com">
21
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
22
- <link href="https://fonts.googleapis.com/css2?family=Caprasimo&display=swap" rel="stylesheet">
23
- </head>
24
- <body class="space-y-12 font-serif">
25
- <header class="bg-stone-950 flex items-stretch justify-between py-2 px-6">
26
- <a href="/" class="inline-flex items-center text-amber-50 font-bold text-lg tracking-wide py-3">
27
- <svg class="h-6" fill="currentColor" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 550 139"><path d="M546.049 88.96q1.664 0 2.56 1.024 1.024 1.024 1.024 2.56 0 1.408-1.024 2.816-3.712 4.48-11.136 7.168-7.296 2.56-15.872 2.56-9.216 0-16.64-4.096-7.424-4.224-11.648-11.648-4.224-7.425-4.224-16.768 0-9.855 4.352-17.792 4.48-8.064 12.032-12.672 7.68-4.608 17.024-4.608 7.296 0 12.928 2.56 5.76 2.432 8.96 6.912 3.2 4.352 3.2 9.728 0 7.552-6.912 12.288-6.784 4.608-18.048 4.608-7.424 0-14.336-1.92-6.784-2.048-10.88-5.248-.64 3.584-.64 6.656 0 7.04 3.2 12.672 3.2 5.505 8.832 8.576t12.8 3.072q7.553 0 13.056-1.792 5.504-1.92 8.32-5.504 1.152-1.152 3.072-1.152m-23.552-43.776q-7.552 0-13.568 3.712-6.017 3.712-9.216 10.368 3.583 2.944 9.6 4.992 6.144 2.048 13.312 2.048 7.936 0 12.544-2.56 4.736-2.56 4.736-6.784 0-4.992-4.864-8.32-4.864-3.456-12.544-3.456M483.336 39.04q1.663 0 2.688 1.152 1.152 1.024 1.152 2.688 0 1.536-1.152 2.688-1.024 1.152-2.688 1.152h-13.824q0 34.688.128 39.168.128 4.864 2.304 6.912 2.304 2.048 5.888 2.944 1.663.383 2.688 1.664 1.024 1.152 1.024 2.816t-1.28 2.688q-1.152 1.024-2.816 1.024-3.968 0-7.552-1.92-3.584-2.047-5.76-5.76t-2.176-8.576q0-23.935-.128-40.96h-7.04q-1.536 0-2.688-1.152t-1.152-2.688q0-1.664 1.152-2.688 1.152-1.152 2.688-1.152h7.04V16.384q0-1.536 1.024-2.688 1.152-1.152 2.816-1.152 1.536 0 2.688 1.152t1.152 2.688V39.04zM435.029 18.048q-2.56 0-4.224-1.664-1.664-1.665-1.664-4.096 0-2.304 1.664-3.968 1.793-1.665 4.224-1.664 2.304 0 3.84 1.664 1.664 1.536 1.664 3.968t-1.664 4.096q-1.536 1.665-3.84 1.664m0 86.656q-1.536 0-2.688-1.152-1.152-1.024-1.152-2.56l.384-26.368.384-21.632q.128-2.431-1.024-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792-.768-.768-.768-1.92 0-1.665 1.28-2.56a4.58 4.58 0 0 1 2.944-1.024q4.48 0 7.296 4.096 2.944 3.968 2.944 10.752 0 6.912-.256 18.816-.128 11.904-.256 18.176l-.256 11.904q0 1.663-1.152 2.688a3.92 3.92 0 0 1-2.688 1.024M386.088 104.576q-7.168 0-14.848-3.84-7.552-3.967-11.264-9.856a3.8 3.8 0 0 1-.512-1.92q0-1.664 1.024-2.688 1.152-1.152 2.816-1.152 2.176 0 3.2 1.792 2.432 4.48 8.064 7.424 5.76 2.816 11.52 2.816 7.936 0 12.544-2.432 4.736-2.56 4.736-7.04 0-4.224-3.968-7.296t-13.824-6.656q-9.857-3.585-16.128-7.808-6.144-4.352-6.144-11.776 0-4.864 3.072-8.704 3.2-3.968 8.448-6.144 5.376-2.304 11.776-2.304 8.448 0 14.976 3.84 6.656 3.712 9.216 9.856.256.512.256 1.664 0 1.792-1.024 2.816t-2.688 1.024q-1.024 0-2.048-.512a5.8 5.8 0 0 1-1.536-1.664q-1.92-4.224-6.656-6.912t-10.752-2.688q-6.656 0-11.008 2.816-4.352 2.688-4.352 6.912t4.736 7.296q4.865 2.944 13.056 5.504 11.904 3.84 17.024 8.448 5.248 4.608 5.248 12.288 0 7.936-6.656 12.416t-18.304 4.48M321.778 36.224q9.089 0 16.512 4.48 7.424 4.352 11.648 12.032t4.224 17.152q0 9.855-4.224 17.92-4.224 7.936-11.648 12.544-7.424 4.48-16.64 4.48-7.424 0-13.696-3.712-6.144-3.84-10.24-10.368-.512 40.576-.64 44.416 0 1.536-1.152 2.688-1.024 1.152-2.816 1.152-1.536 0-2.688-1.152a3.92 3.92 0 0 1-1.024-2.688l1.024-82.176q0-2.431-1.28-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792a3.06 3.06 0 0 1-.768-2.048q0-1.665 1.28-2.56 1.28-.896 2.944-.896 3.968 0 6.784 3.328 2.944 3.2 3.584 8.96 4.096-6.144 10.24-9.728 6.272-3.584 13.568-3.584m-.128 60.928q7.04 0 12.672-3.584t8.832-9.728q3.328-6.272 3.328-13.952 0-7.425-3.328-13.312-3.2-5.887-8.832-9.216-5.632-3.456-12.672-3.456-6.784 0-12.16 3.456-5.376 3.328-8.448 9.216t-3.072 13.312q0 7.808 3.072 14.08 3.072 6.144 8.448 9.728 5.376 3.456 12.16 3.456M275.15 98.176q1.536.896 2.432 1.792.896.768.896 1.92 0 1.664-1.28 2.56t-3.072.896q-4.608 0-7.552-4.224t-2.816-11.392l.256-25.856q0-9.089-4.096-13.952-3.968-4.864-11.904-4.864-8.064 0-12.928 5.12t-5.632 13.056q0 6.784-.128 20.608-.128 13.696-.256 16.128a3.72 3.72 0 0 1-1.28 2.56q-1.152.896-2.688.896-1.663 0-2.688-1.024-1.024-1.024-1.024-2.432.128-3.967.256-17.664.128-13.696.128-19.968 0-7.808-4.224-12.544-4.096-4.864-10.88-4.864-7.807 0-13.056 4.864-5.248 4.865-6.272 12.288l-.768 37.888q0 1.663-1.152 2.688-1.152 1.024-2.816 1.024a3.92 3.92 0 0 1-2.688-1.024 3.92 3.92 0 0 1-1.024-2.688l.896-46.976q0-2.431-1.152-4.992-1.152-2.688-2.56-3.456-1.536-1.024-2.432-1.792a3.06 3.06 0 0 1-.768-2.048q0-1.665 1.28-2.56 1.28-.896 2.944-.896 3.712 0 6.4 2.944 2.688 2.816 3.584 7.936 3.584-5.12 8.832-7.808 5.376-2.688 11.136-2.688 6.784 0 12.16 3.712t7.936 10.112q3.328-6.655 8.96-10.24t12.288-3.584q11.136 0 17.152 6.912 6.144 6.784 6.144 19.072l-.256 25.984q0 2.432 1.152 5.12t2.56 3.456M143.486 37.957c1.42 1.196 1.617 3.333.407 4.754l-7.171 8.535 30.009 35.677a6.75 6.75 0 0 1 1.589 4.345v6.652a5.623 5.623 0 0 1-5.625 5.625h-60.75a5.623 5.623 0 0 1-5.625-5.625v-6.652c0-1.589.563-3.121 1.59-4.345l30.008-35.677-7.171-8.535a3.38 3.38 0 0 1 .407-4.754 3.383 3.383 0 0 1 4.754.408l6.412 7.636 6.413-7.622c1.195-1.42 3.332-1.617 4.753-.407zM103.07 91.268v5.527h8.888l2.151-2.306 15.75-16.875a3.34 3.34 0 0 1 2.461-1.07c.928 0 1.828.395 2.461 1.07l15.75 16.875 2.151 2.306h8.888v-5.527l-29.25-34.79zm18.113 5.527h22.26L132.306 84.87l-11.138 11.925zM80.512 85.76q1.025-1.152 2.688-1.152 1.536 0 2.688 1.152 1.152 1.025 1.152 2.688 0 1.536-1.28 2.816-6.144 6.272-16 9.856-9.728 3.456-19.712 3.456-14.208 0-25.6-6.528-11.392-6.655-17.92-18.432T0 52.864t6.528-27.008q6.528-12.16 17.92-18.944Q35.84 0 50.048 0q22.144 0 34.56 14.08 1.28 1.408 1.28 2.944t-1.152 2.688-2.816 1.152-2.688-1.152q-5.376-6.272-12.672-8.96-7.296-2.816-16.512-2.816-11.904 0-21.632 5.76-9.6 5.76-15.104 16-5.376 10.24-5.376 23.168 0 12.8 5.376 22.784 5.505 9.984 15.104 15.488 9.6 5.505 21.632 5.504 10.112 0 18.176-2.688t12.288-8.192"/></svg>
28
- </a>
29
- {% include "partials/navbar.njk" %}
30
- </header>
31
- <main class="mx-auto max-w-5xl px-4 sm:px-6 lg:px-8">
32
- <div
33
- class="rounded-lg bg-white/5 shadow dark:bg-gray-800/50 dark:shadow-none dark:outline dark:outline-1 dark:-outline-offset-1 dark:outline-white/10 text-white">
34
- <article class="px-4 py-5 sm:p-6">{% block content %}{% if content %}
35
- {{ content | safe }}{% else %}
36
- <section>
37
- <p>Campfire ready</p>
38
- <h1>Welcome to CampsiteJS</h1>
39
- <p>Edit <code>src/pages/index.md</code> to get started.</p>
40
- </section>{% endif %}{% endblock %}</article>
41
- </div>
42
- </main>
43
- <footer class="text-xs text-amber-50/40 text-center">
44
- <p><span class="font-semibold text-amber-50/60">CampsiteJS</span> built with ❤️ by: <a href="https://foxgrovemedia.com" class="text-amber-500 hover:text-white">Fox Grove Media</a>.</p>
45
- </footer>
46
- </body>
47
- </html>
@@ -1,13 +0,0 @@
1
- ---
2
- title: Error 404 - Page Not Found
3
- layout: base.liquid
4
- description: The page you are looking for does not exist.
5
- ---
6
-
7
- <div class="h-screen max-h-[calc(100vh-140px)] min-h-64 flex flex-col items-center justify-center px-4 text-center">
8
- <h1 class="text-6xl font-display font-bold text-amber-500 mb-4">404</h1>
9
- <p class="text-xl mb-8">Oops! The page you're looking for can't be found.</p>
10
- <a href="/" class="inline-block rounded bg-amber-500 px-6 py-3 font-semibold text-white hover:bg-amber-600 transition">
11
- Go Back Home
12
- </a>
13
- </div>
@@ -1,9 +0,0 @@
1
- ---
2
- title: 404 - Page Not Found
3
- layout: base.mustache
4
- description: This page could not be found.
5
- ---
6
-
7
- <h1>404 - Page Not Found</h1>
8
- <p>The page you're looking for doesn't exist.</p>
9
- <p><a href="/" class="text-amber-500 hover:text-white">Head back to camp →</a></p>
@@ -1,13 +0,0 @@
1
- ---
2
- title: Error 404 - Page Not Found
3
- layout: base.njk
4
- description: The page you are looking for does not exist.
5
- ---
6
-
7
- <div class="h-screen max-h-[calc(100vh-140px)] min-h-64 flex flex-col items-center justify-center px-4 text-center">
8
- <h1 class="text-6xl font-display font-bold text-amber-500 mb-4">404</h1>
9
- <p class="text-xl mb-8">Oops! The page you're looking for can't be found.</p>
10
- <a href="/" class="inline-block rounded bg-amber-500 px-6 py-3 font-semibold text-white hover:bg-amber-600 transition">
11
- Go Back Home
12
- </a>
13
- </div>
@@ -1,16 +0,0 @@
1
- ---
2
- title: Welcome to CampsiteJS
3
- layout: base.liquid
4
- description: Cozy, fast static sites with CampsiteJS.
5
- ---
6
-
7
- <h1>Welcome, camper!</h1>
8
-
9
- <p>CampsiteJS sets up a warm starter for Markdown, Nunjucks, Liquid, Vue, and Alpine.</p>
10
- <ul>
11
- <li>Edit <code>src/pages/index.liquid</code> to make it yours.</li>
12
- <li>Tweak the layout in <code>src/layouts/base.liquid</code>.</li>
13
- <li>Add data under <code>src/collections/</code>, components in <code>src/components/</code>, and partials in <code>src/partials/</code>.</li>
14
- </ul>
15
-
16
- <p>Happy camping! 🌲🏕️🔥</p>
@@ -1,16 +0,0 @@
1
- ---
2
- title: Welcome to CampsiteJS
3
- layout: base.mustache
4
- description: Cozy, fast static sites with CampsiteJS.
5
- ---
6
-
7
- <h1>Welcome, camper!</h1>
8
-
9
- <p>CampsiteJS sets up a warm starter for Markdown, Nunjucks, Liquid, Mustache, Vue, and Alpine.</p>
10
- <ul>
11
- <li>Edit <code>src/pages/index.mustache</code> to make it yours.</li>
12
- <li>Tweak the layout in <code>src/layouts/base.mustache</code>.</li>
13
- <li>Add data under <code>src/collections/</code>, components in <code>src/components/</code>, and partials in <code>src/partials/</code>.</li>
14
- </ul>
15
-
16
- <p>Happy camping! 🌲🏕️🔥</p>
@@ -1,16 +0,0 @@
1
- ---
2
- title: Welcome to CampsiteJS
3
- layout: base.njk
4
- description: Cozy, fast static sites with CampsiteJS.
5
- ---
6
-
7
- <h1>Welcome, camper!</h1>
8
-
9
- <p>CampsiteJS sets up a warm starter for Markdown, Nunjucks, Liquid, Vue, and Alpine.</p>
10
- <ul>
11
- <li>Edit <code>src/pages/index.njk</code> to make it yours.</li>
12
- <li>Tweak the layout in <code>src/layouts/base.njk</code>.</li>
13
- <li>Add data under <code>src/collections/</code>, components in <code>src/components/</code>, and partials in <code>src/partials/</code>.</li>
14
- </ul>
15
-
16
- <p>Happy camping! 🌲🏕️🔥</p>
@@ -1,10 +0,0 @@
1
- <nav class="flex items-center gap-2">
2
- {%- assign nav_items = navbar | default: collections.navbar | default: empty -%}
3
- {%- for item in nav_items -%}
4
- <a href="{{ item.url | default: '#' }}"{%- if item.target %} target="{{ item.target }}"{%- endif %}{%- if item.rel %} rel="{{ item.rel }}"{%- endif %}
5
- class="px-2 {% if item.url == page.path -%} active {%- else -%} not-active {%- endif %} {{ item.class }}">
6
- {%- if item.label %}{{ item.label }}{%- endif -%}
7
- {%- if item.svg %}{{ item.svg }}{%- endif -%}
8
- </a>
9
- {%- endfor -%}
10
- </nav>
@@ -1,8 +0,0 @@
1
- <nav class="flex items-center gap-2">
2
- {{#navbar}}
3
- <a href="{{url}}" {{#target}}target="{{target}}"{{/target}} {{#rel}}rel="{{rel}}"{{/rel}} class="px-2 {{#active}}active{{/active}}{{^active}}not-active{{/active}} {{class}}">
4
- {{#label}}{{label}}{{/label}}
5
- {{#svg}}{{{svg}}}{{/svg}}
6
- </a>
7
- {{/navbar}}
8
- </nav>
@@ -1,11 +0,0 @@
1
- <nav class="flex items-center gap-2">
2
- {% set nav_items = navbar or collections.navbar or [] %}
3
- {% for item in nav_items %}
4
- <a href="{{ item.url or '#' }}" {% if item.target %}target="{{ item.target }}" {% endif %} {% if item.rel
5
- %}rel="{{ item.rel }}" {% endif %}
6
- class="px-2 {% if item.url == page.path %} active {% else %} not-active {% endif %} {{ item.class }}">
7
- {% if item.label %}{{ item.label }}{% endif %}
8
- {% if item.svg %}{{ item.svg | safe }}{% endif %}
9
- </a>
10
- {% endfor %}
11
- </nav>