Compare commits
2 commits
b2bd8bbaae
...
82ad77df80
Author | SHA1 | Date | |
---|---|---|---|
82ad77df80 | |||
259fac7c58 |
5 changed files with 71 additions and 55 deletions
2
darm_test/public/styles.min.css
vendored
2
darm_test/public/styles.min.css
vendored
|
@ -1 +1 @@
|
|||
*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgba(0,0,0,0);--un-ring-shadow:0 0 rgba(0,0,0,0);--un-shadow-inset: ;--un-shadow:0 0 rgba(0,0,0,0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgba(0,0,0,0);--un-ring-shadow:0 0 rgba(0,0,0,0);--un-shadow-inset: ;--un-shadow:0 0 rgba(0,0,0,0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.static{position:static}.m-1,.m1,[m-1=""],m1{margin:.25rem}m2{margin:.5rem}m3{margin:.75rem}.ms,[ms=""]{margin-inline-start:1rem}.block{display:block}contents{display:contents}.h1{height:.25rem}.b,[b=""]{border-width:1px}[pe=""]{padding-inline-end:1rem}
|
||||
*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgba(0,0,0,0);--un-ring-shadow:0 0 rgba(0,0,0,0);--un-shadow-inset: ;--un-shadow:0 0 rgba(0,0,0,0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgba(0,0,0,0);--un-ring-shadow:0 0 rgba(0,0,0,0);--un-shadow-inset: ;--un-shadow:0 0 rgba(0,0,0,0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: }.container{width:100%}@media(min-width: 640px){.container{max-width:640px}}@media(min-width: 768px){.container{max-width:768px}}@media(min-width: 1024px){.container{max-width:1024px}}@media(min-width: 1280px){.container{max-width:1280px}}@media(min-width: 1536px){.container{max-width:1536px}}.static{position:static}.mx-auto{margin-left:auto;margin-right:auto}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.ms,[ms=""]{margin-inline-start:1rem}contents{display:contents}.h1{height:.25rem}.w-full{width:100%}.b,.border,[b=""]{border-width:1px}.rounded-lg{border-radius:.5rem}.bg-blue-500{--un-bg-opacity:1;background-color:rgba(59, 130, 246, var(--un-bg-opacity))}.bg-gray-100{--un-bg-opacity:1;background-color:rgba(243, 244, 246, var(--un-bg-opacity))}.bg-white{--un-bg-opacity:1;background-color:rgba(255, 255, 255, var(--un-bg-opacity))}.p-2{padding:.5rem}.p-4{padding:1rem}.p-6{padding:1.5rem}[pe=""]{padding-inline-end:1rem}.text-2xl{font-size:1.5rem;line-height:2rem}.font-bold{font-weight:700}.text-white{--un-text-opacity:1;color:rgba(255, 255, 255, var(--un-text-opacity))}.shadow-md{--un-shadow:var(--un-shadow-inset) 0 4px 6px -1px var(--un-shadow-color, rgba(0,0,0,0.1)),var(--un-shadow-inset) 0 2px 4px -2px var(--un-shadow-color, rgba(0,0,0,0.1));box-shadow:var(--un-ring-offset-shadow),var(--un-ring-shadow),var(--un-shadow)}
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
<h1> Test </h1>
|
|
@ -25,12 +25,12 @@ mod html_elements {
|
|||
}
|
||||
}
|
||||
|
||||
struct TestaController {}
|
||||
struct UiController {}
|
||||
|
||||
#[controller(
|
||||
state = AppState
|
||||
)]
|
||||
impl TestaController {
|
||||
impl UiController {
|
||||
#[route(GET "/")]
|
||||
async fn index(State(_): State<AppState>) -> impl IntoResponse {
|
||||
maud! {
|
||||
|
@ -39,61 +39,52 @@ impl TestaController {
|
|||
meta charset="UTF-8";
|
||||
meta name="viewport" content="width=device-width, initial-scale=1.0";
|
||||
title {
|
||||
"My Website"
|
||||
"LLM Chat App"
|
||||
}
|
||||
script type="module" src="/dist/datastar.min.js" {}
|
||||
link rel="stylesheet" href="/dist/styles.min.css";
|
||||
link rel="icon" href="/dist/favicon.ico";
|
||||
}
|
||||
body {
|
||||
main {
|
||||
h1 {
|
||||
"Welcome to My Website"
|
||||
body class="bg-gray-100" {
|
||||
div class="container mx-auto p-4" {
|
||||
h1 class="text-2xl font-bold mb-4" {
|
||||
"LLM Chat App"
|
||||
}
|
||||
div."m-1" {
|
||||
"div"
|
||||
}
|
||||
div."m1" {
|
||||
"div"
|
||||
}
|
||||
div ."m1" {
|
||||
"m1"
|
||||
}
|
||||
div ."m2" {
|
||||
"m2"
|
||||
}
|
||||
div ."m3" {
|
||||
"m3"
|
||||
div class="bg-white p-6 rounded-lg shadow-md" {
|
||||
div id="chat" class="mb-4" {
|
||||
// Chat messages will appear here
|
||||
}
|
||||
form id="chat-form" {
|
||||
textarea id="user-input" class="w-full p-2 border rounded-lg mb-2" placeholder="Type your message..." {}
|
||||
button type="submit" class="bg-blue-500 text-white p-2 rounded-lg" {
|
||||
"Send"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
script {
|
||||
(hypertext::Raw("
|
||||
console.log(\"asd\");
|
||||
document.getElementById('chat-form').addEventListener('submit', function(event) {
|
||||
event.preventDefault();
|
||||
const userInput = document.getElementById('user-input').value;
|
||||
const chatContainer = document.getElementById('chat');
|
||||
chatContainer.innerHTML += `<div class='mb-2'><strong>You:</strong> ${userInput}</div>`;
|
||||
document.getElementById('user-input').value = '';
|
||||
console.log(\"asd\");
|
||||
|
||||
// Mock response from LLM
|
||||
setTimeout(() => {
|
||||
chatContainer.innerHTML += `<div class='mb-2'><strong>LLM:</strong> This is a mock response.</div>`;
|
||||
}, 1000);
|
||||
});
|
||||
"))
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
.render()
|
||||
}
|
||||
|
||||
#[allow(unused)]
|
||||
#[route(GET "/item/:id?amount&offset")]
|
||||
async fn item_handler(
|
||||
id: u32,
|
||||
amount: Option<u32>,
|
||||
offset: Option<u32>,
|
||||
State(state): State<AppState>,
|
||||
// Json(json): Json<u32>,
|
||||
) -> impl IntoResponse {
|
||||
// todo!("handle request")
|
||||
|
||||
maud! {
|
||||
h1 { "Item" }
|
||||
div {
|
||||
|
||||
}
|
||||
p {
|
||||
(format!("{id:?} {amount:?} {offset:?} {state:?}"))
|
||||
}
|
||||
}
|
||||
.render()
|
||||
}
|
||||
}
|
||||
|
||||
struct DistController;
|
||||
|
@ -205,7 +196,7 @@ async fn main() {
|
|||
let listener = tokio::net::TcpListener::bind("0.0.0.0:8000").await.unwrap();
|
||||
|
||||
let router: axum::Router = axum::Router::new()
|
||||
.merge(TestaController::into_router(app_state.clone()))
|
||||
.merge(UiController::into_router(app_state.clone()))
|
||||
.merge(DistController::into_router(app_state.clone()))
|
||||
.fallback_service(get(handle_404))
|
||||
.method_not_allowed_fallback(handle_405)
|
||||
|
|
|
@ -1,18 +1,44 @@
|
|||
/* layer: preflights */
|
||||
*,::before,::after{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgba(0,0,0,0);--un-ring-shadow:0 0 rgba(0,0,0,0);--un-shadow-inset: ;--un-shadow:0 0 rgba(0,0,0,0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}::backdrop{--un-rotate:0;--un-rotate-x:0;--un-rotate-y:0;--un-rotate-z:0;--un-scale-x:1;--un-scale-y:1;--un-scale-z:1;--un-skew-x:0;--un-skew-y:0;--un-translate-x:0;--un-translate-y:0;--un-translate-z:0;--un-pan-x: ;--un-pan-y: ;--un-pinch-zoom: ;--un-scroll-snap-strictness:proximity;--un-ordinal: ;--un-slashed-zero: ;--un-numeric-figure: ;--un-numeric-spacing: ;--un-numeric-fraction: ;--un-border-spacing-x:0;--un-border-spacing-y:0;--un-ring-offset-shadow:0 0 rgba(0,0,0,0);--un-ring-shadow:0 0 rgba(0,0,0,0);--un-shadow-inset: ;--un-shadow:0 0 rgba(0,0,0,0);--un-ring-inset: ;--un-ring-offset-width:0px;--un-ring-offset-color:#fff;--un-ring-width:0px;--un-ring-color:rgba(147,197,253,0.5);--un-blur: ;--un-brightness: ;--un-contrast: ;--un-drop-shadow: ;--un-grayscale: ;--un-hue-rotate: ;--un-invert: ;--un-saturate: ;--un-sepia: ;--un-backdrop-blur: ;--un-backdrop-brightness: ;--un-backdrop-contrast: ;--un-backdrop-grayscale: ;--un-backdrop-hue-rotate: ;--un-backdrop-invert: ;--un-backdrop-opacity: ;--un-backdrop-saturate: ;--un-backdrop-sepia: ;}
|
||||
/* layer: shortcuts */
|
||||
.container{width:100%;}
|
||||
@media (min-width: 640px){
|
||||
.container{max-width:640px;}
|
||||
}
|
||||
@media (min-width: 768px){
|
||||
.container{max-width:768px;}
|
||||
}
|
||||
@media (min-width: 1024px){
|
||||
.container{max-width:1024px;}
|
||||
}
|
||||
@media (min-width: 1280px){
|
||||
.container{max-width:1280px;}
|
||||
}
|
||||
@media (min-width: 1536px){
|
||||
.container{max-width:1536px;}
|
||||
}
|
||||
/* layer: default */
|
||||
.static{position:static;}
|
||||
.m-1,
|
||||
.m1,
|
||||
[m-1=""],
|
||||
m1{margin:0.25rem;}
|
||||
m2{margin:0.5rem;}
|
||||
m3{margin:0.75rem;}
|
||||
.mx-auto{margin-left:auto;margin-right:auto;}
|
||||
.mb-2{margin-bottom:0.5rem;}
|
||||
.mb-4{margin-bottom:1rem;}
|
||||
.ms,
|
||||
[ms=""]{margin-inline-start:1rem;}
|
||||
.block{display:block;}
|
||||
contents{display:contents;}
|
||||
.h1{height:0.25rem;}
|
||||
.w-full{width:100%;}
|
||||
.b,
|
||||
.border,
|
||||
[b=""]{border-width:1px;}
|
||||
[pe=""]{padding-inline-end:1rem;}
|
||||
.rounded-lg{border-radius:0.5rem;}
|
||||
.bg-blue-500{--un-bg-opacity:1;background-color:rgba(59,130,246,var(--un-bg-opacity));}
|
||||
.bg-gray-100{--un-bg-opacity:1;background-color:rgba(243,244,246,var(--un-bg-opacity));}
|
||||
.bg-white{--un-bg-opacity:1;background-color:rgba(255,255,255,var(--un-bg-opacity));}
|
||||
.p-2{padding:0.5rem;}
|
||||
.p-4{padding:1rem;}
|
||||
.p-6{padding:1.5rem;}
|
||||
[pe=""]{padding-inline-end:1rem;}
|
||||
.text-2xl{font-size:1.5rem;line-height:2rem;}
|
||||
.font-bold{font-weight:700;}
|
||||
.text-white{--un-text-opacity:1;color:rgba(255,255,255,var(--un-text-opacity));}
|
||||
.shadow-md{--un-shadow:var(--un-shadow-inset) 0 4px 6px -1px var(--un-shadow-color, rgba(0,0,0,0.1)),var(--un-shadow-inset) 0 2px 4px -2px var(--un-shadow-color, rgba(0,0,0,0.1));box-shadow:var(--un-ring-offset-shadow), var(--un-ring-shadow), var(--un-shadow);}
|
Loading…
Add table
Reference in a new issue