summaryrefslogtreecommitdiff
path: root/pages/index.fnl
diff options
context:
space:
mode:
Diffstat (limited to 'pages/index.fnl')
-rw-r--r--pages/index.fnl130
1 files changed, 50 insertions, 80 deletions
diff --git a/pages/index.fnl b/pages/index.fnl
index 4d8af80..f0ac111 100644
--- a/pages/index.fnl
+++ b/pages/index.fnl
@@ -1,101 +1,71 @@
+(import-macros {:compile-html <>} :macros)
+(local lib (require :lib))
(local templates (require :templates))
-(local html (require :vendor.html))
-
-(fn improve-typography [text]
- (var result
- (-> text
- (string.gsub "(\n|\r)" " ")
- (string.gsub "%s+" " ")))
- (let [nbsp-replaces ["на" "На" "и" "И" "в" "В" "о" "О" "с" "С" "со" "Со" "до"
- "До" "для" "Для" "а" "А" "но" "Но" "на" "На" "я" "Я" "мы"
- "Мы" "над" "Над" "под" "Под" "г." "Г." "ул." "Ул."
- "д." "Д." "%d+"]]
- (each [_ v (ipairs nbsp-replaces)]
- (set result
- (-> result
- (string.gsub (.. "(&nbsp;" v ") ") "%1&nbsp;")
- (string.gsub (.. "(%s" v ") ") " %1&nbsp;")
- (string.gsub (.. "^(" v ") ") "%1&nbsp;")))))
- result)
-
-(fn test-improve-typography []
- (assert (= (improve-typography "Я лежу на пляжу!")
- "Я&nbsp;лежу на&nbsp;пляжу!"))
- (assert (= (improve-typography "500 рублей мы сняли со счета!")
- "500&nbsp;рублей мы&nbsp;сняли со&nbsp;счета!"))
- (assert (= (improve-typography "500 рублей мы
- сняли со счета!")
- "500&nbsp;рублей мы&nbsp;сняли со&nbsp;счета!")))
(local texts {
:address
- (improve-typography
+ (lib.improve-typography
"г. Омск, ул. Пушкина, д. 133/9, этаж 2. Вход с крыльца Магнита, дверь
- слева, домофон 4")
+ слева, домофон 4. Дверь в офисе узнаете по нашему логотипу.")
:individual-ceremony
- (improve-typography
+ (lib.improve-typography
"Индивидуальная чайная церемония: мастер готовит для вас чай на ваш выбор.
О времени встречи договариваемся. Стоимость 1000 рублей с человека,
до 5 человек.")
:weekly-meetings
- (improve-typography
+ (lib.improve-typography
"Еженедельное мероприятие: каждую субботу в 15:00 мы собираемся и пьем
чай из нашей коллекции. Для посещения необходима запись в комментариях
- под соответствующим постом в нашей группе в телеграме. Стоимость 500
- рублей с человека.")
-})
+ под соответствующим постом в нашей группе. Стоимость 500 рублей
+ с человека.")})
(fn pick-gallery-photo [list]
(let [chosen (. list (math.random (# list)))]
- [:div {}
- [:a {:href (.. "static/" chosen.name ".webp") :target "_blank"}
- [:img {:src (.. "static/" chosen.name "-p.webp") :alt chosen.alt}]]]))
+ (<>
+ [:div {}
+ [:a {:href (.. "static/" chosen.name ".webp") :target "_blank"}
+ [:img {:src (.. "static/" chosen.name "-p.webp") :alt chosen.alt}]]])))
-(fn content []
- [[:div {:class "content"}
- [:article {:class "article"}
- [:img {:class "logo" :src "/static/logo.svg"
- :alt "Белая жаба в мультяшном стиле с чайником на голове"}]
- [:h1 {} [:NO-ESCAPE "Чайная комната «Белая&nbsp;жаба»"]]
- [:nav {}
- [:a {:href "https://t.me/whitetoadtea"} "телеграм"]
- [:span {} "~"]
- [:a {:href "https://vk.com/whitetoadtea"} "вконтакте"]]]
- [:article {:class "article"}
- [:h2 {} "Адрес"]
- [:p {} [:NO-ESCAPE texts.address]]]
- [:article {:class "article"}
- [:h2 {} "Форматы участия"]
- [:ol {}
- [:li {}
- [:NO-ESCAPE texts.individual-ceremony]
- [:div {:class "button-wrapper"}
- [:a {:href "https://t.me/whitetoadvlad" :class "button"} "Записаться"]]]
- [:li {}
- [:NO-ESCAPE texts.weekly-meetings]
- [:div {:class "button-wrapper"}
- [:a {:href "https://t.me/whitetoadtea" :class "button"} "Подписаться"]]]]]]
- [:div {:class "gallery"}
- (pick-gallery-photo [{:name "people" :alt "Люди в чайной"}
- {:name "gaiwan2" :alt "Близко сфотографированный чайный столик с пиалами и гайванью"}
- {:name "teapot2" :alt "Пиала и чайник на фоне гирлянды"}])
- (pick-gallery-photo [{:name "table" :alt "Сфотографированные сверху пиалы на японском столике"}])
- [:div {}
- [:video {:autoplay true :loop true :muted true}
- [:source {:src "static/boiling-p.webm" :type "video/webm"}]]]
- (pick-gallery-photo [{:name "gaiwan" :alt "Гайвань и ширма с гирляндами на фоне"}
- {:name "wall" :alt "Белая стена с веером и тенью окна"}
- {:name "teapot" :alt "Чайник в темноте на светлом фоне гирлянд"}
- {:name "teapot3" :alt "Чайник в руке на фоне растений"}])
- (pick-gallery-photo [{:name "rack" :alt "Стеллаж с чайной посудой"}
- {:name "flowers" :alt "Ваза с цветами рядом с чайным столиком"}])
- [:div {}
- [:video {:autoplay true :loop true :muted true}
- [:source {:src "static/gaiwan-p.webm" :type "video/webm"}]]]]])
+(fn content [authenticated?]
+ [(<>
+ [:div {:class "side mb-2"}
+ (templates.header "" authenticated?)
+ [:section {:class "mb-2"}
+ [:h2 {} "Адрес"]
+ [:p {} [:NO-ESCAPE texts.address]]]
+ [:section {}
+ [:h2 {} "Форматы участия"]
+ [:div {:class "mb-2"}
+ [:div {:class "mb-1"} [:NO-ESCAPE texts.individual-ceremony]]
+ [:div {}
+ [:a {:href "https://t.me/whitetoadvlad"} "Записаться ⟶"]]]
+ [:div {}
+ [:div {:class "mb-1"} [:NO-ESCAPE texts.weekly-meetings]]
+ [:div {}
+ [:a {:href "https://t.me/whitetoadtea"} "Подписаться ⟶"]]]]])
+ (<>
+ [:div {:class "content"}
+ [:div {:class "gallery"}
+ (pick-gallery-photo [{:name "people" :alt "Люди в чайной"}
+ {:name "gaiwan2" :alt "Близко сфотографированный чайный столик с пиалами и гайванью"}
+ {:name "teapot2" :alt "Пиала и чайник на фоне гирлянды"}])
+ (pick-gallery-photo [{:name "table" :alt "Сфотографированные сверху пиалы на японском столике"}])
+ [:div {}
+ [:video {:autoplay true :loop true :muted true}
+ [:source {:src "static/boiling-p.webm" :type "video/webm"}]]]
+ (pick-gallery-photo [{:name "gaiwan" :alt "Гайвань и ширма с гирляндами на фоне"}
+ {:name "wall" :alt "Белая стена с веером и тенью окна"}
+ {:name "teapot" :alt "Чайник в темноте на светлом фоне гирлянд"}
+ {:name "teapot3" :alt "Чайник в руке на фоне растений"}])
+ (pick-gallery-photo [{:name "rack" :alt "Стеллаж с чайной посудой"}
+ {:name "flowers" :alt "Ваза с цветами рядом с чайным столиком"}])
+ [:div {}
+ [:video {:autoplay true :loop true :muted true}
+ [:source {:src "static/gaiwan-p.webm" :type "video/webm"}]]]]])])
-(fn render [request]
- (values 200 {} (html.render (templates.base-template (content)) true)))
+(fn render [request _ authenticated?]
+ (values 200 {} (templates.base (content authenticated?))))
{: render}