Files
boc/backups/2026-07-12-1023/landvex-prod/assets/PhotoContest-Dt4wePeS.js
T

5 lines
11 KiB
JavaScript
Raw Normal View History

import{$ as K,u as Q,a as G,r as J,j as e,v as C,x as b,y as w,ag as O,ah as q,q as F,B as V,z as Y}from"./index-oAPVDf-r.js";import{u as z}from"./useQuery-BxfmyRLz.js";import{B as M}from"./badge-Qwi4CUXx.js";import{P as W}from"./progress-Cql_vZKU.js";import{A as Z}from"./arrow-left-m6EiMbb-.js";import{d as P,T as v}from"./differenceInDays-CJS5VaxB.js";import{H as ee}from"./heart-BjLemQnU.js";import{C as te}from"./clock-DRtqJZUo.js";import{t as m,c as se,g as E,a as ne,e as B,m as H,b as D,f as I,d as ae,s as re}from"./sv-BZPVJm6C.js";import{C as ce}from"./calendar-Bof-SGwp.js";import{I as R}from"./image-DuU1QaV8.js";import{U as oe}from"./upload-LLBu8Q_P.js";function _(s,n){const t=m(s),d=m(n),a=t.getTime()-d.getTime();return a<0?-1:a>0?1:a}function ie(s){return se(s,Date.now())}function le(s,n){const t=m(s),d=m(n),a=t.getFullYear()-d.getFullYear(),x=t.getMonth()-d.getMonth();return a*12+x}function de(s){return n=>{const d=(s?Math[s]:Math.trunc)(n);return d===0?0:d}}function me(s,n){return+m(s)-+m(n)}function ue(s){const n=m(s);return n.setHours(23,59,59,999),n}function fe(s){const n=m(s),t=n.getMonth();return n.setFullYear(n.getFullYear(),t+1,0),n.setHours(23,59,59,999),n}function he(s){const n=m(s);return+ue(n)==+fe(n)}function xe(s,n){const t=m(s),d=m(n),a=_(t,d),x=Math.abs(le(t,d));let g;if(x<1)g=0;else{t.getMonth()===1&&t.getDate()>27&&t.setDate(30),t.setMonth(t.getMonth()-a*x);let r=_(t,d)===-a;he(m(s))&&x===1&&_(s,d)===1&&(r=!1),g=a*(x-Number(r))}return g===0?0:g}function ge(s,n,t){const d=me(s,n)/1e3;return de(t==null?void 0:t.roundingMethod)(d)}function pe(s,n,t){const d=ne(),a=(t==null?void 0:t.locale)??d.locale??B,x=2520,g=_(s,n);if(isNaN(g))throw new RangeError("Invalid time value");const r=Object.assign({},t,{addSuffix:t==null?void 0:t.addSuffix,comparison:g});let l,j;g>0?(l=m(n),j=m(s)):(l=m(s),j=m(n));const i=ge(j,l),N=(E(j)-E(l))/1e3,o=Math.round((i-N)/60);let h;if(o<2)return t!=null&&t.includeSeconds?i<5?a.formatDistance("lessThanXSeconds",5,r):i<10?a.formatDistance("lessThanXSeconds",10,r):i<20?a.formatDistance("lessThanXSeconds",20,r):i<40?a.formatDistance("halfAMinute",0,r):i<60?a.formatDistance("lessThanXMinutes",1,r):a.formatDistance("xMinutes",1,r):o===0?a.formatDistance("lessThanXMinutes",1,r):a.formatDistance("xMinutes",o,r);if(o<45)return a.formatDistance("xMinutes",o,r);if(o<90)return a.formatDistance("aboutXHours",1,r);if(o<H){const u=Math.round(o/60);return a.formatDistance("aboutXHours",u,r)}else{if(o<x)return a.formatDistance("xDays",1,r);if(o<D){const u=Math.round(o/H);return a.formatDistance("xDays",u,r)}else if(o<D*2)return h=Math.round(o/D),a.formatDistance("aboutXMonths",h,r)}if(h=xe(j,l),h<12){const u=Math.round(o/D);return a.formatDistance("xMonths",u,r)}else{const u=h%12,p=Math.trunc(h/12);return u<3?a.formatDistance("aboutXYears",p,r):u<9?a.formatDistance("overXYears",p,r):a.formatDistance("almostXYears",p+1,r)}}function je(s,n){return pe(s,ie(s),n)}const Se=()=>{var X;const{contestId:s}=K(),n=Q(),{t,i18n:d}=G(),[a,x]=J.useState("info"),r=(()=>{switch(d.language){case"sv":return re;case"de":return ae;default:return B}})(),{data:l,isLoading:j}=z({queryKey:["photo-contest",s],queryFn:async()=>{const{data:c,error:f}=await Y.from("photo_contests").select(`
*,
charity:charities(*)
`).eq("id",s).single();if(f)throw f;return c},enabled:!!s}),{data:i}=z({queryKey:["contest-entries",s],queryFn:async()=>{const{data:c,error:f}=await Y.from("contest_photos").select("*").eq("contest_id",s).eq("is_approved",!0).order("votes_count",{ascending:!1});if(f)throw f;return c},enabled:!!s});if(j||!l)return e.jsx("div",{className:"min-h-screen bg-background flex items-center justify-center",children:e.jsx("div",{className:"animate-spin w-8 h-8 border-2 border-primary border-t-transparent rounded-full"})});const N=l.charity,o=(N==null?void 0:N.gradient_colors)||["#059669","#0D9488"],h=new Date,u=new Date(l.ends_at),p=new Date(l.starts_at),y=h>=p&&h<=u,k=h>u,S=P(u,h),L=P(u,p),U=Math.min(100,Math.max(0,(L-S)/L*100)),$=(i==null?void 0:i.filter(c=>c.is_winner))||[],T=(i==null?void 0:i.slice(0,6))||[],A=(X=T==null?void 0:T[0])==null?void 0:X.photo_url;return e.jsxs("div",{className:"min-h-screen bg-background pb-32 safe-area-top safe-area-x",children:[e.jsxs("header",{className:"relative h-64 overflow-hidden",children:[A?e.jsx("img",{src:A,alt:"",className:"absolute inset-0 w-full h-full object-cover"}):e.jsx("div",{className:"absolute inset-0",style:{background:`linear-gradient(135deg, ${o[0]} 0%, ${o[1]} 100%)`}}),e.jsx("div",{className:"absolute inset-0 bg-gradient-to-t from-black/80 via-black/50 to-black/40"}),e.jsx("div",{className:"absolute inset-0 mix-blend-overlay opacity-20",style:{background:`linear-gradient(135deg, ${o[0]} 0%, ${o[1]} 100%)`}}),e.jsx(C,{variant:"ghost",size:"icon",className:"absolute top-4 left-4 z-10 bg-white/10 backdrop-blur-sm text-white hover:bg-white/20 border border-white/10",onClick:()=>n(-1),children:e.jsx(Z,{className:"w-5 h-5"})}),e.jsxs("div",{className:"absolute bottom-0 inset-x-0 p-5",children:[e.jsxs("div",{className:"flex items-center gap-2 mb-2",children:[e.jsx("div",{className:"p-2 rounded-xl bg-yellow-500/20 backdrop-blur-sm",children:e.jsx(v,{className:"w-5 h-5 text-yellow-400"})}),e.jsx("h1",{className:"text-2xl font-bold text-white tracking-tight",children:l.title})]}),N&&e.jsxs("p",{className:"text-sm text-white/80 flex items-center gap-2 pl-1",children:[e.jsx(ee,{className:"w-3.5 h-3.5"}),t("contest.supports",{charity:N.name})]})]})]}),e.jsxs("div",{className:"px-4 py-3 bg-card border-b border-border",children:[e.jsxs("div",{className:"flex items-center justify-between mb-2",children:[e.jsxs("div",{className:"flex items-center gap-2",children:[y?e.jsx(M,{className:"bg-green-500",children:t("contest.active")}):k?e.jsx(M,{variant:"secondary",children:t("contest.ended")}):e.jsx(M,{variant:"outline",children:t("contest.upcoming")}),l.theme&&e.jsxs(M,{variant:"outline",children:[t("contest.theme"),": ",l.theme]})]}),e.jsxs("div",{className:"flex items-center gap-1 text-sm text-muted-foreground",children:[e.jsx(te,{className:"w-4 h-4"}),y?e.jsx("span",{children:t("contest.daysLeft",{count:S})}):k?e.jsx("span",{children:t("contest.endedAgo",{time:je(u,{locale:r,addSuffix:!0})})}):e.jsx("span",{children:t("contest.startsOn",{date:I(p,"d MMM",{locale:r})})})]})]}),y&&e.jsx(W,{value:U,className:"h-1"})]}),e.jsx("div",{className:"flex gap-1 p-2 bg-muted/50 mx-4 mt-4 rounded-xl",children:[{id:"info",label:t("contest.info"),icon:ce},{id:"entries",label:`${t("contest.entries")} (${(i==null?void 0:i.length)||0})`,icon:R},{id:"winners",label:t("contest.winners"),icon:v}].map(c=>e.jsxs("button",{onClick:()=>x(c.id),className:`flex-1 flex items-center justify-center gap-1.5 py-2 px-3 rounded-lg text-sm font-medium transition-colors ${a===c.id?"bg-background text-foreground shadow-sm":"text-muted-foreground hover:text-foreground"}`,children:[e.jsx(c.icon,{className:"w-4 h-4"}),c.label]},c.id))}),e.jsxs("main",{className:"px-4 py-4",children:[a==="info"&&e.jsxs("div",{className:"space-y-4",children:[l.description&&e.jsx(b,{children:e.jsx(w,{className:"pt-4",children:e.jsx("p",{className:"text-sm text-muted-foreground",children:l.description})})}),l.prize_description&&e.jsxs(b,{children:[e.jsx(O,{className:"pb-2",children:e.jsxs(q,{className:"text-sm flex items-center gap-2",childre