1import{r,u as se,k as A,j as e,B as c,S as te,R as fs,L as vs}from"./index-DSd_KA67.js";import{u as P}from"./useMutation-BYp1wGY4.js";import{a as j}from"./api-DEjVNANO.js";import{A as bs,u as Ss,a as Ns,d as ys,f as we,c as Cs}from"./index-CjzYEg5p.js";import{d as I,s as R}from"./toast-1q0BdJuf.js";import{A as As}from"./AdminImageUpload-B0njIZSw.js";import{C as Ps,a as Is,S as Ms}from"./smartphone-D52Cb9Qj.js";import{C as o}from"./index-BDCF4RGH.js";import{P as Z}from"./plus-Bvubtalb.js";import{P as Ts}from"./pencil-e1xvlYsu.js";import{T as Rs}from"./trash-2-BOS6wA2y.js";import{X as ks}from"./x-DEPUe6e3.js";import{M as a}from"./index-BcV1WcSQ.js";import{L as l}from"./index-D1lzWRTp.js";import{I as f}from"./index-Bv02D27B.js";import{T as L}from"./index-CdThcWlI.js";import{C as v}from"./index-CFkkJ3mT.js";import{S as T}from"./index-1oHjUTyK.js";import{L as J}from"./index-D6zPwYlU.js";import{S as Ds}from"./store-DmVuPQmH.js";import"./createLucideIcon-BC48Drc1.js";import"./ImageCropModal-C8oWw9AN.js";import"./useImageProcessor-CAGfRUnE.js";import"./image-LjlYVTLB.js";import"./upload-DcwzePFb.js";import"./Dialog-ChwbEPk_.js";import"./Modal-DNKE2hrT.js";import"./surface-CXiMNM_t.js";import"./Label-DRpCpLvD.js";import"./ListBox-a8Ty2P5Q.js";function Y(t){return new Date(t).toLocaleDateString("en-US",{month:"short",day:"numeric",year:"numeric"})}function ee(t){return t?new Date(t).toLocaleString("en-US",{month:"short",day:"numeric",year:"numeric",hour:"numeric",minute:"2-digit"}):"â"}function _(t){if(!t)return;const d=new Date(t+"T00:00:00Z").getTime();return isNaN(d)?void 0:d}function ze(t){return t?new Date(t).toISOString().split("T")[0]:""}function Fs(t){return(t??[]).join(` 2`)}function Be(t){return t.split(` 3`).map(d=>d.trim()).filter(Boolean)}function He({status:t}){return t==="pending"?e.jsx(o,{color:"warning",variant:"soft",size:"sm",children:"Pending"}):t==="started"?e.jsx(o,{color:"accent",variant:"soft",size:"sm",children:"Started"}):t==="testing"?e.jsx(o,{color:"default",variant:"soft",size:"sm",children:"Testing"}):t==="completed"?e.jsx(o,{color:"success",variant:"soft",size:"sm",children:"Completed"}):null}function Oe(t){return{_id:"",_creationTime:0,platform:t,latestVersion:null,storeUrl:t==="android"?"https://play.google.com/store/apps/details?id=com.controltech.gokanic":"",latestVersionFirstSeenAt:null,lastCheckedAt:null,lastError:null,source:"manual",updatedAt:0}}function Ue({row:t,manualEnabled:d,onSave:u,isSaving:h}){const[m,n]=r.useState(t.latestVersion??""),[p,S]=r.useState(t.storeUrl);r.useEffect(()=>{n(t.latestVersion??""),S(t.storeUrl)},[t.latestVersion,t.storeUrl]);const C=t.latestVersionFirstSeenAt===null?null:t.latestVersionFirstSeenAt+480*60*1e3,N=t.platform==="ios"?"iOS":"Android";return e.jsxs("div",{className:"rounded-xl border border-muted/20 bg-surface-secondary p-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-3",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Ds,{size:18,className:"text-accent"}),e.jsxs("div",{children:[e.jsxs("p",{className:"font-semibold text-foreground",children:[N," Store Version"]}),e.jsxs("p",{className:"text-xs text-muted",children:["Source: ",t.source]})]})]}),t.latestVersion?e.jsxs(o,{size:"sm",variant:"soft",color:"accent",children:["v",t.latestVersion]}):e.jsx(o,{size:"sm",variant:"soft",color:"default",children:"Unset"})]}),e.jsxs("div",{className:"mt-4 grid gap-3 text-xs text-muted sm:grid-cols-3",children:[e.jsxs("div",{children:[e.jsx("p",{className:"uppercase tracking-wide text-muted/70",children:"First Seen"}),e.jsx("p",{className:"mt-1 text-foreground",children:ee(t.latestVersionFirstSeenAt)})]}),e.jsxs("div",{children:[e.jsx("p",{className:"uppercase tracking-wide text-muted/70",children:"Eligible Prompt"}),e.jsx("p",{className:"mt-1 text-foreground",children:ee(C)})]}),e.jsxs("div",{children:[e.jsx("p",{className:"uppercase tracking-wide text-muted/70",children:"Last Checked"}),e.jsx("p",{className:"mt-1 text-foreground",children:ee(t.lastCheckedAt)})]})]}),t.lastError?e.jsx("div",{className:"mt-3 rounded-lg border border-danger/20 bg-danger/10 px-3 py-2 text-xs text-danger",children:t.lastError}):null,d?e.jsxs("div",{className:"mt-4 space-y-3",children:[e.jsxs("div",{className:"grid gap-3 sm:grid-cols-[160px_1fr]",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsxs(l,{children:[N," version"]}),e.jsx(f,{value:m,onChange:b=>n(b.target.value),placeholder:"1.8.0"})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(l,{children:"Store URL"}),e.jsx(f,{value:p,onChange:b=>S(b.target.value),placeholder:"https://..."})]})]}),e.jsxs("div",{className:"flex flex-wrap gap-2",children:[e.jsx(c,{size:"sm",variant:"secondary",isDisabled:h,onPress:()=>u({platform:t.platform,latestVersion:m.trim()||null,storeUrl:p}),children:"Save Observed Now"}),e.jsx(c,{size:"sm",variant:"secondary",isDisabled:h,onPress:()=>u({platform:t.platform,latestVersion:m.trim()||null,storeUrl:p,makeEligibleNow:!0}),children:"Make Eligible Now"})]})]}):null]})}function Es(){const t=se(j.mobileStoreVersions.listAdmin),d=r.useMemo(()=>{const m=t?.rows??[];
3return{ios:m.find(n=>n.platform==="ios")??Oe("ios"),android:m.find(n=>n.platform==="android")??Oe("android")}},[t?.rows]),{mutateAsync:u,isPending:h}=P({mutationFn:A(j.mobileStoreVersions.setManualStoreVersion),onSuccess:()=>R("Store version updated"),onError:m=>I(m.message)});return e.jsxs("section",{className:"rounded-xl border border-muted/20 bg-surface p-4",children:[e.jsxs("div",{className:"mb-4 flex items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("h2",{className:"text-base font-semibold text-foreground",children:"Store Version Status"}),e.jsx("p",{className:"mt-1 text-sm text-muted",children:"Mobile update prompts compare the installed app version against the cached store version for that platform."})]}),t?.isManualEditingEnabled?e.jsx(o,{size:"sm",variant:"soft",color:"warning",children:"Dev controls"}):e.jsx(o,{size:"sm",variant:"soft",color:"default",children:"Read only"})]}),t===void 0?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(te,{size:"sm"})}):e.jsxs("div",{className:"grid gap-4 lg:grid-cols-2",children:[e.jsx(Ue,{row:d.ios,manualEnabled:t.isManualEditingEnabled,isSaving:h,onSave:u}),e.jsx(Ue,{row:d.android,manualEnabled:t.isManualEditingEnabled,isSaving:h,onSave:u})]})]})}function _e({tag:t}){return t?t==="bug"?e.jsx(o,{color:"danger",variant:"soft",size:"sm",children:"Bug"}):t==="feature"?e.jsx(o,{color:"accent",variant:"soft",size:"sm",children:"Feature"}):t==="backlog"?e.jsx(o,{color:"default",variant:"soft",size:"sm",children:"Backlog"}):t==="admin"?e.jsx(o,{color:"default",variant:"soft",size:"sm",children:"Admin Work"}):null:null}function Le({published:t,setPublished:d,title:u,setTitle:h,summary:m,setSummary:n,bullets:p,setBullets:S,heroIds:C,setHeroIds:N,heroUrls:b,featureAction:M,setFeatureAction:k,requiresPro:D,setRequiresPro:F}){return e.jsxs("div",{className:"rounded-xl border border-muted/20 bg-surface-secondary p-4 space-y-4",children:[e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{children:[e.jsx("p",{className:"font-medium text-foreground",children:"Mobile Update Popup"}),e.jsx("p",{className:"text-xs text-muted mt-1",children:"Published releases appear in mobile version history and can show once after app update."})]}),e.jsxs(v,{isSelected:t,onChange:d,children:[e.jsx(v.Control,{children:e.jsx(v.Indicator,{})}),e.jsx("span",{className:"text-sm",children:"Publish"})]})]}),e.jsxs("div",{className:t?"space-y-4":"pointer-events-none opacity-50 space-y-4",children:[e.jsx("div",{className:"grid gap-4 sm:grid-cols-2",children:e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(l,{children:"Feature CTA"}),e.jsxs(T,{selectedKey:M||"none",onSelectionChange:x=>k(x==="tireRack"?"tireRack":""),children:[e.jsxs(T.Trigger,{children:[e.jsx(T.Value,{}),e.jsx(T.Indicator,{})]}),e.jsx(T.Popover,{children:e.jsxs(J,{children:[e.jsx(J.Item,{id:"none",children:"No feature CTA"}),e.jsx(J.Item,{id:"tireRack",children:"Tire Rack"})]})})]})]})}),M&&e.jsxs(v,{isSelected:D,onChange:F,children:[e.jsx(v.Control,{children:e.jsx(v.Indicator,{})}),e.jsx("span",{className:"text-sm",children:"Show Get Pro to non-Pro users"})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(l,{children:"Popup Title"}),e.jsx(f,{value:u,onChange:x=>h(x.target.value),placeholder:"Tire Rack is here"})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(l,{children:"Summary"}),e.jsx(L,{value:m,onChange:x=>n(x.target.value),placeholder:"Short description shown in the popup and version history.",className:"min-h-20"})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(l,{children:"Feature Bullets"}),e.jsx(L,{value:p,onChange:x=>S(x.target.value),placeholder:`One bullet per line 4Scan tire barcodes 5Track tire life by sessions`,className:"min-h-24"})]}),e.jsx(As,{mode:"single",label:"Hero Image",existingUrls:b,existingStorageIds:C,onImagesChange:N,freeformCrop:!0})]})]})}const g=Cs();function Vs(){const[t,d]=r.useState([{id:"createdAt",desc:!0}]),[u,h]=r.useState(new Set),[m,n]=r.useState(!1),[p,S]=r.useState(""),[C,N]=r.useState(""),[b,M]=r.useState(""),[k,D]=r.useState(""),[F,x]=r.useState(!1),[re,ie]=r.useState(""),[ae,ne]=r.useState(""),[le,oe]=r.useState(""),[de,ce]=r.useState([]),[q,me]=r.useState(""),[ue,xe]=r.useState(!1),[qe,E]=r.useState(!1),[Ke,We]=r.useState(null),[K,he]=r.useState(""),[pe,ge]=r.useState(""),[je,fe]=r.useState(""),[ve,be]=r.useState(""),[Se,Ne]=r.useState(!1),[ye,Ce]=r.useState(""),[Ae,Pe]=r.useState(""),[Ie,Me]=r.useState(""),[Te,Re]=r.useState([]),[Ge,$e]=r.useState([]),[W,ke]=r.useState(""),[De,Fe]=r.useState(!1),[Qe,V]=r.useState(!1),[Xe,Ze]=r.useState(null),[Je,Ye]=r.useState(""),[Ee,w]=r.useState(!1),[es,ss]=r.useState(null),[ts,rs]=r.useState(""),[z,G]=r.useState(new Set),B=se(j.adminReleases.listWithTickets),$=se(j.adminReleases.listUnattachedTickets,Ee?{}:"skip"),{mutateAsync:is,isPending:H}=P({mutationFn:A(j.adminReleases.create),onSuccess:()=>{R("Release created"),n(!1),ds()},onError:s=>I(s.message)}),{mutateAsync:as,isPending:O}=P({mutationFn:A(j.adminReleases.update),onSuccess:()=>{R("Release updated"),E(!1)},onError:s=>I(s.message)}),{mutateAsync:ns,isPending:Q}=P({mutationFn:A(j.adminReleases.deleteRelease),onSuccess:()=>{R("Release deleted"),V(!1)},onError:s=>I(s.message)}),{mutateAsync:ls,isPending:U}=P({mutationFn:A(j.adminReleases.addTickets),onSuccess:()=>{R("Tickets added"),w(!1),G(new Set)},onError:s=>I(s.message)}),{mutateAsync:os}=P({mutationFn:A(j.adminReleases.removeTicket),onError:s=>I(s.message)});function ds(){S(""),N(""),M(""),D(""),x(!1),ie(""),ne(""),oe(""),ce([]),me(""),xe(!1)}function cs(s){h(i=>{const y=new Set(i);return y.has(s)?y.delete(s):y.add(s),y})}function ms(s){We(s._id),he(s.version),ge(s.description??""),fe(ze(s.playStoreApprovedAt)),be(ze(s.iosStoreApprovedAt)),Ne(s.isPublishedToMobile===!0),Ce(s.mobileTitle??""),Pe(s.mobileSummary??""),Me(Fs(s.mobileBullets)),Re(s.mobileHeroImageStorageId?[s.mobileHeroImageStorageId]:[]),$e(s.mobileHeroImageUrl?[s.mobileHeroImageUrl]:[]),ke(s.mobileFeatureActionKey??""),Fe(s.mobileRequiresProF
5orFeatureAction===!0),E(!0)}function us(s){Ze(s._id),Ye(s.version),V(!0)}function xs(s){ss(s._id),rs(s.version),G(new Set),w(!0)}const hs=p.trim().length>=1&&!H,ps=K.trim().length>=1&&!O,gs=r.useMemo(()=>[g.display({id:"expand",header:"",cell:s=>{const i=s.row.original._id;return s.row.original.tickets.length===0?null:e.jsx("button",{onClick:()=>cs(i),className:"text-muted hover:text-foreground transition-colors",children:u.has(i)?e.jsx(Ps,{size:16}):e.jsx(Is,{size:16})})}}),g.accessor("version",{header:"Version",cell:s=>e.jsxs("span",{className:"font-bold text-foreground",children:["v",s.getValue()]})}),g.accessor("description",{header:"Description",enableSorting:!1,cell:s=>{const i=s.getValue();return i?e.jsx("span",{className:"text-muted text-sm",children:i.length>60?i.slice(0,60)+"â¦":i}):e.jsx("span",{className:"text-muted/40 text-xs",children:"â"})}}),g.accessor("playStoreApprovedAt",{header:"Play Store",enableSorting:!1,cell:s=>{const i=s.getValue();return i?e.jsx("span",{className:"text-sm",children:Y(i)}):e.jsx("span",{className:"text-muted/40 text-xs",children:"â"})}}),g.accessor("iosStoreApprovedAt",{header:"iOS",enableSorting:!1,cell:s=>{const i=s.getValue();return i?e.jsx("span",{className:"text-sm",children:Y(i)}):e.jsx("span",{className:"text-muted/40 text-xs",children:"â"})}}),g.accessor(s=>s.tickets.length,{id:"ticketCount",header:"Tickets",enableSorting:!1,cell:s=>{const i=s.getValue();return i>0?e.jsx(o,{size:"sm",variant:"soft",color:"accent",children:i}):e.jsx("span",{className:"text-muted/40 text-xs",children:"â"})}}),g.accessor("isPublishedToMobile",{header:"Mobile",enableSorting:!1,cell:s=>s.getValue()?e.jsxs(o,{size:"sm",variant:"soft",color:"accent",children:[e.jsx(Ms,{size:12})," Published"]}):e.jsx("span",{className:"text-muted/40 text-xs",children:"â"})}),g.accessor("createdAt",{id:"createdAt",header:({column:s})=>e.jsxs("button",{className:"flex items-center gap-1 hover:text-accent transition-colors",onClick:()=>s.toggleSorting(),children:["Created ",e.jsx(bs,{size:14})]}),cell:s=>e.jsx("span",{className:"text-muted text-xs",children:Y(s.getValue())})}),g.display({id:"actions",header:"",cell:s=>{const i=s.row.original;return e.jsxs("div",{className:"flex items-center gap-2 justify-end whitespace-nowrap",children:[e.jsxs(c,{size:"sm",variant:"ghost",onPress:()=>xs(i),children:[e.jsx(Z,{size:14}),"Include Tickets"]}),e.jsx("button",{className:"p-1.5 text-muted hover:text-foreground transition-colors rounded-md hover:bg-default",onClick:()=>ms(i),"aria-label":"Edit release",children:e.jsx(Ts,{size:15})}),e.jsx("button",{className:"p-1.5 text-danger/70 hover:text-danger transition-colors rounded-md hover:bg-danger/10",onClick:()=>us(i),"aria-label":"Delete release",children:e.jsx(Rs,{size:15})})]})}})],[u]),js=r.useMemo(()=>B??[],[B]),Ve=Ss({data:js,columns:gs,state:{sorting:t},onSortingChange:d,getCoreRowModel:ys(),getSortedRowModel:Ns()});return e.jsxs("main",{className:"w-full flex flex-col gap-6 px-4 py-6 sm:px-6",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl font-semibold",children:"Releases"}),e.jsx("p",{className:"text-sm text-muted mt-0.5",children:"Track app releases and linked tickets"})]}),e.jsxs(c,{size:"sm",onPress:()=>n(!0),children:[e.jsx(Z,{size:16}),"Create Release"]})]}),e.jsx(Es,{}),B===void 0?e.jsx("div",{className:"flex items-center justify-center py-20",children:e.jsx(te,{size:"lg"})}):B.length===0?e.jsxs("div",{className:"flex flex-col items-center justify-center py-20 text-center gap-3",children:[e.jsx("div",{className:"text-4xl",children:"ð¦"}),e.jsx("p",{className:"font-medium text-foreground",children:"No releases yet"}),e.jsx("p",{className:"text-sm text-muted",children:"Create a release to group tickets by version."}),e.jsxs(c,{size:"sm",className:"mt-2",onPress:()=>n(!0),children:[e.jsx(Z,{size:16}),"Create Release"]})]}):e.jsx("div",{className:"overflow-x-auto rounded-xl border border-muted/20",children:e.jsxs("table",{className:"w-full",children:[e.jsx("thead",{className:"bg-surface-secondary",children:Ve.getHeaderGroups().map(s=>e.jsx("tr",{children:s.headers.map(i=>e.jsx("th",{className:"px-4 py-3 text-left text-sm font-medium text-muted",children:i.isPlaceholder?null:we(i.column.columnDef.header,i.getContext())},i.id))},s.id))}),e.jsx("tbody",{className:"divide-y divide-muted/10",children:Ve.getRowModel().rows.map(s=>e.jsxs(fs.Fragment,{children:[e.jsx("tr",{className:"hover:bg-surface-secondary transition-colors",children:s.getVisibleCells().map(i=>e.jsx("td",{className:"px-4 py-3 text-sm",children:we(i.column.columnDef.cell,i.getContext())},i.id))}),u.has(s.original._id)&&s.original.tickets.map(i=>e.jsxs("tr",{className:"bg-surface-secondary/50 border-l-2 border-accent/30",children:[e.jsx("td",{}),e.jsx("td",{colSpan:7,className:"px-4 py-2.5 pl-8",children:e.jsxs("div",{className:"flex items-center gap-3",children:[e.jsx(_e,{tag:i.tag}),e.jsx(vs,{to:"/admin/tickets/$ticketId",params:{ticketId:i._id},search:{from:"releases"},className:"text-sm font-medium text-foreground hover:text-accent transition-colors flex-1",children:i.title}),e.jsx(He,{status:i.status}),e.jsx("button",{className:"p-1 rounded hover:bg-danger/10 text-muted/60 hover:text-danger transition-colors",onClick:()=>os({releaseId:s.original._id,ticketId:i._id}),"aria-label":"Remove from release",children:e.jsx(ks,{size:14})})]})})]},i._id))]},s.id))})]})}),e.jsx(a.Backdrop,{isOpen:m,onOpenChange:s=>{H||n(s)},children:e.jsx(a.Container,{children:e.jsxs(a.Dialog,{className:"sm:max-w-2xl",children:[e.jsx(a.Header,{children:e.jsx(a.Heading,{children:"Create Release"})}),e.jsxs(a.Body,{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(l,{htmlFor:"cv",children:"Version"}),e.jsx(f,{id:"cv",placeholder:"e.g. 2.4.1",value:p,onChange:s=>S(s.target.value)})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(l,{htmlFor:"cd",children:"Description"}),e.jsx(L,{id:"cd",placeholder:"What's in this release?",value:C,onChange:s=>N(s.target.value),className:"min-h-20"})]}),e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-1.5 flex-1",children:[e.jsx(l,{htmlFor:"cps",children:"Play Store Approved"}),e.jsx(f,{id:"cps",type:"date",value:b,onChange:s=>M(s.target.value)})]}),e.jsxs("div",{className:"flex flex-col gap-1.5 flex-1",children:[e.jsx(l,{htmlFor:"cios",children:"iOS Approved"}),e.jsx(f,{id:"cios",type:"date",value:k,onChange:s=>D(s.target.value)})]})]}),e.jsx(Le,{published:F,setPublished:x,title:re,setTitle:ie,summary:ae,setSummary:ne,bullets:le,setBullets:oe,heroIds:de,setHeroIds:ce,heroUrls:[],featureAction:q,setFeatureAction:me,requiresPro:ue,setRequiresPro:xe})]}),e.jsxs(a.Footer,{children:[e.jsx(c,{variant:"ghost",onPress:()=>n(!1),isDisabled:H,children:"Cancel"}),e.jsx(c,{onPress:()=>is({version:p.trim(),description:C.trim()||void 0,playStoreApprovedAt:_(b),iosStoreApprovedAt:_(k),isPublishedToMobile:F,mobileTitle:re.trim()||void 0,mobileSummary:ae.trim()||void 0,mobileBullets:Be(le),mobileHeroImageStorageId:de[0],mobileFeatureActionKey:q||void 0,mobileRequiresProF
5orFeatureAction:q?ue:void 0}),isDisabled:!hs,isPending:H,children:"Create"})]})]})})}),e.jsx(a.Backdrop,{isOpen:qe,onOpenChange:s=>{O||E(s)},children:e.jsx(a.Container,{children:e.jsxs(a.Dialog,{className:"sm:max-w-2xl",children:[e.jsx(a.Header,{children:e.jsx(a.Heading,{children:"Edit Release"})}),e.jsxs(a.Body,{className:"space-y-4",children:[e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(l,{htmlFor:"ev",children:"Version"}),e.jsx(f,{id:"ev",placeholder:"e.g. 2.4.1",value:K,onChange:s=>he(s.target.value)})]}),e.jsxs("div",{className:"flex flex-col gap-1.5",children:[e.jsx(l,{htmlFor:"ed",children:"Description"}),e.jsx(L,{id:"ed",placeholder:"What's in this release?",value:pe,onChange:s=>ge(s.target.value),className:"min-h-20"})]}),e.jsxs("div",{className:"flex gap-4",children:[e.jsxs("div",{className:"flex flex-col gap-1.5 flex-1",children:[e.jsx(l,{htmlFor:"eps",children:"Play Store Approved"}),e.jsx(f,{id:"eps",type:"date",value:je,onChange:s=>fe(s.target.value)})]}),e.jsxs("div",{className:"flex flex-col gap-1.5 flex-1",children:[e.jsx(l,{htmlFor:"eios",children:"iOS Approved"}),e.jsx(f,{id:"eios",type:"date",value:ve,onChange:s=>be(s.target.value)})]})]}),e.jsx(Le,{published:Se,setPublished:Ne,title:ye,setTitle:Ce,summary:Ae,setSummary:Pe,bullets:Ie,setBullets:Me,heroIds:Te,setHeroIds:Re,heroUrls:Ge,featureAction:W,setFeatureAction:ke,requiresPro:De,setRequiresPro:Fe})]}),e.jsxs(a.Footer,{children:[e.jsx(c,{variant:"ghost",onPress:()=>E(!1),isDisabled:O,children:"Cancel"}),e.jsx(c,{onPress:()=>as({releaseId:Ke,version:K.trim(),description:pe.trim()||void 0,playStoreApprovedAt:_(je),iosStoreApprovedAt:_(ve),isPublishedToMobile:Se,mobileTitle:ye.trim()||void 0,mobileSummary:Ae.trim()||void 0,mobileBullets:Be(Ie),mobileHeroImageStorageId:Te[0],mobileFeatureActionKey:W||void 0,mobileRequiresProForFeatureAction:W?De:void 0}),isDisabled:!ps,isPending:O,children:"Save"})]})]})})}),e.jsx(a.Backdrop,{isOpen:Qe,onOpenChange:s=>{Q||V(s)},children:e.jsx(a.Container,{children:e.jsxs(a.Dialog,{className:"sm:max-w-md",children:[e.jsx(a.Header,{children:e.jsx(a.Heading,{children:"Delete Release"})}),e.jsx(a.Body,{children:e.jsxs("p",{className:"text-sm text-foreground",children:["Delete ",e.jsxs("span",{className:"font-semibold",children:["v",Je]}),"? All ticket associations will be removed. This cannot be undone."]})}),e.jsxs(a.Footer,{children:[e.jsx(c,{variant:"ghost",onPress:()=>V(!1),isDisabled:Q,children:"Cancel"}),e.jsx(c,{variant:"danger",onPress:()=>ns({releaseId:Xe}),isPending:Q,children:"Delete"})]})]})})}),e.jsx(a.Backdrop,{isOpen:Ee,onOpenChange:s=>{U||w(s)},children:e.jsx(a.Container,{children:e.jsxs(a.Dialog,{className:"sm:max-w-lg",children:[e.jsx(a.Header,{children:e.jsxs(a.Heading,{children:["Include Tickets â v",ts]})}),e.jsx(a.Body,{children:$===void 0?e.jsx("div",{className:"flex items-center justify-center py-8",children:e.jsx(te,{size:"md"})}):$.length===0?e.jsx("div",{className:"flex flex-col items-center justify-center py-8 gap-2 text-center",children:e.jsx("p",{className:"text-sm text-muted",children:"All tickets are already assigned to a release."})}):e.jsx("div",{className:"max-h-80 overflow-y-auto -mx-6 px-6",children:$.map(s=>e.jsxs("div",{className:"flex items-center gap-3 py-2.5 border-b border-muted/10 last:border-0",children:[e.jsx(v,{isSelected:z.has(s._id),onChange:i=>G(y=>{const X=new Set(y);return i?X.add(s._id):X.delete(s._id),X}),children:e.jsx(v.Control,{children:e.jsx(v.Indicator,{})})}),e.jsx("span",{className:"flex-1 text-sm font-medium text-foreground",children:s.title}),e.jsxs("div",{className:"flex items-center gap-1.5 shrink-0",children:[e.jsx(_e,{tag:s.tag}),e.jsx(He,{status:s.status})]})]},s._id))})}),e.jsxs(a.Footer,{children:[e.jsx(c,{variant:"ghost",onPress:()=>w(!1),isDisabled:U,children:"Cancel"}),e.jsxs(c,{onPress:()=>ls({releaseId:es,ticketIds:Array.from(z)}),isDisabled:z.size===0||U,isPending:U,children:["Add Selected (",z.size,")"]})]})]})})})]})}const ut=Vs;export{ut as component};
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.