herway-demo 1.0.0 → 1.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -3,7 +3,7 @@
3
3
  Self-contained ESM React component bundle.
4
4
 
5
5
  ```tsx
6
- import { HerWayDemo } from "https://cdn.jsdelivr.net/npm/herway-demo@1.0.0/dist/index.js?external=react,react-dom"
6
+ import { HerWayDemo } from "https://cdn.jsdelivr.net/npm/herway-demo@1.0.1/dist/index.js?external=react,react-dom"
7
7
 
8
8
  export default function Component() {
9
9
  return <HerWayDemo />
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  import * as React from "react";
2
- export interface HerWayDemoProps { style?: React.CSSProperties; className?: string; }
2
+ export interface HerWayDemoProps { scale?: number; style?: React.CSSProperties; className?: string; }
3
3
  export declare function HerWayDemo(props?: HerWayDemoProps): React.JSX.Element;
4
4
  export default HerWayDemo;
package/dist/index.js CHANGED
@@ -1,5 +1,5 @@
1
- import{useEffect as Cr}from"react";import{useEffect as fr,useRef as Dt,useState as ur}from"react";import{createContext as To,useContext as Wo,useState as M,useCallback as q,useRef as Lo}from"react";var ye=[4.9087,52.3637];var ae=[{id:"r1",kind:"alert",title:"Person being followed",locationName:"Plantage Middenlaan",severity:"hi",minutesAgo:4,distanceMeters:180,confirmations:12,category:"Being followed",description:"A woman reported being followed by a man for several blocks along Plantage Middenlaan. He turned back near the tram stop. Stay aware and travel together if you can.",coord:[4.9148,52.3683],cluster:3},{id:"r2",kind:"alert",title:"Aggressive group outside bar",locationName:"Roetersstraat",severity:"md",minutesAgo:12,distanceMeters:320,confirmations:5,category:"Harassment",description:"Loud, aggressive group outside a bar on Roetersstraat shouting at people walking past. Consider the other side of the street.",coord:[4.9176,52.3668]},{id:"r3",kind:"alert",title:"Poorly lit underpass",locationName:"Mauritskade",severity:"md",minutesAgo:38,distanceMeters:560,confirmations:8,category:"Unsafe area",description:"The underpass at Mauritskade has several broken lights and is very dark after sunset. A safer, well-lit route runs one block north.",coord:[4.9088,52.3642]},{id:"r4",kind:"alert",title:"Verbal harassment reported",locationName:"Sarphatistraat",severity:"lo",minutesAgo:55,distanceMeters:720,confirmations:3,category:"Physical & verbal harassment",description:"Repeated shouting and verbal harassment from a group near the corner shop on Sarphatistraat. Reported low-severity but worth knowing.",coord:[4.9185,52.3637]},{id:"r5",kind:"review",title:"Caf\xE9 Morgenzon",locationName:"Czaar Peterstraat",stars:4,minutesAgo:120,distanceMeters:500,description:"Warm, welcoming caf\xE9 with staff who keep an eye out. Well-lit at night and easy to get a taxi from. Felt safe staying late.",tags:["Well-lit","Friendly staff","Easy to leave"],coord:[4.9232,52.3706]}],Ue=[{key:"followed",label:"Being followed",icon:"eye"},{key:"harassment",label:"Physical & verbal harassment",icon:"users"},{key:"unsafe",label:"Unsafe area",icon:"alert"},{key:"drink",label:"Drink tampering",icon:"lock"},{key:"other",label:"Something else",icon:"star"}],Ae=[{name:"Home",detail:"Czaar Peterstraat",kind:"saved"},{name:"Work",detail:"Science Park",kind:"saved"},{name:"Caf\xE9 Morgenzon",detail:"500 m away",kind:"recent"},{name:"Centraal Station",detail:"1.8 km away",kind:"recent"}],Ye=[{key:"safer",title:"Safer route",time:"14 min",detail:"Avoids 2 alerts \xB7 well-lit \xB7 busier streets",badge:"Recommended"},{key:"fastest",title:"Fastest route",time:"11 min",detail:"Passes 1 high-risk area \xB7 darker stretch"}],Xe=["Friendly staff","Easy to leave","Busy area","Quiet","CCTV","Well-lit","Staff watched my drink","Felt safe leaving late"],ge={name:"Jane Doe",initials:"J",city:"Amsterdam",ageRange:"25\u201334",verified:!0,stats:{reports:24,reviews:18,days:214},contacts:3,radiusMeters:500,sosTimer:5},Y=[{id:"v1",name:"Caf\xE9 Morgenzon",type:"Caf\xE9",area:"Czaar Peterstraat",stars:4,reviews:38,status:"calm",statusNote:"Quiet right now \xB7 well-staffed",vibe:"Quiet",tags:["Friendly staff","Easy to leave","CCTV"]},{id:"v2",name:"Club Halcyon",type:"Club",area:"Leidseplein",stars:3,reviews:126,status:"busy",statusNote:"Very busy \xB7 long queue reported",vibe:"Busy",tags:["Busy area","Security on door"]},{id:"v3",name:"Bar Florine",type:"Bar",area:"Plantage",stars:5,reviews:54,status:"calm",statusNote:"Relaxed crowd \xB7 women-friendly",vibe:"Relaxed",tags:["Friendly staff","Quiet","Well-lit"]},{id:"v4",name:"Bar Avondrood",type:"Bar",area:"Sarphatistraat",stars:2,reviews:19,status:"caution",statusNote:"2 incidents reported tonight",vibe:"Tense",tags:["Crowded","Poorly lit nearby"]},{id:"v5",name:"Werf Terrace",type:"Club",area:"Czaar Peterstraat",stars:4,reviews:71,status:"busy",statusNote:"Busy but calm \xB7 good lighting",vibe:"Lively",tags:["Busy area","CCTV","Easy to leave"]}],we=[{id:"e1",title:"Group following women near tram stop",where:"Plantage Middenlaan",when:"Just now",distanceMeters:140,confirmations:2,coord:[4.9148,52.3683]},{id:"e2",title:"Loud altercation outside bar",where:"Roetersstraat",when:"6 min ago",distanceMeters:280,confirmations:4,coord:[4.9176,52.3668]}],Re=[{id:"c1",name:"Mara V.",phone:"+31 6 1234 5678"},{id:"c2",name:"Sofia K.",phone:"+31 6 8765 4321"},{id:"c3",name:"Emergency line",phone:"112"}],Ge=[4.908641,52.363719],Ie=[4.922685,52.370921],Be=[4.9176,52.3668],ve=[[4.908641,52.363719],[4.910909,52.364136],[4.91093,52.364139],[4.910926,52.364117],[4.910921,52.364094],[4.910778,52.363647],[4.910656,52.36326],[4.910644,52.363214],[4.910641,52.363195],[4.910639,52.363177],[4.910641,52.363156],[4.910645,52.363133],[4.910656,52.3631],[4.910686,52.363042],[4.910747,52.362925],[4.910795,52.362835],[4.910811,52.36278],[4.910828,52.362716],[4.910901,52.362564],[4.911047,52.362289],[4.911186,52.362023],[4.911221,52.361965],[4.911231,52.361936],[4.911245,52.361909],[4.911247,52.361906],[4.911262,52.361885],[4.911282,52.361869],[4.911301,52.361858],[4.911317,52.361848],[4.911392,52.361817],[4.912316,52.36201],[4.912448,52.362039],[4.913422,52.36224],[4.914395,52.362442],[4.914498,52.362464],[4.914544,52.362473],[4.914583,52.362481],[4.914611,52.362487],[4.914729,52.362512],[4.914735,52.362513],[4.914776,52.362524],[4.91482,52.362531],[4.91489,52.362544],[4.916406,52.36286],[4.918309,52.363254],[4.918391,52.363272],[4.918448,52.363285],[4.918512,52.363302],[4.918618,52.363336],[4.918815,52.363416],[4.918916,52.363462],[4.918936,52.363477],[4.918965,52.363503],[4.918974,52.363511],[4.918995,52.363533],[4.91901,52.36355],[4.91902,52.363563],[4.919033,52.363579],[4.919064,52.36362],[4.919126,52.363698],[4.919153,52.363726],[4.919178,52.363748],[4.91921,52.363773],[4.91926,52.363802],[4.919319,52.363831],[4.919479,52.363906],[4.919727,52.364018],[4.920188,52.364202],[4.920557,52.364369],[4.920942,52.36459],[4.922318,52.365437],[4.92287,52.365775],[4.923509,52.366172],[4.923979,52.36645],[4.923934,52.366478],[4.923905,52.366497],[4.923853,52.366529],[4.923812,52.366551],[4.923706,52.366601],[4.923628,52.366612],[4.923541,52.366616],[4.923501,52.366619],[4.92316,52.36664],[4.92296,52.36666],[4.922102,52.366965],[4.921167,52.367298],[4.921041,52.367341],[4.920701,52.367459],[4.920398,52.367565],[4.919536,52.367864],[4.919437,52.367899],[4.919091,52.368019],[4.918997,52.36805],[4.918821,52.368111],[4.918289,52.368302],[4.917772,52.368487],[4.917507,52.368582],[4.916554,52.368923],[4.916459,52.368956],[4.915401,52.369326],[4.915256,52.369378],[4.915167,52.369409],[4.914673,52.369585],[4.912659,52.370295],[4.912446,52.370376],[4.912312,52.370435],[4.912846,52.370781],[4.913049,52.370837],[4.91313,52.370859],[4.913202,52.370871],[4.913293,52.370872],[4.913493,52.370809],[4.913662,52.370754],[4.913751,52.370738],[4.913873,52.370731],[4.913989,52.370735],[4.91411,52.370757],[4.914315,52.370817],[4.914849,52.371043],[4.914926,52.371073],[4.915088,52.371151],[4.915175,52.371075],[4.91524,52.371021],[4.915256,52.371007],[4.915338,52.370953],[4.915446,52.370903],[4.915926,52.370753],[4.916235,52.370656],[4.916339,52.370624],[4.917222,52.370322],[4.917362,52.370274],[4.917472,52.370235],[4.91827,52.369966],[4.918501,52.369891],[4.918647,52.369844],[4.919227,52.369631],[4.919306,52.369714],[4.919373,52.369768],[4.919792,52.370036],[4.920439,52.370451],[4.921264,52.370961],[4.921625,52.371179],[4.922084,52.371474],[4.922803,52.371058],[4.922813,52.371034],[4.922797,52.371],[4.922748,52.370959],[4.922685,52.370921]],Ke=[[4.908641,52.363719],[4.910909,52.364136],[4.91093,52.364139],[4.910932,52.36416],[4.91093,52.364198],[4.91092,52.364266],[4.910915,52.364293],[4.910907,52.364321],[4.910898,52.364344],[4.910824,52.364497],[4.910609,52.36494],[4.910596,52.36497],[4.910586,52.365001],[4.910581,52.365032],[4.91058,52.36507],[4.910584,52.365097],[4.910589,52.365116],[4.910602,52.365152],[4.910618,52.365177],[4.910636,52.3652],[4.910656,52.365224],[4.910714,52.365288],[4.910938,52.36553],[4.911635,52.366279],[4.911648,52.366294],[4.911697,52.366345],[4.911727,52.366381],[4.911767,52.366409],[4.911781,52.366419],[4.911795,52.366428],[4.911837,52.366459],[4.911826,52.366462],[4.911759,52.366485],[4.911733,52.366495],[4.911562,52.366555],[4.911295,52.366641],[4.910506,52.366915],[4.909536,52.367238],[4.909472,52.367264],[4.909446,52.367294],[4.909438,52.367331],[4.909437,52.367355],[4.909444,52.367396],[4.90946,52.367426],[4.910102,52.368101],[4.91057,52.36858],[4.910619,52.368688],[4.910615,52.368711],[4.910594,52.368763],[4.910587,52.368783],[4.910567,52.36881],[4.910545,52.368827],[4.910421,52.3689],[4.909973,52.369098],[4.909909,52.369136],[4.909776,52.369212],[4.909656,52.369296],[4.909306,52.369499],[4.909115,52.369623],[4.908994,52.369732],[4.908846,52.369894],[4.908766,52.369973],[4.908765,52.370021],[4.908747,52.370051],[4.908732,52.37008],[4.908728,52.370121],[4.908737,52.370155],[4.908767,52.370195],[4.909227,52.370366],[4.909865,52.370601],[4.910308,52.370886],[4.910382,52.370933],[4.911,52.371373],[4.911033,52.371397],[4.911086,52.371442],[4.911177,52.37152],[4.911598,52.371385],[4.911884,52.371277],[4.912091,52.371207],[4.912148,52.371189],[4.912202,52.371173],[4.912208,52.371171],[4.91241,52.371138],[4.912523,52.371121],[4.912676,52.371075],[4.912914,52.370997],[4.912955,52.370984],[4.913016,52.370965],[4.913055,52.37095],[4.913293,52.370872],[4.913493,52.370809],[4.913662,52.370754],[4.913751,52.370738],[4.913873,52.370731],[4.913989,52.370735],[4.91411,52.370757],[4.914315,52.370817],[4.914849,52.371043],[4.914926,52.371073],[4.915088,52.371151],[4.915175,52.371075],[4.91524,52.371021],[4.915256,52.371007],[4.915338,52.370953],[4.915446,52.370903],[4.915926,52.370753],[4.916235,52.370656],[4.916339,52.370624],[4.917222,52.370322],[4.917362,52.370274],[4.917472,52.370235],[4.91827,52.369966],[4.918501,52.369891],[4.918647,52.369844],[4.919227,52.369631],[4.919306,52.369714],[4.919373,52.369768],[4.919792,52.370036],[4.920439,52.370451],[4.921264,52.370961],[4.921625,52.371179],[4.922084,52.371474],[4.922803,52.371058],[4.922813,52.371034],[4.922797,52.371],[4.922748,52.370959],[4.922685,52.370921]];import{jsx as Go}from"react/jsx-runtime";var qe=To(null);function m(){let e=Wo(qe);if(!e)throw new Error("useStore must be used inside <StoreProvider>");return e}var Ao={category:null,severity:"md",anonymous:!1};function Je({children:e}){let[r,a]=M(["ob-1"]),n=r[r.length-1],[l,d]=M({mode:"push",sign:1,n:0}),c={search:-1,home:0,reports:1,profile:2},g=q(S=>{d(B=>({mode:"push",sign:1,n:B.n+1})),a(B=>[...B,S])},[]),h=q(()=>{d(S=>({mode:"pop",sign:1,n:S.n+1})),a(S=>S.length>1?S.slice(0,-1):S)},[]),w=q(S=>{a(B=>{let he=B[B.length-1];if(he in c&&S in c){let Le=c[S]>c[he]?1:-1;d(Po=>({mode:"tab",sign:Le,n:Po.n+1}))}else d(Le=>({mode:"pop",sign:1,n:Le.n+1}));return[S]})},[]),[v,I]=M("right"),[R,Ce]=M(!1),[xe,$t]=M(!1),[jt,_t]=M("closest"),[Ut,Yt]=M(2),[Xt,Kt]=M("all"),[qt,Jt]=M(null),[Qt,Zt]=M(null),[eo,to]=M(null),[oo,ro]=M(""),[ao,no]=M("signup"),[io,so]=M(Ao),lo=q(S=>so(B=>({...B,...S})),[]),[co,po]=M(""),[ho,go]=M("safer"),[vo,mo]=M({nearbyAlerts:!0,confirmations:!0,quietHours:!1,shareLocation:!0,anonymousDefault:!1}),fo=q(S=>mo(B=>({...B,[S]:!B[S]})),[]),Pe=[250,500,1e3],Te=[5,10,15],We=["Terrain","Standard","Satellite"],[uo,bo]=M(500),[xo,yo]=M(5),[wo,ko]=M("Terrain"),No=q(()=>bo(S=>Pe[(Pe.indexOf(S)+1)%Pe.length]),[]),So=q(()=>yo(S=>Te[(Te.indexOf(S)+1)%Te.length]),[]),Co=q(()=>ko(S=>We[(We.indexOf(S)+1)%We.length]),[]),[Ro,_e]=M(Re),zo=Lo(0),Eo=q((S,B)=>{_e(he=>[...he,{id:`new-${zo.current++}`,name:S,phone:B}])},[]),Mo=q(S=>_e(B=>B.filter(he=>he.id!==S)),[]),Vo={screen:n,nav:l,go:g,back:h,reset:w,hand:v,setHand:I,planetaryOpen:R,setPlanetaryOpen:Ce,filtersOpen:xe,setFiltersOpen:$t,sort:jt,setSort:_t,radius:Ut,setRadius:Yt,show:Xt,setShow:Kt,selectedReportId:qt,setSelectedReportId:Jt,selectedVenueId:Qt,setSelectedVenueId:Zt,selectedEventId:eo,setSelectedEventId:to,searchQuery:oo,setSearchQuery:ro,authMode:ao,setAuthMode:no,draft:io,setDraft:lo,destination:co,setDestination:po,routeChoice:ho,setRouteChoice:go,toggles:vo,toggle:fo,safeRadius:uo,cycleRadius:No,sosTimer:xo,cycleSosTimer:So,mapType:wo,cycleMapType:Co,contacts:Ro,addContact:Eo,removeContact:Mo};return Go(qe.Provider,{value:Vo,children:e})}import{Fragment as Io,jsx as s,jsxs as C}from"react/jsx-runtime";function x({children:e,...r}){return s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",...r,children:e})}var t={map:e=>C(x,{...e,children:[s("polygon",{points:"1 6 8 3 16 6 23 3 23 18 16 21 8 18 1 21 1 6"}),s("line",{x1:"8",y1:"3",x2:"8",y2:"18"}),s("line",{x1:"16",y1:"6",x2:"16",y2:"21"})]}),bell:e=>C(x,{...e,children:[s("path",{d:"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"}),s("path",{d:"M13.7 21a2 2 0 0 1-3.4 0"})]}),person:e=>C(x,{...e,children:[s("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),s("circle",{cx:"12",cy:"7",r:"4"})]}),plus:e=>C(x,{strokeWidth:2.6,...e,children:[s("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),s("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),minus:e=>s(x,{strokeWidth:2.4,...e,children:s("line",{x1:"5",y1:"12",x2:"19",y2:"12"})}),alert:e=>C(x,{strokeWidth:2.2,...e,children:[s("path",{d:"M12 2 1 21h22L12 2z"}),s("line",{x1:"12",y1:"9",x2:"12",y2:"14"}),s("circle",{cx:"12",cy:"17.5",r:".7",fill:"currentColor"})]}),eye:e=>C(x,{strokeWidth:2.2,...e,children:[s("circle",{cx:"12",cy:"12",r:"3.2"}),s("path",{d:"M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7-10-7-10-7z"})]}),star:e=>s(x,{...e,children:s("polygon",{points:"12 2 15 9 22 9.5 16.5 14 18.5 21 12 17 5.5 21 7.5 14 2 9.5 9 9"})}),starFill:e=>s("svg",{viewBox:"0 0 24 24",fill:"currentColor",...e,children:s("polygon",{points:"12 2 15 9 22 9.5 16.5 14 18.5 21 12 17 5.5 21 7.5 14 2 9.5 9 9"})}),route:e=>C(x,{strokeWidth:2.2,...e,children:[s("circle",{cx:"6",cy:"19",r:"2.4"}),s("circle",{cx:"18",cy:"5",r:"2.4"}),s("path",{d:"M8.4 19H14a3.5 3.5 0 0 0 0-7h-4a3.5 3.5 0 0 1 0-7h5.6"})]}),sos:e=>C(x,{strokeWidth:2.2,...e,children:[s("polygon",{points:"8 2.6 16 2.6 21.4 8 21.4 16 16 21.4 8 21.4 2.6 16 2.6 8"}),s("line",{x1:"12",y1:"7.5",x2:"12",y2:"13"}),s("circle",{cx:"12",cy:"16.5",r:".7",fill:"currentColor"})]}),locate:e=>C(x,{...e,children:[s("circle",{cx:"12",cy:"12",r:"3"}),s("line",{x1:"12",y1:"2",x2:"12",y2:"5"}),s("line",{x1:"12",y1:"19",x2:"12",y2:"22"}),s("line",{x1:"2",y1:"12",x2:"5",y2:"12"}),s("line",{x1:"19",y1:"12",x2:"22",y2:"12"})]}),compass:e=>s(x,{...e,children:s("polygon",{points:"12 2 19 21 12 17 5 21 12 2"})}),check:e=>s(x,{strokeWidth:2.4,...e,children:s("polyline",{points:"20 6 9 17 4 12"})}),chevronLeft:e=>s(x,{...e,children:s("polyline",{points:"15 18 9 12 15 6"})}),chevronRight:e=>s(x,{...e,children:s("polyline",{points:"9 18 15 12 9 6"})}),arrowRight:e=>C(x,{...e,children:[s("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),s("polyline",{points:"12 5 19 12 12 19"})]}),search:e=>C(x,{...e,children:[s("circle",{cx:"11",cy:"11",r:"7"}),s("line",{x1:"21",y1:"21",x2:"16.5",y2:"16.5"})]}),camera:e=>C(x,{...e,children:[s("path",{d:"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"}),s("circle",{cx:"12",cy:"13",r:"4"})]}),share:e=>C(x,{...e,children:[s("path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"}),s("polyline",{points:"16 6 12 2 8 6"}),s("line",{x1:"12",y1:"2",x2:"12",y2:"15"})]}),shield:e=>C(x,{...e,children:[s("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"}),s("polyline",{points:"9 12 11 14 15 10"})]}),clock:e=>C(x,{...e,children:[s("circle",{cx:"12",cy:"12",r:"9"}),s("polyline",{points:"12 7 12 12 15 14"})]}),mapPin:e=>C(x,{...e,children:[s("path",{d:"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"}),s("circle",{cx:"12",cy:"10",r:"3"})]}),lock:e=>C(x,{...e,children:[s("rect",{x:"4",y:"11",width:"16",height:"10",rx:"2"}),s("path",{d:"M8 11V7a4 4 0 0 1 8 0v4"})]}),phone:e=>s(x,{strokeWidth:2.2,...e,children:s("path",{d:"M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3-8.6A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.3-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z"})}),hand:e=>C(x,{...e,children:[s("path",{d:"M18 11V6a2 2 0 0 0-4 0v5M14 10V4a2 2 0 0 0-4 0v7M10 10.5V6a2 2 0 0 0-4 0v8"}),s("path",{d:"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2a8 8 0 0 1-8-8 2 2 0 0 1 4 0"})]}),filter:e=>s(x,{...e,children:s("polygon",{points:"22 3 2 3 10 12.5 10 19 14 21 14 12.5 22 3"})}),x:e=>C(x,{strokeWidth:2.4,...e,children:[s("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),menu:e=>C(x,{strokeWidth:2.4,...e,children:[s("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),s("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),s("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]}),cornerUpLeft:e=>C(x,{...e,children:[s("polyline",{points:"9 14 4 9 9 4"}),s("path",{d:"M20 20v-7a4 4 0 0 0-4-4H4"})]}),users:e=>C(x,{...e,children:[s("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),s("circle",{cx:"9",cy:"7",r:"4"}),s("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75"})]})};function Qe(){return C(Io,{children:[C("svg",{width:"18",height:"12",viewBox:"0 0 18 12",fill:"currentColor",children:[s("rect",{x:"0",y:"7",width:"3",height:"5",rx:"1"}),s("rect",{x:"5",y:"4",width:"3",height:"8",rx:"1"}),s("rect",{x:"10",y:"1.5",width:"3",height:"10.5",rx:"1"}),s("rect",{x:"15",y:"0",width:"3",height:"12",rx:"1",opacity:".4"})]}),s("svg",{width:"17",height:"12",viewBox:"0 0 17 12",fill:"currentColor",children:s("path",{d:"M8.5 2.5c2.4 0 4.6.9 6.2 2.4l1.3-1.4A11 11 0 0 0 8.5.5 11 11 0 0 0 1 3.5l1.3 1.4A9 9 0 0 1 8.5 2.5Zm0 3.4c1.5 0 2.9.6 3.9 1.5l1.3-1.4a8 8 0 0 0-10.4 0l1.3 1.4A5.6 5.6 0 0 1 8.5 5.9Zm0 3.3c.7 0 1.3.3 1.8.7l-1.8 2-1.8-2c.5-.4 1.1-.7 1.8-.7Z"})}),C("svg",{width:"26",height:"13",viewBox:"0 0 26 13",fill:"none",children:[s("rect",{x:"1",y:"1.5",width:"21",height:"10",rx:"3",stroke:"currentColor",strokeWidth:"1.2",opacity:".55"}),s("rect",{x:"2.8",y:"3.2",width:"15",height:"6.6",rx:"1.6",fill:"currentColor"}),s("rect",{x:"23.4",y:"4.5",width:"1.6",height:"4",rx:".8",fill:"currentColor",opacity:".55"})]})]})}import{jsx as me,jsxs as Ze}from"react/jsx-runtime";function et({children:e,tone:r="dark",onMouseLeave:a}){return me("div",{className:"phone",children:Ze("div",{className:"screen",onMouseLeave:a,children:[me("div",{className:"notch"}),Ze("div",{className:`status ${r}`,children:[me("span",{className:"t",children:"9:41"}),me("span",{className:"r",children:me(Qe,{})})]}),e,me("div",{className:`home-ind ${r}`})]})})}import{Fragment as Do,jsx as X,jsxs as ze}from"react/jsx-runtime";var tt=["map","reports","profile"],Bo={map:"home",reports:"reports",profile:"profile"};function ot({active:e}){let{screen:r,reset:a,setPlanetaryOpen:n,searchQuery:l,setSearchQuery:d}=m();function c(v){n(!1),a(v)}function g(){d(""),a("home")}if(r==="search")return ze(Do,{children:[ze("div",{className:"spotlight glass",children:[X(t.search,{}),X("input",{autoFocus:!0,value:l,onChange:v=>d(v.target.value),placeholder:"Search bars, clubs, caf\xE9s\u2026"})]}),X("div",{className:"spot-close glass",onClick:g,children:X(t.x,{})})]});let h=tt.indexOf(e),w={map:X(t.map,{}),reports:X(t.bell,{}),profile:X(t.person,{})};return ze("div",{className:"nav-group nav-persist",children:[X("div",{className:"search-island glass",onClick:()=>c("search"),children:X(t.search,{})}),ze("div",{className:"nav glass slide nav3",style:{"--i":h},children:[X("div",{className:"nav-ind"}),tt.map(v=>X("div",{className:`nav-seg ${e===v?"on":""}`,onClick:()=>c(Bo[v]),children:w[v]},v))]})]})}import{useEffect as $o,useState as jo}from"react";import{createContext as Fo,useContext as Ho}from"react";function De(e){let r=e*Math.PI/180;return Math.log(Math.tan(r)+1/Math.cos(r))}function fe(e,r,a){let n=(e-a.west)/(a.east-a.west)*100,l=De(a.north),d=De(a.south),c=(l-De(r))/(l-d)*100;return{leftPct:n,topPct:c}}function rt(e,r){return e.map(([a,n])=>fe(a,n,r))}var Oo=typeof globalThis<"u"&&globalThis.__HERWAY_ASSET_BASE__||new URL("./map/",import.meta.url).href,ne=e=>Oo+e,Oe={home:{src:ne("home.webp"),west:4.902303,east:4.929597,north:52.385856,south:52.348436,w:636,h:1428},route:{src:ne("route.webp"),west:4.902663,east:4.929957,north:52.377509,south:52.340082,w:636,h:1428},nav:{src:ne("route.webp"),west:4.902663,east:4.929957,north:52.377509,south:52.340082,w:636,h:1428},"mini-r1":{src:ne("mini-r1.webp"),west:4.907976,east:4.921624,north:52.370553,south:52.366046,w:636,h:344},"mini-r2":{src:ne("mini-r2.webp"),west:4.910776,east:4.924424,north:52.369054,south:52.364546,w:636,h:344},"mini-r3":{src:ne("mini-r3.webp"),west:4.901976,east:4.915624,north:52.366454,south:52.361946,w:636,h:344},"mini-r4":{src:ne("mini-r4.webp"),west:4.911676,east:4.925324,north:52.365954,south:52.361446,w:636,h:344},"mini-user":{src:ne("mini-user.webp"),west:4.912376,east:4.926024,north:52.366354,south:52.361846,w:636,h:344}},at={r1:"mini-r1",r2:"mini-r2",r3:"mini-r3",r4:"mini-r4"},nt={e1:"mini-r1",e2:"mini-r2"};function it(e,r=16){if(e.length<=r)return e;let a=(e.length-1)/(r-1),n=[];for(let l=0;l<r;l++)n.push(e[Math.round(l*a)]);return n}import{jsx as O,jsxs as ie}from"react/jsx-runtime";var st=Fo(null);function ke(){let e=Ho(st);if(!e)throw new Error("map overlay used outside <StaticMap>");return e}function _({view:e,variant:r="full",className:a="",children:n}){let l=Oe[e]??Oe.home;return ie("div",{className:`smap smap-${r} ${a}`,children:[O("img",{className:"smap-img",src:l.src,alt:"",draggable:!1}),O(st.Provider,{value:l,children:n})]})}function K({lng:e,lat:r,severity:a,glyph:n,cluster:l,onClick:d}){let c=ke(),{leftPct:g,topPct:h}=fe(e,r,c);return ie("div",{className:`pin ${a}`,style:{left:`${g}%`,top:`${h}%`,cursor:d?"pointer":"default"},onClick:d,children:[O("div",{className:"body",children:n}),l?O("span",{className:"cluster",children:l}):null]})}function ue({lng:e,lat:r,className:a="map-dot"}){let n=ke(),{leftPct:l,topPct:d}=fe(e,r,n);return O("div",{className:a,style:{position:"absolute",left:`${l}%`,top:`${d}%`,transform:"translate(-50%, -50%)",zIndex:8}})}function lt({lng:e,lat:r,meters:a}){let n=ke(),l=fe(e,r,n),d=a/(111320*Math.cos(r*Math.PI/180)),c=fe(e+d,r,n),g=Math.abs(c.leftPct-l.leftPct)*2;return O("div",{className:"smap-radius",style:{left:`${l.leftPct}%`,top:`${l.topPct}%`,width:`${g}%`}})}function Ne({points:e,color:r,width:a,dash:n,opacity:l=1}){let d=ke(),c=rt(it(e),d).map(g=>`${g.leftPct},${g.topPct}`).join(" ");return O("svg",{className:"smap-route",viewBox:"0 0 100 100",preserveAspectRatio:"none",children:O("polyline",{points:c,fill:"none",stroke:r,strokeWidth:a,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:n,opacity:l,vectorEffect:"non-scaling-stroke"})})}function dt(){return ie("div",{className:"smap-legend glass",children:[ie("span",{children:[O("i",{className:"lg hi"}),"High"]}),ie("span",{children:[O("i",{className:"lg md"}),"Med"]}),ie("span",{children:[O("i",{className:"lg lo"}),"Low"]}),ie("span",{children:[O("i",{className:"lg safe"}),"Review"]})]})}function ct(){let e=ke(),r=(e.north+e.south)/2*(Math.PI/180),a=(e.east-e.west)*111320*Math.cos(r),n=200,l=n/a*100;for(let c of[100,200,250,500,1e3]){let g=c/a*100;if(g>=14&&g<=28){n=c,l=g;break}}let d=n>=1e3?`${n/1e3} km`:`${n} m`;return ie("div",{className:"smap-scale",style:{width:`${l}%`},children:[O("span",{className:"ss-lbl",children:d}),O("span",{className:"ss-bar"})]})}import{Fragment as pt,jsx as k,jsxs as se}from"react/jsx-runtime";function Ee(e,r,a){return a==="right"?{left:e,top:r}:{left:e.replace("calc(100% - ","").replace(")",""),top:r}}function _o(e,r){return e==="review"?k(t.star,{}):r==="md"?k(t.eye,{}):k(t.alert,{})}function Fe(){let{planetaryOpen:e,setPlanetaryOpen:r,go:a,setSelectedReportId:n,setSelectedVenueId:l,safeRadius:d}=m(),c="right",[g,h]=jo(!1);$o(()=>{h(window.matchMedia("(hover: hover)").matches)},[]);function w(R){let Ce=ae.find(xe=>xe.id===R);Ce?.kind==="review"?(l((Y.find(xe=>xe.name===Ce.title)??Y[0]).id),a("read-review")):(n(R),a("alert-detail"))}let v=c==="right"?{left:"calc(100% - 61px)"}:{left:"61px"};function I(R){r(!1),R==="alert"&&a("alert-type"),R==="route"&&a("route-destination"),R==="review"&&a("review"),R==="sos"&&a("sos")}return se(pt,{children:[se(_,{view:"home",variant:"full",children:[k("div",{className:"heat",style:{background:"radial-gradient(120px 120px at 56% 44%, rgba(210,52,33,.5), transparent 70%),radial-gradient(150px 150px at 62% 52%, rgba(233,133,68,.45), transparent 70%),radial-gradient(120px 120px at 47% 58%, rgba(244,207,99,.4), transparent 70%)"}}),k(lt,{lng:ye[0],lat:ye[1],meters:d}),ae.map(R=>k(K,{lng:R.coord[0],lat:R.coord[1],severity:R.kind==="review"?"safe":R.severity,glyph:_o(R.kind,R.severity),cluster:R.cluster,onClick:()=>w(R.id)},R.id)),k(ue,{lng:ye[0],lat:ye[1],className:"user-blip"}),k(dt,{}),k(ct,{})]}),k("div",{className:"maptitle glass",children:k("div",{className:"lab",children:"Live safety map"})}),e&&se(pt,{children:[k("div",{className:"scrim",onClick:()=>r(!1)}),k("div",{className:"orbit",style:c==="right"?{left:"calc(100% - 61px)"}:{left:"61px"}}),se("div",{className:"opt",style:Ee("calc(100% - 61px)","calc(100% - 250px)",c),onClick:()=>I("alert"),children:[k("div",{className:"o alert",children:k(t.alert,{})}),k("div",{className:"lab",children:"Alert"})]}),se("div",{className:"opt",style:Ee("calc(100% - 149px)","calc(100% - 227px)",c),onClick:()=>I("route"),children:[k("div",{className:"o route",children:k(t.route,{})}),k("div",{className:"lab",children:"Route"})]}),se("div",{className:"opt",style:Ee("calc(100% - 213px)","calc(100% - 163px)",c),onClick:()=>I("review"),children:[k("div",{className:"o review",children:k(t.star,{})}),k("div",{className:"lab",children:"Review"})]}),se("div",{className:"opt is-panic",style:Ee("calc(100% - 236px)","calc(100% - 75px)",c),onClick:()=>I("sos"),children:[k("div",{className:"o panic",children:k(t.sos,{})}),k("div",{className:"lab",children:"SOS"})]})]}),!e&&k("div",{className:"fab-hint",style:c==="right"?{}:{left:16,right:"auto"},children:g?"Hover to open":"Tap to open"}),se("div",{className:`fab ${e?"open":""}`,style:{...v,zIndex:e?42:40},onMouseEnter:g?()=>r(!0):void 0,onClick:()=>r(!e),children:[k("div",{className:"glow"}),k(t.plus,{})]})]})}import{useEffect as Uo,useState as Yo}from"react";import{Fragment as gt,jsx as U,jsxs as le}from"react/jsx-runtime";var He=85,ht=2*Math.PI*He;function vt(){let{back:e}=m(),[r,a]=Yo(5);Uo(()=>{if(r<=0)return;let l=setTimeout(()=>a(d=>d-1),1e3);return()=>clearTimeout(l)},[r]);let n=ht*(1-r/5);return U("div",{className:"sos",children:le("div",{className:"sos-body",children:[U("div",{className:"sos-kicker",children:"Emergency SOS"}),U("div",{className:"sos-title",children:r>0?le(gt,{children:["Alerting your",U("br",{}),"safety circle"]}):le(gt,{children:["Safety circle",U("br",{}),"notified"]})}),le("div",{className:"sos-ring",children:[le("svg",{viewBox:"0 0 188 188",children:[U("circle",{className:"track",cx:"94",cy:"94",r:He}),U("circle",{className:"prog",cx:"94",cy:"94",r:He,style:{strokeDasharray:ht,strokeDashoffset:n,transition:"stroke-dashoffset 1s linear"}})]}),le("div",{className:"sos-num",children:[U("b",{children:Math.max(r,0)}),U("span",{children:r>0?"seconds":"sent"})]})]}),U("div",{className:"sos-note",children:"If you close or lock your phone the countdown keeps running. Your emergency contacts and HerWay will be sent your live location, audio and route."}),le("div",{className:"sos-actions",children:[le("button",{className:"sos-call",children:[U(t.phone,{}),"Call 112 now"]}),U("button",{className:"sos-dismiss",onClick:e,children:r>0?"I'm safe \u2014 cancel":"Close"})]})]})})}import{Fragment as $e,jsx as f,jsxs as V}from"react/jsx-runtime";function Xo(e){return e<60?`${e} min ago`:`${Math.round(e/60)} h ago`}function Ko(e){return e<1e3?`${e} m`:`${(e/1e3).toFixed(1)} km`}function qo({n:e}){return f("span",{className:"stars",children:[0,1,2,3,4].map(r=>f(t.starFill,{className:r<e?"":"off"},r))})}function Jo({r:e}){let{go:r,setSelectedReportId:a,setSelectedVenueId:n}=m(),l=e.kind==="review"?"safe":e.severity,d=e.kind==="review"?"Review":e.severity==="hi"?"High":e.severity==="md"?"Medium":"Low";function c(){if(e.kind==="review"){let g=Y.find(h=>h.name===e.title)??Y[0];n(g.id),r("read-review")}else a(e.id),r("alert-detail")}return V("div",{className:`rcard ${l}`,onClick:c,children:[f("div",{className:"ricon",children:e.kind==="review"?f(t.star,{}):e.severity==="md"?f(t.eye,{}):f(t.alert,{})}),V("div",{className:"rbody",children:[V("div",{className:"rtop",children:[f("div",{className:"rttl",children:e.title}),f("div",{className:`rtag ${l}`,children:d})]}),V("div",{className:"rmeta",children:[e.kind==="review"?V($e,{children:[f(qo,{n:e.stars??0})," \xB7 ",e.locationName]}):f($e,{children:e.locationName}),V("div",{className:"sub",children:[V("span",{children:[f(t.clock,{})," ",Xo(e.minutesAgo)]}),V("span",{children:[f(t.mapPin,{})," ",Ko(e.distanceMeters)]}),e.confirmations?V("span",{children:[f(t.users,{})," ",e.confirmations," confirmed"]}):null]})]})]})]})}function Qo(){let{go:e,setSelectedEventId:r}=m(),a=we[0];return V("div",{className:"verify-banner",onClick:()=>{r(a.id),e("confirm-event")},children:[f("div",{className:"vb-ic",children:f(t.shield,{})}),V("div",{className:"vb-main",children:[f("div",{className:"vb-ttl",children:"Can you help verify a report?"}),V("div",{className:"vb-sub",children:[a.title," \xB7 ",a.where," \xB7 ",a.distanceMeters," m away"]})]}),f(t.chevronRight,{})]})}function mt(){let{radius:e,setFiltersOpen:r}=m(),a=ae;return V("div",{className:"sheet",children:[V("div",{className:"sheet-scroll",children:[V("div",{className:"list-head",children:[f("div",{className:"kicker",children:"Near you"}),f("div",{className:"h-title",children:"Reports"}),V("div",{className:"h-loc",children:[f(t.mapPin,{})," Roeterseiland \xB7 Amsterdam \xB7 within ",e," km"]})]}),f("div",{style:{padding:"0 16px 6px"},children:f(Qo,{})}),f("div",{className:"cards",children:a.length?a.map(n=>f(Jo,{r:n},n.id)):f("div",{style:{padding:"40px 22px",color:"var(--ink-soft)",fontSize:13,fontWeight:600},children:"No reports match these filters."})})]}),f("button",{className:"filt-fab",onClick:()=>r(!0),children:f(t.filter,{})}),f(Zo,{})]})}function Zo(){let{filtersOpen:e,setFiltersOpen:r,sort:a,setSort:n,radius:l,setRadius:d,show:c,setShow:g}=m();if(!e)return null;let h=[{k:"closest",label:"Closest"},{k:"latest",label:"Latest"},{k:"risk",label:"Highest risk"}],w=[{k:"all",label:"All"},{k:"alerts",label:"Alerts"},{k:"reviews",label:"Reviews"}];return V($e,{children:[f("div",{className:"filt-scrim",onClick:()=>r(!1)}),V("div",{className:"filt-menu",children:[f("div",{className:"fm-sec",children:"Sort by"}),h.map(v=>V("div",{className:`fm-opt ${a===v.k?"on":""}`,onClick:()=>n(v.k),children:[v.label,a===v.k&&f("span",{className:"ck",children:f(t.check,{})})]},v.k)),f("div",{className:"fm-div"}),f("div",{className:"fm-sec",children:"Within"}),f("div",{className:"fm-pills",children:[1,2,5].map(v=>V("div",{className:`fm-pill ${l===v?"on":""}`,onClick:()=>d(v),children:[v," km"]},v))}),f("div",{className:"fm-div"}),f("div",{className:"fm-sec",children:"Show"}),w.map(v=>V("div",{className:`fm-opt ${c===v.k?"on":""}`,onClick:()=>g(v.k),children:[v.label,c===v.k&&f("span",{className:"ck",children:f(t.check,{})})]},v.k))]})]})}import{jsx as i,jsxs as y}from"react/jsx-runtime";function ft(){let{hand:e,setHand:r,toggles:a,toggle:n,reset:l,go:d,safeRadius:c,cycleRadius:g,sosTimer:h,cycleSosTimer:w,mapType:v,cycleMapType:I,contacts:R}=m();return y("div",{className:"pf-scroll",children:[y("div",{className:"pf-hero",children:[y("svg",{className:"flora",viewBox:"0 0 100 100",fill:"none",children:[y("g",{fill:"#EF8BA6",children:[i("ellipse",{cx:"50",cy:"22",rx:"9",ry:"18"}),i("ellipse",{cx:"50",cy:"78",rx:"9",ry:"18"}),i("ellipse",{cx:"22",cy:"50",rx:"18",ry:"9"}),i("ellipse",{cx:"78",cy:"50",rx:"18",ry:"9"}),i("ellipse",{cx:"30",cy:"30",rx:"9",ry:"16",transform:"rotate(-45 30 30)"}),i("ellipse",{cx:"70",cy:"30",rx:"9",ry:"16",transform:"rotate(45 70 30)"}),i("ellipse",{cx:"30",cy:"70",rx:"9",ry:"16",transform:"rotate(45 30 70)"}),i("ellipse",{cx:"70",cy:"70",rx:"9",ry:"16",transform:"rotate(-45 70 70)"})]}),i("circle",{cx:"50",cy:"50",r:"12",fill:"#FFFDF2"}),i("circle",{cx:"50",cy:"50",r:"5",fill:"#E98544"})]}),y("div",{className:"pf-id",children:[i("div",{className:"avatar",children:ge.initials}),y("div",{children:[i("div",{className:"pf-name",children:ge.name}),y("div",{className:"pf-badge",children:[i(t.shield,{}),"Verified"]})]})]}),y("div",{className:"pf-stats",children:[y("div",{className:"stat",children:[i("div",{className:"num",children:ge.stats.reports}),i("div",{className:"lbl",children:"Reports"})]}),y("div",{className:"stat",children:[i("div",{className:"num",children:ge.stats.reviews}),i("div",{className:"lbl",children:"Reviews"})]}),y("div",{className:"stat",children:[i("div",{className:"num",children:ge.stats.days}),i("div",{className:"lbl",children:"Days"})]})]})]}),i("div",{className:"grp-title",children:"Safety"}),y("div",{className:"grp",children:[y("div",{className:"row",onClick:()=>d("contacts"),children:[i("div",{className:"ic g1",children:i(t.users,{})}),i("div",{className:"lab",children:"Emergency contacts"}),i("div",{className:"val",children:R.length}),i("div",{className:"chev",children:i(t.chevronRight,{})})]}),y("div",{className:"row",onClick:g,children:[i("div",{className:"ic g3",children:i(t.mapPin,{})}),i("div",{className:"lab",children:"Safe radius"}),y("div",{className:"val",children:[c," m"]}),i("div",{className:"chev",children:i(t.chevronRight,{})})]}),y("div",{className:"row",children:[i("div",{className:"ic g2",children:i(t.mapPin,{})}),i("div",{className:"lab",children:"Share live location"}),i("div",{className:`sw-ios ${a.shareLocation?"on":""}`,onClick:()=>n("shareLocation"),children:i("div",{className:"knob"})})]})]}),i("div",{className:"grp-title",children:"Controls"}),y("div",{className:"grp",children:[y("div",{className:"row",children:[i("div",{className:"ic g3",children:i(t.hand,{})}),i("div",{className:"lab",children:"Dominant hand"}),y("div",{className:"hand-seg",children:[i("div",{className:e==="left"?"on":"",onClick:()=>r("left"),children:"Left"}),i("div",{className:e==="right"?"on":"",onClick:()=>r("right"),children:"Right"})]})]}),y("div",{className:"row",onClick:w,children:[i("div",{className:"ic g1",children:i(t.alert,{})}),i("div",{className:"lab",children:"SOS confirmation timer"}),y("div",{className:"val",children:[h," s"]}),i("div",{className:"chev",children:i(t.chevronRight,{})})]})]}),i("div",{className:"grp-title",children:"Notifications"}),y("div",{className:"grp",children:[y("div",{className:"row",children:[i("div",{className:"ic g1",children:i(t.bell,{})}),i("div",{className:"lab",children:"Nearby alerts"}),i("div",{className:`sw-ios ${a.nearbyAlerts?"on":""}`,onClick:()=>n("nearbyAlerts"),children:i("div",{className:"knob"})})]}),y("div",{className:"row",children:[i("div",{className:"ic g3",children:i(t.shield,{})}),i("div",{className:"lab",children:"Confirmations"}),i("div",{className:`sw-ios ${a.confirmations?"on":""}`,onClick:()=>n("confirmations"),children:i("div",{className:"knob"})})]}),y("div",{className:"row",children:[i("div",{className:"ic g4",children:i(t.clock,{})}),i("div",{className:"lab",children:"Quiet hours"}),i("div",{className:`sw-ios ${a.quietHours?"on":""}`,onClick:()=>n("quietHours"),children:i("div",{className:"knob"})})]})]}),i("div",{className:"grp-title",children:"Map & privacy"}),y("div",{className:"grp",children:[y("div",{className:"row",onClick:I,children:[i("div",{className:"ic g3",children:i(t.map,{})}),i("div",{className:"lab",children:"Default map type"}),i("div",{className:"val",children:v}),i("div",{className:"chev",children:i(t.chevronRight,{})})]}),y("div",{className:"row",children:[i("div",{className:"ic g5",children:i(t.lock,{})}),i("div",{className:"lab",children:"Post anonymously by default"}),i("div",{className:`sw-ios ${a.anonymousDefault?"on":""}`,onClick:()=>n("anonymousDefault"),children:i("div",{className:"knob"})})]}),y("div",{className:"row",onClick:()=>d("legal-privacy"),children:[i("div",{className:"ic g5",children:i(t.shield,{})}),i("div",{className:"lab",children:"Privacy policy"}),i("div",{className:"chev",children:i(t.chevronRight,{})})]}),y("div",{className:"row",onClick:()=>d("legal-terms"),children:[i("div",{className:"ic g5",children:i(t.lock,{})}),i("div",{className:"lab",children:"Terms & conditions"}),i("div",{className:"chev",children:i(t.chevronRight,{})})]})]}),i("div",{style:{padding:"20px 16px 30px"},children:i("button",{className:"btn-ghost",onClick:()=>l("ob-1"),children:"Replay intro"})})]})}import{jsx as P,jsxs as be}from"react/jsx-runtime";var er={eye:P(t.eye,{}),alert:P(t.alert,{}),users:P(t.users,{}),lock:P(t.lock,{}),star:P(t.star,{})};function ut(){let{back:e,go:r,draft:a,setDraft:n}=m();return be("div",{className:"flow",children:[be("div",{className:"flow-scroll",children:[be("div",{className:"tb",children:[P("div",{className:"tb-back",onClick:e,children:P(t.chevronLeft,{strokeWidth:2.4})}),P("div",{className:"tb-spacer"}),be("div",{className:"steps",children:[P("i",{className:"on"}),P("i",{}),P("i",{})]})]}),P("div",{className:"flow-title",children:"What's happening?"}),P("div",{className:"flow-sub",children:"Pick the closest type \u2014 you set how severe it is next."}),P("div",{className:"cat-grid",children:Ue.map(l=>{let d=a.category===l.label;return be("div",{className:`cat-tile ${d?"on":""}`,onClick:()=>n({category:l.label}),children:[P("div",{className:"ci",children:er[l.icon]}),P("div",{className:"ct",children:l.label}),P("div",{className:"tick",children:P(t.check,{strokeWidth:3})})]},l.key)})})]}),P("div",{className:"flow-foot",children:be("button",{className:"btn-primary",onClick:()=>r("alert-details"),children:["Next",P(t.arrowRight,{strokeWidth:2.4})]})})]})}import{jsx as u,jsxs as $}from"react/jsx-runtime";var tr=[{key:"lo",label:"Low"},{key:"md",label:"Medium"},{key:"hi",label:"High"}];function bt(){let{back:e,go:r,draft:a,setDraft:n}=m();return $("div",{className:"flow",children:[$("div",{className:"flow-scroll",children:[$("div",{className:"tb",children:[u("div",{className:"tb-back",onClick:e,children:u(t.chevronLeft,{strokeWidth:2.4})}),u("div",{className:"tb-spacer"}),$("div",{className:"steps",children:[u("i",{}),u("i",{className:"on"}),u("i",{})]})]}),u("div",{className:"flow-title",children:"Add the details"}),u("div",{className:"flow-sub",children:"Near Sarphatistraat"}),$("div",{className:"field",children:[u("span",{className:"field-label",children:"How urgent?"}),u("div",{className:"sev-pick",children:tr.map(d=>u("div",{className:`sev ${d.key} ${a.severity===d.key?"on":""}`,onClick:()=>n({severity:d.key}),children:d.label},d.key))})]}),$("div",{className:"field",children:[u("span",{className:"field-label",children:"Location"}),u("div",{className:"map-mini",style:{position:"relative"},children:u(_,{view:"mini-user",variant:"mini",children:u(K,{lng:4.9192,lat:52.3641,severity:"hi",glyph:u(t.alert,{strokeWidth:2.4})})})}),$("div",{className:"loc-row",style:{marginTop:"10px"},children:[u("div",{className:"ld to"}),u("div",{className:"lt",children:"Sarphatistraat 104, Amsterdam"}),u("div",{style:{fontSize:"12.5px",fontWeight:700,color:"var(--green)"},children:"Edit"})]})]}),$("div",{className:"field",children:[$("span",{className:"field-label",children:["What did you see?"," ",u("span",{style:{fontWeight:600,textTransform:"none",letterSpacing:0,color:"rgba(34,48,39,.32)"},children:"\xB7 optional"})]}),u("textarea",{className:"textarea",placeholder:"Tall man in dark jacket, has crossed the street twice behind me\u2026"})]}),u("div",{className:"field",children:$("button",{className:"photo-add",children:[$("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[u("rect",{x:"3",y:"5",width:"18",height:"15",rx:"3"}),u("circle",{cx:"12",cy:"12.5",r:"3"}),u("path",{d:"M8 5l1.5-2h5L16 5"})]}),"Add a photo"]})}),u("div",{className:"grp",style:{margin:0},children:$("div",{className:"row",children:[u("div",{className:"ic g5",children:u(t.lock,{})}),u("div",{className:"lab",children:"Post anonymously"}),u("div",{className:`sw-ios ${a.anonymous?"on":""}`,onClick:()=>n({anonymous:!a.anonymous}),children:u("div",{className:"knob"})})]})})]}),u("div",{className:"flow-foot",children:$("button",{className:"btn-primary",onClick:()=>r("alert-sent"),children:["Continue",u(t.arrowRight,{strokeWidth:2.4})]})})]})}import{jsx as D,jsxs as de}from"react/jsx-runtime";function xt(){let{reset:e}=m();return de("div",{className:"flow",children:[D("div",{className:"tb",style:{position:"absolute",top:"64px",left:0,right:0,justifyContent:"center",zIndex:5},children:de("div",{className:"steps",children:[D("i",{className:"on"}),D("i",{className:"on"}),D("i",{className:"on"})]})}),de("div",{className:"sent",children:[D("div",{className:"sent-check",children:D(t.check,{strokeWidth:2.6})}),D("div",{className:"sent-title",children:"Report shared"}),D("div",{className:"sent-sub",children:"Women within 2\xA0km have been notified. Verified neighbours can confirm to raise its priority."}),de("div",{className:"sent-card",children:[D("div",{className:"ricon",style:{background:"linear-gradient(155deg,#4f9e79,var(--green-deep))",width:"38px",height:"38px",borderRadius:"12px"},children:de("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",style:{width:"19px",height:"19px",color:"#fff"},children:[D("circle",{cx:"12",cy:"12",r:"3.2"}),D("path",{d:"M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7-10-7-10-7z"})]})}),de("div",{style:{flex:1,minWidth:0},children:[D("div",{style:{fontSize:"13.5px",fontWeight:700,color:"var(--ink)"},children:"Shared with women nearby"}),D("div",{style:{fontSize:"11.5px",fontWeight:600,color:"var(--ink-soft)",marginTop:"2px"},children:"Sarphatistraat \xB7 just now"})]})]})]}),de("div",{className:"flow-foot",children:[D("button",{className:"btn-primary",onClick:()=>e("home"),children:"Back to map"}),de("button",{className:"btn-ghost danger",onClick:()=>{window.location.href="tel:112"},children:[D(t.phone,{}),"Report to police \u2014 call 112"]})]})]})}import{jsx as b,jsxs as J}from"react/jsx-runtime";function yt(){let{back:e,go:r,destination:a,setDestination:n}=m(),l=Ae.filter(h=>h.kind==="saved"),d=Ae.filter(h=>h.kind==="recent");function c(h){n(h.name),r("route-overview")}function g({p:h,tone:w}){return J("div",{className:"row",onClick:()=>c(h),children:[b("div",{className:`ic ${w}`,children:h.kind==="saved"&&h.name==="Home"?J("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[b("path",{d:"M3 11l9-8 9 8"}),b("path",{d:"M5 10v10h14V10"})]}):h.kind==="saved"?J("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[b("rect",{x:"2",y:"7",width:"20",height:"14",rx:"2"}),b("path",{d:"M8 7V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]}):J("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[b("circle",{cx:"12",cy:"12",r:"9"}),b("path",{d:"M12 7v5l3 2"})]})}),b("div",{className:"lab",children:h.name}),b("div",{className:"val",children:h.detail.replace(" away","")}),b("div",{className:"chev",children:b(t.chevronRight,{})})]})}return J("div",{className:"flow",children:[J("div",{className:"flow-scroll",children:[b("div",{className:"tb",children:b("div",{className:"tb-back",onClick:e,children:b("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:b("polyline",{points:"15 18 9 12 15 6"})})})}),b("div",{className:"flow-title",children:"Plan a safe route"}),b("div",{className:"flow-sub",children:"We'll steer you around recent alerts and dark stretches."}),J("div",{className:"loc-stack",children:[J("div",{className:"loc-row",children:[b("div",{className:"ld from"}),b("div",{className:"lt",children:"Current location"}),b(t.locate,{style:{width:17,height:17,color:"var(--green-soft)"}})]}),J("div",{className:"loc-row",children:[b("div",{className:"ld to"}),b("input",{type:"text",placeholder:"Where to?",value:a,onChange:h=>n(h.target.value)}),b(t.search,{style:{width:17,height:17,color:"var(--ink-soft)"},strokeWidth:2.2})]})]}),b("div",{className:"grp-title",style:{padding:"4px 6px 9px"},children:"Saved"}),b("div",{className:"grp",style:{margin:0},children:l.map((h,w)=>b(g,{p:h,tone:w===0?"g3":"g2"},h.name))}),b("div",{className:"grp-title",style:{padding:"20px 6px 9px"},children:"Recent"}),b("div",{className:"grp",style:{margin:0},children:d.map((h,w)=>b(g,{p:h,tone:w===0?"g4":"g5"},h.name))})]}),b("div",{className:"flow-foot",children:J("button",{className:"btn-primary",onClick:()=>r("route-overview"),children:["Find route",b(t.arrowRight,{})]})})]})}import{Fragment as or,jsx as T,jsxs as Q}from"react/jsx-runtime";function wt(){let{back:e,go:r,routeChoice:a,setRouteChoice:n}=m(),l=a==="safer";return Q(or,{children:[Q(_,{view:"route",variant:"full",children:[T(Ne,{points:Ke,color:"#5C6B60",width:l?4:6,dash:l?"2 4":void 0,opacity:l?.45:.9}),T(Ne,{points:ve,color:"#255942",width:l?7:4,opacity:l?1:.45}),T(ue,{lng:Ge[0],lat:Ge[1],className:"map-dot"}),T(K,{lng:Ie[0],lat:Ie[1],severity:"safe",glyph:T(t.check,{})}),T(K,{lng:Be[0],lat:Be[1],severity:"hi",glyph:T(t.alert,{})})]}),Q("div",{className:"maptitle glass",children:[T("div",{className:"dotpulse",style:{background:"var(--green-soft)",boxShadow:"0 0 0 4px rgba(60,122,94,.18)"}}),Q("div",{className:"lab",children:["To Caf\xE9 Morgenzon",T("small",{children:"via Plantage Kerklaan"})]})]}),T("div",{className:"tb-back glass",style:{position:"absolute",top:58,left:16,zIndex:45,background:"rgba(255,253,242,.7)"},onClick:e,children:T(t.chevronLeft,{})}),Q("div",{className:"nav-sheet",children:[Ye.map(d=>Q("div",{className:`route-opt${a===d.key?" on":""}`,onClick:()=>n(d.key),children:[T("div",{className:"rt-ic",children:d.key==="safer"?T(t.shield,{}):T(t.route,{})}),Q("div",{className:"rt-main",children:[Q("div",{className:"rt-ttl",children:[d.title,d.badge?T("span",{className:"rt-badge",children:d.badge}):null]}),T("div",{className:"rt-sub",children:d.detail})]}),Q("div",{className:"rt-time",children:[d.time.replace(" min",""),T("br",{}),T("span",{style:{fontSize:10,fontWeight:700,color:"var(--ink-soft)"},children:"min"})]})]},d.key)),Q("button",{className:"btn-primary",onClick:()=>r("navigation"),children:["Start route",T(t.arrowRight,{})]})]})]})}import{Fragment as rr,jsx as Z,jsxs as ee}from"react/jsx-runtime";function kt(){let{reset:e}=m();return ee(rr,{children:[ee(_,{view:"nav",variant:"full",children:[Z(Ne,{points:ve,color:"#255942",width:7}),Z(ue,{lng:ve[1][0],lat:ve[1][1],className:"user-blip"})]}),ee("div",{className:"nav-banner",children:[Z("div",{className:"nb-man",children:Z(t.cornerUpLeft,{strokeWidth:2.4})}),ee("div",{children:[Z("div",{className:"nb-dist",children:"200 m"}),Z("div",{className:"nb-street",children:"Turn left onto Plantage Kerklaan"})]})]}),ee("div",{className:"nav-sheet",children:[ee("div",{className:"ns-row",children:[ee("div",{children:[Z("div",{className:"ns-eta",children:"12 min"}),Z("div",{className:"ns-meta",children:"0.9 km \xB7 arrive 9:53"})]}),ee("div",{className:"ns-safe",children:[Z(t.shield,{strokeWidth:2.2}),"Safer route"]})]}),ee("button",{className:"btn-ghost danger",onClick:()=>e("home"),children:[Z(t.x,{}),"End navigation"]})]})]})}import{useState as Nt}from"react";import{jsx as L,jsxs as te}from"react/jsx-runtime";function St(){let{back:e,go:r}=m(),[a,n]=Nt(4),[l,d]=Nt(["Friendly staff"]);function c(g){d(h=>h.includes(g)?h.filter(w=>w!==g):[...h,g])}return te("div",{className:"flow",children:[te("div",{className:"flow-scroll",children:[L("div",{className:"tb",children:L("div",{className:"tb-back",onClick:e,children:L(t.chevronLeft,{strokeWidth:2.4})})}),L("div",{className:"flow-title",children:"Rate this place"}),L("div",{className:"flow-sub",children:"Your take helps other women feel safe nearby."}),te("div",{className:"field",children:[L("span",{className:"field-label",children:"Place"}),te("div",{className:"searchbar",children:[L(t.mapPin,{strokeWidth:2.2}),L("input",{type:"text",defaultValue:"Caf\xE9 Morgenzon \xB7 Plantage"})]})]}),te("div",{className:"field",children:[L("span",{className:"field-label",children:"Your review"}),L("div",{className:"rate",children:[0,1,2,3,4].map(g=>L(t.starFill,{className:g<a?"on":void 0,onClick:()=>n(g+1)},g))})]}),te("div",{className:"field",children:[L("span",{className:"field-label",children:"What stood out"}),L("div",{className:"filters",style:{padding:0},children:Xe.map(g=>{let h=l.includes(g);return te("div",{className:`chip ${h?"on":""}`,onClick:()=>c(g),children:[h&&L(t.check,{strokeWidth:2.4}),g]},g)})})]}),te("div",{className:"field",children:[te("span",{className:"field-label",children:["Add a note"," ",L("span",{style:{fontWeight:600,textTransform:"none",letterSpacing:0,color:"rgba(34,48,39,.32)"},children:"\xB7 optional"})]}),L("input",{className:"input",type:"text",placeholder:"Staff walked me to a taxi \u2014 felt safe."})]})]}),L("div",{className:"flow-foot",children:L("button",{className:"btn-primary",onClick:()=>r("review-sent"),children:"Post review"})})]})}import{jsx as ce,jsxs as Se}from"react/jsx-runtime";function Ct(){let{reset:e}=m();return Se("div",{className:"flow",children:[Se("div",{className:"sent",children:[ce("div",{className:"sent-check",children:ce(t.check,{strokeWidth:2.6})}),ce("div",{className:"sent-title",children:"Review posted"}),ce("div",{className:"sent-sub",children:"Thanks \u2014 your take helps other women decide where they feel safe nearby."}),Se("div",{className:"vchips",children:[Se("span",{className:"vchip",children:[ce(t.check,{strokeWidth:2.6}),"Added to map"]}),Se("span",{className:"vchip",children:[ce(t.check,{strokeWidth:2.6}),"Shared with the circle"]})]})]}),ce("div",{className:"flow-foot",children:ce("button",{className:"btn-primary",onClick:()=>e("home"),children:"Done"})})]})}import{useState as Rt}from"react";async function Me(e){let r={title:e.title,text:e.text,url:e.url??(typeof window<"u"?window.location.href:void 0)};try{if(typeof navigator<"u"&&navigator.share){await navigator.share(r);return}if(typeof navigator<"u"&&navigator.clipboard){await navigator.clipboard.writeText(`${e.title}
2
- ${e.text}`),alert("Copied to clipboard \u2014 sharing isn't supported on this browser.");return}}catch{}}import{Fragment as zt,jsx as A,jsxs as F}from"react/jsx-runtime";var ar={hi:"High risk",md:"Medium risk",lo:"Low risk"};function Et(){let{back:e,selectedReportId:r}=m(),a=ae.find(w=>w.id===r)??ae[0],n=a.severity??"md",[l,d]=Rt(!1),[c,g]=Rt(a.confirmations??0);function h(){l||(d(!0),g(w=>w+1))}return F("div",{className:"flow",children:[F("div",{className:"flow-scroll",children:[F("div",{className:"tb",children:[A("div",{className:"tb-back",onClick:e,children:A(t.chevronLeft,{strokeWidth:2.4})}),A("div",{className:"tb-spacer"}),A("div",{className:`rtag ${n}`,style:{fontSize:10},children:ar[n]})]}),A("div",{className:"map-mini",style:{marginTop:16,position:"relative"},children:F(_,{view:at[a.id]??"mini-r1",variant:"mini",children:[A("div",{className:"heat",style:{background:"radial-gradient(circle 70px at 50% 50%, rgba(212,89,52,.55), transparent 70%)"}}),A(K,{lng:a.coord[0],lat:a.coord[1],severity:n,glyph:A(t.alert,{strokeWidth:2.4})})]})}),A("div",{className:"flow-title",style:{marginTop:18},children:a.title}),F("div",{className:"h-loc",style:{marginTop:8},children:[A(t.mapPin,{}),a.locationName]}),F("div",{className:"rmeta",style:{marginTop:14,fontSize:13},children:[a.description,F("div",{className:"sub",style:{marginTop:12,gap:16},children:[F("span",{children:[A(t.clock,{strokeWidth:2.2}),a.minutesAgo," min ago"]}),F("span",{children:[A(t.mapPin,{strokeWidth:2.2}),a.distanceMeters," m away"]}),F("span",{children:[A(t.users,{strokeWidth:2.2}),c," confirmed"]})]})]})]}),F("div",{className:"flow-foot",children:[A("button",{className:"btn-primary",onClick:h,children:l?F(zt,{children:[A(t.check,{strokeWidth:2.4}),"Confirmed"]}):F(zt,{children:[A(t.users,{strokeWidth:2.2}),"I saw this too"]})}),F("button",{className:"btn-ghost",onClick:()=>Me({title:`Her Way \u2014 ${a.title}`,text:`${a.title} near ${a.locationName} (${a.distanceMeters} m away, ${a.minutesAgo} min ago). Stay safe.`}),children:[A(t.share,{}),"Share with a contact"]})]})]})}import{Fragment as Mt,jsx as o,jsxs as p}from"react/jsx-runtime";function Vt(){let{screen:e,go:r,reset:a,authMode:n,setAuthMode:l}=m(),d=h=>{h.preventDefault(),l("login"),e!=="ob-3"&&r("ob-3")},c=h=>{h.preventDefault(),l("signup")},g=(h,w)=>{h.preventDefault(),r(w)};return e==="ob-1"?o("div",{className:"ob",children:p("div",{className:"ob-scroll",style:{display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center",paddingTop:80,gap:28},children:[o("div",{className:"ob-wordmark",children:"HER\xA0WAY"}),p("div",{className:"ob-sub",children:["Safety, the way women share it.",o("br",{}),"A verified women-only circle in Amsterdam."]}),p("div",{className:"ob-points",children:[p("div",{className:"ob-point",children:[o("div",{className:"pi",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[o("path",{d:"M12 2 4 5v6c0 5 3.5 8.5 8 11 4.5-2.5 8-6 8-11V5z"}),o("path",{d:"M9 12l2 2 4-4"})]})}),"Live safety map & real-time alerts"]}),p("div",{className:"ob-point",children:[o("div",{className:"pi",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[o("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),o("circle",{cx:"12",cy:"7",r:"4"})]})}),"Verified women only \u2014 ID checked"]})]}),p("button",{className:"btn-primary",onClick:()=>{l("signup"),r("ob-2")},children:["Get started",p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:[o("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),o("polyline",{points:"13 6 19 12 13 18"})]})]}),p("div",{className:"ob-fine",children:["Already a member? ",o("a",{href:"#",onClick:d,children:"Log in"})]})]})}):e==="ob-2"?p("div",{className:"ob",children:[p("div",{className:"ob-scroll",children:[p("div",{className:"tb",children:[o("div",{className:"tb-back",onClick:()=>a("ob-1"),children:o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:o("polyline",{points:"15 18 9 12 15 6"})})}),o("div",{className:"tb-spacer"}),p("div",{className:"steps",children:[o("i",{className:"on"}),o("i",{}),o("i",{})]})]}),o("div",{className:"ob-title",children:"Tell us about you"}),o("div",{className:"ob-sub",style:{marginBottom:20},children:"Just the basics \u2014 it shapes your map and alerts."}),p("div",{className:"field",children:[o("span",{className:"field-label",children:"First name"}),o("input",{className:"input",type:"text",defaultValue:"Jane"})]}),p("div",{className:"field",children:[o("span",{className:"field-label",children:"City"}),o("input",{className:"input",type:"text",defaultValue:"Amsterdam"})]}),o("div",{className:"grp",style:{margin:"6px 0 0"},children:p("div",{className:"row",onClick:()=>r("contacts"),children:[o("div",{className:"ic g1",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[o("path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"}),o("circle",{cx:"9",cy:"7",r:"4"}),o("path",{d:"M19 8v6M22 11h-6"})]})}),o("div",{className:"lab",children:"Add an emergency contact"}),o("div",{className:"val",children:"Optional"}),o("div",{className:"chev",children:o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:o("polyline",{points:"9 18 15 12 9 6"})})})]})})]}),o("div",{className:"flow-foot",children:p("button",{className:"btn-primary",onClick:()=>r("ob-3"),children:["Continue",p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:[o("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),o("polyline",{points:"13 6 19 12 13 18"})]})]})})]}):e==="ob-3"?o("div",{className:"ob",children:p("div",{className:"ob-scroll",children:[p("div",{className:"tb",children:[o("div",{className:"tb-back",onClick:()=>a(n==="login"?"ob-1":"ob-2"),children:o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:o("polyline",{points:"15 18 9 12 15 6"})})}),o("div",{className:"tb-spacer"}),n==="login"?null:p("div",{className:"steps",children:[o("i",{}),o("i",{className:"on"}),o("i",{})]})]}),o("div",{className:"ob-title",children:n==="login"?"Welcome back":"Create your account"}),o("div",{className:"ob-sub",style:{marginBottom:22},children:n==="login"?"Sign in to pick up where you left off.":"One tap \u2014 no passwords to remember or leak."}),p("div",{className:"auth-list",children:[p("button",{className:"auth-btn dark",onClick:()=>r(n==="login"?"ob-5":"ob-4"),children:[o("span",{className:"ai",children:o("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:o("path",{d:"M16.4 12.8c0-2.1 1.7-3.1 1.8-3.2-1-1.4-2.5-1.6-3-1.6-1.3-.1-2.5.8-3.1.8-.6 0-1.6-.7-2.7-.7-1.4 0-2.6.8-3.3 2-1.4 2.5-.4 6.1 1 8.1.7 1 1.5 2.1 2.5 2 1-.04 1.4-.65 2.6-.65 1.2 0 1.5.65 2.6.63 1.1-.02 1.8-1 2.5-2 .8-1.1 1.1-2.2 1.1-2.3-.02-.01-2.1-.81-2.1-3.2zM14.5 6.3c.6-.7 1-1.6.9-2.6-.85.04-1.9.57-2.5 1.27-.5.6-1 1.6-.88 2.5.95.08 1.9-.48 2.48-1.17z"})})}),o("span",{className:"albl",children:"Continue with Apple"}),o("span",{className:"asp"})]}),p("button",{className:"auth-btn",onClick:()=>r(n==="login"?"ob-5":"ob-4"),children:[o("span",{className:"ai",children:p("svg",{viewBox:"0 0 48 48",children:[o("path",{fill:"#FFC107",d:"M43.6 20.5H42V20H24v8h11.3C33.7 32.9 29.3 36 24 36c-6.6 0-12-5.4-12-12s5.4-12 12-12c3.1 0 5.9 1.2 8 3.1l5.7-5.7C34 6.1 29.3 4 24 4 12.9 4 4 12.9 4 24s8.9 20 20 20 20-8.9 20-20c0-1.3-.1-2.3-.4-3.5z"}),o("path",{fill:"#FF3D00",d:"M6.3 14.7l6.6 4.8C14.7 16 19 12 24 12c3.1 0 5.9 1.2 8 3.1l5.7-5.7C34 6.1 29.3 4 24 4 16.3 4 9.7 8.3 6.3 14.7z"}),o("path",{fill:"#4CAF50",d:"M24 44c5.2 0 9.9-2 13.4-5.2l-6.2-5.2C29.2 35 26.7 36 24 36c-5.3 0-9.7-3.1-11.3-7.6l-6.5 5C9.6 39.6 16.2 44 24 44z"}),o("path",{fill:"#1976D2",d:"M43.6 20.5H42V20H24v8h11.3c-.8 2.2-2.2 4.1-4.1 5.6l6.2 5.2C39.9 35.9 44 30.5 44 24c0-1.3-.1-2.3-.4-3.5z"})]})}),o("span",{className:"albl",children:"Continue with Google"}),o("span",{className:"asp"})]}),p("button",{className:"auth-btn",onClick:()=>r(n==="login"?"ob-5":"ob-4"),children:[o("span",{className:"ai",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"var(--green)",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[o("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),o("path",{d:"m3 7 9 6 9-6"})]})}),o("span",{className:"albl",children:"Email me a magic link"}),o("span",{className:"asp"})]}),p("button",{className:"auth-btn",onClick:()=>r(n==="login"?"ob-5":"ob-4"),children:[o("span",{className:"ai",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"var(--green)",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[o("path",{d:"M12 11c1.5 0 2-1.3 2-3a4 4 0 1 0-8 0c0 4-2 5-2 5"}),o("path",{d:"M14 11a6 6 0 0 1 6 6"}),o("path",{d:"M17 17v3M20.5 17.5v2"})]})}),o("span",{className:"albl",children:"Use a passkey"}),o("span",{className:"asp"})]})]}),o("div",{className:"ob-or",children:"or"}),p("div",{className:"ob-fine",children:["By continuing you agree to our ",o("a",{href:"#",onClick:h=>g(h,"legal-terms"),children:"Terms"})," &"," ",o("a",{href:"#",onClick:h=>g(h,"legal-privacy"),children:"Privacy\xA0Policy"}),"."," ",n==="login"?p(Mt,{children:["New here? ",o("a",{href:"#",onClick:c,children:"Create an account"})]}):p(Mt,{children:["Already a member? ",o("a",{href:"#",onClick:d,children:"Log in"})]})]})]})}):e==="ob-4"?p("div",{className:"ob",children:[p("div",{className:"ob-scroll",children:[p("div",{className:"tb",children:[o("div",{className:"tb-back",onClick:()=>a("ob-3"),children:o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:o("polyline",{points:"15 18 9 12 15 6"})})}),o("div",{className:"tb-spacer"}),p("div",{className:"steps",children:[o("i",{}),o("i",{}),o("i",{className:"on"})]})]}),p("div",{className:"eidas-badge",style:{margin:"14px 0 12px"},children:[p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.2,strokeLinecap:"round",strokeLinejoin:"round",children:[o("rect",{x:"4",y:"11",width:"16",height:"10",rx:"2"}),o("path",{d:"M8 11V7a4 4 0 0 1 8 0v4"})]}),"Verified by eID \xB7 eIDAS"]}),o("div",{className:"ob-title",children:"Verify you're a woman"}),o("div",{className:"ob-sub",style:{marginBottom:18},children:"A one-time check keeps HerWay women-only. Takes about a minute."}),p("div",{className:"scan-frame",children:[p("div",{className:"scan-card",children:[o("div",{className:"photo"}),p("div",{className:"lines",children:[o("i",{}),o("i",{}),o("i",{}),o("i",{})]})]}),p("div",{className:"scan-corners",children:[o("span",{className:"tl"}),o("span",{className:"tr"}),o("span",{className:"bl"}),o("span",{className:"br"})]}),o("div",{className:"scan-beam"})]}),p("div",{style:{display:"flex",alignItems:"center",gap:14,marginTop:16},children:[o("div",{className:"liveness",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round",children:[o("circle",{cx:"12",cy:"9",r:"4"}),o("path",{d:"M5.5 20a7 7 0 0 1 13 0"})]})}),p("div",{children:[o("div",{style:{fontSize:14,fontWeight:700,color:"var(--ink)"},children:"Then a quick liveness check"}),o("div",{style:{fontSize:12,fontWeight:600,color:"var(--ink-soft)",marginTop:3,lineHeight:1.4},children:"Blink when prompted \u2014 confirms the ID is really yours."})]})]}),p("div",{className:"verify-steps",style:{marginTop:18},children:[p("div",{className:"verify-step",children:[o("div",{className:"vs-num active",children:"1"}),p("div",{className:"vs-main",children:[o("div",{className:"vs-ttl",children:"Scan your ID document"}),o("div",{className:"vs-sub",children:"Passport, ID card or driving licence"})]})]}),p("div",{className:"verify-step",children:[o("div",{className:"vs-num idle",children:"2"}),p("div",{className:"vs-main",children:[o("div",{className:"vs-ttl",children:"Liveness selfie"}),o("div",{className:"vs-sub",children:"Matches your face to the document"})]})]}),p("div",{className:"verify-step",children:[o("div",{className:"vs-num idle",children:o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.6,strokeLinecap:"round",strokeLinejoin:"round",children:o("polyline",{points:"20 6 9 17 4 12"})})}),p("div",{className:"vs-main",children:[o("div",{className:"vs-ttl",children:"Eligibility confirmed"}),o("div",{className:"vs-sub",children:"Reads gender & age, then unlocks access"})]})]})]}),p("div",{className:"privacy-note",style:{marginTop:16},children:[p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[o("rect",{x:"4",y:"11",width:"16",height:"10",rx:"2"}),o("path",{d:"M8 11V7a4 4 0 0 1 8 0v4"})]}),p("span",{children:["Encrypted end-to-end by our eID partner. HerWay only receives ",o("b",{children:"gender and age"})," \u2014 your document is never seen or stored by us."]})]})]}),o("div",{className:"flow-foot",children:p("button",{className:"btn-primary",onClick:()=>r("ob-5"),children:[p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.2,strokeLinecap:"round",strokeLinejoin:"round",children:[o("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),o("path",{d:"M3 10h18"}),o("path",{d:"M7 15h4"})]}),"Scan my ID"]})})]}):p("div",{className:"ob",children:[p("div",{className:"ob-scroll",style:{display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center",paddingTop:74},children:[o("div",{className:"sent-check",style:{width:88,height:88},children:o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.6,strokeLinecap:"round",strokeLinejoin:"round",children:o("polyline",{points:"20 6 9 17 4 12"})})}),o("div",{className:"ob-title",style:{marginTop:22},children:n==="login"?"Welcome back, Jane":"You're in, Jane"}),o("div",{className:"ob-sub",style:{maxWidth:250},children:n==="login"?"Signed in and ready. Your women-only circle is right where you left it.":"Welcome to the women-only circle. You're verified and ready to look out for each other."}),p("div",{className:"vchips",children:[p("span",{className:"vchip",children:[o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.6,strokeLinecap:"round",strokeLinejoin:"round",children:o("polyline",{points:"20 6 9 17 4 12"})}),"ID verified"]}),p("span",{className:"vchip",children:[o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.6,strokeLinecap:"round",strokeLinejoin:"round",children:o("polyline",{points:"20 6 9 17 4 12"})}),"Liveness passed"]}),p("span",{className:"vchip",children:[o("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.6,strokeLinecap:"round",strokeLinejoin:"round",children:o("polyline",{points:"20 6 9 17 4 12"})}),"Women-only"]})]})]}),o("div",{className:"flow-foot",children:p("button",{className:"btn-primary",onClick:()=>a("home"),children:["Enter HerWay",p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:[o("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),o("polyline",{points:"13 6 19 12 13 18"})]})]})})]})}import{jsx as pe,jsxs as je}from"react/jsx-runtime";var nr={title:"Terms & Conditions",updated:"Last updated June 2026",body:[["1. Using Her Way","By making an account and using Her Way, you agree to these terms. Her Way is a community app that helps women feel safer when they are out in the city. Please use it in a responsible way."],["2. Who can use it","Her Way is only for women aged 18 and over. You verify this once when you sign up. Please do not share your account with anyone else."],["3. Being respectful","Only post reports and reviews that are honest and true. Do not use the app to harass, scare or bully other people. We can remove accounts that break these rules."],["4. Safety","Her Way is not a replacement for the police. If you are in danger, always call 112 first and then use the app if you can."],["5. Changes","We may update these terms as the app grows. If we make big changes, we will let you know inside the app."]]},ir={title:"Privacy Policy",updated:"Last updated June 2026",body:[["1. Your information","We care about your privacy. We only ask for the information we need to make the app work, like your first name and your general location."],["2. Location","We use your location to show you reports and safer routes near you. You can turn location off in your settings whenever you want."],["3. Verification","When you sign up we check that you are a woman over 18 through a trusted ID partner. We do not keep a copy of your ID document."],["4. Sharing","We will never sell your data. Your emergency contacts and reports are only shared when you choose to share them."],["5. Your choices","You can edit or delete your account and your data at any time. If you have any questions, you can contact us in the app."]]};function Pt(){let{back:e,screen:r}=m(),a=r==="legal-terms"?nr:ir;return pe("div",{className:"flow",children:je("div",{className:"flow-scroll",children:[je("div",{className:"tb",children:[pe("div",{className:"tb-back",onClick:e,children:pe(t.chevronLeft,{})}),pe("div",{className:"tb-spacer"})]}),pe("div",{className:"flow-title",children:a.title}),pe("div",{className:"flow-sub",children:a.updated}),a.body.map(([n,l])=>je("div",{style:{marginBottom:18},children:[pe("div",{style:{fontFamily:"var(--serif)",fontWeight:600,fontSize:16,color:"var(--green)",marginBottom:5},children:n}),pe("div",{style:{fontSize:13,lineHeight:1.6,color:"var(--ink-soft)",fontWeight:500},children:l})]},n))]})})}import{useState as Ve}from"react";import{jsx as W,jsxs as oe}from"react/jsx-runtime";function Tt(){let{back:e}=m(),[r,a]=Ve(""),[n,l]=Ve(""),[d,c]=Ve(!1),[g,h]=Ve({});function w(){!r.trim()||!n.trim()||(c(!0),a(""),l(""))}return oe("div",{className:"flow",children:[oe("div",{className:"flow-scroll",children:[oe("div",{className:"tb",children:[W("div",{className:"tb-back",onClick:e,children:W(t.chevronLeft,{})}),W("div",{className:"tb-spacer"})]}),W("div",{className:"flow-title",children:"Emergency contacts"}),W("div",{className:"flow-sub",children:"People alerted the moment you fire an SOS. Add as many as you trust."}),W("div",{className:"grp",style:{margin:"0 0 22px"},children:Re.map(v=>{let I=g[v.id];return oe("div",{className:"row",style:I?{opacity:.5}:void 0,children:[W("div",{className:"ic g1",children:W(t.person,{})}),oe("div",{className:"lab",style:I?{textDecoration:"line-through"}:void 0,children:[v.name,W("div",{style:{fontSize:12,fontWeight:600,color:"var(--ink-soft)"},children:I?"Removed":v.phone})]}),I?W("div",{className:"val",style:{color:"var(--ink-soft)"},children:"Removed"}):W("div",{className:"chev",onClick:()=>h(R=>({...R,[v.id]:!0})),style:{cursor:"pointer"},children:W(t.x,{})})]},v.id)})}),d&&oe("div",{className:"privacy-note",style:{marginBottom:18,color:"var(--green)"},children:[W(t.check,{strokeWidth:2.4}),"Contact added \u2014 they'll be alerted when you fire an SOS."]}),oe("div",{className:"field",children:[W("label",{className:"field-label",children:"Name"}),W("input",{className:"input",value:r,onChange:v=>a(v.target.value),placeholder:"e.g. Mara"})]}),oe("div",{className:"field",children:[W("label",{className:"field-label",children:"Phone"}),W("input",{className:"input",value:n,onChange:v=>l(v.target.value),placeholder:"+31 6 \u2026",inputMode:"tel"})]})]}),W("div",{className:"flow-foot",children:oe("button",{className:"btn-primary",onClick:w,children:[W(t.plus,{}),"Add contact"]})})]})}import{jsx as j,jsxs as re}from"react/jsx-runtime";function sr({n:e}){return j("span",{className:"stars",children:[0,1,2,3,4].map(r=>j(t.starFill,{className:r<e?"":"off"},r))})}var lr={calm:{cls:"rtag safe",label:"Calm now"},busy:{cls:"rtag md",label:"Busy"},caution:{cls:"rtag hi",label:"Caution"}};function dr({v:e}){let{go:r,setSelectedVenueId:a}=m(),n=lr[e.status];function l(){a(e.id),r("read-review")}return re("div",{className:"rcard",onClick:l,children:[j("div",{className:"ricon",children:j(t.mapPin,{})}),re("div",{className:"rbody",children:[re("div",{className:"rtop",children:[j("div",{className:"rttl",children:e.name}),j("div",{className:n.cls,children:n.label})]}),re("div",{className:"rmeta",children:[e.type," \xB7 ",e.area,re("div",{className:"sub",children:[re("span",{children:[j(sr,{n:e.stars})," ",e.reviews," reviews"]}),re("span",{children:[j(t.clock,{})," ",e.vibe]})]})]})]})]})}function Wt(){return j("div",{className:"sheet",children:re("div",{className:"sheet-scroll",style:{paddingTop:124},children:[re("div",{className:"list-head",children:[j("div",{className:"kicker",children:"Discover"}),j("div",{className:"h-title",children:"Places near you"})]}),j("div",{className:"cards",children:Y.map(e=>j(dr,{v:e},e.id))})]})})}import{jsx as z,jsxs as G}from"react/jsx-runtime";var cr={calm:{cls:"rtag safe",label:"Calm now"},busy:{cls:"rtag md",label:"Busy"},caution:{cls:"rtag hi",label:"Caution"}},Lt=["Mara V.","Sofia K.","Anouk D.","Liv R.","Noor B.","Emma J.","Tessa M.","Yara P.","Iris H."],pr=["2 days ago","1 week ago","3 weeks ago"],At={Caf\u00E9:{good:["Cosy spot \u2014 staff noticed I was alone and kept checking in. Easy to grab a taxi right outside.","Bright and calm in the afternoon. Felt completely comfortable working here for hours."],mid:["Pleasant enough, but it got cramped later on. Fine in daylight, less so after dark."],bad:["Felt overlooked by staff and the back corner is dim. Wouldn't sit alone here at night."]},Bar:{good:["Relaxed crowd and the bartenders keep an eye on drinks. Walked out feeling at ease.","Door staff were attentive and the street outside is well-lit. Good vibe for a night out."],mid:["Decent, but watch your drink \u2014 it gets busy and a bit rowdy near closing."],bad:["Pushy crowd and poorly lit out front. Saw a couple of incidents \u2014 stay alert here."]},Club:{good:["Busy but security on the door is solid. They walked a few of us to the rank at closing.","Staff stepped in fast when someone got pushy on the floor."],mid:["Long queue and packed inside. Go with friends and keep together."],bad:["Felt unsafe \u2014 door was chaotic and no one stepped in when things got heated. Left early."]}};function hr(e){return e>=4?"good":e===3?"mid":"bad"}function gr(e){let r=At[e.type]??At.Bar,a=d=>Math.max(1,Math.min(5,d)),n=[a(e.stars),a(e.stars-1),a(e.stars+1)],l=e.id.length;return n.map((d,c)=>{let g=r[hr(d)];return{name:Lt[(c+l)%Lt.length],time:pr[c],stars:d,note:g[c%g.length]}})}function Gt({n:e}){return z("span",{className:"stars",children:[0,1,2,3,4].map(r=>z(t.starFill,{className:r<e?"":"off"},r))})}function It(){let{back:e,go:r,selectedVenueId:a}=m(),n=Y.find(c=>c.id===a)??Y[0],l=cr[n.status],d=gr(n);return G("div",{className:"flow",children:[G("div",{className:"flow-scroll",children:[G("div",{className:"tb",children:[z("div",{className:"tb-back",onClick:e,children:z(t.chevronLeft,{strokeWidth:2.4})}),z("div",{className:"tb-spacer"}),z("div",{className:l.cls,children:l.label})]}),z("div",{className:"flow-title",style:{marginTop:16},children:n.name}),G("div",{className:"h-loc",children:[z(t.mapPin,{}),n.type," \xB7 ",n.area]}),G("div",{className:"rmeta",style:{marginTop:16,display:"flex",alignItems:"center",gap:10,fontSize:13},children:[z(Gt,{n:n.stars}),G("span",{style:{fontWeight:800,color:"var(--ink)",fontSize:14},children:[n.stars,".0"]}),z("span",{style:{opacity:.6},children:"\xB7"}),G("span",{children:[n.reviews," reviews"]})]}),G("div",{className:"privacy-note",style:{marginTop:14},children:[z(t.shield,{}),G("span",{children:[z("strong",{style:{color:"var(--green)",fontWeight:800},children:"Live: "}),n.statusNote]})]}),z("div",{className:"field-label",style:{marginTop:24},children:"What people mention"}),z("div",{className:"filters",style:{padding:"4px 0 0"},children:n.tags.map(c=>z("span",{className:"chip",children:c},c))}),z("div",{className:"field-label",style:{marginTop:24},children:"Review history"}),z("div",{style:{display:"flex",flexDirection:"column",gap:12,marginTop:4},children:d.map((c,g)=>G("div",{style:{background:"#fff",borderRadius:18,padding:"14px 16px",boxShadow:"0 10px 24px -18px rgba(34,48,39,.4)",border:"1px solid rgba(34,48,39,.05)"},children:[G("div",{style:{display:"flex",alignItems:"center",gap:11},children:[z("div",{style:{width:34,height:34,borderRadius:12,flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",background:"linear-gradient(155deg,#4f9e79,var(--green))",color:"#fff",fontWeight:800,fontSize:14},children:c.name.charAt(0)}),G("div",{style:{flex:1,minWidth:0},children:[z("div",{style:{fontSize:13.5,fontWeight:700,color:"var(--ink)"},children:c.name}),G("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:2,fontSize:11,fontWeight:600,color:"var(--ink-soft)"},children:[z(Gt,{n:c.stars}),G("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[z(t.clock,{})," ",c.time]})]})]})]}),z("div",{style:{marginTop:10,fontSize:12.5,fontWeight:600,lineHeight:1.5,color:"var(--ink-soft)"},children:c.note})]},g))})]}),G("div",{className:"flow-foot",children:[G("button",{className:"btn-primary",onClick:()=>r("review"),children:[z(t.star,{strokeWidth:2.2}),"Write a review"]}),G("button",{className:"btn-ghost",onClick:()=>Me({title:`Her Way \u2014 ${n.name}`,text:`${n.name} (${n.type}, ${n.area}) \u2014 ${n.stars}\u2605 from ${n.reviews} reviews. ${n.statusNote}`}),children:[z(t.share,{}),"Share this place"]})]})]})}import{useState as vr}from"react";import{jsx as E,jsxs as H}from"react/jsx-runtime";var mr={yes:{title:"Thanks \u2014 confirmation added",sub:"Your confirmation helps verify this report for women nearby."},unsure:{title:"Noted, thanks for checking",sub:"No problem. Only confirm what you actually witnessed."},no:{title:"Thanks \u2014 marked as not witnessed",sub:"Got it. This helps us keep reports accurate for everyone."}};function Bt(){let{back:e,reset:r,selectedEventId:a}=m(),n=we.find(c=>c.id===a)??we[0],[l,d]=vr(null);if(l){let c=mr[l];return H("div",{className:"flow",children:[H("div",{className:"sent",children:[E("div",{className:"sent-check",children:E(t.check,{strokeWidth:2.6})}),E("div",{className:"sent-title",children:c.title}),E("div",{className:"sent-sub",children:c.sub})]}),E("div",{className:"flow-foot",children:E("button",{className:"btn-primary",onClick:()=>r("reports"),children:"Done"})})]})}return H("div",{className:"flow",children:[H("div",{className:"flow-scroll",children:[H("div",{className:"tb",children:[E("div",{className:"tb-back",onClick:e,children:E(t.chevronLeft,{strokeWidth:2.4})}),E("div",{className:"tb-spacer"}),E("div",{className:"rtag md",style:{fontSize:10},children:"Community verification"})]}),E("div",{className:"map-mini",style:{marginTop:16,position:"relative"},children:H(_,{view:nt[n.id]??"mini-r1",variant:"mini",children:[E("div",{className:"heat",style:{background:"radial-gradient(circle 70px at 50% 50%, rgba(212,89,52,.55), transparent 70%)"}}),E(K,{lng:n.coord[0],lat:n.coord[1],severity:"hi",glyph:E(t.alert,{strokeWidth:2.4})})]})}),E("div",{className:"flow-title",style:{marginTop:18},children:n.title}),H("div",{className:"h-loc",style:{marginTop:8},children:[E(t.mapPin,{}),n.where," \xB7 ",n.distanceMeters," m away"]}),E("div",{className:"rmeta",style:{marginTop:14,fontSize:13},children:H("div",{className:"sub",style:{gap:16},children:[H("span",{children:[E(t.clock,{strokeWidth:2.2}),n.when]}),H("span",{children:[E(t.users,{strokeWidth:2.2}),n.confirmations," confirmed so far"]})]})}),H("div",{className:"privacy-note",style:{marginTop:16},children:[E(t.shield,{}),E("span",{children:"You're near this report. If you saw or heard something, your confirmation helps verify it for others. Only confirm what you actually witnessed."})]})]}),H("div",{className:"flow-foot",children:[H("button",{className:"btn-primary",onClick:()=>d("yes"),children:[E(t.check,{strokeWidth:2.4}),"Yes, I can confirm"]}),E("button",{className:"btn-ghost",onClick:()=>d("unsure"),children:"I'm not sure"}),H("button",{className:"btn-ghost danger",onClick:()=>d("no"),children:[E(t.x,{strokeWidth:2.4}),"No / didn't witness"]})]})]})}import{Fragment as Nr,jsx as N,jsxs as Sr}from"react/jsx-runtime";var br=new Set(["home","sos","navigation","route-overview"]),xr=new Set(["home","reports","search","profile"]);function yr(e){switch(e){case"home":return N(Fe,{});case"sos":return N(vt,{});case"reports":return N(mt,{});case"profile":return N(ft,{});case"alert-type":return N(ut,{});case"alert-details":return N(bt,{});case"alert-sent":return N(xt,{});case"route-destination":return N(yt,{});case"route-overview":return N(wt,{});case"navigation":return N(kt,{});case"review":return N(St,{});case"review-sent":return N(Ct,{});case"alert-detail":return N(Et,{});case"search":return N(Wt,{});case"read-review":return N(It,{});case"confirm-event":return N(Bt,{});case"contacts":return N(Tt,{});case"legal-terms":case"legal-privacy":return N(Pt,{});case"ob-1":case"ob-2":case"ob-3":case"ob-4":case"ob-5":return N(Vt,{});default:return N(Fe,{})}}function wr(){let{screen:e,nav:r}=m(),a=Dt(r.n),n=Dt(1),[l,d]=ur([{screen:e,cls:"",sx:"0%",z:1,key:0}]);return fr(()=>{if(r.n===a.current)return;a.current=r.n,d(g=>{let h=g[g.length-1];if(h.screen===e)return g;let w=`${r.sign*100}%`,v=r.mode==="pop",I={screen:e,cls:v?"anim-enter-pop":"anim-enter",sx:w,z:v?1:2,key:n.current++};return[{screen:h.screen,cls:v?"anim-leave-pop":"anim-leave",sx:w,z:v?2:1,key:h.key},I]});let c=setTimeout(()=>{d(g=>{let h=g[g.length-1];return[{screen:h.screen,cls:"",sx:"0%",z:1,key:h.key}]})},360);return()=>clearTimeout(c)},[r.n,e]),N(Nr,{children:l.map(c=>N("div",{className:`layer ${c.cls}`,style:{"--sx":c.sx,zIndex:c.z},children:yr(c.screen)},c.key))})}function kr(){let{screen:e,setPlanetaryOpen:r}=m(),a=e==="reports"?"reports":e==="profile"?"profile":"map";return Sr(et,{tone:br.has(e)?"light":"dark",onMouseLeave:()=>r(!1),children:[N(wr,{}),xr.has(e)&&N(ot,{active:a})]})}function Ot(){return N(Je,{children:N("div",{className:"stage",children:N(kr,{})})})}var Ft=`@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;0,9..144,700;0,9..144,900;1,9..144,500&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');
1
+ import{useEffect as zr}from"react";import{useEffect as xr,useRef as Ot,useState as br}from"react";import{createContext as Lo,useContext as Ao,useState as M,useCallback as q,useRef as Go}from"react";var ye=[4.9087,52.3637];var re=[{id:"r1",kind:"alert",title:"Person being followed",locationName:"Plantage Middenlaan",severity:"hi",minutesAgo:4,distanceMeters:180,confirmations:12,category:"Being followed",description:"A woman reported being followed by a man for several blocks along Plantage Middenlaan. He turned back near the tram stop. Stay aware and travel together if you can.",coord:[4.9148,52.3683],cluster:3},{id:"r2",kind:"alert",title:"Aggressive group outside bar",locationName:"Roetersstraat",severity:"md",minutesAgo:12,distanceMeters:320,confirmations:5,category:"Harassment",description:"Loud, aggressive group outside a bar on Roetersstraat shouting at people walking past. Consider the other side of the street.",coord:[4.9176,52.3668]},{id:"r3",kind:"alert",title:"Poorly lit underpass",locationName:"Mauritskade",severity:"md",minutesAgo:38,distanceMeters:560,confirmations:8,category:"Unsafe area",description:"The underpass at Mauritskade has several broken lights and is very dark after sunset. A safer, well-lit route runs one block north.",coord:[4.9088,52.3642]},{id:"r4",kind:"alert",title:"Verbal harassment reported",locationName:"Sarphatistraat",severity:"lo",minutesAgo:55,distanceMeters:720,confirmations:3,category:"Physical & verbal harassment",description:"Repeated shouting and verbal harassment from a group near the corner shop on Sarphatistraat. Reported low-severity but worth knowing.",coord:[4.9185,52.3637]},{id:"r5",kind:"review",title:"Caf\xE9 Morgenzon",locationName:"Czaar Peterstraat",stars:4,minutesAgo:120,distanceMeters:500,description:"Warm, welcoming caf\xE9 with staff who keep an eye out. Well-lit at night and easy to get a taxi from. Felt safe staying late.",tags:["Well-lit","Friendly staff","Easy to leave"],coord:[4.9232,52.3706]}],Ye=[{key:"followed",label:"Being followed",icon:"eye"},{key:"harassment",label:"Physical & verbal harassment",icon:"users"},{key:"unsafe",label:"Unsafe area",icon:"alert"},{key:"drink",label:"Drink tampering",icon:"lock"},{key:"other",label:"Something else",icon:"star"}],Ae=[{name:"Home",detail:"Czaar Peterstraat",kind:"saved"},{name:"Work",detail:"Science Park",kind:"saved"},{name:"Caf\xE9 Morgenzon",detail:"500 m away",kind:"recent"},{name:"Centraal Station",detail:"1.8 km away",kind:"recent"}],Xe=[{key:"safer",title:"Safer route",time:"14 min",detail:"Avoids 2 alerts \xB7 well-lit \xB7 busier streets",badge:"Recommended"},{key:"fastest",title:"Fastest route",time:"11 min",detail:"Passes 1 high-risk area \xB7 darker stretch"}],Ke=["Friendly staff","Easy to leave","Busy area","Quiet","CCTV","Well-lit","Staff watched my drink","Felt safe leaving late"],ge={name:"Jane Doe",initials:"J",city:"Amsterdam",ageRange:"25-34",verified:!0,stats:{reports:24,reviews:18,days:214},contacts:3,radiusMeters:500,sosTimer:5},Y=[{id:"v1",name:"Caf\xE9 Morgenzon",type:"Caf\xE9",area:"Czaar Peterstraat",stars:4,reviews:38,status:"calm",statusNote:"Quiet right now \xB7 well-staffed",vibe:"Quiet",tags:["Friendly staff","Easy to leave","CCTV"]},{id:"v2",name:"Club Halcyon",type:"Club",area:"Leidseplein",stars:3,reviews:126,status:"busy",statusNote:"Very busy \xB7 long queue reported",vibe:"Busy",tags:["Busy area","Security on door"]},{id:"v3",name:"Bar Florine",type:"Bar",area:"Plantage",stars:5,reviews:54,status:"calm",statusNote:"Relaxed crowd \xB7 women-friendly",vibe:"Relaxed",tags:["Friendly staff","Quiet","Well-lit"]},{id:"v4",name:"Bar Avondrood",type:"Bar",area:"Sarphatistraat",stars:2,reviews:19,status:"caution",statusNote:"2 incidents reported tonight",vibe:"Tense",tags:["Crowded","Poorly lit nearby"]},{id:"v5",name:"Werf Terrace",type:"Club",area:"Czaar Peterstraat",stars:4,reviews:71,status:"busy",statusNote:"Busy but calm \xB7 good lighting",vibe:"Lively",tags:["Busy area","CCTV","Easy to leave"]}],we=[{id:"e1",title:"Group following women near tram stop",where:"Plantage Middenlaan",when:"Just now",distanceMeters:140,confirmations:2,coord:[4.9148,52.3683]},{id:"e2",title:"Loud altercation outside bar",where:"Roetersstraat",when:"6 min ago",distanceMeters:280,confirmations:4,coord:[4.9176,52.3668]}],Re=[{id:"c1",name:"Mara V.",phone:"+31 6 1234 5678"},{id:"c2",name:"Sofia K.",phone:"+31 6 8765 4321"},{id:"c3",name:"Emergency line",phone:"112"}],Ge=[4.908641,52.363719],Ie=[4.922685,52.370921],De=[4.9176,52.3668],me=[[4.908641,52.363719],[4.910909,52.364136],[4.91093,52.364139],[4.910926,52.364117],[4.910921,52.364094],[4.910778,52.363647],[4.910656,52.36326],[4.910644,52.363214],[4.910641,52.363195],[4.910639,52.363177],[4.910641,52.363156],[4.910645,52.363133],[4.910656,52.3631],[4.910686,52.363042],[4.910747,52.362925],[4.910795,52.362835],[4.910811,52.36278],[4.910828,52.362716],[4.910901,52.362564],[4.911047,52.362289],[4.911186,52.362023],[4.911221,52.361965],[4.911231,52.361936],[4.911245,52.361909],[4.911247,52.361906],[4.911262,52.361885],[4.911282,52.361869],[4.911301,52.361858],[4.911317,52.361848],[4.911392,52.361817],[4.912316,52.36201],[4.912448,52.362039],[4.913422,52.36224],[4.914395,52.362442],[4.914498,52.362464],[4.914544,52.362473],[4.914583,52.362481],[4.914611,52.362487],[4.914729,52.362512],[4.914735,52.362513],[4.914776,52.362524],[4.91482,52.362531],[4.91489,52.362544],[4.916406,52.36286],[4.918309,52.363254],[4.918391,52.363272],[4.918448,52.363285],[4.918512,52.363302],[4.918618,52.363336],[4.918815,52.363416],[4.918916,52.363462],[4.918936,52.363477],[4.918965,52.363503],[4.918974,52.363511],[4.918995,52.363533],[4.91901,52.36355],[4.91902,52.363563],[4.919033,52.363579],[4.919064,52.36362],[4.919126,52.363698],[4.919153,52.363726],[4.919178,52.363748],[4.91921,52.363773],[4.91926,52.363802],[4.919319,52.363831],[4.919479,52.363906],[4.919727,52.364018],[4.920188,52.364202],[4.920557,52.364369],[4.920942,52.36459],[4.922318,52.365437],[4.92287,52.365775],[4.923509,52.366172],[4.923979,52.36645],[4.923934,52.366478],[4.923905,52.366497],[4.923853,52.366529],[4.923812,52.366551],[4.923706,52.366601],[4.923628,52.366612],[4.923541,52.366616],[4.923501,52.366619],[4.92316,52.36664],[4.92296,52.36666],[4.922102,52.366965],[4.921167,52.367298],[4.921041,52.367341],[4.920701,52.367459],[4.920398,52.367565],[4.919536,52.367864],[4.919437,52.367899],[4.919091,52.368019],[4.918997,52.36805],[4.918821,52.368111],[4.918289,52.368302],[4.917772,52.368487],[4.917507,52.368582],[4.916554,52.368923],[4.916459,52.368956],[4.915401,52.369326],[4.915256,52.369378],[4.915167,52.369409],[4.914673,52.369585],[4.912659,52.370295],[4.912446,52.370376],[4.912312,52.370435],[4.912846,52.370781],[4.913049,52.370837],[4.91313,52.370859],[4.913202,52.370871],[4.913293,52.370872],[4.913493,52.370809],[4.913662,52.370754],[4.913751,52.370738],[4.913873,52.370731],[4.913989,52.370735],[4.91411,52.370757],[4.914315,52.370817],[4.914849,52.371043],[4.914926,52.371073],[4.915088,52.371151],[4.915175,52.371075],[4.91524,52.371021],[4.915256,52.371007],[4.915338,52.370953],[4.915446,52.370903],[4.915926,52.370753],[4.916235,52.370656],[4.916339,52.370624],[4.917222,52.370322],[4.917362,52.370274],[4.917472,52.370235],[4.91827,52.369966],[4.918501,52.369891],[4.918647,52.369844],[4.919227,52.369631],[4.919306,52.369714],[4.919373,52.369768],[4.919792,52.370036],[4.920439,52.370451],[4.921264,52.370961],[4.921625,52.371179],[4.922084,52.371474],[4.922803,52.371058],[4.922813,52.371034],[4.922797,52.371],[4.922748,52.370959],[4.922685,52.370921]],qe=[[4.908641,52.363719],[4.910909,52.364136],[4.91093,52.364139],[4.910932,52.36416],[4.91093,52.364198],[4.91092,52.364266],[4.910915,52.364293],[4.910907,52.364321],[4.910898,52.364344],[4.910824,52.364497],[4.910609,52.36494],[4.910596,52.36497],[4.910586,52.365001],[4.910581,52.365032],[4.91058,52.36507],[4.910584,52.365097],[4.910589,52.365116],[4.910602,52.365152],[4.910618,52.365177],[4.910636,52.3652],[4.910656,52.365224],[4.910714,52.365288],[4.910938,52.36553],[4.911635,52.366279],[4.911648,52.366294],[4.911697,52.366345],[4.911727,52.366381],[4.911767,52.366409],[4.911781,52.366419],[4.911795,52.366428],[4.911837,52.366459],[4.911826,52.366462],[4.911759,52.366485],[4.911733,52.366495],[4.911562,52.366555],[4.911295,52.366641],[4.910506,52.366915],[4.909536,52.367238],[4.909472,52.367264],[4.909446,52.367294],[4.909438,52.367331],[4.909437,52.367355],[4.909444,52.367396],[4.90946,52.367426],[4.910102,52.368101],[4.91057,52.36858],[4.910619,52.368688],[4.910615,52.368711],[4.910594,52.368763],[4.910587,52.368783],[4.910567,52.36881],[4.910545,52.368827],[4.910421,52.3689],[4.909973,52.369098],[4.909909,52.369136],[4.909776,52.369212],[4.909656,52.369296],[4.909306,52.369499],[4.909115,52.369623],[4.908994,52.369732],[4.908846,52.369894],[4.908766,52.369973],[4.908765,52.370021],[4.908747,52.370051],[4.908732,52.37008],[4.908728,52.370121],[4.908737,52.370155],[4.908767,52.370195],[4.909227,52.370366],[4.909865,52.370601],[4.910308,52.370886],[4.910382,52.370933],[4.911,52.371373],[4.911033,52.371397],[4.911086,52.371442],[4.911177,52.37152],[4.911598,52.371385],[4.911884,52.371277],[4.912091,52.371207],[4.912148,52.371189],[4.912202,52.371173],[4.912208,52.371171],[4.91241,52.371138],[4.912523,52.371121],[4.912676,52.371075],[4.912914,52.370997],[4.912955,52.370984],[4.913016,52.370965],[4.913055,52.37095],[4.913293,52.370872],[4.913493,52.370809],[4.913662,52.370754],[4.913751,52.370738],[4.913873,52.370731],[4.913989,52.370735],[4.91411,52.370757],[4.914315,52.370817],[4.914849,52.371043],[4.914926,52.371073],[4.915088,52.371151],[4.915175,52.371075],[4.91524,52.371021],[4.915256,52.371007],[4.915338,52.370953],[4.915446,52.370903],[4.915926,52.370753],[4.916235,52.370656],[4.916339,52.370624],[4.917222,52.370322],[4.917362,52.370274],[4.917472,52.370235],[4.91827,52.369966],[4.918501,52.369891],[4.918647,52.369844],[4.919227,52.369631],[4.919306,52.369714],[4.919373,52.369768],[4.919792,52.370036],[4.920439,52.370451],[4.921264,52.370961],[4.921625,52.371179],[4.922084,52.371474],[4.922803,52.371058],[4.922813,52.371034],[4.922797,52.371],[4.922748,52.370959],[4.922685,52.370921]];import{jsx as Do}from"react/jsx-runtime";var Je=Lo(null);function v(){let e=Ao(Je);if(!e)throw new Error("useStore must be used inside <StoreProvider>");return e}var Io={category:null,severity:"md",anonymous:!1};function Qe({children:e}){let[r,a]=M(["ob-1"]),n=r[r.length-1],[l,d]=M({mode:"push",sign:1,n:0}),c={search:-1,home:0,reports:1,profile:2},g=q(S=>{d(D=>({mode:"push",sign:1,n:D.n+1})),a(D=>[...D,S])},[]),h=q(()=>{d(S=>({mode:"pop",sign:1,n:S.n+1})),a(S=>S.length>1?S.slice(0,-1):S)},[]),w=q(S=>{a(D=>{let he=D[D.length-1];if(he in c&&S in c){let Le=c[S]>c[he]?1:-1;d(Wo=>({mode:"tab",sign:Le,n:Wo.n+1}))}else d(Le=>({mode:"pop",sign:1,n:Le.n+1}));return[S]})},[]),[m,I]=M("right"),[R,Ce]=M(!1),[be,_t]=M(!1),[Ut,Yt]=M("closest"),[Xt,Kt]=M(2),[qt,Jt]=M("all"),[Qt,Zt]=M(null),[eo,to]=M(null),[oo,ro]=M(null),[ao,no]=M(""),[io,so]=M("signup"),[lo,co]=M(Io),po=q(S=>co(D=>({...D,...S})),[]),[ho,go]=M(""),[mo,vo]=M("safer"),[fo,uo]=M({nearbyAlerts:!0,confirmations:!0,quietHours:!1,shareLocation:!0,anonymousDefault:!1}),xo=q(S=>uo(D=>({...D,[S]:!D[S]})),[]),Pe=[250,500,1e3],Te=[5,10,15],We=["Terrain","Standard","Satellite"],[bo,yo]=M(500),[wo,ko]=M(5),[No,So]=M("Terrain"),Co=q(()=>yo(S=>Pe[(Pe.indexOf(S)+1)%Pe.length]),[]),Ro=q(()=>ko(S=>Te[(Te.indexOf(S)+1)%Te.length]),[]),zo=q(()=>So(S=>We[(We.indexOf(S)+1)%We.length]),[]),[Eo,Ue]=M(Re),Mo=Go(0),Vo=q((S,D)=>{Ue(he=>[...he,{id:`new-${Mo.current++}`,name:S,phone:D}])},[]),Po=q(S=>Ue(D=>D.filter(he=>he.id!==S)),[]),To={screen:n,nav:l,go:g,back:h,reset:w,hand:m,setHand:I,planetaryOpen:R,setPlanetaryOpen:Ce,filtersOpen:be,setFiltersOpen:_t,sort:Ut,setSort:Yt,radius:Xt,setRadius:Kt,show:qt,setShow:Jt,selectedReportId:Qt,setSelectedReportId:Zt,selectedVenueId:eo,setSelectedVenueId:to,selectedEventId:oo,setSelectedEventId:ro,searchQuery:ao,setSearchQuery:no,authMode:io,setAuthMode:so,draft:lo,setDraft:po,destination:ho,setDestination:go,routeChoice:mo,setRouteChoice:vo,toggles:fo,toggle:xo,safeRadius:bo,cycleRadius:Co,sosTimer:wo,cycleSosTimer:Ro,mapType:No,cycleMapType:zo,contacts:Eo,addContact:Vo,removeContact:Po};return Do(Je.Provider,{value:To,children:e})}import{Fragment as Bo,jsx as s,jsxs as C}from"react/jsx-runtime";function b({children:e,...r}){return s("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",...r,children:e})}var o={map:e=>C(b,{...e,children:[s("polygon",{points:"1 6 8 3 16 6 23 3 23 18 16 21 8 18 1 21 1 6"}),s("line",{x1:"8",y1:"3",x2:"8",y2:"18"}),s("line",{x1:"16",y1:"6",x2:"16",y2:"21"})]}),bell:e=>C(b,{...e,children:[s("path",{d:"M18 8A6 6 0 0 0 6 8c0 7-3 9-3 9h18s-3-2-3-9"}),s("path",{d:"M13.7 21a2 2 0 0 1-3.4 0"})]}),person:e=>C(b,{...e,children:[s("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),s("circle",{cx:"12",cy:"7",r:"4"})]}),plus:e=>C(b,{strokeWidth:2.6,...e,children:[s("line",{x1:"12",y1:"5",x2:"12",y2:"19"}),s("line",{x1:"5",y1:"12",x2:"19",y2:"12"})]}),minus:e=>s(b,{strokeWidth:2.4,...e,children:s("line",{x1:"5",y1:"12",x2:"19",y2:"12"})}),alert:e=>C(b,{strokeWidth:2.2,...e,children:[s("path",{d:"M12 2 1 21h22L12 2z"}),s("line",{x1:"12",y1:"9",x2:"12",y2:"14"}),s("circle",{cx:"12",cy:"17.5",r:".7",fill:"currentColor"})]}),eye:e=>C(b,{strokeWidth:2.2,...e,children:[s("circle",{cx:"12",cy:"12",r:"3.2"}),s("path",{d:"M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7-10-7-10-7z"})]}),star:e=>s(b,{...e,children:s("polygon",{points:"12 2 15 9 22 9.5 16.5 14 18.5 21 12 17 5.5 21 7.5 14 2 9.5 9 9"})}),starFill:e=>s("svg",{viewBox:"0 0 24 24",fill:"currentColor",...e,children:s("polygon",{points:"12 2 15 9 22 9.5 16.5 14 18.5 21 12 17 5.5 21 7.5 14 2 9.5 9 9"})}),route:e=>C(b,{strokeWidth:2.2,...e,children:[s("circle",{cx:"6",cy:"19",r:"2.4"}),s("circle",{cx:"18",cy:"5",r:"2.4"}),s("path",{d:"M8.4 19H14a3.5 3.5 0 0 0 0-7h-4a3.5 3.5 0 0 1 0-7h5.6"})]}),sos:e=>C(b,{strokeWidth:2.2,...e,children:[s("polygon",{points:"8 2.6 16 2.6 21.4 8 21.4 16 16 21.4 8 21.4 2.6 16 2.6 8"}),s("line",{x1:"12",y1:"7.5",x2:"12",y2:"13"}),s("circle",{cx:"12",cy:"16.5",r:".7",fill:"currentColor"})]}),locate:e=>C(b,{...e,children:[s("circle",{cx:"12",cy:"12",r:"3"}),s("line",{x1:"12",y1:"2",x2:"12",y2:"5"}),s("line",{x1:"12",y1:"19",x2:"12",y2:"22"}),s("line",{x1:"2",y1:"12",x2:"5",y2:"12"}),s("line",{x1:"19",y1:"12",x2:"22",y2:"12"})]}),compass:e=>s(b,{...e,children:s("polygon",{points:"12 2 19 21 12 17 5 21 12 2"})}),check:e=>s(b,{strokeWidth:2.4,...e,children:s("polyline",{points:"20 6 9 17 4 12"})}),chevronLeft:e=>s(b,{...e,children:s("polyline",{points:"15 18 9 12 15 6"})}),chevronRight:e=>s(b,{...e,children:s("polyline",{points:"9 18 15 12 9 6"})}),arrowRight:e=>C(b,{...e,children:[s("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),s("polyline",{points:"12 5 19 12 12 19"})]}),search:e=>C(b,{...e,children:[s("circle",{cx:"11",cy:"11",r:"7"}),s("line",{x1:"21",y1:"21",x2:"16.5",y2:"16.5"})]}),camera:e=>C(b,{...e,children:[s("path",{d:"M23 19a2 2 0 0 1-2 2H3a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h4l2-3h6l2 3h4a2 2 0 0 1 2 2z"}),s("circle",{cx:"12",cy:"13",r:"4"})]}),share:e=>C(b,{...e,children:[s("path",{d:"M4 12v8a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2v-8"}),s("polyline",{points:"16 6 12 2 8 6"}),s("line",{x1:"12",y1:"2",x2:"12",y2:"15"})]}),shield:e=>C(b,{...e,children:[s("path",{d:"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z"}),s("polyline",{points:"9 12 11 14 15 10"})]}),clock:e=>C(b,{...e,children:[s("circle",{cx:"12",cy:"12",r:"9"}),s("polyline",{points:"12 7 12 12 15 14"})]}),mapPin:e=>C(b,{...e,children:[s("path",{d:"M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"}),s("circle",{cx:"12",cy:"10",r:"3"})]}),lock:e=>C(b,{...e,children:[s("rect",{x:"4",y:"11",width:"16",height:"10",rx:"2"}),s("path",{d:"M8 11V7a4 4 0 0 1 8 0v4"})]}),phone:e=>s(b,{strokeWidth:2.2,...e,children:s("path",{d:"M22 16.9v3a2 2 0 0 1-2.2 2 19.8 19.8 0 0 1-8.6-3 19.5 19.5 0 0 1-6-6 19.8 19.8 0 0 1-3-8.6A2 2 0 0 1 4.1 2h3a2 2 0 0 1 2 1.7c.1 1 .4 1.9.7 2.8a2 2 0 0 1-.5 2.1L8.1 9.9a16 16 0 0 0 6 6l1.3-1.2a2 2 0 0 1 2.1-.5c.9.3 1.8.6 2.8.7a2 2 0 0 1 1.7 2z"})}),hand:e=>C(b,{...e,children:[s("path",{d:"M18 11V6a2 2 0 0 0-4 0v5M14 10V4a2 2 0 0 0-4 0v7M10 10.5V6a2 2 0 0 0-4 0v8"}),s("path",{d:"M18 8a2 2 0 1 1 4 0v6a8 8 0 0 1-8 8h-2a8 8 0 0 1-8-8 2 2 0 0 1 4 0"})]}),filter:e=>s(b,{...e,children:s("polygon",{points:"22 3 2 3 10 12.5 10 19 14 21 14 12.5 22 3"})}),x:e=>C(b,{strokeWidth:2.4,...e,children:[s("line",{x1:"18",y1:"6",x2:"6",y2:"18"}),s("line",{x1:"6",y1:"6",x2:"18",y2:"18"})]}),menu:e=>C(b,{strokeWidth:2.4,...e,children:[s("line",{x1:"3",y1:"6",x2:"21",y2:"6"}),s("line",{x1:"3",y1:"12",x2:"21",y2:"12"}),s("line",{x1:"3",y1:"18",x2:"21",y2:"18"})]}),cornerUpLeft:e=>C(b,{...e,children:[s("polyline",{points:"9 14 4 9 9 4"}),s("path",{d:"M20 20v-7a4 4 0 0 0-4-4H4"})]}),users:e=>C(b,{...e,children:[s("path",{d:"M17 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"}),s("circle",{cx:"9",cy:"7",r:"4"}),s("path",{d:"M23 21v-2a4 4 0 0 0-3-3.87M16 3.13a4 4 0 0 1 0 7.75"})]})};function Ze(){return C(Bo,{children:[C("svg",{width:"18",height:"12",viewBox:"0 0 18 12",fill:"currentColor",children:[s("rect",{x:"0",y:"7",width:"3",height:"5",rx:"1"}),s("rect",{x:"5",y:"4",width:"3",height:"8",rx:"1"}),s("rect",{x:"10",y:"1.5",width:"3",height:"10.5",rx:"1"}),s("rect",{x:"15",y:"0",width:"3",height:"12",rx:"1",opacity:".4"})]}),s("svg",{width:"17",height:"12",viewBox:"0 0 17 12",fill:"currentColor",children:s("path",{d:"M8.5 2.5c2.4 0 4.6.9 6.2 2.4l1.3-1.4A11 11 0 0 0 8.5.5 11 11 0 0 0 1 3.5l1.3 1.4A9 9 0 0 1 8.5 2.5Zm0 3.4c1.5 0 2.9.6 3.9 1.5l1.3-1.4a8 8 0 0 0-10.4 0l1.3 1.4A5.6 5.6 0 0 1 8.5 5.9Zm0 3.3c.7 0 1.3.3 1.8.7l-1.8 2-1.8-2c.5-.4 1.1-.7 1.8-.7Z"})}),C("svg",{width:"26",height:"13",viewBox:"0 0 26 13",fill:"none",children:[s("rect",{x:"1",y:"1.5",width:"21",height:"10",rx:"3",stroke:"currentColor",strokeWidth:"1.2",opacity:".55"}),s("rect",{x:"2.8",y:"3.2",width:"15",height:"6.6",rx:"1.6",fill:"currentColor"}),s("rect",{x:"23.4",y:"4.5",width:"1.6",height:"4",rx:".8",fill:"currentColor",opacity:".55"})]})]})}import{jsx as ve,jsxs as et}from"react/jsx-runtime";function tt({children:e,tone:r="dark",onMouseLeave:a}){return ve("div",{className:"phone",children:et("div",{className:"screen",onMouseLeave:a,children:[ve("div",{className:"notch"}),et("div",{className:`status ${r}`,children:[ve("span",{className:"t",children:"9:41"}),ve("span",{className:"r",children:ve(Ze,{})})]}),e,ve("div",{className:`home-ind ${r}`})]})})}import{Fragment as Fo,jsx as X,jsxs as ze}from"react/jsx-runtime";var ot=["map","reports","profile"],Oo={map:"home",reports:"reports",profile:"profile"};function rt({active:e}){let{screen:r,reset:a,setPlanetaryOpen:n,searchQuery:l,setSearchQuery:d}=v();function c(m){n(!1),a(m)}function g(){d(""),a("home")}if(r==="search")return ze(Fo,{children:[ze("div",{className:"spotlight glass",children:[X(o.search,{}),X("input",{autoFocus:!0,value:l,onChange:m=>d(m.target.value),placeholder:"Search bars, clubs, caf\xE9s\u2026"})]}),X("div",{className:"spot-close glass",onClick:g,children:X(o.x,{})})]});let h=ot.indexOf(e),w={map:X(o.map,{}),reports:X(o.bell,{}),profile:X(o.person,{})};return ze("div",{className:"nav-group nav-persist",children:[X("div",{className:"search-island glass",onClick:()=>c("search"),children:X(o.search,{})}),ze("div",{className:"nav glass slide nav3",style:{"--i":h},children:[X("div",{className:"nav-ind"}),ot.map(m=>X("div",{className:`nav-seg ${e===m?"on":""}`,onClick:()=>c(Oo[m]),children:w[m]},m))]})]})}import{useEffect as _o,useState as Uo}from"react";import{createContext as $o,useContext as jo}from"react";function Be(e){let r=e*Math.PI/180;return Math.log(Math.tan(r)+1/Math.cos(r))}function fe(e,r,a){let n=(e-a.west)/(a.east-a.west)*100,l=Be(a.north),d=Be(a.south),c=(l-Be(r))/(l-d)*100;return{leftPct:n,topPct:c}}function at(e,r){return e.map(([a,n])=>fe(a,n,r))}var Ho=typeof globalThis<"u"&&globalThis.__HERWAY_ASSET_BASE__||new URL("./map/",import.meta.url).href,ae=e=>Ho+e,Oe={home:{src:ae("home.webp"),west:4.902303,east:4.929597,north:52.385856,south:52.348436,w:636,h:1428},route:{src:ae("route.webp"),west:4.902663,east:4.929957,north:52.377509,south:52.340082,w:636,h:1428},nav:{src:ae("route.webp"),west:4.902663,east:4.929957,north:52.377509,south:52.340082,w:636,h:1428},"mini-r1":{src:ae("mini-r1.webp"),west:4.907976,east:4.921624,north:52.370553,south:52.366046,w:636,h:344},"mini-r2":{src:ae("mini-r2.webp"),west:4.910776,east:4.924424,north:52.369054,south:52.364546,w:636,h:344},"mini-r3":{src:ae("mini-r3.webp"),west:4.901976,east:4.915624,north:52.366454,south:52.361946,w:636,h:344},"mini-r4":{src:ae("mini-r4.webp"),west:4.911676,east:4.925324,north:52.365954,south:52.361446,w:636,h:344},"mini-user":{src:ae("mini-user.webp"),west:4.912376,east:4.926024,north:52.366354,south:52.361846,w:636,h:344}},nt={r1:"mini-r1",r2:"mini-r2",r3:"mini-r3",r4:"mini-r4"},it={e1:"mini-r1",e2:"mini-r2"};function st(e,r=16){if(e.length<=r)return e;let a=(e.length-1)/(r-1),n=[];for(let l=0;l<r;l++)n.push(e[Math.round(l*a)]);return n}import{jsx as O,jsxs as ne}from"react/jsx-runtime";var lt=$o(null);function ke(){let e=jo(lt);if(!e)throw new Error("map overlay used outside <StaticMap>");return e}function _({view:e,variant:r="full",className:a="",children:n}){let l=Oe[e]??Oe.home;return ne("div",{className:`smap smap-${r} ${a}`,children:[O("img",{className:"smap-img",src:l.src,alt:"",draggable:!1}),O(lt.Provider,{value:l,children:n})]})}function K({lng:e,lat:r,severity:a,glyph:n,cluster:l,onClick:d}){let c=ke(),{leftPct:g,topPct:h}=fe(e,r,c);return ne("div",{className:`pin ${a}`,style:{left:`${g}%`,top:`${h}%`,cursor:d?"pointer":"default"},onClick:d,children:[O("div",{className:"body",children:n}),l?O("span",{className:"cluster",children:l}):null]})}function ue({lng:e,lat:r,className:a="map-dot"}){let n=ke(),{leftPct:l,topPct:d}=fe(e,r,n);return O("div",{className:a,style:{position:"absolute",left:`${l}%`,top:`${d}%`,transform:"translate(-50%, -50%)",zIndex:8}})}function dt({lng:e,lat:r,meters:a}){let n=ke(),l=fe(e,r,n),d=a/(111320*Math.cos(r*Math.PI/180)),c=fe(e+d,r,n),g=Math.abs(c.leftPct-l.leftPct)*2;return O("div",{className:"smap-radius",style:{left:`${l.leftPct}%`,top:`${l.topPct}%`,width:`${g}%`}})}function Ne({points:e,color:r,width:a,dash:n,opacity:l=1}){let d=ke(),c=at(st(e),d).map(g=>`${g.leftPct},${g.topPct}`).join(" ");return O("svg",{className:"smap-route",viewBox:"0 0 100 100",preserveAspectRatio:"none",children:O("polyline",{points:c,fill:"none",stroke:r,strokeWidth:a,strokeLinecap:"round",strokeLinejoin:"round",strokeDasharray:n,opacity:l,vectorEffect:"non-scaling-stroke"})})}function ct(){return ne("div",{className:"smap-legend glass",children:[ne("span",{children:[O("i",{className:"lg hi"}),"High"]}),ne("span",{children:[O("i",{className:"lg md"}),"Med"]}),ne("span",{children:[O("i",{className:"lg lo"}),"Low"]}),ne("span",{children:[O("i",{className:"lg safe"}),"Review"]})]})}function pt(){let e=ke(),r=(e.north+e.south)/2*(Math.PI/180),a=(e.east-e.west)*111320*Math.cos(r),n=200,l=n/a*100;for(let c of[100,200,250,500,1e3]){let g=c/a*100;if(g>=14&&g<=28){n=c,l=g;break}}let d=n>=1e3?`${n/1e3} km`:`${n} m`;return ne("div",{className:"smap-scale",style:{width:`${l}%`},children:[O("span",{className:"ss-lbl",children:d}),O("span",{className:"ss-bar"})]})}import{Fragment as ht,jsx as k,jsxs as ie}from"react/jsx-runtime";function Ee(e,r,a){return a==="right"?{left:e,top:r}:{left:e.replace("calc(100% - ","").replace(")",""),top:r}}function Yo(e,r){return e==="review"?k(o.star,{}):r==="md"?k(o.eye,{}):k(o.alert,{})}function Fe(){let{planetaryOpen:e,setPlanetaryOpen:r,go:a,setSelectedReportId:n,setSelectedVenueId:l,safeRadius:d}=v(),c="right",[g,h]=Uo(!1);_o(()=>{h(window.matchMedia("(hover: hover)").matches)},[]);function w(R){let Ce=re.find(be=>be.id===R);Ce?.kind==="review"?(l((Y.find(be=>be.name===Ce.title)??Y[0]).id),a("read-review")):(n(R),a("alert-detail"))}let m=c==="right"?{left:"calc(100% - 61px)"}:{left:"61px"};function I(R){r(!1),R==="alert"&&a("alert-type"),R==="route"&&a("route-destination"),R==="review"&&a("review"),R==="sos"&&a("sos")}return ie(ht,{children:[ie(_,{view:"home",variant:"full",children:[k("div",{className:"heat",style:{background:"radial-gradient(120px 120px at 56% 44%, rgba(210,52,33,.5), transparent 70%),radial-gradient(150px 150px at 62% 52%, rgba(233,133,68,.45), transparent 70%),radial-gradient(120px 120px at 47% 58%, rgba(244,207,99,.4), transparent 70%)"}}),k(dt,{lng:ye[0],lat:ye[1],meters:d}),re.map(R=>k(K,{lng:R.coord[0],lat:R.coord[1],severity:R.kind==="review"?"safe":R.severity,glyph:Yo(R.kind,R.severity),cluster:R.cluster,onClick:()=>w(R.id)},R.id)),k(ue,{lng:ye[0],lat:ye[1],className:"user-blip"}),k(ct,{}),k(pt,{})]}),k("div",{className:"maptitle glass",children:k("div",{className:"lab",children:"Live safety map"})}),e&&ie(ht,{children:[k("div",{className:"scrim",onClick:()=>r(!1)}),k("div",{className:"orbit",style:c==="right"?{left:"calc(100% - 61px)"}:{left:"61px"}}),ie("div",{className:"opt",style:Ee("calc(100% - 61px)","calc(100% - 250px)",c),onClick:()=>I("alert"),children:[k("div",{className:"o alert",children:k(o.alert,{})}),k("div",{className:"lab",children:"Alert"})]}),ie("div",{className:"opt",style:Ee("calc(100% - 149px)","calc(100% - 227px)",c),onClick:()=>I("route"),children:[k("div",{className:"o route",children:k(o.route,{})}),k("div",{className:"lab",children:"Route"})]}),ie("div",{className:"opt",style:Ee("calc(100% - 213px)","calc(100% - 163px)",c),onClick:()=>I("review"),children:[k("div",{className:"o review",children:k(o.star,{})}),k("div",{className:"lab",children:"Review"})]}),ie("div",{className:"opt is-panic",style:Ee("calc(100% - 236px)","calc(100% - 75px)",c),onClick:()=>I("sos"),children:[k("div",{className:"o panic",children:k(o.sos,{})}),k("div",{className:"lab",children:"SOS"})]})]}),!e&&k("div",{className:"fab-hint",style:c==="right"?{}:{left:16,right:"auto"},children:g?"Hover to open":"Tap to open"}),ie("div",{className:`fab ${e?"open":""}`,style:{...m,zIndex:e?42:40},onMouseEnter:g?()=>r(!0):void 0,onClick:()=>r(!e),children:[k("div",{className:"glow"}),k(o.plus,{})]})]})}import{useEffect as Xo,useState as Ko}from"react";import{Fragment as mt,jsx as U,jsxs as se}from"react/jsx-runtime";var He=85,gt=2*Math.PI*He;function vt(){let{back:e}=v(),[r,a]=Ko(5);Xo(()=>{if(r<=0)return;let l=setTimeout(()=>a(d=>d-1),1e3);return()=>clearTimeout(l)},[r]);let n=gt*(1-r/5);return U("div",{className:"sos",children:se("div",{className:"sos-body",children:[U("div",{className:"sos-kicker",children:"Emergency SOS"}),U("div",{className:"sos-title",children:r>0?se(mt,{children:["Alerting your",U("br",{}),"safety circle"]}):se(mt,{children:["Safety circle",U("br",{}),"notified"]})}),se("div",{className:"sos-ring",children:[se("svg",{viewBox:"0 0 188 188",children:[U("circle",{className:"track",cx:"94",cy:"94",r:He}),U("circle",{className:"prog",cx:"94",cy:"94",r:He,style:{strokeDasharray:gt,strokeDashoffset:n,transition:"stroke-dashoffset 1s linear"}})]}),se("div",{className:"sos-num",children:[U("b",{children:Math.max(r,0)}),U("span",{children:r>0?"seconds":"sent"})]})]}),U("div",{className:"sos-note",children:"If you close or lock your phone the countdown keeps running. Your emergency contacts and HerWay will be sent your live location, audio and route."}),se("div",{className:"sos-actions",children:[se("button",{className:"sos-call",children:[U(o.phone,{}),"Call 112 now"]}),U("button",{className:"sos-dismiss",onClick:e,children:r>0?"I'm safe, cancel":"Close"})]})]})})}import{Fragment as $e,jsx as f,jsxs as V}from"react/jsx-runtime";function qo(e){return e<60?`${e} min`:`${Math.round(e/60)} h`}function Jo(e){return e<1e3?`${e} m`:`${(e/1e3).toFixed(1)} km`}function Qo({n:e}){return f("span",{className:"stars",children:[0,1,2,3,4].map(r=>f(o.starFill,{className:r<e?"":"off"},r))})}function Zo({r:e}){let{go:r,setSelectedReportId:a,setSelectedVenueId:n}=v(),l=e.kind==="review"?"safe":e.severity,d=e.kind==="review"?"Review":e.severity==="hi"?"High":e.severity==="md"?"Medium":"Low";function c(){if(e.kind==="review"){let g=Y.find(h=>h.name===e.title)??Y[0];n(g.id),r("read-review")}else a(e.id),r("alert-detail")}return V("div",{className:`rcard ${l}`,onClick:c,children:[f("div",{className:"ricon",children:e.kind==="review"?f(o.star,{}):e.severity==="md"?f(o.eye,{}):f(o.alert,{})}),V("div",{className:"rbody",children:[V("div",{className:"rtop",children:[f("div",{className:"rttl",children:e.title}),f("div",{className:`rtag ${l}`,children:d})]}),V("div",{className:"rmeta",children:[e.kind==="review"?V($e,{children:[f(Qo,{n:e.stars??0})," \xB7 ",e.locationName]}):f($e,{children:e.locationName}),V("div",{className:"sub",children:[V("span",{children:[f(o.clock,{})," ",qo(e.minutesAgo)]}),V("span",{children:[f(o.mapPin,{})," ",Jo(e.distanceMeters)]}),e.confirmations?V("span",{children:[f(o.users,{})," ",e.confirmations]}):null]})]})]})]})}function er(){let{go:e,setSelectedEventId:r}=v(),a=we[0];return V("div",{className:"verify-banner",onClick:()=>{r(a.id),e("confirm-event")},children:[f("div",{className:"vb-ic",children:f(o.shield,{})}),V("div",{className:"vb-main",children:[f("div",{className:"vb-ttl",children:"Can you help verify a report?"}),V("div",{className:"vb-sub",children:[a.title," \xB7 ",a.where," \xB7 ",a.distanceMeters," m away"]})]}),f(o.chevronRight,{})]})}function ft(){let{radius:e,setFiltersOpen:r}=v(),a=re;return V("div",{className:"sheet",children:[V("div",{className:"sheet-scroll",children:[V("div",{className:"list-head",children:[f("div",{className:"kicker",children:"Near you"}),f("div",{className:"h-title",children:"Reports"}),V("div",{className:"h-loc",children:[f(o.mapPin,{})," Roeterseiland \xB7 Amsterdam \xB7 within ",e," km"]})]}),f("div",{style:{padding:"0 16px 6px"},children:f(er,{})}),f("div",{className:"cards",children:a.length?a.map(n=>f(Zo,{r:n},n.id)):f("div",{style:{padding:"40px 22px",color:"var(--ink-soft)",fontSize:13,fontWeight:600},children:"No reports match these filters."})})]}),f("button",{className:"filt-fab",onClick:()=>r(!0),children:f(o.filter,{})}),f(tr,{})]})}function tr(){let{filtersOpen:e,setFiltersOpen:r,sort:a,setSort:n,radius:l,setRadius:d,show:c,setShow:g}=v();if(!e)return null;let h=[{k:"closest",label:"Closest"},{k:"latest",label:"Latest"},{k:"risk",label:"Highest risk"}],w=[{k:"all",label:"All"},{k:"alerts",label:"Alerts"},{k:"reviews",label:"Reviews"}];return V($e,{children:[f("div",{className:"filt-scrim",onClick:()=>r(!1)}),V("div",{className:"filt-menu",children:[f("div",{className:"fm-sec",children:"Sort by"}),h.map(m=>V("div",{className:`fm-opt ${a===m.k?"on":""}`,onClick:()=>n(m.k),children:[m.label,a===m.k&&f("span",{className:"ck",children:f(o.check,{})})]},m.k)),f("div",{className:"fm-div"}),f("div",{className:"fm-sec",children:"Within"}),f("div",{className:"fm-pills",children:[1,2,5].map(m=>V("div",{className:`fm-pill ${l===m?"on":""}`,onClick:()=>d(m),children:[m," km"]},m))}),f("div",{className:"fm-div"}),f("div",{className:"fm-sec",children:"Show"}),w.map(m=>V("div",{className:`fm-opt ${c===m.k?"on":""}`,onClick:()=>g(m.k),children:[m.label,c===m.k&&f("span",{className:"ck",children:f(o.check,{})})]},m.k))]})]})}import{jsx as i,jsxs as y}from"react/jsx-runtime";function ut(){let{hand:e,setHand:r,toggles:a,toggle:n,reset:l,go:d,safeRadius:c,cycleRadius:g,sosTimer:h,cycleSosTimer:w,mapType:m,cycleMapType:I,contacts:R}=v();return y("div",{className:"pf-scroll",children:[y("div",{className:"pf-hero",children:[y("svg",{className:"flora",viewBox:"0 0 100 100",fill:"none",children:[y("g",{fill:"#EF8BA6",children:[i("ellipse",{cx:"50",cy:"22",rx:"9",ry:"18"}),i("ellipse",{cx:"50",cy:"78",rx:"9",ry:"18"}),i("ellipse",{cx:"22",cy:"50",rx:"18",ry:"9"}),i("ellipse",{cx:"78",cy:"50",rx:"18",ry:"9"}),i("ellipse",{cx:"30",cy:"30",rx:"9",ry:"16",transform:"rotate(-45 30 30)"}),i("ellipse",{cx:"70",cy:"30",rx:"9",ry:"16",transform:"rotate(45 70 30)"}),i("ellipse",{cx:"30",cy:"70",rx:"9",ry:"16",transform:"rotate(45 30 70)"}),i("ellipse",{cx:"70",cy:"70",rx:"9",ry:"16",transform:"rotate(-45 70 70)"})]}),i("circle",{cx:"50",cy:"50",r:"12",fill:"#FFFDF2"}),i("circle",{cx:"50",cy:"50",r:"5",fill:"#E98544"})]}),y("div",{className:"pf-id",children:[i("div",{className:"avatar",children:ge.initials}),y("div",{children:[i("div",{className:"pf-name",children:ge.name}),y("div",{className:"pf-badge",children:[i(o.shield,{}),"Verified"]})]})]}),y("div",{className:"pf-stats",children:[y("div",{className:"stat",children:[i("div",{className:"num",children:ge.stats.reports}),i("div",{className:"lbl",children:"Reports"})]}),y("div",{className:"stat",children:[i("div",{className:"num",children:ge.stats.reviews}),i("div",{className:"lbl",children:"Reviews"})]}),y("div",{className:"stat",children:[i("div",{className:"num",children:ge.stats.days}),i("div",{className:"lbl",children:"Days"})]})]})]}),i("div",{className:"grp-title",children:"Safety"}),y("div",{className:"grp",children:[y("div",{className:"row",onClick:()=>d("contacts"),children:[i("div",{className:"ic g1",children:i(o.users,{})}),i("div",{className:"lab",children:"Emergency contacts"}),i("div",{className:"val",children:R.length}),i("div",{className:"chev",children:i(o.chevronRight,{})})]}),y("div",{className:"row",onClick:g,children:[i("div",{className:"ic g3",children:i(o.mapPin,{})}),i("div",{className:"lab",children:"Safe radius"}),y("div",{className:"val",children:[c," m"]}),i("div",{className:"chev",children:i(o.chevronRight,{})})]}),y("div",{className:"row",children:[i("div",{className:"ic g2",children:i(o.mapPin,{})}),i("div",{className:"lab",children:"Share live location"}),i("div",{className:`sw-ios ${a.shareLocation?"on":""}`,onClick:()=>n("shareLocation"),children:i("div",{className:"knob"})})]})]}),i("div",{className:"grp-title",children:"Controls"}),y("div",{className:"grp",children:[y("div",{className:"row",children:[i("div",{className:"ic g3",children:i(o.hand,{})}),i("div",{className:"lab",children:"Dominant hand"}),y("div",{className:"hand-seg",children:[i("div",{className:e==="left"?"on":"",onClick:()=>r("left"),children:"Left"}),i("div",{className:e==="right"?"on":"",onClick:()=>r("right"),children:"Right"})]})]}),y("div",{className:"row",onClick:w,children:[i("div",{className:"ic g1",children:i(o.alert,{})}),i("div",{className:"lab",children:"SOS confirmation timer"}),y("div",{className:"val",children:[h," s"]}),i("div",{className:"chev",children:i(o.chevronRight,{})})]})]}),i("div",{className:"grp-title",children:"Notifications"}),y("div",{className:"grp",children:[y("div",{className:"row",children:[i("div",{className:"ic g1",children:i(o.bell,{})}),i("div",{className:"lab",children:"Nearby alerts"}),i("div",{className:`sw-ios ${a.nearbyAlerts?"on":""}`,onClick:()=>n("nearbyAlerts"),children:i("div",{className:"knob"})})]}),y("div",{className:"row",children:[i("div",{className:"ic g3",children:i(o.shield,{})}),i("div",{className:"lab",children:"Confirmations"}),i("div",{className:`sw-ios ${a.confirmations?"on":""}`,onClick:()=>n("confirmations"),children:i("div",{className:"knob"})})]}),y("div",{className:"row",children:[i("div",{className:"ic g4",children:i(o.clock,{})}),i("div",{className:"lab",children:"Quiet hours"}),i("div",{className:`sw-ios ${a.quietHours?"on":""}`,onClick:()=>n("quietHours"),children:i("div",{className:"knob"})})]})]}),i("div",{className:"grp-title",children:"Map & privacy"}),y("div",{className:"grp",children:[y("div",{className:"row",onClick:I,children:[i("div",{className:"ic g3",children:i(o.map,{})}),i("div",{className:"lab",children:"Default map type"}),i("div",{className:"val",children:m}),i("div",{className:"chev",children:i(o.chevronRight,{})})]}),y("div",{className:"row",children:[i("div",{className:"ic g5",children:i(o.lock,{})}),i("div",{className:"lab",children:"Post anonymously by default"}),i("div",{className:`sw-ios ${a.anonymousDefault?"on":""}`,onClick:()=>n("anonymousDefault"),children:i("div",{className:"knob"})})]}),y("div",{className:"row",onClick:()=>d("legal-privacy"),children:[i("div",{className:"ic g5",children:i(o.shield,{})}),i("div",{className:"lab",children:"Privacy policy"}),i("div",{className:"chev",children:i(o.chevronRight,{})})]}),y("div",{className:"row",onClick:()=>d("legal-terms"),children:[i("div",{className:"ic g5",children:i(o.lock,{})}),i("div",{className:"lab",children:"Terms & conditions"}),i("div",{className:"chev",children:i(o.chevronRight,{})})]})]}),i("div",{style:{padding:"20px 16px 30px"},children:i("button",{className:"btn-ghost",onClick:()=>l("ob-1"),children:"Replay intro"})})]})}import{jsx as P,jsxs as xe}from"react/jsx-runtime";var or={eye:P(o.eye,{}),alert:P(o.alert,{}),users:P(o.users,{}),lock:P(o.lock,{}),star:P(o.star,{})};function xt(){let{back:e,go:r,draft:a,setDraft:n}=v();return xe("div",{className:"flow",children:[xe("div",{className:"flow-scroll",children:[xe("div",{className:"tb",children:[P("div",{className:"tb-back",onClick:e,children:P(o.chevronLeft,{strokeWidth:2.4})}),P("div",{className:"tb-spacer"}),xe("div",{className:"steps",children:[P("i",{className:"on"}),P("i",{}),P("i",{})]})]}),P("div",{className:"flow-title",children:"What's happening?"}),P("div",{className:"flow-sub",children:"Pick the closest type, you set how severe it is next."}),P("div",{className:"cat-grid",children:Ye.map(l=>{let d=a.category===l.label;return xe("div",{className:`cat-tile ${d?"on":""}`,onClick:()=>n({category:l.label}),children:[P("div",{className:"ci",children:or[l.icon]}),P("div",{className:"ct",children:l.label}),P("div",{className:"tick",children:P(o.check,{strokeWidth:3})})]},l.key)})})]}),P("div",{className:"flow-foot",children:xe("button",{className:"btn-primary",onClick:()=>r("alert-details"),children:["Next",P(o.arrowRight,{strokeWidth:2.4})]})})]})}import{jsx as u,jsxs as H}from"react/jsx-runtime";var rr=[{key:"lo",label:"Low"},{key:"md",label:"Medium"},{key:"hi",label:"High"}];function bt(){let{back:e,go:r,draft:a,setDraft:n}=v();return H("div",{className:"flow",children:[H("div",{className:"flow-scroll",children:[H("div",{className:"tb",children:[u("div",{className:"tb-back",onClick:e,children:u(o.chevronLeft,{strokeWidth:2.4})}),u("div",{className:"tb-spacer"}),H("div",{className:"steps",children:[u("i",{}),u("i",{className:"on"}),u("i",{})]})]}),u("div",{className:"flow-title",children:"Add the details"}),u("div",{className:"flow-sub",children:"Near Sarphatistraat"}),H("div",{className:"field",children:[u("span",{className:"field-label",children:"How urgent?"}),u("div",{className:"sev-pick",children:rr.map(d=>u("div",{className:`sev ${d.key} ${a.severity===d.key?"on":""}`,onClick:()=>n({severity:d.key}),children:d.label},d.key))})]}),H("div",{className:"field",children:[u("span",{className:"field-label",children:"Location"}),u("div",{className:"map-mini",style:{position:"relative"},children:u(_,{view:"mini-user",variant:"mini",children:u(K,{lng:4.9192,lat:52.3641,severity:"hi",glyph:u(o.alert,{strokeWidth:2.4})})})}),H("div",{className:"loc-row",style:{marginTop:"10px"},children:[u("div",{className:"ld to"}),u("div",{className:"lt",children:"Sarphatistraat 104, Amsterdam"}),u("div",{style:{fontSize:"12.5px",fontWeight:700,color:"var(--green)"},children:"Edit"})]})]}),H("div",{className:"field",children:[H("span",{className:"field-label",children:["What did you see?"," ",u("span",{style:{fontWeight:600,textTransform:"none",letterSpacing:0,color:"rgba(34,48,39,.32)"},children:"\xB7 optional"})]}),u("textarea",{className:"textarea",placeholder:"Tall man in dark jacket, has crossed the street twice behind me\u2026"})]}),u("div",{className:"field",children:H("button",{className:"photo-add",children:[H("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[u("rect",{x:"3",y:"5",width:"18",height:"15",rx:"3"}),u("circle",{cx:"12",cy:"12.5",r:"3"}),u("path",{d:"M8 5l1.5-2h5L16 5"})]}),"Add a photo"]})}),u("div",{className:"grp",style:{margin:0},children:H("div",{className:"row",children:[u("div",{className:"ic g5",children:u(o.lock,{})}),u("div",{className:"lab",children:"Post anonymously"}),u("div",{className:`sw-ios ${a.anonymous?"on":""}`,onClick:()=>n({anonymous:!a.anonymous}),children:u("div",{className:"knob"})})]})})]}),u("div",{className:"flow-foot",children:H("button",{className:"btn-primary",onClick:()=>r("alert-sent"),children:["Continue",u(o.arrowRight,{strokeWidth:2.4})]})})]})}import{jsx as B,jsxs as le}from"react/jsx-runtime";function yt(){let{reset:e}=v();return le("div",{className:"flow",children:[B("div",{className:"tb",style:{position:"absolute",top:"64px",left:0,right:0,justifyContent:"center",zIndex:5},children:le("div",{className:"steps",children:[B("i",{className:"on"}),B("i",{className:"on"}),B("i",{className:"on"})]})}),le("div",{className:"sent",children:[B("div",{className:"sent-check",children:B(o.check,{strokeWidth:2.6})}),B("div",{className:"sent-title",children:"Report shared"}),B("div",{className:"sent-sub",children:"Women within 2\xA0km have been notified. Verified neighbours can confirm to raise its priority."}),le("div",{className:"sent-card",children:[B("div",{className:"ricon",style:{background:"linear-gradient(155deg,#4f9e79,var(--green-deep))",width:"38px",height:"38px",borderRadius:"12px"},children:le("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",style:{width:"19px",height:"19px",color:"#fff"},children:[B("circle",{cx:"12",cy:"12",r:"3.2"}),B("path",{d:"M2 12s3.6-7 10-7 10 7 10 7-3.6 7-10 7-10-7-10-7z"})]})}),le("div",{style:{flex:1,minWidth:0},children:[B("div",{style:{fontSize:"13.5px",fontWeight:700,color:"var(--ink)"},children:"Shared with women nearby"}),B("div",{style:{fontSize:"11.5px",fontWeight:600,color:"var(--ink-soft)",marginTop:"2px"},children:"Sarphatistraat \xB7 just now"})]})]})]}),le("div",{className:"flow-foot",children:[B("button",{className:"btn-primary",onClick:()=>e("home"),children:"Back to map"}),le("button",{className:"btn-ghost danger",onClick:()=>{window.location.href="tel:112"},children:[B(o.phone,{}),"Report to police, call 112"]})]})]})}import{jsx as x,jsxs as J}from"react/jsx-runtime";function wt(){let{back:e,go:r,destination:a,setDestination:n}=v(),l=Ae.filter(h=>h.kind==="saved"),d=Ae.filter(h=>h.kind==="recent");function c(h){n(h.name),r("route-overview")}function g({p:h,tone:w}){return J("div",{className:"row",onClick:()=>c(h),children:[x("div",{className:`ic ${w}`,children:h.kind==="saved"&&h.name==="Home"?J("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[x("path",{d:"M3 11l9-8 9 8"}),x("path",{d:"M5 10v10h14V10"})]}):h.kind==="saved"?J("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[x("rect",{x:"2",y:"7",width:"20",height:"14",rx:"2"}),x("path",{d:"M8 7V5a2 2 0 0 1 2-2h4a2 2 0 0 1 2 2v2"})]}):J("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[x("circle",{cx:"12",cy:"12",r:"9"}),x("path",{d:"M12 7v5l3 2"})]})}),x("div",{className:"lab",children:h.name}),x("div",{className:"val",children:h.detail.replace(" away","")}),x("div",{className:"chev",children:x(o.chevronRight,{})})]})}return J("div",{className:"flow",children:[J("div",{className:"flow-scroll",children:[x("div",{className:"tb",children:x("div",{className:"tb-back",onClick:e,children:x("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:x("polyline",{points:"15 18 9 12 15 6"})})})}),x("div",{className:"flow-title",children:"Plan a safe route"}),x("div",{className:"flow-sub",children:"We'll steer you around recent alerts and dark stretches."}),J("div",{className:"loc-stack",children:[J("div",{className:"loc-row",children:[x("div",{className:"ld from"}),x("div",{className:"lt",children:"Current location"}),x(o.locate,{style:{width:17,height:17,color:"var(--green-soft)"}})]}),J("div",{className:"loc-row",children:[x("div",{className:"ld to"}),x("input",{type:"text",placeholder:"Where to?",value:a,onChange:h=>n(h.target.value)}),x(o.search,{style:{width:17,height:17,color:"var(--ink-soft)"},strokeWidth:2.2})]})]}),x("div",{className:"grp-title",style:{padding:"4px 6px 9px"},children:"Saved"}),x("div",{className:"grp",style:{margin:0},children:l.map((h,w)=>x(g,{p:h,tone:w===0?"g3":"g2"},h.name))}),x("div",{className:"grp-title",style:{padding:"20px 6px 9px"},children:"Recent"}),x("div",{className:"grp",style:{margin:0},children:d.map((h,w)=>x(g,{p:h,tone:w===0?"g4":"g5"},h.name))})]}),x("div",{className:"flow-foot",children:J("button",{className:"btn-primary",onClick:()=>r("route-overview"),children:["Find route",x(o.arrowRight,{})]})})]})}import{Fragment as ar,jsx as T,jsxs as de}from"react/jsx-runtime";function kt(){let{back:e,go:r,routeChoice:a,setRouteChoice:n}=v(),l=a==="safer";return de(ar,{children:[de(_,{view:"route",variant:"full",children:[T(Ne,{points:qe,color:"#5C6B60",width:l?4:6,dash:l?"2 4":void 0,opacity:l?.45:.9}),T(Ne,{points:me,color:"#255942",width:l?7:4,opacity:l?1:.45}),T(ue,{lng:Ge[0],lat:Ge[1],className:"map-dot"}),T(K,{lng:Ie[0],lat:Ie[1],severity:"safe",glyph:T(o.check,{})}),T(K,{lng:De[0],lat:De[1],severity:"hi",glyph:T(o.alert,{})})]}),T("div",{className:"maptitle glass",style:{top:58},children:T("div",{className:"lab",children:"To Caf\xE9 Morgenzon"})}),T("div",{className:"tb-back glass",style:{position:"absolute",top:58,left:16,zIndex:45,background:"rgba(255,253,242,.7)"},onClick:e,children:T(o.chevronLeft,{})}),de("div",{className:"nav-sheet",children:[Xe.map(d=>de("div",{className:`route-opt${a===d.key?" on":""}`,onClick:()=>n(d.key),children:[T("div",{className:"rt-ic",children:d.key==="safer"?T(o.shield,{}):T(o.route,{})}),de("div",{className:"rt-main",children:[de("div",{className:"rt-ttl",children:[d.title,d.badge?T("span",{className:"rt-badge",children:d.badge}):null]}),T("div",{className:"rt-sub",children:d.detail})]}),de("div",{className:"rt-time",children:[d.time.replace(" min",""),T("br",{}),T("span",{style:{fontSize:10,fontWeight:700,color:"var(--ink-soft)"},children:"min"})]})]},d.key)),de("button",{className:"btn-primary",onClick:()=>r("navigation"),children:["Start route",T(o.arrowRight,{})]})]})]})}import{Fragment as nr,jsx as Q,jsxs as Z}from"react/jsx-runtime";function Nt(){let{reset:e}=v();return Z(nr,{children:[Z(_,{view:"nav",variant:"full",children:[Q(Ne,{points:me,color:"#255942",width:7}),Q(ue,{lng:me[1][0],lat:me[1][1],className:"user-blip"})]}),Z("div",{className:"nav-banner",children:[Q("div",{className:"nb-man",children:Q(o.cornerUpLeft,{strokeWidth:2.4})}),Z("div",{children:[Q("div",{className:"nb-dist",children:"200 m"}),Q("div",{className:"nb-street",children:"Turn left onto Plantage Kerklaan"})]})]}),Z("div",{className:"nav-sheet",children:[Z("div",{className:"ns-row",children:[Z("div",{children:[Q("div",{className:"ns-eta",children:"12 min"}),Q("div",{className:"ns-meta",children:"0.9 km \xB7 arrive 9:53"})]}),Z("div",{className:"ns-safe",children:[Q(o.shield,{strokeWidth:2.2}),"Safer route"]})]}),Z("button",{className:"btn-ghost danger",onClick:()=>e("home"),children:[Q(o.x,{}),"End navigation"]})]})]})}import{useState as St}from"react";import{jsx as L,jsxs as ee}from"react/jsx-runtime";function Ct(){let{back:e,go:r}=v(),[a,n]=St(4),[l,d]=St(["Friendly staff"]);function c(g){d(h=>h.includes(g)?h.filter(w=>w!==g):[...h,g])}return ee("div",{className:"flow",children:[ee("div",{className:"flow-scroll",children:[L("div",{className:"tb",children:L("div",{className:"tb-back",onClick:e,children:L(o.chevronLeft,{strokeWidth:2.4})})}),L("div",{className:"flow-title",children:"Rate this place"}),L("div",{className:"flow-sub",children:"Your take helps other women feel safe nearby."}),ee("div",{className:"field",children:[L("span",{className:"field-label",children:"Place"}),ee("div",{className:"searchbar",children:[L(o.mapPin,{strokeWidth:2.2}),L("input",{type:"text",defaultValue:"Caf\xE9 Morgenzon \xB7 Plantage"})]})]}),ee("div",{className:"field",children:[L("span",{className:"field-label",children:"Your review"}),L("div",{className:"rate",children:[0,1,2,3,4].map(g=>L(o.starFill,{className:g<a?"on":void 0,onClick:()=>n(g+1)},g))})]}),ee("div",{className:"field",children:[L("span",{className:"field-label",children:"What stood out"}),L("div",{className:"filters",style:{padding:0},children:Ke.map(g=>{let h=l.includes(g);return ee("div",{className:`chip ${h?"on":""}`,onClick:()=>c(g),children:[h&&L(o.check,{strokeWidth:2.4}),g]},g)})})]}),ee("div",{className:"field",children:[ee("span",{className:"field-label",children:["Add a note"," ",L("span",{style:{fontWeight:600,textTransform:"none",letterSpacing:0,color:"rgba(34,48,39,.32)"},children:"\xB7 optional"})]}),L("input",{className:"input",type:"text",placeholder:"Staff walked me to a taxi, felt safe."})]})]}),L("div",{className:"flow-foot",children:L("button",{className:"btn-primary",onClick:()=>r("review-sent"),children:"Post review"})})]})}import{jsx as ce,jsxs as Se}from"react/jsx-runtime";function Rt(){let{reset:e}=v();return Se("div",{className:"flow",children:[Se("div",{className:"sent",children:[ce("div",{className:"sent-check",children:ce(o.check,{strokeWidth:2.6})}),ce("div",{className:"sent-title",children:"Review posted"}),ce("div",{className:"sent-sub",children:"Thanks, your take helps other women decide where they feel safe nearby."}),Se("div",{className:"vchips",children:[Se("span",{className:"vchip",children:[ce(o.check,{strokeWidth:2.6}),"Added to map"]}),Se("span",{className:"vchip",children:[ce(o.check,{strokeWidth:2.6}),"Shared with the circle"]})]})]}),ce("div",{className:"flow-foot",children:ce("button",{className:"btn-primary",onClick:()=>e("home"),children:"Done"})})]})}import{useState as zt}from"react";async function Me(e){try{typeof navigator<"u"&&navigator.clipboard&&await navigator.clipboard.writeText(`${e.title}
2
+ ${e.text}`)}catch{}}import{Fragment as Et,jsx as A,jsxs as F}from"react/jsx-runtime";var ir={hi:"High risk",md:"Medium risk",lo:"Low risk"};function Mt(){let{back:e,selectedReportId:r}=v(),a=re.find(w=>w.id===r)??re[0],n=a.severity??"md",[l,d]=zt(!1),[c,g]=zt(a.confirmations??0);function h(){l||(d(!0),g(w=>w+1))}return F("div",{className:"flow",children:[F("div",{className:"flow-scroll",children:[F("div",{className:"tb",children:[A("div",{className:"tb-back",onClick:e,children:A(o.chevronLeft,{strokeWidth:2.4})}),A("div",{className:"tb-spacer"}),A("div",{className:`rtag ${n}`,style:{fontSize:10},children:ir[n]})]}),A("div",{className:"map-mini",style:{marginTop:16,position:"relative"},children:F(_,{view:nt[a.id]??"mini-r1",variant:"mini",children:[A("div",{className:"heat",style:{background:"radial-gradient(circle 70px at 50% 50%, rgba(212,89,52,.55), transparent 70%)"}}),A(K,{lng:a.coord[0],lat:a.coord[1],severity:n,glyph:A(o.alert,{strokeWidth:2.4})})]})}),A("div",{className:"flow-title",style:{marginTop:18},children:a.title}),F("div",{className:"h-loc",style:{marginTop:8},children:[A(o.mapPin,{}),a.locationName]}),F("div",{className:"rmeta",style:{marginTop:14,fontSize:13},children:[a.description,F("div",{className:"sub",style:{marginTop:12,gap:16},children:[F("span",{children:[A(o.clock,{strokeWidth:2.2}),a.minutesAgo," min ago"]}),F("span",{children:[A(o.mapPin,{strokeWidth:2.2}),a.distanceMeters," m away"]}),F("span",{children:[A(o.users,{strokeWidth:2.2}),c," confirmed"]})]})]})]}),F("div",{className:"flow-foot",children:[A("button",{className:"btn-primary",onClick:h,children:l?F(Et,{children:[A(o.check,{strokeWidth:2.4}),"Confirmed"]}):F(Et,{children:[A(o.users,{strokeWidth:2.2}),"I saw this too"]})}),F("button",{className:"btn-ghost",onClick:()=>Me({title:`Her Way, ${a.title}`,text:`${a.title} near ${a.locationName} (${a.distanceMeters} m away, ${a.minutesAgo} min ago). Stay safe.`}),children:[A(o.share,{}),"Share with a contact"]})]})]})}import{Fragment as Vt,jsx as t,jsxs as p}from"react/jsx-runtime";function Pt(){let{screen:e,go:r,reset:a,authMode:n,setAuthMode:l}=v(),d=h=>{h.preventDefault(),l("login"),e!=="ob-3"&&r("ob-3")},c=h=>{h.preventDefault(),l("signup")},g=(h,w)=>{h.preventDefault(),r(w)};return e==="ob-1"?p("div",{className:"ob",children:[p("div",{className:"ob-scroll",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center",gap:28},children:[t("div",{className:"ob-wordmark",children:"HER\xA0WAY"}),p("div",{className:"ob-sub",children:["Safety, the way women share it.",t("br",{}),"A verified women-only circle in Amsterdam."]}),p("div",{className:"ob-points",children:[p("div",{className:"ob-point",children:[t("div",{className:"pi",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"M12 2 4 5v6c0 5 3.5 8.5 8 11 4.5-2.5 8-6 8-11V5z"}),t("path",{d:"M9 12l2 2 4-4"})]})}),"Live safety map & real-time alerts"]}),p("div",{className:"ob-point",children:[t("div",{className:"pi",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2"}),t("circle",{cx:"12",cy:"7",r:"4"})]})}),"Verified women only, ID checked"]})]})]}),p("div",{className:"flow-foot",children:[p("button",{className:"btn-primary",onClick:()=>{l("signup"),r("ob-2")},children:["Get started",p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:[t("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),t("polyline",{points:"13 6 19 12 13 18"})]})]}),p("div",{className:"ob-fine",style:{marginTop:4},children:["Already a member? ",t("a",{href:"#",onClick:d,children:"Log in"})]})]})]}):e==="ob-2"?p("div",{className:"ob",children:[p("div",{className:"ob-scroll",style:{display:"flex",flexDirection:"column",paddingTop:84},children:[p("div",{className:"tb",children:[t("div",{className:"tb-back",onClick:()=>a("ob-1"),children:t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:t("polyline",{points:"15 18 9 12 15 6"})})}),t("div",{className:"tb-spacer"}),p("div",{className:"steps",children:[t("i",{className:"on"}),t("i",{}),t("i",{})]})]}),p("div",{style:{flex:1,display:"flex",flexDirection:"column",justifyContent:"center"},children:[t("div",{className:"ob-title",style:{marginTop:18},children:"Tell us about you"}),t("div",{className:"ob-sub",style:{marginBottom:20},children:"Just the basics, it shapes your map and alerts."}),p("div",{className:"field",children:[t("span",{className:"field-label",children:"First name"}),t("input",{className:"input",type:"text",defaultValue:"Jane"})]}),p("div",{className:"field",children:[t("span",{className:"field-label",children:"City"}),t("input",{className:"input",type:"text",defaultValue:"Amsterdam"})]}),t("div",{className:"grp",style:{margin:"6px 0 0"},children:p("div",{className:"row",onClick:()=>r("contacts"),children:[t("div",{className:"ic g1",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2"}),t("circle",{cx:"9",cy:"7",r:"4"}),t("path",{d:"M19 8v6M22 11h-6"})]})}),t("div",{className:"lab",children:"Add an emergency contact"}),t("div",{className:"val",children:"Optional"}),t("div",{className:"chev",children:t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:t("polyline",{points:"9 18 15 12 9 6"})})})]})})]})]}),t("div",{className:"flow-foot",children:p("button",{className:"btn-primary",onClick:()=>r("ob-3"),children:["Continue",p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:[t("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),t("polyline",{points:"13 6 19 12 13 18"})]})]})})]}):e==="ob-3"?t("div",{className:"ob",children:p("div",{className:"ob-scroll",style:{display:"flex",flexDirection:"column",paddingTop:84,paddingBottom:40},children:[p("div",{className:"tb",children:[t("div",{className:"tb-back",onClick:()=>a(n==="login"?"ob-1":"ob-2"),children:t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:t("polyline",{points:"15 18 9 12 15 6"})})}),t("div",{className:"tb-spacer"}),n==="login"?null:p("div",{className:"steps",children:[t("i",{}),t("i",{className:"on"}),t("i",{})]})]}),t("div",{style:{flex:.7,minHeight:18}}),t("div",{className:"ob-title",children:n==="login"?"Welcome back":"Create your account"}),n==="login"&&t("div",{className:"ob-sub",style:{marginBottom:22},children:"Sign in to pick up where you left off."}),t("div",{style:{flex:1,minHeight:16}}),p("div",{className:"auth-list",children:[p("button",{className:"auth-btn dark",onClick:()=>r(n==="login"?"ob-5":"ob-4"),children:[t("span",{className:"ai",children:t("svg",{viewBox:"0 0 24 24",fill:"currentColor",children:t("path",{d:"M16.4 12.8c0-2.1 1.7-3.1 1.8-3.2-1-1.4-2.5-1.6-3-1.6-1.3-.1-2.5.8-3.1.8-.6 0-1.6-.7-2.7-.7-1.4 0-2.6.8-3.3 2-1.4 2.5-.4 6.1 1 8.1.7 1 1.5 2.1 2.5 2 1-.04 1.4-.65 2.6-.65 1.2 0 1.5.65 2.6.63 1.1-.02 1.8-1 2.5-2 .8-1.1 1.1-2.2 1.1-2.3-.02-.01-2.1-.81-2.1-3.2zM14.5 6.3c.6-.7 1-1.6.9-2.6-.85.04-1.9.57-2.5 1.27-.5.6-1 1.6-.88 2.5.95.08 1.9-.48 2.48-1.17z"})})}),t("span",{className:"albl",children:"Continue with Apple"}),t("span",{className:"asp"})]}),p("button",{className:"auth-btn",onClick:()=>r(n==="login"?"ob-5":"ob-4"),children:[t("span",{className:"ai",children:p("svg",{viewBox:"0 0 48 48",children:[t("path",{fill:"#FFC107",d:"M43.6 20.5H42V20H24v8h11.3C33.7 32.9 29.3 36 24 36c-6.6 0-12-5.4-12-12s5.4-12 12-12c3.1 0 5.9 1.2 8 3.1l5.7-5.7C34 6.1 29.3 4 24 4 12.9 4 4 12.9 4 24s8.9 20 20 20 20-8.9 20-20c0-1.3-.1-2.3-.4-3.5z"}),t("path",{fill:"#FF3D00",d:"M6.3 14.7l6.6 4.8C14.7 16 19 12 24 12c3.1 0 5.9 1.2 8 3.1l5.7-5.7C34 6.1 29.3 4 24 4 16.3 4 9.7 8.3 6.3 14.7z"}),t("path",{fill:"#4CAF50",d:"M24 44c5.2 0 9.9-2 13.4-5.2l-6.2-5.2C29.2 35 26.7 36 24 36c-5.3 0-9.7-3.1-11.3-7.6l-6.5 5C9.6 39.6 16.2 44 24 44z"}),t("path",{fill:"#1976D2",d:"M43.6 20.5H42V20H24v8h11.3c-.8 2.2-2.2 4.1-4.1 5.6l6.2 5.2C39.9 35.9 44 30.5 44 24c0-1.3-.1-2.3-.4-3.5z"})]})}),t("span",{className:"albl",children:"Continue with Google"}),t("span",{className:"asp"})]}),p("button",{className:"auth-btn",onClick:()=>r(n==="login"?"ob-5":"ob-4"),children:[t("span",{className:"ai",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"var(--green)",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[t("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),t("path",{d:"m3 7 9 6 9-6"})]})}),t("span",{className:"albl",children:"Email me a magic link"}),t("span",{className:"asp"})]}),p("button",{className:"auth-btn",onClick:()=>r(n==="login"?"ob-5":"ob-4"),children:[t("span",{className:"ai",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"var(--green)",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[t("path",{d:"M2 12C2 6.5 6.5 2 12 2a10 10 0 0 1 8 4"}),t("path",{d:"M5 19.5C5.5 18 6 15 6 12c0-.7.12-1.37.34-2"}),t("path",{d:"M17.29 21.02c.12-.6.43-2.3.5-3.02"}),t("path",{d:"M12 10a2 2 0 0 0-2 2c0 1.02-.1 2.51-.26 4"}),t("path",{d:"M8.65 22c.21-.66.45-1.32.57-2"}),t("path",{d:"M14 13.12c0 2.38 0 6.38-1 8.88"}),t("path",{d:"M2 16h.01"}),t("path",{d:"M21.8 16c.2-2 .131-5.354 0-6"}),t("path",{d:"M9 6.8a6 6 0 0 1 9 5.2c0 .47 0 1.17-.02 2"})]})}),t("span",{className:"albl",children:"Use a passkey"}),t("span",{className:"asp"})]})]}),t("div",{className:"ob-or",children:"or"}),p("div",{className:"ob-fine",children:["By continuing you agree to our ",t("a",{href:"#",onClick:h=>g(h,"legal-terms"),children:"Terms"})," &"," ",t("a",{href:"#",onClick:h=>g(h,"legal-privacy"),children:"Privacy\xA0Policy"}),"."," ",n==="login"?p(Vt,{children:["New here? ",t("a",{href:"#",onClick:c,children:"Create an account"})]}):p(Vt,{children:["Already a member? ",t("a",{href:"#",onClick:d,children:"Log in"})]})]})]})}):e==="ob-4"?p("div",{className:"ob",children:[p("div",{className:"ob-scroll",children:[p("div",{className:"tb",children:[t("div",{className:"tb-back",onClick:()=>a("ob-3"),children:t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:t("polyline",{points:"15 18 9 12 15 6"})})}),t("div",{className:"tb-spacer"}),p("div",{className:"steps",children:[t("i",{}),t("i",{}),t("i",{className:"on"})]})]}),p("div",{className:"eidas-badge",style:{margin:"14px 0 12px"},children:[p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.2,strokeLinecap:"round",strokeLinejoin:"round",children:[t("rect",{x:"4",y:"11",width:"16",height:"10",rx:"2"}),t("path",{d:"M8 11V7a4 4 0 0 1 8 0v4"})]}),"Verified by eID \xB7 eIDAS"]}),t("div",{className:"ob-title",children:"Verify you're a woman"}),t("div",{className:"ob-sub",style:{marginBottom:18},children:"A one-time check keeps HerWay women-only. Takes about a minute."}),p("div",{className:"scan-frame",children:[p("div",{className:"scan-card",children:[t("div",{className:"photo"}),p("div",{className:"lines",children:[t("i",{}),t("i",{}),t("i",{}),t("i",{})]})]}),p("div",{className:"scan-corners",children:[t("span",{className:"tl"}),t("span",{className:"tr"}),t("span",{className:"bl"}),t("span",{className:"br"})]})]}),p("div",{style:{display:"flex",alignItems:"center",gap:14,marginTop:16},children:[t("div",{className:"liveness",children:p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:1.8,strokeLinecap:"round",strokeLinejoin:"round",children:[t("circle",{cx:"12",cy:"9",r:"4"}),t("path",{d:"M5.5 20a7 7 0 0 1 13 0"})]})}),p("div",{children:[t("div",{style:{fontSize:14,fontWeight:700,color:"var(--ink)"},children:"Step 2 \xB7 Confirm with a picture"}),t("div",{style:{fontSize:12,fontWeight:600,color:"var(--ink-soft)",marginTop:3,lineHeight:1.4},children:"A quick selfie in the app confirms it's really you."})]})]}),p("div",{className:"verify-steps",style:{marginTop:18},children:[p("div",{className:"verify-step",children:[t("div",{className:"vs-num active",children:"1"}),p("div",{className:"vs-main",children:[t("div",{className:"vs-ttl",children:"Scan your ID document"}),t("div",{className:"vs-sub",children:"Passport, ID card or driving licence"})]})]}),p("div",{className:"verify-step",children:[t("div",{className:"vs-num idle",children:"2"}),p("div",{className:"vs-main",children:[t("div",{className:"vs-ttl",children:"Confirm with a picture"}),t("div",{className:"vs-sub",children:"Matches your face to the document"})]})]}),p("div",{className:"verify-step",children:[t("div",{className:"vs-num idle",children:t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.6,strokeLinecap:"round",strokeLinejoin:"round",children:t("polyline",{points:"20 6 9 17 4 12"})})}),p("div",{className:"vs-main",children:[t("div",{className:"vs-ttl",children:"Eligibility confirmed"}),t("div",{className:"vs-sub",children:"Reads gender & age, then unlocks access"})]})]})]}),p("div",{className:"privacy-note",style:{marginTop:16},children:[p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round",children:[t("rect",{x:"4",y:"11",width:"16",height:"10",rx:"2"}),t("path",{d:"M8 11V7a4 4 0 0 1 8 0v4"})]}),p("span",{children:["Encrypted end-to-end by our eID partner. HerWay only receives ",t("b",{children:"gender and age"}),", your document is never seen or stored by us."]})]})]}),t("div",{className:"flow-foot",children:p("button",{className:"btn-primary",onClick:()=>r("ob-5"),children:[p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.2,strokeLinecap:"round",strokeLinejoin:"round",children:[t("rect",{x:"3",y:"5",width:"18",height:"14",rx:"2"}),t("path",{d:"M3 10h18"}),t("path",{d:"M7 15h4"})]}),"Scan my ID"]})})]}):p("div",{className:"ob",children:[p("div",{className:"ob-scroll",style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center"},children:[t("div",{className:"sent-check",style:{width:88,height:88},children:t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.6,strokeLinecap:"round",strokeLinejoin:"round",children:t("polyline",{points:"20 6 9 17 4 12"})})}),t("div",{className:"ob-title",style:{marginTop:22},children:n==="login"?"Welcome back, Jane":"You're in, Jane"}),t("div",{className:"ob-sub",style:{maxWidth:250},children:n==="login"?"Signed in and ready. Your women-only circle is right where you left it.":"Welcome to the women-only circle. You're verified and ready to look out for each other."}),p("div",{className:"vchips",children:[p("span",{className:"vchip",children:[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.6,strokeLinecap:"round",strokeLinejoin:"round",children:t("polyline",{points:"20 6 9 17 4 12"})}),"ID verified"]}),p("span",{className:"vchip",children:[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.6,strokeLinecap:"round",strokeLinejoin:"round",children:t("polyline",{points:"20 6 9 17 4 12"})}),"Liveness passed"]}),p("span",{className:"vchip",children:[t("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.6,strokeLinecap:"round",strokeLinejoin:"round",children:t("polyline",{points:"20 6 9 17 4 12"})}),"Women-only"]})]})]}),t("div",{className:"flow-foot",children:p("button",{className:"btn-primary",onClick:()=>a("home"),children:["Enter HerWay",p("svg",{viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2.4,strokeLinecap:"round",strokeLinejoin:"round",children:[t("line",{x1:"5",y1:"12",x2:"19",y2:"12"}),t("polyline",{points:"13 6 19 12 13 18"})]})]})})]})}import{jsx as pe,jsxs as je}from"react/jsx-runtime";var sr={title:"Terms & Conditions",updated:"Last updated June 2026",body:[["1. Using Her Way","By making an account and using Her Way, you agree to these terms. Her Way is a community app that helps women feel safer when they are out in the city. Please use it in a responsible way."],["2. Who can use it","Her Way is only for women aged 18 and over. You verify this once when you sign up. Please do not share your account with anyone else."],["3. Being respectful","Only post reports and reviews that are honest and true. Do not use the app to harass, scare or bully other people. We can remove accounts that break these rules."],["4. Safety","Her Way is not a replacement for the police. If you are in danger, always call 112 first and then use the app if you can."],["5. Changes","We may update these terms as the app grows. If we make big changes, we will let you know inside the app."]]},lr={title:"Privacy Policy",updated:"Last updated June 2026",body:[["1. Your information","We care about your privacy. We only ask for the information we need to make the app work, like your first name and your general location."],["2. Location","We use your location to show you reports and safer routes near you. You can turn location off in your settings whenever you want."],["3. Verification","When you sign up we check that you are a woman over 18 through a trusted ID partner. We do not keep a copy of your ID document."],["4. Sharing","We will never sell your data. Your emergency contacts and reports are only shared when you choose to share them."],["5. Your choices","You can edit or delete your account and your data at any time. If you have any questions, you can contact us in the app."]]};function Tt(){let{back:e,screen:r}=v(),a=r==="legal-terms"?sr:lr;return pe("div",{className:"flow",children:je("div",{className:"flow-scroll",children:[je("div",{className:"tb",children:[pe("div",{className:"tb-back",onClick:e,children:pe(o.chevronLeft,{})}),pe("div",{className:"tb-spacer"})]}),pe("div",{className:"flow-title",children:a.title}),pe("div",{className:"flow-sub",children:a.updated}),a.body.map(([n,l])=>je("div",{style:{marginBottom:18},children:[pe("div",{style:{fontFamily:"var(--serif)",fontWeight:600,fontSize:16,color:"var(--green)",marginBottom:5},children:n}),pe("div",{style:{fontSize:13,lineHeight:1.6,color:"var(--ink-soft)",fontWeight:500},children:l})]},n))]})})}import{useState as Ve}from"react";import{jsx as W,jsxs as te}from"react/jsx-runtime";function Wt(){let{back:e}=v(),[r,a]=Ve(""),[n,l]=Ve(""),[d,c]=Ve(!1),[g,h]=Ve({});function w(){!r.trim()||!n.trim()||(c(!0),a(""),l(""))}return te("div",{className:"flow",children:[te("div",{className:"flow-scroll",children:[te("div",{className:"tb",children:[W("div",{className:"tb-back",onClick:e,children:W(o.chevronLeft,{})}),W("div",{className:"tb-spacer"})]}),W("div",{className:"flow-title",children:"Emergency contacts"}),W("div",{className:"flow-sub",children:"People alerted the moment you fire an SOS. Add as many as you trust."}),W("div",{className:"grp",style:{margin:"0 0 22px"},children:Re.map(m=>{let I=g[m.id];return te("div",{className:"row",style:I?{opacity:.5}:void 0,children:[W("div",{className:"ic g1",children:W(o.person,{})}),te("div",{className:"lab",style:I?{textDecoration:"line-through"}:void 0,children:[m.name,W("div",{style:{fontSize:12,fontWeight:600,color:"var(--ink-soft)"},children:I?"Removed":m.phone})]}),I?W("div",{className:"val",style:{color:"var(--ink-soft)"},children:"Removed"}):W("div",{className:"chev",onClick:()=>h(R=>({...R,[m.id]:!0})),style:{cursor:"pointer"},children:W(o.x,{})})]},m.id)})}),d&&te("div",{className:"privacy-note",style:{marginBottom:18,color:"var(--green)"},children:[W(o.check,{strokeWidth:2.4}),"Contact added, they'll be alerted when you fire an SOS."]}),te("div",{className:"field",children:[W("label",{className:"field-label",children:"Name"}),W("input",{className:"input",value:r,onChange:m=>a(m.target.value),placeholder:"e.g. Mara"})]}),te("div",{className:"field",children:[W("label",{className:"field-label",children:"Phone"}),W("input",{className:"input",value:n,onChange:m=>l(m.target.value),placeholder:"+31 6 \u2026",inputMode:"tel"})]})]}),W("div",{className:"flow-foot",children:te("button",{className:"btn-primary",onClick:w,children:[W(o.plus,{}),"Add contact"]})})]})}import{jsx as $,jsxs as oe}from"react/jsx-runtime";function dr({n:e}){return $("span",{className:"stars",children:[0,1,2,3,4].map(r=>$(o.starFill,{className:r<e?"":"off"},r))})}var cr={calm:{cls:"rtag safe",label:"Calm now"},busy:{cls:"rtag md",label:"Busy"},caution:{cls:"rtag hi",label:"Caution"}};function pr({v:e}){let{go:r,setSelectedVenueId:a}=v(),n=cr[e.status];function l(){a(e.id),r("read-review")}return oe("div",{className:"rcard",onClick:l,children:[$("div",{className:"ricon",children:$(o.mapPin,{})}),oe("div",{className:"rbody",children:[oe("div",{className:"rtop",children:[$("div",{className:"rttl",children:e.name}),$("div",{className:n.cls,children:n.label})]}),oe("div",{className:"rmeta",children:[e.type," \xB7 ",e.area,oe("div",{className:"sub",children:[oe("span",{children:[$(dr,{n:e.stars})," ",e.reviews," reviews"]}),oe("span",{children:[$(o.clock,{})," ",e.vibe]})]})]})]})]})}function Lt(){return $("div",{className:"sheet",children:oe("div",{className:"sheet-scroll",style:{paddingTop:124},children:[oe("div",{className:"list-head",children:[$("div",{className:"kicker",children:"Discover"}),$("div",{className:"h-title",children:"Places near you"})]}),$("div",{className:"cards",children:Y.map(e=>$(pr,{v:e},e.id))})]})})}import{jsx as z,jsxs as G}from"react/jsx-runtime";var hr={calm:{cls:"rtag safe",label:"Calm now"},busy:{cls:"rtag md",label:"Busy"},caution:{cls:"rtag hi",label:"Caution"}},At=["Mara V.","Sofia K.","Anouk D.","Liv R.","Noor B.","Emma J.","Tessa M.","Yara P.","Iris H."],gr=["2 days ago","1 week ago","3 weeks ago"],Gt={Caf\u00E9:{good:["Cosy spot, staff noticed I was alone and kept checking in. Easy to grab a taxi right outside.","Bright and calm in the afternoon. Felt completely comfortable working here for hours."],mid:["Pleasant enough, but it got cramped later on. Fine in daylight, less so after dark."],bad:["Felt overlooked by staff and the back corner is dim. Wouldn't sit alone here at night."]},Bar:{good:["Relaxed crowd and the bartenders keep an eye on drinks. Walked out feeling at ease.","Door staff were attentive and the street outside is well-lit. Good vibe for a night out."],mid:["Decent, but watch your drink, it gets busy and a bit rowdy near closing."],bad:["Pushy crowd and poorly lit out front. Saw a couple of incidents, stay alert here."]},Club:{good:["Busy but security on the door is solid. They walked a few of us to the rank at closing.","Staff stepped in fast when someone got pushy on the floor."],mid:["Long queue and packed inside. Go with friends and keep together."],bad:["Felt unsafe, door was chaotic and no one stepped in when things got heated. Left early."]}};function mr(e){return e>=4?"good":e===3?"mid":"bad"}function vr(e){let r=Gt[e.type]??Gt.Bar,a=d=>Math.max(1,Math.min(5,d)),n=[a(e.stars),a(e.stars-1),a(e.stars+1)],l=e.id.length;return n.map((d,c)=>{let g=r[mr(d)];return{name:At[(c+l)%At.length],time:gr[c],stars:d,note:g[c%g.length]}})}function It({n:e}){return z("span",{className:"stars",children:[0,1,2,3,4].map(r=>z(o.starFill,{className:r<e?"":"off"},r))})}function Dt(){let{back:e,go:r,selectedVenueId:a}=v(),n=Y.find(c=>c.id===a)??Y[0],l=hr[n.status],d=vr(n);return G("div",{className:"flow",children:[G("div",{className:"flow-scroll",children:[G("div",{className:"tb",children:[z("div",{className:"tb-back",onClick:e,children:z(o.chevronLeft,{strokeWidth:2.4})}),z("div",{className:"tb-spacer"}),z("div",{className:l.cls,children:l.label})]}),z("div",{className:"flow-title",style:{marginTop:16},children:n.name}),G("div",{className:"h-loc",children:[z(o.mapPin,{}),n.type," \xB7 ",n.area]}),G("div",{className:"rmeta",style:{marginTop:16,display:"flex",alignItems:"center",gap:10,fontSize:13},children:[z(It,{n:n.stars}),G("span",{style:{fontWeight:800,color:"var(--ink)",fontSize:14},children:[n.stars,".0"]}),z("span",{style:{opacity:.6},children:"\xB7"}),G("span",{children:[n.reviews," reviews"]})]}),G("div",{className:"privacy-note",style:{marginTop:14},children:[z(o.shield,{}),G("span",{children:[z("strong",{style:{color:"var(--green)",fontWeight:800},children:"Live: "}),n.statusNote]})]}),z("div",{className:"field-label",style:{marginTop:24},children:"What people mention"}),z("div",{className:"filters",style:{padding:"4px 0 0"},children:n.tags.map(c=>z("span",{className:"chip",children:c},c))}),z("div",{className:"field-label",style:{marginTop:24},children:"Review history"}),z("div",{style:{display:"flex",flexDirection:"column",gap:12,marginTop:4},children:d.map((c,g)=>G("div",{style:{background:"#fff",borderRadius:18,padding:"14px 16px",boxShadow:"0 10px 24px -18px rgba(34,48,39,.4)",border:"1px solid rgba(34,48,39,.05)"},children:[G("div",{style:{display:"flex",alignItems:"center",gap:11},children:[z("div",{style:{width:34,height:34,borderRadius:12,flexShrink:0,display:"flex",alignItems:"center",justifyContent:"center",background:"linear-gradient(155deg,#4f9e79,var(--green))",color:"#fff",fontWeight:800,fontSize:14},children:c.name.charAt(0)}),G("div",{style:{flex:1,minWidth:0},children:[z("div",{style:{fontSize:13.5,fontWeight:700,color:"var(--ink)"},children:c.name}),G("div",{style:{display:"flex",alignItems:"center",gap:8,marginTop:2,fontSize:11,fontWeight:600,color:"var(--ink-soft)"},children:[z(It,{n:c.stars}),G("span",{style:{display:"inline-flex",alignItems:"center",gap:4},children:[z(o.clock,{})," ",c.time]})]})]})]}),z("div",{style:{marginTop:10,fontSize:12.5,fontWeight:600,lineHeight:1.5,color:"var(--ink-soft)"},children:c.note})]},g))})]}),G("div",{className:"flow-foot",children:[G("button",{className:"btn-primary",onClick:()=>r("review"),children:[z(o.star,{strokeWidth:2.2}),"Write a review"]}),G("button",{className:"btn-ghost",onClick:()=>Me({title:`Her Way, ${n.name}`,text:`${n.name} (${n.type}, ${n.area}), ${n.stars}\u2605 from ${n.reviews} reviews. ${n.statusNote}`}),children:[z(o.share,{}),"Share this place"]})]})]})}import{useState as fr}from"react";import{jsx as E,jsxs as j}from"react/jsx-runtime";var ur={yes:{title:"Thanks, confirmation added",sub:"Your confirmation helps verify this report for women nearby."},unsure:{title:"Noted, thanks for checking",sub:"No problem. Only confirm what you actually witnessed."},no:{title:"Thanks, marked as not witnessed",sub:"Got it. This helps us keep reports accurate for everyone."}};function Bt(){let{back:e,reset:r,selectedEventId:a}=v(),n=we.find(c=>c.id===a)??we[0],[l,d]=fr(null);if(l){let c=ur[l];return j("div",{className:"flow",children:[j("div",{className:"sent",children:[E("div",{className:"sent-check",children:E(o.check,{strokeWidth:2.6})}),E("div",{className:"sent-title",children:c.title}),E("div",{className:"sent-sub",children:c.sub})]}),E("div",{className:"flow-foot",children:E("button",{className:"btn-primary",onClick:()=>r("reports"),children:"Done"})})]})}return j("div",{className:"flow",children:[j("div",{className:"flow-scroll",children:[j("div",{className:"tb",children:[E("div",{className:"tb-back",onClick:e,children:E(o.chevronLeft,{strokeWidth:2.4})}),E("div",{className:"tb-spacer"}),E("div",{className:"rtag md",style:{fontSize:10},children:"Community verification"})]}),E("div",{className:"map-mini",style:{marginTop:16,position:"relative"},children:j(_,{view:it[n.id]??"mini-r1",variant:"mini",children:[E("div",{className:"heat",style:{background:"radial-gradient(circle 70px at 50% 50%, rgba(212,89,52,.55), transparent 70%)"}}),E(K,{lng:n.coord[0],lat:n.coord[1],severity:"hi",glyph:E(o.alert,{strokeWidth:2.4})})]})}),E("div",{className:"flow-title",style:{marginTop:18},children:n.title}),j("div",{className:"h-loc",style:{marginTop:8},children:[E(o.mapPin,{}),n.where," \xB7 ",n.distanceMeters," m away"]}),E("div",{className:"rmeta",style:{marginTop:14,fontSize:13},children:j("div",{className:"sub",style:{gap:16},children:[j("span",{children:[E(o.clock,{strokeWidth:2.2}),n.when]}),j("span",{children:[E(o.users,{strokeWidth:2.2}),n.confirmations," confirmed so far"]})]})}),j("div",{className:"privacy-note",style:{marginTop:16},children:[E(o.shield,{}),E("span",{children:"You're near this report. If you saw or heard something, your confirmation helps verify it for others. Only confirm what you actually witnessed."})]})]}),j("div",{className:"flow-foot",children:[j("button",{className:"btn-primary",onClick:()=>d("yes"),children:[E(o.check,{strokeWidth:2.4}),"Yes, I saw"]}),E("button",{className:"btn-ghost",onClick:()=>d("unsure"),children:"No, not sure"})]})]})}import{Fragment as Cr,jsx as N,jsxs as Rr}from"react/jsx-runtime";var yr=new Set(["home","sos","navigation","route-overview"]),wr=new Set(["home","reports","search","profile"]);function kr(e){switch(e){case"home":return N(Fe,{});case"sos":return N(vt,{});case"reports":return N(ft,{});case"profile":return N(ut,{});case"alert-type":return N(xt,{});case"alert-details":return N(bt,{});case"alert-sent":return N(yt,{});case"route-destination":return N(wt,{});case"route-overview":return N(kt,{});case"navigation":return N(Nt,{});case"review":return N(Ct,{});case"review-sent":return N(Rt,{});case"alert-detail":return N(Mt,{});case"search":return N(Lt,{});case"read-review":return N(Dt,{});case"confirm-event":return N(Bt,{});case"contacts":return N(Wt,{});case"legal-terms":case"legal-privacy":return N(Tt,{});case"ob-1":case"ob-2":case"ob-3":case"ob-4":case"ob-5":return N(Pt,{});default:return N(Fe,{})}}function Nr(){let{screen:e,nav:r}=v(),a=Ot(r.n),n=Ot(1),[l,d]=br([{screen:e,cls:"",sx:"0%",z:1,key:0}]);return xr(()=>{if(r.n===a.current)return;a.current=r.n,d(g=>{let h=g[g.length-1];if(h.screen===e)return g;let w=`${r.sign*100}%`,m=r.mode==="pop",I={screen:e,cls:m?"anim-enter-pop":"anim-enter",sx:w,z:m?1:2,key:n.current++};return[{screen:h.screen,cls:m?"anim-leave-pop":"anim-leave",sx:w,z:m?2:1,key:h.key},I]});let c=setTimeout(()=>{d(g=>{let h=g[g.length-1];return[{screen:h.screen,cls:"",sx:"0%",z:1,key:h.key}]})},360);return()=>clearTimeout(c)},[r.n,e]),N(Cr,{children:l.map(c=>N("div",{className:`layer ${c.cls}`,style:{"--sx":c.sx,zIndex:c.z},children:kr(c.screen)},c.key))})}function Sr(){let{screen:e,setPlanetaryOpen:r}=v(),a=e==="reports"?"reports":e==="profile"?"profile":"map";return Rr(tt,{tone:yr.has(e)?"light":"dark",onMouseLeave:()=>r(!1),children:[N(Nr,{}),wr.has(e)&&N(rt,{active:a})]})}function Ft(){return N(Qe,{children:N("div",{className:"stage",children:N(Sr,{})})})}var Ht=`@import url('https://fonts.googleapis.com/css2?family=Fraunces:ital,opsz,wght@0,9..144,400;0,9..144,500;0,9..144,600;0,9..144,700;0,9..144,900;1,9..144,500&family=Plus+Jakarta+Sans:wght@400;500;600;700;800&display=swap');
3
3
 
4
4
  /* ============================================================
5
5
  HerWay \u2014 shared design system (Liquid Glass)
@@ -269,9 +269,9 @@ ${e.text}`),alert("Copied to clipboard \u2014 sharing isn't supported on this br
269
269
  .herway-root .rtag.lo{background:rgba(239,139,166,.18);color:#c75d7e;}
270
270
  .herway-root .rtag.safe{background:rgba(60,122,94,.14);color:var(--green);}
271
271
  .herway-root .rmeta{margin-top:6px;font-size:11.5px;color:var(--ink-soft);font-weight:600;line-height:1.5;}
272
- .herway-root .rmeta .sub{display:flex;align-items:center;gap:12px;margin-top:5px;}
273
- .herway-root .rmeta .sub span{display:flex;align-items:center;gap:4px;}
274
- .herway-root .rmeta .sub svg{width:12px;height:12px;color:var(--ink-soft);opacity:.7;}
272
+ .herway-root .rmeta .sub{display:flex;align-items:center;flex-wrap:nowrap;gap:10px;margin-top:5px;font-size:11px;}
273
+ .herway-root .rmeta .sub span{display:flex;align-items:center;gap:4px;white-space:nowrap;}
274
+ .herway-root .rmeta .sub svg{width:12px;height:12px;flex-shrink:0;color:var(--ink-soft);opacity:.7;}
275
275
  .herway-root .stars{display:inline-flex;gap:1px;vertical-align:-1px;}
276
276
  .herway-root .stars svg{width:11px;height:11px;color:var(--orange);}
277
277
  .herway-root .stars svg.off{color:rgba(34,48,39,.18);}
@@ -790,4 +790,4 @@ ${e.text}`),alert("Copied to clipboard \u2014 sharing isn't supported on this br
790
790
  scrollbar-width: none;
791
791
  }
792
792
  .herway-root .sheet-scroll::-webkit-scrollbar, .herway-root .pf-scroll::-webkit-scrollbar, .herway-root .flow-scroll::-webkit-scrollbar, .herway-root .ob-scroll::-webkit-scrollbar { display: none; }
793
- `;import{jsx as Ht}from"react/jsx-runtime";function Rr(){Cr(()=>{if(typeof document>"u"||document.querySelector("style[data-herway-css]"))return;let e=document.createElement("style");e.setAttribute("data-herway-css",""),e.textContent=Ft,document.head.appendChild(e)},[])}function zr({style:e,className:r=""}){return Rr(),Ht("div",{className:`herway-root ${r}`,style:e,children:Ht(Ot,{})})}var Vi=zr;export{zr as HerWayDemo,Vi as default};
793
+ `;import{jsx as _e}from"react/jsx-runtime";function Er(){zr(()=>{if(typeof document>"u"||document.querySelector("style[data-herway-css]"))return;let e=document.createElement("style");e.setAttribute("data-herway-css",""),e.textContent=Ht,document.head.appendChild(e)},[])}var $t=340,jt=736;function Mr({scale:e=1,style:r,className:a=""}){Er();let n=e!==1;return _e("div",{className:`herway-root ${a}`,style:n?{width:$t*e,height:jt*e,...r}:r,children:_e("div",{style:n?{width:$t,height:jt,transform:`scale(${e})`,transformOrigin:"top left"}:void 0,children:_e(Ft,{})})})}var Ti=Mr;export{Mr as HerWayDemo,Ti as default};
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "herway-demo",
3
- "version": "1.0.0",
3
+ "version": "1.0.1",
4
4
  "description": "Self-contained ESM React component bundle.",
5
5
  "license": "UNLICENSED",
6
6
  "type": "module",
@@ -17,8 +17,8 @@
17
17
  "files": ["dist"],
18
18
  "sideEffects": false,
19
19
  "scripts": {
20
+ "dev": "node dev.mjs",
20
21
  "build": "node build.mjs",
21
- "serve": "node build.mjs && npx -y serve -l 8000 .",
22
22
  "prepublishOnly": "node build.mjs"
23
23
  },
24
24
  "peerDependencies": {