/* ============================================================ UI KIT — icons (lucide paths, inline) + shared components ============================================================ */ const ICONS = { home:'', plus:'', list:'', inbox:'', hospital:'', users:'', chart:'', shield:'', cog:'', bell:'', search:'', logout:'', x:'', check:'', chevR:'', chevD:'', chevL:'', alert:'', info:'', file:'', download:'', upload:'', lock:'', eyeOff:'', clock:'', userCheck:'', arrowR:'', menu:'', send:'', paperclip:'', edit:'', key:'', ban:'', filter:'', more:'', message:'', circleCheck:'', dot:'', mail:'', sun:'', moon:'', refresh:'', activity:'', user:'', building:'', }; function Icon({name, size=18, stroke=2, cls='', style={}}){ return ; } function Btn({variant, size, icon, iconR, children, className='', ...p}){ const cls=['btn', variant&&'btn-'+variant, size&&'btn-'+size, className].filter(Boolean).join(' '); return ; } function StatusBadge({s, sm}){ const m=window.GOV.STATUS[s]; if(!m) return null; return {m.label}; } function PriorityBadge({p}){ const map={urgent:'Urgent',normal:'Normal',low:'Low'}; return {map[p]||p}; } function RoleBadge({role}){ const m=window.GOV.ROLES[role]; if(!m) return null; return {m.label}; } function initials(name=''){ return name.replace(/^(Dr\.|Ms\.|Mr\.|Nurse)\s+/,'').split(' ').map(w=>w[0]).slice(0,2).join('').toUpperCase(); } function Avatar({name, size=32, style={}}){ return {initials(name)}; } /* form atoms */ function Field({label, req, opt, error, hint, children, style}){ return
{label && } {children} {error &&
{error}
} {hint && !error &&
{hint}
}
; } const Input = (p)=> ; const Textarea=(p)=>