|
13 | 13 | const navLinks = [ |
14 | 14 | { label: 'Home', href: '/', external: false }, |
15 | 15 | { label: 'Wrappers', href: '/#wrappers', external: false }, |
16 | | - { label: 'About', href: '/about', external: false }, |
17 | | - { label: 'Blog', href: 'https://org.weids.dev', external: true }, |
| 16 | + { label: 'About', href: 'https://org.weids.dev', external: true }, |
| 17 | + { label: 'Blog', href: 'https://blog.weids.dev', external: true }, |
18 | 18 | ]; |
19 | 19 |
|
20 | 20 | const overlayExtras = [ |
21 | | - { label: 'Developers', href: 'https://docs.weids.dev', external: true }, |
| 21 | + { label: 'Developers', href: 'https://github.com/weids-dev/wrappers', external: true }, |
22 | 22 | { label: 'Paper', href: '/papers/a_survey_of_verifiable_computing.pdf', external: true }, |
23 | 23 | ]; |
24 | 24 |
|
25 | 25 | const blogEntries = [ |
26 | 26 | { |
27 | | - title: 'A Survey of Interactive Verifiable Computing', |
28 | | - meta: 'IACR ePrint 2025/008 · Jan 2025', |
29 | | - link: '/papers/a_survey_of_verifiable_computing.pdf', |
| 27 | + title: 'Wrappers — A Manifesto', |
| 28 | + meta: 'blog.weids.dev · Apr 2026', |
| 29 | + link: 'https://blog.weids.dev/2026/04/25/manifesto.html', |
30 | 30 | }, |
31 | 31 | { |
32 | | - title: 'Notes on Wrappers, sum-check, and verifiable computing', |
33 | | - meta: 'org.weids.dev — ongoing', |
34 | | - link: 'https://org.weids.dev', |
| 32 | + title: 'GKR Explained: From Cubes to Curves', |
| 33 | + meta: 'org.weids.dev · tutorial', |
| 34 | + link: 'https://org.weids.dev/agenda/notes/gkr-sum-check-tutorial.html', |
35 | 35 | }, |
36 | 36 | ]; |
37 | 37 |
|
|
43 | 43 | menuOpen = !menuOpen; |
44 | 44 | } |
45 | 45 |
|
| 46 | + // Hover-to-open (comma.ai-style). A small close delay lets the cursor |
| 47 | + // hand off from the hamburger into the fullscreen overlay without the |
| 48 | + // menu flickering closed in the process. |
| 49 | + let closeTimer; |
| 50 | + function openMenu() { |
| 51 | + if (closeTimer) { clearTimeout(closeTimer); closeTimer = null; } |
| 52 | + menuOpen = true; |
| 53 | + } |
| 54 | + function scheduleClose() { |
| 55 | + if (closeTimer) clearTimeout(closeTimer); |
| 56 | + closeTimer = setTimeout(() => { menuOpen = false; closeTimer = null; }, 150); |
| 57 | + } |
| 58 | + function cancelClose() { |
| 59 | + if (closeTimer) { clearTimeout(closeTimer); closeTimer = null; } |
| 60 | + } |
| 61 | +
|
46 | 62 | $: activePath = $page.url.pathname; |
47 | 63 | </script> |
48 | 64 |
|
|
56 | 72 | aria-label={menuOpen ? 'Close menu' : 'Open menu'} |
57 | 73 | aria-expanded={menuOpen} |
58 | 74 | on:click={toggleMenu} |
| 75 | + on:mouseenter={openMenu} |
| 76 | + on:mouseleave={scheduleClose} |
59 | 77 | > |
60 | 78 | <span></span> |
61 | 79 | <span></span> |
|
88 | 106 | </nav> |
89 | 107 |
|
90 | 108 | <div class="nav__right"> |
91 | | - <a class="nav__cta" href="https://docs.weids.dev" target="_blank" rel="noopener noreferrer"> |
| 109 | + <a class="nav__cta" href="https://github.com/weids-dev/wrappers" target="_blank" rel="noopener noreferrer"> |
92 | 110 | <span class="nav__cta-label">Developers</span> |
93 | 111 | <span class="nav__cta-arrow" aria-hidden="true">→</span> |
94 | 112 | </a> |
|
97 | 115 | </header> |
98 | 116 |
|
99 | 117 | {#if menuOpen} |
100 | | - <div class="nav__overlay" role="dialog" aria-modal="true" aria-label="Site navigation"> |
| 118 | + <div |
| 119 | + class="nav__overlay" |
| 120 | + role="dialog" |
| 121 | + aria-modal="true" |
| 122 | + aria-label="Site navigation" |
| 123 | + on:mouseenter={cancelClose} |
| 124 | + on:mouseleave={scheduleClose} |
| 125 | + > |
101 | 126 | <div class="nav__overlay-inner"> |
102 | 127 | <div class="nav__overlay-links"> |
103 | 128 | {#each navLinks as link} |
|
0 commit comments