11
Sourced answer
Answer builds line by line while numbered source chips pop in

Add the "Sourced answer" video component (Gemini Deep Research, light) from everestchris.com to this project.
1. Download https://ai-component-library-dun.vercel.app/projects/sourced-answer.zip?v=88a538211ed1 and unzip it into components/sourced-answer/. Read the README.md and CLAUDE.md in it.
2. Render it: cd components/sourced-answer && npx hyperframes@0.8.162 render . --variables '{"variant":"2","theme":"light"}' -o sourced-answer.mp4
3. Give me the path of the MP4. The text, names and timings live in the CONFIG block at the top of the script in index.html; change nothing there unless I ask.Code
One file. The project download adds the fonts, skins and motion kit it runs on.
Open full file1<!doctype html>2<html lang="en" data-composition-variables='[3 {"id":"variant","type":"enum","label":"Variant","default":"0","options":[{"value":"0","label":"Perplexity"},{"value":"1","label":"ChatGPT search"},{"value":"2","label":"Gemini Deep Research"}]},4 {"id":"theme","type":"enum","label":"Theme","default":"light","options":[{"value":"light","label":"Light"},{"value":"dark","label":"Dark"}]}5]'>6 <head>7 <meta charset="UTF-8" />8 <meta name="viewport" content="width=1920, height=1080" />9 <link rel="stylesheet" href="assets/fonts/fonts.css" />10 <link rel="stylesheet" href="assets/skins/perplexity/skin.css" />11 <link rel="stylesheet" href="assets/skins/chatgpt/skin.css" />12 <link rel="stylesheet" href="assets/skins/gemini/skin.css" />13 <script src="https://cdn.jsdelivr.net/npm/gsap@3.14.2/dist/gsap.min.js"></script>14 <script src="assets/kit/motion/motion.js"></script>15 <script src="assets/skins/perplexity/icons.js"></script>16 <script src="assets/skins/chatgpt/icons.js"></script>17 <script src="assets/skins/gemini/icons.js"></script>18 <style>19 @font-face { font-family: "Inter"; font-style: normal; font-weight: 100 900; font-display: block; src: url("assets/fonts/Inter-normal.woff2") format("woff2"); }20 @font-face { font-family: "Source Serif 4"; font-style: normal; font-weight: 200 900; font-display: block; src: url("assets/fonts/SourceSerif4-normal.woff2") format("woff2"); }21 @font-face { font-family: "JetBrains Mono"; font-style: normal; font-weight: 100 800; font-display: block; src: url("assets/fonts/JetBrainsMono-normal.woff2") format("woff2"); }22 @font-face { font-family: "Google Sans"; font-style: normal; font-weight: 400 700; font-display: block; src: url("assets/skins/gemini/fonts/GoogleSans-latin.woff2") format("woff2"); }2324 * { margin: 0; padding: 0; box-sizing: border-box; }25 html, body { margin: 0; width: 1920px; height: 1080px; overflow: hidden; background: #F5F5F4; }26 html[data-theme="dark"], html[data-theme="dark"] body { background: #0E0E0F; }27 #root { position: relative; width: 100%; height: 100%; overflow: hidden; font-family: "Inter", sans-serif; }2829 /* ---------- stage: the library's flat stage (ChatGPT window) or, for the page crops, the product's own page colour ---------- */30 #stage { position: absolute; inset: 0; overflow: hidden; background: #F5F5F4; }31 html[data-theme="dark"] #stage { background: #0E0E0F; }32 html.v-pplx #stage { background: #faf7f4; }33 html.v-pplx[data-theme="dark"] #stage { background: #161412; }34 html.v-gemini #stage { background: #fdfdfd; }35 html.v-gemini[data-theme="dark"] #stage { background: #000000; }36 #place { position: absolute; left: 0; top: 0; }37 #zoom { position: relative; }38 .sa-root { position: relative; overflow: hidden; }3940 /* shared favicon disc: the cited site's real mark, with a ring in the surface colour */41 .sa-fav { position: relative; display: grid; place-items: center; border-radius: 50%; overflow: hidden; flex: none; }42 .sa-fav svg, .sa-fav img { display: block; }43 /* the source card a hovered chip opens (extrapolated per product, see DECISIONS.md) */44 .sa-card { position: absolute; left: 0; top: 0; z-index: 30; opacity: 0; }45 .sa-card-top { display: flex; align-items: center; }46 .sa-card-site { white-space: nowrap; }47 .sa-card-pager { margin-left: auto; display: flex; align-items: center; gap: 1px; font-variant-numeric: tabular-nums; white-space: nowrap; }48 .sa-card-pager svg { display: block; }