@@ -12,60 +12,10 @@ def get_module_path(p,base_dir): return f'{base_dir}.{".".join(Path(p).parts[1:]
1212
1313descr = 'A gallery of FastHTML components showing common patterns in FastHTML apps, including chat bubbles, cascading dropdowns, interactive charts, etc.'
1414
15- HLJS_THEMES = {
16- 'dark' : 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release/build/styles/atom-one-dark.css' ,
17- 'light' : 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release/build/styles/atom-one-light.css' }
18-
19- hjs = (
20- # Basic highlight.js setup
21- Script (src = 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release/build/highlight.min.js' ),
22- Script (src = 'https://cdn.jsdelivr.net/gh/highlightjs/cdn-release/build/languages/python.min.js' ),
23-
24- # Copy button setup
25- Script (src = 'https://cdn.jsdelivr.net/gh/arronhunt/highlightjs-copy/dist/highlightjs-copy.min.js' ),
26- Link (rel = 'stylesheet' , href = 'https://cdn.jsdelivr.net/gh/arronhunt/highlightjs-copy/dist/highlightjs-copy.min.css' ),
27- Style ('''
28- .hljs-copy-button { background-color: #2d2b57; }
29- html.dark .hljs-copy-button { background-color: #e0e0e0; color: #2d2b57; }
30- ''' ),
31-
32- # Theme stylesheets
33- Link (rel = 'stylesheet' , href = HLJS_THEMES ['dark' ], id = 'hljs-dark-theme' , disabled = True ),
34- Link (rel = 'stylesheet' , href = HLJS_THEMES ['light' ], id = 'hljs-light-theme' , disabled = True ),
35-
36- # Theme switching logic
37- Script ('''
38- function updateCodeTheme() {
39- const isDark = document.documentElement.classList.contains('dark');
40- document.getElementById('hljs-dark-theme').disabled = !isDark;
41- document.getElementById('hljs-light-theme').disabled = isDark;
42- }
43-
44- // Watch for theme changes
45- new MutationObserver(mutations => {
46- mutations.forEach(mutation => {
47- if (mutation.target.tagName === 'HTML' && mutation.attributeName === 'class') {
48- updateCodeTheme();
49- }
50- });
51- }).observe(document.documentElement, { attributes: true });
52-
53- // Initial setup
54- document.addEventListener('DOMContentLoaded', updateCodeTheme);
55- ''' ),
56- # Highlight.js initialization
57- Script ('''
58- hljs.configure({ ignoreUnescapedHTML: true });
59- hljs.addPlugin(new CopyButtonPlugin());
60- htmx.onLoad(hljs.highlightAll);
61- ''' , type = 'module' ),
62- )
63-
64- hdrs = (* hjs ,
65- #Script(defer=True, data_domain="gallery.fastht.ml", src="https://plausible-analytics-ce-production-dba0.up.railway.app/js/script.js"),
15+ hdrs = (
6616 * Socials (title = 'FastHTML Gallery' , description = descr , site_name = 'gallery.fastht.ml' , twitter_site = '@isaac_flath' , image = f'/social.png' , url = '' ),
6717 toggle_script ,
68- * Theme .blue .headers (),)
18+ * Theme .blue .headers (highlightjs = True ),)
6919
7020app = FastHTML (routes = application_routes + [Mount ('/files' , StaticFiles (directory = '.' )),], hdrs = hdrs , pico = False )
7121
0 commit comments