1import{q as D,a as z,o as G,j as e,t as x,b as c,r as d,F as a,X as L}from"./index-DRYNtDfq.js";import{D as H,A as O}from"./DashboardLayout-2PNDDCmu.js";import{C,a as k,c as P}from"./card-CJc3fOA2.js";import{I as n}from"./input-Bz87F-Tp.js";import{L as r}from"./label-CD9P1Z7v.js";import{S as B}from"./switch-BCRcmYG1.js";import{B as V}from"./badge-ChxCwd0e.js";import{P as Q}from"./plus-CmkqtXN0.js";import{S as w}from"./save-2ZdfPiqL.js";import{E as X}from"./message-circle-DuGz_h7Q.js";import{T as _}from"./trash-2-DmvQTIti.js";import"./trending-up-CvKbjCgH.js";import"./circle-arrow-down-HHKk6hyR.js";import"./circle-arrow-up-DUs07WdU.js";import"./file-text-CvyTzFOR.js";import"./send-BLEe7uzJ.js";import"./mail-Dy7s7wzw.js";import"./index-BfJPPodk.js";import"./dialog-D6TyplgW.js";import"./useComposition-Lg3rnDe0.js";import"./index-CZ-4w4yO.js";/** 2 * @license lucide-react v0.453.0 - ISC 3 * 4 * This source code is licensed under the ISC license. 5 * See the LICENSE file in the root directory of this source tree. 6 */const q=D("Pen",[["path",{d:"M21.174 6.812a1 1 0 0 0-3.986-3.987L3.842 16.174a2 2 0 0 0-.5.83l-1.321 4.352a.5.5 0 0 0 .623.622l4.353-1.32a2 2 0 0 0 .83-.497z",key:"1a8usu"}]]);function ue(){const{user:i}=z(),[,l]=G();return i?.role!=="admin"?(l("/"),null):e.jsx(H,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:36",title:"Admin Panel",navItems:O,userName:i?.name||"Admin",children:e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:37",className:"p-4 md:p-6 max-w-5xl mx-auto",children:[e.jsx("h1",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:38",className:"heading-lg mb-2",children:"Redirect 301/302 Manager"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:39",className:"text-muted-foreground text-sm mb-6",children:"Quản lý các redirect URL Äá» tránh lá»i 404 và cải thiá»n SEO. Redirect 301 (vÄ©nh viá» n) giúp chuyá»n link juice sang URL má»i."}),e.jsx($,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:42"})]})})}function $(){const i=x.useUtils(),{data:l=[],isLoading:S}=x.redirects.list.useQuery(),j=x.redirects.create.useMutation({onSuccess:()=>{c.success("Äã thêm redirect"),i.redirects.list.invalidate(),N(!1),y()},onError:s=>c.error(s.message||"Lá»i khi thêm redirect")}),v=x.redirects.update.useMutation({onSuccess:()=>{c.success("Äã cáºp nháºt redirect"),i.redirects.list.invalidate(),b(null)},onError:s=>c.error(s.message||"Lá»i khi cáºp nháºt")}),T=x.redirects.delete.useMutation({onSuccess:()=>{c.success("Äã xóa redirect"),i.redirects.list.invalidate()}}),[E,N]=d.useState(!1),[f,b]=d.useState(null),[m,g]=d.useState(""),[o,p]=d.useState(""),[h,u]=d.useState(301),[R,A]=d.useState(""),y=()=>{g(""),p(""),u(301),A("")},U=()=>{if(!m.trim()||!o.trim()){c.error("Vui lòng nháºp Äầy Äá»§ From và To path");return}j.mutate({fromPath:m.trim(),toPath:o.trim(),statusCode:h,note:R.trim()||void 0})},M=s=>{b(s.id),g(s.fromPath),p(s.toPath),u(s.statusCode),A(s.note||"")},F=()=>{f&&v.mutate({id:f,fromPath:m.trim(),toPath:o.trim(),statusCode:h,note:R.trim()||void 0})},I=s=>{v.mutate({id:s.id,isActive:!s.isActive})};return e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:95",className:"space-y-4",children:[E?e.jsxs(C,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:102",children:[e.jsx(k,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:103",children:e.jsx("h3",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:103",className:"heading-sm",children:"Thêm redirect má»i"})}),e.jsxs(P,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:104",className:"space-y-4",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:105",className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:106",children:[e.jsx(r,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:107",children:"From Path (URL nguá»n)"}),e.jsx(n,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:108",value:m,onChange:s=>g(s.target.value),className:"mt-1",placeholder:"/url-cu"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:109",className:"text-xs text-muted-foreground mt-1",children:"Và dụ: /doi-the hoặc /old-page"})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:111",children:[e.jsx(r,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:112",children:"To Path (URL ÄÃch)"}),e.jsx(n,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:113",value:o,onChange:s=>p(s.target.value),className:"mt-1",placeholder:"/url-moi hoặc https://example.com"})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:116",className:"grid grid-cols-2 gap-4",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:117",children:[e.jsx(r,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:118",children:"Loại redirect"}),e.jsxs("select",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:119",value:h,onChange:s=>u(Number(s.target.value)),className:"mt-1 w-full rounded-md border border-input bg-background px-3 py-2 text-sm",children:[e.jsx("option",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:124",value:301,children:"301 - Permanent (SEO tá»t)"}),e.jsx("option",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:125",value:302,children:"302 - Temporary"})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:128",children:[e.jsx(r,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:129",children:"Ghi chú (tùy chá»n)"}),e.jsx(n,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:130",value:R,onChange:s=>A(s.target.value),className:"mt-1",placeholder:"Lý do redirect..."})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:133",className:"flex gap-2",children:[e.jsxs(a,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:134",onClick:U,disabled:j.isPending,className:"gradient-primary text-white border-0",children:[e.jsx(w,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:135",className:"w-4 h-4 mr-2"}),j.isPending?"Äang lưu...":"Lưu redirect"]}),e.jsxs(a,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:137",variant:"outline",onClick:()=>{N(!1),y()},children:[e.jsx(L,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:138",className:"w-4 h-4 mr-2"}),"Há»§y"]})]})]})]}):e.jsxs(a,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:98",onClick:()=>N(!0),className:"gradient-primary text-white border-0",children:[e.jsx(Q,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:99",className:"w-4 h-4 mr-2"}),"Thêm redirect má»i"]}),e.jsxs(C,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:146",children:[e.jsx(k,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:147",children:e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:148",className:"flex items-center justify-between",children:[e.jsxs("h3",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:149",className:"heading-sm",children:["Danh sách redirect (",l.length,")"]}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:150",className:"text-xs text-muted-foreground",children:"Redirect 301 chuyá»n link juice SEO sang URL má»i"})]})}),e.jsx(P,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:153",children:S?e.jsx("p",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:155",className:"text-muted-foreground text-sm",children:"Äang tải..."}):l.length===0?e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:157",className:"text-center py-8 text-muted-foreground",children:[e.jsx(X,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:158",className:"w-8 h-8 mx-auto mb-2 opacity-40"}),e.jsx("p",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:159",children:"Chưa có redirect nà o. Thêm redirect Äá» tránh lá»i 404."})]}):e.jsx("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:162",className:"space-y-2",children:l.map(s=>e.jsx("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:164",className:`p-4 rounded-xl border ${s.isActive?"border-border bg-card":"border-border/50 bg-muted/30 opacity-60"}`,children:f===s.id?e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:166",className:"space-y-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:167",className:"grid grid-cols-1 md:grid-cols-2 gap-3",children:[e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:168",children:[e.jsx(r,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:169",className:"text-xs",children:"From"}),e.jsx(n,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:170",value:m,onChange:t=>g(t.target.value),className:"mt-1 h-8 text-sm"})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:172",children:[e.jsx(r,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:173",className:"text-xs",children:"To"}),e.jsx(n,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:174",value:o,onChange:t=>p(t.target.value),className:"mt-1 h-8 text-sm"})]})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:177",className:"grid grid-cols-2 gap-3",children:[e.jsxs("select",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:178",value:h,onChange:t=>u(Number(t.target.value)),className:"rounded-md border border-input bg-background px-3 py-1.5 text-sm",children:[e.jsx("option",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:179",value:301,children:"301 Permanent"}),e.jsx("option",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:180",value:302,children:"302 Temporary"})]}),e.jsx(n,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:182",value:R,onChange:t=>A(t.target.value),className:"h-8 text-sm",placeholder:"Ghi chú..."})]}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:184",className:"flex gap-2",children:[e.jsxs(a,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:185",size:"sm",onClick:F,disabled:v.isPending,className:"gradient-primary text-white border-0",children:[e.jsx(w,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:186",className:"w-3 h-3 mr-1"}),"Lưu"]}),e.jsxs(a,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:188",size:"sm",variant:"outline",onClick:()=>{b(null),y()},children:[e.jsx(L,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:189",className:"w-3 h-3 mr-1"}),"Há»§y"]})]})]}):e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:194",className:"flex items-center gap-3",children:[e.jsx("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:195",className:"flex-1 min-w-0",children:e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:196",className:"flex items-center gap-2 flex-wrap",children:[e.jsx("code",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:197",className:"text-xs bg-muted px-2 py-0.5 rounded font-mono",children:s.fromPath}),e.jsx("span",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:198",className:"text-muted-foreground text-xs",children:"â"}),e.jsx("code",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:199",className:"text-xs bg-muted px-2 py-0.5 rounded font-mono truncate max-w-[200px]",children:s.toPath}),e.jsx(V,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:200",variant:s.statusCode===301?"default":"secondary",className:"text-xs",children:s.statusCode}),s.note&&e.jsx("span",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:203",className:"text-xs text-muted-foreground italic",children:s.note})]})}),e.jsxs("div",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:206",className:"flex items-center gap-2 shrink-0",children:[e.jsx(B,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:207",checked:s.isActive,onCheckedChange:()=>I(s),title:s.isActive?"Äang báºt":"Äang tắt"}),e.jsx(a,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:212",variant:"ghost",size:"icon",className:"h-8 w-8",onClick:()=>M(s),children:e.jsx(q,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:213",className:"w-3.5 h-3.5"})}),e.jsx(a,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:215",variant:"ghost",size:"icon",className:"h-8 w-8 text-destructive",onClick:()=>{confirm("Xóa redirect nà y?")&&T.mutate({id:s.id})},children:e.jsx(_,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:218",className:"w-3.5 h-3.5"})})]})]})},s.id))})})]}),e.jsx(C,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:231",className:"bg-muted/30",children:e.jsxs(P,{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:232",className:"pt-4 text-sm space-y-2",children:[e.jsx("p",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:233",className:"font-medium",children:"Hưá»ng dẫn sá» dụng Redirect:"}),e.jsxs("ul",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:234",className:"list-disc list-inside space-y-1 text-muted-foreground text-xs",children:[e.jsxs("li",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:235",children:[e.jsx("strong",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:235",children:"301 Permanent:"})," Dùng khi Äá»i URL vÄ©nh viá» n. Google sẽ chuyá»n toà n bá» link juice sang URL má»i."]}),e.jsxs("li",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:236",children:[e.jsx("strong",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:236",children:"302 Temporary:"})," Dùng khi redirect tạm thá»i. Google vẫn giữ index URL cÅ©."]}
6),e.jsx("li",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:237",children:"From Path: nháºp ÄÆ°á»ng dẫn tương Äá»i (và dụ: /doi-the) hoặc tuyá»t Äá»i"}),e.jsx("li",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:238",children:"To Path: nháºp URL ÄÃch (có thá» là URL ngoà i như https://...)"}),e.jsx("li",{"data-loc":"client/src/pages/admin/AdminRedirects.tsx:239",children:"Redirect ÄÆ°á»£c xá» lý phÃa server trưá»c khi React load, Äảm bảo SEO Äúng"})]})]})})]})}export{ue 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.