1import{f as T,r as A,b as E,j as e}from"./vendor-framework-Dk7zq_Wq.js";import{u as D,l as P,o as u,n as O}from"./index-Ti_iaIEA.js";import{u as F,t as L}from"./zod-CAoH2rOC.js";import{a as I,b as q}from"./phoneValidation-DdWzst_Z.js";import{A as v,a as B}from"./global-DuoGTJAW.js";import{A as V}from"./Sidebar-BZNxpSx9.js";import{N as M}from"./Navbar-CjBLSz6e.js";import{F as _}from"./Footer-pWx9l3Rt.js";import{U as H}from"./UnifiedAddressAutocomplete-CsKJIRGI.js";import{P as g}from"./PhoneInput-CiN8bRxW.js";import{F as R,a as n,b as r,c as i,d as l,e as o}from"./form-WCUMhE3f.js";import{S as U,a as Q,b as W,c as $,d as y}from"./select-CFi4AXUi.js";import{I as d}from"./input-D11hYysL.js";import{C as p}from"./checkbox-HoKtu4CL.js";import{A as K,L as z}from"./vendor-icons-DDRqfAiY.js";import{o as G,a as J,e as N,s as t,b as f,ao as X}from"./types-BIQ_OQgH.js";import"./alert-CspvhU1h.js";import"./label-CpobBxg7.js";import"./dialog-DVyxsDdy.js";const Y=G({name:t().min(1,"Partner name is required"),address:t().min(1,"Address is required"),addressLine2:t().optional(),streetNumber:t().optional(),streetName:t().optional(),streetType:t().optional(),suburb:t().min(1,"Suburb is required"),state:t().min(1,"State is required"),postcode:t().min(1,"Postcode is required"),phone:q,contactEmail:t().email("Invalid email address"),cutOffTime:t().min(1,"Cut-off time is required"),worksOnSunday:f().default(!1),worksOnSaturday:f().default(!1),holidayStartDate:t().optional(),holidayEndDate:t().optional(),billingEmail:t().email("Invalid email").optional().or(X("")),billingPhone:I,abn:t().optional(),accountName:t().optional(),accountNumber:t().optional(),bsb:t().optional(),bankName:t().optional(),shipmentType:N(["auto shipment","manual shipment"],{required_error:"Shipment type is required"}),servedStates:J(N(v))}).refine(m=>{if(m.holidayStartDate&&m.holidayEndDate){const h=new Date(m.holidayStartDate);return new Date(m.holidayEndDate)>=h}return!0},{message:"Holiday end date cannot be before start date",path:["holidayEndDate"]});function ge(){const[,m]=D(),{toast:h}=P(),j=T(),a=F({resolver:L(Y),defaultValues:{name:"",address:"",addressLine2:"",streetNumber:"",streetName:"",streetType:"",suburb:"",state:"",postcode:"",phone:"",contactEmail:"",cutOffTime:"",worksOnSunday:!1,worksOnSaturday:!1,holidayStartDate:"",holidayEndDate:"",billingEmail:"",billingPhone:"",abn:"",accountName:"",accountNumber:"",bsb:"",bankName:"",shipmentType:"auto shipment",servedStates:[]}}),S=A.useCallback(s=>{a.setValue("address",s.address||""),a.setValue("addressLine2",s.addressLine2||""),a.setValue("streetNumber",s.streetNumber||""),a.setValue("streetName",s.streetName||""),a.setValue("streetType",s.streetType||""),a.setValue("suburb",s.suburb||""),a.setValue("state",s.state||""),a.setValue("postcode",s.postcode||"")},[a]),x=E({mutationFn:async s=>await O("POST","/api/admin/partners",s),onSuccess:async s=>{j.invalidateQueries({queryKey:["/api/admin/partners"]});const c=await s.json();h({title:"Success",description:"Partner created successfully"}),m(`/admin/partners/${c.id}`)},onError:s=>{h({title:"Error",description:s.message||"Failed to create partner",variant:"destructive"})}}),C=s=>{x.mutate(s)};return e.jsxs(e.Fragment,{children:[e.jsx(M,{}),e.jsx("div",{className:"min-h-screen bg-gray-50",children:e.jsx("div",{className:"container mx-auto px-4 py-8",children:e.jsxs("div",{className:"flex flex-col md:flex-row gap-6",children:[e.jsx("div",{className:"w-full md:w-64 flex-shrink-0",children:e.jsx(V,{})}),e.jsxs("div",{className:"flex-1",children:[e.jsxs("div",{className:"mb-6",children:[e.jsxs(u,{variant:"ghost",onClick:()=>m("/admin/partners"),className:"mb-4","data-testid":"button-back",children:[e.jsx(K,{className:"mr-2 h-4 w-4"}),"Back to Partners"]}),e.jsx("h1",{className:"text-3xl font-bold text-gray-900",children:"New Partner"}),e.jsx("p",{className:"text-gray-600 mt-2",children:"Create a new partner pharmacy"})]}),e.jsx(R,{...a,children:e.jsxs("form",{onSubmit:a.handleSubmit(C),className:"space-y-8",children:[e.jsxs("div",{className:"bg-white rounded-lg shadow p-6",children:[e.jsx("h2",{className:"text-xl font-semibold mb-4",children:"Basic Information"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(n,{control:a.control,name:"name",render:({field:s})=>e.jsxs(r,{className:"md:col-span-2",children:[e.jsx(i,{children:"Partner Name"}),e.jsx(l,{children:e.jsx(d,{...s,"data-testid":"input-partner-name"})}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"address",render:({field:s})=>e.jsxs(r,{className:"md:col-span-2",children:[e.jsx(l,{children:e.jsx(H,{value:s.value||"",onChange:s.onChange,onAddressSelect:S,showDetailedFields:!0,showValidationPanel:!0,label:"Partner Address",placeholder:"Type the partner address...",required:!0})}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"phone",render:({field:s})=>e.jsxs(r,{children:[e.jsx(i,{children:"Phone"}),e.jsx(l,{children:e.jsx(g,{value:s.value||"",onChange:s.onChange,placeholder:"0412 345 678","data-testid":"input-partner-phone"})}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"contactEmail",render:({field:s})=>e.jsxs(r,{children:[e.jsx(i,{children:"Contact Email"}),e.jsx(l,{children:e.jsx(d,{type:"email",...s,"data-testid":"input-partner-email"})}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"shipmentType",render:({field:s})=>e.jsxs(r,{children:[e.jsx(i,{children:"Shipment Type"}),e.jsxs(U,{onValueChange:s.onChange,value:s.value,children:[e.jsx(l,{children:e.jsx(Q,{"data-testid":"select-shipment-type",children:e.jsx(W,{placeholder:"Select shipment type"})})}),e.jsxs($,{children:[e.jsx(y,{value:"auto shipment",children:"Auto Shipment"}),e.jsx(y,{value:"manual shipment",children:"Manual Shipment"})]})]}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"servedStates",render:({field:s})=>e.jsxs(r,{className:"md:col-span-2",children:[e.jsx(i,{children:"Delivery Coverage"}),e.jsx("p",{className:"text-sm text-gray-500 mb-2",children:"States and territories this partner delivers to. An order is routed to a partner covering its delivery state. If no partner covers it, one is chosen at random from all partners linked to the product. Leaving this empty means coverage is not configured: the partner is then only used as that fallback, not for state-matched routing."}),e.jsx("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-2",children:v.map(c=>e.jsxs("label",{className:"flex items-center gap-2 cursor-pointer",title:B[c],children:[e.jsx(p,{checked:s.value?.includes(c)??!1,onCheckedChange:k=>{const b=s.value??[];s.onChange(k?[...b,c]:b.filter(w=>w!==c))},"data-testid":`checkbox-served-state-${c}`}),e.jsx("span",{className:"text-sm",children:c})]},c))}),e.jsx(o,{})]})})]})]}),e.jsxs("div",{className:"bg-white rounded-lg shadow p-6",children:[e.jsx("h2",{className:"text-xl font-semibold mb-4",children:"Operating Hours"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(n,{control:a.control,name:"cutOffTime",render:({field:s})=>e.jsxs(r,{children:[e.jsx(i,{children:"Daily Cut-off Time"}),e.jsx(l,{children:e.jsx(d,{type:"time",...s,"data-testid":"input-cutoff-time"})}),e.jsx(o,{})]})}),e.jsxs("div",{className:"space-y-3",children:[e.jsx(n,{control:a.control,name:"worksOnSaturday",render:({field:s})=>e.jsxs(r,{className:"flex items-center space-x-2",children:[e.jsx(l,{children:e.jsx(p,{checked:s.value,onCheckedChange:s.onChange,"data-testid":"checkbox-saturday"})}),e.jsx(i,{className:"!mt-0",children:"Works on Saturday"})]})}),e.jsx(n,{control:a.control,name:"worksOnSunday",render:({field:s})=>e.jsxs(r,{className:"flex items-center space-x-2",children:[e.jsx(l,{children:e.jsx(p,{checked:s.value,onCheckedChange:s.onChange,"data-testid":"checkbox-sunday"})}),e.jsx(i,{className:"!mt-0",children:"Works on Sunday"})]})})]}),e.jsx(n,{control:a.control,name:"holidayStartDate",render:({field:s})=>e.jsxs(r,{children:[e.jsx(i,{children:"Holiday Start Date (Optional)"}),e.jsx(l,{children:e.jsx(d,{type:"date",...s,"data-testid":"input-holiday-start"})}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"holidayEndDate",render:({field:s})=>e.jsxs(r,{children:[e.jsx(i,{children:"Holiday End Date (Optional)"}),e.jsx(l,{children:e.jsx(d,{type:"date",...s,"data-testid":"input-holiday-end"})}),e.jsx(o,{})]})})]})]}),e.jsxs("div",{className:"bg-white rounded-lg shadow p-6",children:[e.jsx("h2",{className:"text-xl font-semibold mb-4",children:"Billing Information (Optional)"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(n,{control:a.control,name:"billingEmail",render:({field:s})=>e.jsxs(r,{children:[e.jsx(i,{children:"Billing Email"}),e.jsx(l,{children:e.jsx(d,{type:"email",...s,"data-testid":"input-billing-email"})}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"billingPhone",render:({field:s})=>e.jsxs(r,{children:[e.jsx(i,{children:"Billing Phone"}),e.jsx(l,{children:e.jsx(g,{value:s.value||"",onChange:s.onChange,placeholder:"0412 345 678","data-testid":"input-billing-phone"})}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"abn",render:({field:s})=>e.jsxs(r,{className:"md:col-span-2",children:[e.jsx(i,{children:"ABN"}),e.jsx(l,{children:e.jsx(d,{...s,"data-testid":"input-abn"})}),e.jsx(o,{})]})})]})]}),e.jsxs("div",{className:"bg-white rounded-lg shadow p-6",children:[e.jsx("h2",{className:"text-xl font-semibold mb-4",children:"Banking Information (Optional)"}),e.jsxs("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4",children:[e.jsx(n,{control:a.control,name:"accountName",render:({field:s})=>e.jsxs(r,{className:"md:col-span-2",children:[e.jsx(i,{children:"Account Name"}),e.jsx(l,{children:e.jsx(d,{...s,"data-testid":"input-account-name"})}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"accountNumber",render:({field:s})=>e.jsxs(r,{children:[e.jsx(i,{children:"Account Number"}),e.jsx(l,{children:e.jsx(d,{...s,"data-testid":"input-account-number"})}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"bsb",render:({field:s})=>e.jsxs(r,{children:[e.jsx(i,{children:"BSB"}),e.jsx(l,{children:e.jsx(d,{...s,"data-testid":"input-bsb"})}),e.jsx(o,{})]})}),e.jsx(n,{control:a.control,name:"bankName",render:({field:s})=>e.jsxs(r,{className:"md:col-span-2",children:[e.jsx(i,{children:"Bank Name"}),e.jsx(l,{children:e.jsx(d,{...s,"data-testid":"input-bank-name"})}),e.jsx(o,{})]})})]})]}),e.jsxs("div",{className:"flex justify-end space-x-3",children:[e.jsx(u,{type:"button",variant:"outline",onClick:()=>m("/admin/partners"),"data-testid":"button-cancel",children:"Cancel"}),e.jsxs(u,{type:"submit",disabled:x.isPending,"data-testid":"button-create-partner",children:[x.isPending&&e.jsx(z,{className:"mr-2 h-4 w-4 animate-spin"}),"Create Partner"]})]})]})})]})]})})}),e.jsx(_,{})]})}
1export{ge 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.