48ea61cdcc
- Product documentation in docs/products/ - Updated MEMORY.md with product info - quiXzoom Auth Core as AAMOS Identity product
3 lines
12 KiB
JavaScript
3 lines
12 KiB
JavaScript
import{r as c,u as O,a as M,j as e,T as I,M as N,f as H,C as R,b as U,c as w,P as y,d as W,e as J,g as K,h as Q,i as C,k as X,l as Y,m as Z,L as P,n as ee,B as se}from"./index-CZD3_4lD.js";import{R as ae}from"./refresh-cw-CCL0Gd2i.js";import{C as k}from"./clock-CHYQgZWG.js";import{C as te}from"./chevron-right-Dvw0FPw3.js";import{I as re,c as S,R as oe}from"./index-C6sfL5Wv.js";import{C as ne}from"./circle-alert-DFiBooaQ.js";import{V as le}from"./video-Di1TW95I.js";const b=c.memo(c.forwardRef(({mission:s,userReach:t=5e3},o)=>{const r=O(),{t:a}=M(),l=s.distance!==void 0&&s.distance<=t,n=l&&s.distance!==void 0&&s.distance<=s.radius_meters,i=d=>{switch(d){case"daily":return a("common.daily");case"weekly":return a("common.weekly");case"biweekly":return a("common.biweekly");case"monthly":return a("common.monthly");default:return d}};return e.jsx("div",{ref:o,onClick:()=>r(`/mission/${s.id}`),className:"glass-card p-5 cursor-pointer hover:border-primary/50 active:scale-[0.98] transition-all duration-200 group touch-target",children:e.jsxs("div",{className:"flex items-start justify-between gap-4",children:[e.jsxs("div",{className:"flex-1 min-w-0 space-y-3",children:[e.jsxs("div",{className:"flex items-center gap-2 flex-wrap",children:[s.organization&&e.jsx("span",{className:"text-xs text-muted-foreground bg-secondary/50 px-2.5 py-1.5 rounded-lg",children:s.organization.name}),s.area_name&&e.jsxs("span",{className:"text-xs text-muted-foreground bg-secondary/50 px-2.5 py-1.5 rounded-lg flex items-center gap-1.5",children:[e.jsx(I,{className:"w-3.5 h-3.5 flex-shrink-0"}),e.jsx("span",{className:"truncate max-w-[140px]",children:s.area_name})]}),n&&e.jsx("span",{className:"text-xs bg-success/20 text-success px-2.5 py-1.5 rounded-lg animate-pulse font-medium",children:a("common.available")})]}),e.jsx("h3",{className:"font-semibold text-base text-foreground group-hover:text-primary transition-colors leading-snug",children:s.title}),s.description&&e.jsx("p",{className:"text-sm text-muted-foreground line-clamp-2 leading-relaxed",children:s.description}),e.jsxs("div",{className:"flex flex-wrap items-center gap-x-5 gap-y-2.5 text-xs text-muted-foreground pt-1",children:[s.distance!==void 0&&e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(N,{className:"w-4 h-4 text-primary flex-shrink-0"}),e.jsx("span",{className:`font-medium ${l?"text-primary":"text-destructive"}`,children:H(s.distance)})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(R,{className:"w-4 h-4 flex-shrink-0"}),e.jsxs("span",{children:[s.required_photos," ",a("common.photos")]})]}),e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(U,{className:"w-4 h-4 text-warning flex-shrink-0"}),e.jsxs("span",{className:"text-warning font-semibold",children:[new Intl.NumberFormat("sv-SE").format(s.reward_credits)," ",a("common.sek")]})]}),s.frequency&&s.frequency!=="once"&&e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(ae,{className:"w-4 h-4 text-primary flex-shrink-0"}),e.jsx("span",{className:"text-primary font-medium",children:i(s.frequency)})]}),s.active_until&&e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(k,{className:"w-4 h-4 flex-shrink-0"}),e.jsxs("span",{children:[a("common.until")," ",new Date(s.active_until).toLocaleDateString("sv-SE")]})]}),!s.active_until&&s.expires_at&&e.jsxs("div",{className:"flex items-center gap-1.5",children:[e.jsx(k,{className:"w-4 h-4 flex-shrink-0"}),e.jsx("span",{children:new Date(s.expires_at).toLocaleDateString("sv-SE")})]})]})]}),e.jsx("div",{className:"flex items-center justify-center w-10 h-10 rounded-full bg-secondary/50 group-hover:bg-primary/20 transition-colors flex-shrink-0 self-center",children:e.jsx(te,{className:"w-5 h-5 text-muted-foreground group-hover:text-primary transition-colors"})})]})})}));b.displayName="MissionCard";var E="Toggle",G=c.forwardRef((s,t)=>{const{pressed:o,defaultPressed:r,onPressedChange:a,...l}=s,[n,i]=w({prop:o,onChange:a,defaultProp:r??!1,caller:E});return e.jsx(y.button,{type:"button","aria-pressed":n,"data-state":n?"on":"off","data-disabled":s.disabled?"":void 0,...l,ref:t,onClick:W(s.onClick,()=>{s.disabled||i(!n)})})});G.displayName=E;var V=G,p="ToggleGroup",[F]=K(p,[S]),A=S(),j=c.forwardRef((s,t)=>{const{type:o,...r}=s;if(o==="single"){const a=r;return e.jsx(ie,{role:"radiogroup",...a,ref:t})}if(o==="multiple"){const a=r;return e.jsx(ce,{role:"toolbar",...a,ref:t})}throw new Error(`Missing prop \`type\` expected on \`${p}\``)});j.displayName=p;var[D,L]=F(p),ie=c.forwardRef((s,t)=>{const{value:o,defaultValue:r,onValueChange:a=()=>{},...l}=s,[n,i]=w({prop:o,defaultProp:r??"",onChange:a,caller:p});return e.jsx(D,{scope:s.__scopeToggleGroup,type:"single",value:c.useMemo(()=>n?[n]:[],[n]),onItemActivate:i,onItemDeactivate:c.useCallback(()=>i(""),[i]),children:e.jsx($,{...l,ref:t})})}),ce=c.forwardRef((s,t)=>{const{value:o,defaultValue:r,onValueChange:a=()=>{},...l}=s,[n,i]=w({prop:o,defaultProp:r??[],onChange:a,caller:p}),d=c.useCallback(m=>i((u=[])=>[...u,m]),[i]),g=c.useCallback(m=>i((u=[])=>u.filter(f=>f!==m)),[i]);return e.jsx(D,{scope:s.__scopeToggleGroup,type:"multiple",value:n,onItemActivate:d,onItemDeactivate:g,children:e.jsx($,{...l,ref:t})})});j.displayName=p;var[de,me]=F(p),$=c.forwardRef((s,t)=>{const{__scopeToggleGroup:o,disabled:r=!1,rovingFocus:a=!0,orientation:l,dir:n,loop:i=!0,...d}=s,g=A(o),m=J(n),u={dir:m,...d};return e.jsx(de,{scope:o,rovingFocus:a,disabled:r,children:a?e.jsx(oe,{asChild:!0,...g,orientation:l,dir:m,loop:i,children:e.jsx(y.div,{...u,ref:t})}):e.jsx(y.div,{...u,ref:t})})}),v="ToggleGroupItem",T=c.forwardRef((s,t)=>{const o=L(v,s.__scopeToggleGroup),r=me(v,s.__scopeToggleGroup),a=A(s.__scopeToggleGroup),l=o.value.includes(s.value),n=r.disabled||s.disabled,i={...s,pressed:l,disabled:n},d=c.useRef(null);return r.rovingFocus?e.jsx(re,{asChild:!0,...a,focusable:!n,active:l,ref:d,children:e.jsx(_,{...i,ref:t})}):e.jsx(_,{...i,ref:t})});T.displayName=v;var _=c.forwardRef((s,t)=>{const{__scopeToggleGroup:o,value:r,...a}=s,l=L(v,o),n={role:"radio","aria-checked":s.pressed,"aria-pressed":void 0},i=l.type==="single"?n:void 0;return e.jsx(G,{...i,...a,ref:t,onPressedChange:d=>{d?l.onItemActivate(r):l.onItemDeactivate(r)}})});const z=Q("inline-flex items-center justify-center rounded-md text-sm font-medium ring-offset-background transition-colors hover:bg-muted hover:text-muted-foreground focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-ring focus-visible:ring-offset-2 disabled:pointer-events-none disabled:opacity-50 data-[state=on]:bg-accent data-[state=on]:text-accent-foreground",{variants:{variant:{default:"bg-transparent",outline:"border border-input bg-transparent hover:bg-accent hover:text-accent-foreground"},size:{default:"h-10 px-3",sm:"h-9 px-2.5",lg:"h-11 px-5"}},defaultVariants:{variant:"default",size:"default"}}),ue=c.forwardRef(({className:s,variant:t,size:o,...r},a)=>e.jsx(V,{ref:a,className:C(z({variant:t,size:o,className:s})),...r}));ue.displayName=V.displayName;const q=c.createContext({size:"default",variant:"default"}),B=c.forwardRef(({className:s,variant:t,size:o,children:r,...a},l)=>e.jsx(j,{ref:l,className:C("flex items-center justify-center gap-1",s),...a,children:e.jsx(q.Provider,{value:{variant:t,size:o},children:r})}));B.displayName=j.displayName;const h=c.forwardRef(({className:s,children:t,variant:o,size:r,...a},l)=>{const n=c.useContext(q);return e.jsx(T,{ref:l,className:C(z({variant:n.variant||o,size:n.size||r}),s),...a,children:t})});h.displayName=T.displayName;const xe=()=>{const{t:s}=M(),[t,o]=c.useState("all"),{latitude:r,longitude:a,loading:l,error:n}=X(),{activeClaim:i}=Y(),{missions:d,loading:g,error:m,isFocusMode:u}=Z(r,a,{activeClaimMissionId:i==null?void 0:i.mission_id}),f=d;return g&&!n?e.jsxs("div",{className:"flex flex-col items-center justify-center py-16 gap-4",children:[e.jsx(P,{className:"w-8 h-8 animate-spin text-primary"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:s(l?"map.gettingLocation":"common.loading")})]}):g?e.jsxs("div",{className:"flex flex-col items-center justify-center py-16 gap-4",children:[e.jsx(P,{className:"w-8 h-8 animate-spin text-primary"}),e.jsx("p",{className:"text-muted-foreground text-sm",children:s("common.loading")})]}):m?e.jsxs("div",{className:"glass-card p-6 text-center space-y-4",children:[e.jsx("div",{className:"w-12 h-12 mx-auto rounded-full bg-destructive/20 flex items-center justify-center",children:e.jsx(ne,{className:"w-6 h-6 text-destructive"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-foreground",children:s("missions.loadError")}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:m})]})]}):u&&d.length===1?e.jsxs("div",{className:"space-y-5",children:[e.jsxs("div",{className:"flex items-center gap-2.5 text-sm text-primary",children:[e.jsx(I,{className:"w-4 h-4"}),e.jsx("span",{className:"font-medium",children:s("missions.focusMode")})]}),e.jsx("div",{className:"space-y-4",children:d.map(x=>e.jsx(b,{mission:x},x.id))})]}):d.length===0?e.jsxs("div",{className:"glass-card p-6 text-center space-y-4",children:[e.jsx("div",{className:"w-12 h-12 mx-auto rounded-full bg-secondary flex items-center justify-center",children:e.jsx(N,{className:"w-6 h-6 text-muted-foreground"})}),e.jsxs("div",{children:[e.jsx("h3",{className:"font-semibold text-foreground",children:s("home.noMissions")}),e.jsx("p",{className:"text-sm text-muted-foreground mt-1",children:s("missions.noMissionsInArea")})]})]}):e.jsxs("div",{className:"space-y-5",children:[e.jsx("div",{className:"flex items-center gap-2",children:e.jsxs(B,{type:"single",value:t,onValueChange:x=>x&&o(x),className:"bg-muted/50 rounded-lg p-1",children:[e.jsxs(h,{value:"all","aria-label":s("common.all"),className:"text-xs px-3 py-1.5 rounded-md data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:shadow-sm",children:[s("common.all"),e.jsxs("span",{className:"ml-1 opacity-70",children:["(",d.length,")"]})]}),e.jsxs(h,{value:"photo","aria-label":s("missions.photo"),className:"text-xs px-3 py-1.5 rounded-md gap-1 data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:shadow-sm",children:[e.jsx(R,{className:"w-3 h-3"}),s("missions.photoShort"),e.jsxs("span",{className:"ml-1 opacity-70",children:["(",d.length,")"]})]}),e.jsxs(h,{value:"video","aria-label":s("missions.video"),className:"text-xs px-3 py-1.5 rounded-md gap-1 data-[state=on]:bg-primary data-[state=on]:text-primary-foreground data-[state=on]:shadow-sm",children:[e.jsx(le,{className:"w-3 h-3"}),s("missions.videoShort"),e.jsx("span",{className:"ml-1 opacity-70",children:"(0)"})]})]})}),n&&e.jsxs("div",{className:"flex items-center gap-2.5 text-sm text-warning bg-warning/10 px-3 py-2 rounded-lg border border-warning/20",children:[e.jsx(N,{className:"w-4 h-4 flex-shrink-0"}),e.jsx("span",{children:"Platsåtkomst saknas — uppdrag visas utan avstånd"})]}),!n&&e.jsxs("div",{className:"flex items-center gap-2.5 text-sm text-muted-foreground",children:[e.jsx("div",{className:"w-2.5 h-2.5 rounded-full bg-success animate-pulse flex-shrink-0"}),e.jsx("span",{children:s("missions.showingMissions",{count:f.length})})]}),e.jsx("div",{className:"space-y-4",children:f.length>0?f.map(x=>e.jsx(b,{mission:x},x.id)):e.jsx("div",{className:"glass-card p-6 text-center",children:e.jsx("p",{className:"text-muted-foreground text-sm",children:s("missions.noMissionsNearby")})})})]})},ye=()=>{const{canOrder:s}=ee();return e.jsxs("div",{className:"min-h-screen-safe bg-background text-foreground pb-32 safe-area-x",children:[e.jsx("main",{className:`px-5 py-5 ${s?"pt-3":"safe-area-top"}`,children:e.jsx(xe,{})}),e.jsx(se,{})]})};export{ye as default};
|
|
//# sourceMappingURL=Index-BHs-gF4l.js.map
|