// ============================================================
// hifi-shells.jsx — reusable chrome: WebShell, DesktopShell,
// ScreenHead, SubNav, form atoms. (depends on hifi-kit)
// ============================================================
const CUI = ({short}) => (
  <div className="hf-cui"><span className="pin"/>{short?'CONTROLLED UNCLASSIFIED INFORMATION // ITAR':'CONTROLLED UNCLASSIFIED INFORMATION // ITAR — DISTRIBUTION LIMITED'}</div>
);

const WEB_NAV = [
  ['group','Monitor'],
  ['grid','Dashboard'],['map','Fleet Map'],['device','Devices'],['pulse','Events'],['bell','Alerts'],
  ['group','Manage'],
  ['report','Reports'],['admin','Admin'],
];
const DESK_NAV = [['grid','Dashboard'],['device','Devices'],['cal','Calibration'],['chip','Firmware'],['flask','Diagnostics'],['gear','Configuration'],['list','Test Suites'],['pulse','Activity Log']];

function Brand({sub='COMMAND & MONITORING', size=21}){
  return <div className="hf-brand"><AegisMark size={size+5} color="var(--taupe)"/><div className="hf-wordmark" style={{fontSize:size}}>Aegis Cognis<small>{sub}</small></div></div>;
}
function NavUser({role='Ops Analyst'}){
  return (
    <div style={{marginTop:'auto',padding:'12px 14px',borderTop:'1px solid var(--line-soft)'}}>
      <div className="hf-nav" style={{margin:0}}><Icon k="gear"/>Settings</div>
      <Row gap={10} align="center" style={{marginTop:10,padding:'0 6px'}}>
        <div className="hf-avatar">MO</div>
        <div style={{flex:1,minWidth:0}}><div style={{fontSize:12.5,color:'var(--paper)',fontWeight:600}}>M. Operator</div><div className="hf-label" style={{fontSize:9}}>{role}</div></div>
      </Row>
    </div>
  );
}

function WebShell({active, alerts=3, children}){
  return (
    <div className="hf-app">
      <CUI/>
      <div style={{display:'flex',height:'calc(100% - 26px)'}}>
        <div className="hf-side" style={{width:240,flex:'none'}}>
          <Brand/>
          {WEB_NAV.map((n,i)=> n[0]==='group'
            ? <div key={i} className="hf-nav-group">{n[1]}</div>
            : <div key={i} className={'hf-nav'+(n[1]===active?' active':'')}><Icon k={n[0]}/>{n[1]}{n[1]==='Alerts'&&alerts?<span style={{marginLeft:'auto',fontFamily:'var(--mono)',fontSize:10,color:'var(--crit)',background:'color-mix(in srgb,var(--crit) 18%,transparent)',borderRadius:10,padding:'1px 7px'}}>{alerts}</span>:null}</div>
          )}
          <NavUser/>
        </div>
        <div style={{flex:1,minWidth:0,display:'flex',flexDirection:'column'}}>
          <div className="hf-top">
            <div style={{flex:'none'}}><div style={{fontSize:13,fontWeight:700,color:'var(--paper)',whiteSpace:'nowrap'}}>JSOC Task Force Alpha</div><div className="hf-label" style={{fontSize:9}}>Signals Division</div></div>
            <div className="hf-search"><Icon k="search" size={15}/>Search devices, events, serials…</div>
            <div style={{marginLeft:'auto'}}/>
            <div className="hf-iconbtn"><Icon k="bell" size={17}/><span style={{position:'absolute',top:7,right:8,width:6,height:6,borderRadius:'50%',background:'var(--crit)',boxShadow:'0 0 6px var(--crit)'}}/></div>
            <div className="hf-avatar">MO</div>
          </div>
          <div style={{flex:1,minWidth:0,padding:24,overflow:'hidden'}}>{children}</div>
        </div>
      </div>
    </div>
  );
}

function DesktopShell({active, conn='USB Connected', children}){
  return (
    <div className="hf-app">
      <CUI short/>
      <div style={{height:36,display:'flex',alignItems:'center',gap:14,padding:'0 14px',background:'#03102A',borderBottom:'1px solid var(--line-soft)'}}>
        <Row gap={7} align="center">
          <span style={{width:11,height:11,borderRadius:'50%',background:'#E25B52'}}/>
          <span style={{width:11,height:11,borderRadius:'50%',background:'#CBA253'}}/>
          <span style={{width:11,height:11,borderRadius:'50%',background:'#5BA37F'}}/>
        </Row>
        <div style={{flex:1,textAlign:'center',fontFamily:'var(--narrow)',fontWeight:600,letterSpacing:'.12em',fontSize:11,color:'var(--text-mute)',textTransform:'uppercase'}}>Aegis Cognis — Hardware Operations Suite</div>
        {conn&&<Badge s="ok" label={conn}/>}
      </div>
      <div style={{display:'flex',height:'calc(100% - 62px)'}}>
        <div className="hf-side" style={{width:218,flex:'none'}}>
          <Brand sub="HARDWARE OPS" size={19}/>
          <div style={{height:8}}/>
          {DESK_NAV.map((n,i)=><div key={i} className={'hf-nav'+(n[1]===active?' active':'')}><Icon k={n[0]}/>{n[1]}</div>)}
          <NavUser role="HW Technician"/>
        </div>
        <div style={{flex:1,minWidth:0,padding:'22px 26px',overflow:'hidden',display:'flex',flexDirection:'column'}}>{children}</div>
      </div>
    </div>
  );
}

function ScreenHead({eyebrow, title, size=34, right, style={}}){
  return (
    <Row justify="space-between" align="flex-end" style={{marginBottom:18,...style}}>
      <div>{eyebrow&&<Eyebrow style={{whiteSpace:'nowrap'}}>{eyebrow}</Eyebrow>}<Display size={size} style={{marginTop:8,whiteSpace:'nowrap'}}>{title}</Display></div>
      {right}
    </Row>
  );
}

/* secondary sub-nav (admin / settings) */
function SubNav({items, active, width=190, label='Section'}){
  return (
    <div style={{width,flex:'none',background:'#06142F',border:'1px solid var(--line-soft)',borderRadius:10,padding:'12px 0',alignSelf:'flex-start'}}>
      <div className="hf-nav-group" style={{padding:'2px 16px 8px'}}>{label}</div>
      {items.map((s,i)=>(
        <div key={i} style={{display:'flex',alignItems:'center',gap:9,padding:'9px 16px',fontFamily:'var(--sans)',fontSize:12.5,fontWeight:s===active?600:500,
          color:s===active?'var(--paper)':'var(--text-mute)',borderLeft:s===active?'3px solid var(--taupe)':'3px solid transparent',
          background:s===active?'#0d1f44':'transparent'}}>{s}</div>
      ))}
    </div>
  );
}

/* form atoms */
const Field = ({label, value, ph, w, focus, error}) => (
  <div style={{flex:w?'none':1,width:w}}>
    {label&&<div className="hf-label" style={{marginBottom:5}}>{label}</div>}
    <div style={{height:34,borderRadius:8,background:'var(--void)',border:`${focus||error?2:1}px solid ${error?'var(--crit)':focus?'var(--maint)':'var(--line)'}`,display:'flex',alignItems:'center',padding:'0 11px',boxShadow:focus?'0 0 0 3px color-mix(in srgb,var(--maint) 22%,transparent)':'none'}}>
      <span className="hf-mono" style={{fontSize:12,color:value?'var(--paper)':'var(--text-mute)',whiteSpace:'nowrap',overflow:'hidden',textOverflow:'ellipsis'}}>{value||ph}</span>
    </div>
  </div>
);
const Toggle = ({on, s='ok'}) => (
  <div style={{width:46,height:26,borderRadius:14,background:on?`var(--${s})`:'var(--line)',position:'relative',flex:'none',boxShadow:on?`0 0 12px color-mix(in srgb,var(--${s}) 55%,transparent)`:'none'}}>
    <div style={{position:'absolute',top:3,left:on?'auto':3,right:on?3:'auto',width:20,height:20,borderRadius:'50%',background:'#fff'}}/>
  </div>
);
const Seg = ({items, active}) => <div className="hf-seg">{items.map((t,i)=><div key={i} className={'sg'+(t===active?' active':'')}>{t}</div>)}</div>;

Object.assign(window, { CUI, WebShell, DesktopShell, ScreenHead, SubNav, Field, Toggle, Seg, Brand });
