1import{j as e}from"./vendor-ui-Dsgra_tJ.js";import{u as W,r as g}from"./vendor-react-CDkwGOh4.js";import{s as u,u as X,x as Y,B as c,a as Z,D as F,e as I,f as P,g as E,h as T,I as m,T as j,v as q}from"./index-BUHByavf.js";import{C as ee,a as ae,c as ie,b as se}from"./card-Dz5Ram-I.js";import{L as r}from"./label-BkETuxUV.js";import{S as O,a as M,b as B,c as L,d as H}from"./select-BJMiTOoM.js";import{A as te,a as ne,b as re,c as le,d as ce,e as oe,f as de,g as me}from"./alert-dialog-BqZaxnhm.js";import{A as ue,a as pe}from"./AdminLayout-BMSn_FwY.js";import{A as he}from"./AdminHeader-CybINPFK.js";import{S as ge}from"./SEOHead-B-oWxjyp.js";import{a as je,c as b}from"./vendor-data-BE4kfD_H.js";import{c as R,ay as xe,k as K,i as ve,am as _e,aU as fe,a_ as U,ao as Ne,D as ke,aQ as ye,az as be,aN as Ce,a$ as we,a0 as Se,as as Ae,aE as ze}from"./vendor-icons-DCXvAb-R.js";import"./vendor-supabase-CdJ7BnLf.js";import"./vendor-i18n-BPpqWaj5.js";import"./sheet-BW3IVvE3.js";const De=()=>je({queryKey:["specializations"],queryFn:async()=>{const{data:s,error:t}=await u.from("specializations").select("*").order("name_lt");if(t)throw console.error("Error fetching specializations:",t),t;return s},staleTime:5*60*1e3,gcTime:10*60*1e3}),Fe=()=>b({mutationFn:async s=>{const{data:t,error:l}=await u.from("specializations").insert([{id:s.id,name_lt:s.name_lt,name_en:s.name_en,icon:s.icon||"briefcase",description_lt:s.description_lt,description_en:s.description_en,is_active:s.is_active}]).select().single();if(l)throw console.error("Error creating specialization:",l),l;return t}}),Ie=()=>b({mutationFn:async({id:s,data:t})=>{const{data:l,error:o}=await u.from("specializations").update({name_lt:t.name_lt,name_en:t.name_en,icon:t.icon,description_lt:t.description_lt,description_en:t.description_en,is_active:t.is_active,updated_at:new Date().toISOString()}).eq("id",s).select().single();if(o)throw console.error("Error updating specialization:",o),o;return l}}),Pe=()=>b({mutationFn:async s=>{const{data:t}=await u.from("supplier_specializations").select("id").eq("specialization_id",s);if(t&&t.length>0)throw new Error(`Cannot delete specialization. It is currently used by ${t.length} supplier(s). Please deactivate it instead or reassign suppliers to other specializations.`);const{error:l}=await u.from("specializations").delete().eq("id",s);if(l)throw console.error("Error deleting specialization:",l),l;return{id:s}}}),k=[{value:"briefcase",icon:e.jsx(U,{className:"w-4 h-4"}),label:"Briefcase"},{value:"users",icon:e.jsx(Ne,{className:"w-4 h-4"}),label:"Users"},{value:"building",icon:e.jsx(ke,{className:"w-4 h-4"}),label:"Building"},{value:"camera",icon:e.jsx(ye,{className:"w-4 h-4"}),label:"Camera"},{value:"file-text",icon:e.jsx(be,{className:"w-4 h-4"}),label:"File Text"},{value:"calculator",icon:e.jsx(Ce,{className:"w-4 h-4"}),label:"Calculator"},{value:"scale",icon:e.jsx(we,{className:"w-4 h-4"}),label:"Scale"},{value:"settings",icon:e.jsx(R,{className:"w-4 h-4"}),label:"Settings"},{value:"map-pin",icon:e.jsx(Se,{className:"w-4 h-4"}),label:"Map Pin"},{value:"star",icon:e.jsx(Ae,{className:"w-4 h-4"}),label:"Star"},{value:"eye",icon:e.jsx(ze,{className:"w-4 h-4"}),label:"Eye"}],y={name_lt:"",name_en:"",icon:"briefcase",description_lt:"",description_en:"",is_active:!0},Je=()=>{X();const{toast:s}=Y(),t=W(),[l,o]=g.useState(!1),[C,p]=g.useState(!1),[i,n]=g.useState(y),[x,v]=g.useState(null),{data:w=[],isLoading:V,refetch:S}=De(),_=Fe(),f=Ie(),Q=Pe(),A=()=>{n({...y,id:""}),o(!0)},N=a=>a.toLowerCase().replace(/[^a-z0-9]/g,"-").replace(/-+/g,"-").replace(/^-|-$/g,""),z=(a,d=!1)=>{const h={...i,name_en:a};l&&(!i.id||i.id===N(i.name_en))&&(h.id=N(a)),n(h)},$=a=>{n({id:a.id,name_lt:a.name_lt,name_en:a.name_en,icon:a.icon||"briefcase",description_lt:a.description_lt||"",description_en:a.description_en||"",is_active:a.is_active}),p(!0)},G=async a=>{try{await Q.mutateAsync(a),s({title:"Specializacija iÅ¡trinta",description:"Specializacija sÄkmingai iÅ¡trinta iÅ¡ sistemos."}),S(),v(null)}catch{s({title:"Klaida trinant",description:"Nepavyko iÅ¡trinti specializacijos. Bandykite dar kartÄ
.",variant:"destructive"})}},D=async a=>{a.preventDefault();try{if(C)await f.mutateAsync({id:i.id,data:{name_lt:i.name_lt,name_en:i.name_en,icon:i.icon,description_lt:i.description_lt,description_en:i.description_en,is_active:i.is_active}}),s({title:"Specializacija atnaujinta",description:"Specializacijos duomenys sÄkmingai atnaujinti."}),p(!1);else{const d=i.id||N(i.name_en);await _.mutateAsync({id:d,name_lt:i.name_lt,name_en:i.name_en,icon:i.icon,description_lt:i.description_lt,description_en:i.description_en,is_active:i.is_active}),s({title:"Specializacija sukurta",description:"Nauja specializacija sÄkmingai pridÄta į sistemÄ
."}),o(!1)}S(),n(y)}catch{s({title:"Klaida iÅ¡saugant",description:"Nepavyko iÅ¡saugoti specializacijos. Patikrinkite duomenis ir bandykite dar kartÄ
.",variant:"destructive"})}},J=a=>{const d=k.find(h=>h.value===a);return d?d.icon:e.jsx(U,{className:"w-4 h-4"})};return e.jsxs(ue,{children:[e.jsxs("div",{className:"min-h-screen bg-background",children:[e.jsx(ge,{pageName:"admin-specializations"}),e.jsx(he,{title:"Specializacijų valdymas",description:"Kurkite ir redaguokite tiekÄjų specializacijas, kurios bus rodomos registracijos formoje",icon:R,actions:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsxs(c,{variant:"ghost",onClick:()=>t("/admin/suppliers"),className:"flex items-center gap-2 text-primary-foreground hover:bg-primary-foreground
1/10",children:[e.jsx(xe,{className:"w-4 h-4"}),"Atgal į tiekÄjų valdymÄ
"]}),e.jsxs(c,{onClick:A,className:"flex items-center gap-2 bg-primary-foreground text-primary hover:bg-primary-foreground/90",children:[e.jsx(K,{className:"w-4 h-4"}),"PridÄti specializacijÄ
"]})]})}),e.jsx(pe,{children:e.jsx("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-6",children:V?e.jsx("div",{className:"col-span-full flex justify-center py-12",children:e.jsx(ve,{className:"h-8 w-8 animate-spin text-primary"})}):w.length===0?e.jsxs("div",{className:"col-span-full text-center py-12",children:[e.jsx("p",{className:"text-muted-foreground mb-4",children:"Specializacijų nÄra"}),e.jsxs(c,{onClick:A,variant:"outline",children:[e.jsx(K,{className:"w-4 h-4 mr-2"}),"PridÄti pirmÄ
specializacijÄ
"]})]}):w.map(a=>e.jsxs(ee,{className:"group hover:shadow-lg transition-shadow",children:[e.jsx(ae,{className:"pb-3",children:e.jsxs("div",{className:"flex items-start justify-between",children:[e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx("div",{className:"p-2 bg-primary/10 rounded-lg",children:J(a.icon)}),e.jsxs("div",{children:[e.jsx(ie,{className:"text-lg",children:a.name_lt}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a.name_en})]})]}),e.jsx(Z,{variant:a.is_active?"default":"secondary",children:a.is_active?"Aktyvu":"Neaktyvus"})]})}),e.jsxs(se,{children:[(a.description_lt||a.description_en)&&e.jsx("div",{className:"mb-4",children:e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2",children:a.description_lt||a.description_en})}),e.jsxs("div",{className:"flex gap-2 opacity-0 group-hover:opacity-100 transition-opacity",children:[e.jsxs(c,{variant:"outline",size:"sm",onClick:()=>$(a),className:"flex-1",children:[e.jsx(_e,{className:"w-3 h-3 mr-1"}),"Redaguoti"]}),e.jsx(c,{variant:"outline",size:"sm",onClick:()=>v(a.id),className:"text-destructive hover:text-destructive",children:e.jsx(fe,{className:"w-3 h-3"})})]})]})]},a.id))})})]}),e.jsx(F,{open:l,onOpenChange:o,children:e.jsx(I,{className:"sm:max-w-md",children:e.jsxs("form",{onSubmit:D,children:[e.jsxs(P,{children:[e.jsx(E,{children:"PridÄti specializacijÄ
"}),e.jsx(T,{children:"Sukurkite naujÄ
specializacijÄ
, kuriÄ
galÄs pasirinkti tiekÄjai."})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"name_lt",children:"Pavadinimas (lietuviÅ¡kai) *"}),e.jsx(m,{id:"name_lt",value:i.name_lt,onChange:a=>n({...i,name_lt:a.target.value}),placeholder:"Pvz. NT fotografavimas",required:!0})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"name_en",children:"Pavadinimas (angliÅ¡kai) *"}),e.jsx(m,{id:"name_en",value:i.name_en,onChange:a=>z(a.target.value),placeholder:"E.g. Real Estate Photography",required:!0})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"id",children:"ID (unikalus identifikatorius) *"}),e.jsx(m,{id:"id",value:i.id||"",onChange:a=>n({...i,id:a.target.value}),placeholder:"pvz. real-estate-photography",required:!0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Generuojamas automatiÅ¡kai pagal angliÅ¡kÄ
pavadinimÄ
, bet galite redaguoti"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"icon",children:"Ikona"}),e.jsxs(O,{value:i.icon,onValueChange:a=>n({...i,icon:a}),children:[e.jsx(M,{children:e.jsx(B,{})}),e.jsx(L,{children:k.map(a=>e.jsx(H,{value:a.value,children:e.jsxs("div",{className:"flex items-center gap-2",children:[a.icon,a.label]})},a.value))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"description_lt",children:"Aprašymas (lietuviškai)"}
1),e.jsx(j,{id:"description_lt",value:i.description_lt,onChange:a=>n({...i,description_lt:a.target.value}),placeholder:"Specializacijos apraÅ¡ymas...",rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"description_en",children:"ApraÅ¡ymas (angliÅ¡kai)"}),e.jsx(j,{id:"description_en",value:i.description_en,onChange:a=>n({...i,description_en:a.target.value}),placeholder:"Specialization description...",rows:3})]})]}),e.jsxs(q,{children:[e.jsx(c,{type:"button",variant:"outline",onClick:()=>o(!1),children:"AtÅ¡aukti"}),e.jsx(c,{type:"submit",disabled:_.isPending,children:_.isPending?"IÅ¡saugoma...":"IÅ¡saugoti"})]})]})})}),e.jsx(F,{open:C,onOpenChange:p,children:e.jsx(I,{className:"sm:max-w-md",children:e.jsxs("form",{onSubmit:D,children:[e.jsxs(P,{children:[e.jsx(E,{children:"Redaguoti specializacijÄ
"}),e.jsx(T,{children:"Keiskite specializacijos duomenis."})]}),e.jsxs("div",{className:"grid gap-4 py-4",children:[e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"edit_name_lt",children:"Pavadinimas (lietuviÅ¡kai) *"}),e.jsx(m,{id:"edit_name_lt",value:i.name_lt,onChange:a=>n({...i,name_lt:a.target.value}),required:!0})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"edit_name_en",children:"Pavadinimas (angliÅ¡kai) *"}),e.jsx(m,{id:"edit_name_en",value:i.name_en,onChange:a=>z(a.target.value,!0),required:!0})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"edit_id",children:"ID (unikalus identifikatorius) *"}),e.jsx(m,{id:"edit_id",value:i.id||"",onChange:a=>n({...i,id:a.target.value}),placeholder:"pvz. real-estate-photography",required:!0}),e.jsx("p",{className:"text-xs text-muted-foreground",children:"Atsargiai keiskite - ID naudojamas duomenų bazÄje"})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"edit_icon",children:"Ikona"}),e.jsxs(O,{value:i.icon,onValueChange:a=>n({...i,icon:a}),children:[e.jsx(M,{children:e.jsx(B,{})}),e.jsx(L,{children:k.map(a=>e.jsx(H,{value:a.value,children:e.jsxs("div",{className:"flex items-center gap-2",children:[a.icon,a.label]})},a.value))})]})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"edit_description_lt",children:"ApraÅ¡ymas (lietuviÅ¡kai)"}
1),e.jsx(j,{id:"edit_description_lt",value:i.description_lt,onChange:a=>n({...i,description_lt:a.target.value}),rows:3})]}),e.jsxs("div",{className:"grid gap-2",children:[e.jsx(r,{htmlFor:"edit_description_en",children:"ApraÅ¡ymas (angliÅ¡kai)"}),e.jsx(j,{id:"edit_description_en",value:i.description_en,onChange:a=>n({...i,description_en:a.target.value}),rows:3})]}),e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx("input",{type:"checkbox",id:"is_active",checked:i.is_active,onChange:a=>n({...i,is_active:a.target.checked}),className:"w-4 h-4"}),e.jsx(r,{htmlFor:"is_active",children:"Specializacija aktyvi"})]})]}),e.jsxs(q,{children:[e.jsx(c,{type:"button",variant:"outline",onClick:()=>p(!1),children:"AtÅ¡aukti"}),e.jsx(c,{type:"submit",disabled:f.isPending,children:f.isPending?"Atnaujinama...":"Atnaujinti"})]})]})})}),e.jsx(te,{open:!!x,onOpenChange:()=>v(null),children:e.jsxs(ne,{children:[e.jsxs(re,{children:[e.jsx(le,{children:"Ar tikrai norite iÅ¡trinti?"}),e.jsx(ce,{children:"Å is veiksmas negrįžtamas. Specializacija bus paÅ¡alinta iÅ¡ sistemos ir tiekÄjai negalÄs jos pasirinkti registracijos metu."})]}),e.jsxs(oe,{children:[e.jsx(de,{children:"AtÅ¡aukti"}),e.jsx(me,{onClick:()=>x&&G(x),className:"bg-destructive text-destructive-foreground hover:bg-destructive/90",children:"IÅ¡trinti"})]})]})})]})};export{Je as SpecializationsManagementPage,Je 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.