Files
boc/backups/2026-07-12-1023/landvex-prod/assets/CreateMission-8331plbz.js
T
Bernt 58ca4e68db feat(boc): Complete Business Operations Center v1.0
- Go backend API with full CRUD for all modules (CRM, Sales, Finance, HR, Legal, Marketing, Support, Purchase, Inventory, Projects, Automation, Analytics)
- Rust analytics service with parallel report generation
- C runtime with POSIX shared memory IPC
- PostgreSQL schema with 30+ tables, full migrations
- Redis cache, sessions, pub/sub
- Kafka event streaming with Zookeeper
- WebSocket hub for real-time updates
- Automation engine with cron jobs, workflows, event triggers
- JWT authentication, multi-tenant from start
- Docker Compose with all services
- Nginx reverse proxy with rate limiting
- Integration tests passing
- Feature gap analysis against Fortnox/Odoo/Visma

Refs: BOC-001
2026-07-12 12:41:35 +00:00

22 lines
26 KiB
JavaScript

import{o as U,r,j as e,x as h,ag as p,ah as j,ak as N,y as g,A as ye,v as M,q as D,L as Z,X as ze,I as T,z as E,a as Be,u as $e,p as He,n as Ge,ai as K,B as Ne,T as Ye,s as c,aR as Q,M as Ke,al as X,C as Qe,S as Xe,aj as We,w as P}from"./index-oAPVDf-r.js";import{A as Ze}from"./index-B-MEeiYV.js";import{U as Je}from"./upload-LLBu8Q_P.js";import{B as es}from"./badge-Qwi4CUXx.js";import{R as W,a as S}from"./radio-group-CcrlZGTP.js";import{S as ss,a as as,b as rs,c as ts,d as is}from"./select-Bi-TzF3J.js";import{A as ve}from"./arrow-left-m6EiMbb-.js";import{I as ns}from"./info-BT66tWy0.js";import{R as cs}from"./repeat-wK6OxTxo.js";import{C as ls}from"./calendar-Bof-SGwp.js";import{G as os}from"./gift-lxeNwCUB.js";import{M as ds}from"./megaphone-CztbyYca.js";import"./index-DGH-oZ97.js";import"./circle-030W8joh.js";import"./chevron-down-QDDHZwZg.js";import"./check-CG8zylH4.js";/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const ms=U("BadgePercent",[["path",{d:"M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z",key:"3c2336"}],["path",{d:"m15 9-6 6",key:"1uzhvr"}],["path",{d:"M9 9h.01",key:"1q5me6"}],["path",{d:"M15 15h.01",key:"lqbp3k"}]]);/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const us=U("CircleDollarSign",[["circle",{cx:"12",cy:"12",r:"10",key:"1mglay"}],["path",{d:"M16 8h-6a2 2 0 1 0 0 4h4a2 2 0 1 1 0 4H8",key:"1h4pet"}],["path",{d:"M12 18V6",key:"zqpxq5"}]]);/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const be=U("ImagePlus",[["path",{d:"M16 5h6",key:"1vod17"}],["path",{d:"M19 2v6",key:"4bpg5p"}],["path",{d:"M21 11.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h7.5",key:"1ue2ih"}],["path",{d:"m21 15-3.086-3.086a2 2 0 0 0-2.828 0L6 21",key:"1xmnt7"}],["circle",{cx:"9",cy:"9",r:"2",key:"af1f0g"}]]);/**
* @license lucide-react v0.462.0 - ISC
*
* This source code is licensed under the ISC license.
* See the LICENSE file in the root directory of this source tree.
*/const xs=U("ShieldCheck",[["path",{d:"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z",key:"oel41y"}],["path",{d:"m9 12 2 2 4-4",key:"dzmm74"}]]),hs=({goodExamples:s,onGoodExamplesChange:v})=>{const b=r.useRef(null),f=t=>{if(!t)return;const o=Array.from(t).map(l=>({id:crypto.randomUUID(),file:l,previewUrl:URL.createObjectURL(l),type:"good",caption:""}));v([...s,...o])},i=t=>{const o=s.filter(l=>l.id!==t);v(o)},d=(t,o)=>{const l=s.map(x=>x.id===t?{...x,caption:o}:x);v(l)};return e.jsxs(h,{className:"glass-card",children:[e.jsxs(p,{children:[e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(be,{className:"w-5 h-5"}),"Example Images"]}),e.jsx(N,{children:"Upload images showing the photographer what good photos look like"})]}),e.jsx(g,{className:"space-y-6",children:e.jsxs("div",{className:"space-y-3",children:[e.jsxs("div",{className:"flex items-center justify-between",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ye,{className:"w-4 h-4 text-success"}),e.jsx("span",{className:"text-sm font-medium",children:"Good examples"}),e.jsxs("span",{className:"text-xs text-muted-foreground",children:["(",s.length,")"]})]}),e.jsxs(M,{type:"button",variant:"outline",size:"sm",onClick:()=>{var t;return(t=b.current)==null?void 0:t.click()},className:"gap-1",children:[e.jsx(be,{className:"w-3 h-3"}),"Add"]}),e.jsx("input",{ref:b,type:"file",accept:"image/*",multiple:!0,className:"hidden",onChange:t=>f(t.target.files)})]}),e.jsx(Ze,{children:s.length>0&&e.jsx(D.div,{initial:{opacity:0,height:0},animate:{opacity:1,height:"auto"},exit:{opacity:0,height:0},className:"grid grid-cols-2 gap-3",children:s.map(t=>e.jsxs(D.div,{initial:{opacity:0,scale:.9},animate:{opacity:1,scale:1},exit:{opacity:0,scale:.9},className:"relative rounded-lg overflow-hidden border-2 border-success/30",children:[e.jsxs("div",{className:"aspect-[4/3] relative",children:[e.jsx("img",{src:t.previewUrl,alt:t.caption||"Example image",className:"w-full h-full object-cover"}),t.uploading&&e.jsx("div",{className:"absolute inset-0 bg-background/80 flex items-center justify-center",children:e.jsx(Z,{className:"w-6 h-6 animate-spin text-primary"})}),e.jsx(M,{type:"button",variant:"destructive",size:"icon",className:"absolute top-1 right-1 w-6 h-6",onClick:()=>i(t.id),children:e.jsx(ze,{className:"w-3 h-3"})})]}),e.jsx("div",{className:"p-2 bg-background",children:e.jsx(T,{placeholder:"Caption...",value:t.caption,onChange:o=>d(t.id,o.target.value),className:"h-8 text-xs"})})]},t.id))})}),s.length===0&&e.jsxs("div",{onClick:()=>{var t;return(t=b.current)==null?void 0:t.click()},className:"border-2 border-dashed rounded-lg p-6 text-center cursor-pointer transition-colors hover:border-primary/50 border-success/20",children:[e.jsx(Je,{className:"w-8 h-8 mx-auto mb-2 text-muted-foreground"}),e.jsx("p",{className:"text-sm text-muted-foreground",children:"Click to upload good examples"})]})]})})]})},ps=async(s,v,b)=>{const f=[...v.map((i,d)=>({...i,orderIndex:d})),...b.map((i,d)=>({...i,orderIndex:d}))];for(const i of f)if(i.file)try{const d=i.file.name.split(".").pop(),t=`${s}/${i.type}/${crypto.randomUUID()}.${d}`,{error:o}=await E.storage.from("mission-examples").upload(t,i.file,{cacheControl:"3600",upsert:!1});if(o){console.error("Upload error:",o);continue}const{data:{publicUrl:l}}=E.storage.from("mission-examples").getPublicUrl(t),{error:x}=await E.from("mission_example_images").insert({mission_id:s,image_url:l,image_type:i.type,caption:i.caption||null,order_index:i.orderIndex});x&&console.error("Database error:",x)}catch(d){console.error("Failed to upload image:",d)}return!0},qs=()=>{var he,pe,je,ge;const{t:s}=Be(),v=[{value:"once",label:s("createMission.frequencyOnce"),description:s("createMission.frequencyOnceDesc")},{value:"daily",label:s("createMission.frequencyDaily"),description:s("createMission.frequencyDailyDesc")},{value:"weekly",label:s("createMission.frequencyWeekly"),description:s("createMission.frequencyWeeklyDesc")},{value:"biweekly",label:s("createMission.frequencyBiweekly"),description:s("createMission.frequencyBiweeklyDesc")},{value:"monthly",label:s("createMission.frequencyMonthly"),description:s("createMission.frequencyMonthlyDesc")}],b=[{value:7,label:s("createMission.duration1week")},{value:14,label:s("createMission.duration2weeks")},{value:30,label:s("createMission.duration1month")},{value:90,label:s("createMission.duration3months")},{value:180,label:s("createMission.duration6months")},{value:365,label:s("createMission.duration1year")}],f=$e(),{user:i}=He(),{isLoading:d,isActiveOrderer:t}=Ge(),o=r.useRef(null),l=r.useRef(null),x=r.useRef(null),[k,q]=r.useState(1),[J,ee]=r.useState(!1),[z,Me]=r.useState(null),[R,ke]=r.useState(""),[B,we]=r.useState(""),[se,Ce]=r.useState(""),[ae,Se]=r.useState(""),[O,Te]=r.useState(""),[_,re]=r.useState(59.3293),[V,te]=r.useState(18.0686),[$,De]=r.useState(500),[y,Ie]=r.useState(1),[w,ie]=r.useState("once"),[m,Pe]=r.useState(30),[C,qe]=r.useState(50),[H,Re]=r.useState([]),[G,Oe]=r.useState([]),[u,F]=r.useState("sponsored"),[L,A]=r.useState("cash"),[ne,_e]=r.useState(""),[ce,Ve]=r.useState(100),[le,Fe]=r.useState(30),[oe,Le]=r.useState(""),I=300,de=40,Y=y>0?C/y:C,me=Y<=I;if(r.useEffect(()=>{(async()=>{try{const n=await We();n&&Me(n)}catch(n){console.error("Failed to fetch mapbox token:",n)}})()},[]),r.useEffect(()=>{if(!(!z||!o.current||l.current))return K.accessToken=z,l.current=new K.Map({container:o.current,style:"mapbox://styles/mapbox/streets-v12",center:[V,_],zoom:12}),x.current=new K.Marker({draggable:!0,color:"#3b82f6"}).setLngLat([V,_]).addTo(l.current),x.current.on("dragend",()=>{var n;const a=(n=x.current)==null?void 0:n.getLngLat();a&&(te(a.lng),re(a.lat))}),l.current.on("click",a=>{var n;(n=x.current)==null||n.setLngLat(a.lngLat),te(a.lngLat.lng),re(a.lngLat.lat)}),()=>{var a;(a=l.current)==null||a.remove(),l.current=null}},[z]),r.useEffect(()=>{!i&&!d&&f("/auth")},[i,d,f]),d)return e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center",children:e.jsx(Z,{className:"w-8 h-8 animate-spin text-primary"})});if(!t)return e.jsxs("div",{className:"min-h-screen bg-background text-foreground pb-24",children:[e.jsx("header",{className:"sticky top-0 z-10 bg-background/80 backdrop-blur-xl border-b border-border",children:e.jsxs("div",{className:"flex items-center gap-3 px-4 py-4",children:[e.jsx(M,{variant:"ghost",size:"icon",onClick:()=>f(-1),children:e.jsx(ve,{className:"w-5 h-5"})}),e.jsx("h1",{className:"text-xl font-bold",children:s("createMission.title")})]})}),e.jsx("main",{className:"p-4 space-y-6",children:e.jsxs(h,{className:"glass-card border-amber-500/30",children:[e.jsxs(p,{children:[e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(ns,{className:"w-5 h-5 text-amber-500"}),s("createMission.becomeOrderer")]}),e.jsx(N,{children:s("createMission.mustBeOrderer")})]}),e.jsx(g,{children:e.jsx(M,{onClick:()=>f("/orderer/register"),className:"w-full",children:s("createMission.registerAsOrderer")})})]})}),e.jsx(Ne,{})]});const Ae=()=>R.trim()?B.trim()?!0:(P.error(s("createMission.validationTargetRequired")),!1):(P.error(s("createMission.validationTitleRequired")),!1),Ee=()=>O.trim()?!0:(P.error(s("createMission.validationAreaRequired")),!1),ue=()=>{let a=1;switch(w){case"daily":a=m;break;case"weekly":a=Math.ceil(m/7);break;case"biweekly":a=Math.ceil(m/14);break;case"monthly":a=Math.ceil(m/30);break;default:a=1}const n=C*y*a;return u==="sponsored"?Math.round(n*(1-de/100)):n},xe=()=>{let a=1;switch(w){case"daily":a=m;break;case"weekly":a=Math.ceil(m/7);break;case"biweekly":a=Math.ceil(m/14);break;case"monthly":a=Math.ceil(m/30);break;default:a=1}return C*y*a},Ue=async()=>{if(!me){P.error(s("createMission.rewardTooHigh",{max:I}));return}ee(!0);try{const a=new Date;a.setDate(a.getDate()+m);const{data:n,error:fe}=await E.from("missions").insert({title:R.trim(),description:se.trim()||null,instructions:ae.trim()||null,target_description:B.trim(),area_name:O.trim(),latitude:_,longitude:V,radius_meters:$,required_photos:y,reward_credits:C,frequency:w,frequency_count:1,active_until:a.toISOString(),expires_at:a.toISOString(),created_by:i==null?void 0:i.id,status:"active",ad_option:u,reward:L!=="cash"?{type:L,title:ne,value_nominal:ce,valid_days:le,redemption_instructions:oe||void 0}:void 0}).select("id").single();if(fe)throw fe;n&&(H.length>0||G.length>0)&&await ps(n.id,H,G),P.success(s("createMission.missionCreated")),f("/")}catch(a){console.error("Failed to create mission:",a),P.error(a.message||s("createMission.couldNotCreate"))}finally{ee(!1)}};return e.jsxs("div",{className:"min-h-screen bg-background text-foreground pb-24",children:[e.jsxs("header",{className:"sticky top-0 z-10 bg-background/80 backdrop-blur-xl border-b border-border",children:[e.jsxs("div",{className:"flex items-center gap-3 px-4 py-4",children:[e.jsx(M,{variant:"ghost",size:"icon",onClick:()=>k>1?q(k-1):f(-1),children:e.jsx(ve,{className:"w-5 h-5"})}),e.jsxs("div",{children:[e.jsx("h1",{className:"text-xl font-bold",children:s("createMission.title")}),e.jsx("p",{className:"text-sm text-muted-foreground",children:s("createMission.stepOf",{step:k,total:4})})]})]}),e.jsx("div",{className:"h-1 bg-muted",children:e.jsx(D.div,{className:"h-full bg-primary",initial:{width:0},animate:{width:`${k/4*100}%`}})})]}),e.jsxs("main",{className:"p-4 space-y-6",children:[k===1&&e.jsxs(D.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},className:"space-y-6",children:[e.jsxs(h,{className:"glass-card",children:[e.jsxs(p,{children:[e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(Ye,{className:"w-5 h-5"}),s("createMission.step1Title")]}),e.jsx(N,{children:s("createMission.step1Desc")})]}),e.jsxs(g,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(c,{htmlFor:"title",children:[s("createMission.missionTitle")," *"]}),e.jsx(T,{id:"title",value:R,onChange:a=>ke(a.target.value),placeholder:s("createMission.missionTitlePlaceholder")})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(c,{htmlFor:"targetDescription",children:[s("createMission.whatToPhoto")," *"]}),e.jsx(Q,{id:"targetDescription",value:B,onChange:a=>we(a.target.value),placeholder:s("createMission.whatToPhotoPlaceholder"),rows:3})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{htmlFor:"instructions",children:s("createMission.instructions")}),e.jsx(Q,{id:"instructions",value:ae,onChange:a=>Se(a.target.value),placeholder:s("createMission.instructionsPlaceholder"),rows:3})]}),e.jsxs("div",{className:"space-y-2",children:[e.jsx(c,{htmlFor:"description",children:s("createMission.description")}),e.jsx(Q,{id:"description",value:se,onChange:a=>Ce(a.target.value),placeholder:s("createMission.descriptionPlaceholder"),rows:2})]})]})]}),e.jsx(hs,{goodExamples:H,badExamples:G,onGoodExamplesChange:Re,onBadExamplesChange:Oe}),e.jsx(M,{onClick:()=>Ae()&&q(2),className:"w-full",size:"lg",children:s("createMission.continue")})]}),k===2&&e.jsxs(D.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},className:"space-y-6",children:[e.jsxs(h,{className:"glass-card",children:[e.jsxs(p,{children:[e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(Ke,{className:"w-5 h-5"}),s("createMission.step2Title")]}),e.jsx(N,{children:s("createMission.step2Desc")})]}),e.jsxs(g,{className:"space-y-4",children:[e.jsxs("div",{className:"space-y-2",children:[e.jsxs(c,{htmlFor:"areaName",children:[s("createMission.areaName")," *"]}),e.jsx(T,{id:"areaName",value:O,onChange:a=>Te(a.target.value),placeholder:s("createMission.areaNamePlaceholder")})]}),e.jsx("div",{ref:o,className:"w-full h-64 rounded-lg overflow-hidden border border-border"}),e.jsxs("div",{className:"space-y-2",children:[e.jsxs(c,{children:[s("createMission.radius"),": ",$," ",s("common.meters")]}),e.jsx(X,{value:[$],onValueChange:a=>De(a[0]),min:50,max:5e3,step:50}),e.jsx("p",{className:"text-xs text-muted-foreground",children:s("createMission.radiusHint")})]}),e.jsxs("div",{className:"grid grid-cols-2 gap-4 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:s("createMission.latitude")}),e.jsx("p",{className:"font-mono",children:_.toFixed(6)})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:s("createMission.longitude")}),e.jsx("p",{className:"font-mono",children:V.toFixed(6)})]})]})]})]}),e.jsx(M,{onClick:()=>Ee()&&q(3),className:"w-full",size:"lg",children:s("createMission.continue")})]}),k===3&&e.jsxs(D.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},className:"space-y-6",children:[e.jsxs(h,{className:"glass-card",children:[e.jsxs(p,{children:[e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(cs,{className:"w-5 h-5"}),s("createMission.step3Title")]}),e.jsx(N,{children:s("createMission.step3Desc")})]}),e.jsx(g,{children:e.jsx(W,{value:w,onValueChange:ie,className:"space-y-2",children:v.map(a=>e.jsxs("div",{className:`flex items-center space-x-3 p-3 rounded-lg border transition-colors cursor-pointer ${w===a.value?"border-primary bg-primary/5":"border-border hover:border-primary/50"}`,onClick:()=>ie(a.value),children:[e.jsx(S,{value:a.value,id:a.value}),e.jsxs(c,{htmlFor:a.value,className:"flex-1 cursor-pointer",children:[e.jsx("span",{className:"font-medium",children:a.label}),e.jsx("p",{className:"text-sm text-muted-foreground",children:a.description})]})]},a.value))})})]}),e.jsxs(h,{className:"glass-card",children:[e.jsxs(p,{children:[e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(ls,{className:"w-5 h-5"}),s("createMission.durationTitle")]}),e.jsx(N,{children:s("createMission.durationDesc")})]}),e.jsx(g,{children:e.jsxs(ss,{value:m.toString(),onValueChange:a=>Pe(parseInt(a)),children:[e.jsx(as,{children:e.jsx(rs,{})}),e.jsx(ts,{children:b.map(a=>e.jsx(is,{value:a.value.toString(),children:a.label},a.value))})]})})]}),e.jsx(M,{onClick:()=>q(4),className:"w-full",size:"lg",children:s("createMission.continue")})]}),k===4&&e.jsxs(D.div,{initial:{opacity:0,x:20},animate:{opacity:1,x:0},className:"space-y-6",children:[e.jsxs(h,{className:"glass-card",children:[e.jsxs(p,{children:[e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(Qe,{className:"w-5 h-5"}),s("createMission.step4Title")]}),e.jsx(N,{children:s("createMission.step4Desc")})]}),e.jsx(g,{className:"space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs(c,{children:[s("createMission.photoCount"),": ",y]}),e.jsx(X,{value:[y],onValueChange:a=>Ie(a[0]),min:1,max:10,step:1})]})})]}),e.jsxs(h,{className:"glass-card",children:[e.jsxs(p,{children:[e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(us,{className:"w-5 h-5"}),s("createMission.rewardTitle")]}),e.jsx(N,{children:s("createMission.rewardDesc")})]}),e.jsx(g,{className:"space-y-4",children:e.jsxs("div",{className:"space-y-2",children:[e.jsxs(c,{children:[s("createMission.reward"),": ",C," ",s("common.sek")]}),e.jsx(X,{value:[C],onValueChange:a=>qe(a[0]),min:20,max:y*I,step:10}),e.jsxs("div",{className:"flex items-center justify-between text-xs",children:[e.jsx("span",{className:Y>I?"text-destructive font-medium":"text-muted-foreground",children:s("createMission.perPhoto",{amount:Math.round(Y)})}),e.jsx("span",{className:"text-muted-foreground",children:s("createMission.maxPerPhoto",{amount:I})})]}),!me&&e.jsxs("p",{className:"text-xs text-destructive",children:["⚠️ ",s("createMission.rewardTooHigh",{max:I})]})]})})]}),e.jsxs(h,{className:"glass-card",children:[e.jsxs(p,{children:[e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(os,{className:"w-5 h-5"}),"Typ av belöning"]}),e.jsx(N,{children:"Välj hur operatören kompenseras för godkänt uppdrag"})]}),e.jsxs(g,{className:"space-y-3",children:[e.jsxs(W,{value:L,onValueChange:a=>A(a),children:[e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-lg border cursor-pointer hover:bg-muted/50",onClick:()=>A("cash"),children:[e.jsx(S,{value:"cash",id:"r-cash"}),e.jsxs("label",{htmlFor:"r-cash",className:"cursor-pointer flex-1",children:[e.jsx("div",{className:"font-medium",children:"Kontantutbetalning"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Utbetalas till operatörens plånbok i SEK"})]})]}),e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-lg border cursor-pointer hover:bg-muted/50",onClick:()=>A("voucher"),children:[e.jsx(S,{value:"voucher",id:"r-voucher"}),e.jsxs("label",{htmlFor:"r-voucher",className:"cursor-pointer flex-1",children:[e.jsxs("div",{className:"font-medium flex items-center gap-2",children:["Värdekupong ",e.jsx(es,{className:"text-xs",children:"Nytt"})]}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Digital kupong att lösa in hos er — perfekt för McD, caféer, butiker"})]})]}),e.jsxs("div",{className:"flex items-center gap-3 p-3 rounded-lg border cursor-pointer hover:bg-muted/50",onClick:()=>A("product"),children:[e.jsx(S,{value:"product",id:"r-product"}),e.jsxs("label",{htmlFor:"r-product",className:"cursor-pointer flex-1",children:[e.jsx("div",{className:"font-medium",children:"Produktbelöning"}),e.jsx("div",{className:"text-sm text-muted-foreground",children:"Specifik produkt att hämta ut, t.ex. en gratis kaffe"})]})]})]}),L==="voucher"&&e.jsxs("div",{className:"space-y-3 p-4 bg-muted/30 rounded-xl",children:[e.jsxs("div",{children:[e.jsx(c,{children:"Kupong-titel *"}),e.jsx(T,{value:ne,onChange:a=>_e(a.target.value),placeholder:"t.ex. Cheeseburgare + medium pommes",className:"mt-1"})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Nominellt värde (kr)"}),e.jsx(T,{type:"number",value:ce,onChange:a=>Ve(Number(a.target.value)),min:1,className:"mt-1"}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:"Värdet visas för operatören — QuiXzoom tar 15% provision"})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Giltighetstid (dagar)"}),e.jsx(T,{type:"number",value:le,onChange:a=>Fe(Number(a.target.value)),min:1,max:365,className:"mt-1"})]}),e.jsxs("div",{children:[e.jsx(c,{children:"Inlösningsinstruktioner"}),e.jsx(T,{value:oe,onChange:a=>Le(a.target.value),placeholder:"t.ex. Visa QR-koden i kassan",className:"mt-1"})]})]})]})]}),e.jsxs(h,{className:"glass-card",children:[e.jsxs(p,{children:[e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(ds,{className:"w-5 h-5"}),"Advertising Sponsorship"]}),e.jsx(N,{children:"Allow brands to sponsor your mission and reduce your costs"})]}),e.jsx(g,{children:e.jsxs(W,{value:u,onValueChange:a=>F(a),className:"space-y-3",children:[e.jsxs("div",{className:`relative flex items-start space-x-3 p-4 rounded-lg border-2 transition-all cursor-pointer ${u==="sponsored"?"border-primary bg-primary/5":"border-border hover:border-primary/50"}`,onClick:()=>F("sponsored"),children:[u==="sponsored"&&e.jsx("div",{className:"absolute -top-2 right-3 px-2 py-0.5 bg-primary text-primary-foreground text-[10px] font-semibold rounded-full",children:"RECOMMENDED"}),e.jsx(S,{value:"sponsored",id:"sponsored",className:"mt-1"}),e.jsxs(c,{htmlFor:"sponsored",className:"flex-1 cursor-pointer",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(ms,{className:"w-4 h-4 text-primary"}),e.jsx("span",{className:"font-semibold",children:"Allow Brand Sponsorship"}),e.jsxs("span",{className:"text-xs bg-success/20 text-success px-1.5 py-0.5 rounded-full font-medium",children:["Save ",de,"%"]})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Brands can display subtle ads on your mission. You pay significantly less for each photo order."})]})]}),e.jsxs("div",{className:`flex items-start space-x-3 p-4 rounded-lg border transition-colors cursor-pointer ${u==="no-ads"?"border-primary bg-primary/5":"border-border hover:border-primary/50"}`,onClick:()=>F("no-ads"),children:[e.jsx(S,{value:"no-ads",id:"no-ads",className:"mt-1"}),e.jsxs(c,{htmlFor:"no-ads",className:"flex-1 cursor-pointer",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(xs,{className:"w-4 h-4 text-muted-foreground"}),e.jsx("span",{className:"font-semibold",children:"No Advertising"}),e.jsx("span",{className:"text-xs text-muted-foreground",children:"(Full price)"})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Keep your mission ad-free. Standard pricing applies."})]})]}),e.jsxs("div",{className:`flex items-start space-x-3 p-4 rounded-lg border transition-colors cursor-pointer ${u==="own-ads"?"border-primary bg-primary/5":"border-border hover:border-primary/50"}`,onClick:()=>F("own-ads"),children:[e.jsx(S,{value:"own-ads",id:"own-ads",className:"mt-1"}),e.jsxs(c,{htmlFor:"own-ads",className:"flex-1 cursor-pointer",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[e.jsx(Xe,{className:"w-4 h-4 text-amber-500"}),e.jsx("span",{className:"font-semibold",children:"Add Your Own Brand"})]}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:"Display your own branding and messaging on the mission. Contact us for enterprise packages."})]})]})]})})]}),e.jsxs(h,{className:"glass-card border-primary/30",children:[e.jsx(p,{children:e.jsxs(j,{className:"flex items-center gap-2",children:[e.jsx(ye,{className:"w-5 h-5 text-primary"}),s("createMission.summaryTitle")]})}),e.jsxs(g,{className:"space-y-3",children:[e.jsxs("div",{className:"grid grid-cols-2 gap-3 text-sm",children:[e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:s("createMission.mission")}),e.jsx("p",{className:"font-medium",children:R||"-"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:s("createMission.area")}),e.jsx("p",{className:"font-medium",children:O||"-"})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:s("createMission.frequency")}),e.jsx("p",{className:"font-medium",children:(he=v.find(a=>a.value===w))==null?void 0:he.label})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:s("createMission.duration")}),e.jsx("p",{className:"font-medium",children:(pe=b.find(a=>a.value===m))==null?void 0:pe.label})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:s("createMission.photosPerMission")}),e.jsxs("p",{className:"font-medium",children:[y," ",s("createMission.pcs")]})]}),e.jsxs("div",{children:[e.jsx("span",{className:"text-muted-foreground",children:s("createMission.rewardPerMission")}),e.jsxs("p",{className:"font-medium",children:[C," ",s("common.sek")]})]}),e.jsxs("div",{className:"col-span-2",children:[e.jsx("span",{className:"text-muted-foreground",children:"Advertising"}),e.jsxs("p",{className:"font-medium",children:[u==="sponsored"&&"✓ Brand sponsorship enabled",u==="no-ads"&&"No advertising",u==="own-ads"&&"✓ Your own branding"]})]})]}),e.jsxs("div",{className:"pt-3 border-t border-border",children:[e.jsxs("div",{className:"flex justify-between items-center",children:[e.jsx("span",{className:"text-muted-foreground",children:s("createMission.estimatedTotalCost")}),e.jsxs("div",{className:"text-right",children:[u==="sponsored"&&e.jsxs("span",{className:"text-sm text-muted-foreground line-through mr-2",children:[xe()," ",s("common.sek")]}),e.jsxs("span",{className:"text-xl font-bold text-primary",children:[ue()," ",s("common.sek")]})]})]}),u==="sponsored"&&e.jsxs("p",{className:"text-xs text-success mt-1",children:["💰 You save ",xe()-ue()," ",s("common.sek")," with brand sponsorship"]}),e.jsx("p",{className:"text-xs text-muted-foreground mt-1",children:w==="once"?s("createMission.basedOnOnce"):s("createMission.basedOnFrequency",{frequency:(je=v.find(a=>a.value===w))==null?void 0:je.label.toLowerCase(),duration:(ge=b.find(a=>a.value===m))==null?void 0:ge.label.toLowerCase()})})]})]})]}),e.jsx(M,{onClick:Ue,className:"w-full",size:"lg",disabled:J,children:J?e.jsxs(e.Fragment,{children:[e.jsx(Z,{className:"w-4 h-4 mr-2 animate-spin"}),s("createMission.creating")]}):s("createMission.create")})]})]}),e.jsx(Ne,{})]})};export{qs as default};