Initial commit: sam-pursuits
This commit is contained in:
40
src/data/navItems.ts
Normal file
40
src/data/navItems.ts
Normal 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
933
src/data/pursuitsData.ts
Normal 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);
|
||||
}
|
||||
Reference in New Issue
Block a user