PageSourceSearch

https://spectrasynth.com/build/assets/SEOTable-J65ugGIJ.js

js spectrasynth.com collected 2026-10-04 03:02:39 UTC 9,243 bytes, 3 lines download raw bytes

1import{r as n,j as e,b as L,C as m,F as r,a as F,aq as U,M as j,D as A}from"./react-vendor-CrZSO3tY.js";import{B as k,b as N,S as q}from"./index-DARdAdCa.js";import{s as S}from"./sweetalert.min-CgL46gMU.js";import{X as G}from"./x-CDkAAFrI.js";import{u as H,A as z,a as _,b as $,R as V,c as Y}from"./RevealDropdown-B2KQnLZq.js";import{S as C}from"./sweetalert2.esm.all-Bj_ZQUAw.js";const R=[{value:"home",label:"Home"},{value:"about",label:"About Us"},{value:"services",label:"Services"},{value:"products",label:"Products"},{value:"rnd",label:"R&D"},{value:"career",label:"Career"},{value:"blogs",label:"Blogs"},{value:"contact",label:"Contact Us"}],K=[{value:"impurities",label:"Impurities"},{value:"nitrosamines-impurities",label:"Nitrosamines Impurities"},{value:"grignards-reagents",label:"Grignards Reagents"},{value:"advance-chemicals",label:"Advance Chemicals"},{value:"bulk-chemicals",label:"Bulk chemicals/Surfactants"},{value:"intermediate",label:"Advance Intermediates"},{value:"apis",label:"Active Pharma Ingredients"},{value:"miscellaneous",label:"Miscellaneous"}],X=({onClose:u,refreshNewsList:O,editData:t=null,existingPages:i=[]})=>{const[c,o]=n.useState(""),[l,h]=n.useState(""),[d,v]=n.useState(""),[x,p]=n.useState(""),[g,P]=n.useState(""),[f,E]=n.useState(!1);n.useEffect(()=>{t?(o(t.page||""),h(t.title),v(t.meta),p(t.metakeywords),P(t.description)):(o(""),h(""),v(""),p(""),P(""))},[t]);const s=async a=>{var I,M,T;if(a.preventDefault(),!c.trim()||!l.trim()||!d.trim()||!x.trim()||!g.trim()){S("Missing Fields","Please fill in all fields.","warning");return}if(!t&&i.includes(c)){const b=[...R,...K];S("Duplicate",`SEO for "${(I=b.find(D=>D.value===c))==null?void 0:I.label}" already exists. Edit it instead.`,"warning");return}E(!0);try{t?(await N.post(`/admin/seoUpdate/${t.id}`,{page:c,title:l,meta:d,metakeywords:x,description:g}),S("Updated!","SEO updated successfully.","success")):(await N.post("/admin/seo/insert",{page:c,title:l,meta:d,metakeywords:x,description:g}),S("Success!","SEO added successfully.","success")),O(),u()}catch(b){console.error("Error submitting SEO:",b),S("Error",((T=(M=b==null?void 0:b.response)==null?void 0:M.data)==null?void 0:T.message)||"Something went wrong.","error")}finally{E(!1)}},w=R.filter(a=>!i.includes(a.value)||t&&t.page===a.value),B=K.filter(a=>!i.includes(a.value)||t&&t.page===a.value);return e.jsxs("div",{children:[e.jsxs("div",{className:"d-flex justify-content-between align-items-center mb-4",children:[e.jsx("h2",{className:"m-0",children:t?"Edit SEO":"Add SEO"}),e.jsx("button",{className:"btn btn-link text-dark p-0",onClick:u,children:e.jsx(G,{size:24})})]}),e.jsx("hr",{className:"mb-4"}),e.jsx(L,{className:"justify-content-center",children:e.jsx(m,{xs:12,xl:9,children:e.jsx(r,{onSubmit:s,children:e.jsxs(L,{className:"g-3 mb-4",children:[e.jsxs(m,{xs:12,children:[e.jsx(r.Label,{children:"Page"}),e.jsxs(r.Select,{value:c,onChange:a=>o(a.target.value),required:!0,disabled:!!t,children:[e.jsx("option",{value:"",children:"Select a page"}),w.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value)),B.length>0&&e.jsx("optgroup",{label:"Products",children:B.map(a=>e.jsx("option",{value:a.value,children:a.label},a.value))})]}),t&&e.jsx(r.Text,{className:"text-muted",children:"Page cannot be changed after creation."})]}),e.jsxs(m,{xs:12,children:[e.jsx(r.Label,{children:"SEO Title"}),e.jsx(r.Control,{type:"text",placeholder:"Enter SEO title..",value:l,onChange:a=>h(a.target.value),required:!0})]}),e.jsxs(m,{xs:12,children:[e.jsx(r.Label,{children:"Meta Description"}),e.jsx(r.Control,{type:"text",placeholder:"Enter Meta Description",value:d,onChange:a=>v(a.target.value),required:!0})]}),e.jsxs(m,{xs:12,children:[e.jsx(r.Label,{children:"Meta Keywords"}),e.jsx(r.Control,{type:"text",placeholder:"Enter Meta Keywords",value:x,onChange:a=>p(a.target.value),required:!0})]}),e.jsxs(m,{xs:12,children:[e.jsx(r.Label,{children:"Description"}),e.jsx(r.Control,{as:"textarea",rows:3,placeholder:"Enter Description",value:g,onChange:a=>P(a.target.value),required:!0})]}),e.jsxs(m,{xs:12,className:"mt-4 d-flex justify-content-end gap-3",children:[e.jsx(k,{variant:"primary",className:"px-4",onClick:u,children:"Back"}),e.jsx(k,{type:"submit",variant:"warning",className:"px-3 py-2",disabled:f,children:f?"Processing...":t?"Update":"Submit"})]})]})})})})]})},y={home:"Home",about:"About Us",services:"Services",products:"Products",rnd:"R&D",career:"Career",blogs:"Blogs",contact:"Contact Us",impurities:"Products - Impurities","nitrosamines-impurities":"Products - Nitrosamines Impurities","grignards-reagents":"Products - Grignards Reagents","advance-chemicals":"Products - Advance Chemicals","bulk-chemicals":"Products - Bulk chemicals/Surfactants",intermediate:"Products - Advance Intermediates",apis:"Products - Active Pharma Ingredients",miscellaneous:"Products - Miscellaneous"},ae=()=>{const[u,O]=n.useState([]),[t,i]=n.useState(!1),[c,o]=n.useState(null),[l,h]=n.useState(null),d=async()=>{try{const s=await N.get("/admin/seo");O(s.data.data||[])}catch(s){console.error("Error fetching SEO list:",s)}};n.useEffect(()=>{d()},[]);const v=async s=>{if((await C.fire({title:"Are you sure?",text:"You won't be able to revert this!",icon:"warning",showCancelButton:!0,confirmButtonColor:"#d33",cancelButtonColor:"#3085d6",confirmButtonText:"Yes, delete it!"})).isConfirmed)try{await N.delete(`/admin/seo/delete/${s}`),C.fire("Deleted!","The SEO item has been deleted.","success"),d()}catch{C.fire("Error!","Something went wrong. Please try again.","error")}},x=async s=>{try{const w=await N.get(`/admin/seo/view/${s}`);h({...w.data.data,metaKeyword:w.data.data.metakeywords})}catch{C.fire("Error!","Could not fetch SEO item details.","error")}},p=u.map(s=>s.page),g=Object.keys(y).every(s=>p.includes(s)),f=H({data:u,columns:[{accessorKey:"srNo",header:"Sr. No.",cell:({row:s})=>s.index+1,meta:{headerProps:{style:{width:"8%"},className:"text-center"},cellProps:{className:"text-center fw-semibold"}}},{accessorKey:"page",header:"Page",cell:({row:{original:s}})=>e.jsx("span",{className:"badge bg-secondary",children:y[s.page]||s.page}),meta:{headerProps:{style:{width:"15%"},className:"text-center"},cellProps:{className:"text-center"}}},{accessorKey:"title",header:"SEO Title",cell:({row:{original:s}})=>e.jsx("p",{className:"mb-0 fw-bold",children:s.title}),meta:{headerProps:{style:{width:"27%"},className:"text-center"},cellProps:{className:"text-center text-body-highlight"}}},{accessorKey:"meta",header:"Meta Description",cell:({row:{original:s}})=>e.jsx("p",{className:"mb-0",children:s.meta}),meta:{headerProps:{style:{width:"35%"},className:"text-center"},cellProps:{className:"text-center text-body-highlight"}}},{id:"action",header:"Actions",cell:({row:s})=>e.jsx("div",{className:"text-center",children:e.jsx(V,{children:e.jsxs(Y,{children:[e.jsx(A.Item,{onClick:()=>x(s.original.id),children:"View"}),e.jsx(A.Item,{onClick:()=>{o(s.original),i(!0)},children:"Edit"}),e.jsx(A.Item,{className:"text-danger",onClick:()=>v(s.original.id),children:"Delete"})]})})}),meta:{headerProps:{style:{width:"15%"},className:"text-center"},cellProps:{className:"text-center"}}}],pageSize:10,pagination:!0,sortable:!0}),E=s=>{f.setGlobalFilter(s.target.value||void 0)};return e.jsx("div",{children:e.jsxs("div",{className:"mb-9",children:[e.jsx("h2",{className:"mb-4 ms-2",children:"Manage SEO"}),e.jsx("hr",{className:"mb-4 ms-2"}),e.jsxs(z,{...f,children:[e.jsx("div",{className:"mb-4",children:e.jsxs("div",{className:"d-flex flex-wrap gap-3 ms-2",children:[e.jsx(q,{placeholder:"Search SEO",onChange:E}),e.jsxs("div",{className:"ms-auto gap-3 d-flex flex-wrap align-items-center",children:[!g&&e.jsxs(k,{variant:"warning",className:"px-3",onClick:()=>{o(null),i(!0)},children:[e.jsx(F,{icon:U,className:"me-2"}),"Add SEO"]}),e.jsxs("span",{className:"text-muted small",children:[u.length," / ",Object.keys(y).length," pages configured"]})]})]})}),e.jsx(j,{show:t,onHide:()=>{i(!1),o(null)},centered:!0,size:"lg",children:e.jsx(j.Body,{children:e.jsx(X,{onClose:()=>{i(!1),o(null)},refreshNewsList:d,editData:c,existingPages:p})})}),e.jsxs(j,{show:!!l,onHide:()=>h(null),centered:!0,size:"lg",children:[e.jsx(j.Header,{closeButton:!0,children:e.jsxs(j.Title,{children:["SEO Details — ",l?y[l.page]||l.page:""]})}),e.jsx(j.Body,{children:l&&e.jsxs("div",{children:[e.jsxs("p",{children:[e.jsx("strong",{children:"Page:"})," ",y[l.page]||l.page]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Meta Title:"})," ",l.title]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Meta Description:"})," ",l.meta]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Meta Keywords:"})," ",l.metaKeyword]}),e.jsxs("p",{children:[e.jsx("strong",{children:"Description:"}
1)," ",l.description]})]})})]}),e.jsx("style",{children:`
2                        .phoenix-table td, .phoenix-table th { vertical-align: middle; text-align: center; }
3                    `}),e.jsxs("div",{className:"table-container card shadow-sm border rounded-3 bg-white ms-2",children:[e.jsx("div",{className:"table-responsive",children:e.jsx(_,{tableProps:{className:"phoenix-table fs-9 table table-bordered align-middle"}})}),e.jsx($,{pagination:!0})]})]})]})})};export{ae 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.