moonbit-posterkit

    Typed, data-driven SVG poster and cover generation for MoonBit.

    poster
    svg
    graphics
    dsl
    template
    Download zip
    Author
    Version
    0.1.4
    License
    Apache-2.0
    Last updated
    2 months ago
    Downloads
    57

    #moonbit-posterkit

    `moonbit-posterkit` is a typed MoonBit toolkit for deterministic SVG posters, covers, social cards, and campaign packs.

    #Quick Start

    let preset = @dgmxjj/moonbit-posterkit/preset.PosterPreset::instagram_square() let theme = @dgmxjj/moonbit-posterkit/theme.Theme::warm_editorial() let document = @dgmxjj/moonbit-posterkit/scene.PosterDocument::empty( title="MoonBit PosterKit", preset~, theme~, ) let svg = @dgmxjj/moonbit-posterkit/svg.render_svg(document) assert svg.contains("<svg")

    The library provides scene elements, poster presets, themes, deterministic layout, CJK/Latin text flow, reusable templates, strict batch validation, SVG metrics, PNG/JPEG asset inspection, deterministic PNG/PDF export, and a native CLI.

    #Package map

    • `core`: geometry and constraints
    • `preset`: canvas sizes and orientation helpers
    • `theme`: palettes and contrast reports
    • `scene`: document DSL, validation, analysis, normalization
    • `layout`: stack, grid, flow, and envelope measurement
    • `textflow`: wrapping and bounded text measurement
    • `template`: built-in templates and content profiles
    • `config`: JSON batches, strict validation, metrics, and output plans
    • `assets`: PNG/JPEG metadata inspection and aspect-ratio fitting
    • `export`: deterministic PNG encoding and single-page PDF export
    • `svg`: stable SVG rendering and validation
    • `catalog` and `manifest`: campaign packs and catalog exports
    • `quality`: document, SVG, and batch audit reports

    #Verification

    moon check --deny-warn --target all moon test --deny-warn --target all moon fmt --check moon info

    See the root README for CLI examples, benchmark fixtures, provenance, and contribution guidance.

    #License

    Apache-2.0

    catalog_json

    fn catalog_json() -> String

    catalog_markdown

    fn catalog_markdown() -> String

    estimate_chars_per_line

    fn estimate_chars_per_line(max_width : Int, style :
    TextStyle
    ) -> Int

    pack_names

    fn pack_names() -> Array[String]

    paragraph_to_elements

    preset_names

    fn preset_names() -> Array[String]

    product_launch_pack

    release_notes_pack

    render_svg

    resolve_pack

    resolve_pack_info

    fn resolve_pack_info(name : String) ->
    PackInfo
    ?

    resolve_preset

    resolve_preset_info

    fn resolve_preset_info(name : String) ->
    PresetInfo
    ?

    resolve_template_info

    fn resolve_template_info(name : String) ->
    TemplateInfo
    ?

    resolve_template_name

    fn resolve_template_name(name : String) -> String?

    resolve_theme

    fn resolve_theme(name : String) ->
    Theme
    ?

    resolve_theme_info

    fn resolve_theme_info(name : String) ->
    ThemeInfo
    ?

    stack_vertical

    fn stack_vertical(region~ :
    Rect
    , item_heights~ : Array[Int], gap~ : Int) -> Array[
    Rect
    ]

    template_names

    fn template_names() -> Array[String]

    theme_names

    fn theme_names() -> Array[String]

    weekly_digest_pack

    wrap_text

    fn wrap_text(content : String, max_chars~ : Int) -> Array[String]