CSS Theme Files
The htmlLinked formatter emits CSS class names instead of inline styles. You provide a theme stylesheet.
JavaScript package
Import a stylesheet from @lumis-sh/themes/css/<theme>.css.
import '@lumis-sh/themes/css/dracula.css'
import {highlight} from '@lumis-sh/lumis'
import {htmlLinked} from '@lumis-sh/lumis/formatters'
import javascript from '@lumis-sh/lumis/langs/javascript'
const html = await highlight('const x = 1', htmlLinked({language: javascript}))
CDN
Load the compiled CSS file directly:
<link rel="stylesheet" href="https://unpkg.com/@lumis-sh/themes/dist/css/dracula.css">
Available distribution folders:
- CSS:
https://unpkg.com/browse/@lumis-sh/themes/dist/css/ - JSON:
https://unpkg.com/browse/@lumis-sh/themes/dist/json/
Elixir / Phoenix
Lumis ships CSS files under priv/static/css/.
endpoint.ex
plug Plug.Static,
at: "/themes",
from: {:lumis, "priv/static/css/"},
only: ["dracula.css"]
layout
<link phx-track-static rel="stylesheet" href={~p"/themes/dracula.css"} />
Repository-generated CSS
Inside this repo, CSS theme files are generated into multiple targets:
css/*.csspackages/elixir/lumis/priv/static/css/packages/javascript/themes/dist/css/
That is why the same theme can be consumed from Rust assets, Elixir static files, and the JavaScript themes package.
When to use CSS theme files
- many code blocks on one page
- existing app stylesheet pipeline
- cacheable stylesheets
- smaller HTML output than inline styles
If you want the block to be self-contained instead, use htmlInline.