Add QoL features: preview theme, external resources, shortcuts, mobile layout
- Dark/light preview theme toggle with localStorage persistence and dark CSS injection in preview, export, and embed - External CSS/JS resources modal with per-fiddle persistence in options column, injected as link/script tags - Keyboard shortcuts cheat sheet modal (? button or ? key) - Mobile-responsive CSS with breakpoints at 768px and 480px for both editor and browse pages
This commit is contained in:
@@ -4,7 +4,7 @@ import { extractBareImports, buildImportMapTag } from './import-map.js';
|
||||
/**
|
||||
* Export a fiddle as a standalone HTML file and trigger download.
|
||||
*/
|
||||
export function exportHtml({ title, html, css, js, mode, extraCss = '', isModule = false, tailwind = false, renderedHtml = null }) {
|
||||
export function exportHtml({ title, html, css, js, mode, extraCss = '', isModule = false, tailwind = false, renderedHtml = null, previewTheme = 'light', resources = [] }) {
|
||||
const runtime = getFrameworkRuntime(mode);
|
||||
const allCss = extraCss ? `${css}\n${extraCss}` : css;
|
||||
|
||||
@@ -47,13 +47,25 @@ export function exportHtml({ title, html, css, js, mode, extraCss = '', isModule
|
||||
? `<script src="https://cdn.tailwindcss.com"><\/script>\n`
|
||||
: '';
|
||||
|
||||
const darkCss = previewTheme === 'dark'
|
||||
? `<style>body { background: #1e1e1e; color: #ccc; }</style>\n`
|
||||
: '';
|
||||
|
||||
let resourceTags = '';
|
||||
if (resources && resources.length) {
|
||||
for (const r of resources) {
|
||||
if (r.type === 'css') resourceTags += `<link rel="stylesheet" href="${r.url}">\n`;
|
||||
else if (r.type === 'js') resourceTags += `<script src="${r.url}"><\/script>\n`;
|
||||
}
|
||||
}
|
||||
|
||||
const doc = `<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<title>${escHtml(title)}</title>
|
||||
${tailwindScript}<style>
|
||||
${darkCss}${resourceTags}${tailwindScript}<style>
|
||||
${allCss}
|
||||
</style>
|
||||
${importMapTag}
|
||||
|
||||
Reference in New Issue
Block a user