const { useState, useEffect, useRef } = React; // T and S are provided by ark-context.jsx as window globals const Badge = ({ children, variant = 'default' }) => { const vs = { default: { bg: T.surfaceRaised, color: T.muted, border: T.border }, accent: { bg: T.accentSubtle, color: T.accent, border: T.accentDim }, green: { bg: T.greenSubtle, color: T.green, border: 'oklch(28% 0.07 145)' }, warn: { bg: T.warningSubtle, color: T.warning, border: 'oklch(28% 0.07 75)' }, }; const v = vs[variant] || vs.default; return ( {children} ); }; const Btn = ({ children, variant = 'primary', size = 'md', onClick, style: xs = {}, disabled = false, type = 'button' }) => { const [hov, setHov] = useState(false); const sz = { sm: { padding: '6px 14px', fontSize: 13 }, md: { padding: '9px 18px', fontSize: 14 }, lg: { padding: '12px 26px', fontSize: 15 } }[size] || {}; const vr = { primary: { background: disabled ? T.dim : hov ? T.accentHover : T.accent, color: 'oklch(98% 0.005 240)', border: 'none' }, secondary: { background: hov ? T.surfaceRaised : 'transparent', color: T.text, border: `1px solid ${hov ? T.borderStrong : T.border}` }, ghost: { background: 'transparent', color: hov ? T.text : T.muted, border: 'none' }, outline: { background: 'transparent', color: hov ? T.accent : T.muted, border: `1px solid ${hov ? T.accentDim : T.border}` }, danger: { background: hov ? 'oklch(50% 0.18 25)' : 'transparent', color: T.red, border: `1px solid ${T.red}` }, }[variant] || {}; return ( ); }; const MonoTag = ({ children, dim = false, color }) => ( {children} ); const Sec = ({ children, style: s = {}, tight = false, id }) => (
{children}
); const HR = ({ style: s = {} }) =>
; const SectionLabel = ({ children }) => (
{children}
); const AccordionItem = ({ question, answer, defaultOpen = false }) => { const [open, setOpen] = useState(defaultOpen); return (
{open && (
{answer}
)}
); }; Object.assign(window, { Badge, Btn, MonoTag, Sec, HR, SectionLabel, AccordionItem });