@(
title: String,
fullTitle: Option[String] = None,
baseline: Option[Html] = None,
side: Option[Html] = None,
menu: Option[Html] = None,
chat: Option[Html] = None,
underchat: Option[Html] = None,
robots: Boolean = isGloballyCrawlable,
moreCss: Html = emptyHtml,
moreJs: Html = emptyHtml,
playing: Boolean = false,
openGraph: Option[lila.app.ui.OpenGraph] = None,
atom: Option[Html] = None,
chessground: Boolean = true,
zoomable: Boolean = false,
asyncJs: Boolean = false)(body: Html)(implicit ctx: Context)
@if(isProd) {
@fullTitle.getOrElse{@title • lichess.org}
} else {
[dev] @fullTitle.getOrElse{@title • lichess.org}
@cssAt("offline/font.noto.css")
@cssAt("offline/font.roboto.mono.css")
}
@ctx.currentBg match {
case "dark" => { @cssTag("dark.css") }
case "transp" => { @cssTag("dark.css")@cssTag("transp.css") }
case _ => {}
}
@cssTag("common.css")
@cssTag("board.css")
@if(zoomable) {
@ctx.zoom.map { z =>
@zoomStyle(z / 100f, ctx.pref.is3d) }
}
@if(ctx.pref.is3d) { @cssTag("board-3d.css") }
@if(ctx.pref.coords == 1) { @cssTag("board.coords.inner.css") }
@if(ctx.pageData.inquiry.isDefined) { @cssTag("inquiry.css") }
@if(ctx.userContext.impersonatedBy.isDefined) { @cssTag("impersonate.css") }
@if(isStage) { @cssTag("stage.css") }
@moreCss
@if(!robots) {
}
@openGraph.map(_.html)
@atom.getOrElse {
}
@ctx.transpBgImg.map { img =>
}
data-user="@id"}
data-sound-set="@ctx.currentSoundSet"
data-asset-url="@assetBaseUrl"
data-asset-version="@ctx.pageData.assetVersion"
@ctx.zoom.map { zoom => data-zoom="@zoom" }>
@trans.siteDescription()
@ctx.pageData.inquiry.map { inquiry =>
@mod.inquiry(inquiry)
}
@ctx.me.map { me =>
@if(ctx.userContext.impersonatedBy.isDefined) { @mod.impersonate(me) }
}
@if(isStage) {
}
@if(playing) { ZEN MODE }
@ctx.me.map { me =>
}
@if(chessground) {@jsTag("vendor/chessground.min.js")}
@if(ctx.requiresFingerprint) { @fingerprintTag }
@jsAt(s"compiled/lichess.site${isProd??".min"}.js", async = asyncJs)
@moreJs
@embedJs {lichess.quantity=@i18nJsQuantityFunction;@timeagoLocaleScript;}
@if(ctx.pageData.inquiry.isDefined) { @jsTag("inquiry.js", async = asyncJs) }