import React from "react";
function Section({ title, children }: { title: string; children: React.ReactNode }) {
return (
);
}
const columns = ["Name", "Destination", "Status", "Price"] as const;
interface Row {
name: string;
destination: string;
status: string;
price: string;
}
// Flux badge colours — matches flux.kaptio.com/components/badge/
const BADGE_COLORS: Record = {
confirmed: { bg: "#BFE5B8" },
completed: { bg: "#BFE5B8" },
pending: { bg: "#FFD78E" },
"action required": { bg: "#FFD78E" },
"on request": { bg: "#FFD78E" },
"awaiting supplier": { bg: "#C6DAFF" },
cancelled: { bg: "#FFA99B" },
rejected: { bg: "#FFA99B" },
expired: { bg: "#FFA99B" },
};
function StatusBadge({ status }: { status: string }) {
const { bg } = BADGE_COLORS[status.toLowerCase()] ?? { bg: "#B4D4DA" };
return (
{status}
);
}
const rows: Row[] = [
{ name: "Northern Lights Tour", destination: "Reykjavik, Iceland", status: "Confirmed", price: "$2,450" },
{ name: "Amalfi Coast Escape", destination: "Naples, Italy", status: "Pending", price: "$3,800" },
{ name: "Safari Adventure", destination: "Nairobi, Kenya", status: "Confirmed", price: "$5,200" },
{ name: "Patagonia Trek", destination: "El Calafate, Argentina", status: "Cancelled", price: "$4,100" },
{ name: "Kyoto Heritage Walk", destination: "Kyoto, Japan", status: "Confirmed", price: "$3,150" },
];
const thClass =
"text-xs font-bold uppercase tracking-wider text-[var(--flux-grey-300)] border-b border-[var(--flux-grey-100)] pb-3 text-left";
const tdClass = "py-3 border-b border-[var(--flux-grey-100)] text-[var(--flux-black)] font-light";
export default function TableDemo() {
return (
{columns.map((col) => (
|
{col}
|
))}
{rows.map((row) => (
| {row.name} |
{row.destination} |
|
{row.price} |
))}
{columns.map((col) => (
|
{col}
|
))}
{rows.map((row, i) => (
| {row.name} |
{row.destination} |
|
{row.price} |
))}
);
}