PageSourceSearch

https://mychar.gg/_nuxt/Bblypf68.js

js mychar.gg collected 2026-10-08 16:08:52 UTC 5,142 bytes, 2 lines download raw bytes

1import{_ as p}from"./Cgz1c-3U.js";import{a9 as M,I as N,br as P,bs as T,R as E,Q as _,$ as b,S as R,aT as v,aK as l,aV as x,V as q,be as y,X as a,bn as d,i as B,W as k,bH as o,bI as j,bk as O}from"./CZO_kbxe.js";import{_ as W}from"./CuEweTsk.js";import{_ as G}from"./C5vBVshv.js";import{_ as H,g as Q}from"./BvMEdCzu.js";import{_ as X}from"./DMrg6KyT.js";import{u as J}from"./D04dfX-7.js";import{L as Y}from"./zk7Xu1IT.js";import"./DHC8vXKX.js";import"./Da3hL8dS.js";const Z={class:"flex flex-col gap-6"},ee={class:"text-sm text-muted"},ae={key:0,class:"flex items-center justify-between gap-3 border-t border-default pt-4"},te={class:"text-sm text-muted"},fe=M({__name:"domains",async setup(ne){let c,g;N({title:"Admin - Custom Domains",description:"Manage connected custom domains"});const f=P(),w=T().create(Y),D=J(),{data:$,status:C,refresh:S}=([c,g]=E(()=>B("admin-domains",()=>D("/api/admin/domains"))),c=await c,g(),c),h=_(()=>$.value?.domains??[]),s=b(""),r=_(()=>{if(!s.value)return h.value;const e=s.value.toLowerCase();return h.value.filter(n=>n.domain.includes(e)||(n.character.username??"").includes(e))}),t=b({pageIndex:0,pageSize:20});R(s,()=>{t.value={...t.value,pageIndex:0}});function z(e){t.value={...t.value,pageIndex:e-1}}const U={pending_ownership:"warning",pending_dns:"info",active:"success",error:"error"},I={pending_ownership:"Awaiting verification",pending_dns:"Waiting for DNS",active:"Live",error:"Error"};async function L(e){if(await w.open({title:"Force disconnect domain",description:`Remove "${e.domain}" (owned by @${e.character.username??"unknown"})? The domain stops serving their page immediately. Their add-on access is not affected, they can connect another domain.`,confirmText:"Disconnect",confirmColor:"error"}).result)try{await $fetch(`/api/admin/domains/${e.id}`,{method:"DELETE"}),await S(),f.add({title:"Domain disconnected",icon:"i-lucide-check",color:"success",duration:2e3})}catch(i){f.add({title:"Error",description:i.data?.message||"Failed to disconnect",icon:"i-lucide-x",color:"error"})}}function V(e){return e?new Date(e).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"}):"Never"}const A=[{accessorKey:"domain",header:"Domain",cell:({row:e})=>o("a",{href:`https://${e.original.domain}`,target:"_blank",rel:"noopener",class:"font-medium text-highlighted hover:underline"},e.original.domain)},{accessorKey:"character",header:"Owner",cell:({row:e})=>o("span",{class:"text-sm text-muted"},e.original.character.username?`@${e.original.character.username}`:"Unknown")},{accessorKey:"status",header:"Status",cell:({row:e})=>o(p,{color:U[e.original.status]||"neutral",variant:"subtle",size:"sm"},()=>I[e.original.status]||e.original.status)},{accessorKey:"addon_source",header:"Access",cell:({row:e})=>{const n=e.original.addon_source;if(!n)return o(p,{color:"neutral",variant:"subtle",size:"sm"},()=>"None");const i={stripe:{label:e.original.addon_active?"Paying":"Lapsed",color:e.original.addon_active?"success":"error"},grandfathered:{label:"Grandfathered",color:"info"},admin:{label:"Admin granted",color:"warning"}}[n]??{label:n,color:"neutral"};return o(p,{color:i.color,variant:"subtle",size:"sm"},()=>i.label)}},{accessorKey:"failed_checks",header:"Failed checks",cell:({row:e})=>o("span",{class:e.original.failed_checks>0?"text-sm text-error-400":"text-sm text-muted"},String(e.original.failed_checks))},{accessorKey:"created_at",header:"Connected",cell:({row:e})=>o("span",{class:"text-sm text-muted"},V(e.original.created_at))},{id:"actions",header:"",cell:({row:e})=>o("div",{class:"flex items-center justify-end"},[o(j,{text:"Force disconnect"},{default:()=>o(O,{icon:"i-lucide-unplug",size:"xs",color:"error",variant:"ghost",onClick:()=>L(e.original)})})])}];return(e,n)=>{const m=W,i=G,F=H,K=X;return k(),v("div",Z,[l(m,{title:"Custom Domains",description:"All connected custom domains. Force disconnect removes a domain from the platform.",variant:"naked",orientation:"horizontal"}),l(i,{modelValue:a(s),"onUpdate:modelValue":n[0]||(n[0]=u=>y(s)?s.value=u:null),icon:"i-lucide-search",placeholder:"Search domains or usernames...",class:"max-w-sm"},null,8,["modelValue"]),x("p",ee,d(a(r).length)+" domain"+d(a(r).length===1?"":"s"),1),l(F,{pagination:a(t),"onUpdate:pagination":n[1]||(n[1]=u=>y(t)?t.value=u:null),"pagination-options":{getPaginationRowModel:a(Q)()},data:a(r),columns:A,loading:a(C)==="pending",empty:"No custom domains connected yet",ui:{base:"table-fixed border-separate border-spacing-0",thead:"[&>tr]:bg-elevated/50 [&>tr]:after:content-none",tbody:"[&>tr]:last:[&>td]:border-b-0",th:"py-2 first:rounded-l-lg last:rounded-r-lg border-y border-default first:border-l last:border-r",td:"border-b border-default",separator:"h-0"}},null,8,["pagination","pagination-options","data","loading"]),a(r).length>a(t).pageSize?(k(),v("div",ae,[x("span",te," Page "+d(a(t).pageIndex+1)+" of "+d(Math.ceil(a(r).length/a(t).pageSize)),1),l(K,{page:a(t).pageIndex+1,total:a(r).length,"items-per-page":a(t).pageSize,"onUpdate:page":z},null,8,["page","total","items-per-page"])])):q("",!0)])}}});
1export{fe as default};
2//# sourceMappingURL=Bblypf68.js.map

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.