PageSourceSearch

https://app.knockknockapp.ai/assets/List-iM5CgtYk.js

js knockknockapp.ai collected 2026-10-01 16:41:25 UTC 8,153 bytes, 1 lines download raw bytes

1import{w,l as o,m as d,q as e,B as n,z as P,u as r,J as k,D as C,aa as A,ac as j,ab as Y,K as x,F as D,v as S,p as z,y as f,a6 as G,r as i}from"./vue-vendor-c0W5WEtO.js";import{u as J,b as H,c as W}from"./query-vendor-BMwEzNLN.js";import{_ as X}from"./ConfirmDialog-D8WzWI8L.js";import{_ as Z}from"./Pagination-bRbpfmNK.js";import{B as y,g as ee,a as te,d as ae}from"./blocked-pONXx_n3.js";import{t as U}from"./index-B2Yag7Gu.js";import{al as re,b as se,R as oe,c as le,bP as de,bd as ne,bO as ie,bQ as ue,a6 as ge}from"./ui-vendor-B7SopUXd.js";import"./date-vendor-HBGOQ70J.js";import"./twilio-DAuME2Y9.js";import"./charts-BVdrK9wF.js";import"./socket-Kk_l3rvZ.js";const ye={class:"mb-6 flex flex-wrap items-center justify-between gap-4"},ce={class:"mb-4 flex flex-wrap items-end gap-4"},pe={class:"relative max-w-md flex-1"},xe=["value"],me=["value"],ve=["value"],be={key:0,class:"flex items-center justify-center rounded-lg border border-gray-200 bg-white py-12 dark:border-gray-700 dark:bg-gray-800"},ke={class:"text-center"},fe={key:1,class:"rounded-lg border border-red-200 bg-red-50 p-4 dark:border-red-900/50 dark:bg-red-900/20"},he={class:"flex items-start gap-3"},_e={class:"mt-1 text-sm text-red-700 dark:text-red-300"},we={key:2,class:"overflow-hidden rounded-lg border border-gray-200 dark:border-gray-700"},Ce={class:"overflow-x-auto"},De={class:"min-w-full divide-y divide-gray-200 dark:divide-gray-700"},ze={class:"bg-gray-50 dark:bg-gray-800"},Be=["onClick"],Te={class:"flex items-center gap-2"},Le={class:"divide-y divide-gray-200 bg-white dark:divide-gray-700 dark:bg-gray-800"},Pe={key:0},Ae=["colspan"],Se={class:"px-4 py-3 text-sm text-gray-900 dark:text-white"},Ue={class:"max-w-md truncate font-medium"},Ve={class:"px-4 py-3 text-sm text-gray-600 dark:text-gray-300"},Ee={class:"px-4 py-3 text-sm text-gray-600 dark:text-gray-300"},Ne={class:"px-4 py-3 text-right"},Fe={class:"flex items-center justify-end gap-2"},Me=["onClick"],We={__name:"List",setup($e){const V=J(),B=[{key:"value",label:"Value",sortable:!0},{key:"type",label:"Type",sortable:!0},{key:"created_at",label:"Created At",sortable:!0}],h=i(""),c=i(""),l=i(1),p=i(20);w(p,()=>{l.value=1});const g=i("created_at"),u=i(-1),m=i(!1),v=i(null),_=i("");let T=null;w(h,s=>{clearTimeout(T),T=setTimeout(()=>{_.value=s,l.value=1},300)}),w(c,()=>{l.value=1});const{isPending:E,isError:N,error:F,data:b}=H({queryKey:["admin","blocked",_,c,l,p,g,u],queryFn:()=>te({page:l.value,pageSize:p.value,search:_.value,sort:g.value,order:u.value,type:c.value})}),{mutate:M,isPending:$}=W({mutationFn:s=>ae(s),onSuccess:()=>{V.invalidateQueries({queryKey:["admin","blocked"]}),U.success("Blocked entry deleted successfully"),m.value=!1,v.value=null},onError:s=>{U.error(s.response?.data?.message||"Failed to delete blocked entry")}}),R=s=>{g.value===s?u.value=u.value===1?-1:1:(g.value=s,u.value=1)},q=s=>{v.value=s,m.value=!0},O=()=>{v.value&&M(v.value._id)},Q=s=>{switch(s){case y.IP:return"bg-blue-100 text-blue-800 dark:bg-blue-900/50 dark:text-blue-400";case y.URL:return"bg-purple-900/50 text-purple-400 dark:bg-purple-100 dark:text-purple-800";case y.COMPANY:return"bg-orange-900/50 text-orange-400 dark:bg-orange-100 dark:text-orange-800";default:return"bg-gray-700 text-gray-400 dark:bg-gray-100 dark:text-gray-600"}},I=s=>s?new Date(s).toLocaleString("en-US",{year:"numeric",month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"}):"-";return(s,t)=>{const L=G("router-link");return o(),d("div",null,[e("div",ye,[t[8]||(t[8]=e("div",null,[e("h1",{class:"text-2xl font-bold text-gray-900 dark:text-white"},"Blocked List"),e("p",{class:"mt-1 text-sm text-gray-600 dark:text-gray-400"}," Manage blocked IPs, URLs, and companies ")],-1)),n(L,{to:"/admin/blocked/create",class:C(["inline-flex items-center gap-2 rounded-lg px-4 py-2 text-sm font-medium text-white transition-colors","bg-teal-600 hover:bg-teal-700"])},{default:P(()=>[n(r(re),{size:16}),t[7]||(t[7]=k(" Add Blocked ",-1))]),_:1})]),e("div",ce,[e("div",pe,[n(r(se),{size:16,class:"absolute top-1/2 left-3 -translate-y-1/2 text-gray-500 dark:text-gray-400"}),A(e("input",{"onUpdate:modelValue":t[0]||(t[0]=a=>h.value=a),type:"text",placeholder:"Search by value...",class:"w-full rounded-lg border border-gray-300 bg-white py-2 pr-4 pl-10 text-sm text-gray-900 placeholder-gray-500 focus:ring-2 focus:ring-teal-500 focus:outline-none dark:border-gray-600 dark:bg-gray-700 dark:text-white dark:placeholder-gray-400"},null,512),[[j,h.value]])]),e("div",null,[t[10]||(t[10]=e("label",{class:"mb-1 block text-xs text-gray-500 dark:text-gray-400"}," Type ",-1)),A(e("select",{"onUpdate:modelValue":t[1]||(t[1]=a=>c.value=a),class:"cursor-pointer rounded-lg border border-gray-300 bg-white px-3 py-2 text-sm text-gray-900 focus:ring-2 focus:ring-teal-500 focus:outline-none dark:border-gray-600 dark:bg-gray-700 dark:text-white"},[t[9]||(t[9]=e("option",{value:""},"All Types",-1)),e("option",{value:r(y).IP},"IP",8,xe),e("option",{value:r(y).URL},"URL",8,me),e("option",{value:r(y).COMPANY},"Company",8,ve)],512),[[Y,c.value]])])]),r(E)?(o(),d("div",be,[e("div",ke,[n(r(oe),{size:32,class:"mx-auto animate-spin text-gray-400 dark:text-gray-600"}),t[11]||(t[11]=e("p",{class:"mt-4 text-sm text-gray-600 dark:text-gray-400"},"Loading blocked list...",-1))])])):r(N)?(o(),d("div",fe,[e("div",he,[n(r(le),{size:20,class:"text-red-600"}),e("div",null,[t[12]||(t[12]=e("h3",{class:"font-medium text-red-900 dark:text-red-400"},"Error Loading Blocked List",-1)),e("p",_e,x(r(F)?.message||"An error occurred while loading blocked list"),1)])])])):(o(),d("div",we,[e("div",Ce,[e("table",De,[e("thead",ze,[e("tr",null,[(o(),d(D,null,S(B,a=>e("th",{key:a.key,class:C(["px-4 py-3 text-left text-xs font-medium tracking-wider text-gray-500 uppercase dark:text-gray-400",a.sortable&&"hover:bg-opacity-80 curs
1or-pointer"]),onClick:K=>a.sortable&&R(a.key)},[e("div",Te,[k(x(a.label)+" ",1),a.sortable?(o(),d(D,{key:0},[g.value===a.key&&u.value===1?(o(),f(r(de),{key:0,size:14,class:"text-teal-500"})):g.value===a.key&&u.value===-1?(o(),f(r(ne),{key:1,size:14,class:"text-teal-500"})):(o(),f(r(ie),{key:2,size:14,class:"opacity-40"}))],64)):z("",!0)])],10,Be)),64)),t[13]||(t[13]=e("th",{class:"px-4 py-3 text-right text-xs font-medium tracking-wider text-gray-500 uppercase dark:text-gray-400"}," Actions ",-1))])]),e("tbody",Le,[r(b)?.results?.length?z("",!0):(o(),d("tr",Pe,[e("td",{colspan:B.length+1,class:"px-4 py-8 text-center text-sm text-gray-500 dark:text-gray-400"}," No blocked entries found ",8,Ae)])),(o(!0),d(D,null,S(r(b)?.results,a=>(o(),d("tr",{key:a._id,class:"hover:bg-gray-50 dark:hover:bg-gray-700/50"},[e("td",Se,[e("div",Ue,x(a.value),1)]),e("td",Ve,[e("span",{class:C(["inline-flex rounded-full px-2 py-0.5 text-xs font-medium",Q(a.type)])},x(r(ee)(a.type)),3)]),e("td",Ee,x(I(a.created_at)),1),e("td",Ne,[e("div",Fe,[n(L,{to:`/admin/blocked/${a._id}/edit`,class:"inline-flex items-center gap-1 rounded bg-gray-100 px-2 py-1 text-xs font-medium text-gray-700 transition-colors hover:bg-gray-200 dark:bg-gray-700 dark:text-gray-300 dark:hover:bg-gray-600"},{default:P(()=>[n(r(ue),{size:14}),t[14]||(t[14]=k(" Edit ",-1))]),_:1},8,["to"]),e("button",{onClick:K=>q(a),class:"inline-flex items-center gap-1 rounded bg-red-100 px-2 py-1 text-xs font-medium text-red-700 transition-colors hover:bg-red-200 dark:bg-red-900/50 dark:text-red-400 dark:hover:bg-red-900"},[n(r(ge),{size:14}),t[15]||(t[15]=k(" Delete ",-1))],8,Me)])])]))),128))])])]),r(b)?.pagination?(o(),f(Z,{key:0,page:l.value,"page-size":p.value,total:r(b).pagination.total||0,"item-name":"entries","show-per-page-selector":"","show-page-buttons":"",onPrev:t[2]||(t[2]=a=>l.value--),onNext:t[3]||(t[3]=a=>l.value++),onGoto:t[4]||(t[4]=a=>l.value=a),"onUpdate:pageSize":t[5]||(t[5]=a=>p.value=a)},null,8,["page","page-size","total"])):z("",!0)])),n(X,{modelValue:m.value,"onUpdate:modelValue":t[6]||(t[6]=a=>m.value=a),title:"Delete Blocked Entry",message:"Are you sure you want to delete this blocked entry? This action cannot be undone.","confirm-text":"Delete",loading:r($),onConfirm:O},null,8,["modelValue","loading"])])}}};export{We 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.