@( 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) {
This is an empty lichess preview website for developers. Go to lichess.org instead
} @if(playing) { ZEN MODE }
@topmenu() @ctx.me.map { me =>
@me.username
}.getOrElse { @if(!ctx.pageData.error) {
@trans.signIn() } } @if(ctx.teamNbRequests > 0) { } @if(isGranted(_.SeeReport)) { }
@trans.reconnecting()
@body
@ctx.me.map { me =>
@trans.onlineFriends()
@trans.noFriendsOnline() @trans.findFriends()
} @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) }