From c8657022a2abb31ab0583181bf867358131964ff Mon Sep 17 00:00:00 2001 From: Prad Nukala Date: Thu, 24 Oct 2024 10:31:40 -0400 Subject: [PATCH] feat(marketing): refactor marketing page components --- internal/orm/marketing/models.go | 16 +- .../marketing/modals/intro_video_templ.go | 2 +- pkg/nebula/components/marketing/page.templ | 106 +----------- pkg/nebula/components/marketing/page_templ.go | 35 +++- .../marketing/sections/architecture.templ | 28 ++- .../marketing/sections/architecture_templ.go | 162 +++++++++++++++++- .../components/marketing/sections/cta.templ | 19 ++ .../components/marketing/sections/hero.templ | 23 ++- .../marketing/sections/highlights.templ | 30 +++- .../marketing/sections/mission.templ | 24 ++- 10 files changed, 327 insertions(+), 118 deletions(-) diff --git a/internal/orm/marketing/models.go b/internal/orm/marketing/models.go index 37739fc1c..3c1d3fc68 100644 --- a/internal/orm/marketing/models.go +++ b/internal/orm/marketing/models.go @@ -5,6 +5,16 @@ type Button struct { Href string } +type Image struct { + Src string + Width string + Height string +} + +// ╭──────────────────────────────────────────────────────────╮ +// │ Generic Models │ +// ╰──────────────────────────────────────────────────────────╯ + type Feature struct { Title string Desc string @@ -12,12 +22,6 @@ type Feature struct { Image *Image } -type Image struct { - Src string - Width string - Height string -} - type Stat struct { Value string Denom string diff --git a/pkg/nebula/components/marketing/modals/intro_video_templ.go b/pkg/nebula/components/marketing/modals/intro_video_templ.go index 62f636008..9643e7820 100644 --- a/pkg/nebula/components/marketing/modals/intro_video_templ.go +++ b/pkg/nebula/components/marketing/modals/intro_video_templ.go @@ -29,7 +29,7 @@ func IntroVideo() templ.Component { templ_7745c5c3_Var1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/pkg/nebula/components/marketing/page.templ b/pkg/nebula/components/marketing/page.templ index 1893aff43..16a3052e1 100644 --- a/pkg/nebula/components/marketing/page.templ +++ b/pkg/nebula/components/marketing/page.templ @@ -3,7 +3,6 @@ package marketing import ( "github.com/labstack/echo/v4" "github.com/onsonr/sonr/internal/ctx" - models "github.com/onsonr/sonr/internal/orm/marketing" "github.com/onsonr/sonr/pkg/nebula/components/marketing/sections" "github.com/onsonr/sonr/pkg/nebula/global/styles" "log" @@ -26,103 +25,6 @@ func HomeRoute(c echo.Context) error { // │ Static Content Values │ // ╰───────────────────────────────────────────────────────────╯ -// hero is the (1st) home page hero section -var hero = &models.Hero{ - TitleFirst: "Simplified", - TitleEmphasis: "self-custody", - TitleSecond: "for everyone", - Subtitle: "Sonr is a modern re-imagination of online user identity, empowering users to take ownership of their digital footprint and unlocking a new era of self-sovereignty.", - PrimaryButton: &models.Button{Text: "Get Started", Href: "/register"}, - SecondaryButton: &models.Button{Text: "Learn More", Href: "/about"}, - Image: &models.Image{ - Src: "https://cdn.sonr.id/img/hero-clipped.svg", - Width: "500", - Height: "500", - }, - Stats: []*models.Stat{ - {Value: "476", Label: "Assets packed with power beyond your imagiation.", Denom: "K"}, - {Value: "1.44", Label: "Assets packed with power beyond your imagination.", Denom: "K"}, - {Value: "1.5", Label: "Assets packed with power beyond your imagination.", Denom: "M+"}, - {Value: "750", Label: "Assets packed with power beyond your imagination.", Denom: "K"}, - }, -} - -// highlights is the (2nd) home page highlights section -var highlights = &models.Highlights{ - Heading: "The Internet Rebuilt for You", - Subtitle: "Sonr is a comprehensive system for Identity Management which proteects users across their digital personas while providing Developers a cost-effective solution for decentralized authentication.", - Features: []*models.Feature{ - { - Title: "∞ Factor Auth", - Desc: "Sonr is designed to work across all platforms and devices, building a encrypted and anonymous identity layer for each user on the internet.", - Icon: nil, - }, - { - Title: "Control Your Data", - Desc: "Sonr leverages advanced cryptography to permit facilitating Wallet Operations directly on-chain, without the need for a centralized server.", - Icon: nil, - }, - { - Title: "Crypto Enabled", - Desc: "Sonr follows the latest specifications from W3C, DIF, and ICF to essentially have an Interchain-Connected, Smart Account System - seamlessly authenticated with PassKeys.", - Icon: nil, - }, - { - Title: "Works Everywhere", - Desc: "Sonr anonymously associates your online identities with a Quantum-Resistant Vault which only you can access.", - Icon: nil, - }, - }, -} - -// mission is the (3rd) home page mission section -var mission = &models.Mission{ - Eyebrow: "L1 Blockchain", - Heading: "The Protocol for Decentralized Identity & Authentication", - Subtitle: "We're creating the Global Standard for Decentralized Identity. Authenticate users with PassKeys, Issue Crypto Wallets, Build Payment flows, Send Encrypted Messages - all on a single platform.", - Experience: &models.Feature{ - Title: "UX First Approach", - Desc: "Sonr is a comprehensive system for Identity Management which proteects users across their digital personas while providing Developers a cost-effective solution for decentralized authentication.", - Icon: nil, - }, - Compliance: &models.Feature{ - Title: "Universal Interoperability", - Desc: "Sonr is designed to work across all platforms and devices, building a encrypted and anonymous identity layer for each user on the internet.", - Icon: nil, - }, - Interoperability: &models.Feature{ - Title: "Made in the USA", - Desc: "Sonr follows the latest specifications from W3C, DIF, and ICF to essentially have an Interchain-Connected, Smart Account System - seamlessly authenticated with PassKeys.", - Icon: nil, - }, -} - -// architecture is the (4th) home page architecture section -var architecture = &models.Architecture{ - Heading: "Onchain Security with Offchain Privacy", - Subtitle: "Whenever you are ready, just hit publish to turn your site sketches into an actual designs. No creating, no skills, no reshaping.", - Primary: &models.Technology{ - Title: "Decentralized Identity", - Desc: "Sonr leverages the latest specifications from W3C, DIF, and ICF to essentially have an Interchain-Connected, Smart Account System - seamlessly authenticated with PassKeys.", - }, - Secondary: &models.Technology{ - Title: "IPFS Vaults", - Desc: "Completely distributed, encrypted, and decentralized storage for your data.", - }, - Tertiary: &models.Technology{ - Title: "Service Records", - Desc: "On-chain validated services created by Developers for secure transmission of user data.", - }, - Quaternary: &models.Technology{ - Title: "Authentication & Authorization", - Desc: "Sonr leverages decentralized Macaroons and Multi-Party Computation to provide a secure and decentralized authentication and authorization system.", - }, - Quinary: &models.Technology{ - Title: "First-Class Exchange", - Desc: "Sonr integrates with the IBC protocol allowing for seamless integration with popular exchanges such as OKX, Binance, and Osmosis.", - }, -} - // ╭─────────────────────────────────────────────────────────╮ // │ Final Rendering │ // ╰─────────────────────────────────────────────────────────╯ @@ -131,10 +33,10 @@ var architecture = &models.Architecture{ templ View() { @styles.LayoutNoBody("Sonr.ID", true) { @sections.Header() - @sections.Hero(hero) - @sections.Highlights(highlights) - @sections.Mission(mission) - @sections.Architecture(architecture) + @sections.Hero() + @sections.Highlights() + @sections.Mission() + @sections.Architecture() @sections.Lowlights() @sections.CallToAction() @sections.Footer() diff --git a/pkg/nebula/components/marketing/page_templ.go b/pkg/nebula/components/marketing/page_templ.go index 6c49e5dd9..256015615 100644 --- a/pkg/nebula/components/marketing/page_templ.go +++ b/pkg/nebula/components/marketing/page_templ.go @@ -34,6 +34,7 @@ func HomeRoute(c echo.Context) error { // │ Static Content Values │ // ╰───────────────────────────────────────────────────────────╯ +// hero is the (1st) home page hero section var hero = &models.Hero{ TitleFirst: "Simplified", TitleEmphasis: "self-custody", @@ -54,6 +55,7 @@ var hero = &models.Hero{ }, } +// highlights is the (2nd) home page highlights section var highlights = &models.Highlights{ Heading: "The Internet Rebuilt for You", Subtitle: "Sonr is a comprehensive system for Identity Management which proteects users across their digital personas while providing Developers a cost-effective solution for decentralized authentication.", @@ -81,17 +83,18 @@ var highlights = &models.Highlights{ }, } +// mission is the (3rd) home page mission section var mission = &models.Mission{ Eyebrow: "L1 Blockchain", Heading: "The Protocol for Decentralized Identity & Authentication", Subtitle: "We're creating the Global Standard for Decentralized Identity. Authenticate users with PassKeys, Issue Crypto Wallets, Build Payment flows, Send Encrypted Messages - all on a single platform.", Experience: &models.Feature{ - Title: "Less is More", + Title: "UX First Approach", Desc: "Sonr is a comprehensive system for Identity Management which proteects users across their digital personas while providing Developers a cost-effective solution for decentralized authentication.", Icon: nil, }, Compliance: &models.Feature{ - Title: "Works where there's Internet", + Title: "Universal Interoperability", Desc: "Sonr is designed to work across all platforms and devices, building a encrypted and anonymous identity layer for each user on the internet.", Icon: nil, }, @@ -102,6 +105,32 @@ var mission = &models.Mission{ }, } +// architecture is the (4th) home page architecture section +var architecture = &models.Architecture{ + Heading: "Onchain Security with Offchain Privacy", + Subtitle: "Whenever you are ready, just hit publish to turn your site sketches into an actual designs. No creating, no skills, no reshaping.", + Primary: &models.Technology{ + Title: "Decentralized Identity", + Desc: "Sonr leverages the latest specifications from W3C, DIF, and ICF to essentially have an Interchain-Connected, Smart Account System - seamlessly authenticated with PassKeys.", + }, + Secondary: &models.Technology{ + Title: "IPFS Vaults", + Desc: "Completely distributed, encrypted, and decentralized storage for your data.", + }, + Tertiary: &models.Technology{ + Title: "Service Records", + Desc: "On-chain validated services created by Developers for secure transmission of user data.", + }, + Quaternary: &models.Technology{ + Title: "Authentication & Authorization", + Desc: "Sonr leverages decentralized Macaroons and Multi-Party Computation to provide a secure and decentralized authentication and authorization system.", + }, + Quinary: &models.Technology{ + Title: "First-Class Exchange", + Desc: "Sonr integrates with the IBC protocol allowing for seamless integration with popular exchanges such as OKX, Binance, and Osmosis.", + }, +} + // ╭─────────────────────────────────────────────────────────╮ // │ Final Rendering │ // ╰─────────────────────────────────────────────────────────╯ @@ -172,7 +201,7 @@ func View() templ.Component { if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } - templ_7745c5c3_Err = sections.Architecture().Render(ctx, templ_7745c5c3_Buffer) + templ_7745c5c3_Err = sections.Architecture(architecture).Render(ctx, templ_7745c5c3_Buffer) if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/pkg/nebula/components/marketing/sections/architecture.templ b/pkg/nebula/components/marketing/sections/architecture.templ index e4673dc5a..784e02fca 100644 --- a/pkg/nebula/components/marketing/sections/architecture.templ +++ b/pkg/nebula/components/marketing/sections/architecture.templ @@ -2,7 +2,33 @@ package sections import models "github.com/onsonr/sonr/internal/orm/marketing" -templ Architecture(arch *models.Architecture) { +// architecture is the (4th) home page architecture section +var arch = &models.Architecture{ + Heading: "Onchain Security with Offchain Privacy", + Subtitle: "Whenever you are ready, just hit publish to turn your site sketches into an actual designs. No creating, no skills, no reshaping.", + Primary: &models.Technology{ + Title: "Decentralized Identity", + Desc: "Sonr leverages the latest specifications from W3C, DIF, and ICF to essentially have an Interchain-Connected, Smart Account System - seamlessly authenticated with PassKeys.", + }, + Secondary: &models.Technology{ + Title: "IPFS Vaults", + Desc: "Completely distributed, encrypted, and decentralized storage for your data.", + }, + Tertiary: &models.Technology{ + Title: "Service Records", + Desc: "On-chain validated services created by Developers for secure transmission of user data.", + }, + Quaternary: &models.Technology{ + Title: "Authentication & Authorization", + Desc: "Sonr leverages decentralized Macaroons and Multi-Party Computation to provide a secure and decentralized authentication and authorization system.", + }, + Quinary: &models.Technology{ + Title: "First-Class Exchange", + Desc: "Sonr integrates with the IBC protocol allowing for seamless integration with popular exchanges such as OKX, Binance, and Osmosis.", + }, +} + +templ Architecture() {
diff --git a/pkg/nebula/components/marketing/sections/architecture_templ.go b/pkg/nebula/components/marketing/sections/architecture_templ.go index 50e4d3c56..d9451d644 100644 --- a/pkg/nebula/components/marketing/sections/architecture_templ.go +++ b/pkg/nebula/components/marketing/sections/architecture_templ.go @@ -8,7 +8,9 @@ package sections import "github.com/a-h/templ" import templruntime "github.com/a-h/templ/runtime" -func Architecture() templ.Component { +import models "github.com/onsonr/sonr/internal/orm/marketing" + +func Architecture(arch *models.Architecture) templ.Component { return templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) { templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context if templ_7745c5c3_CtxErr := ctx.Err(); templ_7745c5c3_CtxErr != nil { @@ -29,7 +31,163 @@ func Architecture() templ.Component { templ_7745c5c3_Var1 = templ.NopComponent } ctx = templ.ClearChildren(ctx) - _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

Onchain Security with Offchain Privacy

Whenever you are ready, just hit publish to turn your site sketches into an actual designs. No creating, no skills, no reshaping.

Decentralized Identity

Create teams and organize your designs into folders using project specs and insights.

\"Feature

IPFS Vaults

Generate images and explore new ways of presenting your designs with AI.

\"Feature

Service Records

Get your scenes inside your projects using simple embed code/snippets.

\"Feature

Authentication & Authorization

Easily make drag and drop interactions without coding.

\"Feature

Decentralized Exchange

Create tasks, projects, issues and more in just seconds.

\"Feature
") + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var2 string + templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Heading) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 16, Col: 20} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var2)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var3 string + templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Subtitle) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 19, Col: 21} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var4 string + templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Primary.Title) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 41, Col: 29} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var5 string + templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Primary.Desc) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 45, Col: 27} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

\"Feature

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var6 string + templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Secondary.Title) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 74, Col: 31} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var7 string + templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Secondary.Desc) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 78, Col: 29} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

\"Feature

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var8 string + templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Tertiary.Title) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 107, Col: 30} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var8)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var9 string + templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Tertiary.Desc) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 111, Col: 28} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var9)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

\"Feature

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var10 string + templ_7745c5c3_Var10, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Quaternary.Title) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 140, Col: 32} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var10)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var11 string + templ_7745c5c3_Var11, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Quaternary.Desc) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 144, Col: 30} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var11)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

\"Feature

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var12 string + templ_7745c5c3_Var12, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Quinary.Title) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 173, Col: 29} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var12)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

") + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + var templ_7745c5c3_Var13 string + templ_7745c5c3_Var13, templ_7745c5c3_Err = templ.JoinStringErrs(arch.Quinary.Desc) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/architecture.templ`, Line: 177, Col: 27} + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var13)) + if templ_7745c5c3_Err != nil { + return templ_7745c5c3_Err + } + _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("

\"Feature
") if templ_7745c5c3_Err != nil { return templ_7745c5c3_Err } diff --git a/pkg/nebula/components/marketing/sections/cta.templ b/pkg/nebula/components/marketing/sections/cta.templ index c3dc9fa0e..d460d670a 100644 --- a/pkg/nebula/components/marketing/sections/cta.templ +++ b/pkg/nebula/components/marketing/sections/cta.templ @@ -1,5 +1,24 @@ package sections +import models "github.com/onsonr/sonr/internal/orm/marketing" + +var cta = &models.CallToAction{ + Logo: &models.Image{ + Src: "https://cdn.sonr.id/logo-zinc.svg", + Width: "60", + Height: "60", + }, + Heading: "Take control of your Identity", + Subtitle: "Sonr is a decentralized, permissionless, and censorship-resistant identity network.", + Primary: &models.Button{ + Href: "request-demo.html", + Text: "Register", + }, + Secondary: &models.Button{ + Href: "#0", + Text: "Learn More", + }, +} templ CallToAction() {
diff --git a/pkg/nebula/components/marketing/sections/hero.templ b/pkg/nebula/components/marketing/sections/hero.templ index 951ae9fe8..8189caf5b 100644 --- a/pkg/nebula/components/marketing/sections/hero.templ +++ b/pkg/nebula/components/marketing/sections/hero.templ @@ -6,7 +6,28 @@ import ( "github.com/onsonr/sonr/pkg/nebula/global/ui" ) -templ Hero(hero *models.Hero) { +// hero is the (1st) home page hero section +var hero = &models.Hero{ + TitleFirst: "Simplified", + TitleEmphasis: "self-custody", + TitleSecond: "for everyone", + Subtitle: "Sonr is a modern re-imagination of online user identity, empowering users to take ownership of their digital footprint and unlocking a new era of self-sovereignty.", + PrimaryButton: &models.Button{Text: "Get Started", Href: "/register"}, + SecondaryButton: &models.Button{Text: "Learn More", Href: "/about"}, + Image: &models.Image{ + Src: "https://cdn.sonr.id/img/hero-clipped.svg", + Width: "500", + Height: "500", + }, + Stats: []*models.Stat{ + {Value: "476", Label: "Assets packed with power beyond your imagiation.", Denom: "K"}, + {Value: "1.44", Label: "Assets packed with power beyond your imagination.", Denom: "K"}, + {Value: "1.5", Label: "Assets packed with power beyond your imagination.", Denom: "M+"}, + {Value: "750", Label: "Assets packed with power beyond your imagination.", Denom: "K"}, + }, +} + +templ Hero() {
diff --git a/pkg/nebula/components/marketing/sections/highlights.templ b/pkg/nebula/components/marketing/sections/highlights.templ index e23252c49..3a1f776f8 100644 --- a/pkg/nebula/components/marketing/sections/highlights.templ +++ b/pkg/nebula/components/marketing/sections/highlights.templ @@ -5,7 +5,35 @@ import ( models "github.com/onsonr/sonr/internal/orm/marketing" ) -templ Highlights(highlights *models.Highlights) { +// highlights is the (2nd) home page highlights section +var highlights = &models.Highlights{ + Heading: "The Internet Rebuilt for You", + Subtitle: "Sonr is a comprehensive system for Identity Management which proteects users across their digital personas while providing Developers a cost-effective solution for decentralized authentication.", + Features: []*models.Feature{ + { + Title: "∞ Factor Auth", + Desc: "Sonr is designed to work across all platforms and devices, building a encrypted and anonymous identity layer for each user on the internet.", + Icon: nil, + }, + { + Title: "Control Your Data", + Desc: "Sonr leverages advanced cryptography to permit facilitating Wallet Operations directly on-chain, without the need for a centralized server.", + Icon: nil, + }, + { + Title: "Crypto Enabled", + Desc: "Sonr follows the latest specifications from W3C, DIF, and ICF to essentially have an Interchain-Connected, Smart Account System - seamlessly authenticated with PassKeys.", + Icon: nil, + }, + { + Title: "Works Everywhere", + Desc: "Sonr anonymously associates your online identities with a Quantum-Resistant Vault which only you can access.", + Icon: nil, + }, + }, +} + +templ Highlights() {
diff --git a/pkg/nebula/components/marketing/sections/mission.templ b/pkg/nebula/components/marketing/sections/mission.templ index c3bfe7ec5..2aa0a339d 100644 --- a/pkg/nebula/components/marketing/sections/mission.templ +++ b/pkg/nebula/components/marketing/sections/mission.templ @@ -2,7 +2,29 @@ package sections import models "github.com/onsonr/sonr/internal/orm/marketing" -templ Mission(mission *models.Mission) { +// mission is the (3rd) home page mission section +var mission = &models.Mission{ + Eyebrow: "L1 Blockchain", + Heading: "The Protocol for Decentralized Identity & Authentication", + Subtitle: "We're creating the Global Standard for Decentralized Identity. Authenticate users with PassKeys, Issue Crypto Wallets, Build Payment flows, Send Encrypted Messages - all on a single platform.", + Experience: &models.Feature{ + Title: "UX First Approach", + Desc: "Sonr is a comprehensive system for Identity Management which proteects users across their digital personas while providing Developers a cost-effective solution for decentralized authentication.", + Icon: nil, + }, + Compliance: &models.Feature{ + Title: "Universal Interoperability", + Desc: "Sonr is designed to work across all platforms and devices, building a encrypted and anonymous identity layer for each user on the internet.", + Icon: nil, + }, + Interoperability: &models.Feature{ + Title: "Made in the USA", + Desc: "Sonr follows the latest specifications from W3C, DIF, and ICF to essentially have an Interchain-Connected, Smart Account System - seamlessly authenticated with PassKeys.", + Icon: nil, + }, +} + +templ Mission() {