/* Cordish Plaza — shared UI components + inline Lucide-style icons.
Exports to window so other babel scripts can use them. */
const PLAZA_ICONS = {
"arrow-right": '',
"map-pin": '',
"store": '',
"ruler": '',
"banknote": '',
"droplets": '',
"zap": '',
"shield-check": '',
"sparkles": '',
"trees": '',
"pill": '',
"hammer": '',
"cup-soda": '',
"cookie": '',
"check": '',
"phone": '',
"message-circle": '',
"mail": '',
"building-2": '',
"key-round": '',
"filter": '',
"send": '',
"scaling": '',
"users": ''
};
function Icon({ name, size = 22, style }) {
return React.createElement("svg", {
width: size, height: size, viewBox: "0 0 24 24",
fill: "none", stroke: "currentColor", strokeWidth: 1.8,
strokeLinecap: "round", strokeLinejoin: "round",
style, "aria-hidden": "true",
dangerouslySetInnerHTML: { __html: PLAZA_ICONS[name] || "" }
});
}
function DS() { return window.CordishGroupDesignSystem_93cd80 || {}; }
/* Btn — delegates to the DS Button for real buttons; renders a DS-styled for links. */
const BTN_SIZES = { sm: { padding: "8px 16px", fontSize: 13 }, md: { padding: "11px 22px", fontSize: 14 }, lg: { padding: "14px 28px", fontSize: 15 } };
const BTN_VARIANTS = {
primary: { background: "var(--cd-purple)", color: "#fff", border: "1px solid var(--cd-purple)" },
secondary: { background: "transparent", color: "var(--cd-purple)", border: "1px solid var(--cd-purple)" },
gold: { background: "var(--cd-gold)", color: "#fff", border: "1px solid var(--cd-gold)" }
};
function Btn({ variant = "primary", size, href, onClick, icon, iconRight, children, block, type, style }) {
const dsSize = size === "sm" ? "sm" : (size === "lg" ? "lg" : "md");
const iSz = size === "sm" ? 16 : 18;
const il = icon ? React.createElement(Icon, { name: icon, size: iSz }) : null;
const ir = iconRight ? React.createElement(Icon, { name: iconRight, size: iSz }) : null;
const extra = block ? { width: "100%" } : {};
if (href) {
return React.createElement("a", {
href, onClick, className: "btn",
style: { ...BTN_SIZES[dsSize], ...BTN_VARIANTS[variant], ...extra, ...style }
}, il, React.createElement("span", null, children), ir);
}
const Button = DS().Button;
if (Button) return React.createElement(Button, { variant, size: dsSize, iconLeft: il, iconRight: ir, onClick, type: type || "button", style: { ...extra, ...style } }, children);
return React.createElement("button", { className: "btn", onClick, type: type || "button", style: { ...BTN_SIZES[dsSize], ...BTN_VARIANTS[variant], ...extra, ...style } }, il, children, ir);
}
/* IconChip — DS circular line-icon badge. tone: purple | gold | teal.
Fallback honors the tone so the gold + teal accents show without the DS bundle. */
const CHIP_TONES = { purple: "var(--cd-purple)", gold: "var(--cd-gold)", teal: "var(--cd-teal)" };
function IconChip({ tone = "purple", solid = false, size = "md", icon, style }) {
const child = React.createElement(Icon, { name: icon, size: size === "sm" ? 19 : 26 });
const Chip = DS().IconChip;
if (Chip) return React.createElement(Chip, { tone, solid, size, style }, child);
const c = CHIP_TONES[tone] || CHIP_TONES.purple;
const dim = size === "sm" ? 38 : 56;
return React.createElement("div", { style: { width: dim, height: dim, borderRadius: "50%", display: "grid", placeItems: "center", flex: "none", border: "2px solid " + c, color: solid ? "#fff" : c, background: solid ? c : "transparent", ...style } }, child);
}
/* Badge — DS pill label. tone: purple | gold | teal | neutral; variant: subtle | solid.
Fallback honors the tone so chips read in their accent colour without the DS bundle. */
const BADGE_TONES = {
purple: { sub: { bg: "var(--cd-purple-100)", fg: "var(--cd-purple-700)" }, solid: { bg: "var(--cd-purple)", fg: "#fff" } },
gold: { sub: { bg: "var(--cd-gold-100)", fg: "var(--cd-gold-700)" }, solid: { bg: "var(--cd-gold)", fg: "#fff" } },
teal: { sub: { bg: "var(--cd-teal-100)", fg: "var(--cd-teal-700)" }, solid: { bg: "var(--cd-teal)", fg: "#fff" } },
neutral: { sub: { bg: "#EFEFF2", fg: "var(--cd-muted)" }, solid: { bg: "var(--cd-muted)", fg: "#fff" } }
};
function Badge({ tone = "purple", variant = "subtle", children, style }) {
const B = DS().Badge;
if (B) return React.createElement(B, { tone, variant, style }, children);
const t = (BADGE_TONES[tone] || BADGE_TONES.purple)[variant === "solid" ? "solid" : "sub"];
return React.createElement("span", { style: { display: "inline-flex", alignItems: "center", gap: 6, padding: "4px 12px", borderRadius: "var(--radius-pill)", fontFamily: "var(--font-head)", fontWeight: 600, fontSize: 12, background: t.bg, color: t.fg, ...style } }, children);
}
/* SectionHead — the signature DS SectionHeader (uppercase title + gold underline) */
function SectionHead({ eyebrow, title, sub, onDark, align, style }) {
const SH = DS().SectionHeader;
if (SH) return React.createElement(SH, { eyebrow, title, sub, onDark, align, style });
return React.createElement("div", { style },
eyebrow ? React.createElement("div", { className: "eyebrow", style: { marginBottom: 10 } }, eyebrow) : null,
React.createElement("h2", { style: { fontSize: 26, textTransform: "uppercase", letterSpacing: ".04em" } }, title),
React.createElement("div", { style: { width: 48, height: 2, background: "var(--cd-gold)", marginTop: 12 } }),
sub ? React.createElement("p", { style: { marginTop: 14, color: "var(--cd-muted)" } }, sub) : null
);
}
function fmt(n) { return n.toLocaleString("en-US"); }
Object.assign(window, { Icon, Btn, IconChip, Badge, SectionHead, fmt });