Pushed the cosmos theme further: - Cursor aurora — 600px soft cyan/violet/magenta halo follows the pointer with lag (mix-blend-mode: screen, blur 8px). Fades in on first move, fades out on pointerleave. - Card 3D tilt — every cosmos card rotates up to ~6deg toward the cursor on hover via custom-property-driven rotateX/rotateY, with a cursor-tracking radial shimmer painted inside via mix-blend-mode: screen. RAF-throttled. Skipped for testimonial + client tiles since they have no chrome. - Hero parallax — name, tagline, and drift-orb all shift relative to cursor position via --cm-x / --cm-y custom properties set globally from the pointer move handler. - Shader: doubled the gravity-well strength (0.03 -> 0.06) and added a click-driven ripple — pointerdown sets u_ripple_pos/u_ripple_age uniforms; the shader propagates a cyan/magenta luminous ring of displacement that decays over ~2s. - Comets — 3 CSS-only streaks crossing the page on staggered 14/22/ 19s loops with cyan/violet drop-shadow trails. - Turtle — new .cosmos-turtle img auto-loads if assets/img/turtle.png resolves (or theme.turtle URL is set). Floats in from the left, arcs across, fades out off the right; pulses its aurora glow on a 4s bob. Reduced-motion users see it positioned statically. - All new chrome respects prefers-reduced-motion: halo/comets hidden, card tilt + parallax disabled, turtle pinned static. Also adds section.headless = true (per user request): renders the section body with no header/kicker chrome and a tighter top margin so the contents read as nested under the prior section. Example JSON now uses this to slide the testimonials carousel under the clients wall.
130 lines
4.7 KiB
JSON
130 lines
4.7 KiB
JSON
{
|
|
"profile": {
|
|
"name": "Ada Lovelace",
|
|
"handle": "@ada",
|
|
"tagline": "Mathematician · Programmer · Visionary",
|
|
"bio": "Short, one-line introduction sits here. Replace everything in this file with your own content, save as data/links.json, and re-upload.",
|
|
"location": "London"
|
|
},
|
|
"theme": {
|
|
"accent": "#E8482C",
|
|
"template": "editorial"
|
|
},
|
|
"sections": [
|
|
{
|
|
"id": "sites",
|
|
"label": "Sites",
|
|
"kicker": "Where I live online",
|
|
"items": [
|
|
{ "type": "link", "title": "Personal site", "url": "https://example.com", "description": "What I do, who I am" },
|
|
{ "type": "link", "title": "Notes", "url": "https://notes.example.com", "description": "Long-form writing", "date": "2025-09" },
|
|
{ "type": "link", "title": "Lab", "url": "https://lab.example.com", "description": "Experiments & sketches", "date": "2024" }
|
|
]
|
|
},
|
|
{
|
|
"id": "projects",
|
|
"label": "Projects",
|
|
"kicker": "Things I'm building",
|
|
"items": [
|
|
{
|
|
"type": "card",
|
|
"featured": true,
|
|
"title": "Analytical Engine",
|
|
"url": "https://example.com/projects/engine",
|
|
"description": "An early proposal for a general-purpose computing machine, with looping and conditional branching.",
|
|
"tags": ["computing", "research"],
|
|
"date": "1837"
|
|
},
|
|
{
|
|
"type": "card",
|
|
"title": "Bernoulli Numbers",
|
|
"url": "https://example.com/projects/bernoulli",
|
|
"description": "Method for computing Bernoulli numbers using the Engine.",
|
|
"tags": ["mathematics"],
|
|
"date": "1843-07"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "showcase",
|
|
"label": "Showcase",
|
|
"kicker": "Selected work",
|
|
"items": [
|
|
{
|
|
"type": "portfolio",
|
|
"title": "Notes G — diagrams for publication",
|
|
"url": "https://example.com/showcase/notes-g",
|
|
"image": "https://images.unsplash.com/photo-1518770660439-4636190af475?w=1600&q=80",
|
|
"description": "Tables and diagrams prepared for the 1843 translation.",
|
|
"date": "1843-10-15"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"id": "watch",
|
|
"label": "Watch",
|
|
"kicker": "Video",
|
|
"items": [
|
|
{ "type": "youtube", "id": "dQw4w9WgXcQ", "title": "Replace this video ID with your own" }
|
|
]
|
|
},
|
|
{
|
|
"id": "clients",
|
|
"label": "Clients",
|
|
"kicker": "Who I work with",
|
|
"layout": "clients",
|
|
"items": [
|
|
{ "type": "client", "title": "Example Co.", "url": "https://example.com" },
|
|
{ "type": "client", "title": "Another Org", "url": "https://another.example.com" },
|
|
{ "type": "client", "title": "Third Party", "url": "https://third.example.com" },
|
|
{ "type": "client", "title": "Fourth Group", "url": "https://fourth.example.com" },
|
|
{ "type": "client", "title": "Fifth Cooperative","url": "https://fifth.example.coop" },
|
|
{ "type": "client", "title": "Sixth Studio", "url": "https://sixth.example.com" }
|
|
]
|
|
},
|
|
{
|
|
"id": "writing",
|
|
"label": "Writing",
|
|
"kicker": "Notes & long-form",
|
|
"items": [
|
|
{ "type": "link", "title": "An essay title goes here", "url": "#", "description": "Essay · 8 min read" },
|
|
{ "type": "link", "title": "Another piece of writing", "url": "#", "description": "Field notes" }
|
|
]
|
|
},
|
|
{
|
|
"id": "praise",
|
|
"label": "Testimonials",
|
|
"kicker": "What people say",
|
|
"layout": "testimonials",
|
|
"headless": true,
|
|
"items": [
|
|
{
|
|
"type": "testimonial",
|
|
"quote": "Ada's notes on the Engine are the most penetrating remarks anyone has yet made on the subject of mechanical computation.",
|
|
"name": "Charles Babbage",
|
|
"role": "Mathematician",
|
|
"org": "Royal Society",
|
|
"date": "1843"
|
|
},
|
|
{
|
|
"type": "testimonial",
|
|
"quote": "She has thrown her thoughts into the form of a mathematical poem — an analytical instrument set in motion by the human mind.",
|
|
"name": "Michael Faraday",
|
|
"role": "Natural Philosopher",
|
|
"url": "https://example.com/faraday"
|
|
}
|
|
]
|
|
}
|
|
],
|
|
"social": [
|
|
{ "label": "GitHub", "url": "https://github.com/example", "icon": "github" },
|
|
{ "label": "LinkedIn", "url": "https://www.linkedin.com/in/example", "icon": "linkedin" },
|
|
{ "label": "Email", "url": "mailto:hello@example.com", "icon": "mail" },
|
|
{ "label": "RSS", "url": "/feed.xml", "icon": "rss" }
|
|
],
|
|
"footer": {
|
|
"copy": "Hand-built. No trackers.",
|
|
"year": "auto"
|
|
}
|
|
}
|