// ============================================================
//  DOMAIN DETAIL — Checklist, Comments, Info
// ============================================================
window.DomainDetailPage = function({ domainId, onNavigate }) {
  const [domain, setDomain] = React.useState(null);
  const [checkItems, setCheckItems] = React.useState([]);
  const [comments, setComments] = React.useState([]);
  const [loading, setLoading] = React.useState(true);
  const [activePhase, setActivePhase] = React.useState(0);
  const [activeTab, setActiveTab] = React.useState('checklist');
  const [showEdit, setShowEdit] = React.useState(false);
  const [showDeleteConfirm, setShowDeleteConfirm] = React.useState(false);
  const isAdmin = Store.isAdmin();
  const user = Store.getUser();

  React.useEffect(() => { if (domainId) load(); }, [domainId]);

  const load = async () => {
    setLoading(true);
    try {
      const [d, ciRes, cmRes] = await Promise.all([
        API.getOne('domains', domainId),
        API.get('checklist_items', { limit: 1000 }),
        API.get('comments', { limit: 500 })
      ]);
      setDomain(d);
      const ci = (ciRes.data || []).filter(c => c.domain_id === domainId);
      setCheckItems(ci);
      const cm = (cmRes.data || []).filter(c => c.domain_id === domainId);
      setComments(cm);
    } catch(e) { toast('Lỗi tải dữ liệu domain', 'error'); }
    setLoading(false);
  };

  // Calculate per-phase progress
  const phaseProgress = (phaseId) => {
    const keys = getPhaseItemKeys(phaseId);
    if (!keys.length) return 0;
    const done = keys.filter(k => {
      const ci = checkItems.find(c => c.item_key === k && c.domain_id === domainId);
      return ci?.status === 'done';
    }).length;
    return Math.round((done / keys.length) * 100);
  };

  const overallProgress = () => {
    let total = 0, done = 0;
    SOP_PHASES.forEach(p => {
      const keys = getPhaseItemKeys(p.id);
      total += keys.length;
      done += keys.filter(k => {
        const ci = checkItems.find(c => c.item_key === k && c.domain_id === domainId);
        return ci?.status === 'done';
      }).length;
    });
    return total ? Math.round((done / total) * 100) : 0;
  };

  // Update checklist item
  const updateItem = async (key, status, value) => {
    const existing = checkItems.find(c => c.item_key === key && c.domain_id === domainId);
    const phase = SOP_PHASES.find(p => p.sections.some(s => s.items.some(i => i.key === key)));
    try {
      let updated;
      if (existing) {
        updated = await API.patch('checklist_items', existing.id, {
          status: status !== undefined ? status : existing.status,
          item_value: value !== undefined ? value : existing.item_value,
          checked_by: user?.id,
          checked_at: Date.now()
        });
        setCheckItems(prev => prev.map(c => c.id === updated.id ? updated : c));
      } else {
        updated = await API.post('checklist_items', {
          id: uuid(), domain_id: domainId, phase: phase?.id || 0,
          phase_name: phase?.name || '', item_key: key,
          item_label: '', item_value: value || '',
          status: status || 'done', checked_by: user?.id, checked_at: Date.now()
        });
        setCheckItems(prev => [...prev, updated]);
      }
      // Update domain progress
      const allItems = existing
        ? checkItems.map(c => c.id === updated.id ? updated : c)
        : [...checkItems, updated];

      let total = 0, done = 0;
      SOP_PHASES.forEach(p => {
        const keys = getPhaseItemKeys(p.id);
        total += keys.length;
        done += keys.filter(k => {
          const ci = allItems.find(c => c.item_key === k && c.domain_id === domainId);
          return ci?.status === 'done';
        }).length;
      });
      const newProgress = total ? Math.round((done / total) * 100) : 0;
      const currentPhase = SOP_PHASES.findIndex(p => {
        const keys = getPhaseItemKeys(p.id);
        if (!keys.length) return false;
        const doneCnt = keys.filter(k => allItems.find(c => c.item_key === k && c.domain_id === domainId && c.status === 'done')).length;
        return doneCnt < keys.length;
      });
      await API.patch('domains', domainId, {
        overall_progress: newProgress,
        current_phase: currentPhase >= 0 ? currentPhase : 13
      });
      await logAction('update_checklist', `Cập nhật checklist: ${key} → ${status}`, domainId, domain?.domain_name, phase?.id, key);
    } catch(e) { toast('Lỗi cập nhật', 'error'); }
  };

  const getItemState = (key) => {
    const ci = checkItems.find(c => c.item_key === key && c.domain_id === domainId);
    return { status: ci?.status || 'pending', value: ci?.item_value || '' };
  };

  // CHECKLIST ITEM COMPONENT
  const CheckItem = ({ item }) => {
    const { status, value } = getItemState(item.key);
    const [inputVal, setInputVal] = React.useState(value);
    const [showMenu, setShowMenu] = React.useState(false);
    const menuRef = React.useRef();

    React.useEffect(() => { setInputVal(value); }, [value]);
    React.useEffect(() => {
      const handler = (e) => { if (menuRef.current && !menuRef.current.contains(e.target)) setShowMenu(false); };
      document.addEventListener('mousedown', handler);
      return () => document.removeEventListener('mousedown', handler);
    }, []);

    const statusIcon = { done: 'fa-check', in_progress: 'fa-spinner', na: 'fa-minus', pending: '' };
    const isDone = status === 'done';

    return (
      <div className={`cl-item ${isDone ? 'st-done' : ''} ${status === 'na' ? 'st-na' : ''}`}>
        <div className={`cl-chk ${status !== 'pending' ? status : ''}`}
          onClick={() => updateItem(item.key, isDone ? 'pending' : 'done')}>
          {status !== 'pending' && <i className={`fas ${statusIcon[status] || 'fa-check'}`} style={{ fontSize: '.72rem' }}/>}
        </div>
        <div className="cl-body">
          <div className="cl-label">{item.label}</div>
          {item.hasInput && (
            <div className="cl-inp-row">
              <input className="cl-inp" value={inputVal} onChange={e => setInputVal(e.target.value)}
                placeholder={item.placeholder || 'Nhập thông tin...'}/>
              <button className="cl-save" onClick={() => updateItem(item.key, status === 'pending' && inputVal ? 'done' : status, inputVal)}>
                <i className="fas fa-save"/>
              </button>
            </div>
          )}
          {value && !item.hasInput && status !== 'pending' && (
            <div className="cl-hint"><i className="fas fa-info-circle" style={{ marginRight:3 }}/>{value}</div>
          )}
        </div>
        <div className="cl-menu-wrap" ref={menuRef}>
          <button className="cl-menu-btn" onClick={() => setShowMenu(!showMenu)}><i className="fas fa-ellipsis-v"/></button>
          {showMenu && (
            <div className="status-sel">
              {[['done','fa-check-circle','var(--green)','Hoàn thành'],['in_progress','fa-clock','var(--yellow)','Đang làm'],['na','fa-ban','var(--t3)','Không áp dụng'],['pending','fa-circle','var(--border)','Reset']].map(([s,ic,cl,lb]) => (
                <div key={s} className="status-sel-opt" onClick={() => { updateItem(item.key, s); setShowMenu(false); }}>
                  <i className={`fas ${ic}`} style={{ color: cl }}/> {lb}
                </div>
              ))}
            </div>
          )}
        </div>
      </div>
    );
  };

  // PHASE CHECKLIST
  const PhaseChecklist = ({ phase }) => {
    const phaseCmts = comments.filter(c => c.phase === phase.id);
    const [cmtText, setCmtText] = React.useState('');
    const [cmtType, setCmtType] = React.useState('note');
    const [submitting, setSubmitting] = React.useState(false);

    const submitComment = async () => {
      if (!cmtText.trim()) return;
      setSubmitting(true);
      try {
        const nc = await API.post('comments', {
          id: uuid(), domain_id: domainId, phase: phase.id, item_key: '',
          author_id: user?.id, author_name: user?.full_name,
          author_role: user?.role, content: cmtText, type: cmtType
        });
        setComments(prev => [...prev, nc]);
        setCmtText('');
        await logAction('add_comment', `Thêm comment giai đoạn ${phase.id}: ${cmtText.slice(0,60)}`, domainId, domain?.domain_name, phase.id);
        toast('Đã thêm ghi chú', 'success');
      } catch(e) { toast('Lỗi thêm comment', 'error'); }
      setSubmitting(false);
    };

    const typeLabels = { note:'Ghi chú', correction:'Yêu cầu sửa', warning:'Cảnh báo', approval:'Duyệt OK' };

    return (
      <div>
        {phase.sections.map((sec, si) => (
          <div key={si} className="cl-section">
            <div className="cl-sec-title">
              <i className="fas fa-list"/> {sec.title}
              <span style={{ marginLeft:'auto', fontSize:'.76rem', color:'var(--t3)', fontWeight:400 }}>
                {sec.items.filter(it => checkItems.find(c => c.item_key === it.key && c.domain_id === domainId && c.status === 'done')).length}/{sec.items.length} hoàn thành
              </span>
            </div>
            <div>
              {sec.items.map(item => <CheckItem key={item.key} item={item}/>)}
            </div>
          </div>
        ))}

        {/* COMMENTS SECTION */}
        <div style={{ marginTop: 24 }}>
          <div style={{ fontWeight:700, fontSize:'.9rem', marginBottom:12, display:'flex', alignItems:'center', gap:8 }}>
            <i className="fas fa-comments" style={{ color:'var(--primary)' }}/> Ghi chú / Comment giai đoạn này
            {phaseCmts.length > 0 && <span className="badge b-primary">{phaseCmts.length}</span>}
          </div>
          {phaseCmts.length > 0 && (
            <div className="cmt-list">
              {phaseCmts.map(c => {
                const typeClsMap = { note:'b-info', correction:'b-warning', warning:'b-danger', approval:'b-success' };
                return (
                  <div key={c.id} className={`cmt ${c.type}`}>
                    <div className="cmt-head">
                      <AvatarChip name={c.author_name} size={26}/>
                      <span className="cmt-author">{c.author_name}</span>
                      <Badge cls={typeClsMap[c.type]||'b-secondary'} label={typeLabels[c.type] || c.type}/>
                      <span style={{ color:'var(--t3)', fontSize:'.73rem', marginLeft:'auto' }}>{formatDate(c.created_at)}</span>
                    </div>
                    <div className="cmt-text">{c.content}</div>
                  </div>
                );
              })}
            </div>
          )}
          <div className="cmt-form">
            <div style={{ display:'flex', gap:8, marginBottom:8 }}>
              <select className="fc" value={cmtType} onChange={e => setCmtType(e.target.value)} style={{ width:160, flexShrink:0 }}>
                <option value="note">📝 Ghi chú</option>
                <option value="correction">✏️ Yêu cầu sửa</option>
                <option value="warning">⚠️ Cảnh báo</option>
                <option value="approval">✅ Duyệt OK</option>
              </select>
              <textarea className="fc" value={cmtText} onChange={e => setCmtText(e.target.value)} placeholder="Nhập ghi chú, nhận xét, yêu cầu sửa..." rows={2} style={{ flex:1 }}/>
            </div>
            <div style={{ display:'flex', justifyContent:'flex-end' }}>
              <button className="btn btn-primary btn-sm" onClick={submitComment} disabled={submitting || !cmtText.trim()}>
                {submitting ? <><i className="fas fa-spinner fa-spin"/> Đang gửi...</> : <><i className="fas fa-paper-plane"/> Gửi</>}
              </button>
            </div>
          </div>
        </div>
      </div>
    );
  };

  // EDIT DOMAIN MODAL
  const EditModal = () => {
    const [form, setForm] = React.useState({
      domain_name: domain.domain_name, site_type: domain.site_type,
      market: domain.market, language: domain.language,
      hosting: domain.hosting||'', wordpress_theme: domain.wordpress_theme||'',
      target_keywords: domain.target_keywords||'', notes: domain.notes||'', status: domain.status
    });
    const [saving, setSaving] = React.useState(false);
    const set = (k, v) => setForm(f => ({ ...f, [k]: v }));
    const save = async () => {
      setSaving(true);
      try {
        const upd = await API.patch('domains', domainId, form);
        setDomain(upd);
        await logAction('update_domain', `Cập nhật thông tin domain`, domainId, form.domain_name);
        toast('Đã cập nhật domain', 'success');
        setShowEdit(false);
      } catch(e) { toast('Lỗi cập nhật', 'error'); }
      setSaving(false);
    };
    return (
      <Modal title="Chỉnh sửa Domain" onClose={() => setShowEdit(false)} size="lg">
        <div className="mo-body">
          <div className="fr2">
            <div className="fg"><label className="fl">Tên Domain</label><input className="fc" value={form.domain_name} onChange={e => set('domain_name', e.target.value)}/></div>
            <div className="fg"><label className="fl">Trạng thái</label>
              <select className="fc" value={form.status} onChange={e => set('status', e.target.value)}>
                {[['planning','Đang plan'],['active','Đang triển khai'],['paused','Tạm dừng'],['completed','Hoàn thành']].map(([v,l]) => <option key={v} value={v}>{l}</option>)}
              </select>
            </div>
          </div>
          <div className="fr2">
            <div className="fg"><label className="fl">Hosting</label><input className="fc" value={form.hosting} onChange={e => set('hosting', e.target.value)}/></div>
            <div className="fg"><label className="fl">Theme WordPress</label><input className="fc" value={form.wordpress_theme} onChange={e => set('wordpress_theme', e.target.value)}/></div>
          </div>
          <div className="fg"><label className="fl">Target Keywords</label><input className="fc" value={form.target_keywords} onChange={e => set('target_keywords', e.target.value)}/></div>
          <div className="fg"><label className="fl">Ghi chú</label><textarea className="fc" value={form.notes} onChange={e => set('notes', e.target.value)} rows={3}/></div>
        </div>
        <div className="mo-foot">
          <button className="btn btn-ghost btn-sm" onClick={() => setShowEdit(false)}>Huỷ</button>
          <button className="btn btn-primary btn-sm" onClick={save} disabled={saving}>{saving ? 'Đang lưu...' : 'Lưu'}</button>
        </div>
      </Modal>
    );
  };

  const deleteDomain = async () => {
    try {
      await API.del('domains', domainId);
      await logAction('delete_domain', `Xoá domain: ${domain?.domain_name}`, domainId, domain?.domain_name);
      toast('Đã xoá domain', 'success');
      onNavigate('domains');
    } catch(e) { toast('Lỗi xoá domain', 'error'); }
    setShowDeleteConfirm(false);
  };

  if (loading) return <Spinner/>;
  if (!domain) return <EmptyState icon="fa-exclamation-triangle" title="Không tìm thấy domain"/>;

  const ov = overallProgress();
  const currentPhaseObj = SOP_PHASES.find(p => p.id === activePhase) || SOP_PHASES[0];
  const sb = domainStatusBadge(domain.status);
  const tb = siteTypeBadge(domain.site_type);

  return (
    <div className="fade-in">
      {/* PAGE HEADER */}
      <div className="ph">
        <div>
          <button className="btn btn-ghost btn-sm" onClick={() => onNavigate('domains')} style={{ marginBottom:8 }}>
            <i className="fas fa-arrow-left"/> Quay lại
          </button>
          <div className="ph-title"><i className="fas fa-globe" style={{ marginRight:8, color:'var(--primary)' }}/>{domain.domain_name}</div>
          <div className="ph-sub" style={{ display:'flex', gap:10, alignItems:'center', marginTop:4, flexWrap:'wrap' }}>
            <Badge cls={sb.cls} label={sb.label}/>
            <Badge cls={tb.cls} label={tb.label}/>
            <span style={{ color:'var(--t3)', fontSize:'.82rem' }}><i className="fas fa-user" style={{ marginRight:4 }}/>{domain.assigned_name}</span>
            {domain.target_keywords && <span style={{ color:'var(--t3)', fontSize:'.82rem' }}><i className="fas fa-key" style={{ marginRight:4 }}/>{domain.target_keywords}</span>}
          </div>
        </div>
        <div className="ph-acts">
          <button className="btn btn-ghost btn-sm" onClick={() => setShowEdit(true)}><i className="fas fa-edit"/> Sửa</button>
          {isAdmin && <button className="btn btn-danger btn-sm" onClick={() => setShowDeleteConfirm(true)}><i className="fas fa-trash"/> Xoá</button>}
        </div>
      </div>

      {/* OVERALL PROGRESS */}
      <div className="card" style={{ marginBottom:16 }}>
        <div style={{ display:'flex', alignItems:'center', gap:16, flexWrap:'wrap' }}>
          <div style={{ flex:1, minWidth:200 }}>
            <div style={{ display:'flex', justifyContent:'space-between', marginBottom:8 }}>
              <span style={{ fontWeight:700, fontSize:'.9rem' }}>Tiến độ tổng thể</span>
              <span style={{ fontWeight:800, fontSize:'1.1rem', color: ov>=80?'var(--green)':ov>=40?'var(--yellow)':'var(--red)' }}>{ov}%</span>
            </div>
            <ProgressBar pct={ov}/>
          </div>
          <div style={{ display:'flex', gap:20, flexWrap:'wrap' }}>
            {[['fa-layer-group','Giai đoạn hiện tại',`${domain.current_phase||0}/13`,'var(--primary)'],
              ['fa-check-circle','Phases hoàn thành',`${SOP_PHASES.filter(p=>phaseProgress(p.id)===100).length}`,'var(--green)'],
              ['fa-comments','Tổng comment',`${comments.length}`,'var(--blue)']
            ].map(([ic,lb,val,col]) => (
              <div key={lb} style={{ textAlign:'center' }}>
                <div style={{ fontSize:'1.2rem', fontWeight:800, color:col }}>{val}</div>
                <div style={{ fontSize:'.73rem', color:'var(--t3)' }}>{lb}</div>
              </div>
            ))}
          </div>
        </div>
      </div>

      {/* TABS */}
      <Tabs tabs={[
        { id:'checklist', icon:'fa-tasks', label:'Checklist SOP' },
        { id:'info',      icon:'fa-info-circle', label:'Thông tin Domain' },
        { id:'comments',  icon:'fa-comments', label:`Comments (${comments.length})` },
      ]} active={activeTab} onChange={setActiveTab}/>

      {activeTab === 'checklist' && (
        <div className="two-col" style={{ alignItems:'flex-start', marginTop:16 }}>
          {/* LEFT: Phase list */}
          <div className="card" style={{ position:'sticky', top:80, maxHeight:'calc(100vh - 180px)', overflowY:'auto' }}>
            <div style={{ fontWeight:700, fontSize:'.875rem', marginBottom:14, color:'var(--t1)' }}>
              <i className="fas fa-list" style={{ marginRight:7, color:'var(--primary)' }}/>Giai đoạn SOP
            </div>
            <div className="phase-list">
              {SOP_PHASES.map(p => {
                const pct = phaseProgress(p.id);
                const isDone = pct === 100;
                const isAct = p.id === activePhase;
                return (
                  <div key={p.id} className={`phase-row ${isDone ? 'done' : isAct ? 'active' : ''}`}
                    onClick={() => setActivePhase(p.id)}>
                    <div className={`ph-dot ${isDone?'d':isAct?'a':'p'}`}>{isDone ? <i className="fas fa-check"/> : p.id}</div>
                    <div className="ph-info">
                      <div style={{ fontSize:'.79rem', fontWeight:600, color: isDone?'var(--green)':isAct?'var(--primary)':'var(--t1)', overflow:'hidden', textOverflow:'ellipsis', whiteSpace:'nowrap' }}>
                        <i className={`fas ${p.icon}`} style={{ marginRight:5, color:p.color }}/>{p.name}
                      </div>
                      <div style={{ marginTop:4 }}>
                        <div className="prog-wrap" style={{ height:3 }}>
                          <div className="prog-fill" style={{ width:`${pct}%`, background:isDone?'var(--green)':isAct?'var(--primary)':'var(--t3)' }}/>
                        </div>
                      </div>
                    </div>
                    <span style={{ fontSize:'.73rem', color:isDone?'var(--green)':isAct?'var(--primary)':'var(--t3)', fontWeight:700, flexShrink:0 }}>{pct}%</span>
                  </div>
                );
              })}
            </div>
          </div>

          {/* RIGHT: Checklist */}
          <div style={{ minWidth:0 }}>
            <div className="card" style={{ marginBottom:0 }}>
              <div style={{ display:'flex', alignItems:'center', gap:12, marginBottom:20 }}>
                <div style={{ width:42, height:42, borderRadius:10, background:`${currentPhaseObj.color}20`, display:'flex', alignItems:'center', justifyContent:'center', flexShrink:0 }}>
                  <i className={`fas ${currentPhaseObj.icon}`} style={{ color:currentPhaseObj.color, fontSize:'1.1rem' }}/>
                </div>
                <div style={{ flex:1, minWidth:0 }}>
                  <div style={{ fontWeight:800, fontSize:'.95rem' }}>Giai đoạn {currentPhaseObj.id}: {currentPhaseObj.name}</div>
                  <div style={{ fontSize:'.79rem', color:'var(--t3)', marginTop:2 }}>{currentPhaseObj.desc}</div>
                </div>
                <div style={{ fontWeight:800, fontSize:'1.1rem', color:phaseProgress(currentPhaseObj.id)>=80?'var(--green)':phaseProgress(currentPhaseObj.id)>=40?'var(--yellow)':'var(--red)', flexShrink:0 }}>
                  {phaseProgress(currentPhaseObj.id)}%
                </div>
              </div>
              <PhaseChecklist phase={currentPhaseObj}/>
            </div>
          </div>
        </div>
      )}

      {activeTab === 'info' && (
        <div className="card" style={{ marginTop:16 }}>
          <div className="ch"><div className="ct"><i className="fas fa-info-circle" style={{ marginRight:7,color:'var(--primary)' }}/>Thông tin Domain</div></div>
          <div className="info-grid">
            {[
              ['Tên Domain', domain.domain_name],
              ['Loại site', siteTypeBadge(domain.site_type).label],
              ['Thị trường', domain.market||'—'],
              ['Ngôn ngữ', domain.language||'—'],
              ['Hosting/Server', domain.hosting||'—'],
              ['Theme WordPress', domain.wordpress_theme||'—'],
              ['Target Keywords', domain.target_keywords||'—'],
              ['Giao cho', domain.assigned_name||'—'],
              ['Trạng thái', domainStatusBadge(domain.status).label],
              ['Tiến độ tổng', `${overallProgress()}%`],
              ['Ngày tạo', formatDate(domain.created_at)],
              ['Cập nhật lần cuối', formatDate(domain.updated_at)],
            ].map(([l,v]) => (
              <div key={l} className="info-row">
                <span className="info-lbl">{l}</span>
                <span className="info-val">{v}</span>
              </div>
            ))}
          </div>
          {domain.notes && (
            <div style={{ marginTop:16, padding:'12px 14px', background:'var(--bg)', borderRadius:'var(--rs)', fontSize:'.875rem', color:'var(--t2)', lineHeight:1.6 }}>
              <strong style={{ display:'block', marginBottom:4 }}><i className="fas fa-sticky-note" style={{marginRight:5,color:'var(--yellow)'}}/>Ghi chú:</strong>
              {domain.notes}
            </div>
          )}
        </div>
      )}

      {activeTab === 'comments' && (
        <div className="card" style={{ marginTop:16 }}>
          <div className="ch">
            <div className="ct"><i className="fas fa-comments" style={{ marginRight:7,color:'var(--primary)' }}/>Tất cả Comments & Ghi chú</div>
            <span className="badge b-primary">{comments.length}</span>
          </div>
          {comments.length === 0 ? <EmptyState icon="fa-comments" title="Chưa có comment nào" sub="Comment được thêm trong tab Checklist SOP"/> : (
            <div className="cmt-list">
              {[...comments].sort((a,b) => Number(b.created_at)-Number(a.created_at)).map(c => {
                const typeLabels = { note:'Ghi chú', correction:'Yêu cầu sửa', warning:'Cảnh báo', approval:'Duyệt OK' };
                const typeClsMap = { note:'b-info', correction:'b-warning', warning:'b-danger', approval:'b-success' };
                const phase = SOP_PHASES.find(p => p.id === Number(c.phase));
                return (
                  <div key={c.id} className={`cmt ${c.type}`}>
                    <div className="cmt-head">
                      <AvatarChip name={c.author_name} size={26}/>
                      <span className="cmt-author">{c.author_name}</span>
                      <Badge cls={typeClsMap[c.type]||'b-secondary'} label={typeLabels[c.type]||c.type}/>
                      {phase && <span style={{ fontSize:'.72rem', color:'var(--t3)', background:'var(--bg)', padding:'2px 8px', borderRadius:6 }}>P{phase.id}: {phase.name}</span>}
                      <span style={{ color:'var(--t3)', fontSize:'.73rem', marginLeft:'auto' }}>{formatDate(c.created_at)}</span>
                    </div>
                    <div className="cmt-text">{c.content}</div>
                  </div>
                );
              })}
            </div>
          )}
        </div>
      )}

      {showEdit && <EditModal/>}
      {showDeleteConfirm && (
        <ConfirmModal title="Xoá Domain" message={`Bạn có chắc muốn xoá domain "${domain.domain_name}"? Toàn bộ checklist và comment sẽ bị xoá.`}
          danger onConfirm={deleteDomain} onClose={() => setShowDeleteConfirm(false)}/>
      )}
    </div>
  );
};
