// ─── Kaonara Sections Part 2: FlavorWheel, Craftsmanship, Rarity, Pairing, Footer ─ // ─── Flavor Wheel ───────────────────────────────────────────────────────────── function FlavorWheel({ tweaks }) { const [active, setActive] = React.useState(null); const w = useWindowWidth(); const isMobile = w < 768; const honeyList = window.honeys; const size = isMobile ? 260 : 340; const cx = size / 2, cy = size / 2; const radii = { sweetness: 55, intensity: 90, aroma: 120, rarity: 150 }; const axes = Object.keys(radii); const honeyColors = ["#c4862a","#4a8c6e","#d4b87a","#c45a3a","#c43040"]; function polarToCart(angle, r) { const a = (angle - 90) * (Math.PI / 180); return { x: cx + r * Math.cos(a), y: cy + r * Math.sin(a) }; } function honeyPoints(honey) { const vals = { sweetness: honey.sweetness, intensity: honey.intensity, aroma: 3, rarity: honey.rarity }; const angleStep = 360 / 4; return axes.map((ax, i) => { const r = (vals[ax] / 5) * radii[ax]; return polarToCart(i * angleStep, r); }); } function pointsStr(pts) { return pts.map(p => `${p.x},${p.y}`).join(" "); } // Grid rings const rings = [1, 2, 3, 4, 5]; return (

Sensory Comparison

The taste
of each season.

Each honey occupies its own sensory territory. Hover to isolate a single profile against the full collection.

{honeyList.map((h, i) => (
setActive(i)} onMouseLeave={() => setActive(null)} >

{h.name}

SWEET {h.sweetness}/5 RARE {h.rarity}/5
))}
{/* Grid */} {rings.map(r => ( {axes.map((ax, i) => { const angleStep = 360 / 4; const p = polarToCart(i * angleStep, (r / 5) * radii[ax]); const p2 = polarToCart(((i + 1) % 4) * angleStep, (r / 5) * radii[(axes)[(i + 1) % 4]]); return null; })} {/* Concentric polygons */} { const maxR = Math.max(...Object.values(radii)); const p = polarToCart(i * 90, (r / 5) * maxR); return `${p.x},${p.y}`; }).join(" ")} fill="none" stroke="rgba(196,134,42,0.1)" strokeWidth="0.5" /> ))} {/* Axes */} {axes.map((ax, i) => { const maxR = Math.max(...Object.values(radii)); const end = polarToCart(i * 90, maxR); return ( {ax.toUpperCase()} ); })} {/* Honey polygons */} {honeyList.map((h, i) => { const pts = honeyPoints(h); const isActive = active === i; const isInactive = active !== null && !isActive; return ( ); })} {/* Center dot */}
); } // ─── Craftsmanship ──────────────────────────────────────────────────────────── function Craftsmanship({ tweaks }) { const w = useWindowWidth(); const isMobile = w < 768; const steps = [ { num: "01", title: "Cold Extraction", desc: "Honey is extracted at ambient temperature — never heated above the hive's natural warmth. All enzymes, pollens, and phenolic compounds remain intact." }, { num: "02", title: "Minimal Filtration", desc: "Coarse-filtered once through fine mesh. Wax particles and large debris removed; fine pollen and propolis remain. The honey retains its living complexity." }, { num: "03", title: "No Pasteurisation", desc: "We do not heat-treat. Pasteurisation extends shelf life while destroying what makes raw honey remarkable. We choose complexity over convenience." }, { num: "04", title: "Regenerative Apiculture", desc: "Hive health is primary. We manage for the colony, not the harvest. Honey is taken only from surplus — the bees' winter stores are never touched." }, ]; return (

Process

Nothing added.
Nothing removed.

Commercial honey is heated, ultra-filtered, and blended from multiple origins to achieve uniformity. We consider this a category error. Miranda's Bees honeys are single-origin, single-bloom, single-season. Variability is not a defect — it is the point.

{steps.map((s, i) => (
{s.num}

{s.title}

{s.desc}

))}
{/* Certifications */}
{["Raw Organic", "Product of Hawai'i", "Regenerative Care", "Non-GMO"].map((cert, i) => (

{cert}

))}
); } // ─── Rarity ─────────────────────────────────────────────────────────────────── function Rarity({ tweaks }) { const w = useWindowWidth(); const isMobile = w < 768; return (

Limited Edition

The bloom decides
how much exists.

'Ōhi'a lehua blooms for eleven days. Keawe, for three weeks. We cannot make more. We do not stockpile seasons. Each jar is numbered from the batch, dated from the harvest.

{[ { value: "< 200", label: "Jars per batch", sub: "'Ōhi'a Lehua" }, { value: "11", label: "Days of bloom", sub: "average monofloral window" }, { value: "100%", label: "Hand-numbered", sub: "every jar, every season" }, ].map((s, i) => (

{s.value}

{s.label}

{s.sub}

))}
); } // ─── Pairing ────────────────────────────────────────────────────────────────── function Pairing({ tweaks }) { const [activeTab, setActiveTab] = React.useState(0); const w = useWindowWidth(); const isMobile = w < 768; const tabs = [ { label: "Tea Ceremony", icon: "茶", desc: "The ritual of chado meets the ritual of harvest. Keawe honey dissolves in hot water into near-invisibility — sweetening without altering. 'Ōhi'a lehua alongside matcha, a contrast in terroir.", pairings: [ { name: "Matcha (Usucha)", honey: "'Ōhi'a Lehua", note: "Floral against vegetal bitterness" }, { name: "Hojicha", honey: "Macadamia-Coffee", note: "Roasted mirrors roasted" }, { name: "Oolong (High-mountain)", honey: "Keawe", note: "Delicate on delicate" }, { name: "Darjeeling First Flush", honey: "Christmas Berry", note: "Muscatel meets spice" }, ], }, { label: "Fromage", icon: "◈", desc: "Honey and aged cheese share the language of time. The Maillard reactions, the bacterial cultures, the slow transformation. A board with three honeys and three cheeses is a conversation across continents.", pairings: [ { name: "Roquefort", honey: "Macadamia-Coffee", note: "Blue salt meets caramel depth" }, { name: "Comté 24 months", honey: "Christmas Berry", note: "Nutty + spice elevation" }, { name: "Brillat-Savarin", honey: "Keawe", note: "Cream on cream, vanilla thread" }, { name: "Manchego Reserva", honey: "Eucalyptus", note: "Herbal counterpoint" }, ], }, { label: "Cocktails", icon: "◇", desc: "In place of sugar syrups: a 1:1 honey-water solution, or honey dissolved directly. Christmas Berry transforms a simple gin cocktail. Macadamia-Coffee enriches an Old Fashioned in a single drop.", pairings: [ { name: "Mezcal Negroni", honey: "Christmas Berry", note: "Spice amplifies smoke" }, { name: "Whisky Old Fashioned", honey: "Macadamia-Coffee", note: "Cacao deepens oak" }, { name: "Gin & Tonic", honey: "Eucalyptus", note: "Botanical on botanical" }, { name: "Champagne Float", honey: "'Ōhi'a Lehua", note: "One drop. Rare on rare." }, ], }, ]; const tab = tabs[activeTab]; return (

Pairing & Ritual

The art of
the alongside.

{/* Tabs */}
{tabs.map((t, i) => ( ))}

{tab.desc}

{tab.pairings.map((p, i) => (

{p.name}

{p.note}

{p.honey}
))}
); } // ─── Footer ─────────────────────────────────────────────────────────────────── function Footer({ tweaks }) { const [email, setEmail] = React.useState(""); const [submitted, setSubmitted] = React.useState(false); const w = useWindowWidth(); const isMobile = w < 768; return ( ); } Object.assign(window, { FlavorWheel, Craftsmanship, Rarity, Pairing, Footer, useWindowWidth });