From f3eba7dd3463bfdf1364c6e6eec85a066e79755b Mon Sep 17 00:00:00 2001 From: logikonline Date: Mon, 16 Mar 2026 22:18:53 -0400 Subject: [PATCH] feat(pages): add 5 new landing page templates Add Documentation First, Developer Tool, Visual Showcase, CLI Terminal, and Architecture Deep Dive templates. Brings total templates to 9. Each template has unique design language and target audience: Documentation First for docs-heavy projects, Developer Tool for technical products, Visual Showcase for design/media projects, CLI Terminal for command-line tools, Architecture Deep Dive for technical deep-dives. Updates template display names for clarity. --- modules/pages/config.go | 15 +- routers/web/pages/pages.go | 23 +- templates/pages/architecture-deep-dive.tmpl | 1539 ++++++++++++++++++ templates/pages/cli-terminal.tmpl | 1554 ++++++++++++++++++ templates/pages/developer-tool.tmpl | 1427 +++++++++++++++++ templates/pages/documentation-first.tmpl | 1451 +++++++++++++++++ templates/pages/visual-showcase.tmpl | 1559 +++++++++++++++++++ 7 files changed, 7559 insertions(+), 9 deletions(-) create mode 100644 templates/pages/architecture-deep-dive.tmpl create mode 100644 templates/pages/cli-terminal.tmpl create mode 100644 templates/pages/developer-tool.tmpl create mode 100644 templates/pages/documentation-first.tmpl create mode 100644 templates/pages/visual-showcase.tmpl diff --git a/modules/pages/config.go b/modules/pages/config.go index f5813879b8..d51ca12a58 100644 --- a/modules/pages/config.go +++ b/modules/pages/config.go @@ -393,7 +393,7 @@ func DefaultConfig() *LandingConfig { // ValidTemplates returns the list of valid template names func ValidTemplates() []string { - return []string{"open-source-hero", "minimalist-docs", "saas-conversion", "bold-marketing"} + return []string{"open-source-hero", "minimalist-docs", "saas-conversion", "bold-marketing", "documentation-first", "developer-tool", "visual-showcase", "cli-terminal", "architecture-deep-dive"} } // IsValidTemplate checks if a template name is valid @@ -404,9 +404,14 @@ func IsValidTemplate(name string) bool { // TemplateDisplayNames returns a map of template names to display names func TemplateDisplayNames() map[string]string { return map[string]string{ - "open-source-hero": "Open Source Hero", - "minimalist-docs": "Minimalist Docs", - "saas-conversion": "SaaS Conversion", - "bold-marketing": "Bold Marketing", + "open-source-hero": "Open Source Product", + "minimalist-docs": "Minimalist Product", + "saas-conversion": "SaaS Product", + "bold-marketing": "Bold Marketing Product", + "documentation-first": "Documentation First", + "developer-tool": "Developer Tool", + "visual-showcase": "Visual Showcase", + "cli-terminal": "CLI Terminal", + "architecture-deep-dive": "Architecture Deep Dive", } } diff --git a/routers/web/pages/pages.go b/routers/web/pages/pages.go index 88cfc7461b..a2dac37082 100644 --- a/routers/web/pages/pages.go +++ b/routers/web/pages/pages.go @@ -40,10 +40,15 @@ import ( ) const ( - tplPagesOpenSourceHero templates.TplName = "pages/open-source-hero" - tplPagesMinimalistDocs templates.TplName = "pages/minimalist-docs" - tplPagesSaasConversion templates.TplName = "pages/saas-conversion" - tplPagesBoldMarketing templates.TplName = "pages/bold-marketing" + tplPagesOpenSourceHero templates.TplName = "pages/open-source-hero" + tplPagesMinimalistDocs templates.TplName = "pages/minimalist-docs" + tplPagesSaasConversion templates.TplName = "pages/saas-conversion" + tplPagesBoldMarketing templates.TplName = "pages/bold-marketing" + tplPagesDocumentationFirst templates.TplName = "pages/documentation-first" + tplPagesDeveloperTool templates.TplName = "pages/developer-tool" + tplPagesVisualShowcase templates.TplName = "pages/visual-showcase" + tplPagesCLITerminal templates.TplName = "pages/cli-terminal" + tplPagesArchitectureDeepDive templates.TplName = "pages/architecture-deep-dive" ) // ServeLandingPage serves the landing page for a repository @@ -539,6 +544,16 @@ func selectTemplate(templateName string) templates.TplName { return tplPagesSaasConversion case "bold-marketing": return tplPagesBoldMarketing + case "documentation-first": + return tplPagesDocumentationFirst + case "developer-tool": + return tplPagesDeveloperTool + case "visual-showcase": + return tplPagesVisualShowcase + case "cli-terminal": + return tplPagesCLITerminal + case "architecture-deep-dive": + return tplPagesArchitectureDeepDive case "open-source-hero": return tplPagesOpenSourceHero default: diff --git a/templates/pages/architecture-deep-dive.tmpl b/templates/pages/architecture-deep-dive.tmpl new file mode 100644 index 0000000000..59bfd80eb7 --- /dev/null +++ b/templates/pages/architecture-deep-dive.tmpl @@ -0,0 +1,1539 @@ +{{template "pages/base_head" .}} + + +
+ + + + {{if .PageIsBlogDetail}} + +
+
+ {{if .BlogPost.FeaturedImage}} +
+ {{.BlogPost.Title}} +
+ {{end}} +

{{.BlogPost.Title}}

+ {{if .BlogPost.Subtitle}}

{{.BlogPost.Subtitle}}

{{end}} +
+ {{if .BlogPost.Author}}{{.BlogPost.Author.DisplayName}}·{{end}} + {{DateUtils.AbsoluteShort .BlogPost.CreatedUnix}} + {{if .BlogTags}}·{{range .BlogTags}}{{.}} {{end}}{{end}} +
+
+ {{.BlogRenderedContent}} +
+
+ + {{svg "octicon-arrow-left" 16}} Back to Blog + +
+
+
+ {{else if .PageIsBlogList}} + +
+
+
+ +

{{if .Config.Blog.Headline}}{{.Config.Blog.Headline}}{{else}}All Posts{{end}}

+ {{if .Config.Blog.Subheadline}}

{{.Config.Blog.Subheadline}}

{{end}} +
+ + {{if gt .BlogListTotal 9}} +
+ {{template "base/paginate" .}} +
+ {{end}} +
+
+ {{else}} + +
+
+
+ + {{if .LatestRelease}}v{{.LatestReleaseTag}} released{{else}}Open Source{{end}} +
+ +
+ +

{{if .Config.Hero.Headline}}{{.Config.Hero.Headline}}{{else}}{{.Repository.Name}}{{end}}

+ +

+ {{if .Config.Hero.Subheadline}}{{.Config.Hero.Subheadline}}{{else}}{{.Repository.Description}}{{end}} +

+ +
+ {{if .Config.Hero.PrimaryCTA.Label}} + + {{.Config.Hero.PrimaryCTA.Label}} + {{svg "octicon-arrow-right" 16}} + + {{else}} + + Get Started + {{svg "octicon-arrow-right" 16}} + + {{end}} + + {{if .Config.Hero.SecondaryCTA.Label}} + + GitCaddy + {{.Config.Hero.SecondaryCTA.Label}} + + {{else}} + + GitCaddy + View Source + + {{end}} +
+ + {{if .Config.Hero.CodeExample}} +
+ $ + {{.Config.Hero.CodeExample}} + +
+ {{end}} +
+
+ + + {{if or .Config.Stats (gt .NumStars 0)}} +
+
+ {{if .Config.Stats}} + {{range .Config.Stats}} +
+
{{.Value}}
+
{{.Label}}
+
+ {{end}} + {{else}} +
+
{{.NumStars}}
+
Stars
+
+
+
{{.NumForks}}
+
Forks
+
+ {{if .LatestRelease}} +
+
v{{.LatestReleaseTag}}
+
Latest
+
+ {{end}} + {{end}} +
+
+ {{end}} + + + {{if and .PublicReleases .LatestRelease .LatestRelease.Attachments}} +
+
+

Download v{{.LatestReleaseTag}}

+

Get the latest release

+ {{$windowsFiles := newSlice}}{{$macosFiles := newSlice}}{{$linuxFiles := newSlice}}{{$androidFiles := newSlice}}{{$iosFiles := newSlice}}{{$otherFiles := newSlice}} + {{range $att := .LatestRelease.Attachments}} + {{$name := StringUtils.ToLower $att.Name}} + {{if or (StringUtils.Contains $name "android") (StringUtils.HasSuffix $name ".apk") (StringUtils.HasSuffix $name ".aab") (StringUtils.HasSuffix $name ".xapk")}} + {{$androidFiles = Append $androidFiles $att}} + {{else if or (StringUtils.Contains $name "ios") (StringUtils.Contains $name "iphone") (StringUtils.Contains $name "ipad") (StringUtils.HasSuffix $name ".ipa")}} + {{$iosFiles = Append $iosFiles $att}} + {{else if or (StringUtils.Contains $name "windows") (StringUtils.Contains $name "win64") (StringUtils.Contains $name "win32") (StringUtils.Contains $name "-win.") (StringUtils.Contains $name "_win.") (StringUtils.Contains $name "-win-") (StringUtils.Contains $name "_win_") (StringUtils.HasSuffix $name ".exe") (StringUtils.HasSuffix $name ".msi") (StringUtils.HasSuffix $name ".msix") (StringUtils.HasSuffix $name ".msixbundle") (StringUtils.HasSuffix $name ".appx") (StringUtils.HasSuffix $name ".appxbundle")}} + {{$windowsFiles = Append $windowsFiles $att}} + {{else if or (StringUtils.Contains $name "darwin") (StringUtils.Contains $name "macos") (StringUtils.Contains $name "-mac.") (StringUtils.Contains $name "_mac.") (StringUtils.Contains $name "-mac-") (StringUtils.Contains $name "_mac_") (StringUtils.Contains $name "osx") (StringUtils.HasSuffix $name ".dmg") (StringUtils.HasSuffix $name ".pkg")}} + {{$macosFiles = Append $macosFiles $att}} + {{else if or (StringUtils.Contains $name "linux") (StringUtils.Contains $name "-lin.") (StringUtils.Contains $name "_lin.") (StringUtils.Contains $name "-lin-") (StringUtils.Contains $name "_lin_") (StringUtils.HasSuffix $name ".deb") (StringUtils.HasSuffix $name ".rpm") (StringUtils.HasSuffix $name ".appimage") (StringUtils.HasSuffix $name ".flatpak") (StringUtils.HasSuffix $name ".snap")}} + {{$linuxFiles = Append $linuxFiles $att}} + {{else}} + {{$otherFiles = Append $otherFiles $att}} + {{end}} + {{end}} + {{if $windowsFiles}} +
+

{{svg "octicon-device-desktop" 16}} Windows

+ +
+ {{end}} + {{if $macosFiles}} +
+

{{svg "octicon-device-desktop" 16}} macOS

+ +
+ {{end}} + {{if $linuxFiles}} +
+

{{svg "octicon-terminal" 16}} Linux

+ +
+ {{end}} + {{if not $.HideMobileReleases}} + {{if $androidFiles}} +
+

{{svg "octicon-device-mobile" 16}} Android

+ +
+ {{end}} + {{if $iosFiles}} +
+

{{svg "octicon-device-mobile" 16}} iOS

+ +
+ {{end}} + {{end}} + {{if or $.GooglePlayID $.AppStoreID}} +
+

{{svg "octicon-device-mobile" 16}} App Stores

+
+ {{if $.GooglePlayID}} + + + Google Play + + {{end}} + {{if $.AppStoreID}} + + + App Store + + {{end}} +
+
+ {{end}} + {{if $otherFiles}} +
+

{{svg "octicon-file" 16}} Other

+ +
+ {{end}} +
+
+ {{end}} + + + {{if .Config.ValueProps}} +
+
+
+ +

{{if .Config.Brand.Name}}Why {{.Config.Brand.Name}}?{{else}}Why Choose Us{{end}}

+

Everything you need to get started quickly.

+
+
+ {{range .Config.ValueProps}} +
+
+ {{svg (printf "octicon-%s" (or .Icon "check")) 20}} +
+

{{.Title}}

+

{{.Description}}

+
+ {{end}} +
+
+
+ {{end}} + + + {{if .Config.Features}} +
+
+
+ +

Features

+

Powerful capabilities at your fingertips.

+
+
+ {{range .Config.Features}} +
+
+ {{svg (printf "octicon-%s" (or .Icon "zap")) 20}} +
+

{{.Title}}

+

{{.Description}}

+
+ {{end}} +
+
+
+ {{end}} + + + {{if or .Config.SocialProof.Logos .Config.SocialProof.Testimonials}} +
+
+ {{if .Config.SocialProof.Logos}} +
+ {{range .Config.SocialProof.Logos}} +
{{.}}
+ {{end}} +
+ {{end}} + {{if .Config.SocialProof.Testimonials}} +
+ {{range .Config.SocialProof.Testimonials}} + + {{end}} +
+ + {{end}} +
+
+ {{end}} + + + {{if .Config.Pricing.Plans}} +
+
+
+ +

{{if .Config.Pricing.Headline}}{{.Config.Pricing.Headline}}{{else}}Pricing{{end}}

+

{{if .Config.Pricing.Subheadline}}{{.Config.Pricing.Subheadline}}{{else}}Choose the plan that works for you{{end}}

+
+
+ {{range .Config.Pricing.Plans}} +
+ {{if .Featured}}Popular{{end}} +
{{.Name}}
+
{{.Price}}
+
{{.Period}}
+ {{if .Features}} +
    + {{range .Features}}
  • {{.}}
  • {{end}} +
+ {{end}} + {{if .CTA}}{{.CTA}}{{else}}Get Started{{end}} +
+ {{end}} +
+
+
+ {{end}} + + + {{if .Config.CTASection.Headline}} +
+
+

{{.Config.CTASection.Headline}}

+ {{if .Config.CTASection.Subheadline}} +

{{.Config.CTASection.Subheadline}}

+ {{end}} + + {{if .Config.CTASection.Button.Label}}{{.Config.CTASection.Button.Label}}{{else}}Get Started{{end}} + {{svg "octicon-arrow-right" 16}} + +
+
+ {{end}} + + + {{if and .Config.Blog.Enabled .BlogPosts}} +
+
+
+ +

{{if .Config.Blog.Headline}}{{.Config.Blog.Headline}}{{else}}Latest Posts{{end}}

+ {{if .Config.Blog.Subheadline}}

{{.Config.Blog.Subheadline}}

{{end}} +
+ + {{if .Config.Blog.CTAButton.Label}} + + {{end}} +
+
+ {{end}} + + + {{if and .Config.Gallery.Enabled .GalleryImages}} + + {{end}} + + {{end}}{{/* end PageIsBlogDetail / PageIsBlogList / else */}} + + + +
+ + + + +{{template "pages/base_footer" .}} diff --git a/templates/pages/cli-terminal.tmpl b/templates/pages/cli-terminal.tmpl new file mode 100644 index 0000000000..228ab59fc0 --- /dev/null +++ b/templates/pages/cli-terminal.tmpl @@ -0,0 +1,1554 @@ +{{template "pages/base_head" .}} + + +
+ + + + {{if .PageIsBlogDetail}} + +
+
+ {{if .BlogPost.FeaturedImage}} +
+ {{.BlogPost.Title}} +
+ {{end}} +

{{.BlogPost.Title}}

+ {{if .BlogPost.Subtitle}}

{{.BlogPost.Subtitle}}

{{end}} +
+ {{if .BlogPost.Author}}{{.BlogPost.Author.DisplayName}}|{{end}} + {{DateUtils.AbsoluteShort .BlogPost.CreatedUnix}} + {{if .BlogTags}}|{{range .BlogTags}}{{.}} {{end}}{{end}} +
+
+ {{.BlogRenderedContent}} +
+
+ + {{svg "octicon-arrow-left" 16}} Back to Blog + +
+
+
+ {{else if .PageIsBlogList}} + +
+
+
+ +

{{if .Config.Blog.Headline}}{{.Config.Blog.Headline}}{{else}}All Posts{{end}}

+ {{if .Config.Blog.Subheadline}}

{{.Config.Blog.Subheadline}}

{{end}} +
+ + {{if gt .BlogListTotal 9}} +
+ {{template "base/paginate" .}} +
+ {{end}} +
+
+ {{else}} + +
+
+
+ +
+
+ + {{if .LatestRelease}}v{{.LatestReleaseTag}} released{{else}}Open Source{{end}} +
+ +

{{if .Config.Hero.Headline}}{{.Config.Hero.Headline}}{{else}}{{.Repository.Name}}{{end}}

+ +

+ {{if .Config.Hero.Subheadline}}{{.Config.Hero.Subheadline}}{{else}}{{.Repository.Description}}{{end}} +

+ +
+ {{if .Config.Hero.PrimaryCTA.Label}} + + {{.Config.Hero.PrimaryCTA.Label}} + {{svg "octicon-arrow-right" 16}} + + {{else}} + + Get Started + {{svg "octicon-arrow-right" 16}} + + {{end}} + + {{if .Config.Hero.SecondaryCTA.Label}} + + GitCaddy + {{.Config.Hero.SecondaryCTA.Label}} + + {{else}} + + GitCaddy + View Source + + {{end}} +
+ + {{if .Config.Hero.CodeExample}} +
+
+ + + + terminal +
+
+ $ + {{.Config.Hero.CodeExample}} + +
+
+ {{end}} +
+
+ + + {{if or .Config.Stats (gt .NumStars 0)}} +
+
+ {{if .Config.Stats}} + {{range .Config.Stats}} +
+
{{.Value}}
+
{{.Label}}
+
+ {{end}} + {{else}} +
+
{{.NumStars}}
+
Stars
+
+
+
{{.NumForks}}
+
Forks
+
+ {{if .LatestRelease}} +
+
v{{.LatestReleaseTag}}
+
Latest
+
+ {{end}} + {{end}} +
+
+ {{end}} + + + {{if and .PublicReleases .LatestRelease .LatestRelease.Attachments}} +
+
+

Download v{{.LatestReleaseTag}}

+

Get the latest release

+ {{$windowsFiles := newSlice}}{{$macosFiles := newSlice}}{{$linuxFiles := newSlice}}{{$androidFiles := newSlice}}{{$iosFiles := newSlice}}{{$otherFiles := newSlice}} + {{range $att := .LatestRelease.Attachments}} + {{$name := StringUtils.ToLower $att.Name}} + {{if or (StringUtils.Contains $name "android") (StringUtils.HasSuffix $name ".apk") (StringUtils.HasSuffix $name ".aab") (StringUtils.HasSuffix $name ".xapk")}} + {{$androidFiles = Append $androidFiles $att}} + {{else if or (StringUtils.Contains $name "ios") (StringUtils.Contains $name "iphone") (StringUtils.Contains $name "ipad") (StringUtils.HasSuffix $name ".ipa")}} + {{$iosFiles = Append $iosFiles $att}} + {{else if or (StringUtils.Contains $name "windows") (StringUtils.Contains $name "win64") (StringUtils.Contains $name "win32") (StringUtils.Contains $name "-win.") (StringUtils.Contains $name "_win.") (StringUtils.Contains $name "-win-") (StringUtils.Contains $name "_win_") (StringUtils.HasSuffix $name ".exe") (StringUtils.HasSuffix $name ".msi") (StringUtils.HasSuffix $name ".msix") (StringUtils.HasSuffix $name ".msixbundle") (StringUtils.HasSuffix $name ".appx") (StringUtils.HasSuffix $name ".appxbundle")}} + {{$windowsFiles = Append $windowsFiles $att}} + {{else if or (StringUtils.Contains $name "darwin") (StringUtils.Contains $name "macos") (StringUtils.Contains $name "-mac.") (StringUtils.Contains $name "_mac.") (StringUtils.Contains $name "-mac-") (StringUtils.Contains $name "_mac_") (StringUtils.Contains $name "osx") (StringUtils.HasSuffix $name ".dmg") (StringUtils.HasSuffix $name ".pkg")}} + {{$macosFiles = Append $macosFiles $att}} + {{else if or (StringUtils.Contains $name "linux") (StringUtils.Contains $name "-lin.") (StringUtils.Contains $name "_lin.") (StringUtils.Contains $name "-lin-") (StringUtils.Contains $name "_lin_") (StringUtils.HasSuffix $name ".deb") (StringUtils.HasSuffix $name ".rpm") (StringUtils.HasSuffix $name ".appimage") (StringUtils.HasSuffix $name ".flatpak") (StringUtils.HasSuffix $name ".snap")}} + {{$linuxFiles = Append $linuxFiles $att}} + {{else}} + {{$otherFiles = Append $otherFiles $att}} + {{end}} + {{end}} + {{if $windowsFiles}} +
+

{{svg "octicon-device-desktop" 16}} Windows

+ +
+ {{end}} + {{if $macosFiles}} +
+

{{svg "octicon-device-desktop" 16}} macOS

+ +
+ {{end}} + {{if $linuxFiles}} +
+

{{svg "octicon-terminal" 16}} Linux

+ +
+ {{end}} + {{if not $.HideMobileReleases}} + {{if $androidFiles}} +
+

{{svg "octicon-device-mobile" 16}} Android

+ +
+ {{end}} + {{if $iosFiles}} +
+

{{svg "octicon-device-mobile" 16}} iOS

+ +
+ {{end}} + {{end}} + {{if or $.GooglePlayID $.AppStoreID}} +
+

{{svg "octicon-device-mobile" 16}} App Stores

+
+ {{if $.GooglePlayID}} + + + Google Play + + {{end}} + {{if $.AppStoreID}} + + + App Store + + {{end}} +
+
+ {{end}} + {{if $otherFiles}} +
+

{{svg "octicon-file" 16}} Other

+ +
+ {{end}} +
+
+ {{end}} + + + {{if .Config.ValueProps}} +
+
+
+ +

{{if .Config.Brand.Name}}Why {{.Config.Brand.Name}}?{{else}}Why Choose Us{{end}}

+

Everything you need to get started quickly.

+
+
+ {{range .Config.ValueProps}} +
+
+ {{svg (printf "octicon-%s" (or .Icon "check")) 20}} +
+

{{.Title}}

+

{{.Description}}

+
+ {{end}} +
+
+
+ {{end}} + + + {{if .Config.Features}} +
+
+
+ +

Features

+

Powerful capabilities at your fingertips.

+
+
+ {{range .Config.Features}} +
+
+ {{svg (printf "octicon-%s" (or .Icon "zap")) 20}} +
+

{{.Title}}

+

{{.Description}}

+
+ {{end}} +
+
+
+ {{end}} + + + {{if or .Config.SocialProof.Logos .Config.SocialProof.Testimonials}} +
+
+ {{if .Config.SocialProof.Logos}} +
+ {{range .Config.SocialProof.Logos}} +
{{.}}
+ {{end}} +
+ {{end}} + {{if .Config.SocialProof.Testimonials}} +
+ {{range .Config.SocialProof.Testimonials}} + + {{end}} +
+ + {{end}} +
+
+ {{end}} + + + {{if .Config.Pricing.Plans}} +
+
+
+ +

{{if .Config.Pricing.Headline}}{{.Config.Pricing.Headline}}{{else}}Pricing{{end}}

+

{{if .Config.Pricing.Subheadline}}{{.Config.Pricing.Subheadline}}{{else}}Choose the plan that works for you{{end}}

+
+
+ {{range .Config.Pricing.Plans}} +
+ {{if .Featured}}Popular{{end}} +
{{.Name}}
+
{{.Price}}
+
{{.Period}}
+ {{if .Features}} +
    + {{range .Features}}
  • {{.}}
  • {{end}} +
+ {{end}} + {{if .CTA}}{{.CTA}}{{else}}Get Started{{end}} +
+ {{end}} +
+
+
+ {{end}} + + + {{if .Config.CTASection.Headline}} +
+
+

{{.Config.CTASection.Headline}}

+ {{if .Config.CTASection.Subheadline}} +

{{.Config.CTASection.Subheadline}}

+ {{end}} + + {{if .Config.CTASection.Button.Label}}{{.Config.CTASection.Button.Label}}{{else}}Get Started{{end}} + {{svg "octicon-arrow-right" 16}} + +
+
+ {{end}} + + + {{if and .Config.Blog.Enabled .BlogPosts}} +
+
+
+ +

{{if .Config.Blog.Headline}}{{.Config.Blog.Headline}}{{else}}Latest Posts{{end}}

+ {{if .Config.Blog.Subheadline}}

{{.Config.Blog.Subheadline}}

{{end}} +
+ + {{if .Config.Blog.CTAButton.Label}} + + {{end}} +
+
+ {{end}} + + + {{if and .Config.Gallery.Enabled .GalleryImages}} + + {{end}} + + {{end}}{{/* end PageIsBlogDetail / PageIsBlogList / else */}} + + + +
+ + + + +{{template "pages/base_footer" .}} diff --git a/templates/pages/developer-tool.tmpl b/templates/pages/developer-tool.tmpl new file mode 100644 index 0000000000..298ecf5ae9 --- /dev/null +++ b/templates/pages/developer-tool.tmpl @@ -0,0 +1,1427 @@ +{{template "pages/base_head" .}} + + +
+ + + + {{if .PageIsBlogDetail}} + +
+
+ {{if .BlogPost.FeaturedImage}} +
+ {{.BlogPost.Title}} +
+ {{end}} +

{{.BlogPost.Title}}

+ {{if .BlogPost.Subtitle}}

{{.BlogPost.Subtitle}}

{{end}} +
+ {{if .BlogPost.Author}}{{.BlogPost.Author.DisplayName}}·{{end}} + {{DateUtils.AbsoluteShort .BlogPost.CreatedUnix}} + {{if .BlogTags}}·{{range .BlogTags}}{{.}} {{end}}{{end}} +
+
+ {{.BlogRenderedContent}} +
+
+ + {{svg "octicon-arrow-left" 16}} Back to Blog + +
+
+
+ {{else if .PageIsBlogList}} + +
+
+
+ +

{{if .Config.Blog.Headline}}{{.Config.Blog.Headline}}{{else}}All Posts{{end}}

+ {{if .Config.Blog.Subheadline}}

{{.Config.Blog.Subheadline}}

{{end}} +
+ + {{if gt .BlogListTotal 9}} +
+ {{template "base/paginate" .}} +
+ {{end}} +
+
+ {{else}} + +
+
+
+ status + + {{if .LatestRelease}}v{{.LatestReleaseTag}} passing{{else}}Open Source{{end}} +
+ +

{{if .Config.Hero.Headline}}{{.Config.Hero.Headline}}{{else}}{{.Repository.Name}}{{end}}

+ +

+ {{if .Config.Hero.Subheadline}}{{.Config.Hero.Subheadline}}{{else}}{{.Repository.Description}}{{end}} +

+ +
+ {{if .Config.Hero.PrimaryCTA.Label}} + + {{.Config.Hero.PrimaryCTA.Label}} + {{svg "octicon-arrow-right" 16}} + + {{else}} + + Get Started + {{svg "octicon-arrow-right" 16}} + + {{end}} + + {{if .Config.Hero.SecondaryCTA.Label}} + + GitCaddy + {{.Config.Hero.SecondaryCTA.Label}} + + {{else}} + + GitCaddy + View Source + + {{end}} +
+ + {{if .Config.Hero.CodeExample}} +
+ $ + {{.Config.Hero.CodeExample}} + +
+ {{end}} +
+
+ + + {{if or .Config.Stats (gt .NumStars 0)}} +
+
+ {{if .Config.Stats}} + {{range .Config.Stats}} +
+
{{.Value}}
+
{{.Label}}
+
+ {{end}} + {{else}} +
+
{{.NumStars}}
+
Stars
+
+
+
{{.NumForks}}
+
Forks
+
+ {{if .LatestRelease}} +
+
v{{.LatestReleaseTag}}
+
Latest
+
+ {{end}} + {{end}} +
+
+ {{end}} + + + {{if and .PublicReleases .LatestRelease .LatestRelease.Attachments}} +
+
+

Download v{{.LatestReleaseTag}}

+

Get the latest release

+ {{$windowsFiles := newSlice}}{{$macosFiles := newSlice}}{{$linuxFiles := newSlice}}{{$androidFiles := newSlice}}{{$iosFiles := newSlice}}{{$otherFiles := newSlice}} + {{range $att := .LatestRelease.Attachments}} + {{$name := StringUtils.ToLower $att.Name}} + {{if or (StringUtils.Contains $name "android") (StringUtils.HasSuffix $name ".apk") (StringUtils.HasSuffix $name ".aab") (StringUtils.HasSuffix $name ".xapk")}} + {{$androidFiles = Append $androidFiles $att}} + {{else if or (StringUtils.Contains $name "ios") (StringUtils.Contains $name "iphone") (StringUtils.Contains $name "ipad") (StringUtils.HasSuffix $name ".ipa")}} + {{$iosFiles = Append $iosFiles $att}} + {{else if or (StringUtils.Contains $name "windows") (StringUtils.Contains $name "win64") (StringUtils.Contains $name "win32") (StringUtils.Contains $name "-win.") (StringUtils.Contains $name "_win.") (StringUtils.Contains $name "-win-") (StringUtils.Contains $name "_win_") (StringUtils.HasSuffix $name ".exe") (StringUtils.HasSuffix $name ".msi") (StringUtils.HasSuffix $name ".msix") (StringUtils.HasSuffix $name ".msixbundle") (StringUtils.HasSuffix $name ".appx") (StringUtils.HasSuffix $name ".appxbundle")}} + {{$windowsFiles = Append $windowsFiles $att}} + {{else if or (StringUtils.Contains $name "darwin") (StringUtils.Contains $name "macos") (StringUtils.Contains $name "-mac.") (StringUtils.Contains $name "_mac.") (StringUtils.Contains $name "-mac-") (StringUtils.Contains $name "_mac_") (StringUtils.Contains $name "osx") (StringUtils.HasSuffix $name ".dmg") (StringUtils.HasSuffix $name ".pkg")}} + {{$macosFiles = Append $macosFiles $att}} + {{else if or (StringUtils.Contains $name "linux") (StringUtils.Contains $name "-lin.") (StringUtils.Contains $name "_lin.") (StringUtils.Contains $name "-lin-") (StringUtils.Contains $name "_lin_") (StringUtils.HasSuffix $name ".deb") (StringUtils.HasSuffix $name ".rpm") (StringUtils.HasSuffix $name ".appimage") (StringUtils.HasSuffix $name ".flatpak") (StringUtils.HasSuffix $name ".snap")}} + {{$linuxFiles = Append $linuxFiles $att}} + {{else}} + {{$otherFiles = Append $otherFiles $att}} + {{end}} + {{end}} + {{if $windowsFiles}} +
+

{{svg "octicon-device-desktop" 16}} Windows

+ +
+ {{end}} + {{if $macosFiles}} +
+

{{svg "octicon-device-desktop" 16}} macOS

+ +
+ {{end}} + {{if $linuxFiles}} +
+

{{svg "octicon-terminal" 16}} Linux

+ +
+ {{end}} + {{if not $.HideMobileReleases}} + {{if $androidFiles}} +
+

{{svg "octicon-device-mobile" 16}} Android

+ +
+ {{end}} + {{if $iosFiles}} +
+

{{svg "octicon-device-mobile" 16}} iOS

+ +
+ {{end}} + {{end}} + {{if or $.GooglePlayID $.AppStoreID}} +
+

{{svg "octicon-device-mobile" 16}} App Stores

+
+ {{if $.GooglePlayID}} + + + Google Play + + {{end}} + {{if $.AppStoreID}} + + + App Store + + {{end}} +
+
+ {{end}} + {{if $otherFiles}} +
+

{{svg "octicon-file" 16}} Other

+ +
+ {{end}} +
+
+ {{end}} + + + {{if .Config.ValueProps}} +
+
+
+ +

{{if .Config.Brand.Name}}Why {{.Config.Brand.Name}}?{{else}}Why Choose Us{{end}}

+

Everything you need to get started quickly.

+
+
+ {{range .Config.ValueProps}} +
+
+ {{svg (printf "octicon-%s" (or .Icon "check")) 20}} +
+

{{.Title}}

+

{{.Description}}

+
+ {{end}} +
+
+
+ {{end}} + + + {{if .Config.Features}} +
+
+
+ +

Features

+

Powerful capabilities at your fingertips.

+
+
+ {{range .Config.Features}} +
+
+ {{svg (printf "octicon-%s" (or .Icon "zap")) 20}} +
+

{{.Title}}

+

{{.Description}}

+
+ {{end}} +
+
+
+ {{end}} + + + {{if or .Config.SocialProof.Logos .Config.SocialProof.Testimonials}} +
+
+ {{if .Config.SocialProof.Logos}} +
+ {{range .Config.SocialProof.Logos}} +
{{.}}
+ {{end}} +
+ {{end}} + {{if .Config.SocialProof.Testimonials}} +
+ {{range .Config.SocialProof.Testimonials}} + + {{end}} +
+ + {{end}} +
+
+ {{end}} + + + {{if .Config.Pricing.Plans}} +
+
+
+ +

{{if .Config.Pricing.Headline}}{{.Config.Pricing.Headline}}{{else}}Pricing{{end}}

+

{{if .Config.Pricing.Subheadline}}{{.Config.Pricing.Subheadline}}{{else}}Choose the plan that works for you{{end}}

+
+
+ {{range .Config.Pricing.Plans}} +
+ {{if .Featured}}Popular{{end}} +
{{.Name}}
+
{{.Price}}
+
{{.Period}}
+ {{if .Features}} +
    + {{range .Features}}
  • {{.}}
  • {{end}} +
+ {{end}} + {{if .CTA}}{{.CTA}}{{else}}Get Started{{end}} +
+ {{end}} +
+
+
+ {{end}} + + + {{if .Config.CTASection.Headline}} +
+
+

{{.Config.CTASection.Headline}}

+ {{if .Config.CTASection.Subheadline}} +

{{.Config.CTASection.Subheadline}}

+ {{end}} + + {{if .Config.CTASection.Button.Label}}{{.Config.CTASection.Button.Label}}{{else}}Get Started{{end}} + {{svg "octicon-arrow-right" 16}} + +
+
+ {{end}} + + + {{if and .Config.Blog.Enabled .BlogPosts}} +
+
+
+ +

{{if .Config.Blog.Headline}}{{.Config.Blog.Headline}}{{else}}Latest Posts{{end}}

+ {{if .Config.Blog.Subheadline}}

{{.Config.Blog.Subheadline}}

{{end}} +
+ + {{if .Config.Blog.CTAButton.Label}} + + {{end}} +
+
+ {{end}} + + + {{if and .Config.Gallery.Enabled .GalleryImages}} + + {{end}} + + {{end}}{{/* end PageIsBlogDetail / PageIsBlogList / else */}} + + + +
+ + + + +{{template "pages/base_footer" .}} \ No newline at end of file diff --git a/templates/pages/documentation-first.tmpl b/templates/pages/documentation-first.tmpl new file mode 100644 index 0000000000..e6f0c7caf0 --- /dev/null +++ b/templates/pages/documentation-first.tmpl @@ -0,0 +1,1451 @@ +{{template "pages/base_head" .}} + + +
+ + + + {{if .PageIsBlogDetail}} + +
+
+ {{if .BlogPost.FeaturedImage}} +
+ {{.BlogPost.Title}} +
+ {{end}} +

{{.BlogPost.Title}}

+ {{if .BlogPost.Subtitle}}

{{.BlogPost.Subtitle}}

{{end}} +
+ {{if .BlogPost.Author}}{{.BlogPost.Author.DisplayName}}·{{end}} + {{DateUtils.AbsoluteShort .BlogPost.CreatedUnix}} + {{if .BlogTags}}·{{range .BlogTags}}{{.}} {{end}}{{end}} +
+
+ {{.BlogRenderedContent}} +
+
+ + {{svg "octicon-arrow-left" 16}} Back to Blog + +
+
+
+ {{else if .PageIsBlogList}} + +
+
+
+ +

{{if .Config.Blog.Headline}}{{.Config.Blog.Headline}}{{else}}All Posts{{end}}

+ {{if .Config.Blog.Subheadline}}

{{.Config.Blog.Subheadline}}

{{end}} +
+ + {{if gt .BlogListTotal 9}} +
+ {{template "base/paginate" .}} +
+ {{end}} +
+
+ {{else}} + +
+
+
+ + {{if .LatestRelease}}v{{.LatestReleaseTag}} released{{else}}Open Source{{end}} +
+ +

{{if .Config.Hero.Headline}}{{.Config.Hero.Headline}}{{else}}{{.Repository.Name}}{{end}}

+ +

+ {{if .Config.Hero.Subheadline}}{{.Config.Hero.Subheadline}}{{else}}{{.Repository.Description}}{{end}} +

+ +
+ {{if .Config.Hero.PrimaryCTA.Label}} + + {{.Config.Hero.PrimaryCTA.Label}} + {{svg "octicon-arrow-right" 16}} + + {{else}} + + Get Started + {{svg "octicon-arrow-right" 16}} + + {{end}} + + {{if .Config.Hero.SecondaryCTA.Label}} + + GitCaddy + {{.Config.Hero.SecondaryCTA.Label}} + + {{else}} + + GitCaddy + View Source + + {{end}} +
+ + {{if .Config.Hero.CodeExample}} +
+ $ + {{.Config.Hero.CodeExample}} + +
+ {{end}} +
+
+ + + {{if or .Config.Stats (gt .NumStars 0)}} +
+
+ {{if .Config.Stats}} + {{range .Config.Stats}} +
+
{{.Value}}
+
{{.Label}}
+
+ {{end}} + {{else}} +
+
{{.NumStars}}
+
Stars
+
+
+
{{.NumForks}}
+
Forks
+
+ {{if .LatestRelease}} +
+
v{{.LatestReleaseTag}}
+
Latest
+
+ {{end}} + {{end}} +
+
+ {{end}} + + + {{if and .PublicReleases .LatestRelease .LatestRelease.Attachments}} +
+
+

Download v{{.LatestReleaseTag}}

+

Get the latest release

+ {{$windowsFiles := newSlice}}{{$macosFiles := newSlice}}{{$linuxFiles := newSlice}}{{$androidFiles := newSlice}}{{$iosFiles := newSlice}}{{$otherFiles := newSlice}} + {{range $att := .LatestRelease.Attachments}} + {{$name := StringUtils.ToLower $att.Name}} + {{if or (StringUtils.Contains $name "android") (StringUtils.HasSuffix $name ".apk") (StringUtils.HasSuffix $name ".aab") (StringUtils.HasSuffix $name ".xapk")}} + {{$androidFiles = Append $androidFiles $att}} + {{else if or (StringUtils.Contains $name "ios") (StringUtils.Contains $name "iphone") (StringUtils.Contains $name "ipad") (StringUtils.HasSuffix $name ".ipa")}} + {{$iosFiles = Append $iosFiles $att}} + {{else if or (StringUtils.Contains $name "windows") (StringUtils.Contains $name "win64") (StringUtils.Contains $name "win32") (StringUtils.Contains $name "-win.") (StringUtils.Contains $name "_win.") (StringUtils.Contains $name "-win-") (StringUtils.Contains $name "_win_") (StringUtils.HasSuffix $name ".exe") (StringUtils.HasSuffix $name ".msi") (StringUtils.HasSuffix $name ".msix") (StringUtils.HasSuffix $name ".msixbundle") (StringUtils.HasSuffix $name ".appx") (StringUtils.HasSuffix $name ".appxbundle")}} + {{$windowsFiles = Append $windowsFiles $att}} + {{else if or (StringUtils.Contains $name "darwin") (StringUtils.Contains $name "macos") (StringUtils.Contains $name "-mac.") (StringUtils.Contains $name "_mac.") (StringUtils.Contains $name "-mac-") (StringUtils.Contains $name "_mac_") (StringUtils.Contains $name "osx") (StringUtils.HasSuffix $name ".dmg") (StringUtils.HasSuffix $name ".pkg")}} + {{$macosFiles = Append $macosFiles $att}} + {{else if or (StringUtils.Contains $name "linux") (StringUtils.Contains $name "-lin.") (StringUtils.Contains $name "_lin.") (StringUtils.Contains $name "-lin-") (StringUtils.Contains $name "_lin_") (StringUtils.HasSuffix $name ".deb") (StringUtils.HasSuffix $name ".rpm") (StringUtils.HasSuffix $name ".appimage") (StringUtils.HasSuffix $name ".flatpak") (StringUtils.HasSuffix $name ".snap")}} + {{$linuxFiles = Append $linuxFiles $att}} + {{else}} + {{$otherFiles = Append $otherFiles $att}} + {{end}} + {{end}} + {{if $windowsFiles}} +
+

{{svg "octicon-device-desktop" 16}} Windows

+ +
+ {{end}} + {{if $macosFiles}} +
+

{{svg "octicon-device-desktop" 16}} macOS

+ +
+ {{end}} + {{if $linuxFiles}} +
+

{{svg "octicon-terminal" 16}} Linux

+ +
+ {{end}} + {{if not $.HideMobileReleases}} + {{if $androidFiles}} +
+

{{svg "octicon-device-mobile" 16}} Android

+ +
+ {{end}} + {{if $iosFiles}} +
+

{{svg "octicon-device-mobile" 16}} iOS

+ +
+ {{end}} + {{end}} + {{if or $.GooglePlayID $.AppStoreID}} +
+

{{svg "octicon-device-mobile" 16}} App Stores

+
+ {{if $.GooglePlayID}} + + + Google Play + + {{end}} + {{if $.AppStoreID}} + + + App Store + + {{end}} +
+
+ {{end}} + {{if $otherFiles}} +
+

{{svg "octicon-file" 16}} Other

+ +
+ {{end}} +
+
+ {{end}} + + + {{if .Config.ValueProps}} +
+
+
+ +

{{if .Config.Brand.Name}}Why {{.Config.Brand.Name}}?{{else}}Why Choose Us{{end}}

+

Everything you need to get started quickly.

+
+
+ {{range .Config.ValueProps}} +
+
+ {{svg (printf "octicon-%s" (or .Icon "check")) 20}} +
+

{{.Title}}

+

{{.Description}}

+
+ {{end}} +
+
+
+ {{end}} + + + {{if .Config.Features}} +
+
+
+ +

Features

+

Powerful capabilities at your fingertips.

+
+
+ {{range .Config.Features}} +
+
+ {{svg (printf "octicon-%s" (or .Icon "zap")) 20}} +
+

{{.Title}}

+

{{.Description}}

+
+ {{end}} +
+
+
+ {{end}} + + + {{if or .Config.SocialProof.Logos .Config.SocialProof.Testimonials}} +
+
+ {{if .Config.SocialProof.Logos}} +
+ {{range .Config.SocialProof.Logos}} +
{{.}}
+ {{end}} +
+ {{end}} + {{if .Config.SocialProof.Testimonials}} +
+ {{range .Config.SocialProof.Testimonials}} + + {{end}} +
+ + {{end}} +
+
+ {{end}} + + + {{if .Config.Pricing.Plans}} +
+
+
+ +

{{if .Config.Pricing.Headline}}{{.Config.Pricing.Headline}}{{else}}Pricing{{end}}

+

{{if .Config.Pricing.Subheadline}}{{.Config.Pricing.Subheadline}}{{else}}Choose the plan that works for you{{end}}

+
+
+ {{range .Config.Pricing.Plans}} +
+ {{if .Featured}}Popular{{end}} +
{{.Name}}
+
{{.Price}}
+
{{.Period}}
+ {{if .Features}} +
    + {{range .Features}}
  • {{.}}
  • {{end}} +
+ {{end}} + {{if .CTA}}{{.CTA}}{{else}}Get Started{{end}} +
+ {{end}} +
+
+
+ {{end}} + + + {{if .Config.CTASection.Headline}} +
+
+

{{.Config.CTASection.Headline}}

+ {{if .Config.CTASection.Subheadline}} +

{{.Config.CTASection.Subheadline}}

+ {{end}} + + {{if .Config.CTASection.Button.Label}}{{.Config.CTASection.Button.Label}}{{else}}Get Started{{end}} + {{svg "octicon-arrow-right" 16}} + +
+
+ {{end}} + + + {{if and .Config.Blog.Enabled .BlogPosts}} +
+
+
+ +

{{if .Config.Blog.Headline}}{{.Config.Blog.Headline}}{{else}}Latest Posts{{end}}

+ {{if .Config.Blog.Subheadline}}

{{.Config.Blog.Subheadline}}

{{end}} +
+ + {{if .Config.Blog.CTAButton.Label}} + + {{end}} +
+
+ {{end}} + + + {{if and .Config.Gallery.Enabled .GalleryImages}} + + {{end}} + + {{end}}{{/* end PageIsBlogDetail / PageIsBlogList / else */}} + + + +
+ + + + +{{template "pages/base_footer" .}} diff --git a/templates/pages/visual-showcase.tmpl b/templates/pages/visual-showcase.tmpl new file mode 100644 index 0000000000..3d230e37b7 --- /dev/null +++ b/templates/pages/visual-showcase.tmpl @@ -0,0 +1,1559 @@ +{{template "pages/base_head" .}} + + +
+ + + + {{if .PageIsBlogDetail}} + +
+
+ {{if .BlogPost.FeaturedImage}} +
+ {{.BlogPost.Title}} +
+ {{end}} +

{{.BlogPost.Title}}

+ {{if .BlogPost.Subtitle}}

{{.BlogPost.Subtitle}}

{{end}} +
+ {{if .BlogPost.Author}}{{.BlogPost.Author.DisplayName}}·{{end}} + {{DateUtils.AbsoluteShort .BlogPost.CreatedUnix}} + {{if .BlogTags}}·{{range .BlogTags}}{{.}} {{end}}{{end}} +
+
+ {{.BlogRenderedContent}} +
+
+ + {{svg "octicon-arrow-left" 16}} Back to Blog + +
+
+
+ {{else if .PageIsBlogList}} + +
+
+
+ +

{{if .Config.Blog.Headline}}{{.Config.Blog.Headline}}{{else}}All Posts{{end}}

+ {{if .Config.Blog.Subheadline}}

{{.Config.Blog.Subheadline}}

{{end}} +
+ + {{if gt .BlogListTotal 9}} +
+ {{template "base/paginate" .}} +
+ {{end}} +
+
+ {{else}} + +
+
+
+
+
+
+ +
+
+ + {{if .LatestRelease}}v{{.LatestReleaseTag}} released{{else}}Open Source{{end}} +
+ +

{{if .Config.Hero.Headline}}{{.Config.Hero.Headline}}{{else}}{{.Repository.Name}}{{end}}

+ +

+ {{if .Config.Hero.Subheadline}}{{.Config.Hero.Subheadline}}{{else}}{{.Repository.Description}}{{end}} +

+ +
+ {{if .Config.Hero.PrimaryCTA.Label}} + + {{.Config.Hero.PrimaryCTA.Label}} + {{svg "octicon-arrow-right" 16}} + + {{else}} + + Get Started + {{svg "octicon-arrow-right" 16}} + + {{end}} + + {{if .Config.Hero.SecondaryCTA.Label}} + + GitCaddy + {{.Config.Hero.SecondaryCTA.Label}} + + {{else}} + + GitCaddy + View Source + + {{end}} +
+ + {{if .Config.Hero.CodeExample}} +
+ $ + {{.Config.Hero.CodeExample}} + +
+ {{end}} +
+
+ + + {{if or .Config.Stats (gt .NumStars 0)}} +
+
+ {{if .Config.Stats}} + {{range .Config.Stats}} +
+
{{.Value}}
+
{{.Label}}
+
+ {{end}} + {{else}} +
+
{{.NumStars}}
+
Stars
+
+
+
{{.NumForks}}
+
Forks
+
+ {{if .LatestRelease}} +
+
v{{.LatestReleaseTag}}
+
Latest
+
+ {{end}} + {{end}} +
+
+ {{end}} + + + {{if and .PublicReleases .LatestRelease .LatestRelease.Attachments}} +
+
+

Download v{{.LatestReleaseTag}}

+

Get the latest release

+ {{$windowsFiles := newSlice}}{{$macosFiles := newSlice}}{{$linuxFiles := newSlice}}{{$androidFiles := newSlice}}{{$iosFiles := newSlice}}{{$otherFiles := newSlice}} + {{range $att := .LatestRelease.Attachments}} + {{$name := StringUtils.ToLower $att.Name}} + {{if or (StringUtils.Contains $name "android") (StringUtils.HasSuffix $name ".apk") (StringUtils.HasSuffix $name ".aab") (StringUtils.HasSuffix $name ".xapk")}} + {{$androidFiles = Append $androidFiles $att}} + {{else if or (StringUtils.Contains $name "ios") (StringUtils.Contains $name "iphone") (StringUtils.Contains $name "ipad") (StringUtils.HasSuffix $name ".ipa")}} + {{$iosFiles = Append $iosFiles $att}} + {{else if or (StringUtils.Contains $name "windows") (StringUtils.Contains $name "win64") (StringUtils.Contains $name "win32") (StringUtils.Contains $name "-win.") (StringUtils.Contains $name "_win.") (StringUtils.Contains $name "-win-") (StringUtils.Contains $name "_win_") (StringUtils.HasSuffix $name ".exe") (StringUtils.HasSuffix $name ".msi") (StringUtils.HasSuffix $name ".msix") (StringUtils.HasSuffix $name ".msixbundle") (StringUtils.HasSuffix $name ".appx") (StringUtils.HasSuffix $name ".appxbundle")}} + {{$windowsFiles = Append $windowsFiles $att}} + {{else if or (StringUtils.Contains $name "darwin") (StringUtils.Contains $name "macos") (StringUtils.Contains $name "-mac.") (StringUtils.Contains $name "_mac.") (StringUtils.Contains $name "-mac-") (StringUtils.Contains $name "_mac_") (StringUtils.Contains $name "osx") (StringUtils.HasSuffix $name ".dmg") (StringUtils.HasSuffix $name ".pkg")}} + {{$macosFiles = Append $macosFiles $att}} + {{else if or (StringUtils.Contains $name "linux") (StringUtils.Contains $name "-lin.") (StringUtils.Contains $name "_lin.") (StringUtils.Contains $name "-lin-") (StringUtils.Contains $name "_lin_") (StringUtils.HasSuffix $name ".deb") (StringUtils.HasSuffix $name ".rpm") (StringUtils.HasSuffix $name ".appimage") (StringUtils.HasSuffix $name ".flatpak") (StringUtils.HasSuffix $name ".snap")}} + {{$linuxFiles = Append $linuxFiles $att}} + {{else}} + {{$otherFiles = Append $otherFiles $att}} + {{end}} + {{end}} + {{if $windowsFiles}} +
+

{{svg "octicon-device-desktop" 16}} Windows

+ +
+ {{end}} + {{if $macosFiles}} +
+

{{svg "octicon-device-desktop" 16}} macOS

+ +
+ {{end}} + {{if $linuxFiles}} +
+

{{svg "octicon-terminal" 16}} Linux

+ +
+ {{end}} + {{if not $.HideMobileReleases}} + {{if $androidFiles}} +
+

{{svg "octicon-device-mobile" 16}} Android

+ +
+ {{end}} + {{if $iosFiles}} +
+

{{svg "octicon-device-mobile" 16}} iOS

+ +
+ {{end}} + {{end}} + {{if or $.GooglePlayID $.AppStoreID}} +
+

{{svg "octicon-device-mobile" 16}} App Stores

+
+ {{if $.GooglePlayID}} + + + Google Play + + {{end}} + {{if $.AppStoreID}} + + + App Store + + {{end}} +
+
+ {{end}} + {{if $otherFiles}} +
+

{{svg "octicon-file" 16}} Other

+ +
+ {{end}} +
+
+ {{end}} + + + {{if .Config.ValueProps}} +
+
+
+ +

{{if .Config.Brand.Name}}Why {{.Config.Brand.Name}}?{{else}}Why Choose Us{{end}}

+

Everything you need to get started quickly.

+
+
+ {{range .Config.ValueProps}} +
+
+ {{svg (printf "octicon-%s" (or .Icon "check")) 20}} +
+

{{.Title}}

+

{{.Description}}

+
+ {{end}} +
+
+
+ {{end}} + + + {{if .Config.Features}} +
+
+
+ +

Features

+

Powerful capabilities at your fingertips.

+
+
+ {{range .Config.Features}} +
+
+ {{svg (printf "octicon-%s" (or .Icon "zap")) 20}} +
+

{{.Title}}

+

{{.Description}}

+
+ {{end}} +
+
+
+ {{end}} + + + {{if or .Config.SocialProof.Logos .Config.SocialProof.Testimonials}} +
+
+ {{if .Config.SocialProof.Logos}} +
+ {{range .Config.SocialProof.Logos}} +
{{.}}
+ {{end}} +
+ {{end}} + {{if .Config.SocialProof.Testimonials}} +
+ {{range .Config.SocialProof.Testimonials}} + + {{end}} +
+ + {{end}} +
+
+ {{end}} + + + {{if .Config.Pricing.Plans}} +
+
+
+ +

{{if .Config.Pricing.Headline}}{{.Config.Pricing.Headline}}{{else}}Pricing{{end}}

+

{{if .Config.Pricing.Subheadline}}{{.Config.Pricing.Subheadline}}{{else}}Choose the plan that works for you{{end}}

+
+
+ {{range .Config.Pricing.Plans}} +
+ {{if .Featured}}Popular{{end}} +
{{.Name}}
+
{{.Price}}
+
{{.Period}}
+ {{if .Features}} +
    + {{range .Features}}
  • {{.}}
  • {{end}} +
+ {{end}} + {{if .CTA}}{{.CTA}}{{else}}Get Started{{end}} +
+ {{end}} +
+
+
+ {{end}} + + + {{if .Config.CTASection.Headline}} +
+
+

{{.Config.CTASection.Headline}}

+ {{if .Config.CTASection.Subheadline}} +

{{.Config.CTASection.Subheadline}}

+ {{end}} + + {{if .Config.CTASection.Button.Label}}{{.Config.CTASection.Button.Label}}{{else}}Get Started{{end}} + {{svg "octicon-arrow-right" 16}} + +
+
+ {{end}} + + + {{if and .Config.Blog.Enabled .BlogPosts}} +
+
+
+ +

{{if .Config.Blog.Headline}}{{.Config.Blog.Headline}}{{else}}Latest Posts{{end}}

+ {{if .Config.Blog.Subheadline}}

{{.Config.Blog.Subheadline}}

{{end}} +
+ + {{if .Config.Blog.CTAButton.Label}} + + {{end}} +
+
+ {{end}} + + + {{if and .Config.Gallery.Enabled .GalleryImages}} + + {{end}} + + {{end}}{{/* end PageIsBlogDetail / PageIsBlogList / else */}} + + + +
+ + + + +{{template "pages/base_footer" .}} \ No newline at end of file