All Downloads are FREE. Search and download functionalities are using the official Maven repository.

ossilphant_3.0.0.2.source-code.style-css-gen-untemplate.scala Maven / Gradle / Ivy

// DO NOT HAND EDIT -- Autogenerated from 'style.css.gen.untemplate' at 2023-09-25T05:41:50.536648Z
package com.mchange.fossilphant.theme.tower

import java.io.{Writer,StringWriter}
import scala.collection.*

import com.mchange.fossilphant.*



val Untemplate_style_css_gen = new untemplate.Untemplate[LocatedContext,Nothing]:
  val UntemplateFunction                    : untemplate.Untemplate[LocatedContext,Nothing] = this
  val UntemplateName                        : String = "style_css_gen"
  val UntemplatePackage                     : String = "com.mchange.fossilphant.theme.tower"
  val UntemplateInputName                   : String = "locatedContext"
  val UntemplateInputTypeDeclared           : String = "LocatedContext"
  val UntemplateInputTypeCanonical          : Option[String] = untemplate.Macro.nonEmptyStringOption( untemplate.Macro.recursiveCanonicalName[LocatedContext] )
  val UntemplateInputDefaultArgument        : Option[LocatedContext] = (None : Option[LocatedContext])
  val UntemplateOutputMetadataTypeDeclared  : String = "Nothing"
  val UntemplateOutputMetadataTypeCanonical : Option[String] = untemplate.Macro.nonEmptyStringOption( untemplate.Macro.recursiveCanonicalName[Nothing] )
  val UntemplateHeaderNote                  : String = ""

  val UntemplateAttributes : immutable.Map[String,Any] = immutable.Map.empty


  def apply(locatedContext : LocatedContext) : untemplate.Result[Nothing] =
    val writer             : StringWriter = new StringWriter(80200)
    val attrs              : immutable.Map[String,Any] = UntemplateAttributes
    var mbMetadata         : Option[Nothing] = None
    var outputTransformer  : Function1[untemplate.Result[Nothing],untemplate.Result[Nothing]] = identity

    val config = locatedContext.context.config
    val tc = config.themeConfig


      val block0 = new Function0[String]:
        def apply() : String =
          "\n@font-face {\n    font-family: 'Montserrat';\n    src: url('font/Montserrat/Montserrat-VariableFont_wght.ttf');\n}\n@font-face {\n    font-family: 'Montserrat-Italic';\n    src: url('font/Montserrat/Montserrat-Italic-VariableFont_wght.ttf');\n}\n\n:root {\n    --page-background-color:     " + ( tc.getOrElse( "page.background.color", "#D0D2D1" ) ) +
          ";\n    --post-background-color:     " + ( tc.getOrElse( "post.background.color", "#FFFFFF" ) ) +
          ";\n    --post-text-color:           " + ( tc.getOrElse( "post.text.color", "black" ) ) +
          ";\n    --outer-text-color:          " + ( tc.getOrElse( "outer.text.color", "black" ) ) +
          ";\n    --outer-link-color:          " + ( tc.getOrElse( "outer.link.color", "#0000EE" ) ) +
          ";\n    --outer-link-color-visited:  " + ( tc.getOrElse( "outer.link.color.visited", "#551A8B" ) ) +
          ";\n    --post-link-color:           " + ( tc.getOrElse( "post.link.color", "#0000EE" ) ) +
          ";\n    --post-link-color-visited:   " + ( tc.getOrElse( "post.link.color.visited", "#551A8B" ) ) +
          ";\n    --post-border-color:         " + ( tc.getOrElse( "post.border.color", "gray" ) ) +
          ";\n    --thread-border-color:       " + ( tc.getOrElse( "thread.border.color", "black" ) ) +
          ";\n\n    --avatar-slot: 60px;\n    --avatar-padding: 5px;\n    --thread-border: 3px solid var( --thread-border-color );\n    --outer-text-right-margin: 1rem;\n    font-size: 11pt;\n}\n*, *::before, *::after {\n  box-sizing: border-box;\n}\nbody {\n    display:               grid;\n    grid-template-columns: 1fr 600px 1fr;\n    grid-template-rows:    auto auto auto;\n    background-color: var( --page-background-color );\n    font-family: 'Montserrat', sans-serif;\n    font-variation-settings: \"wght\" 400;\n    color: var( --outer-text-color );\n    border: 0;\n    margin: 0;\n    padding: 0;\n    gap: 0 0;\n    overflow-x: clip;\n}\na:link {\n  color: var( --outer-link-color );\n  text-decoration: none;\n}\na:link:visited {\n  color: var( --outer-link-color-visited );\n  text-decoration: none;\n}\na:link:hover {\n  color: var( --outer-link-color );\n  text-decoration: underline;\n}\nem, i {\n    font-family: 'Montserrat-Italic', sans-serif;\n}\ndiv {\n  margin: 0;\n  padding: 0;\n  /* border: 1px solid black; */\n}\n#header {\n  grid-column: 1 / span 3;\n  grid-row: 1;\n}\n#left-sidebar {\n  grid-column: 1;\n  grid-row: 2;\n}\n#main-content {\n  grid-column: 2;\n  grid-row: 2;\n}\n#right-sidebar {\n  grid-column: 3;\n  grid-row: 2;\n}\n#footer {\n  grid-column: 1 / span 3;\n  grid-row: 3;\n}\n#main-title {\n  font-size: 150%;\n  font-variation-settings: \"wght\" 600;\n  text-align: center;\n  margin-bottom: 0.5rem;\n  margin-top: 0.75rem;\n}\n#tagline {\n  font-family: 'Montserrat-Italic', sans-serif;\n  font-variation-settings: \"wght\" 500;\n  font-size: 110%;\n  padding-left: 3rem;\n  padding-right: 3rem;\n  padding-bottom: 0.75rem;\n  margin-bottom: 0.75rem;\n  text-align: center;\n  color: #0bb;\n  /* border-bottom: 2px solid black; */\n}\n.post {\n  padding: 0.5em;\n  color: var( --post-text-color );\n  background-color: var( --post-background-color );\n  border: 1px solid var( --post-border-color );\n  margin-bottom: 0.25rem;\n  position: relative; /* so we can use absolute positioning within it */\n  overflow-x: clip;\n}\n.post a:link {\n  color: var( --post-link-color );\n  text-decoration: none;\n}\n.post a:link:visited {\n  color: var( --post-link-color-visited );\n  text-decoration: none;\n}\n.post a:link:hover {\n  color: var( --post-link-color );\n  text-decoration: underline;\n}\n.avatar-names {\n  display:               grid;\n  grid-template-columns: var( --avatar-slot ) 1fr;\n  grid-template-rows: 1fr 1fr;\n  width: 100%;\n  height: var( --avatar-slot );\n}\n.avatar-names .avatar img {\n    width: var( --avatar-slot );\n    height: var( --avatar-slot );\n    padding: var( --avatar-padding );\n    border-radius: 10px;\n}\n.avatar-names .avatar {\n  grid-column: 1;\n  grid-row: 1 / span 2;\n  align-self: center;\n  justify-self: center;\n}\n.avatar-names .post-display-name {\n  grid-column: 2;\n  grid-row: 1;\n  font-variation-settings: \"wght\" 700;\n  align-self: end;\n  justify-self: start;\n  margin-left: 0.5rem;\n  margin-bottom: 0.1rem;\n}\n.avatar-names .post-user {\n  grid-column: 2;\n  grid-row: 2;\n  align-self: start;\n  justify-self: start;\n  margin-left: 0.5rem;\n  margin-top: 0.1rem;\n}\n.post-timestamp {\n  position: absolute;\n  top: 0.5rem;\n  right: 0.5rem;\n  text-align: right;\n  font-size: 80%;\n  line-height: 120%;\n}\n.post-timestamp a {\n  text-decoration: none;\n  opacity: 0.5;\n}\n.post-timestamp a:hover {\n  text-decoration: none;\n  opacity: 1;\n}\n\n.post-content {\n  margin-left: 0.5em;\n  margin-right: 0.5em;\n  line-height: 140%;\n}\n.post-in-reply-to {\n  font-family: 'Montserrat-Italic', sans-serif;\n  font-variation-settings: \"wght\" 300;\n  font-size: 80%;\n  width: 100%;\n  text-align: right;\n}\n.post-image {\n  text-align: center;\n  position: relative; /* so tooltips can be positioned absolute */\n}\n.post-image img {\n  max-width: 100%;\n  max-height: 800px;\n}\n.post-in-reply-to + .post-image {\n  margin-top: 0.5em;\n}\n\na.new-self-url:link {\n  color: var( --post-text-color );\n  text-decoration: none;\n}\na.new-self-url:visited {\n  color: var( --post-text-color );\n  text-decoration: none;\n}\na.new-self-url:hover {\n  color: var( --post-text-color );\n  text-decoration: underline;\n}\n\n/* modified from https://blog.hubspot.com/website/html-tooltip */\n.tooltip-text {\n  visibility: hidden;\n  position: absolute;\n  z-index: 1;\n  width: 200px;\n  color: white;\n  font-size: 12px;\n  background-color: #192733;\n  border-radius: 10px;\n  padding: 10px 15px 10px 15px;\n  left: 15px;\n  top: 15px;\n}\n.post-image:hover .tooltip-text {\n  visibility: visible;\n}\n\n.thread {\n  border-left:  var( --thread-border );\n  border-right: var( --thread-border );\n  border-top: var( --thread-border );\n}\n.thread .post:not(:last-child) {\n  border-bottom: none;\n  margin-bottom: 0;\n}\n.thread .post:last-child {\n  border-bottom: var( --thread-border );\n}\n\n.poll {\n  margin-left: 1rem;\n}\n.poll-item:not(:first-child) {\n  margin-top: 0.25rem;\n}\n.poll-item {\n  display: grid;\n  grid-template-columns: 4rem auto 4rem;\n  grid-template-rows: auto;\n  grid-column-gap: 0.5rem;\n  /* border: 1px solid green; */\n}\n.poll-item-percentage {\n  grid-column: 1;\n  grid-row: 1;\n  justify-self: end;\n  /* border: 1px solid red; */\n}\n.poll-item-text {\n  grid-column: 2;\n  grid-row: 1;\n  /* border: 1px solid blue; */\n}\n.poll-item-count {\n  grid-column: 3;\n  grid-row: 1;\n  justify-self: end;\n  font-size: 80%;\n}\n.poll-item.winner {\n  font-variation-settings: \"wght\" 600;\n  align-self: center;\n}\n.poll-item.winner .poll-item-text::after {\n  padding-left: 0.25rem;\n  color: green;\n  content: \"\\2714\";\n}\n.poll-item.winner .poll-item-count {\n  font-variation-settings: \"wght\" 400;\n}\n\n\n.tabs {\n  display:               grid;\n  grid-template-columns: 1fr 1fr;\n  grid-template-rows: auto;\n  padding-bottom: 1rem;\n}\n.tabs .tabs-left {\n  grid-column: 1;\n  grid-row: 1;\n  align-self: end;\n  justify-self: start;\n  margin-left: 1rem;\n}\n.tabs .tabs-right {\n  grid-column: 2;\n  grid-row: 1;\n  align-self: end;\n  justify-self: end;\n  margin-right: var( --outer-text-right-margin );\n}\n.tab.current {\n  font-variation-settings: \"wght\" 600;\n}\n.produced-with {\n  margin-top: 1.5rem;\n  margin-right: 0.5rem;\n  font-variation-settings: \"wght\" 600;\n  font-size: 10;\n  text-align: right;\n  margin-right: var( --outer-text-right-margin );\n}\n@media only screen and (max-width: 650px) {\n  body {\n    grid-template-columns: 1fr 95% 1fr;\n    font-size: 110%;\n  }\n  .produced-with {\n    text-align: center;\n  }\n  .post-timestamp {\n    font-size: 70%;\n    line-height: 120%;\n  }\n  .tabs {\n    display:               grid;\n    grid-template-rows: 1fr 1fr;\n    grid-template-columns: auto;\n    padding-bottom: 0.5rem;\n  }\n  .tabs .tabs-left {\n    grid-column: 1;\n    grid-row: 1;\n    align-self: center;\n    justify-self: start;\n    margin-left: 1rem;\n    margin-bottom: 0.125rem;\n  }\n  .tabs .tabs-right {\n    grid-column: 1;\n    grid-row: 2;\n    align-self: center;\n    justify-self: start;\n    margin-left: 1rem;\n  }\n}\n\n"
      writer.write(block0())

    outputTransformer( untemplate.Result( mbMetadata, writer.toString ) )

  end apply
end Untemplate_style_css_gen

def style_css_gen(locatedContext : LocatedContext) : untemplate.Result[Nothing] = Untemplate_style_css_gen( locatedContext )




© 2015 - 2025 Weber Informatics LLC | Privacy Policy