mourningdove/styles/tectonic/layout.s2

919 lines
25 KiB
Text
Raw Permalink Normal View History

2026-05-24 01:03:05 +00:00
layerinfo type = "layout";
layerinfo name = "Tectonic";
layerinfo redist_uniq = "tectonic/layout";
layerinfo author_name = "momijizkamori";
layerinfo lang = "en";
set layout_authors = [ { "name" => "daemon @ LJ"}, { "name" => "momijizukamori", "type" => "user" } ];
##===============================
## Layout
##===============================
set comment_management_links = "text";
set entry_management_links = "text";
set layout_type = "one-column-split";
set userpics_position = "left";
set entry_metadata_position = "bottom";
##===============================
## Fonts
##===============================
set font_base = "'Franklin Gothic Book', 'Arial Narrow', Arial";
set font_fallback = "sans-serif";
set font_base_size = "1";
set font_base_units = "em";
set font_journal_title = "'Franklin Gothic Book', 'Arial Narrow', Arial";
set font_journal_title_size = "1.5";
set font_journal_title_units = "em";
set font_journal_subtitle = "'Franklin Gothic Book', Arial Narrow, Arial";
set font_journal_subtitle_size = "1.1";
set font_journal_subtitle_units = "em";
set font_entry_title = "'Franklin Gothic Book', 'Arial Narrow', Arial";
set font_entry_title_size = "1.1";
set font_entry_title_units = "em";
set font_comment_title_size = "1.1";
set font_comment_title_units = "em";
set font_module_heading = "'Franklin Gothic Book', 'Arial Narrow', Arial";
set font_module_heading_size = "1.1";
set font_module_heading_units = "em";
##===============================
## Presentation
##===============================
propgroup presentation_child {
property string modules_per_row {
des = "Modules per row in one-column mode:";
values = "32%|3|24%|4|19%|5";
}
}
set modules_per_row = "24%";
##===============================
## Colors
##===============================
propgroup colors_child {
# Used instead of color_header_link:
property Color color_header_links_background { des = "Page header link background color"; }
property Color color_header_links { des = "Page header link color"; }
property Color color_header_links_active { des = "Page header link active color"; }
property Color color_header_links_hover { des = "Page header link hover color"; }
property Color color_header_links_visited { des = "Page header link visited color"; }
property Color color_header_links_border { des = "Page header link border color"; }
property Color color_header_links_border_hover { des = "Page header link hover border color"; }
property Color color_module_list_border { des = "Module list items border color"; }
property Color color_module_list_background_hover { des = "Module list items hover background color"; }
property Color color_module_calendar_background { des = "Calendar module background color"; }
property Color color_module_calendar_text { des = "Calendar module text color"; }
property Color color_module_calendar_link { des = "Calendar module link color"; }
property Color color_module_calendar_link_hover { des = "Calendar module link hover color"; }
property Color color_module_calendar_link_active { des = "Calendar module link active color"; }
property Color color_module_calendar_link_visited { des = "Calendar module link visited color"; }
property Color color_calendar_background { des = "Archive calendar background color"; }
property Color color_calendar_text { des = "Archive calendar text color"; }
property Color color_calendar_link { des = "Archive calendar link color"; }
property Color color_calendar_link_hover { des = "Archive calendar link hover color"; }
property Color color_calendar_link_active { des = "Archive calendar link active color"; }
property Color color_calendar_link_visited { des = "Archive calendar link visited color"; }
property Color color_entry_footer_background { des = "Entry footer background color"; }
property Color color_entry_interaction_links_background { des = "Entry interaction links background color"; }
property Color color_entry_interaction_links_background_hover { des = "Entry interaction links hover background color"; }
property Color color_entry_interaction_links_background_active { des = "Entry interaction links active background color"; }
property Color color_entry_interaction_links_background_visited { des = "Entry interaction links visited background color"; }
property Color color_userpic_border { des = "User icon border color"; }
}
##===============================
## Navigation Module
##===============================
property string module_navlinks_section_override {
values = "none|(none)|header|Header|one|Main Module Section|two|Secondary Module Section";
grouped = 1;
}
set grouped_property_override = { "module_navlinks_section" => "module_navlinks_section_override" };
set module_navlinks_section = "header";
##===============================
##Layout
##===============================
# Give a title to the navlinks module
function print_module_navlinks() {
var Page p = get_page();
var string title = "Navigation";
open_module("navlinks", "$title", "");
var string{}[] links = [];
foreach var string k ($p.views_order) {
var string class = "list-item-$k";
var string css = """ class="$k" """;
if ($p.view == $k) { $css = """ class="current $k" """; }
$links[size $links] = { "class" => $class, "item" => """<a href="$p.view_url{$k}"$css>"""+lang_viewname($k)+"""</a>""" };
}
print_module_list($links);
close_module();
}
function Page::print() {
"""<!DOCTYPE html>\n<html lang="en">\n<head profile="http://www.w3.org/2006/03/hcard http://purl.org/uF/hAtom/0.1/ http://gmpg.org/xfn/11">\n""";
$this->print_meta_tags();
$this->print_head();
$this->print_stylesheets();
$this->print_head_title();
"""</head>""";
$this->print_wrapper_start();
$this->print_control_strip();
"""
<div id="canvas">
<div class="inner">
<div id="header">
<div class="inner">
""";
$this->print_header();
$this->print_module_section("header");
"""
</div><!-- end header>inner -->
</div><!-- end header -->
<div id="content">
<div class="inner">
""";
if ($*layout_type == "one-column-split") {
"""
<div id="secondary"><div class="inner">
""";
$this->print_module_section("one");
"""
</div></div><!-- end secondary and secondary>inner -->
""";
}
"""
<div id="primary"><div class="inner">
""";
$this->print_body();
"""
</div></div><!-- end primary and primary>inner -->
""";
if ($*layout_type != "one-column-split") {
"""
<div id="secondary"><div class="inner">
""";
$this->print_module_section("one");
"""
</div></div><!-- end secondary and secondary>inner -->
""";
}
"""
<div id="invisible-separator" style="float: left; width: 1px;"></div> <!-- this is a hack for IE7 + two-columns-right -->
<div id="tertiary"><div class="inner">
""";
$this->print_module_section("two");
"""
</div></div><!-- end tertiary and tertiary>inner -->
<div id="content-footer"></div>
</div><!-- end content>inner -->
</div> <!-- end content -->
</div> <!-- end canvas>inner -->
""";
"""
<div id="footer">
<div class="inner">
""";
print safe """
<div class="page-top"><a href="#">$*text_page_top</a></div>
</div><!-- end footer>inner -->
</div><!-- end footer -->
</div> <!-- end canvas -->
""";
$this->print_wrapper_end();
"""</html>""";
}
function Page::print_entry(Entry e)
"This re-sorts the header so time and metatype are printed before subject, and tags are printed as part of the main entry contents instead of as part of the footer."
{
## For most styles, this will be overridden by FriendsPage::print_entry and such.
$e->print_wrapper_start();
"""<div class="header">\n""";
"""<div class="inner">\n""";
$e->print_time();
$e->print_metatypes();
$e->print_subject();
"""</div>\n""";
"""</div>\n""";
"""<div>\n""";
"""<div class="contents">\n""";
"""<div class="inner">\n""";
$e->print_userpic();
$e->print_poster();
if ($*entry_metadata_position == "top") { $e->print_metadata(); }
$e->print_text();
if ($*entry_metadata_position == "bottom") { $e->print_metadata(); }
$e->print_tags();
"""</div>\n""";
"""</div>\n""";
"""</div>\n""";
"""<div class="footer">\n""";
"""<div class="inner">\n""";
$this->print_entry_footer($e);
"</div>\n</div>\n";
$e->print_wrapper_end();
}
function EntryPage::print_comment (Comment c) {
# re-sorts time to print before subject and metatypes
$c->print_wrapper_start();
"""<div class="header">\n""";
"""<div class="inner">\n""";
$c->print_time();
$c->print_subject();
$c->print_metatypes();
if ( $c.comment_posted ) {
print safe "<div class='comment-posted'>$*text_comment_posted</div>";
}
"""</div>\n""";
"""</div>\n""";
"""<div class="contents">\n""";
"""<div class="inner">\n""";
$c->print_userpic();
$c->print_poster();
$c->print_metadata();
$c->print_text();
"""</div>\n""";
"""</div>\n""";
"""<div class="footer">\n""";
"""<div class="inner">\n""";
if ($this.multiform_on) {
"""<span class="multiform-checkbox">""";
print safe " <label for='ljcomsel_$c.talkid'>$*text_multiform_check</label> ";
$c->print_multiform_check();
"</span>";
}
$c->print_management_links();
$c->print_interaction_links();
$c->print_reply_container();
"</div>\n</div>\n";
$c->print_wrapper_end();
}
function print_stylesheet () {
var string medium_media_query = generate_medium_media_query();
var string header_colors = generate_color_css($*color_page_title, $*color_header_background, $*color_entry_border);
var string entry_colors = generate_color_css($*color_entry_text, $*color_entry_background, $*color_entry_border);
var string entry_title_colors = generate_color_css($*color_entry_title, $*color_entry_title_background, new Color);
var string entry_title_font = generate_font_css($*font_entry_title, $*font_base, $*font_fallback, $*font_entry_title_size, $*font_entry_title_units);
var string entry_margin = "";
if ( $*entry_userpic_style == "" ) { $entry_margin = "145px"; }
elseif ( $*entry_userpic_style == "small" ) { $entry_margin = "120px"; }
elseif ( $*entry_userpic_style == "smaller" ) { $entry_margin = "95px"; }
var string comment_margin = "";
if ( $*comment_userpic_style == "" ) { $comment_margin = "145px"; }
elseif ( $*comment_userpic_style == "small" ) {$comment_margin = "120px";}
elseif ( $*comment_userpic_style == "smaller" ) {$comment_margin = "95px";}
var string userpic_css = "";
if ($*userpics_position == "left") {
$userpic_css = """
.has-userpic .entry .userpic {
float: left;
margin: 1em;
}
.has-userpic .comment .userpic {
float: left;
margin: 1.5em 1em 1em;
}
.has-userpic .entry-content, .has-userpic .metadata, .has-userpic .tag{
margin-left: $entry_margin;}
.has-userpic .comment-content {margin-left: $comment_margin;}
""";
}
elseif ($*userpics_position == "right") {
$userpic_css = """
.has-userpic .entry .userpic {
float: right;
margin:1em;
}
.has-userpic .comment .userpic {
float: right;
margin: 1.5em 1em 1em;
}
.has-userpic .entry-content, .has-userpic .metadata, .has-userpic .tag{
margin-right: $entry_margin;}
.has-userpic .poster {padding-left: 1em;}
.has-userpic .comment-content {margin-right: $comment_margin;}
""";
}
var string navlinks_css = "";
if ($*module_navlinks_section == "header") {
$navlinks_css = """
.module-navlinks.module {
background: none;
border: none;
margin: 0;
width: 100%;
margin: 0;
text-align: left;
}
@media $medium_media_query {
.two-columns-left .module-navlinks,
.three-columns-left .module-navlinks { text-align:right; margin:0 0 0 -5px;}
.three-columns-sides .module-navlinks {text-align:center;}
}
.module-navlinks ul {
margin: 0;
padding: 0;
display: inline;
}
.module-navlinks.module li {
background: $*color_header_links_background;
font-size:smaller;
padding: 0.5em ;
display: inline;
margin: 0 -5px 0 0;
border-bottom: 5px solid $*color_header_links_border;}
.module-navlinks.module li:hover {
border-color:$*color_header_links_border_hover;
background: $*color_header_links_background;}
.module-navlinks .module-header {display:none;}
.module-navlinks a {font-size: smaller; color: $*color_header_links}
.module-navlinks a:visited {font-size: smaller; color: $*color_header_links_visited}
.module-navlinks a:hover {color: $*color_header_links_hover; text-decoration:none;}
.module-navlinks a:active {font-size: smaller; color: $*color_header_links_active}
""";
}
"""
body {
margin: 1em 0 0;
}
#canvas {
width: 92%;
margin: 0 auto;
}
#primary > .inner:first-child {
padding: 0;
margin: 0 .25em 0;
}
#secondary > .inner:first-child,
#tertiary > .inner:first-child {
padding: 0;
}
@media $medium_media_query {
.column-left #primary > .inner:first-child {
padding-left: 1em;
}
.column-right #primary > .inner:first-child {
padding-right: 1em;
}
.three-columns-left #secondary > .inner:first-child,
.three-columns-right #secondary > .inner:first-child {
padding-right: .5em;
}
.three-columns-left #tertiary > .inner:first-child,
.three-columns-right #tertiary > .inner:first-child {
padding-left: .5em;
}
}
a {
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
p {
margin: 1em 0;
}
blockquote {
$entry_colors
margin: 2em 2em 2em 5em;
padding: .7em;
width: 70%;
}
ul {
list-style: square inside;
margin: .5em 1em;
}
ol {
list-style: decimal inside;
margin: .5em 1.5em;
}
/*--- Titles ---*/
#header {
margin: 0 .25em .5em;
padding: 0;
display: flex;
flex-direction: column;
}
#header > .inner {
flex-grow: 1;
display: flex;
flex-direction: column;
width: 100%;
bottom: 0;
}
#pagetitle {
flex-grow: 1;
}
h1#title,
h2#pagetitle,
h2#subtitle {
text-align: right;
text-transform: uppercase;
}
h1#title a {
color: $*color_page_title;
}
/*--- Journal Navigation ---*/
.navigation {
$entry_colors
border:0;
border-top: 30px solid $*color_entry_border;
font-weight: bold;
padding: .25em;
margin: 0 0 1em 0;
}
.navigation.empty {
display: none;
}
.page-read .noentries {
font-weight: normal;
}
li.page-separator {
display: none;
}
/*--- Sidebar aka Modules ---*/
#secondary, #tertiary { text-align: center; }
.module {
text-align:left;
}
@media $medium_media_query {
.one-column .module {
display: inline-block;
vertical-align: top;
width: $*modules_per_row;
}
}
#secondary > .inner:first-child, #tertiary > .inner:first-child {
border-top: 30px solid $*color_module_border;
margin: 0 .25em 1em;
padding: .5em;
background: $*color_module_background;
}
.module {border: 0;}
h2.module-header {
font-weight: bold;
margin: .5em 0;
padding: .5em;
}
h2.module-header a {
color: $*color_module_title;
}
.module-content .userpic {
text-align: center;
}
.module-content .userpic img {
border: 10px solid $*color_module_border;
}
.journal-name {
text-transform: uppercase;
margin: .5em 0 0;
text-align: center;
}
.journal-website-name {
text-transform: uppercase;
text-align: center;
}
ul.userlite-interaction-links.icon-links {
margin: .5em 0 0;
text-align: center;
}
ul.userlite-interaction-links.icon-links li {
margin: 0 auto;
text-align: center;
}
ul.userlite-interaction-links.text-links li {
padding: 0 0 0 .5em;
}
.module-content ul {margin: -.5em 0 0;}
ul.module-list {
list-style: none;
}
ul.module-list li {
margin:0;
padding: .25em;
border-bottom: 1px solid $*color_module_list_border;
}
ul.module-list li:hover {background: $*color_module_list_background_hover;}
.module-tags_multilevel li li {border:0; padding-bottom: 0px; padding-left: .5em;}
.module-navlinks, .module-navlinks a {
color: $*color_module_title;
font-family: $*font_module_heading;
font-weight: bold;
}
.module-navlinks ul.module-list {
color: $*color_module_title;
text-transform: uppercase;
}
.manage-link {
margin: .5em 0 0;
text-align: right;
text-transform: uppercase;
}
.module-calendar table {font-size:smaller; margin:0 auto;}
.module-calendar th {
font-weight: bold;
margin: 0 .2em;
padding: .3em;
text-transform: uppercase;
background: $*color_module_calendar_background;
text-align:center;
color:$*color_module_calendar_text;
}
.module-calendar td {
background: $*color_module_calendar_background;
margin: 0 .2em;
padding: .25em .5em .5em .25em;
text-transform: uppercase;
text-align:center;
color:$*color_module_calendar_text;
}
.module-calendar td a {color:$*color_module_calendar_link;}
.module-calendar td a:hover {color:$*color_module_calendar_link_hover;}
.module-calendar td a:visited {color:$*color_module_calendar_link_visited;}
.module-calendar td a:active {color:$*color_module_calendar_link_active;}
$navlinks_css
/*--- Entries ---*/
.entry, .comment, #postform{
border: 0;
border-top: 30px solid $*color_entry_border;
margin: 0 0 1em 0;
}
.entry-content, .comment-content {
margin: 1em;
min-height: 130px; /*prevents metadata shifting on short entries*/
}
.entry .header {
color: $*color_entry_title;
background: $*color_entry_title_background;
margin: 0 0 .5em;
padding: .5em;
}
.entry h3.entry-title {
text-transform: lowercase;
font-weight: bold;
padding:.5em ;
margin:0;
background: transparent;
display:inline-block;
}
.datetime {
display: block;
font-size: 0.75em;
margin: 0 0 -.75em;
text-transform: uppercase;
font-style: italic;
}
.datetime a {color: $*color_entry_title;}
.poster {
display: inline-block;
margin: 1em 0 0;
}
.entry .userpic img, .comment .userpic img {
border: 10px solid $*color_userpic_border;
}
.entry .footer, .comment .footer {
background: $*color_entry_footer_background;
clear: both;
text-align: right;
padding: .25em 0;
margin-top: 1em;
}
ul.entry-interaction-links, ul.entry-management-links,
ul.comment-interaction-links, ul.comment-management-links {
margin:0;
padding: 0;
display:inline;
}
ul.text-links li {background: $*color_entry_interaction_links_background; padding: 0.25em;}
.text-links a, #comments .text-links a {font-size: smaller; color: $*color_entry_interaction_links;}
ul.text-links li:hover {background: $*color_entry_interaction_links_background_hover; padding: 0.25em;}
.text-links li:hover a, #comments .text-links li:hover a {color: $*color_entry_interaction_links_hover; text-decoration: none;}
ul.text-links li:active {background: $*color_entry_interaction_links_background_active; padding: 0.25em;}
.text-links li:active a, #comments .text-links li:active a {color: $*color_entry_interaction_links_active; text-decoration: none;}
ul.text-links li:visited {background: $*color_entry_interaction_links_background_hover; padding: 0.25em;}
.text-links li:visited a, #comments .text-links li:visited a {color: $*color_entry_interaction_links_hover; text-decoration: none;}
/*--- Comments ---*/
.comment, #qrform, #postform, .bottomcomment, .comment-pages { $entry_colors border: none }
.comment-pages {text-align:center; font-weight:bold; padding: .5em; margin-bottom: .5em;}
#qrform {border-top: .25em solid $*color_entry_footer_background;}
#comments h4.comment-title, #comments h4.comment-title a {
color: $*color_comment_title;
text-transform: lowercase;
font-weight: bold;
padding:.5em ;
margin:0;
background:transparent;
}
.comment .header {
color: $*color_comment_title;
background: $*color_comment_title_background;
margin: 0 0 .5em 0;
padding: .5em;
}
textarea.textbox {
border: 1px solid;
width: 80% !important;
}
#qrform table {
border: 0 !important;
}
.comment-wrapper {
margin: 0;
padding: 0;
}
.no-userpic .comment-poster { padding-left: 1em;}
table.talkform {
margin: 0 0 .5em 0;
padding: .5em;
}
.bottomcomment {
margin: .5em 0;
padding: .25em 0;
text-align:center;
}
.bottomcomment label {display:block; padding-top: .5em;}
/*--- Currents and Tags AKA Metadata ---*/
.metadata, .tag {
font-size: smaller;
padding-left: 1.5em;
}
.metadata ul {
margin: 0;
padding: 0;
}
.metadata-item-location, .metadata-item-music, .metadata-item-mood, .tag ul {
text-align: right;
}
.tag ul li {
font-weight: normal;
margin: .5em .2em 0 0;
text-align: right;
}
/*---Unified Secondary Page Styling---*/
#archive-year .header h3, .tags-container .header h2, .icons-container .header h2 {
$entry_title_font
$entry_title_colors;
text-transform: lowercase;
padding: .5em;
}
.tags-container a, .icons-container a, #archive-year a, #comments a, #archive-month a, .navigation a { color:$*color_entry_link; }
.tags-container a:active, .icons-container a:active, #archive-year a:active, #comments a:active, #archive-month a:active, .navigation:active { color:$*color_entry_link_active; }
.tags-container a:hover, .icons-container a:hover, #archive-year a:hover, #comments a:hover, #archive-month a:hover, .navigation a:hover { color:$*color_entry_link_hover; }
.tags-container a:visited, .icons-container a:visited, #archive-year a:visited, #comments a:visited, #archive-month a:visited, .navigation a:visited { color:$*color_entry_link_visited; }
/*--- Archive Page ---*/
.month {
$entry_colors
border: 0;
border-top: 30px solid $*color_entry_border;
margin: 0 0 1em 0;
padding: 1em;
}
.month table {
margin: auto;
border:0;
}
.month caption {
display: none;
}
.month th {
font-weight: bold;
text-align: center;
text-transform: lowercase;
}
table.month th, table.month td, table.month td.day-empty {border: 0.2em solid $*color_entry_background;}
.month td.day {
background: $*color_calendar_background;
color: $*color_calendar_text;
font-weight: normal;
padding: .5em;
text-align: left;
vertical-align:top;
width: 4em;
}
.month td.day-has-entries p {
padding: 0 0 0 .5em;
font-weight:bold;
}
.month td.day-has-entries a {color:$*color_calendar_link;}
.month td.day-has-entries a:hover {color:$*color_calendar_link_hover;}
.month td.day-has-entries a:active {color:$*color_calendar_link_active;}
.month td.day-has-entries a:visited {color:$*color_calendar_link_visited;}
.month dl, .month dt, .month dd {
margin: 0;
padding: 0;
}
/*--- Tags Page ---*/
.page-tags .tags-container {
$entry_colors
border:0;
border-top: 30px solid $*color_entry_border;
margin: 0 0 .5em 0;
padding: 1em;
}
.page-tags .tags-container ul {
margin-left: .5em;
padding-left: .5em;
}
/*--- Icons Page ---*/
.icons-container {
$entry_colors
border:0;
border-top: 30px solid $*color_entry_border;
margin: 0 0 .5em;
padding: 1em;
}
div.icons-container div.icon:nth-of-type(2n) {
clear: both;
}
.icons-container .icon {
float: left;
margin-bottom: 15px;
min-width: 350px;
vertical-align: bottom;
width: 50%;
display:table;
}
.icon-image {
display: inline;
float: left;
margin-right: 1em;
min-width: 100px;
margin-top: 0;
}
.icon-info {
overflow: auto;
vertical-align: bottom;
word-wrap: break-word;
display:table-cell;
width:100%;
}
.icon-info .label,
.icon-info span {
font-weight: bold;
}
.icons-container .inner .footer, .icon-pages {
clear: both;
text-align: center;
}
$userpic_css
""";
}