diff --git a/internal/orm/marketing/models.go b/internal/orm/marketing/models.go
index 3c1d3fc68..89ebb6025 100644
--- a/internal/orm/marketing/models.go
+++ b/internal/orm/marketing/models.go
@@ -38,7 +38,7 @@ type Technology struct {
type Testimonial struct {
FullName string
Username string
- Avatar string
+ Avatar *Image
Quote string
}
@@ -84,8 +84,9 @@ type Architecture struct {
}
type Lowlights struct {
- Heading string
- Quotes []*Testimonial
+ Heading string
+ UpperQuotes []*Testimonial
+ LowerQuotes []*Testimonial
}
type CallToAction struct {
diff --git a/pkg/nebula/components/marketing/sections/lowlights.templ b/pkg/nebula/components/marketing/sections/lowlights.templ
index 2b090b4f7..6ac32c851 100644
--- a/pkg/nebula/components/marketing/sections/lowlights.templ
+++ b/pkg/nebula/components/marketing/sections/lowlights.templ
@@ -1,9 +1,101 @@
package sections
+import (
+ models "github.com/onsonr/sonr/internal/orm/marketing"
+)
+
// ╭───────────────────────────────────────────────────────────╮
// │ Data Model │
// ╰───────────────────────────────────────────────────────────╯
+var lowlights = &models.Lowlights{
+ Heading: "The Fragmentation Problem in the Existing Web is seeping into Crypto",
+ UpperQuotes: []*models.Testimonial{
+ {
+ FullName: "0xDesigner",
+ Username: "@0xdesigner",
+ Avatar: &models.Image{
+ Src: Avatar0xDesigner.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Alex Recouso",
+ Username: "@alexrecouso",
+ Avatar: &models.Image{
+ Src: AvatarAlexRecouso.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Chjango",
+ Username: "@chjango",
+ Avatar: &models.Image{
+ Src: AvatarChjango.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Gwart",
+ Username: "@gwart",
+ Avatar: &models.Image{
+ Src: AvatarGwart.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ },
+ LowerQuotes: []*models.Testimonial{
+ {
+ FullName: "HTMX Org",
+ Username: "@htmx_org",
+ Avatar: &models.Image{
+ Src: AvatarHTMXOrg.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Jelena Noble",
+ Username: "@jelena_noble",
+ Avatar: &models.Image{
+ Src: AvatarJelenaNoble.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Tanish",
+ Username: "@tanishqxyz",
+ Avatar: &models.Image{
+ Src: AvatarTanishqXYZ.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Unusual Whales",
+ Username: "@unusual_whales",
+ Avatar: &models.Image{
+ Src: AvatarUnusualWhales.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ },
+}
+
// ╭───────────────────────────────────────────────────────────╮
// │ Render Section View │
// ╰───────────────────────────────────────────────────────────╯
@@ -14,7 +106,9 @@ templ Lowlights() {
-
The Fragmentation Problem in the Existing Web is seeping into Crypto
+
+ { lowlights.Heading }
+
@@ -29,66 +123,9 @@ templ Lowlights() {
class="w-full inline-flex flex-nowrap overflow-hidden [mask-image:_linear-gradient(to_right,transparent_0,_black_28%,_black_calc(100%-28%),transparent_100%)] group"
>
@@ -102,69 +139,29 @@ templ Lowlights() {
class="w-full inline-flex flex-nowrap overflow-hidden [mask-image:_linear-gradient(to_right,transparent_0,_black_28%,_black_calc(100%-28%),transparent_100%)] group"
>
}
+
+templ quoteItem(quote *models.Testimonial) {
+
+
+

+
+
+
+ { quote.Quote }
+
+
+}
diff --git a/pkg/nebula/components/marketing/sections/lowlights_templ.go b/pkg/nebula/components/marketing/sections/lowlights_templ.go
index 5a94cdfe5..1a578c5fa 100644
--- a/pkg/nebula/components/marketing/sections/lowlights_templ.go
+++ b/pkg/nebula/components/marketing/sections/lowlights_templ.go
@@ -8,10 +8,102 @@ package sections
import "github.com/a-h/templ"
import templruntime "github.com/a-h/templ/runtime"
+import (
+ models "github.com/onsonr/sonr/internal/orm/marketing"
+)
+
// ╭───────────────────────────────────────────────────────────╮
// │ Data Model │
// ╰───────────────────────────────────────────────────────────╯
+var lowlights = &models.Lowlights{
+ Heading: "The Fragmentation Problem in the Existing Web is seeping into Crypto",
+ UpperQuotes: []*models.Testimonial{
+ {
+ FullName: "0xDesigner",
+ Username: "@0xdesigner",
+ Avatar: &models.Image{
+ Src: Avatar0xDesigner.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Alex Recouso",
+ Username: "@alexrecouso",
+ Avatar: &models.Image{
+ Src: AvatarAlexRecouso.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Chjango",
+ Username: "@chjango",
+ Avatar: &models.Image{
+ Src: AvatarChjango.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Gwart",
+ Username: "@gwart",
+ Avatar: &models.Image{
+ Src: AvatarGwart.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ },
+ LowerQuotes: []*models.Testimonial{
+ {
+ FullName: "HTMX Org",
+ Username: "@htmx_org",
+ Avatar: &models.Image{
+ Src: AvatarHTMXOrg.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Jelena Noble",
+ Username: "@jelena_noble",
+ Avatar: &models.Image{
+ Src: AvatarJelenaNoble.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Tanish",
+ Username: "@tanishqxyz",
+ Avatar: &models.Image{
+ Src: AvatarTanishqXYZ.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ {
+ FullName: "Unusual Whales",
+ Username: "@unusual_whales",
+ Avatar: &models.Image{
+ Src: AvatarUnusualWhales.Src(),
+ Width: "44",
+ Height: "44",
+ },
+ Quote: "Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.",
+ },
+ },
+}
+
// ╭───────────────────────────────────────────────────────────╮
// │ Render Section View │
// ╰───────────────────────────────────────────────────────────╯
@@ -38,7 +130,147 @@ func Lowlights() templ.Component {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
- _, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString("The Fragmentation Problem in the Existing Web is seeping into Crypto
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
")
+ _, 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(lowlights.Heading)
+ if templ_7745c5c3_Err != nil {
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/lowlights.templ`, Line: 110, Col: 25}
+ }
+ _, 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
+ }
+ for _, quote := range lowlights.UpperQuotes {
+ templ_7745c5c3_Err = quoteItem(quote).Render(ctx, templ_7745c5c3_Buffer)
+ 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
+ }
+ for _, quote := range lowlights.LowerQuotes {
+ templ_7745c5c3_Err = quoteItem(quote).Render(ctx, templ_7745c5c3_Buffer)
+ 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
+ }
+ return templ_7745c5c3_Err
+ })
+}
+
+func quoteItem(quote *models.Testimonial) 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 {
+ return templ_7745c5c3_CtxErr
+ }
+ templ_7745c5c3_Buffer, templ_7745c5c3_IsBuffer := templruntime.GetBuffer(templ_7745c5c3_W)
+ if !templ_7745c5c3_IsBuffer {
+ defer func() {
+ templ_7745c5c3_BufErr := templruntime.ReleaseBuffer(templ_7745c5c3_Buffer)
+ if templ_7745c5c3_Err == nil {
+ templ_7745c5c3_Err = templ_7745c5c3_BufErr
+ }
+ }()
+ }
+ ctx = templ.InitializeContext(ctx)
+ templ_7745c5c3_Var3 := templ.GetChildren(ctx)
+ if templ_7745c5c3_Var3 == nil {
+ templ_7745c5c3_Var3 = templ.NopComponent
+ }
+ ctx = templ.ClearChildren(ctx)
+ _, 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(quote.FullName)
+ if templ_7745c5c3_Err != nil {
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/lowlights.templ`, Line: 157, Col: 74}
+ }
+ _, 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("
")
+ if templ_7745c5c3_Err != nil {
+ return templ_7745c5c3_Err
+ }
+ var templ_7745c5c3_Var9 string
+ templ_7745c5c3_Var9, templ_7745c5c3_Err = templ.JoinStringErrs(quote.Quote)
+ if templ_7745c5c3_Err != nil {
+ return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/lowlights.templ`, Line: 164, Col: 16}
+ }
+ _, 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("
")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
diff --git a/pkg/nebula/components/marketing/sections/utils.go b/pkg/nebula/components/marketing/sections/utils.go
index c1ee3d6ce..dcf37e907 100644
--- a/pkg/nebula/components/marketing/sections/utils.go
+++ b/pkg/nebula/components/marketing/sections/utils.go
@@ -2,6 +2,29 @@ package sections
import "fmt"
+// ╭───────────────────────────────────────────────────────────╮
+// │ Avatar Image Components │
+// ╰───────────────────────────────────────────────────────────╯
+
+type Avatar string
+
+const (
+ Avatar0xDesigner Avatar = "0xdesigner.jpg"
+ AvatarAlexRecouso Avatar = "alexrecouso.jpg"
+ AvatarChjango Avatar = "chjango.jpg"
+ AvatarGwart Avatar = "gwart.jpg"
+ AvatarHTMXOrg Avatar = "htmx_org.jpg"
+ AvatarJelenaNoble Avatar = "jelena_noble.jpg"
+ AvatarSonr Avatar = "sonr.svg"
+ AvatarTanishqXYZ Avatar = "tanishqxyz.jpg"
+ AvatarUnusualWhales Avatar = "unusual_whales.png"
+ AvatarWinnieLaux Avatar = "winnielaux_.jpg"
+)
+
+func (a Avatar) Src() string {
+ return fmt.Sprintf("https://cdn.sonr.id/img/avatars/%s", string(a))
+}
+
// ╭───────────────────────────────────────────────────────────╮
// │ SVG CDN Illustrations │
// ╰───────────────────────────────────────────────────────────╯