Initial commit: sam-pursuits

This commit is contained in:
2026-08-26 13:19:25 +10:00
commit 797efd3760
27 changed files with 2734 additions and 0 deletions

40
src/data/navItems.ts Normal file
View File

@@ -0,0 +1,40 @@
import {
LayoutDashboard,
Heart,
Bot,
Mail,
} from "lucide-react";
export interface NavItem {
path: string;
icon: typeof LayoutDashboard;
label: string;
children?: { path: string; label: string }[];
}
export const navItems: NavItem[] = [
{ path: "/", icon: LayoutDashboard, label: "Home" },
{
path: "/interests",
icon: Heart,
label: "Interests",
children: [
{ path: "/interests/camping", label: "Camping" },
{ path: "/interests/skiing", label: "Skiing" },
{ path: "/interests/hiking", label: "Hiking" },
{ path: "/interests/canoeing", label: "Canoeing" },
{ path: "/interests/surfing", label: "Surfing" },
{ path: "/interests/music", label: "Music" },
{ path: "/interests/fine-art", label: "Fine Art" },
{ path: "/interests/philosophy", label: "Philosophy" },
{ path: "/interests/reading", label: "Reading" },
{ path: "/interests/cooking", label: "Cooking" },
{ path: "/interests/gardening", label: "Gardening" },
{ path: "/interests/food-production", label: "Food Production" },
{ path: "/interests/italy-travel", label: "Italy Travel" },
{ path: "/interests/global-politics", label: "Global Politics" },
],
},
{ path: "/ai-chat", icon: Bot, label: "AI Chat" },
{ path: "/contact", icon: Mail, label: "Contact" },
];

933
src/data/pursuitsData.ts Normal file
View File

@@ -0,0 +1,933 @@
import React from "react";
import {
Music, Palette, BookOpen, Mountain, Tent, Sailboat, Waves, Map,
Globe, CookingPot, Sprout, Utensils, Plane, Backpack, Compass,
Guitar, Mic, Headphones, Calendar, CheckSquare, Image, Type, List,
} from "lucide-react";
export type ContentBlockType = "text" | "timeline" | "checklist" | "cards" | "gallery" | "list";
export interface TimelineItem {
date: string;
title: string;
description: string;
status?: "completed" | "upcoming" | "planning";
}
export interface ChecklistItem {
label: string;
checked: boolean;
category?: string;
}
export interface CardItem {
title: string;
description: string;
color?: string;
}
export interface GalleryItem {
title: string;
color: string;
}
export interface ContentBlock {
type: ContentBlockType;
title?: string;
paragraphs?: string[];
timelineItems?: TimelineItem[];
checklistItems?: ChecklistItem[];
cardItems?: CardItem[];
galleryItems?: GalleryItem[];
listItems?: string[];
}
export interface Section {
id: string;
title: string;
icon: React.ReactNode;
blocks: ContentBlock[];
}
export interface Pursuit {
slug: string;
title: string;
description: string;
icon: React.ReactNode;
color: "primary" | "secondary" | "tertiary";
sections: Section[];
}
export const pursuits: Pursuit[] = [
{
slug: "camping",
title: "Camping",
description: "Weekend camping trips and multi-day expeditions. Bushcraft and outdoor living skills.",
icon: React.createElement(Tent, { size: 24 }),
color: "tertiary",
sections: [
{
id: "trips",
title: "Trips",
icon: React.createElement(Calendar, { size: 18 }),
blocks: [
{
type: "timeline",
timelineItems: [
{ date: "2024-11", title: "Blue Mountains Base Camp", description: "3-day hike-in camping at Govetts Leap. Explored waterfalls and rock formations.", status: "completed" },
{ date: "2024-08", title: "Kangaroo Valley Riverside", description: "Weekend riverside camping with kayaking. Perfect weather and star gazing.", status: "completed" },
{ date: "2025-03", title: "Barrington Tops Adventure", description: "Planning a 5-day backcountry expedition. Route mapped via topographic guides.", status: "planning" },
{ date: "2025-06", title: "Jervis Bay Coastal", description: "Beachfront camping planned for winter. Whale watching season.", status: "upcoming" },
],
},
],
},
{
id: "gear",
title: "Gear",
icon: React.createElement(Backpack, { size: 18 }),
blocks: [
{
type: "checklist",
checklistItems: [
{ label: "4-season tent (MSR Hubba Hubba)", checked: true, category: "Shelter" },
{ label: "Sleeping bag (-10°C rated)", checked: true, category: "Sleep" },
{ label: "Inflatable sleeping pad", checked: true, category: "Sleep" },
{ label: "Jetboil stove system", checked: true, category: "Cooking" },
{ label: "Titanium cookware set", checked: false, category: "Cooking" },
{ label: "Water filter (Sawyer Squeeze)", checked: true, category: "Hydration" },
{ label: "Headlamp + backup", checked: true, category: "Lighting" },
{ label: "GPS device + maps", checked: true, category: "Navigation" },
{ label: "First aid kit", checked: true, category: "Safety" },
{ label: "Multi-tool", checked: true, category: "Tools" },
{ label: "Camp chair (Helinox)", checked: false, category: "Comfort" },
{ label: "Solar panel charger", checked: false, category: "Electronics" },
],
},
],
},
{
id: "albums",
title: "Albums",
icon: React.createElement(Image, { size: 18 }),
blocks: [
{
type: "gallery",
galleryItems: [
{ title: "Blue Mountains Sunrise", color: "#7FB3D5" },
{ title: "Valley Fog Morning", color: "#A2D9D1" },
{ title: "Campfire Cooking", color: "#F5B041" },
{ title: "Starry Night Tent", color: "#5D6D7E" },
{ title: "River Crossing", color: "#85C1E2" },
{ title: "Mountain Vista", color: "#A9DFBF" },
],
},
],
},
],
},
{
slug: "skiing",
title: "Skiing",
description: "Alpine and backcountry skiing. Annual trips to Italy and local resorts.",
icon: React.createElement(Mountain, { size: 24 }),
color: "primary",
sections: [
{
id: "trips",
title: "Trips",
icon: React.createElement(Calendar, { size: 18 }),
blocks: [
{
type: "timeline",
timelineItems: [
{ date: "2024-01", title: "Dolomites Super Ski", description: "10-day trip across Sella Ronda. 800km of linked slopes.", status: "completed" },
{ date: "2023-12", title: "Perisher Blue Cow", description: "Weekend powder chasing in NSW Snowy Mountains. Fresh 30cm overnight.", status: "completed" },
{ date: "2025-01", title: "Zermatt Matterhorn", description: "Planning Switzerland trip. Highest summer skiing in Europe.", status: "planning" },
],
},
],
},
{
id: "gear",
title: "Gear",
icon: React.createElement(Backpack, { size: 18 }),
blocks: [
{
type: "checklist",
checklistItems: [
{ label: "All-mountain skis (Volkl)", checked: true, category: "Skis" },
{ label: "Ski boots (Lange)", checked: true, category: "Boots" },
{ label: "Helmet with visor", checked: true, category: "Safety" },
{ label: "Goggles (photochromic)", checked: true, category: "Safety" },
{ label: "Gore-Tex jacket", checked: true, category: "Clothing" },
{ label: "Insulated pants", checked: true, category: "Clothing" },
{ label: "Avalanche beacon", checked: false, category: "Safety" },
{ label: "Ski touring bindings", checked: false, category: "Skis" },
],
},
],
},
{
id: "resorts",
title: "Resorts",
icon: React.createElement(Map, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "Dolomiti Superski", description: "Italy - 1,200km of slopes across 12 ski areas", color: "#C0392B" },
{ title: "Perisher", description: "Australia - Largest resort in Southern Hemisphere", color: "#2980B9" },
{ title: "Zermatt", description: "Switzerland - Ski under the Matterhorn year-round", color: "#8E44AD" },
{ title: "Thredbo", description: "Australia - Longest runs and best terrain parks", color: "#27AE60" },
{ title: "Val d'Isère", description: "France - High-altitude resort with glacier skiing", color: "#D35400" },
{ title: "Niseko", description: "Japan - Best powder snow in the world", color: "#16A085" },
],
},
],
},
],
},
{
slug: "hiking",
title: "Hiking",
description: "Trail hiking through national parks and wilderness areas. Day hikes and multi-day treks.",
icon: React.createElement(Map, { size: 24 }),
color: "secondary",
sections: [
{
id: "trails",
title: "Trails",
icon: React.createElement(Compass, { size: 18 }),
blocks: [
{
type: "timeline",
timelineItems: [
{ date: "2024-10", title: "Six Foot Track", description: "44km historic trail through Blue Mountains. 3-day trek.", status: "completed" },
{ date: "2024-05", title: "Royal National Park", description: "Coastal track from Bundeena to Otford. 26km day hike.", status: "completed" },
{ date: "2025-04", title: "Overland Track", description: "Planning Tasmania's 65km iconic trek. Cradle Mountain to Lake St Clair.", status: "planning" },
],
},
],
},
{
id: "gear",
title: "Gear",
icon: React.createElement(Backpack, { size: 18 }),
blocks: [
{
type: "checklist",
checklistItems: [
{ label: "Hiking boots (Salomon)", checked: true, category: "Footwear" },
{ label: "Daypack 32L", checked: true, category: "Bags" },
{ label: "Trekking poles", checked: true, category: "Accessories" },
{ label: "Hydration bladder 3L", checked: true, category: "Hydration" },
{ label: "Rain jacket (packable)", checked: true, category: "Clothing" },
{ label: "Merino base layers", checked: true, category: "Clothing" },
{ label: "GPS watch (Garmin)", checked: false, category: "Electronics" },
],
},
],
},
{
id: "albums",
title: "Albums",
icon: React.createElement(Image, { size: 18 }),
blocks: [
{
type: "gallery",
galleryItems: [
{ title: "Summit Views", color: "#85C1E2" },
{ title: "Forest Path", color: "#A9DFBF" },
{ title: "Coastal Cliffs", color: "#F5B041" },
{ title: "Waterfall Base", color: "#5D6D7E" },
{ title: "Wildflowers", color: "#D7BDE2" },
{ title: "Mountain Lake", color: "#7FB3D5" },
],
},
],
},
],
},
{
slug: "canoeing",
title: "Canoeing",
description: "River and lake canoeing. Flatwater and gentle whitewater routes.",
icon: React.createElement(Sailboat, { size: 24 }),
color: "tertiary",
sections: [
{
id: "trips",
title: "Trips",
icon: React.createElement(Calendar, { size: 18 }),
blocks: [
{
type: "timeline",
timelineItems: [
{ date: "2024-09", title: "Shoalhaven River", description: "2-day paddle from Bundanon to Nowra. 35km of pristine river.", status: "completed" },
{ date: "2024-04", title: "Lane Cove National Park", description: "Day paddle through Sydney's hidden waterway. Saw water dragons.", status: "completed" },
{ date: "2025-02", title: "Murray River Expedition", description: "Planning 5-day Murray River section. Camping on sandbars.", status: "planning" },
],
},
],
},
{
id: "gear",
title: "Gear",
icon: React.createElement(Backpack, { size: 18 }),
blocks: [
{
type: "checklist",
checklistItems: [
{ label: "Canadian canoe", checked: true, category: "Boat" },
{ label: "Carbon fiber paddles", checked: true, category: "Paddles" },
{ label: "PFD (life jacket)", checked: true, category: "Safety" },
{ label: "Dry bags (various sizes)", checked: true, category: "Storage" },
{ label: "Spray deck", checked: false, category: "Accessories" },
{ label: "Portable bilge pump", checked: true, category: "Safety" },
],
},
],
},
{
id: "routes",
title: "Routes",
icon: React.createElement(Map, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "Shoalhaven River", description: "NSW - 35km of flatwater through national park", color: "#2980B9" },
{ title: "Lane Cove", description: "Sydney - Urban wilderness paddle, easy access", color: "#27AE60" },
{ title: "Murray River", description: "VIC/NSW - Australia's longest river, multi-day trips", color: "#D35400" },
{ title: "Hawkesbury River", description: "NSW - Coastal estuary with campsites", color: "#8E44AD" },
],
},
],
},
],
},
{
slug: "surfing",
title: "Surfing",
description: "Chasing waves along the coast. Longboard and shortboard riding.",
icon: React.createElement(Waves, { size: 24 }),
color: "secondary",
sections: [
{
id: "trips",
title: "Trips",
icon: React.createElement(Calendar, { size: 18 }),
blocks: [
{
type: "timeline",
timelineItems: [
{ date: "2024-07", title: "Byron Bay Winter Swell", description: "Chasing 6ft+ swells at The Pass. Water was chilly but worth it.", status: "completed" },
{ date: "2024-02", title: "Bells Beach Road Trip", description: "Great Ocean Road surf safari. 5 days of waves and coastal camping.", status: "completed" },
{ date: "2025-08", title: "Indonesia Boat Trip", description: "Planning Mentawai Islands surf charter. 10 days of perfection.", status: "upcoming" },
],
},
],
},
{
id: "gear",
title: "Gear",
icon: React.createElement(Backpack, { size: 18 }),
blocks: [
{
type: "checklist",
checklistItems: [
{ label: "7'6 funboard", checked: true, category: "Boards" },
{ label: "9'0 longboard", checked: true, category: "Boards" },
{ label: "3/2mm wetsuit", checked: true, category: "Wetsuits" },
{ label: "5/4mm winter suit", checked: true, category: "Wetsuits" },
{ label: "Leash (competition)", checked: true, category: "Accessories" },
{ label: "Board bag (travel)", checked: true, category: "Storage" },
{ label: "Surf wax", checked: true, category: "Accessories" },
{ label: "Roof racks", checked: true, category: "Transport" },
],
},
],
},
{
id: "breaks",
title: "Breaks",
icon: React.createElement(Map, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "The Pass - Byron Bay", description: "Long peeling right-hand point break. Best at 4-6ft.", color: "#2980B9" },
{ title: "Bells Beach", description: "Victoria's iconic reef break. Home of the Rip Curl Pro.", color: "#C0392B" },
{ title: "Manly Beach", description: "Sydney's most consistent beach break. All skill levels.", color: "#27AE60" },
{ title: "Snapper Rocks", description: "Gold Coast super bank. World-class right-handers.", color: "#F39C12" },
],
},
],
},
],
},
{
slug: "music",
title: "Music",
description: "Guitar playing, music production, and live performance. Building a home studio setup.",
icon: React.createElement(Music, { size: 24 }),
color: "primary",
sections: [
{
id: "gigs",
title: "Gigs",
icon: React.createElement(Mic, { size: 18 }),
blocks: [
{
type: "timeline",
timelineItems: [
{ date: "2024-08", title: "The Lansdowne Hotel", description: "Acoustic set opening for local folk band. 45-minute set.", status: "completed" },
{ date: "2024-05", title: "Factory Theatre", description: "Band gig with full lineup. Sold out 200-capacity venue.", status: "completed" },
{ date: "2025-01", title: "Enmore Theatre", description: "Supporting act for touring indie band. Dream venue.", status: "upcoming" },
],
},
],
},
{
id: "instruments",
title: "Instruments",
icon: React.createElement(Guitar, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "Fender Stratocaster", description: "American Pro II. Main electric for gigs and recording.", color: "#C0392B" },
{ title: "Martin D-28", description: "Acoustic workhorse. Rich, balanced tone for folk and blues.", color: "#2980B9" },
{ title: "Fender Jazz Bass", description: "For recording sessions and band gigs when needed.", color: "#27AE60" },
{ title: "Korg Minilogue", description: "Analog synthesizer for production and sound design.", color: "#8E44AD" },
],
},
],
},
{
id: "songs",
title: "Songs to Learn",
icon: React.createElement(CheckSquare, { size: 18 }),
blocks: [
{
type: "checklist",
checklistItems: [
{ label: "Blackbird - The Beatles", checked: true, category: "Acoustic" },
{ label: "Stairway to Heaven - Led Zeppelin", checked: false, category: "Classic Rock" },
{ label: "Neon - John Mayer", checked: false, category: "Fingerstyle" },
{ label: "Wish You Were Here - Pink Floyd", checked: true, category: "Classic Rock" },
{ label: "Dust in the Wind - Kansas", checked: false, category: "Fingerstyle" },
{ label: "Tears in Heaven - Eric Clapton", checked: true, category: "Acoustic" },
{ label: "Cannonball - Damien Rice", checked: false, category: "Contemporary" },
],
},
],
},
],
},
{
slug: "fine-art",
title: "Fine Art",
description: "Painting, sketching, and digital art creation. Exploring various mediums from watercolor to acrylic.",
icon: React.createElement(Palette, { size: 24 }),
color: "secondary",
sections: [
{
id: "mediums",
title: "Mediums",
icon: React.createElement(Palette, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "Watercolor", description: "Transparent washes and wet-on-wet techniques. Winsor & Newton paints.", color: "#85C1E2" },
{ title: "Acrylic", description: "Bold colors and layering. Golden Heavy Body acrylics.", color: "#F5B041" },
{ title: "Charcoal Sketching", description: "Life drawing and gesture sketches. Nitram charcoal.", color: "#5D6D7E" },
{ title: "Digital Art", description: "Procreate on iPad Pro. Concept art and illustration.", color: "#D7BDE2" },
],
},
],
},
{
id: "gallery",
title: "Gallery",
icon: React.createElement(Image, { size: 18 }),
blocks: [
{
type: "gallery",
galleryItems: [
{ title: "Mountain Landscape", color: "#85C1E2" },
{ title: "Portrait Study", color: "#F5B041" },
{ title: "Still Life", color: "#A9DFBF" },
{ title: "Abstract Composition", color: "#D7BDE2" },
{ title: "Coastal Scene", color: "#5D6D7E" },
{ title: "Figure Drawing", color: "#C0392B" },
],
},
],
},
{
id: "inspiration",
title: "Inspiration",
icon: React.createElement(Type, { size: 18 }),
blocks: [
{
type: "text",
title: "Current Projects",
paragraphs: [
"Working on a series of landscapes inspired by the Blue Mountains region. Focusing on capturing the interplay of light and shadow during golden hour.",
"Exploring portraiture in charcoal. Weekly life drawing sessions at the community art center. Challenging myself to capture gesture and expression in quick 5-minute sketches.",
"Digital illustration project: Creating a visual narrative of a fictional coastal town. Developing character designs and environmental concepts.",
],
},
],
},
],
},
{
slug: "philosophy",
title: "Philosophy",
description: "Deep exploration of stoicism, existentialism, and ethics. Reading and reflecting on life's big questions.",
icon: React.createElement(BookOpen, { size: 24 }),
color: "tertiary",
sections: [
{
id: "reading",
title: "Reading List",
icon: React.createElement(BookOpen, { size: 18 }),
blocks: [
{
type: "timeline",
timelineItems: [
{ date: "2024", title: "Meditations - Marcus Aurelius", description: "Daily stoic reflections. Translated by Gregory Hays.", status: "completed" },
{ date: "2024", title: "Being and Nothingness - Sartre", description: "Existentialism explored. Heavy but rewarding read.", status: "completed" },
{ date: "2025", title: "The Republic - Plato", description: "Revisiting the classics. Focus on justice and the ideal state.", status: "planning" },
{ date: "2025", title: "Nicomachean Ethics - Aristotle", description: "Virtue ethics and the good life. Next on the reading list.", status: "upcoming" },
],
},
],
},
{
id: "concepts",
title: "Key Concepts",
icon: React.createElement(Type, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "Stoicism", description: "Focus on what you can control. Amor fati - love of fate.", color: "#27AE60" },
{ title: "Existentialism", description: "Existence precedes essence. We create our own meaning.", color: "#2980B9" },
{ title: "Virtue Ethics", description: "Character over rules. Developing practical wisdom.", color: "#8E44AD" },
{ title: "Phenomenology", description: "Studying consciousness and lived experience.", color: "#D35400" },
],
},
],
},
{
id: "reflections",
title: "Reflections",
icon: React.createElement(Type, { size: 18 }),
blocks: [
{
type: "text",
title: "Recent Thoughts",
paragraphs: [
"The tension between determinism and free will continues to fascinate me. Reading compatibilist perspectives has shifted my thinking on responsibility and choice.",
"Applying Stoic principles to modern life: The dichotomy of control is a powerful framework for reducing anxiety about uncertain outcomes.",
],
},
],
},
],
},
{
slug: "reading",
title: "Reading",
description: "Avid reader across fiction, non-fiction, and technical literature. Building a personal library.",
icon: React.createElement(BookOpen, { size: 24 }),
color: "primary",
sections: [
{
id: "current",
title: "Currently Reading",
icon: React.createElement(BookOpen, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "Dune - Frank Herbert", description: "Sci-fi epic. Political intrigue meets ecology. 60% complete.", color: "#D35400" },
{ title: "The Pragmatic Programmer", description: "Technical. Revisiting classic software development wisdom.", color: "#2980B9" },
{ title: "Sapiens - Yuval Noah Harari", description: "Non-fiction. History of humankind. Fascinating perspective.", color: "#27AE60" },
],
},
],
},
{
id: "favorites",
title: "Favorites",
icon: React.createElement(List, { size: 18 }),
blocks: [
{
type: "list",
listItems: [
"1984 - George Orwell",
"The Great Gatsby - F. Scott Fitzgerald",
"Slaughterhouse-Five - Kurt Vonnegut",
"Neuromancer - William Gibson",
"The Catcher in the Rye - J.D. Salinger",
"Brave New World - Aldous Huxley",
"Fahrenheit 451 - Ray Bradbury",
],
},
],
},
{
id: "to-read",
title: "To Read",
icon: React.createElement(CheckSquare, { size: 18 }),
blocks: [
{
type: "checklist",
checklistItems: [
{ label: "Project Hail Mary - Andy Weir", checked: false, category: "Fiction" },
{ label: "The Three-Body Problem - Liu Cixin", checked: false, category: "Sci-Fi" },
{ label: "Atomic Habits - James Clear", checked: true, category: "Self-Help" },
{ label: "Thinking, Fast and Slow - Kahneman", checked: false, category: "Psychology" },
{ label: "Clean Code - Robert Martin", checked: true, category: "Technical" },
{ label: "The Design of Everyday Things - Norman", checked: false, category: "Design" },
],
},
],
},
],
},
{
slug: "cooking",
title: "Cooking",
description: "From everyday meals to elaborate dinner parties. Exploring cuisines from around the world.",
icon: React.createElement(CookingPot, { size: 24 }),
color: "tertiary",
sections: [
{
id: "recipes",
title: "Recipes",
icon: React.createElement(List, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "Beef Bourguignon", description: "Classic French stew. Red wine braised beef with mushrooms.", color: "#C0392B" },
{ title: "Pad Thai", description: "Thai street food classic. Tamarind, peanuts, and fresh herbs.", color: "#F39C12" },
{ title: "Homemade Pasta", description: "Fresh egg pasta from scratch. Simple tomato basil sauce.", color: "#E74C3C" },
{ title: "Ramen", description: "Tonkotsu broth with chashu pork. 12-hour broth.", color: "#D35400" },
],
},
],
},
{
id: "techniques",
title: "Techniques",
icon: React.createElement(Type, { size: 18 }),
blocks: [
{
type: "text",
title: "Mastering the Basics",
paragraphs: [
"Knife skills: Working on julienne and brunoise cuts. Speed and consistency improving with weekly practice.",
"Sourdough bread: Maintaining a 3-year-old starter. Experimenting with hydration levels and fermentation times.",
"Temperature control: Perfecting reverse-sear for steaks. Investing in a quality instant-read thermometer.",
],
},
],
},
{
id: "ingredients",
title: "Ingredients",
icon: React.createElement(List, { size: 18 }),
blocks: [
{
type: "checklist",
checklistItems: [
{ label: "Cold-pressed olive oil (Italian)", checked: true, category: "Pantry" },
{ label: "Maldon sea salt", checked: true, category: "Pantry" },
{ label: "Szechuan peppercorns", checked: true, category: "Spices" },
{ label: "Kombu and bonito flakes", checked: true, category: "Japanese" },
{ label: "00 Flour for pasta", checked: true, category: "Baking" },
{ label: "Aged balsamic vinegar", checked: false, category: "Pantry" },
],
},
],
},
],
},
{
slug: "gardening",
title: "Gardening",
description: "Growing vegetables, herbs, and flowers. Sustainable and organic practices.",
icon: React.createElement(Sprout, { size: 24 }),
color: "secondary",
sections: [
{
id: "plants",
title: "Plants",
icon: React.createElement(Sprout, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "Tomatoes", description: " heirloom varieties. Brandywine and Cherokee Purple doing well.", color: "#E74C3C" },
{ title: "Herbs", description: "Basil, rosemary, thyme, and oregano. Mediterranean herb garden.", color: "#27AE60" },
{ title: "Native Flowers", description: "Banksias, grevilleas, and waratahs. Attracting local birds.", color: "#F39C12" },
{ title: "Leafy Greens", description: "Kale, spinach, and silverbeet. Year-round harvest.", color: "#2ECC71" },
],
},
],
},
{
id: "seasons",
title: "Seasons",
icon: React.createElement(Calendar, { size: 18 }),
blocks: [
{
type: "timeline",
timelineItems: [
{ date: "Spring 2024", title: "Planting Season", description: "Started tomatoes, peppers, and basil from seed. Added compost.", status: "completed" },
{ date: "Summer 2024", title: "Peak Harvest", description: "Daily harvests of zucchini, cucumbers, and beans. Made preserves.", status: "completed" },
{ date: "Autumn 2025", title: "Winter Prep", description: "Planning garlic and onion planting. Building raised beds.", status: "planning" },
],
},
],
},
{
id: "projects",
title: "Projects",
icon: React.createElement(CheckSquare, { size: 18 }),
blocks: [
{
type: "checklist",
checklistItems: [
{ label: "Build compost system", checked: true, category: "Infrastructure" },
{ label: "Install drip irrigation", checked: true, category: "Infrastructure" },
{ label: "Construct raised beds", checked: false, category: "Infrastructure" },
{ label: "Build greenhouse", checked: false, category: "Infrastructure" },
{ label: "Start worm farm", checked: true, category: "Composting" },
],
},
],
},
],
},
{
slug: "food-production",
title: "Food Production",
description: "Artisanal food crafting including homemade salami, cheese making, honey harvesting, and salt production.",
icon: React.createElement(Utensils, { size: 24 }),
color: "primary",
sections: [
{
id: "salami",
title: "Salami",
icon: React.createElement(Type, { size: 18 }),
blocks: [
{
type: "text",
title: "Charcuterie Journey",
paragraphs: [
"Started with basic sopressa using pork shoulder and back fat. Cured for 6 weeks in a DIY curing chamber (converted wine fridge with humidity control).",
"Currently experimenting with finocchiona (fennel salami) and chorizo with smoked paprika. Learning the importance of proper fermentation temperature.",
],
},
{
type: "checklist",
checklistItems: [
{ label: "Sopressa (mild)", checked: true, category: "Completed" },
{ label: "Finocchiona (fennel)", checked: true, category: "Completed" },
{ label: "Chorizo (spicy)", checked: false, category: "In Progress" },
{ label: "Coppa (dry-cured pork)", checked: false, category: "Planned" },
],
},
],
},
{
id: "cheese",
title: "Cheese",
icon: React.createElement(Type, { size: 18 }),
blocks: [
{
type: "text",
title: "From Milk to Magic",
paragraphs: [
"Began with fresh cheeses: ricotta and mozzarella. Simple 30-minute processes with immediate gratification.",
"Progressed to aged cheeses. First attempt at cheddar is aging (3 months so far). Learning about affinage and proper humidity.",
],
},
{
type: "checklist",
checklistItems: [
{ label: "Ricotta", checked: true, category: "Fresh" },
{ label: "Mozzarella", checked: true, category: "Fresh" },
{ label: "Haloumi", checked: true, category: "Fresh" },
{ label: "Cheddar (aging)", checked: false, category: "Aged" },
{ label: "Camembert", checked: false, category: "Aged" },
],
},
],
},
{
id: "honey",
title: "Honey",
icon: React.createElement(Type, { size: 18 }),
blocks: [
{
type: "text",
title: "Urban Beekeeping",
paragraphs: [
"Two hives in the backyard. Harvested 15kg of wildflower honey in the first season.",
"Learning about colony management, pest control (varroa mites), and seasonal hive management.",
],
},
],
},
{
id: "salt",
title: "Salt",
icon: React.createElement(Type, { size: 18 }),
blocks: [
{
type: "text",
title: "Sea Salt Harvesting",
paragraphs: [
"Collecting seawater from pristine coastal locations. Evaporating in greenhouse trays.",
"First batch yielded beautiful flaky crystals. Experimenting with infused salts (rosemary, lemon, chili).",
],
},
],
},
],
},
{
slug: "italy-travel",
title: "Italy Travel",
description: "Regular visits to Italy for skiing, dining, and cultural exploration. Favorite restaurants and hidden gems.",
icon: React.createElement(Plane, { size: 24 }),
color: "secondary",
sections: [
{
id: "trips",
title: "Trips",
icon: React.createElement(Calendar, { size: 18 }),
blocks: [
{
type: "timeline",
timelineItems: [
{ date: "2024-01", title: "Dolomites Ski Trip", description: "10 days in Alta Badia and Cortina. Skiing the Sella Ronda circuit.", status: "completed" },
{ date: "2023-06", title: "Tuscany Road Trip", description: "Drove from Florence to Siena. Wine tasting in Chianti region.", status: "completed" },
{ date: "2025-01", title: "Dolomites Return", description: "Planning another ski trip. Adding Venice day trip.", status: "planning" },
],
},
],
},
{
id: "restaurants",
title: "Restaurants",
icon: React.createElement(List, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "El Celler de Can Roca", description: "Girona, Spain - World-class dining. 3 Michelin stars.", color: "#C0392B" },
{ title: "Osteria Francescana", description: "Modena, Italy - Italian avant-garde cuisine.", color: "#2980B9" },
{ title: "Trattoria al Pompiere", description: "Verona, Italy - Traditional Veronese. Bollito misto specialty.", color: "#27AE60" },
{ title: "Rifugio Scotoni", description: "Dolomites - Mountain hut with stunning views. Wild game menu.", color: "#D35400" },
],
},
],
},
{
id: "favorites",
title: "Favorites",
icon: React.createElement(List, { size: 18 }),
blocks: [
{
type: "list",
listItems: [
"Favorite Region: Trentino-Alto Adige",
"Best Coffee: Triestino style in Trieste",
"Must-Try Dish: Bollito misto with pearà sauce",
"Hidden Gem: Lago di Braies in early morning",
"Best Gelato: Perche No! in Florence",
"Favorite Market: Mercato di Mezzo in Bologna",
],
},
],
},
],
},
{
slug: "global-politics",
title: "Global Politics",
description: "Following international relations, political theory, and current events across multiple regions.",
icon: React.createElement(Globe, { size: 24 }),
color: "tertiary",
sections: [
{
id: "regions",
title: "Regions",
icon: React.createElement(Map, { size: 18 }),
blocks: [
{
type: "cards",
cardItems: [
{ title: "Europe", description: "EU dynamics, Brexit aftermath, and Eastern European politics.", color: "#2980B9" },
{ title: "Asia-Pacific", description: "China-US relations, ASEAN dynamics, and Indo-Pacific strategy.", color: "#C0392B" },
{ title: "Middle East", description: "Israel-Palestine conflict, Iran nuclear deal, and Gulf diplomacy.", color: "#27AE60" },
{ title: "Americas", description: "US domestic politics, Latin American shifts, and trade policy.", color: "#D35400" },
],
},
],
},
{
id: "reading",
title: "Reading",
icon: React.createElement(BookOpen, { size: 18 }),
blocks: [
{
type: "list",
listItems: [
"The Economist - Weekly analysis",
"Foreign Affairs - Quarterly deep dives",
"The Atlantic - Long-form journalism",
"Al Jazeera - Alternative perspectives",
"Financial Times - Global economics",
],
},
],
},
{
id: "topics",
title: "Topics",
icon: React.createElement(Type, { size: 18 }),
blocks: [
{
type: "text",
title: "Current Focus",
paragraphs: [
"The shifting global order: Analyzing the transition from unipolar to multipolar world. Impact on trade, security, and diplomacy.",
"Climate politics: How environmental policy is reshaping international alliances and economic strategies.",
"Technology governance: AI regulation, digital sovereignty, and the politics of emerging technologies.",
],
},
],
},
],
},
];
export function getPursuitBySlug(slug: string): Pursuit | undefined {
return pursuits.find((p) => p.slug === slug);
}
export function getAllPursuitSlugs(): string[] {
return pursuits.map((p) => p.slug);
}