Mercurial Hosting > linkmystyle
diff src/theme.css.luan @ 0:8f4df159f06b
start public repo
author | Franklin Schmidt <fschmidt@gmail.com> |
---|---|
date | Fri, 11 Jul 2025 20:57:49 -0600 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/theme.css.luan Fri Jul 11 20:57:49 2025 -0600 @@ -0,0 +1,138 @@ +local Luan = require "luan:Luan.luan" +local error = Luan.error +local parse = Luan.parse or error() +local Io = require "luan:Io.luan" +local Http = require "luan:http/Http.luan" +local format_date = Http.format_date or error() +local User = require "site:/lib/User.luan" +local get_background_img_url = User.get_background_img_url or error() + + +return function() + local user = Http.request.parameters.user or error() + user = User.get_by_id(user) or error() + local data = user.theme_data or error() + data = parse(data) + local date = user.theme_date or error() + Http.response.headers["Last-Modified"] = format_date(date) + Io.stdout = Http.response.text_writer() + local font_url = data.font_url + if font_url ~= nil then +%> +@import "<%=font_url%>"; + +<% + end + local background_color = data.background_color + if background_color ~= nil then +%> +body[colored] { + background-color: <%=background_color%>; +} +<% + end + local background_img_url = get_background_img_url(data) + if background_img_url ~= nil then +%> +div[pub_background_img] { + z-index: -1; + position: fixed; + top: 0; + right: 0; + bottom: 0; + left: 0; + background-size: cover; + background-repeat: no-repeat; + background-position: center; + background-image: url(<%=background_img_url%>); +} +<% + end + local link_background_color = data.link_background_color + if link_background_color ~= nil then +%> +a[link], +span[select] select { + background-color: <%=link_background_color%>; +} +<% + end + local link_hover_background_color = data.link_hover_background_color + if link_hover_background_color ~= nil then +%> +a[link]:hover, +span[select] select:hover { + background-color: <%=link_hover_background_color%>; +} +<% + end + local link_text_color = data.link_text_color + if link_text_color ~= nil then +%> +a[link], +span[select] { + color: <%=link_text_color%>; +} +<% + end + local title_color = data.title_color + if title_color ~= nil then +%> +html[main] h1 { + color: <%=title_color%>; +} +html[main] div[home] a { + color: <%=title_color%>; +} +<% + end + local bio_color = data.bio_color + if bio_color ~= nil then +%> +html[main] div[bio] { + color: <%=bio_color%>; +} +<% + end + if data.icon_color == "white" then +%> +html[pic] div[hashtags] a, +html[pic] div[back] img, +html[main] div[icons] img { + filter: invert(100%); +} +<% + end + local link_border_radius = data.link_border_radius + if link_border_radius ~= nil then +%> +a[link] { + border-radius: <%=link_border_radius%>; +} +<% + end + local link_border_color = data.link_border_color + if link_border_color ~= nil then +%> +a[link] { + border: 2px solid <%=link_border_color%>; +} +<% + end + local link_shadow = data.link_shadow + if link_shadow ~= nil then +%> +a[link] { + box-shadow: <%=link_shadow%> <%= data.link_shadow_color or "" %>; +} +<% + end + local font = data.font + if font ~= nil then +%> +[pub_content] { + font-family: <%=font%>; +} +<% + end +end