From ea8dd197b3d9a6cd19bbfc2cfffd6bc0fe22200d Mon Sep 17 00:00:00 2001 From: Ivan Polyakov Date: Sat, 23 Apr 2022 17:36:50 +0300 Subject: [PATCH] current website state --- .gitignore | 2 + README.md | 6 +- layouts/clean.sxml | 8 ++ layouts/default.sxml | 59 +++++---- src/contacts.sxml | 8 ++ src/img/anybrowser3.jpg | Bin 0 -> 4251 bytes src/img/under-construction.png | Bin 0 -> 6907 bytes src/index.sxml | 24 +--- src/style.scss | 210 +++++++++++++++++++++++++++++++++ src/webapps/index.sxml | 7 ++ src/webapps/scrollbar.js | 129 ++++++++++++++++++++ src/webapps/scrollbar.sxml | 143 ++++++++++++++++++++++ 12 files changed, 547 insertions(+), 49 deletions(-) create mode 100644 layouts/clean.sxml create mode 100644 src/contacts.sxml create mode 100644 src/img/anybrowser3.jpg create mode 100644 src/img/under-construction.png create mode 100644 src/style.scss create mode 100644 src/webapps/index.sxml create mode 100644 src/webapps/scrollbar.js create mode 100644 src/webapps/scrollbar.sxml diff --git a/.gitignore b/.gitignore index 528fd16..e33ee37 100644 --- a/.gitignore +++ b/.gitignore @@ -1,5 +1,7 @@ dist/ +deploy*.sh + *~ *#* .#* diff --git a/README.md b/README.md index 740ee7d..1702d69 100644 --- a/README.md +++ b/README.md @@ -1,7 +1,5 @@ -hyde-template -============= -Template for hyde projects - +website +======= Dependencies ------------ Chicken Scheme: http://www.call-cc.org/ diff --git a/layouts/clean.sxml b/layouts/clean.sxml new file mode 100644 index 0000000..f70f2d4 --- /dev/null +++ b/layouts/clean.sxml @@ -0,0 +1,8 @@ +() +`((xhtml-1.0-strict) + (html (@ (xmlns "http://www.w3.org/1999/xhtml") (xml:lang "en") (lang "en")) + (head + (meta (@ (http-equiv "Content-Type") (content "text/html; charset=ascii"))) + (link (@ (rel "stylesheet") (href "/style.css"))) + (title ,($ 'title))) + (body (inject ,contents)))) diff --git a/layouts/default.sxml b/layouts/default.sxml index c9d89c4..3c0348d 100644 --- a/layouts/default.sxml +++ b/layouts/default.sxml @@ -1,28 +1,35 @@ -;; Copyright (C) -;; -;; This file is part of . -;; -;; is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. -;; -;; is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . - () `((xhtml-1.0-strict) - (html (@ (xmlns "http://www.w3.org/1999/xhtml") - (xml:lang "en") (lang "en")) - (head - (meta (@ (http-equiv "Content-Type") - (content "text/html; charset=ascii"))) - (title ,($ 'title))) - (body - (h1 ,($ 'title)) - (inject ,contents)))) + (html (@ (xmlns "http://www.w3.org/1999/xhtml") (xml:lang "en") (lang "en")) + (head + (meta (@ (http-equiv "Content-Type") (content "text/html; charset=ascii"))) + (link (@ (rel "stylesheet") (href "/style.css"))) + (title ,($ 'title))) + (body + (div (@ (class "wrapper")) + (div (@ (class "header")) + (div (@ (class "container")) + (h4 (@ (class "header__logo")) vilor) + (ul (@ (class "header__nav")) + (li (a (@ (href "/index.html")) "Home")) + (li (a (@ (href "/webapps/index.html")) "Web Apps")) + (li (a (@ (href "http://31.184.254.176:8078/")) "Git")) + (li (a (@ (href "/contacts.html")) "Contacts"))))) + + (div (@ (class "content container")) + (h1 (@ (class "content__title")) ,($ 'page-name)) + (div (@ (class "content__description")) ,($ 'page-desc)) + (inject ,contents)) + + (div (@ (class "footer")) + (div (@ (class "footer__authors")) + (div "Content: " (a (@ (href "/contacts.html")) "Ivan Polyakov")) + (div "Design: " (a (@ (href "https://t.me/olnaolna")) "Olga Revenkova"))) + (div (@ (class "links")) + (a (@ (href "http://validator.w3.org/check?uri=referer")) + (img (@ (src "http://www.w3.org/Icons/valid-xhtml10") (alt "Valid XHTML 1.0 Strict") (height 31) (width 88)))) + ;;(a (@ (href "https://notabug.org/vilor/website/")) + ;; "Source code") + (a (@ (href "http://www.anybrowser.org/campaign/")) + (img (@ (src "/img/anybrowser3.jpg") + (alt "Viewable With Any Browser")))))))))) diff --git a/src/contacts.sxml b/src/contacts.sxml new file mode 100644 index 0000000..0e762c9 --- /dev/null +++ b/src/contacts.sxml @@ -0,0 +1,8 @@ +((title . "vilor/contacts") + (page-name . "contacts")) + +'(ul (@ (class "contacts")) + (li "E-mail: " (a (@ (href "mailto:https://v1lor@protonmail.com")) + "v1lor at protonmail dot com")) + (li "Matrix: " (a (@ (href "https://matrix.to/#/@vilor:matrix.org")) + "vilor at matrix dot org"))) diff --git a/src/img/anybrowser3.jpg b/src/img/anybrowser3.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa903c76df56e1d19a8d550ba6cd6c697f95f44c GIT binary patch literal 4251 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 literal 0 HcmV?d00001 diff --git a/src/img/under-construction.png b/src/img/under-construction.png new file mode 100644 index 0000000000000000000000000000000000000000..9ceb903141a53548fc6658213369c036e0f06f72 GIT binary patch literal 6907 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 literal 0 HcmV?d00001 diff --git a/src/index.sxml b/src/index.sxml index e933e7e..66bbd32 100644 --- a/src/index.sxml +++ b/src/index.sxml @@ -1,20 +1,6 @@ -;; Copyright (C) -;; -;; This file is part of . -;; -;; is free software: you can redistribute it and/or modify -;; it under the terms of the GNU General Public License as published by -;; the Free Software Foundation, either version 3 of the License, or -;; (at your option) any later version. -;; -;; is distributed in the hope that it will be useful, -;; but WITHOUT ANY WARRANTY; without even the implied warranty of -;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -;; GNU General Public License for more details. -;; -;; You should have received a copy of the GNU General Public License -;; along with this program. If not, see . +((title . "vilor") + (page-name . "home")) -((title . "title")) - -'(div "content") +'(div (@ (class "under-construction")) + (img (@ (src "img/under-construction.png") (alt "under construction"))) + (h2 "Under construction.")) diff --git a/src/style.scss b/src/style.scss new file mode 100644 index 0000000..c6b8c6a --- /dev/null +++ b/src/style.scss @@ -0,0 +1,210 @@ +() +'((|html, body| + (height 100%) + (margin 0)) + + (|body| + (font-family "Arial, sans-serif") + (color white) + (background-color "#3b4252")) + + (|.wrapper| + (position relative) + (min-height 100%)) + + (|.container| + (max-width 937px) + (padding 0 16px) + (margin 0 auto)) + + (|a| + (color white)) + + (|a:hover| + (text-decoration none)) + + (|a:visited| + (color "#bbb")) + + ;; /general + ;; header + + (|.header| + (background-color "#262d3e")) + + (|.header .container| + (display flex) + (justify-content space-between)) + + (|.header__logo| + (display inline) + (font-size 24px) + (padding 8px 0) + (margin 0)) + + (|.header__nav| + (display inline) + (list-style none) + (font-size 16px) + (padding 14px 0) + (margin 0)) + + (|.header__nav li| + (display inline)) + + ;; /header + ;; content + + (|.content| + (padding 32px 16px 138px 16px)) + + (|.content__title| + (font-size 36px) + (margin-top 0) + (margin-bottom 12px)) + + (|.content__description| + (font-size 20px) + (margin-bottom 24px)) + + (|.content__description .note| + (font-size 16px) + (margin-top 16px)) + + (|.content__description p| + (margin 0)) + + ;; /content + ;; footer + + (|.footer| + (position absolute) + (bottom 0) + (width 100%) + (text-align center) + (background-color "#262d3e") + (padding 14px 0)) + + (|.footer__authors| + (margin-bottom 5px)) + + (|.footer .links a| + (margin "0 5px")) + + ;; /footer + + (|.under-construction| + (max-width 300px) + (text-align center) + (margin "0 auto")) + + (|.ideas table| + (margin "0 auto")) + + (|table, th, td| + (border "1px solid black")) + + (|th, td| + (padding "5px")) + + (|.scrollbar-app form| + (margin-bottom 10px)) + + (|.scrollbar-app form fieldset| + (border none) + (padding 0) + (margin 0)) + + (|.scrollbar-app form .scrollbar-app__panel| + (margin-bottom 16px)) + + (|.scrollbar-app form h3| + (font-size 24px) + (margin 0)) + + (|.scrollbar-app form h4| + (font-size 20px) + (margin 12px 0 0 0)) + + (|.scrollbar-app__panel, .scrollbar-app form .scrollbar-app__panel| + (background-color "#585F70") + (padding 12px)) + + (|.scrollbar-app__input| + (display inline-block) + (display inline-flex) + (align-items center) + (padding 8px)) + + (|.scrollbar-app textarea| + ("--sb-w" 10px) + ("--thumb-clr" "#9b3e46") + ("--thumb-bstl" "solid") + ("--thumb-bw" 1px) + ("--thumb-bclr" white) + ("--thumb-brad" 8px) + ("--track-clr" "#3b4252") + ("--track-brad" 8px) + ("--track-mt" 0px) + ("--track-mb" 0px) + (height 300px) + (font-size 32px) + (overflow-y scroll) + (scrollbar-width "var(--sb-w)") + (scrollbar-color "var(--thumb-clr) var(--track-clr)") + (margin-top 60px)) + + (|.scrollbar-app textarea::-webkit-scrollbar| + (width "var(--sb-w)") + (margin-bottom 5px)) + + (|.scrollbar-app textarea::-webkit-scrollbar-thumb| + (background-color "var(--thumb-clr)") + (border-style "var(--thumb-bstl)") + (border-width "var(--thumb-bw)") + (border-color "var(--thumb-bclr)") + (border-radius "var(--thumb-brad)")) + + (|.scrollbar-app textarea::-webkit-scrollbar-track| + (background-color "var(--track-clr)") + (border-radius "var(--track-brad)") + (margin-top "var(--track-mt)") + (margin-bottom "var(--track-mb)")) + + (|.scrollbar-app__buttons| + (margin-top 24px)) + + (|.scrollbar-app__buttons button| + (min-width 149px) + (font-size 18px) + (background-color "#ced9f3") + (padding 14px 25px) + (border none) + (border-radius 4px) + (outline none) + (margin-right 16px)) + + (|.scrollbar-app__buttons button:hover| + (background-color "#a2b8ed")) + + (|.rad-app .rtable| + (width 100%)) + + (|.rad-app table td > div| + (resize horizontal) + (overflow auto)) + + (|.rad-app .rad-app__tree ul| + (list-style none) + (padding-left 10px)) + + (|.rad-app .rad-app__tree ul li| + (padding-left 5px) + (border-left "1px solid #9b3e46")) + + (|.rad-app .rad-app__tree ul li:hover| + (background-color "#9b3e46")) + + (|.rad-app__viewport| + (color black) + (background-color white))) diff --git a/src/webapps/index.sxml b/src/webapps/index.sxml new file mode 100644 index 0000000..7a40b31 --- /dev/null +++ b/src/webapps/index.sxml @@ -0,0 +1,7 @@ +((title . "vilor/webapps") + (page-name . "webapps")) + +'(div (@ (class "webapps")) + (ul + (li + (a (@ (href "scrollbar.html")) "Scrollbar styling")))) diff --git a/src/webapps/scrollbar.js b/src/webapps/scrollbar.js new file mode 100644 index 0000000..33d227c --- /dev/null +++ b/src/webapps/scrollbar.js @@ -0,0 +1,129 @@ +// @license magnet:?xt=urn:btih:1f739d935676111cfff4b4693e3816e664797050&dn=gpl-3.0.txt GPL-v3-or-Later +(function() { + var textArea = document.getElementById('sbTextArea'); + var updBtn = document.getElementById('sbUpdBtn'); + var printBtn = document.getElementById('sbPrintBtn'); + var clearBtn = document.getElementById('sbClearBtn'); + var msg = "Failed to get ELEMENT! Please report this bug to me." + + if (!textArea) { + msg.replace("ELEMENT", "textarea"); + } else if (!updBtn) { + msg.replace("ELEMENT", "update button"); + } else { + msg = null; + } + + if (msg) { + alert(msg); + console.error(msg); + return; + } + delete msg; + + var settingsForm = { + bar: { + width: document.getElementById('sbw'), + getStyle() { + return "--sb-w:" + this.width.value + ";"; + }, + }, + thumb: { + color: document.getElementById('thumbclr'), + colortxt: document.getElementById('thumbclrtxt'), + bstl: document.getElementById('thumbbstl'), + bw: document.getElementById('thumbbw'), + bclr: document.getElementById('thumbbclr'), + bclrtxt: document.getElementById('thumbbclrtxt'), + brad: document.getElementById('thumbbrad'), + init() { + this.colortxt.oninput = () => { + this.color.value = this.colortxt.value; + } + this.color.oninput = () => { + this.colortxt.value = this.color.value; + } + + this.bclr.oninput = () => { + this.bclrtxt.value = this.bclr.value; + } + this.bclrtxt.oninput = () => { + this.bclr.value = this.bclrtxt.value; + } + }, + getStyle() { + return "--thumb-clr:" + this.color.value + ";" + + "--thumb-bstl:" + this.bstl.value + ";" + + "--thumb-bw:" + this.bw.value + ";" + + "--thumb-bclr:" + this.bclr.value + ";" + + "--thumb-brad:" + this.brad.value + ";"; + }, + }, + track: { + color: document.getElementById('trackclr'), + colortxt: document.getElementById('trackclrtxt'), + colorout: document.getElementById('trackclrout'), + brad: document.getElementById('trackbrad'), + mt: document.getElementById('trackmt'), + mb: document.getElementById('trackmb'), + init() { + this.colortxt.oninput = () => { + this.color.value = this.colortxt.value; + } + this.color.oninput = () => { + this.colortxt.value = this.color.value; + } + }, + getStyle() { + return "--track-clr: " + this.color.value + ";" + + "--track-brad:" + this.brad.value + ";" + + "--track-mt:" + this.mt.value + ";" + + "--track-mb:" + this.mb.value + ";"; + }, + }, + output: document.getElementById('sbScssOut'), + init() { + this.thumb.init(); + this.track.init(); + }, + upd(el) { + el.style = this.bar.getStyle() + this.thumb.getStyle() + + this.track.getStyle(); + }, + print() { + this.output.textContent = ".selector {\n" + + " scrollbar-color: " + this.thumb.color.value + + " " + this.track.color.value + ";\n" + + "\n &::-webkit-scrollbar {\n" + + " width: " + this.bar.width.value + ";" + + "\n }\n" + + "\n &::-webkit-scrollbar-track {\n" + + " background-color: " + this.track.color.value + ";\n" + + " border-radius: " + this.track.brad.value + ";\n" + + " margin-top: " + this.track.mt.value + ";\n" + + " margin-bottom: " + this.track.mb.value + ";" + + "\n }\n" + + "\n &::-webkit-scrollbar-thumb {\n" + + " background-color: " + this.thumb.color.value + ";\n" + + " border: " + this.thumb.bw.value + " " + this.thumb.bstl.value + " " + this.thumb.bclr.value + ";\n" + + " border-radius: " + this.thumb.brad.value + ";" + + "\n }" + + "\n}"; + this.output.style = "display:block;" + }, + }; + + settingsForm.init(); + + updBtn.onclick = function() { + settingsForm.upd(textArea); + } + + printBtn.onclick = settingsForm.print.bind(settingsForm); + + clearBtn.onclick = function() { + settingsForm.output.textContent = ""; + settingsForm.output.style = "display:none;"; + } +})(); +// @license-end diff --git a/src/webapps/scrollbar.sxml b/src/webapps/scrollbar.sxml new file mode 100644 index 0000000..f4fb882 --- /dev/null +++ b/src/webapps/scrollbar.sxml @@ -0,0 +1,143 @@ +((title . "vilor/webapps/scrollbar") + (page-name . "Scrollbar styling") + (page-desc . ("Demonstration of possible customization of the scrollbar." + (p (@ (class "note")) (b "Note") ": The result will look different in different browsers, try checking the result in browsers based on different engines.")))) + +'(div (@ (class "scrollbar-app")) + (noscript "Sorry, but this crap doesn't work without JavaScript.") + (form + (fieldset (@ (class "scrollbar-app__panel")) + (h3 "Bar:") + (div (@ (class "scrollbar-app__input")) + (label (@ (for "sbw")) "Width: ") + (input (@ + (type "text") + (id "sbw") + (name "sbw") + (value "10px") + (pattern "\\d+px") + (title "Size in pixels with format: \"px\""))))) + + (fieldset (@ (class "scrollbar-app__panel")) + (h3 "Thumbnail:") + (div (@ (class "scrollbar-app__input")) + (label (@ (for "thumbclr")) "Color: ") + (input (@ + (type "color") + (id "thumbclr") + (name "thumbclr") + (value "\#9b3e46"))) + (input (@ + (type "text") + (id "thumbclrtxt") + (name "thumbclrtxt") + (value "\#9b3e46") + (pattern "\#[0-9A-Fa-f]{6}") + (title "Hexadecimal RGB color with \"\#\" at the beginning")))) + + (fieldset + (h4 "Border:") + (div (@ (class "scrollbar-app__input")) + (label (@ (for "thumbbstl")) "Style: ") + (select (@ (id "thumbbstl") (name "thumbbstl")) + (option (@ (value "none")) "none") + (option (@ (value "hidden")) "hidden") + (option (@ (value "solid") (selected "selected")) "solid") + (option (@ (value "dotted")) "dotted") + (option (@ (value "dashed")) "dashed") + (option (@ (value "double")) "double") + (option (@ (value "groove")) "groove") + (option (@ (value "ridge")) "ridge") + (option (@ (value "inset")) "inset") + (option (@ (value "outset")) "outset"))) + + (div (@ (class "scrollbar-app__input")) + (label (@ (for "thumbbrad")) "Radius: ") + (input (@ + (type "text") + (id "thumbbrad") + (name "thumbbrad") + (value 8px) + (pattern "\\d+(px|%)") + (title "Radius in pixels or percents with format: \"px\" or \"%\"")))) + + (div (@ (class "scrollbar-app__input")) + (label (@ (for "thumbbw")) "Width: ") + (input (@ + (type "text") + (id "thumbbw") + (name "thumbbw") + (value 1px) + (pattern "\\d+px") + (title "Size in pixels with format: \"px\"")))) + + (div (@ (class "scrollbar-app__input")) + (label (@ (for "thumbbclr")) "Color: ") + (input (@ + (type "color") + (id "thumbbclr") + (name "thumbbclr") + (value "\#ffffff"))) + (input (@ + (type "text") + (id "thumbbclrtxt") + (name "thumbbclrtxt") + (value "\#ffffff") + (pattern "\#[0-9A-Fa-f]{6}") + (title "Hexadecimal RGB color with \"\#\" at the beginning")))))) + + (fieldset (@ (class "scrollbar-app__panel")) + (h3 "Track:") + (div (@ (class "scrollbar-app__input")) + (label (@ (for "trackclr")) "Color: ") + (input (@ + (type "color") + (id "trackclr") + (name "trackclr") + (value "\#3b4252"))) + (input (@ + (type "text") + (id "trackclrtxt") + (name "trackclrtxt") + (value "\#3b4252") + (pattern "\#[0-9A-Fa-f]{6}") + (title "Hexadecimal RGB color with \"\#\" at the beginning")))) + + (div (@ (class "scrollbar-app__input")) + (label (@ (for "trackbrad")) "Border radius: ") + (input (@ + (type "text") + (id "trackbrad") + (name "trackbrad") + (value 8px) + (pattern "\\d+(px|%)") + (title "Radius in pixels or percents with format: \"px\" or \"%\"")))) + + (div (@ (class "scrollbar-app__input")) + (label (@ (for "trackmt")) "Margin top: ") + (input (@ + (type "text") + (id "trackmt") + (name "trackmt") + (value "0px") + (pattern "\\d+px") + (title "Size in pixels with format: \"px\"")))) + + (div (@ (class "scrollbar-app__input")) + (label (@ (for "trackmb")) "Margin bottom: ") + (input (@ + (type "text") + (id "trackmb") + (name "trackmb") + (value "0px") + (pattern "\\d+px") + (title "Size in pixels with format: \"px\""))))) + + (div (@ (class "scrollbar-app__buttons")) + (button (@ (type "button") (id "sbUpdBtn")) "update") + (button (@ (type "button") (id "sbPrintBtn")) "print scss") + (button (@ (type "button") (id "sbClearBtn")) "clear output"))) + + (pre (@ (class "scrollbar-app__panel") (style "display: none") (id "sbScssOut"))) + (textarea (@ (id "sbTextArea") (readonly "readonly")) "Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum.") + (script (@ (src "scrollbar.js"))))