"use client"; import { useState } from "react"; interface TableMeta { name: string; description: string; } interface DatasetMeta { name: string; description: string; dateRange: string; rows: string; channels: string[]; tables: TableMeta[]; kaggleUrl: string; } // Demo-only: intentionally hardcoded for the REES46 hackathon dataset. // If the project ever supports multiple datasets, this should be a prop // fed from an API endpoint that reads semantic_layer.yml at runtime. const DATASET: DatasetMeta = { name: "REES46 Direct Messaging", description: "Multichannel campaign data from a mid-size e-commerce retailer — 46 days of email and mobile push activity across ~3.35M recipients.", dateRange: "Apr 30 – Jun 14, 2021", rows: "~10M messages", channels: ["email", "mobile_push"], tables: [ { name: "messages", description: "One row per message sent" }, { name: "campaigns", description: "Campaign metadata & topic" }, { name: "holidays", description: "Russian public holiday calendar" }, { name: "client_first_purchase_date", description: "First purchase timestamp per recipient", }, ], kaggleUrl: "https://www.kaggle.com/datasets/mkechinov/direct-messaging", }; const PANEL_ID = "dataset-info-panel"; export default function DatasetInfo() { const [open, setOpen] = useState(false); return (
{open && (
{/* Name + description */}

{DATASET.name}

{DATASET.description}

{/* Key stats */}
{/* Tables */}

Tables

{DATASET.tables.map((t) => (
{t.name}

{t.description}

))}
{/* Kaggle link */} View on Kaggle
)}
); } function Stat({ label, value }: { label: string; value: string }) { return (
{label} {value}
); }