// screens-merchant.jsx — merchant (feed store) role: dashboard, orders, order detail (mark delivered), products, profile
(function(){
  const { useState } = React;
  const Icon = window.Icon;
  const { Header, Badge, Segmented, Stars, ProductThumb, KV, SectionTitle, SecureNote } = window;

  const fmt = (n)=> Number(n).toFixed(3);
  const orderTotal = (o)=> fmt(o.sub + o.ship - o.disc);

  function Switch({ on, onChange }){
    return (
      <button onClick={()=>onChange(!on)} aria-label="تبديل"
        style={{width:48, height:28, borderRadius:999, border:'none', cursor:'pointer', padding:0,
          background:on?'var(--green)':'var(--line-2)', position:'relative', transition:'.18s', flex:'0 0 auto'}}>
        <span style={{position:'absolute', top:3, left:on?23:3, width:22, height:22, borderRadius:'50%', background:'#fff', boxShadow:'var(--sh-sm)', transition:'left .18s'}}/>
      </button>
    );
  }

  function OrderRow({ o, onOpen, compact }){
    const D = window.DATA;
    return (
      <div className="card tap" onClick={()=>onOpen(o)} style={{padding:14, marginBottom:10}}>
        <div style={{display:'flex', alignItems:'center', justifyContent:'space-between', marginBottom:11}}>
          <Badge status={o.status}/>
          <div style={{display:'flex', alignItems:'center', gap:7}}>
            <span className="num lead" style={{fontSize:14}}>{o.id}</span>
            <Icon name="tag" size={15} color="var(--faint)"/>
          </div>
        </div>
        <div style={{display:'flex', alignItems:'center', gap:12}}>
          <div style={{display:'flex', gap:6}}>
            {o.items.slice(0,2).map((it,i)=>(<ProductThumb key={i} size={42} tone={D.products[it.p].tone} radius={11} label={D.products[it.p].unit}/>))}
          </div>
          <div style={{flex:1, minWidth:0}}>
            <div className="ar lead" style={{fontSize:14}}>{o.customer}</div>
            <div className="ar t-mut t-xs" style={{fontWeight:600, marginTop:3}}>{o.items.length} منتجات · {o.time}</div>
          </div>
          <div style={{textAlign:'left'}}>
            <div className="price" style={{fontSize:15.5, color:'var(--green)'}}>{orderTotal(o)} <span style={{fontSize:10, color:'var(--muted)'}}>د.ك</span></div>
          </div>
        </div>
      </div>
    );
  }

  /* ───────────────────────── DASHBOARD ───────────────────────── */
  function MeHome({ open, setOpen, orders, onOpen }){
    const P = window.DATA.merchantProfile;
    const todayOrders = orders.filter(o=> o.date==='اليوم');
    const active = orders.filter(o=> o.status==='preparing' || o.status==='delivering').length;
    const revenue = orders.filter(o=>o.status!=='cancelled').reduce((s,o)=> s + (o.sub+o.ship-o.disc), 0);
    const stats = [ ['طلبات اليوم', todayOrders.length, 'bag'], ['قيد التنفيذ', active, 'clock'], ['الإيرادات', fmt(revenue), 'wallet'] ];
    return (
      <div className="scroll pad-tab scr-anim">
        <div style={{padding:'56px 18px 10px', display:'flex', alignItems:'center', gap:12}}>
          <div style={{flex:1, lineHeight:1.35}}>
            <div className="ar t-mut" style={{fontSize:12.5, fontWeight:700}}>السبت، 10 مايو</div>
            <div className="ar lead" style={{fontSize:20, color:'var(--ink)', marginTop:1}}>{P.name} 🏪</div>
          </div>
          <button className="hdr-btn" aria-label="الإشعارات" style={{position:'relative'}}>
            <Icon name="bell" size={20}/>
            <span style={{position:'absolute', top:9, left:11, width:7, height:7, borderRadius:'50%', background:'var(--gold)', border:'1.5px solid var(--surface)'}}/>
          </button>
        </div>

        {/* store-open toggle */}
        <div style={{padding:'4px 16px 0'}}>
          <div className="card card-pad" style={{display:'flex', alignItems:'center', gap:14}}>
            <span style={{width:46, height:46, borderRadius:14, flex:'0 0 auto', display:'flex', alignItems:'center', justifyContent:'center',
              background:open?'var(--ok-bg)':'var(--surface-2)', color:open?'var(--ok-fg)':'var(--faint)'}}>
              <Icon name={open?'check':'clock'} size={22}/>
            </span>
            <div style={{flex:1}}>
              <div className="ar lead" style={{fontSize:15.5}}>{open?'المتجر مفتوح':'المتجر مغلق'}</div>
              <div className="ar t-mut t-xs" style={{fontWeight:600, marginTop:2}}>{open?'يستقبل المتجر الطلبات الآن' : 'لن تصلك طلبات جديدة'}</div>
            </div>
            <Switch on={open} onChange={setOpen}/>
          </div>
        </div>

        {/* stats */}
        <div style={{padding:'16px 16px 4px'}}>
          <div className="card" style={{display:'flex', textAlign:'center', overflow:'hidden'}}>
            {stats.map((s,i)=>(
              <div key={i} style={{flex:1, padding:'15px 4px', borderInlineStart:i?'1px solid var(--line)':'none'}}>
                <span style={{color:'var(--green)', display:'inline-flex'}}><Icon name={s[2]} size={18}/></span>
                <div className="lead" style={{fontSize:i===2?15:19, color:'var(--ink)', marginTop:5, fontFamily:"'Rubik',sans-serif"}}>{s[1]}</div>
                <div className="ar t-mut t-xs" style={{fontWeight:600, marginTop:2}}>{s[0]}</div>
              </div>
            ))}
          </div>
        </div>

        {/* today's orders */}
        <div style={{padding:'20px 16px 0'}}>
          <h3 className="ar lead" style={{margin:'0 0 12px', fontSize:16}}>طلبات اليوم</h3>
          {todayOrders.length ? todayOrders.map(o=>(<OrderRow key={o.id} o={o} onOpen={onOpen}/>))
            : <div className="ar t-mut" style={{textAlign:'center', padding:'30px 0', fontWeight:600}}>لا توجد طلبات اليوم</div>}
        </div>
      </div>
    );
  }

  /* ───────────────────────── ORDERS ───────────────────────── */
  const FILTERS = [
    { id:'all',        label:'الكل' },
    { id:'preparing',  label:'قيد التجهيز' },
    { id:'delivering', label:'قيد التوصيل' },
    { id:'delivered',  label:'تم التوصيل' },
    { id:'cancelled',  label:'ملغي' },
  ];
  function MeOrders({ orders, onOpen }){
    const [filter,setFilter] = useState('all');
    const list = orders.filter(o=> filter==='all' ? true : o.status===filter);
    return (
      <div className="scroll pad-tab scr-anim">
        <Header title="الطلبات"
          right={<button className="hdr-btn" aria-label="بحث"><Icon name="search" size={19}/></button>} />
        <div style={{padding:'2px 16px 14px'}}>
          <Segmented items={FILTERS} value={filter} onChange={setFilter}/>
        </div>
        <div style={{padding:'0 16px'}}>
          {list.length ? list.map(o=>(<OrderRow key={o.id} o={o} onOpen={onOpen}/>))
            : <div className="ar t-mut" style={{textAlign:'center', padding:'48px 0', fontWeight:600}}>لا توجد طلبات في هذه الحالة</div>}
        </div>
      </div>
    );
  }

  /* ───────────────────────── ORDER DETAIL ───────────────────────── */
  function MeOrderDetail({ o, back, onAdvance, onCancel }){
    const D = window.DATA;
    // contextual action by status
    const action = o.status==='preparing'  ? { label:'بدء التوصيل',   next:'delivering', icon:'truck' }
                 : o.status==='delivering' ? { label:'تأكيد التسليم', next:'delivered',  icon:'check' }
                 : null;
    return (
      <React.Fragment>
        <div className="scroll pad-cta scr-anim">
          <Header title="تفاصيل الطلب" onBack={back}
            right={<button className="hdr-btn" aria-label="طباعة"><Icon name="printer" size={19}/></button>} />

          <div style={{padding:'2px 16px 0'}}>
            {/* head */}
            <div className="card card-pad" style={{display:'flex', justifyContent:'space-between', alignItems:'flex-start', marginBottom:12}}>
              <Badge status={o.status}/>
              <div style={{textAlign:'left'}}>
                <div className="num lead" style={{fontSize:16}}>{o.id}</div>
                <div className="ar t-mut t-xs" style={{fontWeight:600, marginTop:3}}>{o.date} · {o.time}</div>
              </div>
            </div>

            {/* customer */}
            <div className="card card-pad" style={{marginBottom:12}}>
              <SectionTitle icon="user">العميل</SectionTitle>
              <div style={{display:'flex', alignItems:'center', gap:12}}>
                <span style={{width:44, height:44, borderRadius:13, background:'var(--green-tint)', color:'var(--green)', display:'flex', alignItems:'center', justifyContent:'center', flex:'0 0 auto'}}>
                  <Icon name="user" size={21}/>
                </span>
                <div style={{flex:1}}>
                  <div className="ar lead" style={{fontSize:14.5}}>{o.customer}</div>
                  <div className="num t-mut t-xs" style={{fontWeight:600, marginTop:2, direction:'ltr', textAlign:'right'}}>{o.phone}</div>
                </div>
                <button className="hdr-btn" aria-label="اتصال"><Icon name="phone" size={17}/></button>
              </div>
            </div>

            {/* products */}
            <div className="card card-pad" style={{marginBottom:12}}>
              <SectionTitle icon="bag">المنتجات</SectionTitle>
              {o.items.map((it,i)=>{
                const p = D.products[it.p];
                return (
                  <div key={i} style={{display:'flex', alignItems:'center', gap:12, padding:'10px 0', borderTop: i?'1px solid var(--line)':'none'}}>
                    <ProductThumb size={50} tone={p.tone} label={p.unit}/>
                    <div style={{flex:1}}>
                      <div className="ar lead" style={{fontSize:14.5}}>{p.name}</div>
                      <div className="ar t-mut t-xs" style={{fontWeight:600, marginTop:2}}>{it.unit} · {fmt(it.price)} د.ك × {it.qty}</div>
                    </div>
                    <div className="price" style={{fontSize:15, color:'var(--ink)'}}>{fmt(it.total)}<span style={{fontSize:10, color:'var(--muted)'}}> د.ك</span></div>
                  </div>
                );
              })}
            </div>

            {/* summary */}
            <div className="card card-pad" style={{marginBottom:12}}>
              <SectionTitle icon="wallet">ملخص الطلب</SectionTitle>
              <KV k="إجمالي المنتجات" v={fmt(o.sub)+' د.ك'} />
              <KV k="تكلفة التوصيل" v={o.ship===0?'مجاني':fmt(o.ship)+' د.ك'} />
              {o.disc>0 && <KV k="الخصم" v={'-'+fmt(o.disc)+' د.ك'} accent="var(--bad-fg)"/>}
              <div className="rowline" style={{margin:'8px 0'}}/>
              <KV k="الإجمالي الكلي" v={orderTotal(o)+' د.ك'} strong/>
              <div style={{display:'flex', alignItems:'center', gap:7, marginTop:10, color:'var(--muted)'}}>
                <Icon name="card" size={16} sw={1.7}/><span className="ar t-sm" style={{fontWeight:600}}>طريقة الدفع: {o.pay}</span>
              </div>
            </div>

            {/* delivery */}
            <div className="card card-pad">
              <SectionTitle icon="truck">عنوان التوصيل</SectionTitle>
              <div style={{display:'flex', gap:10, alignItems:'flex-start'}}>
                <span style={{color:'var(--green)', marginTop:2}}><Icon name="pin" size={18} sw={1.7}/></span>
                <div className="ar lead" style={{fontSize:14}}>{o.place}</div>
              </div>
            </div>

            <SecureNote text="بيانات الطلب محفوظة وآمنة." />
          </div>
        </div>

        {/* action bar */}
        <div className="cta-bar">
          {o.status==='delivered' ? (
            <button className="btn ar" disabled style={{background:'var(--ok-bg)', color:'var(--ok-fg)', boxShadow:'none'}}>
              <Icon name="check" size={19} color="var(--ok-fg)"/> تم تسليم الطلب
            </button>
          ) : o.status==='cancelled' ? (
            <button className="btn ar" disabled style={{background:'var(--bad-bg)', color:'var(--bad-fg)', boxShadow:'none'}}>الطلب ملغي</button>
          ) : (
            <React.Fragment>
              <button className="btn btn-line ar" onClick={()=>onCancel(o.id)} style={{flex:'0 0 96px', color:'var(--bad-fg)', borderColor:'var(--line-2)'}}>إلغاء</button>
              <button className="btn btn-primary ar" onClick={()=>onAdvance(o.id, action.next)}>
                <Icon name={action.icon} size={19} color="#fff"/> {action.label}
              </button>
            </React.Fragment>
          )}
        </div>
      </React.Fragment>
    );
  }

  /* ───────────────────────── PRODUCTS ───────────────────────── */
  function MeProducts({ stock, toggleStock }){
    const D = window.DATA;
    const keys = Object.keys(D.products);
    return (
      <div className="scroll pad-tab scr-anim">
        <Header title="المنتجات"
          right={<button className="hdr-btn" aria-label="إضافة منتج"><Icon name="plus" size={20} sw={2.2}/></button>} />
        <div style={{padding:'2px 16px 0'}}>
          {keys.map((k,i)=>{
            const p = D.products[k];
            const on = stock[k] !== false;
            return (
              <div className="card" key={k} style={{padding:12, marginBottom:10, display:'flex', alignItems:'center', gap:12}}>
                <ProductThumb size={50} tone={p.tone} label={p.unit}/>
                <div style={{flex:1, minWidth:0}}>
                  <div className="ar lead" style={{fontSize:14.5}}>{p.name}</div>
                  <div className="ar t-mut t-xs" style={{fontWeight:600, marginTop:2}}>{p.weight} · <span className="price" style={{color:'var(--green)'}}>{fmt(p.price)} د.ك</span></div>
                  <div style={{marginTop:5}}>
                    <span className={'badge '+(on?'ok':'bad')} style={{fontSize:10.5, padding:'3px 8px'}}><span className="dot"/>{on?'متوفّر':'غير متوفّر'}</span>
                  </div>
                </div>
                <Switch on={on} onChange={()=>toggleStock(k)}/>
              </div>
            );
          })}
          <SecureNote text="حالة المخزون تظهر للعملاء مباشرة." />
        </div>
      </div>
    );
  }

  /* ───────────────────────── PROFILE ───────────────────────── */
  function MeProfile(){
    const P = window.DATA.merchantProfile;
    const rows = [
      { icon:'bag',    k:'التصنيف', v:P.category },
      { icon:'phone',  k:'الهاتف',  v:P.phone, num:true },
      { icon:'doc',    k:'البريد',  v:P.email },
      { icon:'shield', k:'الترخيص', v:P.license, num:true },
      { icon:'pin',    k:'الموقع',  v:P.city },
    ];
    return (
      <div className="scroll pad-tab scr-anim">
        <Header title="حسابي"
          right={<button className="hdr-btn" aria-label="تعديل"><Icon name="edit" size={17}/></button>} />
        <div style={{padding:'2px 16px 0'}}>
          <div className="card card-pad" style={{display:'flex', alignItems:'center', gap:14, marginBottom:14}}>
            <span style={{width:66, height:66, borderRadius:20, flex:'0 0 auto', display:'flex', alignItems:'center', justifyContent:'center', background:'var(--green)', color:'#fff'}}>
              <Icon name="bag" size={30}/>
            </span>
            <div style={{flex:1}}>
              <div className="ar lead" style={{fontSize:17}}>{P.name}</div>
              <div className="ar t-mut t-sm" style={{fontWeight:600, marginTop:2}}>{P.category}</div>
              <div style={{marginTop:8}}><Stars value={P.rating}/> <span className="ar t-mut t-xs" style={{fontWeight:600}}>({P.reviews} تقييم)</span></div>
            </div>
          </div>

          <div className="card" style={{overflow:'hidden', marginBottom:14}}>
            {rows.map((r,i)=>(
              <div key={i} style={{display:'flex', alignItems:'center', gap:12, padding:'14px 16px', borderTop:i?'1px solid var(--line)':'none'}}>
                <span style={{width:34, height:34, borderRadius:10, background:'var(--green-tint)', color:'var(--green)', display:'flex', alignItems:'center', justifyContent:'center', flex:'0 0 auto'}}>
                  <Icon name={r.icon} size={18} sw={1.8}/>
                </span>
                <span className="ar t-mut t-sm" style={{fontWeight:700, flex:1}}>{r.k}</span>
                <span className={(r.num?'num':'ar lead')} style={{fontSize:13.5, color:'var(--ink)', fontWeight:700}}>{r.v}</span>
              </div>
            ))}
          </div>

          <button className="btn ar" style={{background:'var(--surface)', color:'var(--bad-fg)', boxShadow:'var(--sh-sm)'}}>تسجيل الخروج</button>
          <SecureNote text="الإصدار 2.0 · تطبيق خيل للمتاجر" />
        </div>
      </div>
    );
  }

  /* ───────────────────────── TAB BAR + APP ───────────────────────── */
  const ME_TABS = [
    { id:'home',     label:'الرئيسية', icon:'home' },
    { id:'orders',   label:'الطلبات',  icon:'bag' },
    { id:'products', label:'المنتجات', icon:'box' },
    { id:'profile',  label:'حسابي',    icon:'user' },
  ];
  function MeTabBar({ active, onTab, pending }){
    return (
      <div className="tabbar">
        <div className="tabbar-inner">
          {ME_TABS.map(t=>(
            <button key={t.id} className={'tab '+(active===t.id?'on':'')} onClick={()=>onTab(t.id)}>
              <span className="ic">
                <Icon name={t.icon} size={23} sw={active===t.id?2.1:1.8}/>
                {t.id==='orders' && pending>0 && <span className="tab-badge num">{pending}</span>}
              </span>
              <span>{t.label}</span>
            </button>
          ))}
        </div>
      </div>
    );
  }

  function MerchantApp(){
    const D = window.DATA;
    const [tab,setTab] = useState('home');
    const [open,setOpen] = useState(true);
    const [orders,setOrders] = useState(()=> D.merchantOrders.map(o=>({...o})));
    const [stock,setStock] = useState({});
    const [selId,setSelId] = useState(null);

    const advance = (id,next)=> setOrders(os=> os.map(o=> o.id===id?{...o,status:next}:o));
    const cancel = (id)=> setOrders(os=> os.map(o=> o.id===id?{...o,status:'cancelled'}:o));
    const toggleStock = (k)=> setStock(s=> ({...s, [k]: s[k]===false ? true : false}));
    const openOrder = (o)=> setSelId(o.id);
    const closeOrder = ()=> setSelId(null);

    const pending = orders.filter(o=> o.status==='preparing').length;
    const sel = selId && orders.find(o=>o.id===selId);

    if(sel){
      return (
        <div className="app">
          <MeOrderDetail key={sel.id+sel.status} o={sel} back={closeOrder} onAdvance={advance} onCancel={(id)=>{ cancel(id); }}/>
        </div>
      );
    }

    const screens = {
      home:     <MeHome open={open} setOpen={setOpen} orders={orders} onOpen={openOrder}/>,
      orders:   <MeOrders orders={orders} onOpen={openOrder}/>,
      products: <MeProducts stock={stock} toggleStock={toggleStock}/>,
      profile:  <MeProfile/>,
    };

    return (
      <div className="app">
        {React.cloneElement(screens[tab], { key: tab })}
        <MeTabBar active={tab} onTab={setTab} pending={pending}/>
      </div>
    );
  }

  window.MerchantApp = MerchantApp;
})();
