diff --git a/themes/chill-theme b/themes/chill-theme deleted file mode 160000 index 5d19f48..0000000 --- a/themes/chill-theme +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5d19f48b3d3d047ddd4142fb00821aca251c9f02 diff --git a/themes/chill-theme/.gitignore b/themes/chill-theme/.gitignore new file mode 100644 index 0000000..deb425c --- /dev/null +++ b/themes/chill-theme/.gitignore @@ -0,0 +1,30 @@ +# Dependencies +node_modules/ +package-lock.json +yarn.lock + +# Hugo +public/ +resources/ +.hugo_build.lock +hugo_stats.json + +# Build output +assets/css/style.css +static/css/ + +# IDE/Editor +.idea/ +.vscode/ +*.swp +*.swo +.DS_Store + +# OS generated files +.DS_Store +.DS_Store? +._* +.Spotlight-V100 +.Trashes +ehthumbs.db +Thumbs.db diff --git a/themes/chill-theme/LICENSE b/themes/chill-theme/LICENSE new file mode 100644 index 0000000..7ec485b --- /dev/null +++ b/themes/chill-theme/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2024 Chaoming Li + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/themes/chill-theme/README.md b/themes/chill-theme/README.md new file mode 100644 index 0000000..9fd0b61 --- /dev/null +++ b/themes/chill-theme/README.md @@ -0,0 +1,470 @@ +# Hugo Saasify Theme + +A modern and elegant Hugo theme specifically designed for building **SaaS marketing websites**. Built with TailwindCSS, this theme provides a clean, professional look while maintaining excellent performance and customization options. + +## Why Hugo Saasify Theme? + +Perfect for creating high-converting SaaS landing pages, product marketing sites, and company websites with: + +- **SEO Optimized** - Built-in SEO best practices, semantic HTML, and optimized meta tags to help you rank better +- **Lightning Fast** - Static site generation delivers blazing-fast load times (90+ Lighthouse scores) +- **Global Ready** - Full internationalization (i18n) support with automatic language detection powered by [VisitorAPI](https://visitorapi.com/) +- **Developer Friendly** - Clean code structure, comprehensive documentation, and easy customization +- **Production Ready** - Battle-tested with real SaaS companies, mobile-responsive, and accessibility compliant + +Whether you're launching a new SaaS product or refreshing your marketing site, Hugo Saasify Theme helps you build a professional web presence quickly and efficiently. + + + + + + + +[Demo Site](https://saasify-demo.chaoming.li) + +## Features + +- ๐จ Modern design with TailwindCSS +- ๐ฑ Fully responsive layout +- ๐ Performance optimized +- ๐ Clean typography with Inter & Plus Jakarta Sans fonts +- ๐ฏ Perfect for SaaS and business websites +- ๐ Easy to customize +- ๐ฆ No jQuery, minimal JavaScript +- ๐ Google Analytics support +- ๐ Google Tag Manager support +- ๐ง Custom head content support for additional tracking scripts +- ๐ช 21 pre-built shortcodes for rapid page building +- ๐ Documentation layout with automatic sidebar navigation +- ๐ Full multilingual (i18n) support with automatic language switcher (powered by [VisitorAPI](https://visitorapi.com/)) + +## Documentation + +**๐ [Complete Documentation โ](docs/README.md)** + +Comprehensive guides covering everything you need: + +- **[Installation Guide](docs/INSTALLATION.md)** - Get started quickly +- **[Configuration Guide](docs/CONFIGURATION.md)** - All configuration options +- **[Internationalization Guide](docs/INTERNATIONALIZATION.md)** - Complete i18n and multilingual setup guide +- **[Layouts Guide](docs/LAYOUTS.md)** - Understanding layouts and templates +- **[Shortcodes Reference](docs/SHORTCODES.md)** - All 21 shortcodes documented +- **[Styling Guide](docs/STYLING.md)** - Customize colors, fonts, and styles +- **[Content Creation Guide](docs/CONTENT-CREATION.md)** - Create pages and blog posts +- **[Deployment Guide](docs/DEPLOYMENT.md)** - Deploy to various platforms +- **[Troubleshooting Guide](docs/TROUBLESHOOTING.md)** - Common issues and solutions + +## Requirements + +- Hugo Extended Version (>= 0.80.0) +- Node.js (>= 14.x) +- npm or yarn + +## Installation + +### 1. Create a new Hugo site (skip if you have an existing site) + +```bash +hugo new site your-site-name +cd your-site-name +``` + +### 2. Add the theme as a submodule + +```bash +git init +git submodule add https://github.com/chaoming/chill-theme themes/chill-theme +``` + +### 3. Example Site (Optional) + +The theme comes with a fully functional example site that demonstrates its features and capabilities. You can use this as a reference when building your own site. + +### Using the Example Site + +The example site provides a great starting point to understand how to: +- Structure your content +- Use different page layouts +- Configure navigation menus +- Set up site parameters +- Implement common SaaS website features + +1. Copy the example site content: +```bash +cp -r themes/chill-theme/exampleSite/* . +``` + +2. The example site includes: +- Complete content structure with sample pages +- Blog posts with various layouts +- Feature pages +- Career/Jobs section +- Pricing page +- Company information page +- Properly configured hugo.toml + +### 4. Install dependencies + +```bash +# Copy package.json and other config files to your site root +cp themes/chill-theme/package.json . +cp themes/chill-theme/postcss.config.js . +cp themes/chill-theme/tailwind.config.copy.js ./tailwind.config.js +``` + +```bash +# Install dependencies +npm install +``` + +### 5. Configure your Hugo site + +Create or update your `hugo.toml` with the following configuration: + +```toml +# Basic Configuration +baseURL = "/" +title = "Your Site Title" +theme = "chill-theme" +defaultContentLanguage = "en" + +# Required Features +enableEmoji = true # Enable emoji support +enableGitInfo = true # Enable Git info for lastmod + +# Pagination +paginate = 6 +paginatePath = "page" + +# Required Module Configuration +[module] + [module.hugoVersion] + extended = true + min = "0.80.0" + +# Required Build Configuration +[build] + writeStats = true # Required for TailwindCSS + +[build.buildStats] + enable = true + +# Security Configuration +[security.funcs] + getenv = ['^HUGO_', '^CI$'] + +# Required Markup Configuration +[markup] + [markup.highlight] + noClasses = false + lineNos = true + codeFences = true + guessSyntax = true + lineNumbersInTable = true + [markup.goldmark.renderer] + unsafe = true # Allow HTML in markdown + [markup.tableOfContents] + endLevel = 3 + ordered = false + startLevel = 2 + +# Taxonomies +[taxonomies] + category = 'categories' + tag = 'tags' + +# Theme Parameters +[params] + description = "Your site description" + author = "Your Name" + logo = "/images/logo.svg" # Path to your logo + # Google Analytics ID (e.g., "G-XXXXXXXXXX") + googleAnalytics = "G-XXXXXXXXXX" # Only enabled in production + + # Google Tag Manager ID (e.g., "GTM-XXXXXXX") + # Only enabled in production + googleTagManager = "GTM-XXXXXXX" + + # Header Configuration + [params.header] + background = "bg-white/80 backdrop-blur-sm" + border = "border-b border-gray-100" + + # Header Logo + [params.header.logo] + src = "/images/logo.svg" + + # Header Buttons (optional) + [params.header.buttons] + [params.header.buttons.signIn] + text = "Sign in" + url = "/signin" + [params.header.buttons.getStarted] + text = "Get Started" + url = "/get-started" + + # Global CTA Configuration (optional) + [params.cta] + enable = true + title = "Ready to Get Started?" + description = "Join companies using our platform" + [params.cta.primary_button] + text = "Get Started Free" + url = "/get-started" + [params.cta.secondary_button] + text = "Book Demo" + url = "/demo" + + # Social Media Links (optional) + [params.social] + linkedin = "https://linkedin.com/in/yourusername" + twitter = "https://twitter.com/yourusername" + bluesky = "https://bsky.app/profile/yourblueskyhandle" + github = "https://github.com/yourusername" + +# Navigation Menu +[menu] + [[menu.main]] + name = "Features" + weight = 1 + [menu.main.params] + has_submenu = true + submenu = [ + { name = "Feature 1", url = "/features/feature-1/" }, + { name = "Feature 2", url = "/features/feature-2/" } + ] + [[menu.main]] + name = "Pricing" + url = "/pricing" + weight = 2 + [[menu.main]] + name = "Blog" + url = "/blog" + weight = 3 +``` + +This configuration includes: + +- **Basic Settings**: Site title, theme selection, and default language +- **Required Features**: Emoji support and Git integration +- **Pagination**: Posts per page configuration +- **Module Configuration**: Hugo Extended version requirements +- **Build Settings**: Required for TailwindCSS integration with build stats +- **Security Settings**: Environment variable access control +- **Markup Settings**: Syntax highlighting and markdown rendering options +- **Taxonomies**: Categories and tags support +- **Theme Parameters**: + - Header configuration with logo and navigation + - Call-to-action (CTA) sections + - Social media links + - Google Analytics configuration (only enabled in production) + - Google Tag Manager configuration (only enabled in production) + - Custom head content for additional tracking scripts and meta tags +- **Navigation Menu**: Main menu structure with dropdown support + +**Note**: For multilingual sites, see the [Multilingual Support](#multilingual-support) section below for additional language configuration. + +## Development + +To start the development server with live reload: + +```bash +npm run start +``` + +This will: +- Watch for changes in your TailwindCSS styles +- Run the Hugo development server +- Automatically rebuild when changes are detected + +To build your site for production: + +```bash +npm run build +``` + +This will: +- Build and minify your TailwindCSS styles +- Generate minified Hugo site in the `public` directory + +## Customization + +### Colors + +The theme uses a primary and secondary color scheme that can be customized in `tailwind.config.js`: + +```js +colors: { + primary: { + // Your primary color palette + }, + secondary: { + // Your secondary color palette + } +} +``` + +### Typography + +The theme uses Inter for body text and Plus Jakarta Sans for headings. You can modify this in `tailwind.config.js`: + +```js +fontFamily: { + sans: ['Inter', 'system-ui', 'sans-serif'], + heading: ['Plus Jakarta Sans', 'sans-serif'], +} +``` + +### Layout Components + +Common components like buttons, cards, and sections can be customized in `assets/scss/main.scss`. + +### Custom Head Content + +Add custom tracking scripts or meta tags by creating `layouts/partials/custom-head.html` in your site: + +```html + + + + + + +``` + +This is perfect for: +- Third-party analytics (Hotjar, Mixpanel, Heap, etc.) +- Site verification meta tags +- Custom fonts or stylesheets +- A/B testing scripts +- Chat widgets + +See the [Configuration Guide](docs/CONFIGURATION.md#custom-head-content) for more details. + +## Multilingual Support + +The theme has full multilingual (i18n) support with: +- Automatic language switcher in the header +- Language-specific content directories +- Translatable UI strings via i18n files +- Language-specific menus and parameters + +### Quick Setup + +1. **Configure languages in `hugo.toml`:** + +```toml +defaultContentLanguage = "en" + +[languages] + [languages.en] + languageCode = "en-us" + languageName = "English" + weight = 1 + contentDir = "content" + + [languages.zh-cn] + languageCode = "zh-cn" + languageName = "็ฎไฝไธญๆ" + weight = 2 + contentDir = "content/zh-cn" +``` + +2. **Create translation files:** + +Copy `themes/chill-theme/i18n/en.toml` to your site's `i18n/` directory and create language-specific versions (e.g., `i18n/zh-cn.toml`). + +3. **Organize content by language:** + +``` +content/ +โโโ _index.md # English homepage +โโโ blog/ # English blog posts +โโโ zh-cn/ # Chinese content + โโโ _index.md # Chinese homepage + โโโ blog/ # Chinese blog posts +``` + +4. **Configure language-specific menus:** + +```toml +# English menu +[[languages.en.menu.main]] + name = "Features" + url = "/features" + +# Chinese menu +[[languages.zh-cn.menu.main]] + name = "ๅ่ฝ็นๆง" + url = "/zh-cn/features" +``` + +The language switcher will automatically appear in the header when multiple languages are configured. + +**๐ [Full Multilingual Guide โ](docs/INTERNATIONALIZATION.md)** + +**๐ก Want to see a complete working example?** Check out the [demo site repository](https://github.com/chaoming/hugo-saasify-demo) for a full multilingual setup with English and Simplified Chinese, including all configuration files, translated content, and i18n files. + +## Content Structure + +``` +content/ +โโโ _index.md # Homepage content +โโโ blog/ # Blog posts +โโโ features/ # Feature pages +โโโ docs/ # Documentation pages +โโโ zh-cn/ # Additional language (optional) + โโโ _index.md + โโโ blog/ +``` + +## Build Your Complete SaaS Solution + +Hugo Saasify Theme is perfect for your **marketing site**, but what about your actual SaaS application? Check out [**Fireact.dev**](https://fireact.dev/) - an open-source framework that complements this theme perfectly. + +[Fireact.dev](https://github.com/fireact-dev/main) is a production-ready SaaS application starter built with **React, Firebase, and Stripe**. It provides everything you need for the application side of your SaaS business: + +- **Stripe Integration** - Complete billing system with subscription management, payment processing, invoices, and customer portal +- **User Management** - Built-in authentication, team collaboration, user invitations, and role-based access control (admin/user roles) +- **Multi-tenancy** - Full support for multiple subscription accounts with isolated data and permissions +- **Production Ready** - TypeScript, internationalization (i18n), Firebase Cloud Functions, and comprehensive documentation + +**Perfect Combination**: Use Hugo Saasify Theme for your public-facing marketing website (landing pages, blog, documentation) and Fireact.dev for your authenticated SaaS application. Together, they provide a complete solution for launching your SaaS product quickly. + +Learn more at [fireact.dev](https://fireact.dev/) or view the [GitHub repository](https://github.com/fireact-dev/main). + +## License + +This theme is released under the [MIT license](https://github.com/chaoming/chill-theme/blob/main/LICENSE). + +## Quick Links + +- ๐ [Documentation](docs/README.md) +- ๐จ [Demo Site](https://saasify-demo.chaoming.li) +- ๐ [Report Issues](https://github.com/chaoming/chill-theme/issues) +- ๐ฌ [Discussions](https://github.com/chaoming/chill-theme/discussions) + +## Support + +Need help? Check the documentation first: + +1. **[Complete Documentation](docs/README.md)** - Start here +2. **[Troubleshooting Guide](docs/TROUBLESHOOTING.md)** - Common issues +3. **[GitHub Issues](https://github.com/chaoming/chill-theme/issues)** - Report bugs or request features + +## Contributing + +Contributions are welcome! Please feel free to submit a Pull Request. + +## Author + +Created by [Chaoming Li](https://chaoming.li) diff --git a/themes/chill-theme/assets/css/main.css b/themes/chill-theme/assets/css/main.css new file mode 100644 index 0000000..dc470f5 --- /dev/null +++ b/themes/chill-theme/assets/css/main.css @@ -0,0 +1,199 @@ + +@tailwind base; +@tailwind components; +@tailwind utilities; + + +@layer base { + html { + @apply scroll-smooth; + } + + body { + @apply font-sans text-gray-700 antialiased; + } + + +} + +@layer utilities { + .rounded-lg { + border-radius: 2rem; + } +} + +@layer components { + .cta-section { + padding-top: 3rem; + padding-bottom: 3rem; + margin-top: 2rem; + margin-bottom: 2rem; + } + + .cta-gradient { + background: linear-gradient(calc(var(--gradient-angle) * 1deg), var(--gradient-from), var(--gradient-to)); + } + + .btn { + @apply inline-flex items-center justify-center px-6 py-3 font-medium transition duration-200 ease-in-out; + border-radius: 2rem; + } + + .btn-primary { + @apply btn bg-primary-600 text-white hover:bg-primary-700 hover:scale-105; + } + + .btn-secondary { + @apply btn bg-secondary-600 text-white hover:bg-secondary-700 hover:scale-105; + } + + .btn-outline { + @apply btn border-2 border-primary-600 text-primary-600 hover:scale-105; + } + + .container { + @apply mx-auto px-4 sm:px-6 lg:px-8 max-w-7xl; + } + + .section { + @apply py-16 md:py-24; + } + + .card { + @apply bg-white p-6 transition duration-200 hover:shadow-md; + border-radius: 2rem; + } + + .nav-link { + @apply text-gray-600 hover:text-primary-600 font-bold transition duration-200; + } + + .feature-grid { + @apply grid gap-8 md:grid-cols-2 lg:grid-cols-3; + } + + /* Blog and Syntax Highlighting Styles */ + .highlight { + @apply text-sm font-mono text-gray-200; + } + + .highlight table { + @apply w-full border-separate border-spacing-0; + } + + .highlight table td { + @apply p-0; + } + + .highlight table td:first-child { + @apply pr-4 text-right select-none text-gray-500 border-r border-gray-700; + } + + .highlight table td:last-child { + @apply pl-4 w-full; + } + + .highlight .k, .highlight .kd { + @apply text-purple-400 font-semibold; + } + + .highlight .nf, .highlight .nx { + @apply text-blue-400; + } + + .highlight .s, .highlight .s1, .highlight .s2 { + @apply text-green-400; + } + + .highlight .mi, .highlight .mf { + @apply text-orange-400; + } + + .highlight .c, .highlight .c1, .highlight .cm { + @apply text-gray-500 italic; + } + + .highlight .o { + @apply text-yellow-400; + } + + .highlight .p { + @apply text-gray-400; + } + + .prose { + @apply max-w-none; + } + + .prose h1, .prose h2, .prose h3, .prose h4 { + @apply font-heading font-bold text-gray-900; + } + + .prose h1 { + @apply text-4xl mb-8; + } + + .prose h2 { + @apply text-3xl mt-12 mb-6; + } + + .prose h3 { + @apply text-2xl mt-8 mb-4; + } + + .prose p { + @apply text-gray-700 leading-relaxed mb-6; + } + + .prose a { + @apply text-primary-600 hover:text-primary-700 no-underline; + } + + .prose ul, .prose ol { + @apply my-6 ml-6; + } + + .prose li { + @apply mb-2; + } + + .prose blockquote { + @apply border-l-4 border-gray-200 pl-4 italic text-gray-700 my-8; + } + + .prose img { + @apply rounded-lg shadow-lg my-8; + } + + .prose code:not(pre code) { + @apply bg-gray-100 text-gray-900 px-1.5 py-0.5 rounded text-sm font-mono; + } + + .table-of-contents { + @apply bg-gray-50 p-6 rounded-lg my-8; + } + + .table-of-contents nav { + @apply space-y-2; + } + + .table-of-contents a { + @apply text-gray-700 hover:text-primary-600 no-underline; + } + + .table-of-contents ul { + @apply list-none ml-4 space-y-2; + } +} +.features-carousel__nav { margin-bottom: 1rem; text-align: center; } +.features-carousel__nav button { + @apply btn text-gray-900 hover:text-primary-700; + max-height:40px; +} + +.features-carousel__nav button.active { + @apply btn bg-primary-600 text-white hover:bg-primary-700 hover:scale-105; +} + +.features-carousel__slides { min-height: 150px; } +.feature { display: none; } diff --git a/themes/chill-theme/config.toml b/themes/chill-theme/config.toml new file mode 100644 index 0000000..4fa7cab --- /dev/null +++ b/themes/chill-theme/config.toml @@ -0,0 +1,4 @@ +[module] + [module.hugoVersion] + extended = true + min = "0.80.0" diff --git a/themes/chill-theme/docs/CONFIGURATION.md b/themes/chill-theme/docs/CONFIGURATION.md new file mode 100644 index 0000000..ca090a5 --- /dev/null +++ b/themes/chill-theme/docs/CONFIGURATION.md @@ -0,0 +1,1144 @@ +# Configuration Guide + +Complete reference for configuring the Hugo Saasify Theme. This guide covers all available configuration options in your `hugo.toml` file. + +## Table of Contents + +- [Basic Configuration](#basic-configuration) +- [Site Parameters](#site-parameters) +- [Header Configuration](#header-configuration) +- [Footer Configuration](#footer-configuration) +- [CTA Configuration](#cta-configuration) +- [Blog Configuration](#blog-configuration) +- [Social Media Links](#social-media-links) +- [Analytics Configuration](#analytics-configuration) +- [Menu Configuration](#menu-configuration) +- [Build Settings](#build-settings) +- [Markup Configuration](#markup-configuration) +- [Taxonomy Configuration](#taxonomy-configuration) +- [Advanced Options](#advanced-options) + +## Basic Configuration + +Essential settings that every site needs. + +```toml +baseURL = "https://your-domain.com/" +languageCode = "en-us" +title = "Your SaaS Name" +theme = "chill-theme" + +# Enable syntax highlighting +pygmentsCodeFences = true +pygmentsUseClasses = true + +# Enable emoji support +enableEmoji = true + +# Enable Git info for lastmod dates +enableGitInfo = true + +# Pagination +paginate = 6 +paginatePath = "page" +``` + +### Configuration Options + +| Parameter | Type | Description | Default | +|-----------|------|-------------|---------| +| `baseURL` | string | Your site's production URL | Required | +| `languageCode` | string | Site language code (ISO 639-1) | `en-us` | +| `title` | string | Site title (appears in browser, meta) | Required | +| `theme` | string | Must be "chill-theme" | Required | +| `pygmentsCodeFences` | boolean | Enable syntax highlighting in code blocks | `true` | +| `pygmentsUseClasses` | boolean | Use CSS classes for syntax highlighting | `true` | +| `enableEmoji` | boolean | Enable emoji shortcodes in content | `true` | +| `enableGitInfo` | boolean | Use Git commit dates for lastmod | `false` | +| `paginate` | integer | Number of posts per page in lists | `6` | +| `paginatePath` | string | URL path component for pagination | `page` | + +## Site Parameters + +Global parameters available throughout your site. + +```toml +[params] + description = "Modern SaaS platform for your business needs" + author = "Your Company Name" + logo = "/images/logo.svg" + + # Google Analytics (GA4) + googleAnalytics = "G-XXXXXXXXXX" + + # Google Tag Manager + googleTagManager = "GTM-XXXXXXX" + + # Favicon + favicon = "/images/favicon.ico" + + # Default OG Image + ogImage = "/images/og-image.jpg" + + # Copyright text + copyright = "ยฉ 2025 Your Company. All rights reserved." +``` + +### Parameter Descriptions + +| Parameter | Type | Description | Required | +|-----------|------|-------------|----------| +| `description` | string | Default meta description | Recommended | +| `author` | string | Site author/company name | Optional | +| `logo` | string | Path to logo image | Recommended | +| `googleAnalytics` | string | Google Analytics 4 ID | Optional | +| `googleTagManager` | string | Google Tag Manager ID | Optional | +| `favicon` | string | Path to favicon | Optional | +| `ogImage` | string | Default Open Graph image | Optional | +| `copyright` | string | Footer copyright text | Optional | + +## Header Configuration + +Customize your site's header, navigation, and menu appearance. + +```toml +[params.header] + # Header styles + background = "bg-white/80 backdrop-blur-sm" + border = "border-b border-gray-100" + + # Logo configuration + [params.header.logo] + src = "/images/logo.svg" + alt = "Company Logo" + width = "auto" + height = "40" + + # Menu configuration + [params.header.menu] + spacing = "space-x-8" + font_size = "text-sm" + font_weight = "font-medium" + + # Dropdown menu styling + [params.header.menu.dropdown] + width = "w-72" + container_padding = "py-6" + item_padding = "px-8 py-3" + background = "bg-white" + border = "border border-gray-100" + shadow = "shadow-xl" + radius = "rounded-lg" + text_color = "text-gray-700" + hover_background = "hover:bg-gray-50" + text_size = "text-sm" + + # Header buttons + [params.header.buttons] + # Sign In button + [params.header.buttons.signIn] + text = "Sign in" + url = "/signin" + style = "text-gray-600 hover:text-primary-600" + + # Get Started button + [params.header.buttons.getStarted] + text = "Get Started" + url = "/get-started" + style = "btn-primary" +``` + +### Header Options + +**Background and Border** +- `background`: Tailwind classes for header background +- `border`: Tailwind classes for header border + +**Logo Settings** +- `src`: Path to logo image file +- `alt`: Alternative text for logo +- `width`: Logo width (CSS value) +- `height`: Logo height (CSS value) + +**Menu Styling** +- `spacing`: Horizontal spacing between menu items +- `font_size`: Text size for menu items +- `font_weight`: Font weight for menu items + +**Dropdown Customization** +- All properties accept Tailwind CSS classes +- Customize width, padding, colors, shadows, etc. + +## Footer Configuration + +Configure footer columns and layout. + +```toml +[params.footer] + # Column titles + column_1_title = "Product" + column_2_title = "Company" + column_3_title = "Legal" + + # Footer text + description = "Building amazing SaaS products since 2024" + + # Show social icons + show_social = true + + # Newsletter subscription + [params.footer.newsletter] + enable = true + title = "Subscribe to our newsletter" + description = "Get the latest updates and news" + action = "https://formspree.io/f/your-form-id" + placeholder = "Enter your email" + button_text = "Subscribe" +``` + +### Footer Menus + +Footer menus are configured in the `[menu]` section. See [Menu Configuration](#menu-configuration). + +## CTA Configuration + +Global Call-to-Action section that appears on various pages. + +```toml +[params.cta] + enable = true + title = "Ready to Get Started?" + description = "Join thousands of companies using our platform" + + # Gradient background + gradient_from = "#2563eb" # Blue-600 + gradient_to = "#7c3aed" # Purple-600 + gradient_angle = 30 + + # Primary button + [params.cta.primary_button] + text = "Start Free Trial" + url = "/signup" + + # Secondary button + [params.cta.secondary_button] + text = "Schedule Demo" + url = "/demo" +``` + +### CTA Options + +| Parameter | Type | Description | +|-----------|------|-------------| +| `enable` | boolean | Show/hide global CTA | +| `title` | string | CTA heading text | +| `description` | string | CTA description text | +| `gradient_from` | string | Gradient start color (hex) | +| `gradient_to` | string | Gradient end color (hex) | +| `gradient_angle` | integer | Gradient angle in degrees | +| `primary_button.text` | string | Primary button label | +| `primary_button.url` | string | Primary button link | +| `secondary_button.text` | string | Secondary button label | +| `secondary_button.url` | string | Secondary button link | + +## Blog Configuration + +Configure blog functionality and sidebar options. + +```toml +[params.blog] + enable = true + title = "Latest Articles" + subtitle = "Insights, tutorials, and updates" + + # Show estimated reading time + show_reading_time = true + + # Show author info + show_author = true + + # Show post date + show_date = true + + # Date format (Go time format) + date_format = "January 2, 2006" + + # CTA in blog posts + [params.blog.cta] + enable = true + + # Sidebar configuration + [params.blog.sidebar] + # Recent articles + [params.blog.sidebar.recent] + enable = true + title = "Recent Articles" + count = 5 + + # Categories + [params.blog.sidebar.categories] + enable = true + title = "Categories" + show_count = true + + # Tags + [params.blog.sidebar.tags] + enable = true + title = "Popular Tags" + count = 20 + style = "cloud" # "cloud" or "list" + + # Newsletter subscription + [params.blog.sidebar.subscribe] + enable = true + title = "Subscribe to Newsletter" + description = "Get the latest posts delivered to your inbox" + action = "https://formspree.io/f/your-form-id" + emailName = "email" + buttonText = "Subscribe" + placeholder = "Enter your email" + disclaimer = "We respect your privacy. Unsubscribe anytime." +``` + +### Blog Display Options + +**Post Metadata** +- `show_reading_time`: Display estimated reading time +- `show_author`: Show author name +- `show_date`: Display publication date +- `date_format`: Date format string (Go format) + +**Sidebar Widgets** +- Each widget can be enabled/disabled individually +- Customize titles and display counts +- Tags can be displayed as cloud or list + +## Social Media Links + +Configure social media profiles for footer and sharing. + +```toml +[params.social] + linkedin = "https://linkedin.com/company/yourcompany" + twitter = "https://twitter.com/yourhandle" + bluesky = "https://bsky.app/profile/yourhandle" + youtube = "https://youtube.com/@yourchannel" + facebook = "https://facebook.com/yourpage" + instagram = "https://instagram.com/yourhandle" + github = "https://github.com/yourorg" + telegram = "https://t.me/yourchannel" + discord = "https://discord.gg/yourinvite" + slack = "https://yourteam.slack.com" + medium = "https://medium.com/@yourhandle" + dribbble = "https://dribbble.com/yourprofile" + behance = "https://behance.net/yourprofile" +``` + +Add only the social networks you want to display. Omit the others. + +## Analytics Configuration + +### Google Analytics 4 + +```toml +[params] + # Google Analytics 4 (GA4) + googleAnalytics = "G-XXXXXXXXXX" +``` + +The theme includes automatic GA4 integration. Simply add your measurement ID. + +**Features**: +- Page view tracking +- Event tracking +- User engagement metrics +- Automatic configuration + +### Google Tag Manager + +```toml +[params] + # Google Tag Manager + googleTagManager = "GTM-XXXXXXX" +``` + +GTM provides more advanced tracking capabilities. + +**Features**: +- Custom event tracking +- Enhanced e-commerce +- Multiple tag management +- Advanced triggers and variables + +**Implementation**: +- Head script automatically inserted +- Body script (noscript) included +- Compatible with GA4 + +### Using Both Analytics Tools + +You can use both GA4 and GTM simultaneously: + +```toml +[params] + googleAnalytics = "G-XXXXXXXXXX" + googleTagManager = "GTM-XXXXXXX" +``` + +**Best Practice**: If using GTM, configure GA4 through GTM rather than directly for better control. + +### Custom Head Content + +For tracking scripts and tools not covered by Google Analytics or Google Tag Manager, you can add custom code to the `
` section. + +**How to use**: + +1. Create a file in your site: `layouts/partials/custom-head.html` +2. Add any custom HTML, scripts, or meta tags to this file + +**Example** - Adding Hotjar tracking: + +```html + + +``` + +**Example** - Adding site verification meta tags: + +```html + + + +``` + +**Example** - Adding custom fonts: + +```html + + + +``` + +**Use Cases**: +- Third-party tracking scripts (Hotjar, Mixpanel, Heap, etc.) +- Site verification meta tags +- Custom fonts or stylesheets +- A/B testing scripts +- Chat widget scripts +- Any other code that needs to be in the `` section + +**Note**: The `custom-head.html` partial is loaded after all other head elements, giving you full control while maintaining theme compatibility. + +## Menu Configuration + +Configure navigation menus for header and footer. + +### Main Navigation Menu + +```toml +[menu] + # Simple menu item + [[menu.main]] + name = "Pricing" + url = "/pricing" + weight = 2 + + # Menu item with dropdown + [[menu.main]] + name = "Features" + weight = 1 + [menu.main.params] + has_submenu = true + submenu = [ + { name = "Performance", url = "/features/performance/" }, + { name = "Design System", url = "/features/design/" }, + { name = "Developer Experience", url = "/features/dx/" } + ] + + # External link + [[menu.main]] + name = "Documentation" + url = "https://docs.example.com" + weight = 5 + [menu.main.params] + external = true +``` + +### Footer Menus + +```toml +[menu] + # Footer Column 1 + [[menu.footer_column_1]] + name = "Features" + url = "/features" + weight = 1 + + [[menu.footer_column_1]] + name = "Pricing" + url = "/pricing" + weight = 2 + + # Footer Column 2 + [[menu.footer_column_2]] + name = "About Us" + url = "/about" + weight = 1 + + [[menu.footer_column_2]] + name = "Blog" + url = "/blog" + weight = 2 + + # Footer Column 3 + [[menu.footer_column_3]] + name = "Privacy Policy" + url = "/privacy" + weight = 1 + + [[menu.footer_column_3]] + name = "Terms of Service" + url = "/terms" + weight = 2 +``` + +### Menu Parameters + +**Standard Parameters** +- `name`: Display text +- `url`: Link destination +- `weight`: Sort order (lower = earlier) + +**Custom Parameters** +- `has_submenu`: Enable dropdown menu +- `submenu`: Array of submenu items +- `external`: Mark as external link + +## Build Settings + +Essential build configuration for the theme. + +```toml +[module] + [module.hugoVersion] + extended = true + min = "0.80.0" + +[build] + writeStats = true + +[build.buildStats] + enable = true + +[security.funcs] + getenv = ['^HUGO_', '^CI$'] +``` + +### Build Options + +| Parameter | Description | +|-----------|-------------| +| `module.hugoVersion.extended` | Require Hugo Extended (needed for Tailwind) | +| `module.hugoVersion.min` | Minimum Hugo version | +| `build.writeStats` | Generate build statistics for Tailwind | +| `build.buildStats.enable` | Enable detailed build stats | +| `security.funcs.getenv` | Allowed environment variable patterns | + +**Important**: These settings are required for the theme to work correctly. + +## Markup Configuration + +Configure content rendering and syntax highlighting. + +```toml +[markup] + # Syntax highlighting + [markup.highlight] + noClasses = false # Use CSS classes + lineNos = true # Show line numbers + codeFences = true # Enable fenced code blocks + guessSyntax = true # Auto-detect language + lineNumbersInTable = true # Line numbers in table format + style = "monokai" # Syntax highlighting theme + + # Goldmark (Markdown renderer) + [markup.goldmark.renderer] + unsafe = true # Allow raw HTML in markdown + + # Table of Contents + [markup.tableOfContents] + endLevel = 3 # Deepest heading level + ordered = false # Use unordered lists + startLevel = 2 # Starting heading level +``` + +### Syntax Highlighting + +**Available Styles**: +- `monokai` (default, dark theme) +- `github` +- `dracula` +- `vim` +- `nord` +- And many more from [Chroma Gallery](https://xyproto.github.io/splash/docs/) + +**Line Numbers**: +- `lineNos`: Enable/disable line numbers +- `lineNumbersInTable`: Use table format for better copy/paste + +### Table of Contents + +- `startLevel`: First heading level to include (2 = h2) +- `endLevel`: Last heading level to include (3 = h3) +- `ordered`: Use ordered (`Normal text (16px)
+Large text (18px)
+XL text (20px)
+Small text (14px)
+``` + +### Custom Fonts + +To use different fonts: + +1. **Add Font Files** to `static/fonts/` or use CDN +2. **Update Tailwind Config**: +```javascript +fontFamily: { + sans: ['Your Font', 'system-ui', 'sans-serif'], + heading: ['Your Heading Font', 'sans-serif'] +} +``` +3. **Load Font** in baseof.html or CSS + +## Custom Components + +Pre-built component classes for common UI elements. + +### Buttons + +**Primary Button**: +```html +Get Started +``` + +CSS: +```css +.btn { + @apply inline-flex items-center justify-center px-6 py-3 font-medium transition duration-200 ease-in-out; + border-radius: 2rem; +} + +.btn-primary { + @apply btn bg-primary-600 text-white hover:bg-primary-700 hover:scale-105; +} +``` + +**Secondary Button**: +```html +Learn More +``` + +**Outline Button**: +```html +View Demo +``` + +### Cards + +**Standard Card**: +```html +Card content goes here
+{{ .Description }}
+{{ .description }}
+{{ .image_caption }}
+{{ .description }}
+Join our team and help shape the future of SaaS. We're always looking for talented individuals who share our passion for innovation.
+{{ .Description | default .Summary }}
+{{ .Description }}
+{{ .description }}
+{{ .Params.demo.description }}
+{{ . }}
+ {{ end }} + +{{ .Site.Params.cta.description }}
++ {{ if .description }} + {{ .description }} + {{ else }} + {{ if eq $lang "zh-cn" }}ๅฐๆๆฐๆ็ซ ็ดๆฅๅ้ๅฐๆจ็ๆถไปถ็ฎฑ{{ else }}Get the latest posts delivered right to your inbox{{ end }} + {{ end }} +
+ + ++ {{ with .Description }} + {{ . }} + {{ else }} + {{ .Summary | truncate 160 }} + {{ end }} +
+ + +{{ $description }}
+{{ $subtitle }}
+{{ index $parts 3 }}
+{{ .Get "title" | default (i18n "trustedByCompanies") }}
+{{ . }}
+ {{ end }} +{{ $description }}
+{{ index $parts 1 }}
+{{ $description }}
++ {{ $sub_headline | safeHTML }} +
+{{ . }}
+ {{ end }} +{{ .description }}
++ {{ .price }} + {{ i18n "perMonth" }} +
++ {{ .additional_price }} + {{ i18n "perMonth" }} +
+{{ . }}
+ {{ end }} +{{ $plan.description }}
+{{ .Get "title" }}
+{{ .Get "description" | default (i18n "testimonialsDescription") }}
+{{ .title }}
+{{ .quote }}
+{{ .Get "description" }}
+