feat: initial brick templates
This commit is contained in:
parent
83e81ec011
commit
4764300d08
|
@ -1,3 +1,11 @@
|
||||||
@tailwind base;
|
@tailwind base;
|
||||||
@tailwind components;
|
@tailwind components;
|
||||||
@tailwind utilities;
|
@tailwind utilities;
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--change-topic-color: 0deg 100% 50%;
|
||||||
|
--probing-q-color: 48deg 100% 50%;
|
||||||
|
--expand-color: 120deg 57% 50%;
|
||||||
|
--clarifying-q-color: 216deg 99% 55%;
|
||||||
|
--meta-color: 312deg 100% 50%;
|
||||||
|
}
|
||||||
|
|
|
@ -41,6 +41,8 @@ func registerPageRoutes(
|
||||||
authedPageMiddleware(
|
authedPageMiddleware(
|
||||||
sessionSM,
|
sessionSM,
|
||||||
http.StripPrefix(subscribeRoomPath, streamingRoomStates(templateFs, roomsM))))
|
http.StripPrefix(subscribeRoomPath, streamingRoomStates(templateFs, roomsM))))
|
||||||
|
|
||||||
|
http.HandleFunc("/rooms/preview-templates", roomTemplatesPreview(templateFs))
|
||||||
}
|
}
|
||||||
|
|
||||||
func streamingRoomStates(
|
func streamingRoomStates(
|
||||||
|
@ -186,7 +188,7 @@ func roomPageRoute(
|
||||||
|
|
||||||
room, found, err := roomsM.Get(roomName)
|
room, found, err := roomsM.Get(roomName)
|
||||||
if err != nil || !found {
|
if err != nil || !found {
|
||||||
log.Printf("/room room for name %s not found or err: %s / found %d", roomName, err, found)
|
log.Printf("/room room for name %s not found or err: %s / found %s", roomName, err, found)
|
||||||
// TODO here should be append to error place
|
// TODO here should be append to error place
|
||||||
w.Header().Add("HX-Redirect", "/")
|
w.Header().Add("HX-Redirect", "/")
|
||||||
return
|
return
|
||||||
|
@ -234,3 +236,55 @@ func roomPageRoute(
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func roomTemplatesPreview(
|
||||||
|
templateFs *embed.FS,
|
||||||
|
) http.HandlerFunc {
|
||||||
|
return func(w http.ResponseWriter, r *http.Request) {
|
||||||
|
|
||||||
|
type BrickData struct {
|
||||||
|
ColorClass template.CSS
|
||||||
|
Name string
|
||||||
|
}
|
||||||
|
|
||||||
|
contentData := struct {
|
||||||
|
Bricks []BrickData
|
||||||
|
}{
|
||||||
|
Bricks: []BrickData{
|
||||||
|
{
|
||||||
|
Name: "expand",
|
||||||
|
ColorClass: "--expand-color",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "probing question",
|
||||||
|
ColorClass: "--probing-q-color",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "change topic",
|
||||||
|
ColorClass: "--change-topic-color",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "clarifying question",
|
||||||
|
ColorClass: "--clarifying-q-color",
|
||||||
|
},
|
||||||
|
{
|
||||||
|
Name: "meta",
|
||||||
|
ColorClass: "--meta-color",
|
||||||
|
},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
pageData := pageData{
|
||||||
|
Header: headerData{Title: "look at the room templates"},
|
||||||
|
Content: contentData,
|
||||||
|
}
|
||||||
|
|
||||||
|
baseFile := "templates/base.gohtml"
|
||||||
|
tmpl := template.Must(template.ParseFS(templateFs, baseFile, "templates/tableTemplates.gohtml"))
|
||||||
|
err := tmpl.ExecuteTemplate(w, "full-page", pageData)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("yoyo, error %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -554,6 +554,10 @@ video {
|
||||||
height: 3.5rem;
|
height: 3.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.h-8 {
|
||||||
|
height: 2rem;
|
||||||
|
}
|
||||||
|
|
||||||
.h-full {
|
.h-full {
|
||||||
height: 100%;
|
height: 100%;
|
||||||
}
|
}
|
||||||
|
@ -562,6 +566,10 @@ video {
|
||||||
height: 100vh;
|
height: 100vh;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.w-20 {
|
||||||
|
width: 5rem;
|
||||||
|
}
|
||||||
|
|
||||||
.w-full {
|
.w-full {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
@ -570,6 +578,16 @@ video {
|
||||||
flex: none;
|
flex: none;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@keyframes pulse {
|
||||||
|
50% {
|
||||||
|
opacity: .5;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
.animate-pulse {
|
||||||
|
animation: pulse 2s cubic-bezier(0.4, 0, 0.6, 1) infinite;
|
||||||
|
}
|
||||||
|
|
||||||
.grid-cols-2 {
|
.grid-cols-2 {
|
||||||
grid-template-columns: repeat(2, minmax(0, 1fr));
|
grid-template-columns: repeat(2, minmax(0, 1fr));
|
||||||
}
|
}
|
||||||
|
@ -578,6 +596,10 @@ video {
|
||||||
grid-template-rows: auto 1fr;
|
grid-template-rows: auto 1fr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.flex-row {
|
||||||
|
flex-direction: row;
|
||||||
|
}
|
||||||
|
|
||||||
.flex-col {
|
.flex-col {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
@ -594,6 +616,11 @@ video {
|
||||||
gap: 1.5rem;
|
gap: 1.5rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.gap-x-3 {
|
||||||
|
-moz-column-gap: 0.75rem;
|
||||||
|
column-gap: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
.rounded {
|
.rounded {
|
||||||
border-radius: 0.25rem;
|
border-radius: 0.25rem;
|
||||||
}
|
}
|
||||||
|
@ -610,6 +637,14 @@ video {
|
||||||
border-width: 4px;
|
border-width: 4px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.border-\[hsl\(var\(--brick-color\)\)\] {
|
||||||
|
border-color: hsl(var(--brick-color));
|
||||||
|
}
|
||||||
|
|
||||||
|
.border-\[hsl\(var\(--brick-color\)\)\]\/25 {
|
||||||
|
border-color: hsl(var(--brick-color) / 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
.border-black {
|
.border-black {
|
||||||
--tw-border-opacity: 1;
|
--tw-border-opacity: 1;
|
||||||
border-color: rgb(0 0 0 / var(--tw-border-opacity));
|
border-color: rgb(0 0 0 / var(--tw-border-opacity));
|
||||||
|
@ -625,6 +660,18 @@ video {
|
||||||
border-color: rgb(161 98 7 / var(--tw-border-opacity));
|
border-color: rgb(161 98 7 / var(--tw-border-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.bg-\[hsl\(var\(--brick-color\)\)\]\/25 {
|
||||||
|
background-color: hsl(var(--brick-color) / 0.25);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-\[hsl\(var\(--brick-color\)\)\]\/5 {
|
||||||
|
background-color: hsl(var(--brick-color) / 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
.bg-\[hsl\(var\(--brick-color\)\)\]\/50 {
|
||||||
|
background-color: hsl(var(--brick-color) / 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
.bg-amber-400 {
|
.bg-amber-400 {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(251 191 36 / var(--tw-bg-opacity));
|
background-color: rgb(251 191 36 / var(--tw-bg-opacity));
|
||||||
|
@ -654,6 +701,10 @@ video {
|
||||||
background-color: rgb(254 240 138 / var(--tw-bg-opacity));
|
background-color: rgb(254 240 138 / var(--tw-bg-opacity));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.p-3 {
|
||||||
|
padding: 0.75rem;
|
||||||
|
}
|
||||||
|
|
||||||
.p-4 {
|
.p-4 {
|
||||||
padding: 1rem;
|
padding: 1rem;
|
||||||
}
|
}
|
||||||
|
@ -673,6 +724,14 @@ video {
|
||||||
line-height: 1.75rem;
|
line-height: 1.75rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.font-bold {
|
||||||
|
font-weight: 700;
|
||||||
|
}
|
||||||
|
|
||||||
|
.text-\[hsl\(var\(--brick-color\)\)\]\/50 {
|
||||||
|
color: hsl(var(--brick-color) / 0.5);
|
||||||
|
}
|
||||||
|
|
||||||
.text-blue-700 {
|
.text-blue-700 {
|
||||||
--tw-text-opacity: 1;
|
--tw-text-opacity: 1;
|
||||||
color: rgb(29 78 216 / var(--tw-text-opacity));
|
color: rgb(29 78 216 / var(--tw-text-opacity));
|
||||||
|
@ -682,6 +741,25 @@ video {
|
||||||
text-decoration-line: underline;
|
text-decoration-line: underline;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.shadow-\[0_0_15px_rgba\(0\2c _0\2c _0\2c _0\.5\)\] {
|
||||||
|
--tw-shadow: 0 0 15px rgba(0, 0, 0, 0.5);
|
||||||
|
--tw-shadow-colored: 0 0 15px var(--tw-shadow-color);
|
||||||
|
box-shadow: var(--tw-ring-offset-shadow, 0 0 #0000), var(--tw-ring-shadow, 0 0 #0000), var(--tw-shadow);
|
||||||
|
}
|
||||||
|
|
||||||
|
.shadow-\[hsl\(var\(--brick-color\)\)\] {
|
||||||
|
--tw-shadow-color: hsl(var(--brick-color));
|
||||||
|
--tw-shadow: var(--tw-shadow-colored);
|
||||||
|
}
|
||||||
|
|
||||||
|
:root {
|
||||||
|
--change-topic-color: 0deg 100% 50%;
|
||||||
|
--probing-q-color: 48deg 100% 50%;
|
||||||
|
--expand-color: 120deg 57% 50%;
|
||||||
|
--clarifying-q-color: 216deg 99% 55%;
|
||||||
|
--meta-color: 312deg 100% 50%;
|
||||||
|
}
|
||||||
|
|
||||||
.invalid\:bg-red-700:invalid {
|
.invalid\:bg-red-700:invalid {
|
||||||
--tw-bg-opacity: 1;
|
--tw-bg-opacity: 1;
|
||||||
background-color: rgb(185 28 28 / var(--tw-bg-opacity));
|
background-color: rgb(185 28 28 / var(--tw-bg-opacity));
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
{{define "main-content"}}
|
||||||
|
<p2>Single templates</p2>
|
||||||
|
<section
|
||||||
|
class="grid grid-cols-2 border-4"
|
||||||
|
style="--brick-color: var(--expand-color)"
|
||||||
|
>
|
||||||
|
<div class="border-2">inactive:</div>
|
||||||
|
<div class="border-2 p-3">
|
||||||
|
{{ block "inactive-brick" . }}
|
||||||
|
<div
|
||||||
|
class="h-8 w-20 border-[hsl(var(--brick-color))]/25 border bg-[hsl(var(--brick-color))]/5"
|
||||||
|
></div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="border-2">raised:</div>
|
||||||
|
<div class="border-2 p-3">
|
||||||
|
{{ block "raised-brick" . }}
|
||||||
|
<div
|
||||||
|
class="h-8 w-20 border-[hsl(var(--brick-color))] border-2 bg-[hsl(var(--brick-color))]/25"
|
||||||
|
></div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="border-2">speaker:</div>
|
||||||
|
<div class="border-2 p-3">
|
||||||
|
{{ block "speaker-brick" . }}
|
||||||
|
<div
|
||||||
|
class="h-8 w-20 border-[hsl(var(--brick-color))] border-2 bg-[hsl(var(--brick-color))]/50 shadow-[0_0_15px_rgba(0,_0,_0,_0.5)] shadow-[hsl(var(--brick-color))] animate-pulse"
|
||||||
|
></div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
<div class="border-2">mark:</div>
|
||||||
|
<div class="border-2 p-3">
|
||||||
|
{{ block "mark-brick" . }}
|
||||||
|
<div
|
||||||
|
class="h-8 w-20 border-[hsl(var(--brick-color))]/25 border bg-[hsl(var(--brick-color))]/5 grid place-content-center font-bold text-[hsl(var(--brick-color))]/50"
|
||||||
|
>
|
||||||
|
X
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
<p2>For each type</p2>
|
||||||
|
<section
|
||||||
|
class="grid grid-cols-2 border-4"
|
||||||
|
>
|
||||||
|
{{ range .Bricks }}
|
||||||
|
<div class="border-2">for {{ .Name }}</div>
|
||||||
|
<div class="border-2 p-3 flex flex-row gap-x-3"
|
||||||
|
style="--brick-color: var({{ .ColorClass }})"
|
||||||
|
>
|
||||||
|
{{ template "inactive-brick" . }}
|
||||||
|
{{ template "raised-brick" . }}
|
||||||
|
{{ template "speaker-brick" . }}
|
||||||
|
{{ template "mark-brick" . }}
|
||||||
|
</div>
|
||||||
|
{{ end }}
|
||||||
|
</section>
|
||||||
|
{{end}}
|
Loading…
Reference in New Issue