From f7275309ad3ec062ebed915a097766daf126813b Mon Sep 17 00:00:00 2001 From: Indrajith K L Date: Fri, 21 Jun 2024 00:43:41 +0530 Subject: [PATCH] Basic Home Page Implementation * Moves assets from old website * Basic layout based on old website * Move home page from old website --- public/css/fonts/VGA437.ttf | Bin 0 -> 81192 bytes public/css/styles.css | 258 ++++++++++++++++++++++++++++++++ public/images/aqua.gif | Bin 0 -> 11608 bytes public/images/indrajith.dev.gif | Bin 0 -> 1385 bytes src/indrajith-dev-crystal.cr | 21 ++- src/views/home.ecr | 23 +++ src/views/layout.ecr | 53 +++++++ 7 files changed, 353 insertions(+), 2 deletions(-) create mode 100644 public/css/fonts/VGA437.ttf create mode 100644 public/css/styles.css create mode 100644 public/images/aqua.gif create mode 100644 public/images/indrajith.dev.gif create mode 100644 src/views/home.ecr create mode 100644 src/views/layout.ecr diff --git a/public/css/fonts/VGA437.ttf b/public/css/fonts/VGA437.ttf new file mode 100644 index 0000000000000000000000000000000000000000..f5cbfc06fd489f01566cfaa1a41f5c260368d7b9 GIT binary patch literal 81192 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 literal 0 HcmV?d00001 diff --git a/public/css/styles.css b/public/css/styles.css new file mode 100644 index 0000000..58a7bd4 --- /dev/null +++ b/public/css/styles.css @@ -0,0 +1,258 @@ +@font-face { + font-family: "VGA437"; + src: url("/fonts/VGA437.ttf"); +} + +:root { + --body-bg-image: url("/images/aqua.gif"); +} + +* { + image-rendering: pixelated; + box-sizing: border-box; +} + + +html, +body { + margin: 0; + padding: 0; +} + +body { + font-family: Verdana; + font-size: 15px; + max-width: 900px; + margin: auto; + background: #ffffd6; + background-image: var(--body-bg-image); +} + +p { + text-align: justify; +} + +footer { + bottom: 0px; + left: 0; + text-align: center; + width: 100%; +} + +.header { + text-align: center; +} + +.header nav { + display: block; +} + +.header ul, +footer ul { + padding: 0px; +} + +.header ul>li { + display: inline-block; + text-align: center; +} + +.header ul>li:not(:last-child):after { + content: " | "; +} + +.header ul>li a { + text-decoration: none; + font-size: 15px; + color: #000000; + font-weight: bold; +} + +.text-center { + /* text-align: center; */ +} + +footer ul>li { + display: inline-block; +} + +footer ul>li>p { + margin-block-end: unset; + margin-block-start: unset; +} + +.logo-container { + padding-top: 10px; +} + +.logo { + text-decoration: none; + font-family: "VGA437", sans-serif; + font-size: 220%; + color: #000000; +} + +h4.slogan { + margin: 0px; +} + +.mt-10 { + margin-top: 10px; +} + +.font-bold { + font-weight: bold; +} + +.font-italics { + font-style: italic; +} + +table { + border-collapse: collapse; +} + +th, +tr, +td { + border: 1px solid; +} + +table tr { + padding-bottom: 10px; +} + +table th { + padding-right: 20px; +} + +table td { + padding: 10px; +} + +.post-date { + font-size: 15px; + font-style: italic; +} + +.post-lists li { + list-style-type: "◆ "; + margin-bottom: 5px; +} + +@media (max-width: 1000px) { + body { + font-size: 80%; + padding: 3%; + } + + #blog img { + max-width: 80%; + } +} + +/* Underline Reveal */ +.hvr-underline-reveal { + display: inline-block; + vertical-align: middle; + -webkit-transform: perspective(1px) translateZ(0); + transform: perspective(1px) translateZ(0); + box-shadow: 0 0 1px rgba(0, 0, 0, 0); + position: relative; + overflow: hidden; +} + +.hvr-underline-reveal:before { + content: ""; + position: absolute; + z-index: -1; + left: 0; + right: 0; + bottom: 0; + background: #000000; + height: 2px; + -webkit-transform: translateY(4px); + transform: translateY(4px); + -webkit-transition-property: transform; + transition-property: transform; + -webkit-transition-duration: 0.3s; + transition-duration: 0.3s; + -webkit-transition-timing-function: ease-out; + transition-timing-function: ease-out; +} + +.hvr-underline-reveal:hover:before, +.hvr-underline-reveal:focus:before, +.hvr-underline-reveal:active:before { + -webkit-transform: translateY(0); + transform: translateY(0); +} + +.tools-container { + --auto-grid-min-size: 16rem; + display: grid; + grid-template-columns: repeat(auto-fill, + minmax(var(--auto-grid-min-size), 1fr)); + grid-gap: 1rem; +} + +.tool { + border: 1px solid #000000; + width: 252px; + margin: 10px; + padding: 10px; + box-shadow: 2px 6px; + background: linen; +} + +img { + max-width: 100%; +} + +.tools-container .tool-name * { + font-weight: bold; + color: #000000; +} + +.tools-container label { + font-weight: bold; +} + +p.first-letter::first-letter { + font-size: 150%; +} + +.highlight { + background: #000000; + padding: 2px 5px 2px 5px; + color: #ffffff; +} + +.highlight.tags { + border-radius: 8px; +} + +.article { + line-height: 25px; +} + +.etyone { + margin-bottom: 5px; +} + +.gr_grid_container { + /* customize grid container div here. eg: width: 500px; */ +} + +.gr_grid_book_container { + /* customize book cover container div here */ + float: left; + width: 98px; + height: 160px; + padding: 0; + overflow: hidden; +} + +.four-o-four { + text-align: center; +} \ No newline at end of file diff --git a/public/images/aqua.gif b/public/images/aqua.gif new file mode 100644 index 0000000000000000000000000000000000000000..731ba11a507db2ffe169fa12eadee2dff12a35fe GIT binary patch literal 11608 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 Y3>-RCrg<#l&{($OQJ2m(P|CCh09W;QTmS$7 literal 0 HcmV?d00001 diff --git a/src/indrajith-dev-crystal.cr b/src/indrajith-dev-crystal.cr index a7a08b6..28948cf 100644 --- a/src/indrajith-dev-crystal.cr +++ b/src/indrajith-dev-crystal.cr @@ -3,8 +3,25 @@ require "kemal" module Indrajith::Dev::Crystal VERSION = "0.1.0" - get "/" do - "Hello World!" + macro page_renderer(filename) + render "src/views/#{{{filename}}}.ecr", "src/views/layout.ecr" + end + + def self.htmx_request?(context) + context.request.headers.has_key?("HX-Request") || + context.request.headers.has_key?("Hx-Request") || + context.request.headers.has_key?("hx-request") + end + + get "/" do |context| + if htmx_request?(context) + partial_content = render("src/views/home.ecr") + context.response.content_type = "text/html" + context.response.print partial_content + else + context.response.content_type = "text/html" + page_renderer "home" + end end Kemal.run diff --git a/src/views/home.ecr b/src/views/home.ecr new file mode 100644 index 0000000..5d7eb54 --- /dev/null +++ b/src/views/home.ecr @@ -0,0 +1,23 @@ + + +
+
+

Books I'm reading now

+
+
+

Recent Posts

+
    + +
+
+ + diff --git a/src/views/layout.ecr b/src/views/layout.ecr new file mode 100644 index 0000000..f16eefc --- /dev/null +++ b/src/views/layout.ecr @@ -0,0 +1,53 @@ + + + + + + {indrajith.dev} + + + + +
+ +

(Software is Art)

+ +
+
+
+ <%= content %> +
+
+
+
    +
  • +

    © 2024 Indrajith K L

    +
  • +
+ +
+ + + +