"""Assemble self-contained mockup pages: tokens + fonts (base64) + shell + page.""" import base64, pathlib, re HERE = pathlib.Path(__file__).parent OUT = pathlib.Path.home() / 'Design/extrudex-v3' FONTS = OUT / 'fonts' tokens = (OUT / 'design-system-v3.css').read_text() def embed_font(match): name = match.group(1) data = base64.b64encode((FONTS / name).read_bytes()).decode() return f"url('data:font/woff2;base64,{data}')" tokens = re.sub(r"url\('\./fonts/([^']+)'\)", embed_font, tokens) app_css = (HERE / 'app.css').read_text() ICONS = { 'dashboard': '', 'filament': '', 'prints': '', 'printers': '', } NAV = [('dashboard', 'Dashboard', '01-dashboard.html'), ('filament', 'Filament', '02-filament.html'), ('prints', 'Prints', None), ('printers', 'Printers', '04-printers.html')] THEME_HEAD = """""" def rail(active): links = [] for key, label, href in NAV: cur = ' aria-current="page"' if key == active else '' extra = '' if key == 'dashboard': extra = 'new' if href is None: links.append(f'{ICONS[key]}{label}') else: links.append(f'{ICONS[key]}{label}{extra}') return f"""""" def page(slug, title, active, description): src = (HERE / 'pages' / f'{slug}.html').read_text() css_m = re.search(r'', src, re.S) page_css = css_m.group(1) if css_m else '' body = re.sub(r'', '', src, flags=re.S).strip() js_m = re.search(r'', body, re.S) page_js = '' if js_m: page_js = f'' body = re.sub(r'', '', body, flags=re.S) html = f"""