added 2 new homepage layouts
|
@ -1347,39 +1347,6 @@ select {
|
|||
margin-bottom: 0;
|
||||
}
|
||||
|
||||
.prose-invert {
|
||||
--tw-prose-body: var(--tw-prose-invert-body);
|
||||
--tw-prose-headings: var(--tw-prose-invert-headings);
|
||||
--tw-prose-lead: var(--tw-prose-invert-lead);
|
||||
--tw-prose-links: var(--tw-prose-invert-links);
|
||||
--tw-prose-bold: var(--tw-prose-invert-bold);
|
||||
--tw-prose-counters: var(--tw-prose-invert-counters);
|
||||
--tw-prose-bullets: var(--tw-prose-invert-bullets);
|
||||
--tw-prose-hr: var(--tw-prose-invert-hr);
|
||||
--tw-prose-quotes: var(--tw-prose-invert-quotes);
|
||||
--tw-prose-quote-borders: var(--tw-prose-invert-quote-borders);
|
||||
--tw-prose-captions: var(--tw-prose-invert-captions);
|
||||
--tw-prose-code: var(--tw-prose-invert-code);
|
||||
--tw-prose-pre-code: var(--tw-prose-invert-pre-code);
|
||||
--tw-prose-pre-bg: var(--tw-prose-invert-pre-bg);
|
||||
--tw-prose-th-borders: var(--tw-prose-invert-th-borders);
|
||||
--tw-prose-td-borders: var(--tw-prose-invert-td-borders);
|
||||
}
|
||||
|
||||
.prose-invert :where(a):not(:where([class~="not-prose"] *)) {
|
||||
-webkit-text-decoration-color: rgba(var(--color-neutral-600), 1);
|
||||
text-decoration-color: rgba(var(--color-neutral-600), 1);
|
||||
}
|
||||
|
||||
.prose-invert :where(kbd):not(:where([class~="not-prose"] *)) {
|
||||
color: rgba(var(--color-neutral-200), 1);
|
||||
background-color: rgba(var(--color-neutral-700), 1);
|
||||
}
|
||||
|
||||
.prose-invert :where(mark):not(:where([class~="not-prose"] *)) {
|
||||
background-color: rgba(var(--color-secondary-400), 1);
|
||||
}
|
||||
|
||||
.sr-only {
|
||||
position: absolute;
|
||||
width: 1px;
|
||||
|
@ -1477,6 +1444,10 @@ select {
|
|||
margin: 0.25rem;
|
||||
}
|
||||
|
||||
.m-0 {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.-mx-2 {
|
||||
margin-left: -0.5rem;
|
||||
margin-right: -0.5rem;
|
||||
|
@ -1599,6 +1570,14 @@ select {
|
|||
margin-right: -0.5rem;
|
||||
}
|
||||
|
||||
.-mr-48 {
|
||||
margin-right: -12rem;
|
||||
}
|
||||
|
||||
.mb-0 {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.mt-1 {
|
||||
margin-top: 0.25rem;
|
||||
}
|
||||
|
@ -1647,14 +1626,18 @@ select {
|
|||
height: 2rem;
|
||||
}
|
||||
|
||||
.h-36 {
|
||||
height: 9rem;
|
||||
.h-48 {
|
||||
height: 12rem;
|
||||
}
|
||||
|
||||
.h-1\/2 {
|
||||
height: 50%;
|
||||
}
|
||||
|
||||
.h-36 {
|
||||
height: 9rem;
|
||||
}
|
||||
|
||||
.max-h-\[5rem\] {
|
||||
max-height: 5rem;
|
||||
}
|
||||
|
@ -1697,12 +1680,6 @@ select {
|
|||
width: 1.5rem;
|
||||
}
|
||||
|
||||
.w-max {
|
||||
width: -webkit-max-content;
|
||||
width: -moz-max-content;
|
||||
width: max-content;
|
||||
}
|
||||
|
||||
.min-w-0 {
|
||||
min-width: 0px;
|
||||
}
|
||||
|
@ -1735,12 +1712,8 @@ select {
|
|||
max-width: 5rem;
|
||||
}
|
||||
|
||||
.max-w-lg {
|
||||
max-width: 32rem;
|
||||
}
|
||||
|
||||
.max-w-sm {
|
||||
max-width: 24rem;
|
||||
.max-w-xl {
|
||||
max-width: 36rem;
|
||||
}
|
||||
|
||||
.flex-none {
|
||||
|
@ -1824,12 +1797,6 @@ select {
|
|||
margin-left: calc(1.25rem * calc(1 - var(--tw-space-x-reverse)));
|
||||
}
|
||||
|
||||
.space-y-4 > :not([hidden]) ~ :not([hidden]) {
|
||||
--tw-space-y-reverse: 0;
|
||||
margin-top: calc(1rem * calc(1 - var(--tw-space-y-reverse)));
|
||||
margin-bottom: calc(1rem * var(--tw-space-y-reverse));
|
||||
}
|
||||
|
||||
.place-self-center {
|
||||
place-self: center;
|
||||
}
|
||||
|
@ -1928,10 +1895,6 @@ select {
|
|||
border-color: rgba(var(--color-primary-500), var(--tw-border-opacity));
|
||||
}
|
||||
|
||||
.border-transparent {
|
||||
border-color: transparent;
|
||||
}
|
||||
|
||||
.bg-neutral {
|
||||
--tw-bg-opacity: 1;
|
||||
background-color: rgba(var(--color-neutral), var(--tw-bg-opacity));
|
||||
|
@ -1978,66 +1941,24 @@ select {
|
|||
background-color: rgba(var(--color-neutral-100), 0.5);
|
||||
}
|
||||
|
||||
.bg-opacity-60 {
|
||||
--tw-bg-opacity: 0.6;
|
||||
.bg-gradient-to-b {
|
||||
background-image: linear-gradient(to bottom, var(--tw-gradient-stops));
|
||||
}
|
||||
|
||||
.bg-gradient-to-r {
|
||||
background-image: linear-gradient(to right, var(--tw-gradient-stops));
|
||||
}
|
||||
|
||||
.bg-gradient-to-t {
|
||||
background-image: linear-gradient(to top, var(--tw-gradient-stops));
|
||||
}
|
||||
|
||||
.bg-gradient-to-b {
|
||||
background-image: linear-gradient(to bottom, var(--tw-gradient-stops));
|
||||
}
|
||||
|
||||
.bg-gradient-to-l {
|
||||
background-image: linear-gradient(to left, var(--tw-gradient-stops));
|
||||
}
|
||||
|
||||
.from-primary-800 {
|
||||
--tw-gradient-from: rgba(var(--color-primary-800), 1);
|
||||
--tw-gradient-to: rgba(var(--color-primary-800), 0);
|
||||
.from-primary-500 {
|
||||
--tw-gradient-from: rgba(var(--color-primary-500), 1);
|
||||
--tw-gradient-to: rgba(var(--color-primary-500), 0);
|
||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||
}
|
||||
|
||||
.from-primary-200 {
|
||||
--tw-gradient-from: rgba(var(--color-primary-200), 1);
|
||||
--tw-gradient-to: rgba(var(--color-primary-200), 0);
|
||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||
}
|
||||
|
||||
.from-primary-100 {
|
||||
--tw-gradient-from: rgba(var(--color-primary-100), 1);
|
||||
--tw-gradient-to: rgba(var(--color-primary-100), 0);
|
||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||
}
|
||||
|
||||
.from-neutral-100 {
|
||||
--tw-gradient-from: rgba(var(--color-neutral-100), 1);
|
||||
--tw-gradient-to: rgba(var(--color-neutral-100), 0);
|
||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||
}
|
||||
|
||||
.to-primary-700 {
|
||||
--tw-gradient-to: rgba(var(--color-primary-700), 1);
|
||||
}
|
||||
|
||||
.to-secondary-700 {
|
||||
--tw-gradient-to: rgba(var(--color-secondary-700), 1);
|
||||
}
|
||||
|
||||
.to-secondary-400 {
|
||||
--tw-gradient-to: rgba(var(--color-secondary-400), 1);
|
||||
}
|
||||
|
||||
.to-secondary-200 {
|
||||
--tw-gradient-to: rgba(var(--color-secondary-200), 1);
|
||||
}
|
||||
|
||||
.object-cover {
|
||||
-o-object-fit: cover;
|
||||
object-fit: cover;
|
||||
|
@ -2061,10 +1982,6 @@ select {
|
|||
padding: 0.25rem;
|
||||
}
|
||||
|
||||
.p-32 {
|
||||
padding: 8rem;
|
||||
}
|
||||
|
||||
.p-0 {
|
||||
padding: 0px;
|
||||
}
|
||||
|
@ -2159,6 +2076,18 @@ select {
|
|||
padding-top: 1rem;
|
||||
}
|
||||
|
||||
.pt-16 {
|
||||
padding-top: 4rem;
|
||||
}
|
||||
|
||||
.pb-32 {
|
||||
padding-bottom: 8rem;
|
||||
}
|
||||
|
||||
.pl-4 {
|
||||
padding-left: 1rem;
|
||||
}
|
||||
|
||||
.text-center {
|
||||
text-align: center;
|
||||
}
|
||||
|
@ -2254,10 +2183,6 @@ select {
|
|||
line-height: .75rem;
|
||||
}
|
||||
|
||||
.tracking-tight {
|
||||
letter-spacing: -0.025em;
|
||||
}
|
||||
|
||||
.text-neutral-400 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-neutral-400), var(--tw-text-opacity));
|
||||
|
@ -2308,6 +2233,21 @@ select {
|
|||
color: rgba(var(--color-neutral), var(--tw-text-opacity)) !important;
|
||||
}
|
||||
|
||||
.text-neutral-200 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-neutral-200), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.text-neutral-300 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-neutral-300), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.text-primary-300 {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-primary-300), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.\!no-underline {
|
||||
-webkit-text-decoration-line: none !important;
|
||||
text-decoration-line: none !important;
|
||||
|
@ -2343,12 +2283,6 @@ select {
|
|||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
}
|
||||
|
||||
.shadow-sm {
|
||||
--tw-shadow: 0 1px 2px 0 rgb(0 0 0 / 0.05);
|
||||
--tw-shadow-colored: 0 1px 2px 0 var(--tw-shadow-color);
|
||||
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||
}
|
||||
|
||||
.backdrop-blur {
|
||||
--tw-backdrop-blur: blur(8px);
|
||||
-webkit-backdrop-filter: var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);
|
||||
|
@ -3048,12 +2982,6 @@ body:has(#menu-controller:checked) {
|
|||
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.hero {
|
||||
background-repeat:no-repeat;
|
||||
background-size:cover;
|
||||
background-position:center;
|
||||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
.thumbnail {
|
||||
min-width: 100%;
|
||||
|
@ -3105,10 +3033,6 @@ body:has(#menu-controller:checked) {
|
|||
background-color: rgba(var(--color-primary-500), var(--tw-bg-opacity)) !important;
|
||||
}
|
||||
|
||||
.hover\:bg-opacity-70:hover {
|
||||
--tw-bg-opacity: 0.7;
|
||||
}
|
||||
|
||||
.hover\:text-primary-600:hover {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-primary-600), var(--tw-text-opacity));
|
||||
|
@ -3129,6 +3053,11 @@ body:has(#menu-controller:checked) {
|
|||
color: rgba(var(--color-neutral), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.hover\:text-primary-400:hover {
|
||||
--tw-text-opacity: 1;
|
||||
color: rgba(var(--color-primary-400), var(--tw-text-opacity));
|
||||
}
|
||||
|
||||
.hover\:underline:hover {
|
||||
-webkit-text-decoration-line: underline;
|
||||
text-decoration-line: underline;
|
||||
|
@ -3399,14 +3328,14 @@ body:has(#menu-controller:checked) {
|
|||
background-color: rgba(var(--color-primary-800), var(--tw-bg-opacity));
|
||||
}
|
||||
|
||||
.dark .dark\:from-primary-800 {
|
||||
--tw-gradient-from: rgba(var(--color-primary-800), 1);
|
||||
--tw-gradient-to: rgba(var(--color-primary-800), 0);
|
||||
.dark .dark\:from-primary-600 {
|
||||
--tw-gradient-from: rgba(var(--color-primary-600), 1);
|
||||
--tw-gradient-to: rgba(var(--color-primary-600), 0);
|
||||
--tw-gradient-stops: var(--tw-gradient-from), var(--tw-gradient-to);
|
||||
}
|
||||
|
||||
.dark .dark\:to-secondary-700 {
|
||||
--tw-gradient-to: rgba(var(--color-secondary-700), 1);
|
||||
.dark .dark\:to-secondary-800 {
|
||||
--tw-gradient-to: rgba(var(--color-secondary-800), 1);
|
||||
}
|
||||
|
||||
.dark .dark\:text-neutral-500 {
|
||||
|
@ -3491,65 +3420,26 @@ body:has(#menu-controller:checked) {
|
|||
}
|
||||
|
||||
@media (min-width: 640px) {
|
||||
.sm\:mx-auto {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.sm\:mb-0 {
|
||||
margin-bottom: 0px;
|
||||
}
|
||||
|
||||
.sm\:flex {
|
||||
display: flex;
|
||||
}
|
||||
|
||||
.sm\:inline-grid {
|
||||
display: inline-grid;
|
||||
.sm\:mt-16 {
|
||||
margin-top: 4rem;
|
||||
}
|
||||
|
||||
.sm\:w-1\/2 {
|
||||
width: 50%;
|
||||
}
|
||||
|
||||
.sm\:max-w-3xl {
|
||||
max-width: 48rem;
|
||||
}
|
||||
|
||||
.sm\:max-w-none {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
.sm\:grid-cols-2 {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.sm\:flex-row {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.sm\:justify-center {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.sm\:gap-5 {
|
||||
gap: 1.25rem;
|
||||
}
|
||||
|
||||
.sm\:space-y-0 > :not([hidden]) ~ :not([hidden]) {
|
||||
--tw-space-y-reverse: 0;
|
||||
margin-top: calc(0px * calc(1 - var(--tw-space-y-reverse)));
|
||||
margin-bottom: calc(0px * var(--tw-space-y-reverse));
|
||||
}
|
||||
|
||||
.sm\:overflow-hidden {
|
||||
overflow: hidden;
|
||||
}
|
||||
|
||||
.sm\:rounded-2xl {
|
||||
border-radius: 1rem;
|
||||
}
|
||||
|
||||
.sm\:p-6 {
|
||||
padding: 1.5rem;
|
||||
}
|
||||
|
@ -3574,25 +3464,19 @@ body:has(#menu-controller:checked) {
|
|||
padding-bottom: 6rem;
|
||||
}
|
||||
|
||||
.sm\:px-8 {
|
||||
padding-left: 2rem;
|
||||
padding-right: 2rem;
|
||||
}
|
||||
|
||||
.sm\:pt-10 {
|
||||
padding-top: 2.5rem;
|
||||
}
|
||||
|
||||
.sm\:pl-6 {
|
||||
padding-left: 1.5rem;
|
||||
}
|
||||
|
||||
.sm\:text-lg {
|
||||
font-size: 1.125rem;
|
||||
line-height: 1.75rem;
|
||||
}
|
||||
|
||||
.sm\:text-5xl {
|
||||
font-size: 3rem;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
[dir="ltr"] .ltr\:sm\:mr-7 {
|
||||
margin-right: 1.75rem;
|
||||
}
|
||||
|
@ -3623,6 +3507,10 @@ body:has(#menu-controller:checked) {
|
|||
margin-left: 3rem;
|
||||
}
|
||||
|
||||
.md\:-mr-16 {
|
||||
margin-right: -4rem;
|
||||
}
|
||||
|
||||
.md\:flex {
|
||||
display: flex;
|
||||
}
|
||||
|
@ -3654,6 +3542,14 @@ body:has(#menu-controller:checked) {
|
|||
}
|
||||
|
||||
@media (min-width: 1024px) {
|
||||
.lg\:absolute {
|
||||
position: absolute;
|
||||
}
|
||||
|
||||
.lg\:relative {
|
||||
position: relative;
|
||||
}
|
||||
|
||||
.lg\:sticky {
|
||||
position: -webkit-sticky;
|
||||
position: sticky;
|
||||
|
@ -3663,30 +3559,84 @@ body:has(#menu-controller:checked) {
|
|||
top: 2.5rem;
|
||||
}
|
||||
|
||||
.lg\:left-0 {
|
||||
left: 0px;
|
||||
}
|
||||
|
||||
.lg\:order-last {
|
||||
order: 9999;
|
||||
}
|
||||
|
||||
.lg\:m-0 {
|
||||
margin: 0px;
|
||||
}
|
||||
|
||||
.lg\:mx-auto {
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
}
|
||||
|
||||
.lg\:mx-0 {
|
||||
margin-left: 0px;
|
||||
margin-right: 0px;
|
||||
}
|
||||
|
||||
.lg\:mt-0 {
|
||||
margin-top: 0px;
|
||||
}
|
||||
|
||||
.lg\:block {
|
||||
display: block;
|
||||
}
|
||||
|
||||
.lg\:grid {
|
||||
display: grid;
|
||||
}
|
||||
|
||||
.lg\:hidden {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.lg\:h-full {
|
||||
height: 100%;
|
||||
}
|
||||
|
||||
.lg\:w-1\/4 {
|
||||
width: 25%;
|
||||
}
|
||||
|
||||
.lg\:w-auto {
|
||||
width: auto;
|
||||
}
|
||||
|
||||
.lg\:max-w-xs {
|
||||
max-width: 20rem;
|
||||
}
|
||||
|
||||
.lg\:max-w-7xl {
|
||||
max-width: 80rem;
|
||||
}
|
||||
|
||||
.lg\:max-w-none {
|
||||
max-width: none;
|
||||
}
|
||||
|
||||
.lg\:grid-flow-col-dense {
|
||||
grid-auto-flow: column dense;
|
||||
}
|
||||
|
||||
.lg\:grid-cols-2 {
|
||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||
}
|
||||
|
||||
.lg\:flex-row {
|
||||
flex-direction: row;
|
||||
}
|
||||
|
||||
.lg\:gap-24 {
|
||||
gap: 6rem;
|
||||
}
|
||||
|
||||
.lg\:p-\[12vh\] {
|
||||
padding: 12vh;
|
||||
}
|
||||
|
@ -3701,16 +3651,21 @@ body:has(#menu-controller:checked) {
|
|||
padding-right: 2rem;
|
||||
}
|
||||
|
||||
.lg\:py-16 {
|
||||
padding-top: 4rem;
|
||||
padding-bottom: 4rem;
|
||||
}
|
||||
|
||||
.lg\:px-0 {
|
||||
padding-left: 0px;
|
||||
padding-right: 0px;
|
||||
}
|
||||
|
||||
.lg\:py-32 {
|
||||
padding-top: 8rem;
|
||||
padding-bottom: 8rem;
|
||||
}
|
||||
|
||||
.lg\:text-6xl {
|
||||
font-size: 3.75rem;
|
||||
line-height: 1;
|
||||
}
|
||||
|
||||
[dir="ltr"] .ltr\:lg\:pl-8 {
|
||||
padding-left: 2rem;
|
||||
}
|
||||
|
|
|
@ -351,12 +351,6 @@ body:has(#menu-controller:checked) {
|
|||
box-shadow: 5px 5px 20px 1px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.hero {
|
||||
background-repeat:no-repeat;
|
||||
background-size:cover;
|
||||
background-position:center;
|
||||
}
|
||||
|
||||
@screen sm {
|
||||
.thumbnail {
|
||||
min-width: 100%;
|
||||
|
|
|
@ -22,7 +22,8 @@ enableCodeCopy = true
|
|||
showScrollToTop = true
|
||||
|
||||
[homepage]
|
||||
layout = "profile" # valid options: page, profile, custom
|
||||
layout = "profile" # valid options: page, profile, hero, card, custom
|
||||
#homepageImage = "IMAGE.jpg" # used in: hero, and card
|
||||
showRecent = false
|
||||
showRecentItems = 5
|
||||
showMoreLink = false
|
||||
|
|
|
@ -1,20 +1,31 @@
|
|||
|
||||
|
||||
var layouts = [
|
||||
"hero",
|
||||
"profile",
|
||||
"card",
|
||||
"page"
|
||||
]
|
||||
|
||||
var currentLayout = 0
|
||||
|
||||
function switchHomeLayout() {
|
||||
const pageDiv = document.getElementById("page");
|
||||
const profileDiv = document.getElementById("profile");
|
||||
|
||||
//document.getElementById(
|
||||
|
||||
var old = currentLayout
|
||||
currentLayout = currentLayout == layouts.length - 1 ? 0 : currentLayout + 1
|
||||
|
||||
var oldDiv = document.getElementById(layouts[old])
|
||||
var currentDiv = document.getElementById(layouts[currentLayout])
|
||||
const layoutCode = document.querySelectorAll("code[id=layout]");
|
||||
if (profileDiv.style.display === "none") {
|
||||
profileDiv.style.display = "block";
|
||||
pageDiv.style.display = "none";
|
||||
layoutCode.forEach(function (el) {
|
||||
el.innerText = "profile";
|
||||
});
|
||||
} else {
|
||||
profileDiv.style.display = "none";
|
||||
pageDiv.style.display = "block";
|
||||
layoutCode.forEach(function (el) {
|
||||
el.innerText = "page";
|
||||
});
|
||||
}
|
||||
|
||||
currentDiv.style.display = "block";
|
||||
oldDiv.style.display = "none";
|
||||
layoutCode.forEach(function (el) {
|
||||
el.innerText = layouts[currentLayout];
|
||||
});
|
||||
|
||||
}
|
||||
|
||||
window.addEventListener("DOMContentLoaded", (event) => {
|
||||
|
|
|
@ -15,7 +15,7 @@ dateFormat = "2 January 2006"
|
|||
[author]
|
||||
name = "Blowfish"
|
||||
image = "img/blowfish_logo.png"
|
||||
#headline = "A powerful, lightweight theme for Hugo built with Tailwind CSS."
|
||||
headline = "A powerful, lightweight theme for Hugo built with Tailwind CSS."
|
||||
bio = "A powerful, lightweight theme for Hugo built with Tailwind CSS."
|
||||
links = [
|
||||
{ twitter = "https://twitter.com/burufugu" },
|
||||
|
|
|
@ -22,7 +22,8 @@ mainSections = ["docs"]
|
|||
showScrollToTop = true
|
||||
|
||||
[homepage]
|
||||
layout = "hero" # valid options: page, profile, custom
|
||||
layout = "custom" # valid options: page, profile, hero, card, custom
|
||||
homepageImage = "iceland.jpg" # used in: hero, and card
|
||||
showRecent = true
|
||||
showRecentItems = 5
|
||||
showMoreLink = true
|
||||
|
|
|
@ -3,10 +3,6 @@ title: "Welcome to Blowfish! :tada:"
|
|||
description: "This is a demo of the Blowfish theme for Hugo."
|
||||
---
|
||||
|
||||
{{< lead >}} A powerful, lightweight theme for Hugo built with Tailwind CSS. {{< /lead >}}
|
||||
|
||||
<div class="w-full md:w-auto thumbnail nozoom" style="background-image:url(iceland.jpg);"></div>
|
||||
|
||||
This is a demo site built entirely using Blowfish. It also contains a complete set of [theme documentation]({{< ref "docs" >}}). Blowfish is flexible and is great for both static page-based content (like this demo) or a traditional blog with a feed of recent posts.
|
||||
|
||||
<div class="flex px-4 py-2 mb-8 text-base rounded-md bg-primary-100 dark:bg-primary-900">
|
||||
|
|
BIN
exampleSite/content/docs/advanced-customisation/featured.png
Normal file
After Width: | Height: | Size: 610 KiB |
BIN
exampleSite/content/docs/configuration/featured.png
Normal file
After Width: | Height: | Size: 636 KiB |
|
@ -134,7 +134,8 @@ Many of the article defaults here can be overridden on a per article basis by sp
|
|||
|`footer.showThemeAttribution`|`true`|Whether or not to show the "powered by" theme attribution in the site footer. If you choose to disable this message, please consider attributing the theme somewhere else on your site (for example, on your about page).|
|
||||
|`footer.showAppearanceSwitcher`|`false`|Whether or not to show the appearance switcher in the site footer. The browser's local storage is used to persist the visitor's preference.|
|
||||
|`footer.showScrollToTop`|`true`|When set to `true` the scroll to top arrow is displayed.|
|
||||
|`homepage.layout`|`"page"`|The layout of the homepage. Valid values are `page`, `profile` or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details.|
|
||||
|`homepage.layout`|`"page"`|The layout of the homepage. Valid values are `page`, `profile`, `hero`, `card`, or `custom`. When set to `custom`, you must provide your own layout by creating a `/layouts/partials/home/custom.html` file. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details.|
|
||||
|`homepage.homepageImage`|_Not set_|Image to be used in `hero` and `card` layouts. Refer to the [Homepage Layout]({{< ref "homepage-layout" >}}) section for more details.|
|
||||
|`homepage.showRecent`|`false`|Whether or not to display the recent articles list on the homepage.|
|
||||
|`homepage.showRecentItems`|5|How many articles to display if showRecent is true. If variable is set to 0 or if it isn't defined the system will default to 5 articles.|
|
||||
|`homepage.showMoreLink`|'false'|Wether or not to display a show more link at the end of your posts that takes the user to a predefined place.|
|
||||
|
|
BIN
exampleSite/content/docs/content-examples/featured.png
Normal file
After Width: | Height: | Size: 634 KiB |
BIN
exampleSite/content/docs/firebase-views/featured.png
Normal file
After Width: | Height: | Size: 4.3 MiB |
BIN
exampleSite/content/docs/front-matter/featured.png
Normal file
After Width: | Height: | Size: 4.8 MiB |
BIN
exampleSite/content/docs/getting-started/featured.png
Normal file
After Width: | Height: | Size: 586 KiB |
BIN
exampleSite/content/docs/homepage-layout/featured.png
Normal file
After Width: | Height: | Size: 633 KiB |
BIN
exampleSite/content/docs/homepage-layout/home-card.png
Normal file
After Width: | Height: | Size: 3.5 MiB |
BIN
exampleSite/content/docs/homepage-layout/home-hero.png
Normal file
After Width: | Height: | Size: 4.2 MiB |
BIN
exampleSite/content/docs/homepage-layout/home-list.png
Normal file
After Width: | Height: | Size: 1.4 MiB |
Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 2 MiB |
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.6 MiB |
|
@ -15,7 +15,7 @@ The layout of the homepage is controlled by the `homepage.layout` setting in the
|
|||
|
||||
The default layout is the profile layout, which is great for personal websites and blogs. It puts the author's details front and centre by providing an image and links to social profiles.
|
||||
|
||||
![Screenshot of profile layout](home-profile.png)
|
||||
<img class="thumbnailshadow" src="home-profile.png"/>
|
||||
|
||||
The author information is provided in the languages configuration file. Refer to the [Getting Started]({{< ref "getting-started" >}}) and [Language Configuration]({{< ref "configuration##language-and-i18n" >}}) sections for parameter details.
|
||||
|
||||
|
@ -28,10 +28,26 @@ To enable the profile layout, set `homepage.layout = "profile"` in the `params.t
|
|||
|
||||
The page layout is simply a normal content page that displays your Markdown content. It's great for static websites and provides a lot of flexibility.
|
||||
|
||||
![Screenshot of homepage layout](home-page.png)
|
||||
<img class="thumbnailshadow" src="home-page.png"/>
|
||||
|
||||
To enable the page layout, set `homepage.layout = "page"` in the `params.toml` configuration file.
|
||||
|
||||
## Hero layout
|
||||
|
||||
The hero layout brings together ideas from the profile and card layouts. This one not only displays information on the author of the site but it also loads your markdown beneath it.
|
||||
|
||||
<img class="thumbnailshadow" src="home-hero.png"/>
|
||||
|
||||
To enable the profile layout, set `homepage.layout = "profile"` and `homepage.homepageImage` in the `params.toml` configuration file.
|
||||
|
||||
## Card layout
|
||||
|
||||
The card layout is an extension of the page layout. It provides the same level of flexivbility by also displaying your markdown content and adds a card image to display visual content.
|
||||
|
||||
<img class="thumbnailshadow" src="home-card.png"/>
|
||||
|
||||
To enable the profile layout, set `homepage.layout = "profile"` and `homepage.homepageImage` in the `params.toml` configuration file.
|
||||
|
||||
|
||||
## Custom layout
|
||||
|
||||
|
@ -49,7 +65,7 @@ As an example, the [homepage]({{< ref "/" >}}) on this site uses the custom layo
|
|||
|
||||
All homepage layouts have the option of displaying recent articles below the main page content. To enable this, simply set the `homepage.showRecent` setting to `true` in the `params.toml` configuration file.
|
||||
|
||||
![Profile layout with recent articles](home-profile-list.png)
|
||||
<img class="thumbnailshadow" src="home-list.png"/>
|
||||
|
||||
The articles listed in this section are derived from the `mainSections` setting which allows for whatever content types you are using on your website. For instance, if you had content sections for _posts_ and _projects_ you could set this setting to `["posts", "projects"]` and all the articles in these two sections would be used to populate the recent list. The theme expects this setting to be an array so if you only use one section for all your content, you should set this accordingly: `["blog"]`.
|
||||
|
||||
|
@ -57,4 +73,4 @@ The articles listed in this section are derived from the `mainSections` setting
|
|||
|
||||
Blowfish was built so it would be easy to add visual support to your articles. If your familiar with Hugo article strucutre, you just need to place an image file (almost all formats are supported bue we recommend `.png` or `.jpg`) that starts with `feature*` inside your article folder. And that's it, Blowfish will then able to both use the image as a thumbnail within your website as well as for <a target="_blank" href="https://oembed.com/">oEmbed</a> cards across social platforms.
|
||||
|
||||
[Here]({{< ref "thumbnails" >}}) is also a guide with more info and a [sample]({{< ref "thumbnail_sample" >}}) if you want to see how you can do it.
|
||||
[Here]({{< ref "thumbnails" >}}) is a guide with more info and a [sample]({{< ref "thumbnail_sample" >}}) if you want to see an example.
|
BIN
exampleSite/content/docs/hosting-deployment/featured.png
Normal file
After Width: | Height: | Size: 4.6 MiB |
BIN
exampleSite/content/docs/installation/featured.png
Normal file
After Width: | Height: | Size: 620 KiB |
BIN
exampleSite/content/docs/partials/featured.png
Normal file
After Width: | Height: | Size: 659 KiB |
BIN
exampleSite/content/docs/shortcodes/featured.png
Normal file
After Width: | Height: | Size: 4.6 MiB |
BIN
exampleSite/content/docs/thumbnails/featured.png
Normal file
After Width: | Height: | Size: 4.8 MiB |
BIN
exampleSite/content/docs/welcome/featured.png
Normal file
After Width: | Height: | Size: 6.6 MiB |
Before Width: | Height: | Size: 1.9 MiB |
|
@ -1,7 +1,13 @@
|
|||
{{ $jsHome := resources.Get "js/home.js" | resources.Minify | resources.Fingerprint "sha512" }}
|
||||
<div id="profile">
|
||||
<div id="hero" class="">
|
||||
{{ partial "partials/home/hero.html" . }}
|
||||
</div>
|
||||
<div id="profile" class="hidden h-full">
|
||||
{{ partial "partials/home/profile.html" . }}
|
||||
</div>
|
||||
<div id="card" class="hidden h-full">
|
||||
{{ partial "partials/home/card.html" . }}
|
||||
</div>
|
||||
<div id="page" class="hidden h-full">
|
||||
{{ partial "partials/home/page.html" . }}
|
||||
</div>
|
||||
|
|
After Width: | Height: | Size: 570 KiB |
After Width: | Height: | Size: 998 KiB |
After Width: | Height: | Size: 41 KiB |
After Width: | Height: | Size: 195 KiB |
After Width: | Height: | Size: 457 KiB |
After Width: | Height: | Size: 762 KiB |
After Width: | Height: | Size: 42 KiB |
After Width: | Height: | Size: 192 KiB |
After Width: | Height: | Size: 457 KiB |
After Width: | Height: | Size: 808 KiB |
After Width: | Height: | Size: 28 KiB |
After Width: | Height: | Size: 173 KiB |
BIN
images/home-card.png
Normal file
After Width: | Height: | Size: 3.5 MiB |
BIN
images/home-hero.png
Normal file
After Width: | Height: | Size: 4.2 MiB |
Before Width: | Height: | Size: 3.3 MiB After Width: | Height: | Size: 1.3 MiB |
Before Width: | Height: | Size: 2 MiB |
Before Width: | Height: | Size: 1.4 MiB After Width: | Height: | Size: 1.6 MiB |
Before Width: | Height: | Size: 1.3 MiB After Width: | Height: | Size: 1.4 MiB |
26
layouts/partials/home/card.html
Normal file
|
@ -0,0 +1,26 @@
|
|||
<div class="relative pt-16 pb-32">
|
||||
<div aria-hidden="true" class="absolute inset-x-0 top-0 h-48 bg-gradient-to-b from-gray-100"></div>
|
||||
<div class="relative">
|
||||
<div class="lg:mx-auto lg:grid lg:max-w-7xl lg:grid-flow-col-dense lg:grid-cols-2 lg:gap-24 lg:px-8">
|
||||
<div class="mx-auto max-w-xl px-4 sm:px-6 lg:mx-0 lg:max-w-none lg:py-16 lg:px-0">
|
||||
<article class="max-w-full prose dark:prose-invert">
|
||||
{{ with .Title }}
|
||||
<header>
|
||||
<h1>{{ . | emojify }}</h1>
|
||||
</header>
|
||||
{{ end }}
|
||||
<section>{{ .Content | emojify }}</section>
|
||||
</article>
|
||||
</div>
|
||||
<div class="mt-6 sm:mt-16 lg:mt-0">
|
||||
<div class="-mr-48 pl-4 sm:pl-6 md:-mr-16 lg:relative lg:m-0 lg:h-full lg:px-0">
|
||||
<img class="w-full rounded-xl shadow-xl lg:absolute lg:left-0 lg:h-full lg:w-auto lg:max-w-none"
|
||||
src="{{ .Site.Params.homepage.homepageImage }}">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<section>
|
||||
{{ partial "recent-articles.html" . }}
|
||||
</section>
|
|
@ -4,10 +4,9 @@
|
|||
<div class="mx-auto max-w-7xl p-0">
|
||||
<div class="relative shadow-xl sm:overflow-hidden rounded-2xl">
|
||||
<div class="absolute inset-0">
|
||||
<img class="h-full w-full object-cover p-0 nozoom"
|
||||
src="https://images.unsplash.com/photo-1521737852567-6949f3f9f2b5?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=2830&q=80&sat=-100"
|
||||
alt="People working on laptops">
|
||||
<div class="absolute inset-0 bg-gradient-to-r from-primary-800 to-secondary-700 mix-blend-multiply">
|
||||
<img class="h-full w-full object-cover m-0 nozoom" src="{{ .Site.Params.homepage.homepageImage }}">
|
||||
<div
|
||||
class="absolute inset-0 bg-gradient-to-r from-primary-500 to-secondary-700 dark:from-primary-600 dark:to-secondary-800 mix-blend-multiply">
|
||||
</div>
|
||||
</div>
|
||||
<div class="relative px-4 py-16 sm:px-6 sm:py-24 lg:py-32 lg:px-8 flex flex-col items-center">
|
||||
|
@ -19,24 +18,28 @@
|
|||
alt="{{ $.Site.Author.name | default " Author" }}" src="{{ $authorImage.RelPermalink }}" />
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<h1 class="text-4xl font-extrabold">
|
||||
<h1 class="mb-2 text-4xl font-extrabold text-neutral-200">
|
||||
{{ .Site.Author.name | default .Site.Title }}
|
||||
</h1>
|
||||
{{ with .Site.Author.headline }}
|
||||
<h2 class="text-xl text-neutral-500 dark:text-neutral-400">
|
||||
<h2 class="mt-0 mb-0 text-xl text-neutral-300">
|
||||
{{ . | markdownify | emojify }}
|
||||
</h2>
|
||||
{{ end }}
|
||||
<div class="mt-1 text-2xl">
|
||||
{{ partialCached "author-links.html" . }}
|
||||
<div class="mt-1 mb-10 text-2xl">
|
||||
{{ with .Site.Author.links }}
|
||||
<div class="flex flex-wrap">
|
||||
{{ range $links := . }}
|
||||
{{ range $name, $url := $links }}
|
||||
<a class="px-1 hover:text-primary-400 text-primary-300" href="{{ $url }}" target="_blank"
|
||||
aria-label="{{ $name | title }}" rel="me noopener noreferrer">{{ partial
|
||||
"icon.html" $name }}</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ with .Title }}
|
||||
<header>
|
||||
<h1>{{ . | emojify }}</h1>
|
||||
</header>
|
||||
{{ end }}
|
||||
|
||||
<section class="prose dark:prose-invert">{{ .Content | emojify }}</section>
|
||||
<section class="prose text-neutral-200">{{ .Content | emojify }}</section>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
@ -44,49 +47,4 @@
|
|||
</article>
|
||||
<section>
|
||||
{{ partial "recent-articles.html" . }}
|
||||
</section>
|
||||
|
||||
<!--article class="max-w-full prose dark:prose-invert rounded-xl hero"
|
||||
style="background-image:url(https://cdn.britannica.com/06/171306-050-C88DD752/Aurora-borealis-peninsula-Snaefellsnes-Iceland-March-2013.jpg)">
|
||||
|
||||
<div class="absolute inset-0 bg-gradient-to-r from-primary-800 to-secondary-700 mix-blend-multiply"></div>
|
||||
|
||||
<div class="absolute inset-0">
|
||||
<img class="h-full w-full object-cover"
|
||||
src="https://images.unsplash.com/photo-1521737852567-6949f3f9f2b5?ixid=MXwxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHw%3D&ixlib=rb-1.2.1&auto=format&fit=crop&w=2830&q=80&sat=-100"
|
||||
alt="People working on laptops">
|
||||
<div class="absolute inset-0 bg-gradient-to-r from-purple-800 to-indigo-700 mix-blend-multiply"></div>
|
||||
</div>
|
||||
|
||||
<header class="flex flex-col items-center mb-3 p-32">
|
||||
{{ with .Site.Author.image }}
|
||||
{{ $authorImage := resources.Get . }}
|
||||
{{ if $authorImage }}
|
||||
{{ $authorImage := $authorImage.Fill "288x288" }}
|
||||
<img class="mb-2 rounded-full h-36 w-36" width="144" height="144" alt="{{ $.Site.Author.name | default " Author"
|
||||
}}" src="{{ $authorImage.RelPermalink }}" />
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
<h1 class="text-4xl font-extrabold">
|
||||
{{ .Site.Author.name | default .Site.Title }}
|
||||
</h1>
|
||||
{{ with .Site.Author.headline }}
|
||||
<h2 class="text-xl text-neutral-500 dark:text-neutral-400">
|
||||
{{ . | markdownify | emojify }}
|
||||
</h2>
|
||||
{{ end }}
|
||||
<div class="mt-1 text-2xl">
|
||||
{{ partialCached "author-links.html" . }}
|
||||
</div>
|
||||
{{ with .Title }}
|
||||
<header>
|
||||
<h1>{{ . | emojify }}</h1>
|
||||
</header>
|
||||
{{ end }}
|
||||
|
||||
<section class="prose dark:prose-invert">{{ .Content | emojify }}</section>
|
||||
</header>
|
||||
</article>
|
||||
<section>
|
||||
{{ partial "recent-articles.html" . }}
|
||||
</section-->
|
||||
</section>
|