PageSourceSearch

https://www.xgrind.pro/assets/XBookAudit-_nr4Fbt0.js

js xgrind.pro collected 2026-09-24 15:11:57 UTC 35,419 bytes, 1 lines download raw bytes

1import{r as k,j as e,d as L,L as w}from"./react-core-bWLI75Fw.js";import{cd as $,ce as F,aP as W}from"./index-Cuw9rIcM.js";import{u as O,g as U}from"./xbookReader-BMDHMF0j.js";import{u as X}from"./useXBookIdentity-7Oly3--i.js";import{ap as N,L as q,B as _,s as K,ab as Q,bt as D,aM as G,S as Y,o as Z,$ as T,aF as B,a6 as R}from"./lucide-U8ZTX028.js";import{g as z}from"./xbookData-yuMp3Bmj.js";import"./firebase-BwZ4hkwm.js";import"./framer-motion-C0wpNkKn.js";const y=new Map,S=new Map;function J(a,{delay:i=600}={}){const[s,t]=k.useState({profile:null,loading:!1,error:null,handle:""}),l=k.useRef(null),o=k.useRef(0);return k.useEffect(()=>{const n=$(a);if(l.current&&clearTimeout(l.current),!n){t({profile:null,loading:!1,error:null,handle:""});return}if(!F(n)){t({profile:null,loading:!1,error:"invalid",handle:n});return}if(S.has(n)){t({profile:S.get(n),loading:!1,error:null,handle:n});return}t(c=>({...c,loading:!0,error:null,handle:n}));const d=++o.current;return l.current=setTimeout(async()=>{let c;y.has(n)?c=y.get(n):(c=W(n),y.set(n,c));try{const m=await c;if(y.delete(n),d!==o.current)return;m?(S.set(n,m),t({profile:m,loading:!1,error:null,handle:n})):t({profile:null,loading:!1,error:"not_found",handle:n})}catch{if(y.delete(n),d!==o.current)return;t({profile:null,loading:!1,error:"network",handle:n})}},i),()=>{l.current&&clearTimeout(l.current)}},[a,i]),s}function ee(a){return!Number.isFinite(a)||a<=0?"0":a>=1e6?`${(a/1e6).toFixed(a>=1e7?0:1)}M`:a>=1e3?`${(a/1e3).toFixed(a>=1e4?0:1)}K`:a.toLocaleString("id-ID")}function ae({state:a,variant:i="light",emptyHint:s=null}){const{profile:t,loading:l,error:o,handle:n}=a||{},d=i==="dark"?{card:"border-white/30 bg-white/8 text-white",sub:"text-white/65",meta:"text-white/55",emptyCard:"border-white/20 bg-white/5 text-white/70",loadingCard:"border-white/25 bg-white/8 text-white/85",errCard:"border-amber-300/60 bg-amber-300/12 text-amber-200",fallbackAvatar:"bg-white/15 text-white"}:{card:"border-slate-900 bg-white text-slate-900 dark:text-slate-100 ",sub:"text-slate-600 dark:text-slate-300 ",meta:"text-slate-500 dark:text-slate-400 ",emptyCard:"border-slate-200 bg-slate-50 text-slate-500 dark:text-slate-400 ",loadingCard:"border-slate-200 bg-white text-slate-500 dark:text-slate-400 ",errCard:"border-amber-500 bg-amber-50 text-amber-800 dark:text-amber-300 ",fallbackAvatar:"bg-violet-200 text-slate-900"};if(!n)return s?e.jsxs("div",{className:`mt-3 flex items-center gap-2 rounded-xl border-2 border-dashed px-3.5 py-2 text-xs font-medium ${d.emptyCard}`,children:[e.jsx(N,{size:12,strokeWidth:2.4}),s]}):null;if(l)return e.jsxs("div",{className:`mt-3 flex items-center gap-3 rounded-xl border-2 px-3.5 py-2.5 ${d.loadingCard}`,children:[e.jsx(q,{size:14,className:"animate-spin"}),e.jsxs("span",{className:"text-xs font-bold",children:["Mengecek ",e.jsxs("span",{className:"font-mono",children:["@",n]}),"..."]})]});if(o==="invalid")return e.jsxs("div",{className:`mt-3 flex items-center gap-2 rounded-xl border-2 px-3.5 py-2 text-xs font-semibold ${d.errCard}`,children:[e.jsx(N,{size:12,strokeWidth:2.4}),"Username belum lengkap (huruf, angka, atau garis bawah, maks 15)"]});if(o==="not_found")return e.jsxs("div",{className:`mt-3 flex items-center gap-2 rounded-xl border-2 px-3.5 py-2 text-xs font-semibold ${d.errCard}`,children:[e.jsx(N,{size:12,strokeWidth:2.4}),"Username ",e.jsxs("span",{className:"font-mono",children:["@",n]})," tidak ditemukan. Cek lagi."]});if(o==="network")return e.jsxs("div",{className:`mt-3 flex items-center gap-2 rounded-xl border-2 px-3.5 py-2 text-xs font-semibold ${d.errCard}`,children:[e.jsx(N,{size:12,strokeWidth:2.4}),"Tidak bisa cek profil sekarang. Coba lagi sebentar."]});if(!t)return null;const c=t.profileImageUrl,m=t.displayName||`@${t.username}`;return e.jsxs("div",{className:`mt-3 flex items-center gap-3 rounded-xl border-2 px-3.5 py-2.5 shadow-[1.5px_2px_0_rgba(15,23,42,0.6)] ${d.card}`,children:[c?e.jsx("img",{src:c,alt:t.username,referrerPolicy:"no-referrer",className:"h-10 w-10 shrink-0 rounded-lg border-2 border-current object-cover",onError:x=>{x.target.onerror=null;const h=document.createElement("div");h.className=`h-10 w-10 shrink-0 rounded-lg border-2 border-current flex items-center justify-center font-black ${d.fallbackAvatar}`,h.textContent=(t.username[0]||"?").toUpperCase(),x.target.replaceWith(h)}}):e.jsx("div",{className:`flex h-10 w-10 shrink-0 items-center justify-center rounded-lg border-2 border-current text-base font-black ${d.fallbackAvatar}`,children:(t.username[0]||"?").toUpperCase()}),e.jsxs("div",{className:"min-w-0 flex-1",children:[e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx("span",{className:"truncate text-sm font-black",children:m}),t.isVerified&&e.jsx(_,{size:13,strokeWidth:2.4,className:"shrink-0 text-sky-500"})]}),e.jsxs("div",{className:`flex items-center gap-2 text-[11px] font-bold ${d.sub}`,children:[e.jsxs("span",{className:"font-mono",children:["@",t.username]}),e.jsx("span",{className:d.meta,children:"·"}),e.jsxs("span",{className:"inline-flex items-center gap-1",children:[e.jsx(K,{size:10,strokeWidth:2.5})," ",ee(t.followers)," followers"]})]})]})]})}const ie={micro:{label:"Akun Mikro",volCap:20,replyCap:15,burst:6,idle:8},growing:{label:"Akun Berkembang",volCap:35,replyCap:25,burst:8,idle:6},mid:{label:"Akun Menengah",volCap:50,replyCap:30,burst:10,idle:5},large:{label:"Akun Besar",volCap:70,replyCap:40,burst:12,idle:5},influencer:{label:"Influencer",volCap:100,replyCap:50,burst:15,idle:5}},V={low:"<5/hari",medium:"5-20/hari",high:"20-50/hari","very-high":"50-100/hari",extreme:"100+/hari"},te={low:3,medium:12,high:35,"very-high":75,extreme:130},P={"search-stuck":{name:"Search Ban",desc:"Tweet tidak masuk index pencarian publik, bahkan dengan operator from:."},"replies-fold":{name:"Reply Deboost",desc:'Reply di-fold di balik tombol "Show probable spam replies".'},"no-autocomplete":{name:"Search Suggestion Ban",desc:"Username tidak muncul di autocomplete saat dicari."},"no-mention":{name:"Ghost Ban",desc:"Tipe paling berat, mention, notifikasi, semua di-suppress."},"qrt-missing":{name:"QRT/Mention Filter",desc:"Quote tweet tidak muncul di list QRT tweet asli."},"engagement-drop":{name:"Visibility Filtering Umum",desc:"Distribusi feed dikurangi secara algoritmik."}},se=[{value:"micro",title:"Akun Mikro",desc:"< 1.000 follower"},{value:"growing",title:"Akun Berkembang",desc:"1.000, 10.000 follower"}
1,{value:"mid",title:"Akun Menengah",desc:"10.000, 50.000 follower"},{value:"large",title:"Akun Besar",desc:"50.000, 100.000 follower"},{value:"influencer",title:"Influencer",desc:"100.000+ follower"}],ne=[{value:"low",title:"Ringan",desc:"< 5 tweet/hari"},{value:"medium",title:"Sedang",desc:"5, 20 tweet/hari"},{value:"high",title:"Tinggi",desc:"20, 50 tweet/hari"},{value:"very-high",title:"Sangat Tinggi",desc:"50, 100 tweet/hari"},{value:"extreme",title:"Ekstrem",desc:"100+ tweet/hari"}],re=[{value:"rare",title:"Jarang reply",desc:"Lebih banyak tweet sendiri, sesekali balas mention"},{value:"mutual",title:"Mostly mutual",desc:"Reply ke akun yang follow balik (komunitas/circle)"},{value:"mixed",title:"Mix mutual + non-mutual",desc:"Campuran reply ke mutual dan non-mutual yang relevan"},{value:"big-accounts",title:"Banyak ke akun besar non-mutual",desc:"Sering reply ke akun > 50K yang tidak follow balik"}],le=[{value:"original",title:"Pemikiran original",desc:"Opini, insight, thread reflektif"},{value:"news",title:"News / kurasi",desc:"Repost berita, link artikel, info real-time"},{value:"promo",title:"Brand / promo",desc:"Produk, jasa, affiliate, marketing"},{value:"fandom",title:"Fandom / komunitas",desc:"Ngobrol, meme, QRT-heavy dalam circle"},{value:"mixed",title:"Mixed / random",desc:"Apa saja, tidak ada fokus khusus"}],oe=[{value:"search-stuck",title:"Search from: mentok di tanggal lama",desc:"Tweet beberapa hari terakhir tidak muncul di pencarian"},{value:"replies-fold",title:'Reply di-fold sebagai "probable spam"',desc:"Reply-ku di tweet orang lain disembunyikan di balik tombol"},{value:"no-autocomplete",title:"Username tidak muncul di autocomplete",desc:"Saat orang ketik nama-ku di search, tidak ada saran"},{value:"no-mention",title:"Mention dari orang tidak masuk notifikasi",desc:"Teman tweet mention, notifikasi tidak muncul"},{value:"qrt-missing",title:"QRT-ku tidak muncul di list tweet asli",desc:"Aku QRT tweet besar, tapi punyaku tidak ada di list QRT"},{value:"engagement-drop",title:"Engagement drop drastis > 50%",desc:"Like, reply, impressions turun signifikan tanpa alasan jelas"},{value:"suspended",title:"Pernah suspended sebelumnya",desc:"Akun pernah di-suspend (sudah un-suspend) dalam 6 bulan terakhir"}];function de(a){const{volume:i,replyPattern:s,contentStyle:t}=a;return t==="fandom"&&(i==="very-high"||i==="extreme")?{tag:"Profil Akun",name:"Fandom Heavy Poster",desc:"Akun komunitas dengan volume tinggi, banyak QRT dan reply dalam circle. Risk utama: engagement pod pattern dan burst posting saat fandom lagi rame."}:t==="news"?{tag:"Profil Akun",name:"Real-Time News Hunter",desc:"Akun yang post berita atau kurasi link real-time. Risk utama: link spam pattern dan hashtag stuffing."}:t==="promo"?{tag:"Profil Akun",name:"Brand / Marketing Account",desc:"Akun dengan tujuan komersial, banyak link dan CTA. Risk utama: pola self-promo agresif yang men-trigger spam classifier."}:s==="big-accounts"&&(i==="high"||i==="very-high"||i==="extreme")?{tag:"Profil Akun",name:"Reply Growth-Hacker",desc:"Mengandalkan reply ke akun besar non-mutual sebagai strategi growth. Risk utama: mass reply pattern terdeteksi sebagai unsolicited engagement."}:i==="very-high"||i==="extreme"?{tag:"Profil Akun",name:"High-Volume Tweeter",desc:"Tweet sangat aktif dengan volume harian tinggi. Risk utama: burst posting dan idle window terlalu pendek."}:t==="original"&&i!=="extreme"?{tag:"Profil Akun",name:"Thought Leader",desc:"Fokus konten original dan insight. Profil paling aman secara default, risk lebih ke trigger words atau argumen yang memicu mass report."}:{tag:"Profil Akun",name:"Akun Casual",desc:"Pola posting balanced, tidak ada kategori dominan. Risk utama: akumulasi sinyal kecil dari beberapa kategori sekaligus."}}function ue(a){let i=8;return i+={low:0,medium:4,high:12,"very-high":22,extreme:32}[a.volume]||0,i+={rare:0,mutual:2,mixed:8,"big-accounts":22}[a.replyPattern]||0,i+={original:2,news:6,promo:10,fandom:8,mixed:4}[a.contentStyle]||0,i+=a.symptoms.length*7,a.symptoms.includes("no-mention")&&(i+=8),a.symptoms.includes("suspended")&&(i+=12),i+={micro:4,growing:2,mid:0,large:-2,influencer:-3}[a.size]||0,Math.max(5,Math.min(100,Math.round(i)))}function ce(a){return a<30?{name:"AMAN",color:"#6ee7b7",textColor:"#059669",barColor:"#34d399"}
1:a<55?{name:"WASPADA",color:"#fcd34d",textColor:"#b45309",barColor:"#fbbf24"}:{name:"BERBAHAYA",color:"#fda4af",textColor:"#e11d48",barColor:"#f43f5e"}}function me(a){const i=[];a.volume==="very-high"||a.volume==="extreme"?i.push({name:"Burst posting / volume terlalu tinggi",sev:"high",explain:`Volume ${V[a.volume]} sangat dekat atau di atas threshold spam classifier. Distribusi waktu lebih krusial daripada total volume.`}):a.volume==="high"&&i.push({name:"Volume harian tinggi",sev:"medium",explain:"Volume 20-50/hari oke kalau distribusinya bagus. Hindari burst > 10 tweet/jam."}),a.replyPattern==="big-accounts"?i.push({name:"Mass reply ke akun besar non-mutual",sev:"high",explain:"Pola reply ke akun yang tidak follow balik dalam volume tinggi terdeteksi sebagai unsolicited engagement, salah satu trigger paling kuat untuk reply deboost."}):a.replyPattern==="mixed"&&i.push({name:"Reply mix mutual + non-mutual",sev:"low",explain:"Pola yang relatif aman. Tetap perhatikan substansi reply, hindari one-liner emoji/wkwk ke akun besar."}),a.contentStyle==="promo"&&i.push({name:"Self-promo terlalu agresif",sev:"medium",explain:"Pakai rule 4:1, 4 tweet value/komunitas, 1 tweet promo. Bukan terbalik."}),a.contentStyle==="news"&&i.push({name:"Link & hashtag stuffing risk",sev:"medium",explain:"Diversifikasi domain link, max 2 hashtag per tweet yang relevan. Tambah 1-2 kalimat insight, jangan cuma headline + link."}),a.contentStyle==="fandom"&&i.push({name:"Engagement pod / coordinated activity",sev:"medium",explain:"Pola like/reply terlalu reciprocal dengan grup kecil akun terbaca sebagai coordinated activity. Diversifikasi engagement-mu."}),a.symptoms.includes("suspended")&&i.push({name:"Carry-over risk dari suspend history",sev:"medium",explain:"Trust score belum pulih penuh. Butuh 30-45 hari posting bersih untuk hilang."}),i.length===0&&i.push({name:"Tidak ada trigger dominan terdeteksi",sev:"low",explain:"Pola akunmu relatif aman. Tetap monitor dengan Memorizer untuk catch perubahan dini."});const s={high:0,medium:1,low:2};return i.sort((t,l)=>s[t.sev]-s[l.sev])}function ke(a){const{volCap:i,replyCap:s,burst:t}=a,l=Math.max(3,Math.round(i*.15)),o=Math.round(i*.4),n=Math.round(i*.7),d=i,c=Math.round(s*.3),m=Math.round(s*.6),x=s;return[{phase:"Fase 1 · Detox"},{day:"Hari 0",vol:"-",reply:"-",note:"Deep Scan baseline di Shadowban Hub. Simpan skor awal sebagai referensi."},{day:"Hari 1",vol:"0",reply:"0",note:"Black-out total 24 jam. Boleh scroll, tidak posting/reply/like."},{day:"Hari 2",vol:l,reply:0,note:"Audit & delete max 20 tweet bermasalah. Posting ringan saja."},{day:"Hari 3",vol:l,reply:0,note:"Original content only. Tidak hashtag, tidak QRT, tidak reply."},{phase:"Fase 2 · Reset"},{day:"Hari 4-5",vol:o,reply:c,note:"Spread waktu, distribusi pagi-siang-malam. Reply hanya ke mutual."},{day:"Hari 6",vol:o,reply:c,note:"Deep Scan kedua. Target: skor turun 10-20 poin dari baseline."},{day:"Hari 7",vol:o,reply:c,note:"Quality tweet: pemicu diskusi, substantif, bukan rant."},{phase:"Fase 3 · Build"},{day:"Hari 8-10",vol:n,reply:m,note:`Burst limit ${t}/jam. Hashtag 1-2 relevan. QRT max 2/hari.`},{day:"Hari 11",vol:n,reply:m,note:"Deep Scan ketiga. Lihat tren di Memorizer."},{day:"Hari 12",vol:n,reply:m,note:"Tes reply ke 1-2 akun besar relevan, cek apakah masih di-deboost."},{phase:"Fase 4 · Sustain"},{day:"Hari 13",vol:d,reply:x,note:"Deep Scan final. Target: skor < 25 untuk validasi success."},{day:"Hari 14+",vol:d,reply:x,note:"Transisi ke posting habit jangka panjang. Daily Memorizer check."}]}function he(a){const i=["Cek Memorizer setiap hari, daily check itu sweet spot untuk track tren.","Spread waktu posting (pagi-siang-malam), jangan burst di satu sesi.","Original content sebanyak mungkin (target ratio 70%+).","Engagement substansial, bukan one-liner emoji/wkwk."];return a.contentStyle==="promo"&&i.push("Rule 4:1, 4 tweet komunitas, 1 tweet promo."),a.contentStyle==="news"&&i.push("Diversifikasi domain link, bukan repeat link sendiri terus."),a.replyPattern==="big-accounts"&&i.push("Geser growth tactic, reply ke akun ukuran sedang lebih efektif daripada akun raksasa."),a.symptoms.includes("suspended")&&i.push("Verifikasi nomor telepon & email, naikkan trust score."),i}function pe(a){const i=["Banding lewat support form (X tidak mengakui shadowban).","Bikin akun baru, device + IP tetap ke-link, no benefit.","Delete tweet massal > 30 dalam 1 hari (sinyal panik).","Pakai bot follow/unfollow."];return(a.volume==="very-high"||a.volume==="extreme")&&i.push("Burst > 15 tweet/jam, walaupun dalam total cap harian."),a.replyPattern==="big-accounts"&&i.push("Reply 1-kata atau emoji-only ke akun besar (terbaca spam)."),a.contentStyle==="fandom"&&i.push("Engagement pod yang terlalu reciprocal dengan grup kecil."),a.symptoms.includes("engagement-drop")&&i.push("Panik posting lebih banyak untuk mengejar engagement, justru memperparah."),i}function xe(a){const i=[],s=(o,n,d)=>{i.find(c=>c.slug===o)||i.push({slug:o,reason:n,weight:d})};a.symptoms.includes("suspended")&&s("recovery-playbook","Kamu pern
1ah suspend, buku ini protokol konkret untuk pulihkan trust score akun.",100);const t=["search-stuck","replies-fold","no-autocomplete","no-mention","qrt-missing"],l=a.symptoms.filter(o=>t.includes(o));return l.length>=2?s("panduan-shadowban",`${l.length} gejala shadowban aktif, buku ini bedah tiap tipe ban + protokol penyembuhan 14 hari.`,90):l.length===1&&s("panduan-shadowban","Ada satu gejala shadowban, pelajari bedakan tiap tipe ban di buku ini sebelum eskalasi.",70),a.symptoms.includes("engagement-drop")&&s("engagement-optimization","Engagement turun drastis, buku ini bedah sinyal apa yang algoritma reward & demote saat ini.",80),(a.contentStyle==="promo"||a.contentStyle==="news")&&s("engagement-optimization","Konten brand/news butuh disiplin engagement design, buku ini formula praktis untuk niche kamu.",60),a.replyPattern==="big-accounts"&&s("engagement-optimization","Reply-to-grow adalah strategi paling underrated, buku ini bab khusus tentang reply hierarchy.",65),(a.size==="large"||a.size==="influencer")&&s("defense-playbook","Akun besar = target empuk untuk mass report. Siapkan pertahanan sebelum jadi target.",55),a.contentStyle==="original"&&(a.volume==="very-high"||a.volume==="extreme")&&s("defense-playbook","Volume tinggi + opini original = sering memicu mass report. Buku ini protokol bertahan.",50),(a.size==="micro"||a.size==="growing")&&s("indonesia-x-field-guide","Akun bertumbuh butuh peta komunitas X Indonesia, di mana base lo, momentum, dan window peluang.",45),a.contentStyle==="fandom"&&s("indonesia-x-field-guide","Konten fandom = dependent pada subkultur X Indonesia. Buku ini peta komunitas dan norma-nya.",50),a.contentStyle==="mixed"?s("niche-positioning","Konten random tanpa fokus = gado-gado. Buku ini framework nemuin niche-mu sendiri dan strategi 90 hari narrowing.",75):(a.size==="micro"||a.size==="growing")&&a.symptoms.length===0&&s("niche-positioning","Akun bertumbuh tanpa shadowban issue = waktu yang tepat untuk perkuat positioning sebelum scale.",40),(a.contentStyle==="news"||a.contentStyle==="promo")&&s("ai-era","Konten news/brand sering pakai AI untuk volume. Buku ini cara pakai AI tanpa kehilangan voice & risk bot flag.",55),(a.size==="large"||a.size==="influencer")&&s("ai-era","Akun besar dengan posting volume tinggi rentan kena flag bot. Buku ini mitigasi + workflow AI yang aman.",45),i.length===0&&(s("panduan-shadowban","Mulai dari fundamentals, kenali sinyal visibility filtering sebelum ada masalah.",30),s("engagement-optimization","Lanjut ke ofensif, sinyal apa yang algoritma reward.",28),s("indonesia-x-field-guide","Pahami konteks lokal, twitter Indonesia punya dinamika sendiri.",25)),i.sort((o,n)=>n.weight-o.weight),i.slice(0,3)}function ge(a,i){const s=te[a.volume],t=s>i.volCap;return{overCap:t,userVol:s,summary:`Akun ${i.label} dengan pola posting ${V[a.volume]}. ${t?"Volume saat ini di atas threshold aman untuk ukuran akun-mu, ini kemungkinan jadi trigger utama.":"Volume masih dalam batas aman untuk ukuran akun-mu."}`}}function be(a){return!Number.isFinite(a)||a<=0?"0":a>=1e6?`${(a/1e6).toFixed(a>=1e7?0:1)}M`:a>=1e3?`${(a/1e3).toFixed(a>=1e4?0:1)}K`:a.toLocaleString("id-ID")}function fe(a){return!Number.isFinite(a)||a<=0?"":a<1e3?"micro":a<1e4?"growing":a<5e4?"mid":a<1e5?"large":"influencer"}function M(a){return{handle:a||"",size:"",volume:"",replyPattern:"",contentStyle:"",symptoms:[]}}function Re(){const a=L(),{handle:i,profile:s}=X(),[t,l]=k.useState(()=>M(i)),[o,n]=k.useState(!1),[d,c]=k.useState("");k.useEffect(()=>{i&&!t.handle&&l(u=>({...u,handle:i}))},[i]),O({enabled:!0});const m=U(),x=k.useMemo(()=>{const u=[];for(let p=0;p<60;p++)u.push(`X BOOK · @${m}`);return u},[m]),h=u=>{u.preventDefault();const{size:p,volume:E,replyPattern:H,contentStyle:I}=t;if(!p||!E||!H||!I){c("Lengkapi pertanyaan 2 sampai 5 dulu sebelum generate hasil.");return}c(""),n(!0),setTimeout(()=>{const A=document.getElementById("xbook-audit-result");A&&A.scrollIntoView({behavior:"smooth",block:"start"})},80)},g=()=>{l(M(i)),n(!1),c(""),setTimeout(()=>window.scrollTo({top:0,behavior:"smooth"}),40)},b=String(t.handle||"").replace(/^@+/,"").trim().toLowerCase()||"kamu",r=t.size?ie[t.size]:null;return e.jsxs("div",{className:"xbook-app","data-theme":"light",style:{"--xb-accent":"#7dd3fc"},children:[e.jsxs("header",{className:"xbook-topbar",children:[e.jsx("div",{className:"xbook-topbar-left",children:e.jsxs("button",{className:"xbook-back",onClick:()=>a("/x-book"),"aria-label":"Kembali ke X Book",children:[e.jsx(Q,{size:14,strokeWidth:2.5}),e.jsx("span",{className:"xbook-back-text",children:"X Book"})]})}),e.jsxs("div",{className:"xbook-topbar-center",children:[e.jsx("span",{className:"xbook-topbar-edition",style:{display:"block"},children:"Field Guide · Audit Personal"}),e.jsx("span",{className:"xbook-topbar-title",children:"Audit Personal"})]}),e.jsx("div",{className:"xbook-topbar-right",children:o&&e.jsx("button",{className:"xbook-iconbtn",onClick:g,"aria-label":"Ulangi audit",title:"Ulangi audit",children:e.jsx(D,{size:16,strokeWidth:2.2})})})]}
1),e.jsx("div",{className:"xbook-watermark","aria-hidden":!0,children:x.map((u,p)=>e.jsx("span",{children:u},p))}),e.jsx("main",{className:"xbook-surface",children:e.jsxs("article",{className:"xbook-paper",children:[e.jsxs("div",{className:"xbook-cover-meta",children:[e.jsx("div",{className:"xbook-cover-eyebrow",children:"Field Guide · Interaktif"}),e.jsxs("h1",{className:"xbook-cover-title",children:["Audit Personal",e.jsx("br",{}),e.jsx("span",{className:"xbook-cover-title-accent",children:"90 detik · 6 pertanyaan"})]}),e.jsx("div",{className:"xbook-cover-sub",children:"Cerita dulu sebentar soal akunmu. Sistem yang akan kasih saran buku mana yang paling cocok kamu baca duluan."}),e.jsxs("div",{className:"xbook-cover-meta-row",children:[e.jsx("span",{className:"xbook-cover-pill",children:"Diproses lokal"}),e.jsx("span",{className:"xbook-cover-pill",children:"Tanpa kirim ke server"}),e.jsx("span",{className:"xbook-cover-pill",children:"Hasil + rekomendasi buku"})]})]}),o?e.jsx(je,{answers:{...t,handle:b},profile:r,onReset:g}):e.jsx(ye,{answers:t,setAnswers:l,error:d,onSubmit:h,verifiedHandle:i,verifiedProfile:s}),e.jsxs("div",{className:"xbook-end",children:[e.jsx("div",{className:"xbook-end-ornament",children:"❦   ·   ❦"}),e.jsx("p",{children:"X Book · Audit Personal"}),e.jsx("p",{className:"muted",children:"Hasil dihitung lokal di browser, tidak disimpan ke server"})]})]})})]})}function ye({answers:a,setAnswers:i,error:s,onSubmit:t,verifiedHandle:l,verifiedProfile:o}){const n=J(a.handle,{delay:600}),d=n.profile&&n.handle===$(a.handle)?n.profile:null,c=k.useRef("");k.useEffect(()=>{const r=d||o;if(!r?.followers)return;const u=fe(r.followers);u&&(!a.size||a.size===c.current)&&a.size!==u&&(i(p=>({...p,size:u})),c.current=u)},[d,o]);const m=(r,u)=>i(p=>({...p,[r]:u})),x=r=>{i(u=>({...u,symptoms:u.symptoms.includes(r)?u.symptoms.filter(p=>p!==r):[...u.symptoms,r]}))},h=d||o,g=l&&a.handle===l&&!d,b=!!(h?.followers&&a.size);return e.jsxs("form",{onSubmit:t,className:"xbook-audit-form",children:[e.jsxs(f,{idx:1,label:"Pertanyaan 1",question:"Username X-mu",hint:g?"Diisi otomatis dari verifikasi follow. Ganti kalau mau audit akun lain.":"Tanpa @. Sistem ambil profil untuk personalisasi (followers, dll).",children:[e.jsx("input",{type:"text",className:"xbook-audit-input",value:a.handle,onChange:r=>m("handle",r.target.value.replace(/^@+/,"")),maxLength:15,autoComplete:"off",placeholder:"asministratur"}),g?e.jsxs("div",{className:"xbook-audit-prefill-note",children:[e.jsx("span",{className:"xbook-audit-prefill-dot"})," Terverifikasi @",l]}):e.jsx(ae,{state:n,variant:"light"})]}),e.jsx(f,{idx:2,label:"Pertanyaan 2",question:"Berapa follower-mu sekarang?",hint:b&&h?.followers?`Diisi otomatis dari profil @${h.username} (~${be(h.followers)} followers). Ubah kalau perlu.`:"Ini menentukan threshold posting yang dianggap normal vs spammy.",children:e.jsx(j,{name:"size",options:se,value:a.size,onChange:r=>m("size",r),cols:2})}),e.jsx(f,{idx:3,label:"Pertanyaan 3",question:"Rata-rata berapa tweet per hari?",hint:"Termasuk reply, QRT, dan tweet original. Estimasi 7 hari terakhir.",children:e.jsx(j,{name:"volume",options:ne,value:a.volume,onChange:r=>m("volume",r),cols:2})}),e.jsx(f,{idx:4,label:"Pertanyaan 4",question:"Bagaimana pola reply-mu?",hint:"Pola reply adalah salah satu sinyal terkuat untuk classifier X.",children:e.jsx(j,{name:"replyPattern",options:re,value:a.replyPattern,onChange:r=>m("replyPattern",r),cols:1})}),e.jsx(f,{idx:5,label:"Pertanyaan 5",question:"Apa karakter konten utama-mu?",hint:"Karakter konten menentukan trigger mana yang paling perlu diwaspadai.",children:e.jsx(j,{name:"contentStyle",options:le,value:a.contentStyle,onChange:r=>m("contentStyle",r),cols:2})}),e.jsx(f,{idx:6,label:"Pertanyaan 6 · Multi-pilih",question:"Gejala apa yang sedang kamu rasakan?",hint:"Centang semua yang sesuai. Kalau tidak ada, biarkan kosong, sistem tetap kasih panduan pencegahan.",children:e.jsx(j,{multi:!0,name:"symptoms",options:oe,value:a.symptoms,onChange:x,cols:1})}),s&&e.jsxs("div",{className:"xbook-audit-err",role:"alert",children:[e.jsx(G,{size:14,strokeWidth:2.5}),s]}),e.jsxs("div",{className:"xbook-audit-submit",children:[e.jsxs("button",{type:"submit",className:"xbook-audit-btn",children:[e.jsx(Y,{size:14,strokeWidth:2.5}),"Generate Panduan + Rekomendasi"]}),e.jsx("span",{className:"xbook-audit-meta",children:"Hasil di-render lokal · tidak ada kirim data ke server"})]})]})}function f({idx:a,label:i,question:s,hint:t,children:l}){return e.jsxs("section",{className:"xbook-audit-field","data-q":a,children:[e.jsx("span",{className:"xbook-audit-label",children:i}),e.jsx("h3",{className:"xbook-audit-question",children:s}),t&&e.jsx("p",{className:"xbook-audit-hint",children:t}),l]})}function j({name:a,options:i,value:s,onChange:t,cols:l=1,multi:o=!1}){const n=l===2?"xbook-opts-2":l===3?"xbook-opts-3":"";return e.jsx("div",{className:`xbook-opts ${n}`,children:i.map(d=>{const c=o?s.includes(d.value):s===d.value;return e.jsxs("button",{type:"button",onClick:()=>
1t(d.value),className:`xbook-opt ${c?"is-on":""}`,"aria-pressed":c,children:[e.jsx("span",{className:`xbook-opt-mark ${o?"is-check":"is-radio"}`,"aria-hidden":!0,children:c&&(o?"✓":"")}),e.jsxs("span",{className:"xbook-opt-body",children:[e.jsx("span",{className:"xbook-opt-title",children:d.title}),e.jsx("span",{className:"xbook-opt-desc",children:d.desc})]})]},d.value)})})}function je({answers:a,profile:i,onReset:s}){const t=k.useMemo(()=>de(a),[a]),l=k.useMemo(()=>ue(a),[a]),o=k.useMemo(()=>ce(l),[l]),n=k.useMemo(()=>me(a),[a]),d=k.useMemo(()=>i?ke(i):[],[i]),c=k.useMemo(()=>he(a),[a]),m=k.useMemo(()=>pe(a),[a]),x=k.useMemo(()=>xe(a),[a]),h=k.useMemo(()=>i?ge(a,i):null,[a,i]),g=a.symptoms.filter(r=>P[r]),b=g.length>0;return e.jsxs("div",{id:"xbook-audit-result",className:"xbook-audit-result",children:[e.jsx(ve,{recs:x}),e.jsxs("div",{className:"xbook-audit-resulthero",children:[e.jsx("span",{className:"xbook-audit-eyebrow",children:"Audit Personal · Dihasilkan untuk"}),e.jsxs("h2",{className:"xbook-audit-resulttitle",children:["Halo, ",e.jsxs("span",{className:"xbook-audit-handle",children:["@",a.handle]}),".",e.jsx("br",{}),"Ini playbook khusus untukmu."]}),h&&e.jsx("p",{className:"xbook-audit-summary",children:h.summary}),e.jsxs("div",{className:"xbook-audit-gauge",children:[e.jsx("div",{className:"xbook-audit-gauge-num",style:{color:o.barColor},children:l}),e.jsxs("div",{className:"xbook-audit-gauge-meta",children:[e.jsx("div",{className:"xbook-audit-gauge-label",children:"Estimasi Risk Score"}),e.jsx("span",{className:"xbook-audit-gauge-zone",style:{background:o.color,color:o.textColor},children:o.name}),e.jsxs("div",{className:"xbook-audit-gauge-bar",children:[e.jsx("div",{className:"xbook-audit-gauge-fill",style:{width:`${l}%`,background:o.barColor}}),e.jsx("div",{className:"xbook-audit-gauge-marker",style:{left:"30%"},"data-label":"30"}),e.jsx("div",{className:"xbook-audit-gauge-marker",style:{left:"55%"},"data-label":"55"})]}),e.jsx("p",{className:"xbook-audit-gauge-note",children:"Estimasi awal dari jawaban. Untuk angka aktual, jalankan Deep Scan di Shadowban Hub."})]})]})]}),e.jsxs("div",{className:"xbook-audit-scenario",children:[e.jsx("span",{className:"xbook-audit-scenariotag",children:t.tag}),e.jsx("h3",{children:t.name}),e.jsx("p",{children:t.desc})]}),i&&e.jsxs(v,{num:1,title:"Threshold Personalmu",children:[e.jsx("p",{children:"Berdasarkan ukuran akun, ini batas posting yang aman untukmu. Lewat batas ini, risk score mulai naik."}),e.jsxs("div",{className:"xbook-audit-thresholds",children:[e.jsx(C,{label:"Volume Cap",value:i.volCap,unit:"tweet/hari maksimal",context:h?.overCap?{tone:"bad",text:`Volume aktualmu (~${h.userVol}/hari) di atas batas. Turunkan.`}:{tone:"good",text:`Volume aktualmu (~${h.userVol}/hari) dalam batas. Aman.`}}),e.jsx(C,{label:"Reply Quota",value:i.replyCap,unit:"reply/hari maksimal",context:{tone:"neutral",text:"60% ke mutual, 40% non-mutual relevan."}}),e.jsx(C,{label:"Burst Limit",value:i.burst,unit:"tweet/jam maksimal",context:{tone:"neutral",text:`Idle window minimal ${i.idle} jam/hari.`}})]})]}),e.jsxs(v,{num:2,title:"Trigger Paling Berisiko untukmu",children:[e.jsx("p",{children:"Berdasarkan pola kontenmu, ini trigger yang paling perlu kamu waspadai, diurut dari severity tertinggi."}),e.jsx("ul",{className:"xbook-audit-triggers",children:n.map((r,u)=>e.jsxs("li",{children:[e.jsx("span",{className:`xbook-audit-sev xbook-audit-sev-${r.sev}`,"aria-hidden":!0}),e.jsxs("div",{className:"xbook-audit-trigger-text",children:[e.jsx("div",{className:"xbook-audit-trigger-name",children:r.name}),e.jsx("div",{className:"xbook-audit-trigger-exp",children:r.explain})]}),e.jsx("span",{className:`xbook-audit-sev-tag xbook-audit-sev-tag-${r.sev}`,children:r.sev==="high"?"Tinggi":r.sev==="medium"?"Sedang":"Rendah"})]},u))})]}),b&&e.jsxs(v,{num:3,title:"Diagnosis Gejala",children:[e.jsx("p",{children:"Berdasarkan gejala yang kamu centang, tipe shadowban berikut kemungkinan besar sedang aktif."}),e.jsx("div",{className:"xbook-audit-diagnosis",children:g.map(r=>e.jsxs("div",{className:"xbook-audit-dx",children:[e.jsxs("div",{className:"xbook-audit-dx-head",children:[e.jsx(Z,{size:12,strokeWidth:2.5})," Kemungkinan aktif"]}),e.jsx("div",{className:"xbook-audit-dx-name",children:P[r].name}),e.jsx("div",{className:"xbook-audit-dx-desc",children:P[r].desc})]},r))})]}),d.length>0&&e.jsxs(v,{num:b?4:3,title:"Recovery Plan 14 Hari (Disesuaikan)",children:[e.jsx("p",{children:"Volume cap dan reply quota di tabel ini sudah disesuaikan dengan ukuran akun-mu."}),e.jsx("div",{className:"xbook-audit-tablewrap",children:e.jsxs("table",{className:"xbook-audit-plan",children:[e.jsx("thead",{children:e.jsxs("tr",{children:[e.jsx("th",{children:"Hari"}),e.jsx("th",{children:"Tweet/hari"}),e.jsx("th",{children:"Reply/hari"}),e.jsx("th",{children:"Catatan"})]})}),e.jsx("tbody",{children:d.map((r,u)=>r.phase?e.jsx("tr",{className:"phase-row",children:e.jsx("td",{colSpan:4,children:r.phase})},u):e.jsxs("tr",{children:[e.jsx("td",{children:r.day}),e.jsx("td",{children:r.vol}),e.jsx("td",{children:r.reply}),e.jsx("td",{children:r.note})]},u))})]})})]}),e.jsxs(v,{num:b?5:4,title:"Do's & Don'ts Personal",children:[e.jsx("p",{children:"Adjusted berdasarkan profil akun dan trigger yang dideteksi."}),e.jsxs("div",{className:"xbook-audit-dos",children:[e.jsxs("div",{className:"xbook-audit-do",children:[e.jsx("h4",{children:"✓ DO"}),e.jsx("ul",{children:c.map((r,u)=>e.jsx("li",{children:r},u))})]}),e.jsxs("div",{className:"xbook-audit-dont",children:[e.jsx("h4",{children:"✗ DON'T"}),e.jsx("ul",{children:m.map((r,u)=>e.jsx("li",{children:r},u))})]})]})]}),e.jsx("div",{className:"xbook-audit-reset",children:e.jsxs("button",{type:"button",className:"xbook-audit-resetbtn",onClick:s,children:[e.jsx(D,{size:14,strokeWidth:2.5})," Ulangi Audit"]})})]})}function v({num:a,title:i,children:s}){return e.jsxs("section",{className:"xbook-audit-block",children:[e.jsxs("header",{className:"xbook-audit-blockhead",children:[e.jsx("span",{className:"xbook-audit-blocknum",children:a}),e.jsx("span",{className:"xbook-audit-blocktitle",children:i})]}),s]})}function C({label:a,value:i,unit:s,context:t}){return e.jsxs("div",{className:"xbook-audit-threshcard",children:[e.jsx("div",{className:"xbook-audit-threshlabel",children:a}),e.jsx("div",{className:"xbook-audit-threshval",children:i}),e.jsx("div",{className:"xbook-audit-threshunit",children:s}),t&&e.jsx("div",{className:`xbook-audit-threshctx xbook-audit-threshctx-${t.tone}`,children:t.text})]})}function ve({recs:a}
1){if(!a||a.length===0)return null;const[i,...s]=a,t=z(i.slug);return e.jsxs("section",{className:"xbook-audit-recs",children:[e.jsxs("div",{className:"xbook-audit-recs-head",children:[e.jsxs("span",{className:"xbook-audit-recs-badge",children:[e.jsx(T,{size:11,strokeWidth:2.5}),"X Book Library · Dipilih untukmu"]}),e.jsx("h3",{children:"Reading order khusus untuk profilmu"}),e.jsx("p",{children:"Berdasarkan jawabanmu, ini buku yang harus dibaca dulu, diurut dari paling kritis ke pendukung."})]}),t&&e.jsxs(w,{to:`/x-book/${i.slug}`,className:"xbook-audit-rec-primary",children:[e.jsxs("div",{className:"xbook-audit-rec-primary-rank",children:[e.jsx("span",{className:"xbook-audit-rec-primary-num",children:"01"}),e.jsx("span",{className:"xbook-audit-rec-primary-label",children:"Mulai di sini"})]}),e.jsxs("div",{className:"xbook-audit-rec-primary-body",children:[e.jsxs("div",{className:"xbook-audit-rec-meta",children:[e.jsx("span",{className:"xbook-audit-rec-edition",children:t.edition}),e.jsx("span",{className:"xbook-audit-rec-dot",children:"·"}),e.jsxs("span",{className:"xbook-audit-rec-time",children:[e.jsx(B,{size:11,strokeWidth:2.5})," ",t.readMinutes,"m"]}),e.jsx("span",{className:"xbook-audit-rec-dot",children:"·"}),e.jsxs("span",{children:[t.chapters," bab"]})]}),e.jsx("div",{className:"xbook-audit-rec-primary-title",children:t.title}),e.jsx("div",{className:"xbook-audit-rec-primary-sub",children:t.subtitle}),e.jsx("div",{className:"xbook-audit-rec-primary-reason",children:i.reason}),e.jsxs("div",{className:"xbook-audit-rec-primary-cta",children:["Buka buku ",e.jsx(R,{size:14,strokeWidth:2.5})]})]})]}),s.length>0&&e.jsxs(e.Fragment,{children:[e.jsx("div",{className:"xbook-audit-recs-sep",children:e.jsx("span",{children:"Lanjutan"})}),e.jsx("div",{className:"xbook-audit-recs-list",children:s.map((l,o)=>{const n=z(l.slug);return n?e.jsxs(w,{to:`/x-book/${l.slug}`,className:"xbook-audit-rec",children:[e.jsx("div",{className:"xbook-audit-rec-rank",children:String(o+2).padStart(2,"0")}),e.jsxs("div",{className:"xbook-audit-rec-body",children:[e.jsxs("div",{className:"xbook-audit-rec-meta",children:[e.jsx("span",{className:"xbook-audit-rec-edition",children:n.edition}),e.jsx("span",{className:"xbook-audit-rec-dot",children:"·"}),e.jsxs("span",{className:"xbook-audit-rec-time",children:[e.jsx(B,{size:11,strokeWidth:2.5})," ",n.readMinutes,"m"]})]}),e.jsx("div",{className:"xbook-audit-rec-title",children:n.title}),e.jsx("div",{className:"xbook-audit-rec-reason",children:l.reason})]}),e.jsxs("div",{className:"xbook-audit-rec-cta","aria-hidden":!0,children:[e.jsx(T,{size:16,strokeWidth:2.4}),e.jsx(R,{size:14,strokeWidth:2.5})]})]},l.slug):null})})]}),e.jsxs("p",{className:"xbook-audit-recs-foot",children:["Atau eksplor seluruh koleksi di ",e.jsx(w,{to:"/x-book",className:"xbook-audit-recs-link",children:"X Book Library →"})]})]})}export{Re as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.