feat(dev): development pages for testing and prototypes

This commit is contained in:
Guz
2024-10-15 01:04:35 -03:00
parent 8a44e0821d
commit 35dbf51fb0
4 changed files with 100 additions and 4 deletions

View File

@@ -8,6 +8,7 @@ import (
"os"
"forge.capytal.company/capytalcode/project-comicverse/pages"
devPages "forge.capytal.company/capytalcode/project-comicverse/pages/dev"
"forge.capytal.company/capytalcode/project-comicverse/router"
"forge.capytal.company/capytalcode/project-comicverse/router/middleware"
)
@@ -39,10 +40,10 @@ func NewApp(opts ...AppOpts) *App {
opts[0].Port = &d
}
if opts[0].Assets == nil {
// d := http.Dir("./assets")
// opts[0].Assets = d
}
// if opts[0].Assets == nil {
// d := http.Dir("./assets")
// opts[0].Assets = d
// }
return &App{
dev: *opts[0].Dev,
@@ -58,6 +59,8 @@ func (a *App) Run() {
router.Handle("/assets/", a.assets)
if a.dev {
router.HandleRoutes(devPages.PAGES)
router.AddMiddleware(middleware.DevMiddleware)
}

View File

@@ -0,0 +1,7 @@
document.querySelector('#accent-color-hue').addEventListener('change', (e) => {
// eslint-disable-next-line @typescript-eslint/no-unsafe-assignment
const hue = /** @type {number} */ (e.target?.value);
document.querySelector('body')
.setAttribute('style', `--user-theme-accent-hue:${String(hue)};`);
});

77
pages/dev/colors.templ Normal file
View File

@@ -0,0 +1,77 @@
package pages
import (
"net/http"
"fmt"
"strings"
"forge.capytal.company/capytalcode/project-comicverse/router/rerrors"
"forge.capytal.company/capytalcode/project-comicverse/templates/layouts"
)
type Colors struct{}
func (p *Colors) ServeHTTP(w http.ResponseWriter, r *http.Request) {
if err := p.Component().Render(r.Context(), w); err != nil {
rerrors.InternalError(err).ServeHTTP(w, r)
return
}
}
templ (p *Colors) Heading() {
<script type="module" src="/assets/js/pages/devcolors.js" defer></script>
}
templ (p *Colors) Component() {
@layouts.Page(layouts.PageInfo{
Heading: p.Heading(),
}) {
<main class="absolute w-screen h-screen top-0 left-0 bg-#000000">
<section>
<input id="accent-color-hue" class="w-93% mx-10" type="range" value="260" min="0" max="360"/>
@templ.Raw(p.html())
</section>
<section>
<button>Hello world</button>
</section>
</main>
}
}
func (p *Colors) html() string {
cs := []string{}
for _, c := range colors {
ss := []string{"<ul class=\"flex gap-2 list-none\">"}
for _, s := range scales {
ss = append(ss, fmt.Sprintf("<li style=\"background-color:var(--theme-%s-%s); width: 5rem; height: 5rem;\"></li>", c, s))
}
ss = append(ss, "</ul>")
cs = append(cs, strings.Join(ss, ""))
}
return strings.Join(cs, "")
}
var colors = []string{
"accent",
"neutral",
"danger",
"success",
"warn",
}
var scales = []string{
"10",
"20",
"30",
"40",
"50",
"60",
"70",
"80",
"90",
"100",
"110",
"120",
}

9
pages/dev/routes.go Normal file
View File

@@ -0,0 +1,9 @@
package pages
import (
"forge.capytal.company/capytalcode/project-comicverse/router"
)
var PAGES = []router.Route{
{Pattern: "/_dev/colors", Handler: &Colors{}},
}