-- | String-diagram SVG rendering for @circuits-diagrams@ via @chart-svg@.
--
-- Pipeline:
--
-- 1. Build a typed 'Circuit.Poly.StringDiagram.Diagram' (or an untyped 'SDiagram').
-- 2. Forget types with 'skeleton' (if needed).
-- 3. 'layoutSDiagram' → 'Layout' (ports + bounds + 'ChartTree').
-- 4. 'renderLayout' / 'renderSDiagram' → 'ChartOptions'.
-- 5. 'writeChartOptions' → SVG file.
module Strings.Svg
  ( -- * Re-exports from circuits-diagrams
    module Circuit.Poly.StringDiagram,

    -- * Layout
    Layout (..),
    layoutSDiagram,
    layoutWidth,
    layoutHeight,
    countCharts,
    countLines,
    countRects,
    countPaths,

    -- * Render
    renderLayout,
    renderSDiagram,
    renderDiagram,
    equalityRow,
    withBackground,

    -- * Palette
    module Strings.Svg.Palette,

    -- * Examples
    module Strings.Svg.Examples,
  )
where

import Circuit.Poly.StringDiagram
import Strings.Svg.Examples
import Strings.Svg.Layout
import Strings.Svg.Palette
import Strings.Svg.Render