jongalloway / jongalloway/MarpToPptx
Ship a companion MarpToPptx.Themes content NuGet package
Nobody has claimed this yet.
- Dominant language
- C#
- Stars
- 3
- Forks
- 1
- PR merge metrics
- No merged PRs in 30d
Description
Summary
MarpToPptx currently requires users to supply external CSS files via --theme-css or inline front-matter style:. There are no built-in or bundled themes — the theme: front-matter directive stores the name but doesn't resolve to anything without a matching CSS file.
We should ship a companion content NuGet package (MarpToPptx.Themes) that bundles popular community themes and our own DiagramForge-shared themes so users have a solid starter set out of the box.
Motivation
- Users shouldn't need to author CSS just to get a polished dark or branded deck.
- DiagramForge is rolling out shared themes (Cyberpunk, Synthwave) — a shared package keeps both projects in sync.
- Marp CLI ships built-in themes (
default,gaia,uncover); we should offer parity.
Proposed Design
New project: MarpToPptx.Themes
- Content-only NuGet package that packs
.cssfiles ascontentFilesso they land at a predictable path in consuming projects. - Versions independently from the core
MarpToPptxpackage.
CLI --theme <name> resolution
Add a new --theme <name> option to the CLI that resolves a theme name to a CSS file by searching (in order):
- Current directory / relative path
- NuGet content folder (from
MarpToPptx.Themes) - User themes directory (
~/.marp2pptx/themes/) MARP2PPTX_THEMESenvironment variable path
Falls back to --theme-css <path> for fully custom CSS.
Initial theme set
Bundle the existing samples/themes/ collection plus the top-level sample themes:
| # | Theme | Origin |
|---|---|---|
| 1 | community-beam |
Community-inspired |
| 2 | community-graph-paper |
Community-inspired |
| 3 | community-wave |
Community-inspired |
| 4 | community-dracula |
Community-inspired |
| 5 | popular-gaia |
Marp built-in inspired |
| 6 | diagramforge-cyberpunk |
DiagramForge shared |
| 7 | diagramforge-synthwave |
DiagramForge shared |
| 8 | editorial |
Repo sample (03-theme.css) |
| 9 | showcase |
Repo sample (08-showcase.css) |
| 10 | diagrams |
Repo sample (09-diagrams.css) |
Tasks
- Create
src/MarpToPptx.Themes/project with NuGet content packaging - Copy/organize theme CSS files into the package with stable names
- Add
--theme <name>CLI option with search-path resolution - Add theme name resolution to
MarpCompilerAPI for library consumers - Update documentation (
doc/using-templates.md, CLI--help, README) - Add tests for theme resolution logic
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by inspecting the existing CLI option handling, the MarpCompiler API, and the samples/themes/ collection. Define the new src/MarpToPptx.Themes/ project and trace how content files and theme names should be resolved across the listed search paths. Review doc/using-templates.md, README, CLI --help, and existing tests to establish the packaging, resolution, and documentation requirements.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- csharp
- Domain
- api, build-system, cli, documentation, testing
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100