feat: add codegen files
This commit is contained in:
parent
5eb6fc4f78
commit
df1870121f
14 changed files with 505 additions and 0 deletions
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,24 @@
|
|||
@file:Suppress("ktlint")
|
||||
package gg.jte.generated.precompiled
|
||||
import at.dokkae.homepage.templates.Index
|
||||
@Suppress("UNCHECKED_CAST", "UNUSED_PARAMETER")
|
||||
class JteIndexGenerated {
|
||||
companion object {
|
||||
@JvmField val JTE_NAME = "Index.kte"
|
||||
@JvmField val JTE_LINE_INFO = intArrayOf(0,0,0,2,2,2,2,2,64,64,141,141,142,142,143,143,158,158,158,2,2,2,2,2)
|
||||
@JvmStatic fun render(jteOutput:gg.jte.html.HtmlTemplateOutput, jteHtmlInterceptor:gg.jte.html.HtmlInterceptor?, model:Index) {
|
||||
jteOutput.writeContent("\n<!doctype html>\n<html lang=\"en\">\n<head>\n <meta charset=\"utf-8\">\n <meta name=\"viewport\" content=\"width=device-width,initial-scale=1\">\n <title>Simple Chat — http4k + JTE + htmx</title>\n\n <script src=\"https://cdn.jsdelivr.net/npm/htmx.org@2.0.8/dist/htmx.min.js\" integrity=\"sha384-/TgkGk7p307TH7EXJDuUlgG3Ce1UVolAOFopFekQkkXihi5u/6OCvVKyz1W+idaz\" crossorigin=\"anonymous\"></script>\n <script src=\"https://cdn.jsdelivr.net/npm/htmx-ext-sse@2.2.4\" integrity=\"sha384-A986SAtodyH8eg8x8irJnYUk7i9inVQqYigD6qZ9evobksGNIXfeFvDwLSHcp31N\" crossorigin=\"anonymous\"></script>\n\n <style>\n :root {\n --bg: #f5f5f7;\n --card: #ffffff;\n --border: #d0d0d5;\n --bubble-self: #daf0ff;\n --bubble-other: #ececec;\n --text-dark: #222;\n --text-light: #666;\n --radius: 12px;\n --spacing: 12px;\n --font: system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, sans-serif;\n }\n\n body {\n margin: 0;\n font-family: var(--font);\n background: var(--bg);\n display: flex;\n justify-content: center;\n padding: 32px 12px;\n }\n\n #chat {\n width: 100%;\n max-width: 560px;\n background: var(--card);\n border: 1px solid var(--border);\n border-radius: var(--radius);\n padding: 20px;\n box-shadow: 0 4px 20px rgba(0,0,0,0.05);\n }\n\n h1 {\n margin: 0 0 16px;\n font-size: 1.4rem;\n color: var(--text-dark);\n text-align: center;\n }\n\n #messages {\n display: flex;\n flex-direction: column-reverse;\n gap: var(--spacing);\n margin-bottom: 20px;\n max-height: 60vh;\n overflow-y: auto;\n padding-right: 4px;\n }\n\n ")
|
||||
jteOutput.writeContent("\n #messages::-webkit-scrollbar { width: 6px; }\n #messages::-webkit-scrollbar-thumb {\n background: #bbb;\n border-radius: 3px;\n }\n\n .message {\n padding: 10px 14px;\n border-radius: var(--radius);\n max-width: 85%;\n font-size: 0.95rem;\n line-height: 1.35;\n color: var(--text-dark);\n box-shadow: 0 1px 3px rgba(0,0,0,0.08);\n }\n\n .message-author {\n font-size: 0.8rem;\n font-weight: 600;\n margin-bottom: 4px;\n color: var(--text-light);\n }\n\n .message-self {\n align-self: flex-end;\n background: var(--bubble-self);\n }\n\n .message-other {\n align-self: flex-start;\n background: var(--bubble-other);\n }\n\n form {\n display: flex;\n gap: 8px;\n margin-bottom: 12px;\n }\n\n input[type=\"text\"] {\n flex: 1;\n padding: 10px;\n font-size: 1rem;\n border: 1px solid var(--border);\n border-radius: var(--radius);\n background: #fff;\n }\n\n button {\n padding: 10px 16px;\n background: #1e88ff;\n border: none;\n border-radius: var(--radius);\n color: white;\n font-size: 1rem;\n cursor: pointer;\n transition: 0.2s;\n }\n\n button:hover {\n background: #0c74e8;\n }\n\n p.note {\n font-size: 0.82rem;\n color: var(--text-light);\n margin-top: 14px;\n text-align: center;\n }\n </style>\n</head>\n<body hx-ext=\"sse\">\n<main id=\"chat\">\n <h1>Simple Chat</h1>\n\n <div id=\"messages\" sse-connect=\"/message-events\" sse-swap=\"message\" hx-swap=\"afterbegin\">\n ")
|
||||
for (message in model.messages.reversed()) {
|
||||
jteOutput.writeContent("\n ")
|
||||
gg.jte.generated.precompiled.partials.JteMessageGenerated.render(jteOutput, jteHtmlInterceptor, message);
|
||||
jteOutput.writeContent("\n ")
|
||||
}
|
||||
jteOutput.writeContent("\n </div>\n\n\n <form hx-post=\"/messages\" hx-swap=\"none\" hx-on::after-request=\"if(event.detail.successful)document.getElementById('message-input').value = ''\">\n <input id=\"username-input\" type=\"text\" name=\"author\" placeholder=\"name (optional)\">\n <input id=\"message-input\" type=\"text\" name=\"message\" placeholder=\"your message\" required>\n <button type=\"submit\">\n Send\n </button>\n </form>\n\n <p style=\"font-size: .9rem; color: #666\">No auth — anyone can post. Messages are stored only in memory.</p>\n</main>\n</body>\n</html>")
|
||||
}
|
||||
@JvmStatic fun renderMap(jteOutput:gg.jte.html.HtmlTemplateOutput, jteHtmlInterceptor:gg.jte.html.HtmlInterceptor?, params:Map<String, Any?>) {
|
||||
val model = params["model"] as Index
|
||||
render(jteOutput, jteHtmlInterceptor, model);
|
||||
}
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Binary file not shown.
|
|
@ -0,0 +1,26 @@
|
|||
@file:Suppress("ktlint")
|
||||
package gg.jte.generated.precompiled.partials
|
||||
import at.dokkae.homepage.Message
|
||||
@Suppress("UNCHECKED_CAST", "UNUSED_PARAMETER")
|
||||
class JteMessageGenerated {
|
||||
companion object {
|
||||
@JvmField val JTE_NAME = "partials/Message.kte"
|
||||
@JvmField val JTE_LINE_INFO = intArrayOf(0,0,0,2,2,2,2,2,5,5,5,5,6,6,6,8,8,8,10,10,10,2,2,2,2,2)
|
||||
@JvmStatic fun render(jteOutput:gg.jte.html.HtmlTemplateOutput, jteHtmlInterceptor:gg.jte.html.HtmlInterceptor?, message:Message) {
|
||||
jteOutput.writeContent("\n<div class=\"message\">\n <strong>")
|
||||
jteOutput.setContext("strong", null)
|
||||
jteOutput.writeUserContent(message.author)
|
||||
jteOutput.writeContent("</strong>:\n ")
|
||||
jteOutput.setContext("div", null)
|
||||
jteOutput.writeUserContent(message.content)
|
||||
jteOutput.writeContent("\n <span style=\"color:#888; font-size:.8rem;\">\n (")
|
||||
jteOutput.setContext("span", null)
|
||||
jteOutput.writeUserContent(message.createdAt.toString())
|
||||
jteOutput.writeContent(")\n </span>\n</div>")
|
||||
}
|
||||
@JvmStatic fun renderMap(jteOutput:gg.jte.html.HtmlTemplateOutput, jteHtmlInterceptor:gg.jte.html.HtmlInterceptor?, params:Map<String, Any?>) {
|
||||
val message = params["message"] as Message
|
||||
render(jteOutput, jteHtmlInterceptor, message);
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
Add table
Add a link
Reference in a new issue