Browse Source
			
			
			
			
				
		Squashed commit of the following: commitmaster7e2125d97cAuthor: Alexander Avery <alex.avery@beetbox.io> Date: Fri May 30 13:48:55 2025 -0400 footer and header li are the same; footer ul has 0 padding commit439f60d79fAuthor: Alexander Avery <alex.avery@beetbox.io> Date: Fri May 30 13:44:48 2025 -0400 add 404 page commit6b326600c6Author: Alexander Avery <alex.avery@beetbox.io> Date: Fri May 30 13:41:05 2025 -0400 img instead of image for variable shadowing commit885195eb80Author: Alexander Avery <alex.avery@beetbox.io> Date: Fri May 30 13:40:47 2025 -0400 article has optional date commita64ea83de0Author: Alexander Avery <alex.avery@beetbox.io> Date: Fri May 30 13:40:26 2025 -0400 add # prefix to tags commitbb07d1a9cdAuthor: Alexander Avery <alex.avery@beetbox.io> Date: Fri May 30 13:37:38 2025 -0400 flex-start article groups and increase size commit715a99dbafAuthor: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 17:33:14 2025 -0400 using image.html partial in authors/list.html; resize image in article-alt.html commit04db016788Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 15:18:04 2025 -0400 fit images in main to 100% width commit27dc432d65Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 15:12:14 2025 -0400 fix list to include images; introduce hideDate parameter commit165bcfcef7Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 14:48:56 2025 -0400 using article-group class and adding shadow class commit0f8172ef84Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 14:48:38 2025 -0400 reorganize css commit44661d9bffAuthor: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 14:29:57 2025 -0400 fix typo in image.html context commit7b710f1fd2Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 14:29:43 2025 -0400 add header info to authors/list.html commit9676f08755Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 14:29:23 2025 -0400 add index class to article.html commit178fa4dda0Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 14:28:16 2025 -0400 article-alternate for authors commit32b1417bd7Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 13:45:44 2025 -0400 begin author pages commitdec98241deAuthor: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 13:45:17 2025 -0400 refactor articles commitfeb576b1a6Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 13:22:55 2025 -0400 visual articles on home page commitc8d14f6d52Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 12:06:45 2025 -0400 formatting main.css commit783c338d23Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 11:59:00 2025 -0400 more css styling commitfbd8eb6b34Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 11:58:43 2025 -0400 site logo is a link commit0d3ee84cf9Author: Alexander Avery <alex.avery@beetbox.io> Date: Thu May 29 11:58:16 2025 -0400 add rss feed to head.html commitb0945f9774Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 22:52:25 2025 -0400 add many styles commit1d0e3b74c4Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 22:52:18 2025 -0400 add div to header layout commita45a3a6b92Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 15:47:28 2025 -0400 configurable footer links with menu.html commit96536988e0Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 15:45:27 2025 -0400 include site logo if available commitf963a16109Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 15:44:26 2025 -0400 add explicit favicon commitf28a9ba7e9Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 15:11:39 2025 -0400 fix image.html shortcode to use image.html partial commitbd91ccffe9Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 15:08:28 2025 -0400 correctly use slice for classes argument commit7ebf7c33afAuthor: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 15:08:13 2025 -0400 better whitespace in image.html commit14827e7d97Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 14:52:41 2025 -0400 remove redundant <hr> from footer commit8fa9a9b673Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 14:52:28 2025 -0400 added image partial commit8978136c39Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 14:24:20 2025 -0400 include author and Posted prefix for single.html commitfca23d88f3Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 14:17:40 2025 -0400 adjust single.html date and list.html section commit49ce264c7eAuthor: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 14:10:40 2025 -0400 overwrite layout for home.html commit83b7ba1bfeAuthor: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 14:10:20 2025 -0400 url instead of pageRef for remote link commit4db3d6fec7Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 14:10:02 2025 -0400 hugo mod init commitbd1ca1f959Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 14:09:53 2025 -0400 temporary image shortcode commitb047841821Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 13:49:42 2025 -0400 update footer.html commita82d81531dAuthor: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 13:45:32 2025 -0400 example site configuration commite742e18a22Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 13:43:25 2025 -0400 remove taxonomy terms commiteac8874177Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 13:42:45 2025 -0400 update LICENSE; update theme.toml settings commit5aad5b82c1Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 13:38:23 2025 -0400 remove js commitebd14a6a64Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 13:37:09 2025 -0400 remove content directory commit269941d029Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 13:36:49 2025 -0400 hugo new theme commit323cb72d81Author: Alexander Avery <alex.avery@beetbox.io> Date: Wed May 28 13:34:45 2025 -0400 remove old files
				 33 changed files with 574 additions and 453 deletions
			
			
		@ -0,0 +1,5 @@ | 
				
			|||||
 | 
					+++ | 
				
			||||
 | 
					title = '{{ replace .File.ContentBaseName "-" " " | title }}' | 
				
			||||
 | 
					date = {{ .Date }} | 
				
			||||
 | 
					draft = true | 
				
			||||
 | 
					+++ | 
				
			||||
@ -0,0 +1,203 @@ | 
				
			|||||
 | 
					:root { | 
				
			||||
 | 
					  --beetbox-red: #9e0008; | 
				
			||||
 | 
					  --beetbox-pink: #d93370; | 
				
			||||
 | 
					  --beetbox-purple: #ac65cb; | 
				
			||||
 | 
					  --beetbox-green: #003f56; | 
				
			||||
 | 
					  --beetbox-blue: #5fcfd0; | 
				
			||||
 | 
					  --light: #F8F8FF; | 
				
			||||
 | 
					  --background: #1f2835; | 
				
			||||
 | 
					  --text: var(--light); | 
				
			||||
 | 
					  --links: var(--beetbox-blue); | 
				
			||||
 | 
					  --link-hover: var(--beetbox-pink); | 
				
			||||
 | 
					  --header: #F8F8FFCC; | 
				
			||||
 | 
					  --header-link: #5C2673; /* darker beetbox-purple */ | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					body { | 
				
			||||
 | 
					  background-color: var(--background); | 
				
			||||
 | 
					  color: var(--text); | 
				
			||||
 | 
					  font-family: sans-serif; | 
				
			||||
 | 
					  line-height: 1.5; | 
				
			||||
 | 
					  padding: 0; | 
				
			||||
 | 
					  margin: 0; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					a { | 
				
			||||
 | 
					  color: var(--links); | 
				
			||||
 | 
					  text-decoration: none; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					a:visited, a:hover { | 
				
			||||
 | 
					  color: var(--link-hover); | 
				
			||||
 | 
					  text-decoration: underline; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					p { | 
				
			||||
 | 
					  margin-bottom: 1.5rem; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					header div, main, footer { | 
				
			||||
 | 
					  max-width: 1200px; | 
				
			||||
 | 
					  margin: 0 auto; | 
				
			||||
 | 
					  padding: 1rem; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/* Header */ | 
				
			||||
 | 
					header { | 
				
			||||
 | 
					  background-color: var(--header); | 
				
			||||
 | 
					  box-shadow: 0 5px 10px black; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					header div { | 
				
			||||
 | 
					  display: flex; | 
				
			||||
 | 
					  align-items: baseline; | 
				
			||||
 | 
					  justify-content: space-between; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					header ul, footer ul { | 
				
			||||
 | 
					  margin: 0; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					header a { | 
				
			||||
 | 
					  color: var(--header-link); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					header li, footer li { | 
				
			||||
 | 
					  display: inline; | 
				
			||||
 | 
					  font-weight: 600; | 
				
			||||
 | 
					  margin-right: 8px; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/* Responsive */ | 
				
			||||
 | 
					@media (max-width: 700px) { | 
				
			||||
 | 
					  aside.index-articles { | 
				
			||||
 | 
					    display: none; | 
				
			||||
 | 
					  } | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					main img { | 
				
			||||
 | 
					  max-width: 100%; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/* Article Lists */ | 
				
			||||
 | 
					.article-group { | 
				
			||||
 | 
					  display: flex; | 
				
			||||
 | 
					  flex-direction: row; | 
				
			||||
 | 
					  flex-wrap: wrap; | 
				
			||||
 | 
					  gap: 20px; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.index-articles { | 
				
			||||
 | 
					  justify-content: flex-end; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.author-articles { | 
				
			||||
 | 
					  justify-content: flex-start; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.index-articles aside { | 
				
			||||
 | 
					  flex-shrink: 4; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					section.index { | 
				
			||||
 | 
					  display: flex; | 
				
			||||
 | 
					  flex-direction: row; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					section.index aside { | 
				
			||||
 | 
					  flex-shrink: 4; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/* Article Cards */ | 
				
			||||
 | 
					article { | 
				
			||||
 | 
					  background-color: #111; | 
				
			||||
 | 
					  border-radius: 10px; | 
				
			||||
 | 
					  padding: 1rem; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					article.index { | 
				
			||||
 | 
					  width: 300px; | 
				
			||||
 | 
					  height: 485px; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					article.index img { | 
				
			||||
 | 
					  height: 50%; | 
				
			||||
 | 
					  width: 100%; | 
				
			||||
 | 
					  border-radius: 10px; | 
				
			||||
 | 
					  object-fit: cover; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					article.index h3 { | 
				
			||||
 | 
					  white-space: nowrap; | 
				
			||||
 | 
					  overflow: hidden; | 
				
			||||
 | 
					  text-overflow: ellipsis; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					article.alt { | 
				
			||||
 | 
					  display: flex; | 
				
			||||
 | 
					  flex-wrap: wrap; | 
				
			||||
 | 
					  gap: 8px; | 
				
			||||
 | 
					  justify-content: space-evenly; | 
				
			||||
 | 
					  align-items: center; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					article.alt img { | 
				
			||||
 | 
					  border-radius: 50%; | 
				
			||||
 | 
					  height: 256px; | 
				
			||||
 | 
					  width: 256px; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/* Images */ | 
				
			||||
 | 
					img.featured, img.author { | 
				
			||||
 | 
					  display: block; | 
				
			||||
 | 
					  border-radius: 8px; | 
				
			||||
 | 
					  margin: 12px 0; | 
				
			||||
 | 
					  object-fit: cover; | 
				
			||||
 | 
					  max-height: 500px; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/* Code Blocks */ | 
				
			||||
 | 
					code { | 
				
			||||
 | 
					  white-space: nowrap; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					pre { | 
				
			||||
 | 
					  border-radius: .4rem; | 
				
			||||
 | 
					  max-width: 100%; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					pre code { | 
				
			||||
 | 
					  display: block; | 
				
			||||
 | 
					  tab-size: 4; | 
				
			||||
 | 
					  padding: 1rem 1.5rem; | 
				
			||||
 | 
					  font-size: 1.05rem; | 
				
			||||
 | 
					  white-space: pre; | 
				
			||||
 | 
					  max-width: 100%; | 
				
			||||
 | 
					  overflow-x: auto; | 
				
			||||
 | 
					  border-left: .3rem solid var(--beetbox-purple); | 
				
			||||
 | 
					  border-radius: .4rem; | 
				
			||||
 | 
					  box-shadow: 0 4px 8px black; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/* Effects */ | 
				
			||||
 | 
					.float-on-hover { | 
				
			||||
 | 
					  transition: all .25s cubic-bezier(.2,.1,.47,1); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.float-on-hover:hover { | 
				
			||||
 | 
					  transform: translateY(-10px); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					.shadow{ | 
				
			||||
 | 
					  box-shadow: 0 4px 8px black; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					/* Footer */ | 
				
			||||
 | 
					footer { | 
				
			||||
 | 
					  border-top: 1px solid var(--light); | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					footer ul { | 
				
			||||
 | 
					    padding: 0px; | 
				
			||||
 | 
					} | 
				
			||||
 | 
					
 | 
				
			||||
@ -1,42 +0,0 @@ | 
				
			|||||
@mixin shadow { | 
					 | 
				
			||||
	box-shadow: 0px 4px 8px black; | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
.shadow { | 
					 | 
				
			||||
	@include shadow | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
.float-on-hover { | 
					 | 
				
			||||
	transition: (all 0.25s cubic-bezier(0.2,0.1,0.47,1)); | 
					 | 
				
			||||
	&:hover { | 
					 | 
				
			||||
		transform: (translateY(-10px)); | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
.small-circle { | 
					 | 
				
			||||
	border-radius: 50%; | 
					 | 
				
			||||
	width: 250px; | 
					 | 
				
			||||
	height: 250px; | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
article { | 
					 | 
				
			||||
	background-color: $dark; | 
					 | 
				
			||||
	border-radius: 10px; | 
					 | 
				
			||||
	height: 420px; | 
					 | 
				
			||||
	flex: 1 1 305px; | 
					 | 
				
			||||
	overflow: hidden; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	img { | 
					 | 
				
			||||
    	height: 50%; | 
					 | 
				
			||||
    	width: 100%; | 
					 | 
				
			||||
    	object-fit: cover; | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	div { | 
					 | 
				
			||||
    	margin: 25px; | 
					 | 
				
			||||
    	display: flex; | 
					 | 
				
			||||
    	flex-direction: column; | 
					 | 
				
			||||
    	justify-content: space-between; | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,18 +0,0 @@ | 
				
			|||||
code { white-space: nowrap; } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
pre { | 
					 | 
				
			||||
	background-color: $background-color !important; | 
					 | 
				
			||||
	max-width: 100%; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	& > code { | 
					 | 
				
			||||
		@include shadow; | 
					 | 
				
			||||
		display: block; | 
					 | 
				
			||||
		padding: 1rem 1.5rem; | 
					 | 
				
			||||
		font-size: 1.05rem; | 
					 | 
				
			||||
		white-space: pre; | 
					 | 
				
			||||
		max-width: 100%; | 
					 | 
				
			||||
		overflow-x: auto; | 
					 | 
				
			||||
		border-left: .3rem solid $code-edge; | 
					 | 
				
			||||
    	border-radius: .4rem; | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -1,14 +0,0 @@ | 
				
			|||||
$beetbox-red: #9e0008; | 
					 | 
				
			||||
$beetbox-pink: #d93370; | 
					 | 
				
			||||
$beetbox-purple: #ac65cb; | 
					 | 
				
			||||
$beetbox-green: #003f56; | 
					 | 
				
			||||
$beetbox-blue: #5fcfd0; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
$background-color: #1f2835; | 
					 | 
				
			||||
$font-color: #f8f8ff; | 
					 | 
				
			||||
$font-color-alternate: #1f2835; | 
					 | 
				
			||||
$top-bar: #f8f8ffcc; | 
					 | 
				
			||||
$dark: #111; | 
					 | 
				
			||||
$link-color: $beetbox-blue; | 
					 | 
				
			||||
$link-color-visited: #e4cdef; | 
					 | 
				
			||||
$code-edge: $beetbox-purple; | 
					 | 
				
			||||
@ -1,86 +0,0 @@ | 
				
			|||||
@import 'colors.scss'; | 
					 | 
				
			||||
@import 'cards.scss'; | 
					 | 
				
			||||
@import 'code.scss'; | 
					 | 
				
			||||
 | 
					 | 
				
			||||
@mixin screen-max($max) { | 
					 | 
				
			||||
	@media (max-width: $max - 1) { | 
					 | 
				
			||||
		@content | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
body { | 
					 | 
				
			||||
	background-color: $background-color; | 
					 | 
				
			||||
	color: $font-color; | 
					 | 
				
			||||
	margin: 0px; | 
					 | 
				
			||||
	overflow-y: scroll; | 
					 | 
				
			||||
	font-family: 'Helvetica'; | 
					 | 
				
			||||
	font-size: 1.1rem; | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
h2 {font-size: 1.2rem;} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
header { | 
					 | 
				
			||||
	background-color: $top-bar; | 
					 | 
				
			||||
	box-shadow: 0px 5px 10px black; | 
					 | 
				
			||||
	nav { | 
					 | 
				
			||||
    	@include screen-max(500px){text-align: center;} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    	div {display: inline-block;} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
		img { max-width: 300px; } | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    	a { | 
					 | 
				
			||||
        	margin-right: 12px; | 
					 | 
				
			||||
        	font-weight: bold; | 
					 | 
				
			||||
        	text-decoration: none; | 
					 | 
				
			||||
        	&, &:visited, &:hover {color: $font-color-alternate;} | 
					 | 
				
			||||
    	} | 
					 | 
				
			||||
	} | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
header, main, section {padding: 0 16px;} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
nav, main, section {max-width: 1200px; margin: auto;} | 
					 | 
				
			||||
main img {max-width: 100%} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
footer {text-align: center;} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
 | 
					 | 
				
			||||
a { | 
					 | 
				
			||||
	color: $link-color; | 
					 | 
				
			||||
	&:visited, &:hover { color: $link-color-visited; } | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
img.featured{aspect-ratio: 4/3;} | 
					 | 
				
			||||
img.featured, img.author { | 
					 | 
				
			||||
    display: block; | 
					 | 
				
			||||
    border-radius: 8px; | 
					 | 
				
			||||
    margin: 12px 0; | 
					 | 
				
			||||
    object-fit: cover; | 
					 | 
				
			||||
    max-height: 500px; | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
.left-to-right { | 
					 | 
				
			||||
    display: flex; | 
					 | 
				
			||||
    flex-wrap: wrap; | 
					 | 
				
			||||
    gap: 8px; | 
					 | 
				
			||||
    justify-content: space-evenly; | 
					 | 
				
			||||
    align-items: end; | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
.align-center { | 
					 | 
				
			||||
    align-items: center; | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
section.article-list { | 
					 | 
				
			||||
    margin: 8px 0px; | 
					 | 
				
			||||
	display: flex; | 
					 | 
				
			||||
	flex-wrap: wrap; | 
					 | 
				
			||||
	justify-content: center; | 
					 | 
				
			||||
	gap: 40px; | 
					 | 
				
			||||
} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
.fill-wh { | 
					 | 
				
			||||
	width: 100%; | 
					 | 
				
			||||
	height: 100% | 
					 | 
				
			||||
} | 
					 | 
				
			||||
@ -0,0 +1,29 @@ | 
				
			|||||
 | 
					# Example site configuration | 
				
			||||
 | 
					baseURL = 'https://beetbox.io' | 
				
			||||
 | 
					languageCode = 'en-US' | 
				
			||||
 | 
					title = 'Beet Box' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					[[menus.main]] | 
				
			||||
 | 
					name = 'Home' | 
				
			||||
 | 
					pageRef = '/' | 
				
			||||
 | 
					weight = 10 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					[[menus.main]] | 
				
			||||
 | 
					name = 'Gitea' | 
				
			||||
 | 
					url = 'https://gitea.beetbox.io/BeetBox' | 
				
			||||
 | 
					weight = 20 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					[[menus.main]] | 
				
			||||
 | 
					name = 'Games' | 
				
			||||
 | 
					pageRef = '/games' | 
				
			||||
 | 
					weight = 30 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					[[menus.footer]] | 
				
			||||
 | 
					name = 'Authors' | 
				
			||||
 | 
					pageRef = '/authors' | 
				
			||||
 | 
					weight = 10 | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					[module] | 
				
			||||
 | 
					  [module.hugoVersion] | 
				
			||||
 | 
					    extended = false | 
				
			||||
 | 
					    min = "0.116.0" | 
				
			||||
@ -1,7 +1,5 @@ | 
				
			|||||
{{ define "main" }} | 
					{{ define "main" }} | 
				
			||||
<main> | 
					<h1>404 Page not found</h1> | 
				
			||||
    <h1>404</h1> | 
					<h2><a href="/">Home</a></h2> | 
				
			||||
    <h2>This page doesn't exist. Let's go <a href="/">home</a></h2> | 
					 | 
				
			||||
</main> | 
					 | 
				
			||||
{{ end }} | 
					{{ end }} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
				
			|||||
@ -1,40 +1,17 @@ | 
				
			|||||
<!DOCTYPE html> | 
					<!DOCTYPE html> | 
				
			||||
<html lang="{{ .Site.Language.Lang }}"> | 
					<html lang="{{ site.Language.LanguageCode }}" dir="{{ or site.Language.LanguageDirection `ltr` }}"> | 
				
			||||
	<head> | 
					<head> | 
				
			||||
 | 
					  {{ partial "head.html" . }} | 
				
			||||
        <link rel="shortcut icon" href="/images/favicon.ico"> | 
					</head> | 
				
			||||
 | 
					<body> | 
				
			||||
    	{{- with .OutputFormats.Get "rss" }} | 
					  <header> | 
				
			||||
    		{{- printf `<link rel="%s" type="%s" href="%s" title="%s">` .Rel .MediaType.Type .Permalink $.Site.Title | safeHTML -}} | 
					    {{ partial "header.html" . }} | 
				
			||||
    	{{ end }} | 
					  </header> | 
				
			||||
 | 
					  <main> | 
				
			||||
        <meta charset="utf-8"> | 
					    {{ block "main" . }}{{ end }} | 
				
			||||
        <meta name="viewport" content="width=device-width, initial-scale=1.0"> | 
					  </main> | 
				
			||||
 | 
					  <footer> | 
				
			||||
        {{ with (default .Site.Params.description .Params.description) -}} | 
					    {{ partial "footer.html" . }} | 
				
			||||
            <meta name="description" content="{{- . -}}"> | 
					  </footer> | 
				
			||||
        {{- end -}} | 
					</body> | 
				
			||||
 | 
					 | 
				
			||||
        {{ with .Params.keywords -}} | 
					 | 
				
			||||
            <meta name="description" content="{{ delimit . "," }}"> | 
					 | 
				
			||||
        {{- end }} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    	{{ $style := resources.Get "/sass/main.scss" | css.Sass | minify -}} | 
					 | 
				
			||||
    	<link rel="stylesheet" href="{{ $style.Permalink }}"> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    	<title> | 
					 | 
				
			||||
        	{{- block "title" . }}{{ .Site.Title }}{{ end -}} | 
					 | 
				
			||||
    	</title> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	</head> | 
					 | 
				
			||||
	<body> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
{{ partial "header.html" . }} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
{{ block "main" . }} | 
					 | 
				
			||||
{{ end }} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
{{ partial "footer.html" . }} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	</body> | 
					 | 
				
			||||
</html> | 
					</html> | 
				
			||||
 | 
				
			|||||
@ -0,0 +1,24 @@ | 
				
			|||||
 | 
					{{ define "main" }} | 
				
			||||
 | 
					{{ .Content }} | 
				
			||||
 | 
					<section class="index"> | 
				
			||||
 | 
					  <div class="article-list"> | 
				
			||||
 | 
					  <h2>All Posts:</h2> | 
				
			||||
 | 
					  {{ range site.RegularPages.GroupByDate "2006" }} | 
				
			||||
 | 
					  <p>{{ .Key }}</p> | 
				
			||||
 | 
					  <ul> | 
				
			||||
 | 
					    {{ range .Pages -}} | 
				
			||||
 | 
					    <li> | 
				
			||||
 | 
					      <a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a> | 
				
			||||
 | 
					    </li> | 
				
			||||
 | 
					    {{ end -}} | 
				
			||||
 | 
					  </ul> | 
				
			||||
 | 
					  {{ end }} | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  <aside class="article-group index-articles"> | 
				
			||||
 | 
					    {{- range site.RegularPages.Limit 4 }} | 
				
			||||
 | 
					      {{ partial "article.html" . }} | 
				
			||||
 | 
					    {{- end }} | 
				
			||||
 | 
					  </aside> | 
				
			||||
 | 
					</section> | 
				
			||||
 | 
					{{ end }} | 
				
			||||
@ -1,20 +1,28 @@ | 
				
			|||||
{{ define "title" }}{{ .Title }}{{ end }} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
{{ define "main" }} | 
					{{ define "main" }} | 
				
			||||
    <main> | 
					  <h1>{{ .Title }}</h1> | 
				
			||||
    	{{ partial "article-meta.html" . }} | 
					
 | 
				
			||||
 | 
					  {{ with .Params.authors }} | 
				
			||||
 | 
					    {{ $author := (index . 0) }} | 
				
			||||
 | 
					    <h4>Author: <a href={{ printf "/%s/%s" "authors" (urlize $author) }}>{{ $author }}</a></h4> | 
				
			||||
 | 
					  {{ end }} | 
				
			||||
 | 
					
 | 
				
			||||
        {{ .Content }} | 
					  {{- if (not .Params.hideDate) }} | 
				
			||||
    </main> | 
					  {{- $dateMachine := .Date | time.Format "2006-01-02T15:04:05-07:00" }} | 
				
			||||
 | 
					  {{- $dateHuman := .Date | time.Format "Mon | Jan 2, 2006" }} | 
				
			||||
 | 
					  <h4>Posted: <time datetime="{{ $dateMachine }}">{{ $dateHuman }}</time></h4> | 
				
			||||
 | 
					  {{- end }} | 
				
			||||
 | 
					
 | 
				
			||||
    <section> | 
					  {{- range (.GetTerms "tags") }} | 
				
			||||
    	{{ with .NextInSection }} | 
					  <span><a href="{{ .Permalink }}">#{{ .LinkTitle }}</a></span> | 
				
			||||
    		<p>Next: <a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></p> | 
					  {{- end }} | 
				
			||||
    	{{ end }} | 
					 | 
				
			||||
 | 
					
 | 
				
			||||
    	{{ with .PrevInSection }} | 
					  {{- partial "image.html" | 
				
			||||
    		<p>Previous: <a href="{{ .Permalink }}">{{ .Title | markdownify }}</a></p> | 
					     (dict | 
				
			||||
    	{{ end }} | 
					      "image" (.Resources.GetMatch "featured") | 
				
			||||
    </section> | 
					      "alt" .Params.featured.alt | 
				
			||||
 | 
					      "sizes" (slice 320 480 600 800) | 
				
			||||
 | 
					      "classes" (slice "shadow" "featured")) }} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					  {{ .Content }} | 
				
			||||
 | 
					  {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }} | 
				
			||||
{{ end }} | 
					{{ end }} | 
				
			||||
 | 
				
			|||||
@ -1,9 +1,14 @@ | 
				
			|||||
{{ define "main" }} | 
					{{ define "main" }} | 
				
			||||
 | 
					 | 
				
			||||
<section> | 
					<section> | 
				
			||||
    <h1 class="center-text">Authors</h1> | 
					    <h1 class="center-text">Authors</h1> | 
				
			||||
	{{ range .Data.Pages }} | 
						{{- range .Data.Pages }} | 
				
			||||
		{{ partial "article-alternate.html" . }} | 
					      {{- partial "article-alt.html" | 
				
			||||
	{{ end }} | 
					        (dict | 
				
			||||
 | 
					          "image" (.Resources.GetMatch "avatar") | 
				
			||||
 | 
					          "alt" .Params.alt | 
				
			||||
 | 
					          "title" .Params.name | 
				
			||||
 | 
					          "summary" .Params.bio | 
				
			||||
 | 
					          "url" (printf "/%s/%s" "authors" (.Params.name | urlize))) }} | 
				
			||||
 | 
						{{- end }} | 
				
			||||
</section> | 
					</section> | 
				
			||||
{{ end }} | 
					{{ end }} | 
				
			||||
@ -0,0 +1,25 @@ | 
				
			|||||
 | 
					{{- /* | 
				
			||||
 | 
					Renders an article card with a circle image, title, and summary. | 
				
			||||
 | 
					@context {image} the image resource. | 
				
			||||
 | 
					@context {alt} alt text for the image. | 
				
			||||
 | 
					@context {title} the title of the card. | 
				
			||||
 | 
					@context {summary} the summary text. | 
				
			||||
 | 
					@context {url} the url of the article. | 
				
			||||
 | 
					*/}} | 
				
			||||
 | 
					{{- $image := .image }} | 
				
			||||
 | 
					{{- $alt := .alt }} | 
				
			||||
 | 
					{{- $title := .title }} | 
				
			||||
 | 
					{{- $summary := .summary }} | 
				
			||||
 | 
					{{- $url := .url }} | 
				
			||||
 | 
					{{- $img := ($image.Resize "256x webp q90") }} | 
				
			||||
 | 
					<a href="{{ $url }}"> | 
				
			||||
 | 
					<article class="alt float-on-hover shadow"> | 
				
			||||
 | 
						<div> | 
				
			||||
 | 
						  <img src="{{ $img.RelPermalink }}" alt="{{ $alt }}" /> | 
				
			||||
 | 
						</div> | 
				
			||||
 | 
						<div> | 
				
			||||
 | 
							<h2>{{ $title }}</h2> | 
				
			||||
 | 
							<p>{{ $summary }}</p> | 
				
			||||
 | 
						</div> | 
				
			||||
 | 
					</article> | 
				
			||||
 | 
					</a> | 
				
			||||
@ -1,14 +0,0 @@ | 
				
			|||||
<a href={{ printf "/%s/%s" "authors" (.Params.name | urlize) }}> | 
					 | 
				
			||||
<article class="shadow left-to-right float-on-hover align-center"> | 
					 | 
				
			||||
	<div> | 
					 | 
				
			||||
		{{ with .Resources.GetMatch "avatar" }} | 
					 | 
				
			||||
			<img class="shadow small-circle" src="{{ .RelPermalink }}" alt="{{ .Params.alt }}"/> | 
					 | 
				
			||||
		{{ end }} | 
					 | 
				
			||||
	</div> | 
					 | 
				
			||||
	<div> | 
					 | 
				
			||||
		<h2>{{ .Params.name }}</h2> | 
					 | 
				
			||||
		<p>{{ .Params.bio }}</p> | 
					 | 
				
			||||
	</div> | 
					 | 
				
			||||
</article> | 
					 | 
				
			||||
</a> | 
					 | 
				
			||||
	 | 
					 | 
				
			||||
@ -1,19 +0,0 @@ | 
				
			|||||
<section> | 
					 | 
				
			||||
    {{ with .Params.authors }} | 
					 | 
				
			||||
        {{ $author := (index . 0) }} | 
					 | 
				
			||||
        <h4>Author: <a href={{ printf "/%s/%s" "authors" (urlize $author) }}>{{ $author }}</a></h4> | 
					 | 
				
			||||
    {{ end }} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    {{ with .Date }} | 
					 | 
				
			||||
        <h4>Posted: {{ .Format "Mon | Jan 2, 2006" }}</h4> | 
					 | 
				
			||||
    {{ end }} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    {{ range (.GetTerms "tags") }} | 
					 | 
				
			||||
    	<span> | 
					 | 
				
			||||
        	<a href="{{ .Permalink }}">{{ .LinkTitle }}</a> | 
					 | 
				
			||||
    	</span> | 
					 | 
				
			||||
    {{ end }} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	{{ $image := (.Resources.GetMatch "featured") }} | 
					 | 
				
			||||
	{{ partial "image.html" (dict "image" $image "alt" .Params.featured.alt "class" "shadow featured") }} | 
					 | 
				
			||||
</section> | 
					 | 
				
			||||
@ -1,22 +1,15 @@ | 
				
			|||||
<article class="shadow float-on-hover"> | 
					<article class="index float-on-hover shadow"> | 
				
			||||
 | 
					    <a href=" {{ .Permalink }}"> | 
				
			||||
    <a href=" {{.Permalink }}"> | 
					    	{{- $image := (.Resources.GetMatch "featured").Resize "256x webp q90" }} | 
				
			||||
    	{{ $image := .Resources.GetMatch "featured" }} | 
					        <img src={{ $image.RelPermalink }} alt="{{ .Params.featured.alt }}"> | 
				
			||||
    	{{ partial "image-small.html" (dict "image" $image "alt" .Params.featured.alt) }} | 
					 | 
				
			||||
    </a> | 
					    </a> | 
				
			||||
 | 
					    <h3 class="title">{{ .Title | markdownify }}</h3> | 
				
			||||
    <div> | 
					    {{- if not (.Params.hideDate) }} | 
				
			||||
 | 
					    {{- with .Date }} | 
				
			||||
    	{{ with index (.GetTerms "tags") 0 }} | 
					    <p>{{ .Format "2006/01/02" }}</p> | 
				
			||||
    		<a href="{{ .Permalink }}">{{ .LinkTitle }}</a> | 
					    {{- end }} | 
				
			||||
    	{{ end }} | 
					    {{- end }} | 
				
			||||
 | 
					    {{- with index (.GetTerms "tags") 0 }} | 
				
			||||
    	<h2 class="title">{{ .Title | markdownify }}</h2> | 
					    <a href="{{ .Permalink }}">#{{ .LinkTitle }}</a> | 
				
			||||
 | 
					    {{- end }} | 
				
			||||
    	{{ with .Date }} | 
					 | 
				
			||||
    		<p>{{ .Format "2006/01/02" }}</p> | 
					 | 
				
			||||
    	{{ end }} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
	</div> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
</article> | 
					</article> | 
				
			||||
 | 
				
			|||||
@ -1,5 +1,2 @@ | 
				
			|||||
<footer> | 
					{{ partial "menu.html" (dict "menuID" "footer" "page" .) }} | 
				
			||||
	<hr> | 
					<p>© 2020 – {{ now.Year }} Beet Box. All rights reserved.</p> | 
				
			||||
	<p><a href="/authors">Authors</a></p> | 
					 | 
				
			||||
	<p>{{ $.Site.Copyright | safeHTML }}</p> | 
					 | 
				
			||||
</footer> | 
					 | 
				
			||||
 | 
				
			|||||
@ -0,0 +1,9 @@ | 
				
			|||||
 | 
					<meta charset="utf-8"> | 
				
			||||
 | 
					<meta name="viewport" content="width=device-width"> | 
				
			||||
 | 
					<title>{{ if .IsHome }}{{ site.Title }}{{ else }}{{ printf "%s | %s" .Title site.Title }}{{ end }}</title> | 
				
			||||
 | 
					{{- partialCached "head/css.html" . }} | 
				
			||||
 | 
					<link rel="shortcut icon" href="{{ site.Params.meta.favicon }}"> | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					{{ with .OutputFormats.Get "rss" }} | 
				
			||||
 | 
					  {{- printf `<link rel=%q type=%q href=%q title=%q>` .Rel .MediaType.Type .Permalink site.Title | safeHTML }} | 
				
			||||
 | 
					{{- end }} | 
				
			||||
@ -0,0 +1,9 @@ | 
				
			|||||
 | 
					{{- with resources.Get "css/main.css" }} | 
				
			||||
 | 
					  {{- if eq hugo.Environment "development" }} | 
				
			||||
 | 
					    <link rel="stylesheet" href="{{ .RelPermalink }}"> | 
				
			||||
 | 
					  {{- else }} | 
				
			||||
 | 
					    {{- with . | minify | fingerprint }} | 
				
			||||
 | 
					      <link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous"> | 
				
			||||
 | 
					    {{- end }} | 
				
			||||
 | 
					  {{- end }} | 
				
			||||
 | 
					{{- end }} | 
				
			||||
@ -0,0 +1,12 @@ | 
				
			|||||
 | 
					{{- with resources.Get "js/main.js" }} | 
				
			||||
 | 
					  {{- if eq hugo.Environment "development" }} | 
				
			||||
 | 
					    {{- with . | js.Build }} | 
				
			||||
 | 
					      <script src="{{ .RelPermalink }}"></script> | 
				
			||||
 | 
					    {{- end }} | 
				
			||||
 | 
					  {{- else }} | 
				
			||||
 | 
					    {{- $opts := dict "minify" true }} | 
				
			||||
 | 
					    {{- with . | js.Build $opts | fingerprint }} | 
				
			||||
 | 
					      <script src="{{ .RelPermalink }}" integrity="{{- .Data.Integrity }}" crossorigin="anonymous"></script> | 
				
			||||
 | 
					    {{- end }} | 
				
			||||
 | 
					  {{- end }} | 
				
			||||
 | 
					{{- end }} | 
				
			||||
@ -1,11 +1,8 @@ | 
				
			|||||
<header> | 
					<div> | 
				
			||||
	<nav> | 
					{{ with resources.Get site.Params.logo.src }} | 
				
			||||
		<a href="/"><img src="{{ .Site.Params.logo }}" alt="The {{ .Site.Title }} Logo"></a> | 
					  <a href="/"><img src="{{ .RelPermalink }}" width="{{ .Width }}" height="{{ .Height }}" alt="{{ site.Params.logo.alt }}"></a> | 
				
			||||
		<div> | 
					{{ else }} | 
				
			||||
    		{{ range .Site.Params.HeaderLinks -}} | 
					  <h1>{{ site.Title }}</h1> | 
				
			||||
    		<a href="{{ .url }}" title="{{ .title }}">{{ .title }}</a> | 
					{{ end }} | 
				
			||||
    		{{ end -}} | 
					{{ partial "menu.html" (dict "menuID" "main" "page" .) }} | 
				
			||||
    		{{ printf `<a href="/index.xml" title="%s">RSS</a>` $.Site.Title | safeHTML }} | 
					</div> | 
				
			||||
		</div> | 
					 | 
				
			||||
	</nav> | 
					 | 
				
			||||
</header> | 
					 | 
				
			||||
 | 
				
			|||||
@ -1,28 +0,0 @@ | 
				
			|||||
<img class="{{ .class }}" | 
					 | 
				
			||||
	{{- with .image -}} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
        {{ $smallest := (.Resize "305x webp q60") }} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
		srcset=" | 
					 | 
				
			||||
    		{{- with $smallest -}} | 
					 | 
				
			||||
        		{{ printf "%s %dw," .RelPermalink .Width }} | 
					 | 
				
			||||
    		{{- end -}} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    		{{- with (.Resize "480x webp q60") -}} | 
					 | 
				
			||||
        		{{ printf "%s %dw," .RelPermalink .Width }} | 
					 | 
				
			||||
    		{{- end -}} | 
					 | 
				
			||||
 | 
					 | 
				
			||||
		" | 
					 | 
				
			||||
 | 
					 | 
				
			||||
		sizes=" | 
					 | 
				
			||||
    		(max-width: 480px) 305px; | 
					 | 
				
			||||
    		480px" | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    	src=" | 
					 | 
				
			||||
    	{{- with $smallest -}} | 
					 | 
				
			||||
    		{{ .RelPermalink }} | 
					 | 
				
			||||
    	{{- end -}}" | 
					 | 
				
			||||
 | 
					 | 
				
			||||
        alt="{{ .Params.alt }}" | 
					 | 
				
			||||
	{{- end -}} | 
					 | 
				
			||||
> | 
					 | 
				
			||||
@ -1,38 +1,43 @@ | 
				
			|||||
<img class="{{ .class }}" | 
					{{- /* | 
				
			||||
	{{- with .image -}} | 
					Renders an image with the given class, alt, and sizes. | 
				
			||||
 | 
					@context {alt} alt text for the image. | 
				
			||||
        {{ $smallest := (.Resize "320x webp q60") }} | 
					@context {image} the image resource. | 
				
			||||
 | 
					@context {sizes} each size to include in the srcset. | 
				
			||||
		srcset=" | 
					@context {classes} classes for the image. | 
				
			||||
    		{{- with $smallest -}} | 
					*/}} | 
				
			||||
        		{{ printf "%s %dw," .RelPermalink .Width }} | 
					
 | 
				
			||||
    		{{- end -}} | 
					  {{- $alt := .alt }} | 
				
			||||
 | 
					  {{- $img := .image }} | 
				
			||||
    		{{- with (.Resize "480x webp q60") -}} | 
					  {{- $sizes := .sizes }} | 
				
			||||
        		{{ printf "%s %dw," .RelPermalink .Width }} | 
					  {{- $classes := .classes }} | 
				
			||||
    		{{- end -}} | 
					
 | 
				
			||||
 | 
					  {{- $srcsetParts := slice }} | 
				
			||||
    		{{- with (.Resize "600x webp q70") -}} | 
					  {{- $sizesParts := slice }} | 
				
			||||
        		{{ printf "%s %dw," .RelPermalink .Width }} | 
					  {{- $len := len $sizes }} | 
				
			||||
    		{{- end -}} | 
					
 | 
				
			||||
 | 
					  {{/* Loop through widths to resize images and build attributes */}} | 
				
			||||
    		{{- with (.Resize "800x webp q90") -}} | 
					  {{- range $index, $width := $sizes }} | 
				
			||||
        		{{ printf "%s %dw," .RelPermalink .Width }} | 
					    {{- $resizeSpec := printf "%dx webp q90" $width }} | 
				
			||||
    		{{- end -}} | 
					    {{- $resized := ($img.Resize $resizeSpec) }} | 
				
			||||
 | 
					
 | 
				
			||||
		" | 
					    {{- $srcsetParts = $srcsetParts | append (printf "%s %dw" $resized.RelPermalink $width) }} | 
				
			||||
 | 
					
 | 
				
			||||
		sizes=" | 
					    {{- /* Build sizes: media query for all but the last width */}} | 
				
			||||
    		(max-width: 480px) 320px; | 
					    {{- if lt $index (sub $len 1) }} | 
				
			||||
    		(max-width: 600px) 480px; | 
					      {{- $nextWidth := index $sizes (add $index 1) }} | 
				
			||||
    		(max-width: 800px) 600px; | 
					      {{- $sizesParts = $sizesParts | append (printf "(max-width: %dpx) %dpx" $nextWidth $width) }} | 
				
			||||
    		800px" | 
					    {{- else }} | 
				
			||||
 | 
					      {{- $sizesParts = $sizesParts | append (printf "%dpx" $width) }} | 
				
			||||
    	src=" | 
					    {{- end }} | 
				
			||||
    	{{- with $smallest -}} | 
					  {{- end }} | 
				
			||||
    		{{ .RelPermalink }} | 
					
 | 
				
			||||
    	{{- end -}}" | 
					  {{- $smallestWidth := index $sizes 0 }} | 
				
			||||
 | 
					  {{- $smallestResizeSpec := printf "%dx webp q90" $smallestWidth }} | 
				
			||||
        alt="{{ .Params.alt }}" | 
					  {{- $smallest := ($img.Resize $smallestResizeSpec) }} | 
				
			||||
	{{- end -}} | 
					  {{- $src := $smallest.RelPermalink }} | 
				
			||||
 | 
					<img class="{{ delimit $classes " " }}" | 
				
			||||
 | 
					        src="{{ $src }}" | 
				
			||||
 | 
					        srcset="{{ delimit $srcsetParts ", " }}" | 
				
			||||
 | 
					        sizes="{{ delimit $sizesParts ", " }}" | 
				
			||||
 | 
					        alt="{{ $alt }}" | 
				
			||||
> | 
					> | 
				
			||||
 | 
				
			|||||
@ -0,0 +1,51 @@ | 
				
			|||||
 | 
					{{- /* | 
				
			||||
 | 
					Renders a menu for the given menu ID. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@context {page} page The current page. | 
				
			||||
 | 
					@context {string} menuID The menu ID. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@example: {{ partial "menu.html" (dict "menuID" "main" "page" .) }} | 
				
			||||
 | 
					*/}} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					{{- $page := .page }} | 
				
			||||
 | 
					{{- $menuID := .menuID }} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					{{- with index site.Menus $menuID }} | 
				
			||||
 | 
					  <nav> | 
				
			||||
 | 
					    <ul> | 
				
			||||
 | 
					      {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }} | 
				
			||||
 | 
					    </ul> | 
				
			||||
 | 
					  </nav> | 
				
			||||
 | 
					{{- end }} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					{{- define "partials/inline/menu/walk.html" }} | 
				
			||||
 | 
					  {{- $page := .page }} | 
				
			||||
 | 
					  {{- range .menuEntries }} | 
				
			||||
 | 
					    {{- $attrs := dict "href" .URL }} | 
				
			||||
 | 
					    {{- if $page.IsMenuCurrent .Menu . }} | 
				
			||||
 | 
					      {{- $attrs = merge $attrs (dict "class" "active" "aria-current" "page") }} | 
				
			||||
 | 
					    {{- else if $page.HasMenuCurrent .Menu .}} | 
				
			||||
 | 
					      {{- $attrs = merge $attrs (dict "class" "ancestor" "aria-current" "true") }} | 
				
			||||
 | 
					    {{- end }} | 
				
			||||
 | 
					    {{- $name := .Name }} | 
				
			||||
 | 
					    {{- with .Identifier }} | 
				
			||||
 | 
					      {{- with T . }} | 
				
			||||
 | 
					        {{- $name = . }} | 
				
			||||
 | 
					      {{- end }} | 
				
			||||
 | 
					    {{- end }} | 
				
			||||
 | 
					    <li> | 
				
			||||
 | 
					      <a | 
				
			||||
 | 
					        {{- range $k, $v := $attrs }} | 
				
			||||
 | 
					          {{- with $v }} | 
				
			||||
 | 
					            {{- printf " %s=%q" $k $v | safeHTMLAttr }} | 
				
			||||
 | 
					          {{- end }} | 
				
			||||
 | 
					        {{- end -}} | 
				
			||||
 | 
					      >{{ $name }}</a> | 
				
			||||
 | 
					      {{- with .Children }} | 
				
			||||
 | 
					        <ul> | 
				
			||||
 | 
					          {{- partial "inline/menu/walk.html" (dict "page" $page "menuEntries" .) }} | 
				
			||||
 | 
					        </ul> | 
				
			||||
 | 
					      {{- end }} | 
				
			||||
 | 
					    </li> | 
				
			||||
 | 
					  {{- end }} | 
				
			||||
 | 
					{{- end }} | 
				
			||||
@ -1 +0,0 @@ | 
				
			|||||
 | 
					 | 
				
			||||
@ -1,20 +0,0 @@ | 
				
			|||||
{{ with . }} | 
					 | 
				
			||||
<section> | 
					 | 
				
			||||
    <h2>Latest Posts:</h2> | 
					 | 
				
			||||
    <section class="article-list"> | 
					 | 
				
			||||
    {{ range .Limit 5 }} | 
					 | 
				
			||||
        {{ partial "article.html" . }} | 
					 | 
				
			||||
    {{ end }} | 
					 | 
				
			||||
    </section> | 
					 | 
				
			||||
 | 
					 | 
				
			||||
    <h2>All Posts:</h2> | 
					 | 
				
			||||
    {{ range .GroupByDate "2006" }} | 
					 | 
				
			||||
    	<p>{{ .Key}}</p> | 
					 | 
				
			||||
    	<ul> | 
					 | 
				
			||||
    	{{ range .Pages -}} | 
					 | 
				
			||||
    	<li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li> | 
					 | 
				
			||||
    	{{ end -}} | 
					 | 
				
			||||
    	</ul> | 
					 | 
				
			||||
    {{ end }} | 
					 | 
				
			||||
</section> | 
					 | 
				
			||||
{{ end }} | 
					 | 
				
			||||
@ -0,0 +1,23 @@ | 
				
			|||||
 | 
					{{- /* | 
				
			||||
 | 
					For a given taxonomy, renders a list of terms assigned to the page. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@context {page} page The current page. | 
				
			||||
 | 
					@context {string} taxonomy The taxonomy. | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					@example: {{ partial "terms.html" (dict "taxonomy" "tags" "page" .) }} | 
				
			||||
 | 
					*/}} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					{{- $page := .page }} | 
				
			||||
 | 
					{{- $taxonomy := .taxonomy }} | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					{{- with $page.GetTerms $taxonomy }} | 
				
			||||
 | 
					  {{- $label := (index . 0).Parent.LinkTitle }} | 
				
			||||
 | 
					  <div> | 
				
			||||
 | 
					    <div>{{ $label }}:</div> | 
				
			||||
 | 
					    <ul> | 
				
			||||
 | 
					      {{- range . }} | 
				
			||||
 | 
					        <li><a href="{{ .RelPermalink }}">{{ .LinkTitle }}</a></li> | 
				
			||||
 | 
					      {{- end }} | 
				
			||||
 | 
					    </ul> | 
				
			||||
 | 
					  </div> | 
				
			||||
 | 
					{{- end }} | 
				
			||||
@ -1,3 +1,7 @@ | 
				
			|||||
{{ $image := .Page.Resources.GetMatch (.Get "src") }} | 
					{{ $image := .Page.Resources.GetMatch (.Get "src") }} | 
				
			||||
{{ partial "image.html" (dict "image" $image "alt" (.Get "alt") "class" "fill-wh") }} | 
					{{ partial "image.html" | 
				
			||||
 | 
					   (dict | 
				
			||||
 | 
					   "image" $image | 
				
			||||
 | 
					   "alt" (.Get "alt") | 
				
			||||
 | 
					   "sizes" (slice 320 480 600) | 
				
			||||
 | 
					   "classes" (slice "fill-wh")) }} | 
				
			||||
| 
		 After Width: | Height: | Size: 15 KiB  | 
@ -0,0 +1,12 @@ | 
				
			|||||
 | 
					name = 'neon-harvest' | 
				
			||||
 | 
					license = 'BSD 3-Clause' | 
				
			||||
 | 
					licenselink = 'https://gitea.beetbox.io/BeetBox/neon-harvest/raw/branch/master/LICENSE' | 
				
			||||
 | 
					description = 'The current Hugo theme for beetbox.io' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					# The home page of the theme, where the source can be found | 
				
			||||
 | 
					homepage = 'https://gitea.beetbox.io/BeetBox/neon-harvest/' | 
				
			||||
 | 
					
 | 
				
			||||
 | 
					# If the theme has a single author | 
				
			||||
 | 
					[author] | 
				
			||||
 | 
					  name = 'Alexander Avery' | 
				
			||||
 | 
					  homepage = 'https://beetbox.io/authors/alexander-avery' | 
				
			||||
					Loading…
					
					
				
		Reference in new issue