/* components.jsx — Shared chrome (dark, with language toggle) */ const { useState, useEffect, useRef } = React; /* ─────────────────────── Icons ───────────────────── */ function DcIcon({ name, size = 18, strokeWidth = 1.5, style }) { const paths = { search: <>, user: <>, menu: <>, x: <>, arrow: , arrowLeft: , arrowRight: , chevronRight: , chevronDown: , chevronLeft: , play: , server: <>, cpu: <>, layers: <>, film: <>, sparkles: <>, box: <>, map: <>, mail: <>, phone: , calendar: <>, clock: <>, check: , globe: <>, eye: <>, zap: , pause: <>, }; return ( {paths[name] || null} ); } /* ─────────────────────── Buttons ───────────────────── */ function DcBtn({ children, variant = 'primary', onClick, type = 'button', disabled, style }) { const cls = { primary: 'dc-btn dc-btn-primary', secondary: 'dc-btn dc-btn-secondary', onDark: 'dc-btn dc-btn-on-dark', }[variant]; return ( ); } function DcTextLink({ children, onClick, style }) { return ( ); } /* ─────────────────────── Photo (real image) ───────────────────── */ function DcPhoto({ src, caption, tag, tagAccent, aspectRatio = '16/10', style, children }) { const isVideo = typeof src === 'string' && /\.(mp4|webm|mov)$/i.test(src); return (
{isVideo ? (