view src/theme.css.luan @ 2:e32e4120dc70

minor
author Franklin Schmidt <fschmidt@gmail.com>
date Fri, 11 Jul 2025 21:23:39 -0600
parents 8f4df159f06b
children
line wrap: on
line source

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