package views

import "git.32bit.cafe/32bitcafe/guestbook/internal/models"
import "strconv"

type CommonData struct {
    CurrentYear int
    Flash string
    IsAuthenticated bool
    CSRFToken string
    CurrentUser *models.User
    IsHtmx bool
}

func shortIdToSlug(shortId uint64) string {
    return strconv.FormatUint(shortId, 36)
}

func slugToShortId(slug string) uint64 {
    id, _ := strconv.ParseUint(slug, 36, 64)
    return id
}

templ commonHeader() {
    <header>
        <h1><a href="/">webweav.ing</a></h1>
    </header>
}

templ topNav(data CommonData) {
    <nav>
        <div>
            <ul>
                <li><a href="/guestbooks">Guestbooks</a></li>
                <li>RSS Feeds</li>
            </ul>
        </div>
        <div>
            if data.IsAuthenticated {
                Welcome, { data.CurrentUser.Username }
                <a href="/users/settings">Settings</a> | 
                <form action="/users/logout" method="post">
                    <input type="hidden" name="csrf_token" value={ data.CSRFToken }>
                    <button>Logout</button>
                </form>
            } else {
                <a href="/users/register">Create an Account</a> | 
                <a href="/users/login">Login</a>
            }
        </div>
    </nav>
}


templ commonFooter() {
    <footer>
        <p>Generated with Templ</p>
        <p>A <a href="https://32bit.cafe">32-bit cafe</a> Project</p>
    </footer>
}

templ base(title string, data CommonData) {
    <!DOCTYPE html>
    <html lang="en">
        <head>
            <title>{ title } - webweav.ing</title>
            <meta charset="UTF-8">
            <meta name="viewport" content="width=device-width, initial-scale=1">
            <link href="/static/css/style.css" rel="stylesheet">
            <script src="/static/js/htmx.min.js"></script>
        </head>
        <body>
            @commonHeader()
            @topNav(data)
            <main>
                if data.Flash != "" {
                    <div class="flash">{ data.Flash }</div>
                }
                { children... }
            </main>
            @commonFooter()
        </body>
    </html>
}