From 0192479c73b9cbaa11e130daa8a313d5352a8576 Mon Sep 17 00:00:00 2001 From: Mike Nolan Date: Thu, 3 Jul 2025 14:04:50 -0500 Subject: [PATCH] First commit --- cross.json | 7 ++++++ res/favicon.ico | Bin 0 -> 46215 bytes res/image.png | Bin 0 -> 1073 bytes res/simple.min.css | 1 + src/components/counter.tcross | 5 ++++ src/components/shell.tcross | 38 ++++++++++++++++++++++++++++++ src/pages/about.tcross | 26 +++++++++++++++++++++ src/pages/counter.tcross | 25 ++++++++++++++++++++ src/pages/echo.tcross | 32 ++++++++++++++++++++++++++ src/pages/index.tcross | 27 ++++++++++++++++++++++ src/program.tcross | 42 ++++++++++++++++++++++++++++++++++ 11 files changed, 203 insertions(+) create mode 100644 cross.json create mode 100644 res/favicon.ico create mode 100644 res/image.png create mode 100644 res/simple.min.css create mode 100644 src/components/counter.tcross create mode 100644 src/components/shell.tcross create mode 100644 src/pages/about.tcross create mode 100644 src/pages/counter.tcross create mode 100644 src/pages/echo.tcross create mode 100644 src/pages/index.tcross create mode 100644 src/program.tcross diff --git a/cross.json b/cross.json new file mode 100644 index 0000000..d32a5c1 --- /dev/null +++ b/cross.json @@ -0,0 +1,7 @@ +{ + "info": { + "type": "console" + }, + "name": "cross", + "version": "1.0.0.0-prod" +} \ No newline at end of file diff --git a/res/favicon.ico b/res/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..3fd66aed3ac39aa76f8981b19628b487e76ca6f8 GIT binary patch literal 46215 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 +b`?>k8#sV2d7K7$ERK1g5- z!v=#IQ%?sE*@mMJR|~d&cs%*@;q7mw;+h}cR_|1ADk+xPH%mv+;7`t`h65kI8ge#1 zoPC^yr7d56Dll!Hh=rMKz?l}Q{%(0&s_y1 z?!~d?o!q|1w1WHUg6G)^f*{grid-column:2}body>header{background-color:var(--accent-bg);border-bottom:1px solid var(--border);text-align:center;grid-column:1/-1;padding:0 .5rem 2rem}body>header>:only-child{margin-block-start:2rem}body>header h1{max-width:1200px;margin:1rem auto}body>header p{max-width:40rem;margin:1rem auto}main{padding-top:1.5rem}body>footer{color:var(--text-light);text-align:center;border-top:1px solid var(--border);margin-top:4rem;padding:2rem 1rem 1.5rem;font-size:.9rem}h1{font-size:3rem}h2{margin-top:3rem;font-size:2.6rem}h3{margin-top:3rem;font-size:2rem}h4{font-size:1.44rem}h5{font-size:1.15rem}h6{font-size:.96rem}p{margin:1.5rem 0}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}h1,h2,h3{line-height:1.1}@media only screen and (width<=720px){h1{font-size:2.5rem}h2{font-size:2.1rem}h3{font-size:1.75rem}h4{font-size:1.25rem}}a,a:visited{color:var(--accent)}a:hover{text-decoration:none}button,.button,a.button,input[type=submit],input[type=reset],input[type=button]{border:1px solid var(--accent);background-color:var(--accent);color:var(--accent-text);padding:.5rem .9rem;line-height:normal;text-decoration:none}.button[aria-disabled=true],input:disabled,textarea:disabled,select:disabled,button[disabled]{cursor:not-allowed;background-color:var(--disabled);border-color:var(--disabled);color:var(--text-light)}input[type=range]{padding:0}abbr[title]{cursor:help;text-decoration-line:underline;text-decoration-style:dotted}button:enabled:hover,.button:not([aria-disabled=true]):hover,input[type=submit]:enabled:hover,input[type=reset]:enabled:hover,input[type=button]:enabled:hover{background-color:var(--accent-hover);border-color:var(--accent-hover);cursor:pointer}.button:focus-visible,button:focus-visible:where(:enabled),input:enabled:focus-visible:where([type=submit],[type=reset],[type=button]){outline:2px solid var(--accent);outline-offset:1px}header>nav{padding:1rem 0 0;font-size:1rem;line-height:2}header>nav ul,header>nav ol{flex-flow:wrap;place-content:space-around center;align-items:center;margin:0;padding:0;list-style-type:none;display:flex}header>nav ul li,header>nav ol li{display:inline-block}header>nav a,header>nav a:visited{border:1px solid var(--border);border-radius:var(--standard-border-radius);color:var(--text);margin:0 .5rem 1rem;padding:.1rem 1rem;text-decoration:none;display:inline-block}header>nav a:hover,header>nav a.current,header>nav a[aria-current=page],header>nav a[aria-current=true]{border-color:var(--accent);color:var(--accent);cursor:pointer}@media only screen and (width<=720px){header>nav a{border:none;padding:0;line-height:1;text-decoration:underline}}aside,details,pre,progress{background-color:var(--accent-bg);border:1px solid var(--border);border-radius:var(--standard-border-radius);margin-bottom:1rem}aside{float:right;width:30%;margin-inline-start:15px;padding:0 15px;font-size:1rem}[dir=rtl] aside{float:left}@media only screen and (width<=720px){aside{float:none;width:100%;margin-inline-start:0}}article,fieldset,dialog{border:1px solid var(--border);border-radius:var(--standard-border-radius);margin-bottom:1rem;padding:1rem}article h2:first-child,section h2:first-child,article h3:first-child,section h3:first-child{margin-top:1rem}section{border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin:3rem 0;padding:2rem 1rem}section+section,section:first-child{border-top:0;padding-top:0}section+section{margin-top:0}section:last-child{border-bottom:0;padding-bottom:0}details{padding:.7rem 1rem}summary{cursor:pointer;word-break:break-all;margin:-.7rem -1rem;padding:.7rem 1rem;font-weight:700}details[open]>summary+*{margin-top:0}details[open]>summary{margin-bottom:.5rem}details[open]>:last-child{margin-bottom:0}table{border-collapse:collapse;margin:1.5rem 0}figure>table{width:max-content;margin:0}td,th{border:1px solid var(--border);text-align:start;padding:.5rem}th{background-color:var(--accent-bg);font-weight:700}tr:nth-child(2n){background-color:var(--accent-bg)}table caption{margin-bottom:.5rem;font-weight:700}textarea,select,input,button,.button{font-size:inherit;border-radius:var(--standard-border-radius);box-shadow:none;max-width:100%;margin-bottom:.5rem;padding:.5rem;font-family:inherit;display:inline-block}textarea,select,input{color:var(--text);background-color:var(--bg);border:1px solid var(--border)}label{display:block}textarea:not([cols]){width:100%}select:not([multiple]){background-image:linear-gradient(45deg,transparent 49%,var(--text)51%),linear-gradient(135deg,var(--text)51%,transparent 49%);background-position:calc(100% - 15px),calc(100% - 10px);background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-inline-end:25px}[dir=rtl] select:not([multiple]){background-position:10px,15px}input[type=checkbox],input[type=radio]{vertical-align:middle;width:min-content;position:relative}input[type=checkbox]+label,input[type=radio]+label{display:inline-block}input[type=radio]{border-radius:100%}input[type=checkbox]:checked,input[type=radio]:checked{background-color:var(--accent)}input[type=checkbox]:checked:after{content:" ";border-right:solid var(--bg).08em;border-bottom:solid var(--bg).08em;background-color:#0000;border-radius:0;width:.18em;height:.32em;font-size:1.8em;position:absolute;top:.05em;left:.17em;transform:rotate(45deg)}input[type=radio]:checked:after{content:" ";background-color:var(--bg);border-radius:100%;width:.25em;height:.25em;font-size:32px;position:absolute;top:.125em;left:.125em}@media only screen and (width<=720px){textarea,select,input{width:100%}}input[type=color]{height:2.5rem;padding:.2rem}input[type=file]{border:0}hr{background:var(--border);border:none;height:1px;margin:1rem auto}mark{border-radius:var(--standard-border-radius);background-color:var(--marked);color:#000;padding:2px 5px}mark a{color:#0d47a1}img,video{border-radius:var(--standard-border-radius);max-width:100%;height:auto}figure{margin:0;display:block;overflow-x:auto}figure>img,figure>picture>img{margin-inline:auto;display:block}figcaption{text-align:center;color:var(--text-light);margin-block:1rem;font-size:.9rem}blockquote{border-inline-start:.35rem solid var(--accent);color:var(--text-light);margin-block:2rem;margin-inline:2rem 0;padding:.4rem .8rem;font-style:italic}cite{color:var(--text-light);font-size:.9rem;font-style:normal}dt{color:var(--text-light)}code,pre,pre span,kbd,samp{font-family:var(--mono-font);color:var(--code)}kbd{color:var(--preformatted);border:1px solid var(--preformatted);border-bottom:3px solid var(--preformatted);border-radius:var(--standard-border-radius);padding:.1rem .4rem}pre{max-width:100%;color:var(--preformatted);padding:1rem 1.4rem;overflow:auto}pre code{color:var(--preformatted);background:0 0;margin:0;padding:0}progress{width:100%}progress:indeterminate{background-color:var(--accent-bg)}progress::-webkit-progress-bar{border-radius:var(--standard-border-radius);background-color:var(--accent-bg)}progress::-webkit-progress-value{border-radius:var(--standard-border-radius);background-color:var(--accent)}progress::-moz-progress-bar{border-radius:var(--standard-border-radius);background-color:var(--accent);transition-property:width;transition-duration:.3s}progress:indeterminate::-moz-progress-bar{background-color:var(--accent-bg)}dialog{background-color:var(--bg);max-width:40rem;margin:auto}dialog::backdrop{background-color:var(--bg);opacity:.8}@media only screen and (width<=720px){dialog{max-width:100%;margin:auto 1em}}sup,sub{vertical-align:baseline;position:relative}sup{top:-.4em}sub{top:.3em}.notice{background:var(--accent-bg);border:2px solid var(--border);border-radius:var(--standard-border-radius);margin:2rem 0;padding:1.5rem}@media print{@page{margin:1cm}body{display:block}body>header{background-color:unset}body>header nav,body>footer{display:none}article{border:none;padding:0}a[href^=http]:after{content:" <" attr(href)">"}abbr[title]:after{content:" (" attr(title)")"}a{text-decoration:none}p{widows:3;orphans:3}hr{border-top:1px solid var(--border)}mark{border:1px solid var(--border)}pre,table,figure,img,svg{break-inside:avoid}pre code{white-space:pre-wrap}} \ No newline at end of file diff --git a/src/components/counter.tcross b/src/components/counter.tcross new file mode 100644 index 0000000..41092dd --- /dev/null +++ b/src/components/counter.tcross @@ -0,0 +1,5 @@ +var count = 0; +func Components.Counter() +{ + return

Count is {++count}

; +} \ No newline at end of file diff --git a/src/components/shell.tcross b/src/components/shell.tcross new file mode 100644 index 0000000..a3181d9 --- /dev/null +++ b/src/components/shell.tcross @@ -0,0 +1,38 @@ +func Components.Shell(title,pages,body) +{ + return + + + + + cross - {title} + + + +
+

cross

+ +
+

{title}

+ + + + ; +} \ No newline at end of file diff --git a/src/pages/about.tcross b/src/pages/about.tcross new file mode 100644 index 0000000..a04a72f --- /dev/null +++ b/src/pages/about.tcross @@ -0,0 +1,26 @@ +func Pages.About() +{ + var pages = [ + { + active = false, + route = "/", + text = "Home" + }, + { + active = false, + route = "/counter", + text = "Counter" + }, + { + active = true, + route = "/about", + text = "About" + } + ]; + return Components.Shell( + "About Me", + pages, +

{ipsum}

+ ); +} +var ipsum=""; \ No newline at end of file diff --git a/src/pages/counter.tcross b/src/pages/counter.tcross new file mode 100644 index 0000000..d84eebb --- /dev/null +++ b/src/pages/counter.tcross @@ -0,0 +1,25 @@ +func Pages.Counter() +{ + var pages = [ + { + active = false, + route = "/", + text = "Home" + }, + { + active = true, + route = "/counter", + text = "Counter" + }, + { + active = false, + route = "/about", + text = "About" + } + ]; + return Components.Shell( + "Counter", + pages, +

This is a counter

+ ); +} \ No newline at end of file diff --git a/src/pages/echo.tcross b/src/pages/echo.tcross new file mode 100644 index 0000000..17919c2 --- /dev/null +++ b/src/pages/echo.tcross @@ -0,0 +1,32 @@ +func Pages.Echo(text) +{ + var pages = [ + { + active = false, + route = "/", + text = "Home" + }, + { + active = false, + route = "/counter", + text = "Counter" + }, + { + active = false, + route = "/about", + text = "About" + } + ]; + return Components.Shell( + "Echo", + pages, + + +

{text}

+
+ +

No text available

+
+ + ); +} \ No newline at end of file diff --git a/src/pages/index.tcross b/src/pages/index.tcross new file mode 100644 index 0000000..e698dee --- /dev/null +++ b/src/pages/index.tcross @@ -0,0 +1,27 @@ +func Pages.Index() +{ + var pages = [ + { + active = true, + route = "/", + text = "Home" + }, + { + active = false, + route = "/counter", + text = "Counter" + }, + { + active = false, + route = "/about", + text = "About" + } + ]; + return Components.Shell("Main Page",pages,
+
+ + +
+

1 John 4:4: You, dear children, are from God and have overcome them, because the one who is in you is greater than the one who is in the world.

+
); +} \ No newline at end of file diff --git a/src/program.tcross b/src/program.tcross new file mode 100644 index 0000000..671f65f --- /dev/null +++ b/src/program.tcross @@ -0,0 +1,42 @@ +var count = 0; +func main(args) +{ + Net.Http.ListenSimpleWithLoop((ctx)=>{ + if(ctx.Path == "/") + { + ctx.WithMimeType("text/html").SendText(Pages.Index()); + return true; + } + else if(ctx.Path == "/counter") + { + ctx.WithMimeType("text/html").SendText(Pages.Counter()); + return true; + } + else if(ctx.Path == "/about") + { + ctx.WithMimeType("text/html").SendText(Pages.Index()); + return true; + } + else if(ctx.Path == "/echo") + { + ctx.WithMimeType("text/html").SendText(Pages.Echo(ctx.QueryParams.TryGetFirst("text"))); + return true; + } + else if(ctx.Path == "/image.png") + { + ctx.WithMimeType("image/png").SendBytes(embed("image.png")); + return true; + } + else if(ctx.Path == "/css/simple.min.css") + { + ctx.WithMimeType("text/css").SendBytes(embed("simple.min.css")); + return true; + } + else if(ctx.Path == "/favicon.ico") + { + ctx.WithMimeType("image/x-icon").SendBytes(embed("favicon.ico")); + return true; + } + return false; + },4206); +} \ No newline at end of file