Converti chill-theme en dossier classique
This commit is contained in:
@@ -0,0 +1,118 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="{{ .Site.LanguageCode | default "en" }}" class="h-full">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
|
||||
<!-- Google Tag Manager -->
|
||||
{{ partial "google-tag-manager" . }}
|
||||
|
||||
<!-- Google Analytics -->
|
||||
{{ partial "google-analytics" . }}
|
||||
|
||||
<!-- Title -->
|
||||
<title>{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} | {{ .Site.Title }}{{ end }}</title>
|
||||
|
||||
<!-- Meta Tags -->
|
||||
<meta name="description" content="{{ with .Description }}{{ . }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}">
|
||||
<meta name="author" content="{{ .Site.Params.author | default .Site.Title }}">
|
||||
<meta name="robots" content="{{ with .Params.robots }}{{ . }}{{ else }}index, follow{{ end }}">
|
||||
|
||||
<!-- Open Graph -->
|
||||
<meta property="og:title" content="{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} | {{ .Site.Title }}{{ end }}">
|
||||
<meta property="og:description" content="{{ with .Description }}{{ . }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}">
|
||||
<meta property="og:type" content="{{ if .IsHome }}website{{ else }}article{{ end }}">
|
||||
<meta property="og:url" content="{{ .Permalink }}">
|
||||
<meta property="og:site_name" content="{{ .Site.Title }}">
|
||||
{{ with .Params.image }}
|
||||
<meta property="og:image" content="{{ . | absURL }}">
|
||||
{{ else }}
|
||||
{{ with .Site.Params.image }}
|
||||
<meta property="og:image" content="{{ . | absURL }}">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Twitter Card -->
|
||||
<meta name="twitter:card" content="summary_large_image">
|
||||
<meta name="twitter:title" content="{{ if .IsHome }}{{ .Site.Title }}{{ else }}{{ .Title }} | {{ .Site.Title }}{{ end }}">
|
||||
<meta name="twitter:description" content="{{ with .Description }}{{ . }}{{ else }}{{ with .Site.Params.description }}{{ . }}{{ end }}{{ end }}">
|
||||
{{ with .Site.Params.twitter }}
|
||||
<meta name="twitter:site" content="@{{ . }}">
|
||||
{{ end }}
|
||||
{{ with .Params.image }}
|
||||
<meta name="twitter:image" content="{{ . | absURL }}">
|
||||
{{ else }}
|
||||
{{ with .Site.Params.image }}
|
||||
<meta property="twitter:image" content="{{ . | absURL }}">
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Favicon -->
|
||||
<link rel="icon" type="image/x-icon" href="{{ "images/favicon.ico" | relURL }}">
|
||||
|
||||
<!-- Canonical URL -->
|
||||
<link rel="canonical" href="{{ .Permalink }}">
|
||||
|
||||
<!-- Fonts -->
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=Plus+Jakarta+Sans:wght@600;700;800&display=swap" rel="stylesheet">
|
||||
|
||||
<!-- Main CSS -->
|
||||
<link rel="stylesheet" href="{{ "css/style.css" | relURL }}">
|
||||
|
||||
<!-- Additional Meta Tags from Front Matter -->
|
||||
{{ with .Params.customMeta }}
|
||||
{{ range . }}
|
||||
<meta {{ range $key, $value := . }} {{ $key }}="{{ $value }}"{{ end }}>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<!-- Custom Head Content -->
|
||||
{{ partial "custom-head" . }}
|
||||
</head>
|
||||
<body class="min-h-screen flex flex-col">
|
||||
<!-- Google Tag Manager (noscript) -->
|
||||
{{ if and hugo.IsProduction .Site.Params.googleTagManager }}
|
||||
<noscript><iframe src="https://www.googletagmanager.com/ns.html?id={{ .Site.Params.googleTagManager }}"
|
||||
height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
|
||||
{{ end }}
|
||||
<!-- End Google Tag Manager (noscript) -->
|
||||
<!-- Header -->
|
||||
<div class="fixed top-0 left-0 right-0 z-50">
|
||||
{{ partial "header" . }}
|
||||
</div>
|
||||
|
||||
<!-- Main Content -->
|
||||
<div class="pt-20">
|
||||
{{ block "main" . }}{{ end }}
|
||||
</div>
|
||||
|
||||
<!-- Footer -->
|
||||
{{ partial "footer" . }}
|
||||
|
||||
<!-- Language Preference Script -->
|
||||
{{ if .Site.IsMultiLingual }}
|
||||
{{ if .Site.Params.visitorapi_pid }}
|
||||
<script>
|
||||
// Inject VisitorAPI project ID from Hugo config
|
||||
window.HUGO_VISITOR_API_PID = "{{ .Site.Params.visitorapi_pid }}";
|
||||
</script>
|
||||
{{ end }}
|
||||
<script src="{{ "js/language-preference.js" | relURL }}"></script>
|
||||
{{ end }}
|
||||
|
||||
<!-- Mobile Menu Script -->
|
||||
<script>
|
||||
const mobileMenuButton = document.getElementById('mobile-menu-button');
|
||||
if (mobileMenuButton) {
|
||||
mobileMenuButton.addEventListener('click', function() {
|
||||
const mobileMenu = document.getElementById('mobile-menu');
|
||||
if (mobileMenu) {
|
||||
mobileMenu.classList.toggle('hidden');
|
||||
}
|
||||
});
|
||||
}
|
||||
</script>
|
||||
</body>
|
||||
</html>
|
||||
@@ -0,0 +1,115 @@
|
||||
{{ define "main" }}
|
||||
<div class="bg-gray-50">
|
||||
<!-- Hero Section -->
|
||||
<div class="bg-gradient-to-r from-primary-600 to-primary-700">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-24">
|
||||
<div class="text-center">
|
||||
<h1 class="text-4xl font-bold text-white mb-6">{{ .Title }}</h1>
|
||||
<p class="text-xl text-white max-w-2xl mx-auto leading-relaxed">{{ .Description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Team Culture Section -->
|
||||
{{ with .Params.culture_section }}
|
||||
<div class="bg-white py-16">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="bg-gray-50 rounded-xl shadow-sm p-8 lg:p-12">
|
||||
<div class="grid lg:grid-cols-2 gap-12 items-center">
|
||||
<div>
|
||||
<h2 class="text-3xl font-bold text-gray-900 mb-6">{{ .title }}</h2>
|
||||
<div class="space-y-6">
|
||||
{{ range .values }}
|
||||
<div class="flex items-start">
|
||||
<div class="flex-shrink-0">
|
||||
<div class="flex items-center justify-center h-12 w-12 rounded-md bg-primary-600 text-white">
|
||||
{{ .icon }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="ml-4">
|
||||
<h3 class="text-xl font-semibold text-gray-900">{{ .title }}</h3>
|
||||
<p class="mt-2 text-gray-600">{{ .description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
<div class="relative">
|
||||
<img src="{{ .image }}" alt="{{ .image_alt }}" class="rounded-lg shadow-xl">
|
||||
<div class="absolute -bottom-4 -right-4 bg-white rounded-lg shadow-lg px-6 py-4">
|
||||
<p class="text-gray-900 font-semibold">{{ .image_caption }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<!-- Benefits Section -->
|
||||
{{ with .Params.benefits_section }}
|
||||
<div class="bg-white py-16">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<h2 class="text-3xl font-bold text-gray-900 text-center mb-12">{{ .title }}</h2>
|
||||
<div class="grid md:grid-cols-3 gap-8">
|
||||
{{ range .benefits }}
|
||||
<div class="bg-gray-50 rounded-lg p-6 hover:shadow-md transition-shadow duration-200">
|
||||
<div class="text-2xl mb-4">{{ .icon }}</div>
|
||||
<h3 class="text-xl font-semibold text-gray-900 mb-2">{{ .title }}</h3>
|
||||
<p class="text-gray-600">{{ .description }}</p>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<!-- Open Positions Section -->
|
||||
{{ with .Params.positions_section }}
|
||||
<div class="bg-white py-16">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="bg-gray-50 rounded-xl shadow-sm p-8 lg:p-12">
|
||||
<div class="text-center mb-12">
|
||||
<h2 class="text-3xl font-bold text-gray-900 mb-4">{{ .title }}</h2>
|
||||
<p class="text-lg text-gray-600 max-w-2xl mx-auto">Join our team and help shape the future of SaaS. We're always looking for talented individuals who share our passion for innovation.</p>
|
||||
</div>
|
||||
<div class="grid gap-6 md:grid-cols-2 lg:grid-cols-3">
|
||||
{{ range where $.Site.RegularPages "Section" "jobs" }}
|
||||
<a href="{{ .RelPermalink }}" class="group">
|
||||
<div class="h-full bg-white rounded-lg shadow-sm group-hover:shadow-md transition-all duration-200 overflow-hidden border border-gray-100 group-hover:border-primary-100">
|
||||
<div class="p-6">
|
||||
<div class="flex items-center justify-between mb-4">
|
||||
<h3 class="text-xl font-semibold text-gray-900 group-hover:text-primary-600 transition-colors duration-200">{{ .Title }}</h3>
|
||||
<span class="flex items-center justify-center w-8 h-8 rounded-full bg-primary-50 text-primary-600 group-hover:bg-primary-100 transition-colors duration-200">
|
||||
→
|
||||
</span>
|
||||
</div>
|
||||
<div class="flex items-center text-gray-600 text-sm mb-4 space-x-4">
|
||||
{{ with .Params.location }}
|
||||
<span class="flex items-center">
|
||||
<span class="mr-2">📍</span>
|
||||
{{ . }}
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ with .Params.type }}
|
||||
<span class="flex items-center">
|
||||
<span class="mr-2">💼</span>
|
||||
{{ . }}
|
||||
</span>
|
||||
{{ end }}
|
||||
</div>
|
||||
<p class="text-gray-600 mb-4 line-clamp-2">{{ .Description | default .Summary }}</p>
|
||||
<div class="text-primary-600 font-medium group-hover:text-primary-700 transition-colors duration-200">
|
||||
{{ $.Params.positions_section.view_position_text }} →
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,6 @@
|
||||
{{ define "main" }}
|
||||
<article class="post">
|
||||
<!-- Hero section will be rendered by the hero shortcode -->
|
||||
{{ .Content }}
|
||||
</article>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,76 @@
|
||||
{{ define "main" }}
|
||||
<article class="feature-page" style="--badge-color: {{ .Params.badgeColor }}">
|
||||
<!-- Hero Section -->
|
||||
<div class="relative isolate overflow-hidden">
|
||||
<style>
|
||||
.badge {
|
||||
background-color: color-mix(in srgb, var(--badge-color) 10%, transparent);
|
||||
color: var(--badge-color);
|
||||
}
|
||||
.gradient-bg {
|
||||
background-image: linear-gradient(180deg, color-mix(in srgb, var(--badge-color) 5%, white), white);
|
||||
}
|
||||
</style>
|
||||
<div class="absolute inset-x-0 top-0 h-96 gradient-bg opacity-75"></div>
|
||||
<div class="relative pt-24 pb-16 sm:pt-32">
|
||||
<div class="mx-auto max-w-7xl px-6 lg:px-8">
|
||||
<div class="mx-auto max-w-2xl text-center">
|
||||
{{ with .Params.badge }}
|
||||
<div class="mb-6">
|
||||
<span class="badge inline-flex items-center rounded-full px-4 py-1.5 text-sm font-medium">
|
||||
{{ . }}
|
||||
</span>
|
||||
</div>
|
||||
{{ end }}
|
||||
<h1 class="text-4xl font-bold tracking-tight text-gray-900 sm:text-6xl">{{ .Title }}</h1>
|
||||
<p class="mt-6 text-lg leading-8 text-gray-600">{{ .Description }}</p>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Main Content -->
|
||||
<div class="mx-auto max-w-7xl px-6 lg:px-8">
|
||||
<!-- Key Features Grid -->
|
||||
{{ if .Params.features }}
|
||||
<div class="mx-auto mt-16 max-w-2xl sm:mt-20 lg:mt-24 lg:max-w-none">
|
||||
<div class="grid max-w-xl grid-cols-1 gap-x-8 gap-y-16 lg:max-w-none lg:grid-cols-2 xl:grid-cols-4">
|
||||
{{ range .Params.features }}
|
||||
<div class="flex flex-col bg-white rounded-2xl shadow-sm ring-1 ring-gray-200 p-8">
|
||||
<dt class="text-lg font-semibold leading-7 text-gray-900">
|
||||
{{ .title }}
|
||||
</dt>
|
||||
<dd class="mt-4 flex flex-auto flex-col text-base leading-7 text-gray-600">
|
||||
<p class="flex-auto">{{ .description }}</p>
|
||||
</dd>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<!-- Content Section -->
|
||||
<div class="prose prose-lg mx-auto mt-16 pb-24">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
|
||||
<!-- Demo Section -->
|
||||
{{ if .Params.demo }}
|
||||
<div class="bg-gray-50 -mx-6 px-6 py-24 sm:py-32">
|
||||
<div class="mx-auto max-w-2xl lg:text-center">
|
||||
<h2 class="text-3xl font-bold tracking-tight text-gray-900 sm:text-4xl">{{ i18n "seeItInAction" }}</h2>
|
||||
<p class="mt-6 text-lg leading-8 text-gray-600">{{ .Params.demo.description }}</p>
|
||||
</div>
|
||||
<div class="mt-16 flex justify-center">
|
||||
<div class="relative rounded-xl bg-white p-8 shadow-2xl ring-1 ring-gray-200">
|
||||
<img src="{{ .Params.demo.image }}" alt="Demo" class="rounded-lg">
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
<!-- Global CTA -->
|
||||
{{ partial "components/cta.html" . }}
|
||||
</article>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,51 @@
|
||||
{{ define "main" }}
|
||||
<div class="bg-gray-50 min-h-screen">
|
||||
<!-- Job Header -->
|
||||
<div class="bg-gradient-to-r from-primary-600 to-primary-700">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8 py-16">
|
||||
<div class="text-center">
|
||||
<h1 class="text-3xl font-bold text-white mb-6">{{ .Title }}</h1>
|
||||
<div class="flex items-center justify-center text-white space-x-8 text-lg">
|
||||
{{ with .Params.location }}
|
||||
<span class="flex items-center">
|
||||
<span class="mr-2">📍</span>
|
||||
{{ . }}
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ with .Params.type }}
|
||||
<span class="flex items-center">
|
||||
<span class="mr-2">💼</span>
|
||||
{{ . }}
|
||||
</span>
|
||||
{{ end }}
|
||||
{{ with .Params.salary }}
|
||||
<span class="flex items-center">
|
||||
<span class="mr-2">💰</span>
|
||||
{{ . }}
|
||||
</span>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<!-- Job Content -->
|
||||
<div class="bg-white py-16">
|
||||
<div class="max-w-7xl mx-auto px-4 sm:px-6 lg:px-8">
|
||||
<div class="bg-gray-50 rounded-xl shadow-sm p-8 lg:p-12">
|
||||
<div class="prose prose-lg max-w-none">
|
||||
<div class="text-gray-600 text-lg mb-8">{{ .Description }}</div>
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="mt-8 text-center">
|
||||
<a href="/careers" class="inline-flex items-center text-primary-600 hover:text-primary-700">
|
||||
<span class="mr-2">←</span>
|
||||
View All Positions
|
||||
</a>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,70 @@
|
||||
{{ define "main" }}
|
||||
<div class="container mx-auto px-4 py-12">
|
||||
<div class="max-w-7xl mx-auto">
|
||||
{{ if .IsHome }}
|
||||
<h1 class="text-4xl font-bold mb-8">{{ .Site.Title }}</h1>
|
||||
{{ else if eq .Section "blog" }}
|
||||
<h1 class="text-4xl font-bold mb-8">{{ .Site.Params.blog.title }}</h1>
|
||||
{{ with .Site.Params.blog.subtitle }}
|
||||
<div class="text-xl text-gray-600 mb-8">{{ . }}</div>
|
||||
{{ end }}
|
||||
{{ else }}
|
||||
<h1 class="text-4xl font-bold mb-8">{{ .Title }}</h1>
|
||||
{{ with .Description }}
|
||||
<div class="text-xl text-gray-600 mb-8">{{ . }}</div>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
{{ $paginator := .Paginate .Pages }}
|
||||
{{ range $paginator.Pages }}
|
||||
{{ partial "post-card.html" . }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{ $paginator := .Paginate .Pages }}
|
||||
{{ if gt $paginator.TotalPages 1 }}
|
||||
<nav class="mt-12 flex justify-between items-center">
|
||||
{{ if $paginator.HasPrev }}
|
||||
<a href="{{ $paginator.Prev.URL }}"
|
||||
class="inline-flex items-center px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors duration-200">
|
||||
<svg class="w-5 h-5 mr-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path>
|
||||
</svg>
|
||||
{{ i18n "previous" }}
|
||||
</a>
|
||||
{{ else }}
|
||||
<div></div>
|
||||
{{ end }}
|
||||
|
||||
<div class="flex space-x-2">
|
||||
{{ range $paginator.Pagers }}
|
||||
{{ if eq . $paginator }}
|
||||
<span class="px-4 py-2 bg-primary-600 text-white rounded-lg">
|
||||
{{ .PageNumber }}
|
||||
</span>
|
||||
{{ else }}
|
||||
<a href="{{ .URL }}"
|
||||
class="px-4 py-2 bg-gray-100 text-gray-700 rounded-lg hover:bg-gray-200 transition-colors duration-200">
|
||||
{{ .PageNumber }}
|
||||
</a>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</div>
|
||||
|
||||
{{ if $paginator.HasNext }}
|
||||
<a href="{{ $paginator.Next.URL }}"
|
||||
class="inline-flex items-center px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors duration-200">
|
||||
{{ i18n "next" }}
|
||||
<svg class="w-5 h-5 ml-2" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
|
||||
</svg>
|
||||
</a>
|
||||
{{ else }}
|
||||
<div></div>
|
||||
{{ end }}
|
||||
</nav>
|
||||
{{ end }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,12 @@
|
||||
{{ define "main" }}
|
||||
<div class="container mx-auto px-4 py-8 mb-12 flex-1">
|
||||
<h1 class="text-4xl font-bold text-center mb-5">{{ .Title }}</h1>
|
||||
{{ with .Params.description }}
|
||||
<p class="text-center font-light text-gray-500 sm:text-xl">{{ . }}</p>
|
||||
{{ end }}
|
||||
|
||||
<div class="!max-w-none">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,8 @@
|
||||
{{ define "main" }}
|
||||
<div class="container mx-auto px-4 py-8 mb-12 flex-1">
|
||||
<h1 class="text-4xl font-bold text-center mb-12">{{ .Title }}</h1>
|
||||
<div class="prose prose-lg !max-w-none">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
@@ -0,0 +1,86 @@
|
||||
{{ define "main" }}
|
||||
<div class="container mx-auto px-4 py-12">
|
||||
<!-- Two Column Layout for Content and Sidebar -->
|
||||
<div class="flex flex-col lg:flex-row gap-8 mb-12">
|
||||
<!-- Main Content -->
|
||||
<article class="flex-1">
|
||||
<header class="mb-8">
|
||||
{{ with .Params.categories }}
|
||||
<div class="mb-4">
|
||||
{{ range . }}
|
||||
<a href="{{ "/categories/" | relLangURL }}{{ . | urlize }}"
|
||||
class="inline-block px-3 py-1 text-sm font-medium text-primary-600 bg-primary-50 rounded-full hover:bg-primary-100 mr-2">
|
||||
{{ . }}
|
||||
</a>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<h1 class="text-4xl font-bold mb-4">{{ .Title }}</h1>
|
||||
|
||||
{{ partial "post-meta.html" . }}
|
||||
</header>
|
||||
|
||||
{{ with .Params.featured_image }}
|
||||
<div class="mb-8">
|
||||
<img src="{{ . }}"
|
||||
alt="{{ $.Title }}"
|
||||
class="w-full h-auto rounded-lg"
|
||||
loading="lazy">
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
<div class="prose prose-lg max-w-none">
|
||||
{{ .Content }}
|
||||
</div>
|
||||
</article>
|
||||
|
||||
<!-- Sidebar -->
|
||||
<aside class="lg:w-80 xl:w-96">
|
||||
{{ partial "sidebar.html" . }}
|
||||
</aside>
|
||||
</div>
|
||||
|
||||
<!-- Full-width Navigation Section -->
|
||||
<nav class="border-t border-gray-200 mt-12 pt-8">
|
||||
<div class="flex justify-between items-center">
|
||||
{{ with .PrevInSection }}
|
||||
<a href="{{ .RelPermalink }}"
|
||||
class="group flex items-center">
|
||||
<svg class="w-5 h-5 mr-2 text-gray-600 group-hover:text-primary-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M10 19l-7-7m0 0l7-7m-7 7h18"></path>
|
||||
</svg>
|
||||
<div>
|
||||
<div class="text-sm text-gray-600">{{ i18n "previousPost" $ }}</div>
|
||||
<div class="font-medium group-hover:text-primary-600">{{ .Title }}</div>
|
||||
</div>
|
||||
</a>
|
||||
{{ else }}
|
||||
<div></div>
|
||||
{{ end }}
|
||||
|
||||
{{ with .NextInSection }}
|
||||
<a href="{{ .RelPermalink }}"
|
||||
class="group flex items-center text-right">
|
||||
<div>
|
||||
<div class="text-sm text-gray-600">{{ i18n "nextPost" $ }}</div>
|
||||
<div class="font-medium group-hover:text-primary-600">{{ .Title }}</div>
|
||||
</div>
|
||||
<svg class="w-5 h-5 ml-2 text-gray-600 group-hover:text-primary-600" fill="none" stroke="currentColor" viewBox="0 0 24 24">
|
||||
<path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M14 5l7 7m0 0l-7 7m7-7H3"></path>
|
||||
</svg>
|
||||
</a>
|
||||
{{ else }}
|
||||
<div></div>
|
||||
{{ end }}
|
||||
</div>
|
||||
</nav>
|
||||
|
||||
<!-- Full-width CTA Section -->
|
||||
{{ if and .Site.Params.blog.cta.enable .Site.Params.cta.enable }}
|
||||
<div class="mt-16">
|
||||
{{ partial "components/cta.html" . }}
|
||||
</div>
|
||||
{{ end }}
|
||||
</div>
|
||||
{{ end }}
|
||||
Reference in New Issue
Block a user