Refactor theme colors and styles; remove unused favicon; update translations and layouts
- Deleted unused favicon file. - Updated Tailwind CSS configuration to redefine primary and secondary colors. - Adjusted button styles in CSS to use new color definitions. - Removed English translations and added French translations for various UI elements. - Created new layouts for features and updated existing layouts to reflect new design. - Modified header and CTA components to use updated color scheme. - Cleaned up pricing table shortcode to align with new styles. - Updated theme metadata to reflect new author and project details.
This commit is contained in:
@@ -40,15 +40,15 @@
|
||||
}
|
||||
|
||||
.btn-primary {
|
||||
@apply btn bg-primary-600 text-white hover:bg-primary-700 hover:scale-105;
|
||||
@apply btn bg-primary-400 text-white hover:bg-primary-400 hover:scale-105;
|
||||
}
|
||||
|
||||
.btn-secondary {
|
||||
@apply btn bg-secondary-600 text-white hover:bg-secondary-700 hover:scale-105;
|
||||
@apply btn bg-secondary-400 text-white hover:bg-secondary-700 hover:scale-105;
|
||||
}
|
||||
|
||||
.btn-outline {
|
||||
@apply btn border-2 border-primary-600 text-primary-600 hover:scale-105;
|
||||
@apply btn border-2 border-primary-400 text-primary-400 hover:scale-105;
|
||||
}
|
||||
|
||||
.container {
|
||||
@@ -146,7 +146,7 @@
|
||||
}
|
||||
|
||||
.prose a {
|
||||
@apply text-primary-600 hover:text-primary-700 no-underline;
|
||||
@apply text-primary-600 hover:text-primary-400 no-underline;
|
||||
}
|
||||
|
||||
.prose ul, .prose ol {
|
||||
@@ -187,12 +187,12 @@
|
||||
}
|
||||
.features-carousel__nav { margin-bottom: 1rem; text-align: center; }
|
||||
.features-carousel__nav button {
|
||||
@apply btn text-gray-900 hover:text-primary-700;
|
||||
@apply btn text-gray-900 hover:text-primary-400;
|
||||
max-height:40px;
|
||||
}
|
||||
|
||||
.features-carousel__nav button.active {
|
||||
@apply btn bg-primary-600 text-white hover:bg-primary-700 hover:scale-105;
|
||||
@apply btn bg-primary-400 text-white hover:bg-primary-400 hover:scale-105;
|
||||
}
|
||||
|
||||
.features-carousel__slides { min-height: 150px; }
|
||||
|
||||
@@ -1,154 +0,0 @@
|
||||
# English translations for Hugo Saasify Theme
|
||||
# Copy this file to your site's i18n directory and customize as needed
|
||||
|
||||
# Common UI translations
|
||||
[readMore]
|
||||
other = "Read More"
|
||||
|
||||
[readTime]
|
||||
other = "min read"
|
||||
|
||||
[published]
|
||||
other = "Published"
|
||||
|
||||
[updated]
|
||||
other = "Updated"
|
||||
|
||||
[by]
|
||||
other = "by"
|
||||
|
||||
[shareOn]
|
||||
other = "Share on"
|
||||
|
||||
[relatedPosts]
|
||||
other = "Related Posts"
|
||||
|
||||
[categories]
|
||||
other = "Categories"
|
||||
|
||||
[tags]
|
||||
other = "Tags"
|
||||
|
||||
[allPosts]
|
||||
other = "All Posts"
|
||||
|
||||
[search]
|
||||
other = "Search"
|
||||
|
||||
[searchPlaceholder]
|
||||
other = "Search articles..."
|
||||
|
||||
[noResults]
|
||||
other = "No results found"
|
||||
|
||||
[backToHome]
|
||||
other = "Back to Home"
|
||||
|
||||
[404Title]
|
||||
other = "Page Not Found"
|
||||
|
||||
[404Message]
|
||||
other = "The page you are looking for doesn't exist or has been moved."
|
||||
|
||||
# Navigation
|
||||
[home]
|
||||
other = "Home"
|
||||
|
||||
[about]
|
||||
other = "About"
|
||||
|
||||
[contact]
|
||||
other = "Contact"
|
||||
|
||||
# Blog
|
||||
[latestPosts]
|
||||
other = "Latest Posts"
|
||||
|
||||
[recentArticles]
|
||||
other = "Recent Articles"
|
||||
|
||||
[popularTags]
|
||||
other = "Popular Tags"
|
||||
|
||||
[subscribeNewsletter]
|
||||
other = "Subscribe to Newsletter"
|
||||
|
||||
[subscribeDescription]
|
||||
other = "Get the latest posts delivered right to your inbox"
|
||||
|
||||
[emailPlaceholder]
|
||||
other = "Enter your email"
|
||||
|
||||
[subscribe]
|
||||
other = "Subscribe"
|
||||
|
||||
[subscribeDisclaimer]
|
||||
other = "We respect your privacy. Unsubscribe at any time."
|
||||
|
||||
# Footer
|
||||
[copyright]
|
||||
other = "© {{ .Year }} {{ .SiteName }}. All rights reserved."
|
||||
|
||||
[builtWith]
|
||||
other = "Built with"
|
||||
|
||||
[and]
|
||||
other = "and"
|
||||
|
||||
# Language switcher
|
||||
[language]
|
||||
other = "Language"
|
||||
|
||||
[switchLanguage]
|
||||
other = "Switch Language"
|
||||
|
||||
# Features
|
||||
[seeItInAction]
|
||||
other = "See it in action"
|
||||
|
||||
# Pricing
|
||||
[popular]
|
||||
other = "Popular"
|
||||
|
||||
[mostPopular]
|
||||
other = "Most Popular"
|
||||
|
||||
[perMonth]
|
||||
other = "/month"
|
||||
|
||||
# Documentation
|
||||
[documentation]
|
||||
other = "Documentation"
|
||||
|
||||
# Pagination
|
||||
[previous]
|
||||
other = "Previous"
|
||||
|
||||
[next]
|
||||
other = "Next"
|
||||
|
||||
# Homepage
|
||||
[trustedByCompanies]
|
||||
other = "Trusted by leading companies worldwide"
|
||||
|
||||
[lovedByTeams]
|
||||
other = "Loved by Teams Worldwide"
|
||||
|
||||
[testimonialsDescription]
|
||||
other = "See what our customers have to say about their experience with our platform."
|
||||
|
||||
# Blog Post
|
||||
[tableOfContents]
|
||||
other = "Table of Contents"
|
||||
|
||||
[minRead]
|
||||
other = "min read"
|
||||
|
||||
[previousPost]
|
||||
other = "Previous Post"
|
||||
|
||||
[nextPost]
|
||||
other = "Next Post"
|
||||
|
||||
[dateFormat]
|
||||
other = "January 2, 2006"
|
||||
|
||||
@@ -1,4 +1,116 @@
|
||||
[discoverFeature]
|
||||
other = "Découvrir"
|
||||
# Traductions françaises pour les shortcodes pricing
|
||||
# English translations for Hugo Saasify Theme
|
||||
# Copy this file to your site's i18n directory and customize as needed
|
||||
|
||||
# Common UI translations
|
||||
[readMore]
|
||||
other = "Lire la suite"
|
||||
|
||||
[readTime]
|
||||
other = "min de lecture"
|
||||
|
||||
[published]
|
||||
other = "Publié"
|
||||
|
||||
[updated]
|
||||
other = "Mis à jour"
|
||||
|
||||
[by]
|
||||
other = "par"
|
||||
|
||||
[shareOn]
|
||||
other = "Partager sur"
|
||||
|
||||
[relatedPosts]
|
||||
other = "Articles liés"
|
||||
|
||||
[categories]
|
||||
other = "Catégories"
|
||||
|
||||
[tags]
|
||||
other = "Étiquettes"
|
||||
|
||||
[allPosts]
|
||||
other = "Tous les articles"
|
||||
|
||||
[search]
|
||||
other = "Recherche"
|
||||
|
||||
[searchPlaceholder]
|
||||
other = "Rechercher des articles..."
|
||||
|
||||
[noResults]
|
||||
other = "Aucun résultat trouvé"
|
||||
|
||||
[backToHome]
|
||||
other = "Retour à l'accueil"
|
||||
|
||||
[404Title]
|
||||
other = "Page non trouvée"
|
||||
|
||||
[404Message]
|
||||
other = "La page que vous recherchez n'existe pas ou a été déplacée."
|
||||
|
||||
# Navigation
|
||||
[home]
|
||||
other = "Accueil"
|
||||
|
||||
[about]
|
||||
other = "À propos"
|
||||
|
||||
[contact]
|
||||
other = "Contact"
|
||||
|
||||
# Blog
|
||||
[latestPosts]
|
||||
other = "Derniers articles"
|
||||
|
||||
[recentArticles]
|
||||
other = "Articles récents"
|
||||
|
||||
[popularTags]
|
||||
other = "Étiquettes populaires"
|
||||
|
||||
[subscribeNewsletter]
|
||||
other = "S'abonner à la newsletter"
|
||||
|
||||
[subscribeDescription]
|
||||
other = "Recevez les derniers articles directement dans votre boîte mail"
|
||||
|
||||
[emailPlaceholder]
|
||||
other = "Entrez votre email"
|
||||
|
||||
[subscribe]
|
||||
other = "S'abonner"
|
||||
|
||||
[subscribeDisclaimer]
|
||||
other = "Nous respectons votre vie privée. Vous pouvez vous désabonner à tout moment."
|
||||
|
||||
# Footer
|
||||
[copyright]
|
||||
other = "© {{ .Year }} {{ .SiteName }}. Tous droits réservés."
|
||||
|
||||
[builtWith]
|
||||
other = "Construit avec"
|
||||
|
||||
[and]
|
||||
other = "et"
|
||||
|
||||
# Language switcher
|
||||
[language]
|
||||
other = "Langue"
|
||||
|
||||
[switchLanguage]
|
||||
other = "Changer de langue"
|
||||
|
||||
# Features
|
||||
[seeItInAction]
|
||||
other = "Voir en action"
|
||||
|
||||
# Pricing
|
||||
|
||||
|
||||
[popular]
|
||||
other = "Populaire"
|
||||
@@ -6,7 +118,6 @@ other = "Populaire"
|
||||
[mostPopular]
|
||||
other = "Le plus populaire"
|
||||
|
||||
|
||||
[perVATHour]
|
||||
other = "HT/heure"
|
||||
|
||||
@@ -17,4 +128,48 @@ other = "HT/jour"
|
||||
other = "HT/mois"
|
||||
|
||||
[perVATYear]
|
||||
other = "HT/an"
|
||||
other = "HT/an"
|
||||
|
||||
[perMonth]
|
||||
other = "/mois"
|
||||
|
||||
# Documentation
|
||||
[documentation]
|
||||
other = "Documentation"
|
||||
|
||||
# Pagination
|
||||
[previous]
|
||||
other = "Précédent"
|
||||
|
||||
[next]
|
||||
other = "Suivant"
|
||||
|
||||
# Homepage
|
||||
[trustedByCompanies]
|
||||
other = "Approuvé par les principales entreprises du monde entier"
|
||||
|
||||
[lovedByTeams]
|
||||
other = "Apprécié par les équipes du monde entier"
|
||||
|
||||
[testimonialsDescription]
|
||||
other = "Découvrez ce que nos clients pensent de leur expérience avec notre plateforme."
|
||||
|
||||
# Blog Post
|
||||
[tableOfContents]
|
||||
other = "Table des matières"
|
||||
|
||||
[minRead]
|
||||
other = "min de lecture"
|
||||
|
||||
[previousPost]
|
||||
other = "Article précédent"
|
||||
|
||||
[nextPost]
|
||||
other = "Article suivant"
|
||||
|
||||
[dateFormat]
|
||||
other = "2 janvier 2006"
|
||||
|
||||
# Features
|
||||
[features]
|
||||
other = "Fonctionnalités"
|
||||
@@ -1,10 +0,0 @@
|
||||
# Nederlandse vertalingen voor pricing shortcodes
|
||||
|
||||
[popular]
|
||||
other = "Populair"
|
||||
|
||||
[mostPopular]
|
||||
other = "Meest populair"
|
||||
|
||||
[perMonth]
|
||||
other = "/maand"
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
{{ 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">
|
||||
<div class="flex items-center justify-center h-12 w-12 rounded-md bg-primary-400 text-white">
|
||||
{{ .icon }}
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<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">
|
||||
class="inline-flex items-center px-4 py-2 bg-primary-400 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>
|
||||
@@ -40,7 +40,7 @@
|
||||
<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">
|
||||
<span class="px-4 py-2 bg-primary-400 text-white rounded-lg">
|
||||
{{ .PageNumber }}
|
||||
</span>
|
||||
{{ else }}
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
{{ 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">
|
||||
class="inline-flex items-center px-4 py-2 bg-primary-400 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>
|
||||
|
||||
@@ -1,20 +0,0 @@
|
||||
{{ define "main" }}
|
||||
<div class="pt-2">
|
||||
<div class="container mx-auto px-4 py-6">
|
||||
<div class="flex flex-col md:flex-row gap-6 items-start">
|
||||
<!-- Sidebar -->
|
||||
<div class="w-full md:w-1/4 lg:w-1/5 pt-1">
|
||||
{{ partial "docs-sidebar.html" . }}
|
||||
</div>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main class="w-full md:w-3/4 lg:w-4/5 pt-2">
|
||||
<article class="prose max-w-none -mt-2 pt-6">
|
||||
{{ .Content }}
|
||||
</article>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
@@ -0,0 +1,79 @@
|
||||
{{ define "main" }}
|
||||
<div class="pt-2">
|
||||
<div class="container mx-auto px-4 py-6">
|
||||
<div class="flex flex-col md:flex-row gap-6 items-start">
|
||||
<!-- Sidebar -->
|
||||
<div class="w-full md:w-1/4 lg:w-1/5 pt-1">
|
||||
{{ partial "features-sidebar.html" . }}
|
||||
</div>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main class="w-full md:w-3/4 lg:w-4/5 pt-2">
|
||||
<article class="feature-page">
|
||||
<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 }}
|
||||
|
||||
<!-- Main Content -->
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-8">
|
||||
{{ $paginator := .Paginate (.Pages.ByWeight) }}
|
||||
{{ range $paginator.Pages }}
|
||||
{{ partial "feature-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-400 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-400 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-400 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 }}
|
||||
|
||||
<!-- Global CTA -->
|
||||
{{ partial "components/cta.html" . }}
|
||||
</article>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
@@ -0,0 +1,93 @@
|
||||
{{ define "main" }}
|
||||
<div class="pt-2 feature-page badge-{{ .Params.badgeColor }}">
|
||||
<style>
|
||||
.badge {
|
||||
background-color: color-mix(in srgb, var(--badge-color) 30%, transparent);
|
||||
color: #222;
|
||||
}
|
||||
.gradient-bg {
|
||||
background-image: linear-gradient(180deg, color-mix(in srgb, var(--badge-color) 15%, white), white);
|
||||
}
|
||||
</style>
|
||||
<div class="absolute inset-x-0 top-0 h-96 gradient-bg opacity-75"></div>
|
||||
<div class="container mx-auto px-4 py-6">
|
||||
<div class="flex flex-col md:flex-row gap-6 items-start">
|
||||
<!-- Sidebar -->
|
||||
<div class="w-full md:w-1/4 lg:w-1/5 pt-1">
|
||||
{{ partial "features-sidebar.html" . }}
|
||||
</div>
|
||||
|
||||
<!-- Main Content -->
|
||||
<main class="w-full md:w-3/4 lg:w-4/5 pt-2">
|
||||
<article >
|
||||
<!-- Hero Section -->
|
||||
<div class="relative isolate overflow-hidden">
|
||||
|
||||
<div class="relative pt-16 pb-16 ">
|
||||
<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>
|
||||
</main>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
{{ end }}
|
||||
|
||||
@@ -4,7 +4,7 @@
|
||||
{{ $angle := .Site.Params.cta.gradient_angle | default 45 }}
|
||||
{{ $from := .Site.Params.cta.gradient_from }}
|
||||
{{ $to := .Site.Params.cta.gradient_to }}
|
||||
<div class="relative rounded-lg overflow-hidden bg-primary-600 cta-gradient"
|
||||
<div class="relative rounded-lg overflow-hidden bg-primary-400 cta-gradient"
|
||||
style="--gradient-angle: {{ $angle }}; --gradient-from: {{ $from }}; --gradient-to: {{ $to }}">
|
||||
<div class="relative text-center max-w-3xl mx-auto px-6 py-10">
|
||||
<h2 class="text-3xl md:text-4xl font-bold text-white mb-6">{{ .Site.Params.cta.title }}</h2>
|
||||
|
||||
@@ -0,0 +1,86 @@
|
||||
<div class="docs-sidebar bg-white shadow-sm rounded-lg p-4 sticky top-20 mt-2">
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-3 mt-1">{{ i18n "documentation" }}</h3>
|
||||
<nav class="docs-nav">
|
||||
<ul class="space-y-1">
|
||||
{{/* Get all docs pages */}}
|
||||
{{ $docsPages := where .Site.Pages "Section" "docs" }}
|
||||
{{ $docsPages = where $docsPages ".IsHome" false }}
|
||||
|
||||
{{/* Build list of all section directories to check against */}}
|
||||
{{ $sectionDirs := slice }}
|
||||
{{ range $docsPages }}
|
||||
{{ if eq .Kind "section" }}
|
||||
{{ $sectionDirs = $sectionDirs | append .File.Dir }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Build top-level items: pages directly in docs/ AND first-level sections */}}
|
||||
{{ $topLevel := slice }}
|
||||
{{ range $docsPages }}
|
||||
{{ $dir := .File.Dir }}
|
||||
|
||||
{{/* For sections: include if NOT the root "docs/" section */}}
|
||||
{{ if eq .Kind "section" }}
|
||||
{{ if ne $dir "docs/" }}
|
||||
{{/* This is a first-level section like "concepts/", "react/", "backend/" */}}
|
||||
{{ $topLevel = $topLevel | append . }}
|
||||
{{ end }}
|
||||
{{ else if eq .Kind "page" }}
|
||||
{{/* For pages: only include if Dir is exactly "docs/" (top-level pages) */}}
|
||||
{{ if eq $dir "docs/" }}
|
||||
{{ $topLevel = $topLevel | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Display top-level items sorted by weight */}}
|
||||
{{ range sort $topLevel "Weight" }}
|
||||
{{ if .Title }}
|
||||
<li>
|
||||
<a href="{{ .RelPermalink }}"
|
||||
class="block px-4 py-2 rounded-md transition-colors duration-200
|
||||
{{ if eq .RelPermalink $.RelPermalink }}
|
||||
bg-indigo-50 text-indigo-600 font-medium
|
||||
{{ else }}
|
||||
text-gray-700 hover:bg-gray-50 hover:text-gray-900
|
||||
{{ end }}">
|
||||
{{ .Title }}
|
||||
</a>
|
||||
|
||||
{{/* If this is a section, show its children */}}
|
||||
{{ if eq .Kind "section" }}
|
||||
{{ $sectionDir := .File.Dir }}
|
||||
{{ $children := slice }}
|
||||
|
||||
{{/* Find child pages in this section (same directory, but .Kind is "page" not "section") */}}
|
||||
{{ range $docsPages }}
|
||||
{{ if and (eq .Kind "page") (eq .File.Dir $sectionDir) }}
|
||||
{{ $children = $children | append . }}
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
|
||||
{{/* Display children if any exist */}}
|
||||
{{ if $children }}
|
||||
<ul class="ml-4 mt-1 space-y-1">
|
||||
{{ range sort $children "Weight" }}
|
||||
<li>
|
||||
<a href="{{ .RelPermalink }}"
|
||||
class="block px-3 py-1.5 text-sm rounded-md transition-colors duration-200
|
||||
{{ if eq .RelPermalink $.RelPermalink }}
|
||||
bg-indigo-50 text-indigo-600 font-medium
|
||||
{{ else }}
|
||||
text-gray-600 hover:bg-gray-50 hover:text-gray-900
|
||||
{{ end }}">
|
||||
{{ .Title }}
|
||||
</a>
|
||||
</li>
|
||||
{{ end }}
|
||||
</ul>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</li>
|
||||
{{ end }}
|
||||
{{ end }}
|
||||
</ul>
|
||||
</nav>
|
||||
</div>
|
||||
@@ -34,7 +34,7 @@
|
||||
|
||||
<button
|
||||
type="submit"
|
||||
class="w-full px-4 py-2 bg-primary-600 text-white rounded-lg hover:bg-primary-700 transition-colors duration-200"
|
||||
class="w-full px-4 py-2 bg-primary-400 text-white rounded-lg hover:bg-primary-700 transition-colors duration-200"
|
||||
>
|
||||
{{ if .buttonText }}{{ .buttonText }}{{ else }}{{ if eq $lang "zh-cn" }}订阅{{ else }}Subscribe{{ end }}{{ end }}
|
||||
</button>
|
||||
|
||||
@@ -0,0 +1,62 @@
|
||||
<article class="bg-transparent rounded-lg shadow-md overflow-hidden hover:shadow-lg transition-shadow duration-300 badge-{{ .Params.badgeColor }} flex flex-col h-full">
|
||||
<!-- Badge couleur -->
|
||||
{{ with .Params.badge }}
|
||||
<style>
|
||||
.badge {
|
||||
background-color: color-mix(in srgb, var(--badge-color) 30%, transparent);
|
||||
color: #222;
|
||||
}
|
||||
.badge-icon {
|
||||
color: var(--badge-color);
|
||||
}
|
||||
</style>
|
||||
<div class="px-6 pt-6">
|
||||
<div class="badge inline-block px-4 py-2 rounded-full font-medium">{{ . }}</div>
|
||||
</div>
|
||||
{{ end }}
|
||||
|
||||
{{ with .Params.featured_image }}
|
||||
<a href="{{ $.RelPermalink }}" class="block aspect-w-16 aspect-h-9 overflow-hidden">
|
||||
<img
|
||||
src="{{ . }}"
|
||||
alt="{{ $.Title }}"
|
||||
class="object-cover w-full h-full transform hover:scale-105 transition-transform duration-300"
|
||||
loading="lazy"
|
||||
>
|
||||
</a>
|
||||
{{ end }}
|
||||
|
||||
<div class="p-6 pt-2 flex flex-col h-full">
|
||||
<!-- Title -->
|
||||
<h2 class="text-2xl font-bold mb-3 hover:text-primary-600 transition-colors duration-200">
|
||||
<a href="{{ .RelPermalink }}">{{ .Title }}</a>
|
||||
</h2>
|
||||
|
||||
<!-- Description -->
|
||||
<p class="text-gray-600 mb-4 line-clamp-2">
|
||||
{{ with .Description }}
|
||||
{{ . }}
|
||||
{{ else }}
|
||||
{{ .Summary | truncate 160 }}
|
||||
{{ end }}
|
||||
</p>
|
||||
|
||||
<!-- Read More link and Reading Time -->
|
||||
<div class="flex justify-between items-center mt-auto">
|
||||
<!-- Reading Time -->
|
||||
<span class="text-sm text-gray-500 flex items-center">
|
||||
|
||||
</span>
|
||||
|
||||
<a href="{{ .RelPermalink }}"
|
||||
class="inline-flex items-center text-primary-600 hover:text-primary-700 font-medium">
|
||||
{{ i18n "discoverFeature" }}
|
||||
<svg class="w-4 h-4 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>
|
||||
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</article>
|
||||
+4
-4
@@ -1,14 +1,14 @@
|
||||
<div class="docs-sidebar bg-white shadow-sm rounded-lg p-4 sticky top-20 mt-2">
|
||||
<h3 class="text-lg font-semibold text-gray-900 mb-3 mt-1">{{ i18n "documentation" }}</h3>
|
||||
<div class="docs-sidebar bg-transparent shadow-sm rounded-lg p-4 sticky top-20 mt-2">
|
||||
<h3 class="text-lg font-semibold mb-3 mt-1">{{ i18n "features" }}</h3>
|
||||
<nav class="docs-nav">
|
||||
<ul class="space-y-1">
|
||||
{{ range (where .Site.Pages "Section" "docs").ByWeight }}
|
||||
{{ range (where .Site.Pages "Section" .Section).ByWeight }}
|
||||
{{ if and .Title (not .IsHome) (ne .Kind "section") }}
|
||||
<li>
|
||||
<a href="{{ .RelPermalink }}"
|
||||
class="block px-4 py-2 rounded-md transition-colors duration-200
|
||||
{{ if eq .RelPermalink $.RelPermalink }}
|
||||
bg-indigo-50 text-indigo-600 font-medium
|
||||
bg-primary-100 text-primary-500 font-medium
|
||||
{{ else }}
|
||||
text-gray-700 hover:bg-gray-50 hover:text-gray-900
|
||||
{{ end }}">
|
||||
@@ -55,7 +55,7 @@
|
||||
{{ end }}
|
||||
|
||||
{{ with $headerConfig.buttons.getStarted }}
|
||||
<a href="{{ .url | default "#" }}" class="{{ with .class }}{{ . }}{{ else }}inline-flex items-center justify-center px-6 py-3 rounded-lg font-bold transition duration-200 ease-in-out bg-primary-600 text-white hover:bg-primary-700 hover:scale-105{{ end }}">
|
||||
<a href="{{ .url | default "#" }}" class="{{ with .class }}{{ . }}{{ else }}inline-flex items-center justify-center px-6 py-3 rounded-lg font-bold transition duration-200 ease-in-out bg-primary-400 text-white hover:bg-primary-700 hover:scale-105{{ end }}">
|
||||
{{ .text | default "Get Started" }}
|
||||
</a>
|
||||
{{ end }}
|
||||
@@ -117,7 +117,7 @@
|
||||
{{ end }}
|
||||
|
||||
{{ with $headerConfig.buttons.getStarted }}
|
||||
<a href="{{ .url | default "#" }}" class="{{ with .mobileClass }}{{ . }}{{ else }}block text-center px-6 py-3 rounded-lg font-bold transition duration-200 ease-in-out bg-primary-600 text-white hover:bg-primary-700 hover:scale-105{{ end }}">
|
||||
<a href="{{ .url | default "#" }}" class="{{ with .mobileClass }}{{ . }}{{ else }}block text-center px-6 py-3 rounded-lg font-bold transition duration-200 ease-in-out bg-primary-400 text-white hover:bg-primary-700 hover:scale-105{{ end }}">
|
||||
{{ .text | default "Get Started" }}
|
||||
</a>
|
||||
{{ end }}
|
||||
|
||||
@@ -12,7 +12,7 @@
|
||||
|
||||
<div class="grid grid-cols-1 md:grid-cols-4 gap-8">
|
||||
{{ range $index, $plan := $data.plans }}
|
||||
<div class="relative flex flex-col p-6 {{ if $plan.featured }}bg-primary-600 text-white{{ else }}bg-white{{ end }} rounded-2xl shadow-xl transform hover:-translate-y-1 transition duration-300">
|
||||
<div class="relative flex flex-col p-6 {{ if $plan.featured }}bg-primary-400 text-white{{ else }}bg-white{{ end }} rounded-2xl shadow-xl transform hover:-translate-y-1 transition duration-300">
|
||||
{{ if $plan.featured }}
|
||||
<div class="absolute -top-4 left-1/2 transform -translate-x-1/2">
|
||||
<span class="bg-yellow-400 text-gray-900 text-xs font-semibold px-4 py-1 rounded-full">{{ i18n "mostPopular" }}</span>
|
||||
@@ -50,7 +50,7 @@
|
||||
{{ with .additional_description }}
|
||||
<div class="text-sm text-gray-500">{{ . }}</div>
|
||||
{{ end }}
|
||||
<a href="{{ $plan.button.url }}" class="mt-4 text-center w-full px-5 py-3 rounded-lg {{ if $plan.featured }}bg-white text-primary-600 hover:bg-gray-100{{ else }}bg-primary-600 text-white hover:bg-primary-700{{ end }} font-medium transition duration-300">
|
||||
<a href="{{ $plan.button.url }}" class="mt-4 text-center w-full px-5 py-3 rounded-lg {{ if $plan.featured }}bg-white text-primary-600 hover:bg-gray-100{{ else }}bg-primary-400 text-white hover:bg-primary-700{{ end }} font-medium transition duration-300">
|
||||
{{ $plan.button.text }}
|
||||
</a>
|
||||
</div>
|
||||
|
||||
@@ -27,7 +27,7 @@
|
||||
<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">
|
||||
class="inline-flex items-center px-4 py-2 bg-primary-400 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>
|
||||
@@ -40,7 +40,7 @@
|
||||
<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">
|
||||
<span class="px-4 py-2 bg-primary-400 text-white rounded-lg">
|
||||
{{ .PageNumber }}
|
||||
</span>
|
||||
{{ else }}
|
||||
@@ -54,7 +54,7 @@
|
||||
|
||||
{{ 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">
|
||||
class="inline-flex items-center px-4 py-2 bg-primary-400 text-white rounded-lg hover:bg-primary-700 transition-colors duration-200">
|
||||
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>
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 188 KiB After Width: | Height: | Size: 153 KiB |
@@ -5,28 +5,28 @@ module.exports = {
|
||||
extend: {
|
||||
colors: {
|
||||
primary: {
|
||||
50: '#eef1fc',
|
||||
100: '#dde3f9',
|
||||
200: '#bbc7f3',
|
||||
300: '#99abec',
|
||||
400: '#778fe6',
|
||||
500: '#5573df',
|
||||
600: '#425ad6',
|
||||
700: '#3548ab',
|
||||
800: '#283680',
|
||||
900: '#1b2456',
|
||||
50: "#fffbfa",
|
||||
100: "#fcd7ca",
|
||||
200: "#f9b29a",
|
||||
300: "#f78d69",
|
||||
400: "#f46839", // couleur principale
|
||||
500: "#ed450d",
|
||||
600: "#bd370a",
|
||||
700: "#8c2908",
|
||||
800: "#5c1b05",
|
||||
900: "#2c0d02",
|
||||
},
|
||||
secondary: {
|
||||
50: '#faf5ff',
|
||||
100: '#f3e8ff',
|
||||
200: '#e9d5ff',
|
||||
300: '#d8b4fe',
|
||||
400: '#c084fc',
|
||||
500: '#a855f7',
|
||||
600: '#9333ea',
|
||||
700: '#7e22ce',
|
||||
800: '#6b21a8',
|
||||
900: '#581c87',
|
||||
50: "#ddeef6",
|
||||
100: "#8ec6df",
|
||||
200: "#3e9fc9",
|
||||
300: "#23627e",
|
||||
400: "#0d242e", // couleur principale
|
||||
500: "#020506",
|
||||
600: "#000",
|
||||
700: "#000",
|
||||
800: "#000",
|
||||
900: "#000",
|
||||
},
|
||||
},
|
||||
fontFamily: {
|
||||
|
||||
@@ -1,13 +1,13 @@
|
||||
name = "Hugo Saasify"
|
||||
license = "MIT"
|
||||
licenselink = "https://github.com/chaoming/chill-theme/blob/main/LICENSE"
|
||||
description = "A modern Hugo theme for SaaS websites built with TailwindCSS"
|
||||
homepage = "https://github.com/chaoming/chill-theme"
|
||||
demosite = "https://saasify-demo.chaoming.li"
|
||||
licenselink = ""
|
||||
description = ""
|
||||
homepage = ""
|
||||
demosite = ""
|
||||
tags = ["saas", "business", "tailwind", "responsive", "modern", "clean"]
|
||||
features = ["responsive", "tailwind", "modern design"]
|
||||
min_version = "0.80.0"
|
||||
|
||||
[author]
|
||||
name = "Chaoming Li"
|
||||
homepage = "https://chaoming.li"
|
||||
name = "Champs-Libres"
|
||||
homepage = "https://www.champs-libres.coop/"
|
||||
|
||||
Reference in New Issue
Block a user