Unified Presentation Framework for Multi-Platform Slide Generation
presentRus is a unified presentation framework that provides:
- Framework-Agnostic Design Tokens - Single source of truth for colors, typography, and spacing
- Multi-Framework CSS Generation - Compile once, deploy to Slidev, Reveal.js, or WebSlides
- Intelligent Framework Selection - Automatically choose the best framework based on content
- Content Parsing - Extract metadata and characteristics from Markdown/HTML presentations
Built on the PRSMTECH Design System, this toolkit ensures consistent branding across all presentation formats.
| Feature | Description |
|---|---|
| Design Tokens | JSON-based tokens derived from PRSMTECH brand guidelines |
| Multi-Framework CSS | Pre-compiled CSS for Slidev, Reveal.js, and WebSlides |
| Tailwind Integration | Ready-to-use Tailwind CSS configuration |
| Content Analysis | Detect live code, Mermaid diagrams, LaTeX, and Vue components |
| Framework Routing | Smart selection based on content requirements |
| Dark Mode | Full dark theme support with semantic color mapping |
# Clone the repository
git clone https://github.com/swizzimatic/presentRus.git
cd presentRus
# Install dependencies
npm install
# Build theme CSS
npm run theme:buildimport {
selectFramework,
parseContent,
getThemeCSS,
FRAMEWORKS
} from '@prsmtech/presentation-logic';
// Parse a presentation file
const content = parseContent('./slides.md');
console.log(`Slides: ${content.slideCount}`);
console.log(`Recommended: ${content.recommendedFramework}`);
// Get CSS for a specific framework
const css = getThemeCSS(FRAMEWORKS.SLIDEV);import { selectFramework, CONTENT_TYPES } from '@prsmtech/presentation-logic';
// Automatic framework selection based on content
const framework = selectFramework({
contentType: CONTENT_TYPES.TECHNICAL,
hasLiveCode: true, // → Slidev (Monaco editor)
hasMermaid: false,
hasLatex: false,
exportFormat: 'pdf'
});# Build all framework CSS
npm run theme:build
# Watch for changes
npm run theme:watch| Framework | Live Code | Mermaid | LaTeX | PDF Export | Best For |
|---|---|---|---|---|---|
| Slidev | Yes | Yes | Yes | Yes | Technical talks, code demos |
| Reveal.js | No | No | Yes | Yes | Corporate, PDF distribution |
| WebSlides | No | No | No | No | Marketing, landing pages |
Live Code Demo? → Slidev
Vue Components Needed? → Slidev
Mermaid Diagrams? → Slidev
PDF Export Priority? → Reveal.js
Marketing Content? → WebSlides
Corporate Presentation? → Reveal.js
Default → Slidev
Select the optimal presentation framework based on content characteristics.
interface FrameworkOptions {
contentType?: 'technical' | 'marketing' | 'portfolio' | 'training' | 'corporate';
hasLiveCode?: boolean;
hasMermaid?: boolean;
hasLatex?: boolean;
exportFormat?: 'pdf' | 'html' | null;
needsVueComponents?: boolean;
responsive?: boolean;
}
selectFramework(options: FrameworkOptions): 'slidev' | 'reveal' | 'webslides'Parse a presentation file and extract metadata.
interface ParsedContent {
name: string;
type: 'markdown' | 'html' | 'unknown';
frontmatter?: Record<string, any>;
slides: string[];
slideCount: number;
characteristics: {
hasLiveCode: boolean;
hasMermaid: boolean;
hasLatex: boolean;
hasVueComponents: boolean;
estimatedDuration: number;
};
recommendedFramework: string;
}Load design tokens from variables.json.
Get compiled CSS for a specific framework.
Get all CSS custom properties as key-value pairs.
Generate a complete presentation configuration object.
| Token | Light Mode | Dark Mode |
|---|---|---|
| Primary | #0057e6 |
#4d94ff |
| Secondary | #5c00e6 |
#944dff |
| Background | #ffffff |
#212529 |
| Text | #212529 |
#f8f9fa |
| Heading | #0057e6 |
#4d94ff |
| Font Role | Stack |
|---|---|
| Sans | Inter, Geist, system-ui |
| Heading | Space Grotesk, Geist |
| Mono | Maple Mono, Geist Mono, Fira Code |
presentRus/
├── core/
│ └── index.js # Core module (framework router, parser)
├── themes/prsmtech/
│ ├── variables.json # Design tokens (source of truth)
│ ├── build.js # Theme compiler
│ └── dist/ # Generated CSS
│ ├── base.css # Shared CSS variables
│ ├── slidev.css # Slidev-specific styles
│ ├── reveal.css # Reveal.js styles
│ ├── webslides.css # WebSlides styles
│ └── tailwind.config.js
├── .memory-bank/ # Context management
├── package.json
└── README.md
| Command | Description |
|---|---|
npm run theme:build |
Build all framework CSS from tokens |
npm run theme:watch |
Watch and rebuild on changes |
- Fork the repository
- Create a feature branch:
git checkout -b feature/amazing-feature - Commit your changes:
git commit -m 'feat: add amazing feature' - Push to the branch:
git push origin feature/amazing-feature - Open a Pull Request
MIT License - see LICENSE for details.
Built with precision by PRSMTECH