moved to templ

This commit is contained in:
bronkuu 2026-05-27 14:51:26 +02:00
parent 24722ee61c
commit 303d9703f1
28 changed files with 1522 additions and 853 deletions

24
main.go
View file

@ -8,16 +8,10 @@ import (
"net/http"
"os"
"piekarnikgosi/templates"
"piekarnikgosi/types"
)
type Product struct {
Name string
Image string
Price string
Description string
}
var Cakes = []Product{
var Cakes = []types.Product{
{"Malinowa chmurka", "001", "150", "kruchy spód, warstwa malin w galaretce, krem śmietankowy, beza"},
{"Sernik ulubiony", "002", "150", "kruchy spód, aksamitna masa serowa, beza z kruszonką"},
{"Jabłecznik z kruszonką", "003", "130", "ciasto ucierane, jabłka, kruszonka"},
@ -52,13 +46,13 @@ func saveFile(name string, comp ComponentRenderer) {
}
func generateHTML() {
saveFile(`index`, templates.IndexPage())
// saveFile(t, `kawiarnia`, nil)
// saveFile(t, `portfolio`, nil)
// saveFile(t, `wyroby`, Cakes)
// saveFile(t, `wyroby_torty`, nil)
// saveFile(t, `wyroby_slodkie_stoly`, nil)
// saveFile(t, `wyroby_lody`, nil)
saveFile(`index`, templates.Index())
saveFile(`kawiarnia`, templates.Kawiarnia())
saveFile(`portfolio`, templates.Portfolio())
saveFile(`wyroby`, templates.WyrobyCiasta(Cakes))
saveFile(`wyroby_torty`, templates.WyrobyTorty())
saveFile(`wyroby_slodkie_stoly`, templates.WyrobySlodkieStoly())
saveFile(`wyroby_lody`, templates.WyrobyLody())
}
func main() {

View file

@ -1,12 +0,0 @@
{{define "card"}}
<div class="card">
<div>
<img alt="{{.Name}}" src="images/wyroby/{{.Image}}.avif"/>
</div>
<div>
<h3>{{.Name}}</h3>
<span>{{.Price}}zł</span>
<p>{{.Description}}</p>
</div>
</div>
{{end}}

View file

@ -1,92 +0,0 @@
{{define "footer"}}
<footer id="footer">
<div>
<div>
<img alt="logo" src="images/logo.png" style="width: 14rem"/>
<p>Pasja, natura i domowy smak w każdym kawałku ciasta.</p>
</div>
</div>
<div>
<h4>Lokalizacja</h4>
<ul>
<li>
<a href="https://maps.app.goo.gl/YD3DWUNKBoweKdpb7">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-map-pin-icon lucide-map-pin">
<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/>
<circle cx="12" cy="10" r="3"/>
</svg>
<span>Pracownia</span></div>
<p>ul. Polna 7k<br>
83-314 Somonino</p>
</a>
</li>
<li>
<a href="https://maps.app.goo.gl/568ax4QLJnXvqbhD9">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-map-pin-icon lucide-map-pin">
<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/>
<circle cx="12" cy="10" r="3"/>
</svg>
<span>Kawiarnia</span></div>
<p>ul. Dworcowa 3a<br>
83-300 Kartuzy</p>
</a>
</li>
</ul>
</div>
<div>
<h4>Kontakt</h4>
<ul>
<li>
<a href="https://facebook.com/piekarnikgosi">
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 48 48">
<mask id="ipSFacebook0">
<path fill="#fff" stroke="#fff" stroke-linejoin="round" stroke-width="3.8"
d="M36 12.6h-6.013c-1.086 0-1.967.88-1.967 1.967v6.9H36l-1.169 7.597h-6.81V43h-8.776V29.064H12v-7.597h7.151l.094-7.21l-.013-1.31A7.868 7.868 0 0 1 27.099 5H36v7.6Z"/>
</mask>
<path fill="currentColor" d="M0 0h48v48H0z" mask="url(#ipSFacebook0)"/>
</svg>
<span>facebook.com/PiekarnikGosi</span>
</a>
</li>
<li>
<a href="https://instagram.com/piekarnikgosi">
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="200" viewBox="0 0 24 24">
<path fill="currentColor"
d="M17.34 5.46a1.2 1.2 0 1 0 1.2 1.2a1.2 1.2 0 0 0-1.2-1.2Zm4.6 2.42a7.59 7.59 0 0 0-.46-2.43a4.94 4.94 0 0 0-1.16-1.77a4.7 4.7 0 0 0-1.77-1.15a7.3 7.3 0 0 0-2.43-.47C15.06 2 14.72 2 12 2s-3.06 0-4.12.06a7.3 7.3 0 0 0-2.43.47a4.78 4.78 0 0 0-1.77 1.15a4.7 4.7 0 0 0-1.15 1.77a7.3 7.3 0 0 0-.47 2.43C2 8.94 2 9.28 2 12s0 3.06.06 4.12a7.3 7.3 0 0 0 .47 2.43a4.7 4.7 0 0 0 1.15 1.77a4.78 4.78 0 0 0 1.77 1.15a7.3 7.3 0 0 0 2.43.47C8.94 22 9.28 22 12 22s3.06 0 4.12-.06a7.3 7.3 0 0 0 2.43-.47a4.7 4.7 0 0 0 1.77-1.15a4.85 4.85 0 0 0 1.16-1.77a7.59 7.59 0 0 0 .46-2.43c0-1.06.06-1.4.06-4.12s0-3.06-.06-4.12ZM20.14 16a5.61 5.61 0 0 1-.34 1.86a3.06 3.06 0 0 1-.75 1.15a3.19 3.19 0 0 1-1.15.75a5.61 5.61 0 0 1-1.86.34c-1 .05-1.37.06-4 .06s-3 0-4-.06a5.73 5.73 0 0 1-1.94-.3a3.27 3.27 0 0 1-1.1-.75a3 3 0 0 1-.74-1.15a5.54 5.54 0 0 1-.4-1.9c0-1-.06-1.37-.06-4s0-3 .06-4a5.54 5.54 0 0 1 .35-1.9A3 3 0 0 1 5 5a3.14 3.14 0 0 1 1.1-.8A5.73 5.73 0 0 1 8 3.86c1 0 1.37-.06 4-.06s3 0 4 .06a5.61 5.61 0 0 1 1.86.34a3.06 3.06 0 0 1 1.19.8a3.06 3.06 0 0 1 .75 1.1a5.61 5.61 0 0 1 .34 1.9c.05 1 .06 1.37.06 4s-.01 3-.06 4ZM12 6.87A5.13 5.13 0 1 0 17.14 12A5.12 5.12 0 0 0 12 6.87Zm0 8.46A3.33 3.33 0 1 1 15.33 12A3.33 3.33 0 0 1 12 15.33Z"/>
</svg>
<span>instagram.com/PiekarnikGosi</span>
</a>
</li>
<li>
<a href="mailto:gosia@piekarnikgosi.pl">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-mail-icon lucide-mail">
<path d="m22 7-8.991 5.727a2 2 0 0 1-2.009 0L2 7"/>
<rect x="2" y="4" width="20" height="16" rx="2"/>
</svg>
<span>gosia@piekarnikgosi.pl</span>
</a>
</li>
<li>
<a href="tel:+48503186245">
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-phone-icon lucide-phone">
<path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"/>
</svg>
<span>+48 503 186 245</span>
</a>
</li>
</ul>
</div>
<p>&copy 2026 Piekarnik Gosi.</p>
</footer>
</body>
{{end}}

View file

@ -1,27 +0,0 @@
{{define "header"}}
<!DOCTYPE html>
<html lang="pl">
<head>
<meta charset="UTF-8"/>
<title>Piekarnik Gosi</title>
<meta name="viewport" content="width=device-width,initial-scale=1"/>
<meta name="description" content=""/>
<link href="styles/style.css" rel="stylesheet"/>
<link rel="icon" href="images/favicon.png">
</head>
<body>
<nav>
<div>
<a href="index.html">
<img alt="logo" src="images/logo.png"/>
</a>
<div>
<a{{if (ne . "index")}} href="index.html" {{end}}>Strona Główna</a>
<a{{if (ne . "wyroby")}} href="wyroby.html" {{end}}>Wyroby</a>
<a{{if (ne . "portfolio")}} href="portfolio.html" {{end}}>Portfolio</a>
<a{{if (ne . "kawiarnia")}} href="kawiarnia.html" {{end}}>Kawiarnia</a>
</div>
<a class="btn" href="#footer">Kontakt</a>
</div>
</nav>
{{end}}

194
templates/index.templ Normal file
View file

@ -0,0 +1,194 @@
package templates
templ Index() {
@layout("index") {
<main id="index">
<header>
<div>
<h1>Słodkości tworzone z <span>pasją</span></h1>
<p>
Naturalne składniki, domowe receptury i pasja. Tworzymy torty i wypieki na Twoje najważniejsze chwile
- od codziennych radości po wielkie uroczystości
</p>
<a href="wyroby.html" class="btn">Zobacz naszą ofertę</a>
</div>
<div>
<img alt="tort" src="images/001.avif"/>
</div>
</header>
<section id="about-us">
<div>
<div>
<div>
<img alt="kawiarnia" src="images/002.avif"/>
</div>
<div>
<img alt="kawiarnia" src="images/003.avif"/>
</div>
</div>
<div>
<span>Tradycja i serce</span>
<h2>O nas</h2>
<p>
„Piekarnik Gosi” to marzenie, które udało mi się zrealizować dzięki wsparciu i pomocy moich
najbliższych. To pracownia cukiernicza stworzona z zamiłowania do pieczenia. Tworzę z pasją, z
najwyższej jakości składników, słodkości, które uświetnią każdą uroczystość oraz spotkanie.
Wszystkie wypieki wykonuje od podstaw własnoręcznie : od biszkoptu , frużelin owocowych, chrupek ,
kremów aż po elementy dekoracyjne. W mojej ofercie znajdują się torty weselne, słodkie stoły, torty
okazjonalne, tarty i ciasta wykonywane na indywidualne zamówienia. Co wyróżnia moją pracownię?
Domowy i naturalny smak 🙂 Realizuje życzenia klientów ze starannością i pełnym zaangażowaniem.
</p>
</div>
</div>
</section>
<section id="featured-delights">
<h2>Nasze Wyroby</h2>
<div class="card">
<div>
<img alt="tort" src="images/004.avif"/>
</div>
<div>
<h3>Torty Okazjonalne</h3>
<p>Weselne, urodzinowe i te bez okazji od klasyki po nowoczesne musy.</p>
<a href="wyroby_torty.html">
Przeglądaj Torty
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-arrow-right-icon lucide-arrow-right"
>
<path d="M5 12h14"></path>
<path d="m12 5 7 7-7 7"></path>
</svg>
</a>
</div>
</div>
<div class="card">
<div>
<img alt="ciasto" src="images/005.avif"/>
</div>
<div class="greener">
<h3>Domowe Ciasta</h3>
<p>Zapach tradycji: od serników po puszyste bezy</p>
<a href="wyroby.html">
Wyberz ciasto
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-arrow-right-icon lucide-arrow-right"
>
<path d="M5 12h14"></path>
<path d="m12 5 7 7-7 7"></path>
</svg>
</a>
</div>
</div>
<div class="card">
<div>
<img alt="slodkosci" src="images/006.avif"/>
</div>
<div>
<h3>Słodkie Stoły</h3>
<p>Kompleksowa oprawa słodkości na większe przyjęcia.</p>
<a href="wyroby_slodkie_stoly.html">
Sprawdź słodkie stoły
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-arrow-right-icon lucide-arrow-right"
>
<path d="M5 12h14"></path>
<path d="m12 5 7 7-7 7"></path>
</svg>
</a>
</div>
</div>
</section>
<section id="kawiarnia">
<div>
<div>
<h3>Twój drugi dom</h3>
<p>
Poczuj się jak w domu. Codziennie czekają na Ciebie świeże wypieki prosto z naszej pracowni,
selekcja
najlepszych herbat i przepyszna kawa. To tutaj nasze ciasta smakują najlepiej podane z
uśmiechem, w
miejscu stworzonym z pasji do słodkości.
</p>
<ul>
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-coffee-icon lucide-coffee"
>
<path d="M10 2v2"></path>
<path d="M14 2v2"></path>
<path d="M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1"></path>
<path d="M6 2v2"></path>
</svg>
<span>Miła atmosfera</span>
</li>
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-wifi-icon lucide-wifi"
>
<path d="M12 20h.01"></path>
<path d="M2 8.82a15 15 0 0 1 20 0"></path>
<path d="M5 12.859a10 10 0 0 1 14 0"></path>
<path d="M8.5 16.429a5 5 0 0 1 7 0"></path>
</svg>
<span>Darmowe wifi</span>
</li>
</ul>
</div>
<div>
<div>
<img alt="kawiarnia" src="images/007.avif"/>
</div>
<div>
<img alt="ciasto i kawa" src="images/008.avif"/>
</div>
</div>
</div>
</section>
</main>
}
}

58
templates/index_templ.go Normal file
View file

@ -0,0 +1,58 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.3.1020
package templates
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import templruntime "github.com/a-h/templ/runtime"
func Index() 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_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
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_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<main id=\"index\"><header><div><h1>Słodkości tworzone z <span>pasją</span></h1><p>Naturalne składniki, domowe receptury i pasja. Tworzymy torty i wypieki na Twoje najważniejsze chwile - od codziennych radości po wielkie uroczystości</p><a href=\"wyroby.html\" class=\"btn\">Zobacz naszą ofertę</a></div><div><img alt=\"tort\" src=\"images/001.avif\"></div></header><section id=\"about-us\"><div><div><div><img alt=\"kawiarnia\" src=\"images/002.avif\"></div><div><img alt=\"kawiarnia\" src=\"images/003.avif\"></div></div><div><span>Tradycja i serce</span><h2>O nas</h2><p>„Piekarnik Gosi” to marzenie, które udało mi się zrealizować dzięki wsparciu i pomocy moich najbliższych. To pracownia cukiernicza stworzona z zamiłowania do pieczenia. Tworzę z pasją, z najwyższej jakości składników, słodkości, które uświetnią każdą uroczystość oraz spotkanie. Wszystkie wypieki wykonuje od podstaw własnoręcznie : od biszkoptu , frużelin owocowych, chrupek , kremów aż po elementy dekoracyjne. W mojej ofercie znajdują się torty weselne, słodkie stoły, torty okazjonalne, tarty i ciasta wykonywane na indywidualne zamówienia. Co wyróżnia moją pracownię? Domowy i naturalny smak 🙂 Realizuje życzenia klientów ze starannością i pełnym zaangażowaniem.</p></div></div></section><section id=\"featured-delights\"><h2>Nasze Wyroby</h2><div class=\"card\"><div><img alt=\"tort\" src=\"images/004.avif\"></div><div><h3>Torty Okazjonalne</h3><p>Weselne, urodzinowe i te bez okazji od klasyki po nowoczesne musy.</p><a href=\"wyroby_torty.html\">Przeglądaj Torty <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-right-icon lucide-arrow-right\"><path d=\"M5 12h14\"></path> <path d=\"m12 5 7 7-7 7\"></path></svg></a></div></div><div class=\"card\"><div><img alt=\"ciasto\" src=\"images/005.avif\"></div><div class=\"greener\"><h3>Domowe Ciasta</h3><p>Zapach tradycji: od serników po puszyste bezy</p><a href=\"wyroby.html\">Wyberz ciasto <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-right-icon lucide-arrow-right\"><path d=\"M5 12h14\"></path> <path d=\"m12 5 7 7-7 7\"></path></svg></a></div></div><div class=\"card\"><div><img alt=\"slodkosci\" src=\"images/006.avif\"></div><div><h3>Słodkie Stoły</h3><p>Kompleksowa oprawa słodkości na większe przyjęcia.</p><a href=\"wyroby_slodkie_stoly.html\">Sprawdź słodkie stoły <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-right-icon lucide-arrow-right\"><path d=\"M5 12h14\"></path> <path d=\"m12 5 7 7-7 7\"></path></svg></a></div></div></section><section id=\"kawiarnia\"><div><div><h3>Twój drugi dom</h3><p>Poczuj się jak w domu. Codziennie czekają na Ciebie świeże wypieki prosto z naszej pracowni, selekcja najlepszych herbat i przepyszna kawa. To tutaj nasze ciasta smakują najlepiej podane z uśmiechem, w miejscu stworzonym z pasji do słodkości.</p><ul><li><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-coffee-icon lucide-coffee\"><path d=\"M10 2v2\"></path> <path d=\"M14 2v2\"></path> <path d=\"M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1\"></path> <path d=\"M6 2v2\"></path></svg> <span>Miła atmosfera</span></li><li><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-wifi-icon lucide-wifi\"><path d=\"M12 20h.01\"></path> <path d=\"M2 8.82a15 15 0 0 1 20 0\"></path> <path d=\"M5 12.859a10 10 0 0 1 14 0\"></path> <path d=\"M8.5 16.429a5 5 0 0 1 7 0\"></path></svg> <span>Darmowe wifi</span></li></ul></div><div><div><img alt=\"kawiarnia\" src=\"images/007.avif\"></div><div><img alt=\"ciasto i kawa\" src=\"images/008.avif\"></div></div></div></section></main>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
templ_7745c5c3_Err = layout("index").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
}
var _ = templruntime.GeneratedTemplate

View file

@ -1,196 +0,0 @@
{{template "header" "kawiarnia" }}
<main>
<header id="kawiarnia-header">
<div>
<span>Miejsce spotkań</span>
<h1>Chwila wytchnienia w sercu <span>tradycji</span></h1>
<p>Zapraszamy do naszej kawiarni, gdzie zapach świeżo mielonej kawy miesza się z aromatem wypieków prosto z
pieca.</p>
</div>
<div>
<img alt="kawiarnia" src="images/009.avif"/>
<div></div>
</div>
</header>
<section>
<div id="kawiarnia-details">
<header>
<h2>Odwiedź nas</h2>
<span>Czekamy na ciebie z świeżymi wypiekami i ciepłą kawą. Znajdź nas w samym centrum miasta.</span>
</header>
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-map-pin-icon lucide-map-pin">
<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"/>
<circle cx="12" cy="10" r="3"/>
</svg>
<h3>Adres</h3>
<p>ul. Dworcowa 3a<br>
83-300 Kartuzy</p>
</div>
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-clock-icon lucide-clock">
<circle cx="12" cy="12" r="10"/>
<path d="M12 6v6l4 2"/>
</svg>
<h3>Godziny Otwarcia</h3>
<ul>
<li>
<span>pn-pt</span><span>9:00-19:00</span>
</li>
<li>
<span>sb-nd</span><span>10:00-20:00</span>
</li>
</ul>
</div>
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-phone-icon lucide-phone">
<path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"/>
</svg>
<h3>Zadzwoń do nas</h3>
<p>Masz pytania? Chcesz zarezerwować stolik?</p>
<a href="tel:+48690214515">690 214 515</a>
</div>
</div>
</section>
<section id="kawiarnia-content">
<div>
<h2>Nasza karta</h2>
<div>
<div class="offer-card">
<svg style="--icon-color: var(--primary)" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" class="lucide lucide-coffee-icon lucide-coffee">
<path d="M10 2v2"/>
<path d="M14 2v2"/>
<path d="M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1"/>
<path d="M6 2v2"/>
</svg>
<h3>Kawy</h3>
<ul>
<li><p>Espresso</p><span>8 PLN</span></li>
<li><p>Espresso podwójne</p><span>12 PLN</span></li>
<li><p>Espresso Affogato</p><span>17 PLN</span></li>
<li><p>Americano</p><span>10 PLN</span></li>
<li><p>Flat White</p><span>12 PLN</span></li>
<li><p>Cappucino</p><span>12 PLN</span></li>
<li><p>Caffee Latte</p><span>14 PLN</span></li>
<li><p>Latte Macchiato</p><span>15 PLN</span></li>
<li><p>Kawa Mrożona</p><span>22 PLN</span></li>
<li><p>Ice Latte</p><span>20 PLN</span></li>
<h3>Dodatki</h3>
<li><p>Bita śmietana</p><span>4 PLN</span></li>
<li><p>Syrop</p><span>2 PLN</span></li>
<li><p>Dodatkowa porcja espresso</p><span>2 PLN</span></li>
</ul>
</div>
<div class="offer-card">
<svg style="--icon-color: #B56576" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" class="lucide lucide-cake-slice-icon lucide-cake-slice">
<path d="M16 13H3"/>
<path d="M16 17H3"/>
<path d="m7.2 7.9-3.388 2.5A2 2 0 0 0 3 12.01V20a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-8.654c0-2-2.44-6.026-6.44-8.026a1 1 0 0 0-1.082.057L10.4 5.6"/>
<circle cx="9" cy="7" r="2"/>
</svg>
<h3>Słodkości</h3>
<ul><p>Codziennie pieczemy coś innego! Zapytaj obsługę o dzisiejsze smaki.</p>
<li><p>Domowe ciasta</p><span>10 - 20 LN</span></li>
<li><p>Deserki</p><span>5 - 15 PLN</span></li>
<li><p>Mini Pavlova</p><span>12 PLN</span></li>
</ul>
</div>
<div class="offer-card">
<svg style="--icon-color: #7D8C61" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-leaf-icon lucide-leaf">
<path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z"/>
<path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12"/>
</svg>
<h3>Herbaty</h3>
<ul>
<li><p>Czarna</p><span>10 PLN</span></li>
<li><p>Zielona</p><span>10 PLN</span></li>
<li><p>Cytryna</p><span>10 PLN</span></li>
<li><p>Imbir</p><span>10 PLN</span></li>
<li><p>Owocowa</p><span>10 PLN</span></li>
<li><p>Cappucino</p><span>10 PLN</span></li>
<li><p>Ice Tea</p><span>18 PLN</span></li>
</ul>
</div>
<div class="offer-card">
<svg style="--icon-color: #D48C45" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-cup-soda-icon lucide-cup-soda">
<path d="m6 8 1.75 12.28a2 2 0 0 0 2 1.72h4.54a2 2 0 0 0 2-1.72L18 8"/>
<path d="M5 8h14"/>
<path d="M7 15a6.47 6.47 0 0 1 5 0 6.47 6.47 0 0 0 5 0"/>
<path d="m12 8 1-6h2"/>
</svg>
<h3>Napoje</h3>
<ul>
<li><p>Woda gazowana</p><span>6 PLN</span></li>
<li><p>Woda niegazowana</p><span>6 PLN</span></li>
<li><p>Coca Cola</p><span>8 PLN</span></li>
<li><p>Fanta</p><span>8 PLN</span></li>
<li><p>Smoothie owocowe</p><span>20 PLN</span></li>
<li><p>Milkshake</p><span>24 PLN</span></li>
<li><p>Lemoniada</p><span>18 PLN</span></li>
</ul>
</div>
<div class="offer-card">
<svg style="--icon-color: #B56576" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-ice-cream-cone-icon lucide-ice-cream-cone">
<path d="m7 11 4.08 10.35a1 1 0 0 0 1.84 0L17 11"/>
<path d="M17 7A5 5 0 0 0 7 7"/>
<path d="M17 7a2 2 0 0 1 0 4H7a2 2 0 0 1 0-4"/>
</svg>
<h3>Lody</h3>
<ul>
<li><p>Mała gałka</p><span>6 PLN</span></li>
<li><p>Duża gałka</p><span>8 PLN</span></li>
<li><p>Deser Lodowy</p><span>26 PLN</span></li>
<li><p>Małe włoskie</p><span>10 PLN</span></li>
<li><p>Duże włoskie</p><span>14 PLN</span></li>
</ul>
</div>
<div class="offer-card">
<svg style="--icon-color: #C29B40" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-grid3x3-icon lucide-grid-3x3">
<rect width="18" height="18" x="3" y="3" rx="2"/>
<path d="M3 9h18"/>
<path d="M3 15h18"/>
<path d="M9 3v18"/>
<path d="M15 3v18"/>
</svg>
<h3>Gofry</h3>
<ul>
<li><p>Gofr</p><span>12 PLN</span></li>
<li><p>Gofr bąbelkowy</p><span>24 PLN</span></li>
<h3>Dodatki</h3>
<li><p>Owoce</p><span>5 PLN</span></li>
<li><p>Bita śmietana</p><span>4 PLN</span></li>
<li><p>Posypka i/lub polewa</p><span>2 PLN</span></li>
<li><p>Frużelina</p><span>14 PLN</span></li>
</ul>
</div>
</div>
</div>
</section>
</main>
{{template "footer"}}

285
templates/kawiarnia.templ Normal file
View file

@ -0,0 +1,285 @@
package templates
templ Kawiarnia() {
@layout("kawiarnia") {
<main>
<header id="kawiarnia-header">
<div>
<span>Miejsce spotkań</span>
<h1>Chwila wytchnienia w sercu <span>tradycji</span></h1>
<p>
Zapraszamy do naszej kawiarni, gdzie zapach świeżo mielonej kawy miesza się z aromatem wypieków prosto z
pieca.
</p>
</div>
<div>
<img alt="kawiarnia" src="images/009.avif"/>
<div></div>
</div>
</header>
<section>
<div id="kawiarnia-details">
<header>
<h2>Odwiedź nas</h2>
<span>Czekamy na ciebie z świeżymi wypiekami i ciepłą kawą. Znajdź nas w samym centrum miasta.</span>
</header>
<div>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-map-pin-icon lucide-map-pin"
>
<path d="M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0"></path>
<circle cx="12" cy="10" r="3"></circle>
</svg>
<h3>Adres</h3>
<p>
ul. Dworcowa 3a
<br/>
83-300 Kartuzy
</p>
</div>
<div>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-clock-icon lucide-clock"
>
<circle cx="12" cy="12" r="10"></circle>
<path d="M12 6v6l4 2"></path>
</svg>
<h3>Godziny Otwarcia</h3>
<ul>
<li>
<span>pn-pt</span><span>9:00-19:00</span>
</li>
<li>
<span>sb-nd</span><span>10:00-20:00</span>
</li>
</ul>
</div>
<div>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-phone-icon lucide-phone"
>
<path d="M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384"></path>
</svg>
<h3>Zadzwoń do nas</h3>
<p>Masz pytania? Chcesz zarezerwować stolik?</p>
<a href="tel:+48690214515">690 214 515</a>
</div>
</div>
</section>
<section id="kawiarnia-content">
<div>
<h2>Nasza karta</h2>
<div>
<div class="offer-card">
<svg
style="--icon-color: var(--primary)"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-coffee-icon lucide-coffee"
>
<path d="M10 2v2"></path>
<path d="M14 2v2"></path>
<path d="M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1"></path>
<path d="M6 2v2"></path>
</svg>
<h3>Kawy</h3>
<ul>
<li><p>Espresso</p><span>8 PLN</span></li>
<li><p>Espresso podwójne</p><span>12 PLN</span></li>
<li><p>Espresso Affogato</p><span>17 PLN</span></li>
<li><p>Americano</p><span>10 PLN</span></li>
<li><p>Flat White</p><span>12 PLN</span></li>
<li><p>Cappucino</p><span>12 PLN</span></li>
<li><p>Caffee Latte</p><span>14 PLN</span></li>
<li><p>Latte Macchiato</p><span>15 PLN</span></li>
<li><p>Kawa Mrożona</p><span>22 PLN</span></li>
<li><p>Ice Latte</p><span>20 PLN</span></li>
<h3>Dodatki</h3>
<li><p>Bita śmietana</p><span>4 PLN</span></li>
<li><p>Syrop</p><span>2 PLN</span></li>
<li><p>Dodatkowa porcja espresso</p><span>2 PLN</span></li>
</ul>
</div>
<div class="offer-card">
<svg
style="--icon-color: #B56576"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-cake-slice-icon lucide-cake-slice"
>
<path d="M16 13H3"></path>
<path d="M16 17H3"></path>
<path d="m7.2 7.9-3.388 2.5A2 2 0 0 0 3 12.01V20a1 1 0 0 0 1 1h16a1 1 0 0 0 1-1v-8.654c0-2-2.44-6.026-6.44-8.026a1 1 0 0 0-1.082.057L10.4 5.6"></path>
<circle cx="9" cy="7" r="2"></circle>
</svg>
<h3>Słodkości</h3>
<ul>
<p>Codziennie pieczemy coś innego! Zapytaj obsługę o dzisiejsze smaki.</p>
<li><p>Domowe ciasta</p><span>10 - 20 LN</span></li>
<li><p>Deserki</p><span>5 - 15 PLN</span></li>
<li><p>Mini Pavlova</p><span>12 PLN</span></li>
</ul>
</div>
<div class="offer-card">
<svg
style="--icon-color: #7D8C61"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-leaf-icon lucide-leaf"
>
<path d="M11 20A7 7 0 0 1 9.8 6.1C15.5 5 17 4.48 19 2c1 2 2 4.18 2 8 0 5.5-4.78 10-10 10Z"></path>
<path d="M2 21c0-3 1.85-5.36 5.08-6C9.5 14.52 12 13 13 12"></path>
</svg>
<h3>Herbaty</h3>
<ul>
<li><p>Czarna</p><span>10 PLN</span></li>
<li><p>Zielona</p><span>10 PLN</span></li>
<li><p>Cytryna</p><span>10 PLN</span></li>
<li><p>Imbir</p><span>10 PLN</span></li>
<li><p>Owocowa</p><span>10 PLN</span></li>
<li><p>Cappucino</p><span>10 PLN</span></li>
<li><p>Ice Tea</p><span>18 PLN</span></li>
</ul>
</div>
<div class="offer-card">
<svg
style="--icon-color: #D48C45"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-cup-soda-icon lucide-cup-soda"
>
<path d="m6 8 1.75 12.28a2 2 0 0 0 2 1.72h4.54a2 2 0 0 0 2-1.72L18 8"></path>
<path d="M5 8h14"></path>
<path d="M7 15a6.47 6.47 0 0 1 5 0 6.47 6.47 0 0 0 5 0"></path>
<path d="m12 8 1-6h2"></path>
</svg>
<h3>Napoje</h3>
<ul>
<li><p>Woda gazowana</p><span>6 PLN</span></li>
<li><p>Woda niegazowana</p><span>6 PLN</span></li>
<li><p>Coca Cola</p><span>8 PLN</span></li>
<li><p>Fanta</p><span>8 PLN</span></li>
<li><p>Smoothie owocowe</p><span>20 PLN</span></li>
<li><p>Milkshake</p><span>24 PLN</span></li>
<li><p>Lemoniada</p><span>18 PLN</span></li>
</ul>
</div>
<div class="offer-card">
<svg
style="--icon-color: #B56576"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-ice-cream-cone-icon lucide-ice-cream-cone"
>
<path d="m7 11 4.08 10.35a1 1 0 0 0 1.84 0L17 11"></path>
<path d="M17 7A5 5 0 0 0 7 7"></path>
<path d="M17 7a2 2 0 0 1 0 4H7a2 2 0 0 1 0-4"></path>
</svg>
<h3>Lody</h3>
<ul>
<li><p>Mała gałka</p><span>6 PLN</span></li>
<li><p>Duża gałka</p><span>8 PLN</span></li>
<li><p>Deser Lodowy</p><span>26 PLN</span></li>
<li><p>Małe włoskie</p><span>10 PLN</span></li>
<li><p>Duże włoskie</p><span>14 PLN</span></li>
</ul>
</div>
<div class="offer-card">
<svg
style="--icon-color: #C29B40"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-grid3x3-icon lucide-grid-3x3"
>
<rect width="18" height="18" x="3" y="3" rx="2"></rect>
<path d="M3 9h18"></path>
<path d="M3 15h18"></path>
<path d="M9 3v18"></path>
<path d="M15 3v18"></path>
</svg>
<h3>Gofry</h3>
<ul>
<li><p>Gofr</p><span>12 PLN</span></li>
<li><p>Gofr bąbelkowy</p><span>24 PLN</span></li>
<h3>Dodatki</h3>
<li><p>Owoce</p><span>5 PLN</span></li>
<li><p>Bita śmietana</p><span>4 PLN</span></li>
<li><p>Posypka i/lub polewa</p><span>2 PLN</span></li>
<li><p>Frużelina</p><span>14 PLN</span></li>
</ul>
</div>
</div>
</div>
</section>
</main>
}
}

File diff suppressed because one or more lines are too long

View file

@ -2,7 +2,7 @@ package templates
import "fmt"
templ Layout(activePage string) {
templ layout(activePage string) {
<!DOCTYPE html>
<html lang="pl">
<head>
@ -174,202 +174,34 @@ templ Layout(activePage string) {
}
templ Link(activePage, targetPage, title string) {
if activePage == targetPage {
<a>{ title }</a>
} else {
<a href={ fmt.Sprint(targetPage, ".html") }>{ title }</a>
}
<a
if activePage != targetPage {
href={ fmt.Sprint(targetPage, ".html") }
}
>{ title }</a>
}
templ IndexPage() {
@Layout("index") {
<main id="index">
<header>
<div>
<h1>Słodkości tworzone z <span>pasją</span></h1>
<p>
Naturalne składniki, domowe receptury i pasja. Tworzymy torty i wypieki na Twoje najważniejsze chwile
- od codziennych radości po wielkie uroczystości
</p>
<a href="wyroby.html" class="btn">Zobacz naszą ofertę</a>
</div>
<div>
<img alt="tort" src="images/001.avif"/>
</div>
</header>
<section id="about-us">
<div>
<div>
<div>
<img alt="kawiarnia" src="images/002.avif"/>
</div>
<div>
<img alt="kawiarnia" src="images/003.avif"/>
</div>
</div>
<div>
<span>Tradycja i serce</span>
<h2>O nas</h2>
<p>
„Piekarnik Gosi” to marzenie, które udało mi się zrealizować dzięki wsparciu i pomocy moich
najbliższych. To pracownia cukiernicza stworzona z zamiłowania do pieczenia. Tworzę z pasją, z
najwyższej jakości składników, słodkości, które uświetnią każdą uroczystość oraz spotkanie.
Wszystkie wypieki wykonuje od podstaw własnoręcznie : od biszkoptu , frużelin owocowych, chrupek ,
kremów aż po elementy dekoracyjne. W mojej ofercie znajdują się torty weselne, słodkie stoły, torty
okazjonalne, tarty i ciasta wykonywane na indywidualne zamówienia. Co wyróżnia moją pracownię?
Domowy i naturalny smak 🙂 Realizuje życzenia klientów ze starannością i pełnym zaangażowaniem.
</p>
</div>
</div>
</section>
<section id="featured-delights">
<h2>Nasze Wyroby</h2>
<div class="card">
<div>
<img alt="tort" src="images/004.avif"/>
</div>
<div>
<h3>Torty Okazjonalne</h3>
<p>Weselne, urodzinowe i te bez okazji od klasyki po nowoczesne musy.</p>
<a href="wyroby_torty.html">
Przeglądaj Torty
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-arrow-right-icon lucide-arrow-right"
>
<path d="M5 12h14"></path>
<path d="m12 5 7 7-7 7"></path>
</svg>
</a>
</div>
</div>
<div class="card">
<div>
<img alt="ciasto" src="images/005.avif"/>
</div>
<div class="greener">
<h3>Domowe Ciasta</h3>
<p>Zapach tradycji: od serników po puszyste bezy</p>
<a href="wyroby.html">
Wyberz ciasto
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-arrow-right-icon lucide-arrow-right"
>
<path d="M5 12h14"></path>
<path d="m12 5 7 7-7 7"></path>
</svg>
</a>
</div>
</div>
<div class="card">
<div>
<img alt="slodkosci" src="images/006.avif"/>
</div>
<div>
<h3>Słodkie Stoły</h3>
<p>Kompleksowa oprawa słodkości na większe przyjęcia.</p>
<a href="wyroby_slodkie_stoly.html">
Sprawdź słodkie stoły
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-arrow-right-icon lucide-arrow-right"
>
<path d="M5 12h14"></path>
<path d="m12 5 7 7-7 7"></path>
</svg>
</a>
</div>
</div>
</section>
<section id="kawiarnia">
<div>
<div>
<h3>Twój drugi dom</h3>
<p>
Poczuj się jak w domu. Codziennie czekają na Ciebie świeże wypieki prosto z naszej pracowni,
selekcja
najlepszych herbat i przepyszna kawa. To tutaj nasze ciasta smakują najlepiej podane z
uśmiechem, w
miejscu stworzonym z pasji do słodkości.
</p>
<ul>
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-coffee-icon lucide-coffee"
>
<path d="M10 2v2"></path>
<path d="M14 2v2"></path>
<path d="M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1"></path>
<path d="M6 2v2"></path>
</svg>
<span>Miła atmosfera</span>
</li>
<li>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-wifi-icon lucide-wifi"
>
<path d="M12 20h.01"></path>
<path d="M2 8.82a15 15 0 0 1 20 0"></path>
<path d="M5 12.859a10 10 0 0 1 14 0"></path>
<path d="M8.5 16.429a5 5 0 0 1 7 0"></path>
</svg>
<span>Darmowe wifi</span>
</li>
</ul>
</div>
<div>
<div>
<img alt="kawiarnia" src="images/007.avif"/>
</div>
<div>
<img alt="ciasto i kawa" src="images/008.avif"/>
</div>
</div>
</div>
</section>
</main>
}
templ GreenLink(activePage, targetPage, title string) {
<a
if activePage != targetPage {
href={ fmt.Sprint(targetPage, ".html") }
}
class="btn-green"
>{ title }</a>
}
templ wyrobyHeader(activePage string) {
<header class="subnav">
<h1>Nasze słodkości</h1>
<p>
Poznaj nasze tradycyjne receptury przekute w nowoczesne formy. Każdy wypiek to historia pasji, a każde lody
to powiew naturalnej świeżości
</p>
<nav>
@GreenLink(activePage, "wyroby", "Ciasta")
@GreenLink(activePage, "wyroby_torty", "Torty")
@GreenLink(activePage, "wyroby_slodkie_stoly", "Słodkie stoły")
@GreenLink(activePage, "wyroby_lody", "Lody")
</nav>
</header>
}

View file

@ -10,7 +10,7 @@ import templruntime "github.com/a-h/templ/runtime"
import "fmt"
func Layout(activePage string) templ.Component {
func layout(activePage string) 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 {
@ -88,61 +88,51 @@ func Link(activePage, targetPage, title string) templ.Component {
templ_7745c5c3_Var2 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
if activePage == targetPage {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<a>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "<a")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if activePage != targetPage {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, " href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinStringErrs(title)
var templ_7745c5c3_Var3 templ.SafeURL
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.JoinURLErrs(fmt.Sprint(targetPage, ".html"))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/layout.templ`, Line: 178, Col: 12}
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/layout.templ`, Line: 179, Col: 41}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var3))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "</a>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
} else {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "<a href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 templ.SafeURL
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinURLErrs(fmt.Sprint(targetPage, ".html"))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/layout.templ`, Line: 180, Col: 43}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/layout.templ`, Line: 180, Col: 53}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</a>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, ">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/layout.templ`, Line: 181, Col: 9}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "</a>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
}
func IndexPage() templ.Component {
func GreenLink(activePage, targetPage, title string) 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 {
@ -158,30 +148,97 @@ func IndexPage() templ.Component {
}()
}
ctx = templ.InitializeContext(ctx)
templ_7745c5c3_Var6 := templ.GetChildren(ctx)
if templ_7745c5c3_Var6 == nil {
templ_7745c5c3_Var6 = templ.NopComponent
templ_7745c5c3_Var5 := templ.GetChildren(ctx)
if templ_7745c5c3_Var5 == nil {
templ_7745c5c3_Var5 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var7 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
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_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "<main id=\"index\"><header><div><h1>Słodkości tworzone z <span>pasją</span></h1><p>Naturalne składniki, domowe receptury i pasja. Tworzymy torty i wypieki na Twoje najważniejsze chwile - od codziennych radości po wielkie uroczystości</p><a href=\"wyroby.html\" class=\"btn\">Zobacz naszą ofertę</a></div><div><img alt=\"tort\" src=\"images/001.avif\"></div></header><section id=\"about-us\"><div><div><div><img alt=\"kawiarnia\" src=\"images/002.avif\"></div><div><img alt=\"kawiarnia\" src=\"images/003.avif\"></div></div><div><span>Tradycja i serce</span><h2>O nas</h2><p>„Piekarnik Gosi” to marzenie, które udało mi się zrealizować dzięki wsparciu i pomocy moich najbliższych. To pracownia cukiernicza stworzona z zamiłowania do pieczenia. Tworzę z pasją, z najwyższej jakości składników, słodkości, które uświetnią każdą uroczystość oraz spotkanie. Wszystkie wypieki wykonuje od podstaw własnoręcznie : od biszkoptu , frużelin owocowych, chrupek , kremów aż po elementy dekoracyjne. W mojej ofercie znajdują się torty weselne, słodkie stoły, torty okazjonalne, tarty i ciasta wykonywane na indywidualne zamówienia. Co wyróżnia moją pracownię? Domowy i naturalny smak 🙂 Realizuje życzenia klientów ze starannością i pełnym zaangażowaniem.</p></div></div></section><section id=\"featured-delights\"><h2>Nasze Wyroby</h2><div class=\"card\"><div><img alt=\"tort\" src=\"images/004.avif\"></div><div><h3>Torty Okazjonalne</h3><p>Weselne, urodzinowe i te bez okazji od klasyki po nowoczesne musy.</p><a href=\"wyroby_torty.html\">Przeglądaj Torty <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-right-icon lucide-arrow-right\"><path d=\"M5 12h14\"></path> <path d=\"m12 5 7 7-7 7\"></path></svg></a></div></div><div class=\"card\"><div><img alt=\"ciasto\" src=\"images/005.avif\"></div><div class=\"greener\"><h3>Domowe Ciasta</h3><p>Zapach tradycji: od serników po puszyste bezy</p><a href=\"wyroby.html\">Wyberz ciasto <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-right-icon lucide-arrow-right\"><path d=\"M5 12h14\"></path> <path d=\"m12 5 7 7-7 7\"></path></svg></a></div></div><div class=\"card\"><div><img alt=\"slodkosci\" src=\"images/006.avif\"></div><div><h3>Słodkie Stoły</h3><p>Kompleksowa oprawa słodkości na większe przyjęcia.</p><a href=\"wyroby_slodkie_stoly.html\">Sprawdź słodkie stoły <svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-arrow-right-icon lucide-arrow-right\"><path d=\"M5 12h14\"></path> <path d=\"m12 5 7 7-7 7\"></path></svg></a></div></div></section><section id=\"kawiarnia\"><div><div><h3>Twój drugi dom</h3><p>Poczuj się jak w domu. Codziennie czekają na Ciebie świeże wypieki prosto z naszej pracowni, selekcja najlepszych herbat i przepyszna kawa. To tutaj nasze ciasta smakują najlepiej podane z uśmiechem, w miejscu stworzonym z pasji do słodkości.</p><ul><li><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-coffee-icon lucide-coffee\"><path d=\"M10 2v2\"></path> <path d=\"M14 2v2\"></path> <path d=\"M16 8a1 1 0 0 1 1 1v8a4 4 0 0 1-4 4H7a4 4 0 0 1-4-4V9a1 1 0 0 1 1-1h14a4 4 0 1 1 0 8h-1\"></path> <path d=\"M6 2v2\"></path></svg> <span>Miła atmosfera</span></li><li><svg xmlns=\"http://www.w3.org/2000/svg\" width=\"24\" height=\"24\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"lucide lucide-wifi-icon lucide-wifi\"><path d=\"M12 20h.01\"></path> <path d=\"M2 8.82a15 15 0 0 1 20 0\"></path> <path d=\"M5 12.859a10 10 0 0 1 14 0\"></path> <path d=\"M8.5 16.429a5 5 0 0 1 7 0\"></path></svg> <span>Darmowe wifi</span></li></ul></div><div><div><img alt=\"kawiarnia\" src=\"images/007.avif\"></div><div><img alt=\"ciasto i kawa\" src=\"images/008.avif\"></div></div></div></section></main>")
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "<a")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
if activePage != targetPage {
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 10, " href=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
templ_7745c5c3_Err = Layout("index").Render(templ.WithChildren(ctx, templ_7745c5c3_Var7), templ_7745c5c3_Buffer)
var templ_7745c5c3_Var6 templ.SafeURL
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinURLErrs(fmt.Sprint(targetPage, ".html"))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/layout.templ`, Line: 187, Col: 41}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 11, "\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 12, " class=\"btn-green\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var7 string
templ_7745c5c3_Var7, templ_7745c5c3_Err = templ.JoinStringErrs(title)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/layout.templ`, Line: 190, Col: 9}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var7))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 13, "</a>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
}
func wyrobyHeader(activePage string) 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_Var8 := templ.GetChildren(ctx)
if templ_7745c5c3_Var8 == nil {
templ_7745c5c3_Var8 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 14, "<header class=\"subnav\"><h1>Nasze słodkości</h1><p>Poznaj nasze tradycyjne receptury przekute w nowoczesne formy. Każdy wypiek to historia pasji, a każde lody to powiew naturalnej świeżości</p><nav>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = GreenLink(activePage, "wyroby", "Ciasta").Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = GreenLink(activePage, "wyroby_torty", "Torty").Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = GreenLink(activePage, "wyroby_slodkie_stoly", "Słodkie stoły").Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = GreenLink(activePage, "wyroby_lody", "Lody").Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 15, "</nav></header>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}

View file

@ -1,16 +0,0 @@
{{template "header" "portfolio"}}
<main>
<section class="portfolio">
<header>
<h1>Nasze Słodkie Realizacje</h1>
<p>Galeria pasji uwieczniona w kremie i dekoracjach. Zobacz wybrane projekty, które uświetniły wyjątkowe chwile naszych klientów od bajkowych tortów dla dzieci po eleganckie torty weselne.</p>
</header>
<div>
<a class="btn-green">Ciasta</a>
<a class="btn-green" href="wyroby_torty.gohtml">Torty</a>
<a class="btn-green" href="wyroby_slodkie_stoly.html">Slodkie stoły</a>
<a class="btn-green" href="wyroby_lody.html">Lody</a>
</div>
</section>
</main>
{{template "footer"}}

20
templates/portfolio.templ Normal file
View file

@ -0,0 +1,20 @@
package templates
templ Portfolio() {
@layout("portfolio") {
<main>
<section class="portfolio">
<header>
<h1>Nasze Słodkie Realizacje</h1>
<p>Galeria pasji uwieczniona w kremie i dekoracjach. Zobacz wybrane projekty, które uświetniły wyjątkowe chwile naszych klientów od bajkowych tortów dla dzieci po eleganckie torty weselne.</p>
</header>
<div>
<a class="btn-green">Ciasta</a>
<a class="btn-green" href="wyroby_torty.gohtml">Torty</a>
<a class="btn-green" href="wyroby_slodkie_stoly.html">Slodkie stoły</a>
<a class="btn-green" href="wyroby_lody.html">Lody</a>
</div>
</section>
</main>
}
}

View file

@ -0,0 +1,58 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.3.1020
package templates
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import templruntime "github.com/a-h/templ/runtime"
func Portfolio() 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_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
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_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<main><section class=\"portfolio\"><header><h1>Nasze Słodkie Realizacje</h1><p>Galeria pasji uwieczniona w kremie i dekoracjach. Zobacz wybrane projekty, które uświetniły wyjątkowe chwile naszych klientów od bajkowych tortów dla dzieci po eleganckie torty weselne.</p></header><div><a class=\"btn-green\">Ciasta</a> <a class=\"btn-green\" href=\"wyroby_torty.gohtml\">Torty</a> <a class=\"btn-green\" href=\"wyroby_slodkie_stoly.html\">Slodkie stoły</a> <a class=\"btn-green\" href=\"wyroby_lody.html\">Lody</a></div></section></main>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
templ_7745c5c3_Err = layout("portfolio").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
}
var _ = templruntime.GeneratedTemplate

View file

@ -1,12 +0,0 @@
{{template "header" "wyroby"}}
<main>
{{template "wyroby_header" "ciasta"}}
<section>
<div id="wyroby">
{{range .}}
{{template "card" . }}
{{end}}
</div>
</section>
</main>
{{template "footer"}}

View file

@ -0,0 +1,32 @@
package templates
import (
"fmt"
"piekarnikgosi/types"
)
templ card(product types.Product) {
<div class="card">
<div>
<img alt={ product.Name } src={ fmt.Sprint("images/wyroby/", product.Image, ".avif") }/>
</div>
<div>
<h3>{ product.Name }</h3>
<span>{ product.Price }zł</span>
<p>{ product.Description }</p>
</div>
</div>
}
templ WyrobyCiasta(products []types.Product) {
@layout("wyroby") {
<main>
@wyrobyHeader("wyroby")
<div id="wyroby">
for _, product:= range products {
@card(product)
}
</div>
</main>
}
}

View file

@ -0,0 +1,175 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.3.1020
package templates
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import templruntime "github.com/a-h/templ/runtime"
import (
"fmt"
"piekarnikgosi/types"
)
func card(product types.Product) 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_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<div class=\"card\"><div><img alt=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var2 string
templ_7745c5c3_Var2, templ_7745c5c3_Err = templ.ResolveAttributeValue(product.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/wyroby_ciasta.templ`, Line: 11, Col: 26}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var2)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "\" src=\"")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var3 string
templ_7745c5c3_Var3, templ_7745c5c3_Err = templ.ResolveAttributeValue(fmt.Sprint("images/wyroby/", product.Image, ".avif"))
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/wyroby_ciasta.templ`, Line: 11, Col: 87}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ_7745c5c3_Var3)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 3, "\"></div><div><h3>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var4 string
templ_7745c5c3_Var4, templ_7745c5c3_Err = templ.JoinStringErrs(product.Name)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/wyroby_ciasta.templ`, Line: 14, Col: 21}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var4))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 4, "</h3><span>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var5 string
templ_7745c5c3_Var5, templ_7745c5c3_Err = templ.JoinStringErrs(product.Price)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/wyroby_ciasta.templ`, Line: 15, Col: 24}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var5))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 5, "zł</span><p>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
var templ_7745c5c3_Var6 string
templ_7745c5c3_Var6, templ_7745c5c3_Err = templ.JoinStringErrs(product.Description)
if templ_7745c5c3_Err != nil {
return templ.Error{Err: templ_7745c5c3_Err, FileName: `templates/wyroby_ciasta.templ`, Line: 16, Col: 27}
}
_, templ_7745c5c3_Err = templ_7745c5c3_Buffer.WriteString(templ.EscapeString(templ_7745c5c3_Var6))
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 6, "</p></div></div>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
}
func WyrobyCiasta(products []types.Product) 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_Var7 := templ.GetChildren(ctx)
if templ_7745c5c3_Var7 == nil {
templ_7745c5c3_Var7 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var8 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
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_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 7, "<main>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = wyrobyHeader("wyroby").Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 8, "<div id=\"wyroby\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
for _, product := range products {
templ_7745c5c3_Err = card(product).Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 9, "</div></main>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
templ_7745c5c3_Err = layout("wyroby").Render(templ.WithChildren(ctx, templ_7745c5c3_Var8), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
}
var _ = templruntime.GeneratedTemplate

View file

@ -1,13 +0,0 @@
{{define "wyroby_header"}}
<header class="subnav">
<h1>Nasze słodkości</h1>
<p>Poznaj nasze tradycyjne receptury przekute w nowoczesne formy. Każdy wypiek to historia pasji, a każde lody
to powiew naturalnej świeżości</p>
<nav>
<a {{if (ne . "ciasta")}} href="wyroby.html" {{end}} class="btn-green">Ciasta</a>
<a {{if (ne . "torty")}} href="wyroby_torty.html" {{end}} class="btn-green">Torty</a>
<a {{if (ne . "slodkie_stoly")}}href="wyroby_slodkie_stoly.html" {{end}} class="btn-green">Słodkie stoły</a>
<a {{if (ne . "lody")}} href="wyroby_lody.html" {{end}}class="btn-green">Lody</a>
</nav>
</header>
{{end}}

View file

@ -1,5 +0,0 @@
{{template "header" "wyroby"}}
<main>
{{template "wyroby_header" "lody"}}
</main>
{{template "footer"}}

View file

@ -0,0 +1,9 @@
package templates
templ WyrobyLody() {
@layout("wyroby") {
<main>
@wyrobyHeader("wyroby_lody")
</main>
}
}

View file

@ -0,0 +1,66 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.3.1020
package templates
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import templruntime "github.com/a-h/templ/runtime"
func WyrobyLody() 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_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
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_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<main>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = wyrobyHeader("wyroby_lody").Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "</main>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
templ_7745c5c3_Err = layout("wyroby").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
}
var _ = templruntime.GeneratedTemplate

View file

@ -1,55 +0,0 @@
{{template "header" "wyroby"}}
<main id="slodkie_stoly">
{{template "wyroby_header" "slodkie_stoly"}}
<section id="cennik">
<p>Aranżacja i transport słodkości ustalane są indywidualnie<br>
Minimalna ilość zamówień: <strong>8szt</strong> z jednego rodzaju<br>
W przypadku zamówień dla ilości osób powyżej 30, do wyboru są następujące konfiguracje bufetów:
</p>
<div class="card-low">
<h3>Podstawowy</h3>
<span>28 PLN/osoba</span>
<p>3 szt. deseru na osobę<br>5 rodzajów do wyboru</p>
</div>
<div class="card-low">
<h3>Rozszerzony</h3>
<span>34 PLN/osoba</span>
<p>4-5 szt. deseru na osobę<br>7 rodzajów do wyboru</p>
</div>
<div class="card-low">
<h3>Premium</h3>
<span>39 PLN/osoba</span>
<p>6 szt. deseru na osobę<br>7 rodzajów do wyboru</p>
</div>
</section>
<section>
<div id="deserki">
<div>
<h2>W skład słodkiego stołu mogą wchodzić</h2>
<ul>
<li><div><span>Muffinki czekoladowe z kremem śmietankowym</span></div></li>
<li><div><span>Babeczki z kremem i piankami</span></div></li>
<li><div><span>Cake popsy</span><span>w czekoladzie</span></div></li>
<li><div><span>Ice popsy</span><span>w czekoladzie</span></div></li>
<li><div><span>Panna Cotta</span><span>Deser w pucharku </span></div></li>
<li><div><span>Tiramisu</span><span>Deser w pucharku </span></div></li>
<li><div><span>Leśny mech z musem truskawkowym</span><span>Deser w pucharku </span></div></li>
<li><div><span>Chia</span><span>Deser w pucharku </span></div></li>
<li><div><span>Serniczek cynamonowy lub oreo</span><span>na ciasteczkowym spodzie</span></div></li>
<li><div><span>Oreo</span><span>Deser w pucharku</span></div></li>
<li><div><span>Mini Pavlove z owocami</span><span>ok.7 cm średnicy</span></div></li>
<li><div><span>Monoporcja</span><span>półkula w polewie lustrzanej mango marakuja</span></div></li>
<li><div>
<span>Savarin</span><span>mus z białej czekolady i żelką malinową na migdałowym ciasteczku</span>
</div></li>
<li><div><span>Eklerki</span><span>z kremem śmietanowym/pattisiere</span></div></li>
<li><div><span>Tartaletki</span><span>z kremem i owocami</span></div></li>
<li><div><span>Mini tarta</span><span>z ganache czekoladowym i żelką malinową</span></div></li>
<li><div><span>Profiterol</span><span>z kruszonką i kremem porzeczkowym/śmietankowym</span></div></li>
<li><div><span>Ciasta</span></div></li>
</ul>
</div>
</div>
</section>
</main>
{{template "footer"}}

View file

@ -0,0 +1,64 @@
package templates
templ WyrobySlodkieStoly() {
@layout("wyroby") {
<main id="slodkie_stoly">
@wyrobyHeader("wyroby_slodkie_stoly")
<section id="cennik">
<p>
Aranżacja i transport słodkości ustalane są indywidualnie
<br/>
Minimalna ilość zamówień: <strong>8szt</strong> z jednego rodzaju
<br/>
W przypadku zamówień dla ilości osób powyżej 30, do wyboru są następujące konfiguracje bufetów:
</p>
<div class="card-low">
<h3>Podstawowy</h3>
<span>28 PLN/osoba</span>
<p>3 szt. deseru na osobę<br/>5 rodzajów do wyboru</p>
</div>
<div class="card-low">
<h3>Rozszerzony</h3>
<span>34 PLN/osoba</span>
<p>4-5 szt. deseru na osobę<br/>7 rodzajów do wyboru</p>
</div>
<div class="card-low">
<h3>Premium</h3>
<span>39 PLN/osoba</span>
<p>6 szt. deseru na osobę<br/>7 rodzajów do wyboru</p>
</div>
</section>
<section>
<div id="deserki">
<div>
<h2>W skład słodkiego stołu mogą wchodzić</h2>
<ul>
<li><div><span>Muffinki czekoladowe z kremem śmietankowym</span></div></li>
<li><div><span>Babeczki z kremem i piankami</span></div></li>
<li><div><span>Cake popsy</span><span>w czekoladzie</span></div></li>
<li><div><span>Ice popsy</span><span>w czekoladzie</span></div></li>
<li><div><span>Panna Cotta</span><span>Deser w pucharku </span></div></li>
<li><div><span>Tiramisu</span><span>Deser w pucharku </span></div></li>
<li><div><span>Leśny mech z musem truskawkowym</span><span>Deser w pucharku </span></div></li>
<li><div><span>Chia</span><span>Deser w pucharku </span></div></li>
<li><div><span>Serniczek cynamonowy lub oreo</span><span>na ciasteczkowym spodzie</span></div></li>
<li><div><span>Oreo</span><span>Deser w pucharku</span></div></li>
<li><div><span>Mini Pavlove z owocami</span><span>ok.7 cm średnicy</span></div></li>
<li><div><span>Monoporcja</span><span>półkula w polewie lustrzanej mango marakuja</span></div></li>
<li>
<div>
<span>Savarin</span><span>mus z białej czekolady i żelką malinową na migdałowym ciasteczku</span>
</div>
</li>
<li><div><span>Eklerki</span><span>z kremem śmietanowym/pattisiere</span></div></li>
<li><div><span>Tartaletki</span><span>z kremem i owocami</span></div></li>
<li><div><span>Mini tarta</span><span>z ganache czekoladowym i żelką malinową</span></div></li>
<li><div><span>Profiterol</span><span>z kruszonką i kremem porzeczkowym/śmietankowym</span></div></li>
<li><div><span>Ciasta</span></div></li>
</ul>
</div>
</div>
</section>
</main>
}
}

View file

@ -0,0 +1,66 @@
// Code generated by templ - DO NOT EDIT.
// templ: version: v0.3.1020
package templates
//lint:file-ignore SA4006 This context is only used if a nested component is present.
import "github.com/a-h/templ"
import templruntime "github.com/a-h/templ/runtime"
func WyrobySlodkieStoly() 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_Var1 := templ.GetChildren(ctx)
if templ_7745c5c3_Var1 == nil {
templ_7745c5c3_Var1 = templ.NopComponent
}
ctx = templ.ClearChildren(ctx)
templ_7745c5c3_Var2 := templruntime.GeneratedTemplate(func(templ_7745c5c3_Input templruntime.GeneratedComponentInput) (templ_7745c5c3_Err error) {
templ_7745c5c3_W, ctx := templ_7745c5c3_Input.Writer, templ_7745c5c3_Input.Context
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_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 1, "<main id=\"slodkie_stoly\">")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = wyrobyHeader("wyroby_slodkie_stoly").Render(ctx, templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
templ_7745c5c3_Err = templruntime.WriteString(templ_7745c5c3_Buffer, 2, "<section id=\"cennik\"><p>Aranżacja i transport słodkości ustalane są indywidualnie<br>Minimalna ilość zamówień: <strong>8szt</strong> z jednego rodzaju<br>W przypadku zamówień dla ilości osób powyżej 30, do wyboru są następujące konfiguracje bufetów:</p><div class=\"card-low\"><h3>Podstawowy</h3><span>28 PLN/osoba</span><p>3 szt. deseru na osobę<br>5 rodzajów do wyboru</p></div><div class=\"card-low\"><h3>Rozszerzony</h3><span>34 PLN/osoba</span><p>4-5 szt. deseru na osobę<br>7 rodzajów do wyboru</p></div><div class=\"card-low\"><h3>Premium</h3><span>39 PLN/osoba</span><p>6 szt. deseru na osobę<br>7 rodzajów do wyboru</p></div></section><section><div id=\"deserki\"><div><h2>W skład słodkiego stołu mogą wchodzić</h2><ul><li><div><span>Muffinki czekoladowe z kremem śmietankowym</span></div></li><li><div><span>Babeczki z kremem i piankami</span></div></li><li><div><span>Cake popsy</span><span>w czekoladzie</span></div></li><li><div><span>Ice popsy</span><span>w czekoladzie</span></div></li><li><div><span>Panna Cotta</span><span>Deser w pucharku </span></div></li><li><div><span>Tiramisu</span><span>Deser w pucharku </span></div></li><li><div><span>Leśny mech z musem truskawkowym</span><span>Deser w pucharku </span></div></li><li><div><span>Chia</span><span>Deser w pucharku </span></div></li><li><div><span>Serniczek cynamonowy lub oreo</span><span>na ciasteczkowym spodzie</span></div></li><li><div><span>Oreo</span><span>Deser w pucharku</span></div></li><li><div><span>Mini Pavlove z owocami</span><span>ok.7 cm średnicy</span></div></li><li><div><span>Monoporcja</span><span>półkula w polewie lustrzanej mango marakuja</span></div></li><li><div><span>Savarin</span><span>mus z białej czekolady i żelką malinową na migdałowym ciasteczku</span></div></li><li><div><span>Eklerki</span><span>z kremem śmietanowym/pattisiere</span></div></li><li><div><span>Tartaletki</span><span>z kremem i owocami</span></div></li><li><div><span>Mini tarta</span><span>z ganache czekoladowym i żelką malinową</span></div></li><li><div><span>Profiterol</span><span>z kruszonką i kremem porzeczkowym/śmietankowym</span></div></li><li><div><span>Ciasta</span></div></li></ul></div></div></section></main>")
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
templ_7745c5c3_Err = layout("wyroby").Render(templ.WithChildren(ctx, templ_7745c5c3_Var2), templ_7745c5c3_Buffer)
if templ_7745c5c3_Err != nil {
return templ_7745c5c3_Err
}
return nil
})
}
var _ = templruntime.GeneratedTemplate

View file

@ -1,155 +0,0 @@
{{template "header" "wyroby"}}
<main id="wyroby-torty">
{{template "wyroby_header" "torty"}}
<section id="rodzaje-tortow">
<div class="card-low">
<h3>Torty z masą cukrową</h3>
<span>od 200 PLN</span>
<p>Artystyczne zdobienia i figurki. Cena zależy od dekoracji i rozmiaru</p>
</div>
<div class="card-low">
<h3>Torty musowe</h3>
<span>od 180 PLN</span>
<p>Cena zależy od dekoracji i rozmiar</p>
</div>
<div class="card-low">
<h3>Torty Bezowe</h3>
<span>od 170 PLN</span>
<p>Wycena indywidualna przy zamówieniu</p>
</div>
<div class="card-low">
<h3>Torty Weselne</h3>
<span>Wycena indywidualna</span>
<p>Degustacje i projektowanie dopasowane do wesela</p>
</div>
</section>
<section id="cennik-tortow">
<div>
<svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none"
stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round"
class="lucide lucide-banknote-icon lucide-banknote">
<rect width="20" height="12" x="2" y="6" rx="2"/>
<circle cx="12" cy="12" r="2"/>
<path d="M6 12h.01M18 12h.01"/>
</svg>
<h3>Cennik Tortów Tradycyjnych</h3>
<ul>
<li><span>Ilość porcji</span><span>Cena orientacyjna</span></li>
<li><span>6-8 porcji</span><span>od 120 PLN</span></li>
<li><span>8-12 porcji</span><span>od 180 PLN</span></li>
<li><span>12-15 porcji</span><span>od 220 PLN</span></li>
<li><span>16-20 porcji</span><span>od 260 PLN</span></li>
<li><span>20-25 porcji</span><span>od 300 PLN</span></li>
</ul>
</div>
<div class="card-low">
<h3>Dodatki do tortów</h3>
<ul>
<li><span>Figurka z masy cukrowej</span><span>od 50 PLN</span></li>
<li><span>Żywe kwiaty</span><span>cena do negocjacji</span></li>
<li><span>Topery</span><span>cena do negocjacji</span></li>
<li><span>Torty piętrowe</span><span>od 400 PLN</span></li>
</ul>
</div>
</section>
<section id="menu-smakow">
<header>
<h2>Menu smaków</h2>
<p>Wybierz swoją ulubioną kompozycję bazową</p>
</header>
<div class="offer-card">
<svg style="--icon-color: var(--primary)" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" class="lucide lucide-grid3x3-icon lucide-grid-3x3">
<rect width="18" height="18" x="3" y="3" rx="2"/>
<path d="M3 9h18"/>
<path d="M3 15h18"/>
<path d="M9 3v18"/>
<path d="M15 3v18"/>
</svg>
<h3>Biszkopt Kakaowy</h3>
<dl>
<div>
<dt>Czekoladowy</dt>
<dd>Możliwość połączenia z frużeliną malinową bądź wiśniową
</dd>
</div>
<dt>Czekoladowo śmietankowy</dt>
<dt>Czekoladowo malinowy</dt>
<dt>Czekoladowy z żelką pomarańczową</dt>
<dt>Słony karmel z musem z owoców leśnych</dt>
<dt>Kinder bueno z prażynką czekoladową</dt>
<dt>Chałwowy z chrupką oraz żelką i kremem wiśniowym</dt>
<dt>Karmelowy z powidłami z czarnej porzeczki</dt>
<dt>Oreo</dt>
<dt>Nugat z orzechami laskowymi i kremem śmietankowym</dt>
</dl>
</div>
<div class="offer-card">
<svg style="--icon-color: #B56576" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" class="lucide lucide-heart-icon lucide-heart">
<path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"/>
</svg>
<h3>Biszkopt biały</h3>
<dl>
<div>
<dt>Śmietankowy</dt>
<dd>W sezonie możliwość dodatku świeżych owoców</dd>
</div>
<dt>Pistacja z malinami</dt>
<div>
<dt>Owocowe</dt>
<dd>Truskawkowy, malinowy, mango, czarna porzeczka, mango-owoce leśne</dd>
</div>
<dt>Rafaello na bazie białej czekolady</dt>
<dt>Kokosowo-malinowy z żelką malinową</dt>
</dl>
</div>
<div class="offer-card">
<svg style="--icon-color: #D48C45" xmlns="http://www.w3.org/2000/svg" width="24" height="24"
viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"
stroke-linejoin="round" class="lucide lucide-citrus-icon lucide-citrus">
<path d="M21.66 17.67a1.08 1.08 0 0 1-.04 1.6A12 12 0 0 1 4.73 2.38a1.1 1.1 0 0 1 1.61-.04z"/>
<path d="M19.65 15.66A8 8 0 0 1 8.35 4.34"/>
<path d="m14 10-5.5 5.5"/>
<path d="M14 17.85V10H6.15"/>
</svg>
<h3>Inne</h3>
<dl>
<dt>Cytrynowy na bazie lemon curd</dt>
<dt>Kawowy na bazie biszkoptu kawowego</dt>
</dl>
</div>
</section>
<section>
<div id="torty-musowe">
<div>
<header>
<h2>Torty Musowe</h2>
<div>
<img src="images/010.avif">
</div>
</header>
<div>
<div><h4>Karmel-jogurt-migdały</h4>
<p>mus z karmelizowanej białej czekolady, chrupiąca warstwa migdałowa, ganache jogurtowy</p>
</div>
<div><h4>Mango-marakuja-truskawka</h4>
<p>spód migdałowy, galaretka mango-marakuja, żelka truskawkowa, krem diplomat
kokosowo-waniliowy</p></div>
<div><h4>Czekolada-malina-jeżyna</h4>
<p>biszkopt jogurtowy, chrupiąca warstwa czekoladowa, żelka jeżynowa, krem malinowy, mus
czekoladowy</p>
</div>
<div><h4>Whisky-mango</h4>
<p>brownie, krem mango, ganache czekoladowe , mus whisky</p></div>
<div><h4>Kawa-orzech ziemny</h4>
<p>biszkopt, karmelizowane orzeszki ziemne, namelaka z masłem orzechowym, kawowy mus</p></div>
</div>
</div>
</div>
</section>
</main>
{{template "footer"}}

View file

@ -0,0 +1,210 @@
package templates
templ WyrobyTorty() {
@layout("wyroby") {
<main id="wyroby-torty">
@wyrobyHeader("wyroby_torty")
<section id="rodzaje-tortow">
<div class="card-low">
<h3>Torty z masą cukrową</h3>
<span>od 200 PLN</span>
<p>Artystyczne zdobienia i figurki. Cena zależy od dekoracji i rozmiaru</p>
</div>
<div class="card-low">
<h3>Torty musowe</h3>
<span>od 180 PLN</span>
<p>Cena zależy od dekoracji i rozmiar</p>
</div>
<div class="card-low">
<h3>Torty Bezowe</h3>
<span>od 170 PLN</span>
<p>Wycena indywidualna przy zamówieniu</p>
</div>
<div class="card-low">
<h3>Torty Weselne</h3>
<span>Wycena indywidualna</span>
<p>Degustacje i projektowanie dopasowane do wesela</p>
</div>
</section>
<section id="cennik-tortow">
<div>
<svg
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-banknote-icon lucide-banknote"
>
<rect width="20" height="12" x="2" y="6" rx="2"></rect>
<circle cx="12" cy="12" r="2"></circle>
<path d="M6 12h.01M18 12h.01"></path>
</svg>
<h3>Cennik Tortów Tradycyjnych</h3>
<ul>
<li><span>Ilość porcji</span><span>Cena orientacyjna</span></li>
<li><span>6-8 porcji</span><span>od 120 PLN</span></li>
<li><span>8-12 porcji</span><span>od 180 PLN</span></li>
<li><span>12-15 porcji</span><span>od 220 PLN</span></li>
<li><span>16-20 porcji</span><span>od 260 PLN</span></li>
<li><span>20-25 porcji</span><span>od 300 PLN</span></li>
</ul>
</div>
<div class="card-low">
<h3>Dodatki do tortów</h3>
<ul>
<li><span>Figurka z masy cukrowej</span><span>od 50 PLN</span></li>
<li><span>Żywe kwiaty</span><span>cena do negocjacji</span></li>
<li><span>Topery</span><span>cena do negocjacji</span></li>
<li><span>Torty piętrowe</span><span>od 400 PLN</span></li>
</ul>
</div>
</section>
<section id="menu-smakow">
<header>
<h2>Menu smaków</h2>
<p>Wybierz swoją ulubioną kompozycję bazową</p>
</header>
<div class="offer-card">
<svg
style="--icon-color: var(--primary)"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-grid3x3-icon lucide-grid-3x3"
>
<rect width="18" height="18" x="3" y="3" rx="2"></rect>
<path d="M3 9h18"></path>
<path d="M3 15h18"></path>
<path d="M9 3v18"></path>
<path d="M15 3v18"></path>
</svg>
<h3>Biszkopt Kakaowy</h3>
<dl>
<div>
<dt>Czekoladowy</dt>
<dd>
Możliwość połączenia z frużeliną malinową bądź wiśniową
</dd>
</div>
<dt>Czekoladowo śmietankowy</dt>
<dt>Czekoladowo malinowy</dt>
<dt>Czekoladowy z żelką pomarańczową</dt>
<dt>Słony karmel z musem z owoców leśnych</dt>
<dt>Kinder bueno z prażynką czekoladową</dt>
<dt>Chałwowy z chrupką oraz żelką i kremem wiśniowym</dt>
<dt>Karmelowy z powidłami z czarnej porzeczki</dt>
<dt>Oreo</dt>
<dt>Nugat z orzechami laskowymi i kremem śmietankowym</dt>
</dl>
</div>
<div class="offer-card">
<svg
style="--icon-color: #B56576"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-heart-icon lucide-heart"
>
<path d="M2 9.5a5.5 5.5 0 0 1 9.591-3.676.56.56 0 0 0 .818 0A5.49 5.49 0 0 1 22 9.5c0 2.29-1.5 4-3 5.5l-5.492 5.313a2 2 0 0 1-3 .019L5 15c-1.5-1.5-3-3.2-3-5.5"></path>
</svg>
<h3>Biszkopt biały</h3>
<dl>
<div>
<dt>Śmietankowy</dt>
<dd>W sezonie możliwość dodatku świeżych owoców</dd>
</div>
<dt>Pistacja z malinami</dt>
<div>
<dt>Owocowe</dt>
<dd>Truskawkowy, malinowy, mango, czarna porzeczka, mango-owoce leśne</dd>
</div>
<dt>Rafaello na bazie białej czekolady</dt>
<dt>Kokosowo-malinowy z żelką malinową</dt>
</dl>
</div>
<div class="offer-card">
<svg
style="--icon-color: #D48C45"
xmlns="http://www.w3.org/2000/svg"
width="24"
height="24"
viewBox="0 0 24 24"
fill="none"
stroke="currentColor"
stroke-width="2"
stroke-linecap="round"
stroke-linejoin="round"
class="lucide lucide-citrus-icon lucide-citrus"
>
<path d="M21.66 17.67a1.08 1.08 0 0 1-.04 1.6A12 12 0 0 1 4.73 2.38a1.1 1.1 0 0 1 1.61-.04z"></path>
<path d="M19.65 15.66A8 8 0 0 1 8.35 4.34"></path>
<path d="m14 10-5.5 5.5"></path>
<path d="M14 17.85V10H6.15"></path>
</svg>
<h3>Inne</h3>
<dl>
<dt>Cytrynowy na bazie lemon curd</dt>
<dt>Kawowy na bazie biszkoptu kawowego</dt>
</dl>
</div>
</section>
<section>
<div id="torty-musowe">
<div>
<header>
<h2>Torty Musowe</h2>
<div>
<img src="images/010.avif"/>
</div>
</header>
<div>
<div>
<h4>Karmel-jogurt-migdały</h4>
<p>mus z karmelizowanej białej czekolady, chrupiąca warstwa migdałowa, ganache jogurtowy</p>
</div>
<div>
<h4>Mango-marakuja-truskawka</h4>
<p>
spód migdałowy, galaretka mango-marakuja, żelka truskawkowa, krem diplomat
kokosowo-waniliowy
</p>
</div>
<div>
<h4>Czekolada-malina-jeżyna</h4>
<p>
biszkopt jogurtowy, chrupiąca warstwa czekoladowa, żelka jeżynowa, krem malinowy, mus
czekoladowy
</p>
</div>
<div>
<h4>Whisky-mango</h4>
<p>brownie, krem mango, ganache czekoladowe , mus whisky</p>
</div>
<div>
<h4>Kawa-orzech ziemny</h4>
<p>biszkopt, karmelizowane orzeszki ziemne, namelaka z masłem orzechowym, kawowy mus</p>
</div>
</div>
</div>
</div>
</section>
</main>
}
}

File diff suppressed because one or more lines are too long

8
types/product.go Normal file
View file

@ -0,0 +1,8 @@
package types
type Product struct {
Name string
Image string
Price string
Description string
}