Website for the Lede browser extension.
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

at main 84 lines 3.1 kB view raw
1--- 2import "../styles/global.css"; 3 4interface Props { 5 title?: string; 6 description?: string; 7 ogUrl?: string; 8 /** Absolute URL for Open Graph / Twitter image */ 9 ogImage?: string; 10} 11 12const { 13 title = "Lede — page summarizer & chat", 14 description = 15 "Lede — page summarizer & chat. Don't bury the main point—summarize and discuss any article.", 16 ogUrl = "https://lede.app", 17 ogImage, 18} = Astro.props; 19 20const resolvedOgImage = ogImage ?? `${String(ogUrl).replace(/\/$/, "")}/images/summarizer-logo.svg`; 21--- 22 23<!doctype html> 24<html lang="en"> 25 <head> 26 <meta charset="UTF-8" /> 27 <meta name="viewport" content="width=device-width, initial-scale=1" /> 28 <meta name="theme-color" content="#f4f1eb" media="(prefers-color-scheme: light)" /> 29 <meta name="theme-color" content="#1c1b19" media="(prefers-color-scheme: dark)" /> 30 <meta name="generator" content={Astro.generator} /> 31 <title>{title}</title> 32 <meta name="description" content={description} /> 33 <meta property="og:title" content={title} /> 34 <meta property="og:description" content={description} /> 35 <meta property="og:type" content="website" /> 36 <meta property="og:url" content={ogUrl} /> 37 <meta property="og:image" content={resolvedOgImage} /> 38 <meta name="twitter:card" content="summary_large_image" /> 39 <meta name="twitter:image" content={resolvedOgImage} /> 40 <link rel="icon" href="/images/summarizer-logo.svg" type="image/svg+xml" /> 41 <link rel="preconnect" href="https://fonts.googleapis.com" /> 42 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 43 <link 44 href="https://fonts.googleapis.com/css2?family=Sora:wght@500;600;700&display=swap" 45 rel="stylesheet" 46 /> 47 </head> 48 <body> 49 <a class="skip-link" href="#main">Skip to content</a> 50 <slot /> 51 <script is:inline> 52 (function () { 53 if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) return; 54 if (typeof CSS !== "undefined" && CSS.supports && CSS.supports("animation-timeline: view(block)")) return; 55 var nodes = document.querySelectorAll(".reveal-scroll"); 56 if (!nodes.length || !("IntersectionObserver" in window)) return; 57 var io = new IntersectionObserver( 58 function (entries) { 59 entries.forEach(function (entry) { 60 if (!entry.isIntersecting) return; 61 entry.target.classList.add("reveal-scroll--visible"); 62 io.unobserve(entry.target); 63 }); 64 }, 65 { rootMargin: "0px 0px -10% 0px", threshold: 0.06 } 66 ); 67 nodes.forEach(function (el) { 68 io.observe(el); 69 }); 70 })(); 71 </script> 72 <script is:inline> 73 try { 74 if (typeof console !== "undefined" && console.log) { 75 console.log( 76 "%cLede%c — If you found this in the console, you already get the product.", 77 "font-weight:700;font-family:Sora,system-ui,sans-serif;color:#F15B2F", 78 "font-weight:500;color:inherit" 79 ); 80 } 81 } catch (e) {} 82 </script> 83 </body> 84</html>