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" >
- -
-
- Testimonial 01 -
-
Lina James
-
- linaj87 -
-
-
-
- Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new. -
-
- -
-
- Testimonial 02 -
-
Sarah Mendes
- -
-
-
- Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new. -
-
- -
-
- Testimonial 03 -
-
Michał Rutt
-
- michrutt -
-
-
-
- Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new. -
-
- -
-
- Testimonial 04 -
-
Mary Kahl
-
- marykahl -
-
-
-
- Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new. -
-
+ for _,quote := range lowlights.UpperQuotes { + @quoteItem(quote) + }
@@ -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" >
- -
-
- Testimonial 05 -
-
Katy Dragán
-
- katyd -
-
-
-
- Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new. -
-
- -
-
- Testimonial 06 -
-
Karl Ahmed
-
- karl87 -
-
-
-
- Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new. -
-
- -
-
- Testimonial 07 -
-
Carlotta Grech
- -
-
-
- Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new. -
-
- -
-
- Testimonial 08 -
-
Alejandra Gok
- -
-
-
- Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new. -
-
+ for _,quote := range lowlights.LowerQuotes { + @quoteItem(quote) + }
} + +templ quoteItem(quote *models.Testimonial) { +
+
+ Testimonial 01 +
+
{ quote.FullName }
+
+ { quote.Username } +
+
+
+
+ { 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

\"Testimonial
Lina James
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
\"Testimonial
Sarah Mendes
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
\"Testimonial
Michał Rutt
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
\"Testimonial
Mary Kahl
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
\"Testimonial
Katy Dragán
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
\"Testimonial
Karl Ahmed
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
\"Testimonial
Carlotta Grech
Extremely thoughtful approaches to business. I highly recommend this product to anyone wanting to jump into something new.
\"Testimonial
Alejandra Gok
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("
\"Testimonial
") + 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_Var8 string + templ_7745c5c3_Var8, templ_7745c5c3_Err = templ.JoinStringErrs(quote.Username) + if templ_7745c5c3_Err != nil { + return templ.Error{Err: templ_7745c5c3_Err, FileName: `components/marketing/sections/lowlights.templ`, Line: 159, Col: 107} + } + _, 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(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 │ // ╰───────────────────────────────────────────────────────────╯