PageSourceSearch

https://hanttrail-8fwxhbgl.manus.space/assets/WalkClub-BE8MQyDM.js

js hanttrail-8fwxhbgl.manus.space collected 2026-10-03 05:04:38 UTC 12,708 bytes, 1 lines download raw bytes

1import{q as j,r as g,s as d,j as e,B as u,U as k,N as b,O as h,Q as W,S as v,at as y}from"./index-CqGqwWKp.js";import{I as p}from"./input-C-dhHZfz.js";import{B as w}from"./badge-CajhVRbo.js";import{T as M}from"./textarea-BKrP3zpN.js";import{P as S}from"./plus-CfHDN4Y3.js";import{S as z}from"./search-X9xeeq-b.js";import{M as C}from"./mountain-D3M_wSpQ.js";import{C as P}from"./chevron-right-D_p0tWne.js";import{M as N}from"./map-pin-DifvMV2M.js";import{T as D}from"./trophy-BsR5xVEW.js";import"./useComposition-CjDhl5L8.js";import"./usePersistFn-DaDCSoQ3.js";function I({item:a,onClick:r}){return e.jsx("div",{"data-loc":"client/src/pages/WalkClub.tsx:13",className:"bg-white border border-gray-100 rounded-xl p-4 shadow-sm cursor-pointer hover:shadow-md transition-shadow",onClick:r,children:e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:14",className:"flex items-start gap-3",children:[a.coverImageUrl?e.jsx("img",{"data-loc":"client/src/pages/WalkClub.tsx:16",src:a.coverImageUrl,alt:"",className:"w-14 h-14 rounded-xl object-cover flex-shrink-0"}):e.jsx("div",{"data-loc":"client/src/pages/WalkClub.tsx:18",className:"w-14 h-14 rounded-xl bg-green-50 flex items-center justify-center flex-shrink-0",children:e.jsx(C,{"data-loc":"client/src/pages/WalkClub.tsx:19",size:24,className:"text-green-400"})}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:22",className:"flex-1 min-w-0",children:[e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:23",className:"flex items-start justify-between",children:[e.jsx("h3",{"data-loc":"client/src/pages/WalkClub.tsx:24",className:"font-semibold text-gray-900 text-sm leading-tight",children:a.name}),e.jsx(P,{"data-loc":"client/src/pages/WalkClub.tsx:25",size:16,className:"text-gray-400 flex-shrink-0 mt-0.5"})]}),a.region&&e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:28",className:"flex items-center gap-1 mt-0.5",children:[e.jsx(N,{"data-loc":"client/src/pages/WalkClub.tsx:29",size:10,className:"text-green-600"}),e.jsx("span",{"data-loc":"client/src/pages/WalkClub.tsx:30",className:"text-xs text-gray-500",children:a.region})]}),a.description&&e.jsx("p",{"data-loc":"client/src/pages/WalkClub.tsx:33",className:"text-xs text-gray-500 mt-1 line-clamp-2",children:a.description}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:34",className:"flex items-center gap-3 mt-2",children:[e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:35",className:"flex items-center gap-1 text-xs text-gray-600",children:[e.jsx(k,{"data-loc":"client/src/pages/WalkClub.tsx:36",size:11,className:"text-green-600"}),e.jsxs("span",{"data-loc":"client/src/pages/WalkClub.tsx:37",children:[a.memberCount,"명"]})]}),a.totalMeetups>0&&e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:40",className:"flex items-center gap-1 text-xs text-gray-600",children:[e.jsx(C,{"data-loc":"client/src/pages/WalkClub.tsx:41",size:11,className:"text-green-600"}),e.jsxs("span",{"data-loc":"client/src/pages/WalkClub.tsx:42",children:["약속 ",a.totalMeetups,"회"]})]})]})]})]})})}function U({open:a,onClose:r,onCreated:o}){const[l,s]=g.useState({name:"",description:"",region:"",maxMembers:"",isPublic:!0}),i=d.club.create.useMutation({onSuccess:()=>{o(),r(),s({name:"",description:"",region:"",maxMembers:"",isPublic:!0})}});return e.jsx(b,{"data-loc":"client/src/pages/WalkClub.tsx:58",open:a,onOpenChange:r,children:e.jsxs(h,{"data-loc":"client/src/pages/WalkClub.tsx:59",className:"max-w-md",children:[e.jsx(W,{"data-loc":"client/src/pages/WalkClub.tsx:60",children:e.jsx(v,{"data-loc":"client/src/pages/WalkClub.tsx:60",children:"소모임 만들기"})}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:61",className:"space-y-3 py-2",children:[e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:62",children:[e.jsx("label",{"data-loc":"client/src/pages/WalkClub.tsx:63",className:"text-xs font-medium text-gray-700 mb-1 block",children:"소모임 이름 *"}),e.jsx(p,{"data-loc":"client/src/pages/WalkClub.tsx:64",placeholder:"예: 서울 둘레길 친구들",value:l.name,onChange:t=>s(c=>({...c,name:t.target.value}))})]}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:66",children:[e.jsx("label",{"data-loc":"client/src/pages/WalkClub.tsx:67",className:"text-xs font-medium text-gray-700 mb-1 block",children:"활동 지역"}),e.jsx(p,{"data-loc":"client/src/pages/WalkClub.tsx:68",placeholder:"예: 서울, 경기",value:l.region,onChange:t=>s(c=>({...c,region:t.target.value}))})]}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:70",children:[e.jsx("label",{"data-loc":"client/src/pages/WalkClub.tsx:71",className:"text-xs font-medium text-gray-700 mb-1 block",children:"최대 인원"}),e.jsx(p,{"data-loc":"client/src/pages/WalkClub.tsx:72",type:"number",placeholder:"제한 없음",value:l.maxMembers,onChange:t=>s(c=>({...c,maxMembers:t.target.value}))})]}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:74",children:[e.jsx("label",{"data-loc":"client/src/pages/WalkClub.tsx:75",className:"text-xs font-medium text-gray-700 mb-1 block",children:"소개"}),e.jsx(M,{"data-loc":"client/src/pages/WalkClub.tsx:76",placeholder:"소모임 소개를 적어주세요",rows:3,value:l.description,onChange:t=>s(c=>({...c,description:t.target.value}))})]})]}),e.jsxs(y,{"data-loc":"client/src/pages/WalkClub.tsx:79",children:[e.jsx(u,{"data-loc":"client/src/pages/WalkClub.tsx:80",variant:"outline",onClick:r,children:"취소"}),e.jsx(u,{"data-loc":"client/src/pages/WalkClub.tsx:81",className:"bg-green-600 hover:bg-green-700 text-white",onClick:()=>i.mutate({name:l.name,description:l.description||void 0,region:l.region||void 0,maxMembers:l.maxMembers?Number(l.maxMembers):void 0,isPublic:l.isPublic}),disabled:!l.name||i.isPending,children:i.isPending?"만드는 중...":"소모임 만들기"})]})]})})}function B({clubId:a,onClose:r}){const{user:o}=j(),l=d.useUtils(),{data:s,isLoading:i}=d.club.get.useQuery({id:a}),t=d.club.join.useMutation({onSuccess:()=>l.club.get.invalidate({id:a})}),c=d.club.leave.useMutation({onSuccess:()=>l.club.get.invalidate({id:a})});if(i)return e.jsx(b,{"data-loc":"client/src/pages/WalkClub.tsx:98",open:!0,onOpenChange:r,children:e.jsx(h,{"data-loc":"client/src/pages/WalkClub.tsx:99",className:"max-w-lg",children:e.jsx("div",{"data-loc":"client/src/pages/WalkClub.tsx:99",className:"py-8 text-center text-gray-500",children:"불러오는 중..."})})});if(!s)return null;const m=o?.id===s.createdBy;return e.jsx(b,{"data-loc":"client/src/pages/WalkClub.tsx:107",open:!0,onOpenChange:r,children:e.jsxs(h,{"data-loc":"client/src/pages/WalkClub.tsx:108",className:"max-w-lg max-h-[90vh] overflow-y-auto",children:[e.jsx(W,{"data-loc":"client/src/pages/WalkClub.tsx:109",children:e.jsx(v,{"data-loc":"client/src/pages/WalkClub.tsx:110",className:"text-base",children:s.name})}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:112",className:"space-y-4",children:[s.coverImageUrl&&e.jsx("img",{"data-loc":"client/src/pages/WalkClub.tsx:113",src:s.coverImageUrl,alt:"",className:"w-full h-36 object-cover rounded-lg"}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:115",className:"bg-gray-50 rounded-xl p-3 space-y-1.5",children:[s.region&&e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:117",className:"flex items-center gap-2 text-sm",children:[e.jsx(N,{"data-loc":"client/src/pages/WalkClub.tsx:118",size:14,className:"text-green-600"}),e.jsx("span",{"data-loc":"client/src/pages/WalkClub.tsx:119",children:s.region})]}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:122",className:"flex items-center gap-2 text-sm",children:[e.jsx(k,{"data-loc":"client/src/pages/WalkClub.tsx:123",size:14,className:"text-green-600"}),e.jsxs("span",{"data-loc":"client/src/pages/WalkClub.tsx:124",children:[s.memberCount,"명",s.maxMembers?` / 최대 ${s.maxMembers}명`:""]})]})]}),s.description&&e.jsx("p",{"data-loc":"client/src/pages/WalkClub.tsx:128",className:"text-sm text-gray-700 whitespace-pre-wrap",children:s.description}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:131",children:[e.jsxs("h4",{"data-loc":"client/src/pages/WalkClub.tsx:132",className:"text-xs font-semibold text-gray-500 mb-2",children:["멤버 (",s.members?.length??0,"명)"]}),e.jsx("div",{"data-loc":"client/src/pages/WalkClub.tsx:133",className:"space-y-2 max-h-60 overflow-y-auto",children:s.members?.map(n=>e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:135",className:"flex items-center gap-3 p-2 rounded-lg hover:bg-gray-50",children:[e.jsx("div",{"data-loc":"client/src/pages/WalkClub.tsx:136",className:"w-8 h-8 rounded-full bg-green-100 flex items-center justify-center text-green-700 text-xs font-bold flex-shrink-0",children:n.name?.slice(-2)??"?"}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:139",className:"flex-1 min-w-0",children:[e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:140",className:"flex items-center gap-1.5",children:[e.jsx("span",{"data-loc":"client/src/pages/WalkClub.tsx:141",className:"text-sm font-medium",children:n.name}),n.role==="owner"&&e.jsx(w,{"data-loc":"client/src/pages/WalkClub.tsx:142",className:"bg-green-100 text-green-700 text-xs",children:"대표"})]}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:144",className:"flex items-center gap-3 mt-0.5",children:[e.jsxs("span",{"data-loc":"client/src/pages/WalkClub.tsx:145",className:"text-xs text-gray-500 flex items-center gap-1",children:[e.jsx(C,{"data-loc":"client/src/pages/WalkClub.tsx:14
16",size:10}),(n.stats?.totalDistanceKm??0).toFixed(0),"km"]}),e.jsxs("span",{"data-loc":"client/src/pages/WalkClub.tsx:149",className:"text-xs text-gray-500 flex items-center gap-1",children:[e.jsx(D,{"data-loc":"client/src/pages/WalkClub.tsx:150",size:10}),"한트 ",n.stats?.completedCourses??0,"구간"]})]})]})]},n.userId))})]}),o&&!m&&(s.isMember?e.jsx(u,{"data-loc":"client/src/pages/WalkClub.tsx:163",variant:"outline",className:"w-full text-red-500 border-red-200",onClick:()=>c.mutate({clubId:a}),disabled:c.isPending,children:"소모임 탈퇴"}):e.jsx(u,{"data-loc":"client/src/pages/WalkClub.tsx:167",className:"w-full bg-green-600 hover:bg-green-700 text-white",onClick:()=>t.mutate({clubId:a}),disabled:t.isPending,children:t.isPending?"가입 중...":"소모임 가입하기"}))]})]})})}function G(){const{user:a}=j(),[r,o]=g.useState(""),[l,s]=g.useState(""),[i,t]=g.useState(!1),[c,m]=g.useState(null),{data:n,refetch:f}=d.club.list.useQuery({page:1,pageSize:50,search:r||void 0});return e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:188",className:"min-h-screen bg-gray-50",children:[e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:189",className:"bg-white border-b px-4 py-3 sticky top-0 z-10",children:[e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:190",className:"flex items-center justify-between mb-3",children:[e.jsx("h1",{"data-loc":"client/src/pages/WalkClub.tsx:191",className:"text-lg font-bold text-gray-900",children:"소모임"}),a&&e.jsxs(u,{"data-loc":"client/src/pages/WalkClub.tsx:193",size:"sm",className:"bg-green-600 hover:bg-green-700 text-white gap-1",onClick:()=>t(!0),children:[e.jsx(S,{"data-loc":"client/src/pages/WalkClub.tsx:194",size:14})," 소모임 만들기"]})]}),e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:198",className:"relative",children:[e.jsx(z,{"data-loc":"client/src/pages/WalkClub.tsx:199",size:14,className:"absolute left-2.5 top-1/2 -translate-y-1/2 text-gray-400"}),e.jsx(p,{"data-loc":"client/src/pages/WalkClub.tsx:200",className:"pl-8 h-8 text-sm",placeholder:"소모임 이름, 지역 검색",value:l,onChange:x=>s(x.target.value),onKeyDown:x=>{x.key==="Enter"&&o(l)}})]})]}),e.jsx("div",{"data-loc":"client/src/pages/WalkClub.tsx:210",className:"px-4 py-4",children:!n||n.items.length===0?e.jsxs("div",{"data-loc":"client/src/pages/WalkClub.tsx:212",className:"text-center py-16 text-gray-400",children:[e.jsx(k,{"data-loc":"client/src/pages/WalkClub.tsx:213",size:40,className:"mx-auto mb-3 opacity-30"}),e.jsx("p",{"data-loc":"client/src/pages/WalkClub.tsx:214",className:"text-sm",children:"아직 소모임이 없습니다"}),a&&e.jsx("p",{"data-loc":"client/src/pages/WalkClub.tsx:215",className:"text-xs mt-1",children:"첫 번째 소모임을 만들어보세요!"})]}):e.jsx("div",{"data-loc":"client/src/pages/WalkClub.tsx:218",className:"space-y-3",children:n.items.map(x=>e.jsx(I,{"data-loc":"client/src/pages/WalkClub.tsx:220",item:x,onClick:()=>m(x.id)},x.id))})}),i&&e.jsx(U,{"data-loc":"client/src/pages/WalkClub.tsx:226",open:!0,onClose:()=>t(!1),onCreated:()=>f()}),c!==null&&e.jsx(B,{"data-loc":"client/src/pages/WalkClub.tsx:227",clubId:c,onClose:()=>m(null)})]})}export{G as default};

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.