Add ui-tachyon component.
continuous-integration/drone/push Build is failing
Details
continuous-integration/drone/push Build is failing
Details
This commit is contained in:
parent
670bee4a92
commit
994b67b4f2
|
|
@ -0,0 +1,4 @@
|
||||||
|
{:paths ["src" "resources"]
|
||||||
|
:deps {}
|
||||||
|
:aliases {:test {:extra-paths ["test"]
|
||||||
|
:extra-deps {}}}}
|
||||||
|
|
@ -0,0 +1,84 @@
|
||||||
|
(ns com.oly.static-sites.ui-tachyon.core
|
||||||
|
(:require [clojure.string :as str]))
|
||||||
|
|
||||||
|
(defn slugify [s]
|
||||||
|
(when s
|
||||||
|
(-> s str/lower-case (str/replace #"[^\w]+" "-") (str/replace #"^-+|-+$" ""))))
|
||||||
|
|
||||||
|
(defn navbar-link [{:keys [href title text key] :or {text nil title nil}}]
|
||||||
|
[:a.link.m-2 {:key (or key href) :class "hover:text-grey-200" :href href :title title} text])
|
||||||
|
|
||||||
|
(defn navbar [links]
|
||||||
|
[:header.text-white.bg-zinc-900.p-6.pl-12.w-full
|
||||||
|
(into [:nav.uppercase.font-medium.text-sm] (mapv navbar-link links))])
|
||||||
|
|
||||||
|
(defn footer []
|
||||||
|
[:footer.bg-zinc-800.text-slate-400.p-8.m-auto.w-full
|
||||||
|
[:div.m-auto {:class "w-4/5"}
|
||||||
|
[:a.hover:text-slate-200
|
||||||
|
{:target "_blank" :href "https://matrix.to/#/@oly:matrix.org"}
|
||||||
|
"Contact me"]]])
|
||||||
|
|
||||||
|
(defn article-card [{:keys [title description img-src]}]
|
||||||
|
[:article.bt.bb.b--black-10.border-b-2
|
||||||
|
[:a {:href "#"}
|
||||||
|
[:div.flex.flex-column.flex-row-ns.p-4
|
||||||
|
(when img-src
|
||||||
|
[:div.flex-none.w-32
|
||||||
|
[:img.w-32.block {:src img-src :alt title}]])
|
||||||
|
[:div.ml-4.flex-grow
|
||||||
|
[:h1.text-2xl title]
|
||||||
|
[:p description]]]]])
|
||||||
|
|
||||||
|
(defn articles-list [{:keys [title articles]}]
|
||||||
|
(into [:section.mw7.center.avenir
|
||||||
|
[:h2.text-4xl.mt-4.mb-4 title]]
|
||||||
|
(mapv article-card articles)))
|
||||||
|
|
||||||
|
(defn grouped-articles-list [{:keys [title groups]}]
|
||||||
|
(into [:section.mw7.center.avenir
|
||||||
|
[:h2.text-4xl.mt-4.mb-4 title]]
|
||||||
|
(mapcat (fn [{:keys [title articles]}]
|
||||||
|
(cons [:h3.text-2xl.mt-8.mb-2.font-semibold title]
|
||||||
|
(map article-card articles)))
|
||||||
|
groups)))
|
||||||
|
|
||||||
|
(defn notification []
|
||||||
|
[:div.fixed.p-5.top-20.right-0.border-2.border-sky-400.bg-white.opacity-100
|
||||||
|
"Copied to clipboard"])
|
||||||
|
|
||||||
|
(defn header-with-link [text level]
|
||||||
|
(let [tag (case level 1 :h1 2 :h2 3 :h3)
|
||||||
|
class (case level
|
||||||
|
1 "text-2xl fw6 lh-title mt-0 mb-2"
|
||||||
|
2 "text-xl fw6 lh-title mt-0 mb-2"
|
||||||
|
"text-base fw6 lh-title mt-0 mb-2")]
|
||||||
|
[tag {:id (slugify text) :class class}
|
||||||
|
[:i.fa-solid.fa-link.mr-2]
|
||||||
|
text]))
|
||||||
|
|
||||||
|
(defn full-page []
|
||||||
|
[:div
|
||||||
|
(navbar [{:href "/" :text "Home"}
|
||||||
|
{:href "/dialects" :text "Dialects"}
|
||||||
|
{:href "/dsl" :text "DSLs"}
|
||||||
|
{:href "/examples" :text "Examples"}
|
||||||
|
{:href "/about" :text "About"}])
|
||||||
|
[:main.m-auto {:class "w-3/5"}
|
||||||
|
(header-with-link "Clojure Demos Overview" 1)
|
||||||
|
(articles-list
|
||||||
|
{:title "Clojure Demos"
|
||||||
|
:articles [{:title "Clojure Basics"
|
||||||
|
:description "Getting started with clojure syntax datatype's sequences conditions"
|
||||||
|
:img-src "https://clojure.org/images/clojure-logo-120b.png"}
|
||||||
|
{:title "Reagent Demo"
|
||||||
|
:description "React application using reagent"
|
||||||
|
:img-src "https://raw.githubusercontent.com/reagent-project/reagent/master/logo/logo-text.png"}
|
||||||
|
{:title "Honey SQL Demo"
|
||||||
|
:description "Build SQL queries with Clojure data structures"
|
||||||
|
:img-src "https://miro.medium.com/max/1400/1*CEYFj5R57UFyCXts2nsBqA.png"}]})
|
||||||
|
(header-with-link "Interactive Examples" 2)
|
||||||
|
[:p.mb-2 "The code in these examples is evaluated when modified, you can highlight a partial expression to evaluate the selection."]
|
||||||
|
(header-with-link "Getting Started" 3)
|
||||||
|
[:p.mb-2 "Clojure is a modern, functional, and dynamic dialect of the Lisp programming language on the Java platform."]]
|
||||||
|
(footer)])
|
||||||
|
|
@ -0,0 +1,32 @@
|
||||||
|
(ns com.oly.static-sites.ui-tachyon.interface
|
||||||
|
(:require [com.oly.static-sites.ui-tachyon.core :as core]))
|
||||||
|
|
||||||
|
(defn slugify [s]
|
||||||
|
(core/slugify s))
|
||||||
|
|
||||||
|
(defn navbar-link [opts]
|
||||||
|
(core/navbar-link opts))
|
||||||
|
|
||||||
|
(defn navbar [links]
|
||||||
|
(core/navbar links))
|
||||||
|
|
||||||
|
(defn footer []
|
||||||
|
(core/footer))
|
||||||
|
|
||||||
|
(defn article-card [opts]
|
||||||
|
(core/article-card opts))
|
||||||
|
|
||||||
|
(defn articles-list [opts]
|
||||||
|
(core/articles-list opts))
|
||||||
|
|
||||||
|
(defn grouped-articles-list [opts]
|
||||||
|
(core/grouped-articles-list opts))
|
||||||
|
|
||||||
|
(defn notification []
|
||||||
|
(core/notification))
|
||||||
|
|
||||||
|
(defn header-with-link [text level]
|
||||||
|
(core/header-with-link text level))
|
||||||
|
|
||||||
|
(defn full-page []
|
||||||
|
(core/full-page))
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
(ns com.oly.static-sites.ui-tachyon.interface-test
|
||||||
|
(:require [clojure.test :refer :all]))
|
||||||
|
|
||||||
|
(deftest component-exists
|
||||||
|
(is (true? true)))
|
||||||
Loading…
Reference in New Issue