From a3ad7d21ec6d88089539344f98bef178bc3ebd82 Mon Sep 17 00:00:00 2001 From: Russ White <356303+russwyte@users.noreply.github.com> Date: Fri, 14 Aug 2026 06:16:04 -0500 Subject: [PATCH] Drop DocsDiagrams now that chalkboard lives in specular 0.12.1. Fenced mermaid and sad/happy/warn were forked here because chalkboard type was 14px and hybrid CSS ignored fill. EarlyEffectTheme.layers is enough. --- docs/src/test/scala/zipx/docs/BuildSite.scala | 2 +- .../test/scala/zipx/docs/DocsDiagrams.scala | 96 ------------------- project/Dependencies.scala | 2 +- project/plugins.sbt | 2 +- 4 files changed, 3 insertions(+), 99 deletions(-) delete mode 100644 docs/src/test/scala/zipx/docs/DocsDiagrams.scala diff --git a/docs/src/test/scala/zipx/docs/BuildSite.scala b/docs/src/test/scala/zipx/docs/BuildSite.scala index b7047aa..2d98c72 100644 --- a/docs/src/test/scala/zipx/docs/BuildSite.scala +++ b/docs/src/test/scala/zipx/docs/BuildSite.scala @@ -85,7 +85,7 @@ sbt zipxActionsPull # after Dependabot bumps workflow uses:""", end site override def layers: ZLayer[Any, Nothing, SiteBuilder] = - DocsDiagrams.layers + EarlyEffectTheme.layers override def afterBuild(out: Path, result: SiteOutput): Task[Unit] = EarlyEffectTheme.writeLogo(out) *> copyClientBundle(out) diff --git a/docs/src/test/scala/zipx/docs/DocsDiagrams.scala b/docs/src/test/scala/zipx/docs/DocsDiagrams.scala deleted file mode 100644 index 69285ef..0000000 --- a/docs/src/test/scala/zipx/docs/DocsDiagrams.scala +++ /dev/null @@ -1,96 +0,0 @@ -package zipx.docs - -import earlyeffect.docs.EarlyEffectTheme -import mermoid.{LayoutConfig, RenderConfig} -import mermoid.css.{Theme as MermoidTheme, *} -import specular.mermoid.Mermoid -import specular.site.{DocsSite, SiteBuilder, Theme, ThemeTokens} -import zio.ZLayer - -/** Shared Mermaid styling for zipx DocSpecs (fenced `mermaid` blocks pick this up via [[BuildSite]]). */ -object DocsDiagrams: - - /** Readable type size inside SVGs (chalkboard default is 14px; max-width scaling makes that tiny). */ - private val colors: ThemeColors = - Mermoid.chalkboardColors.copy(fontSize = "17px") - - /** Node classes usable from any fence: `class Foo,Bar sad` / `happy` / `warn`. */ - private val pathColors: Stylesheet = Stylesheet( - rules = List( - nodeFill("sad", "#5c2a2a", "#f0a0a0"), - nodeFill("happy", "#1f4a35", "#7dcea0"), - nodeFill("warn", "#4a4030", "#e0c070"), - CssRule( - CssSelector.Class("subgraph-rect"), - List( - CssDeclaration("fill", CssValue.Color("#222326")), - CssDeclaration("stroke", CssValue.Color("#5a5750")), - CssDeclaration("stroke-width", CssValue.Str("1.5")), - CssDeclaration("stroke-dasharray", CssValue.Str("4 3")), - ), - ), - CssRule( - CssSelector.Class("subgraph-label"), - List( - CssDeclaration("fill", CssValue.Color("#c4c0b4")), - CssDeclaration("font-size", CssValue.Str("15px")), - ), - ), - CssRule( - CssSelector.Class("edge-label"), - List(CssDeclaration("font-size", CssValue.Str("15px"))), - ), - CssRule( - CssSelector.Class("note-text"), - List(CssDeclaration("font-size", CssValue.Str("15px"))), - ), - ) - ) - - private def nodeFill(cls: String, fill: String, stroke: String): CssRule = - CssRule( - CssSelector.Descendant(CssSelector.Class(cls), CssSelector.Class("node-shape")), - List( - CssDeclaration("fill", CssValue.Color(fill)), - CssDeclaration("stroke", CssValue.Color(stroke)), - ), - ) - - private val layout: LayoutConfig = - LayoutConfig( - hSpacing = 56.0, - vSpacing = 64.0, - padding = 28.0, - fontSize = 17, - edgeLabelFontSize = 15, - nodePaddingH = 28.0, - ) - - val diagramConfig: RenderConfig = - RenderConfig( - theme = ThemeName.Dark, - layout = layout, - customStylesheet = Some(Stylesheet.merge(MermoidTheme.toStylesheet(colors), pathColors)), - ) - - /** Let wide diagrams shrink to the content column instead of forcing horizontal scroll. */ - private val diagramCss: String = - """ - |/* zipx docs: mermaid SVGs reflow in the content column */ - |.specular-site-Theme-Content svg[viewBox] { - | max-width: 100%; - | height: auto; - | display: block; - | margin: 0.75rem 0 1.25rem; - |} - |""".stripMargin - - val tokens: ThemeTokens = - EarlyEffectTheme.tokens.copy( - diagramConfig = diagramConfig, - extraCss = EarlyEffectTheme.tokens.extraCss + diagramCss, - ) - - val layers: ZLayer[Any, Nothing, SiteBuilder] = - Theme.fromTokens(tokens) >>> DocsSite.themedStack -end DocsDiagrams diff --git a/project/Dependencies.scala b/project/Dependencies.scala index ce5f680..f102bb1 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -10,7 +10,7 @@ object Dependencies: val scala3Version = "3.8.4" val zioVersion = "2.1.26" - val specularVersion = "0.12.0" + val specularVersion = "0.12.1" val ascentVersion = "0.3.1" val zioBlocksVersion = "0.0.51" val remoteCacheVersion = "2.0.5" diff --git a/project/plugins.sbt b/project/plugins.sbt index a2ec5fb..3281ec2 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -5,6 +5,6 @@ addSbtPlugin("rocks.earlyeffect" % "sbt-dynver-ci" % "0.2.2") addSbtPlugin("org.scalameta" % "sbt-scalafmt" % "2.6.2") addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.3.1") -addSbtPlugin("rocks.earlyeffect" % "sbt-specular" % "0.12.0") +addSbtPlugin("rocks.earlyeffect" % "sbt-specular" % "0.12.1") addSbtPlugin("com.jamesward" % "sbt-reload" % "0.0.7") addSbtPlugin("org.scala-js" % "sbt-scalajs" % "1.22.0")