3 lines
42 KiB
JavaScript
3 lines
42 KiB
JavaScript
(globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,31811,(e,t,r)=>{"use strict";function a({widthInt:e,heightInt:t,blurWidth:r,blurHeight:a,blurDataURL:s,objectFit:i}){let l=r?40*r:e,n=a?40*a:t,o=l&&n?`viewBox='0 0 ${l} ${n}'`:"";return`%3Csvg xmlns='http://www.w3.org/2000/svg' ${o}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='20'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${o?"none":"contain"===i?"xMidYMid":"cover"===i?"xMidYMid slice":"none"}' style='filter: url(%23b);' href='${s}'/%3E%3C/svg%3E`}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImageBlurSvg",{enumerable:!0,get:function(){return a}})},9807,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={VALID_LOADERS:function(){return i},imageConfigDefault:function(){return l}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let i=["default","imgix","cloudinary","akamai","custom"],l={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],path:"/_next/image",loader:"default",loaderFile:"",domains:[],disableStaticImages:!1,minimumCacheTTL:14400,formats:["image/webp"],maximumRedirects:3,dangerouslyAllowLocalIP:!1,dangerouslyAllowSVG:!1,contentSecurityPolicy:"script-src 'none'; frame-src 'none'; sandbox;",contentDispositionType:"attachment",localPatterns:void 0,remotePatterns:[],qualities:[75],unoptimized:!1}},35602,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"getImgProps",{enumerable:!0,get:function(){return o}}),e.r(90405);let a=e.r(31811),s=e.r(9807),i=["-moz-initial","fill","none","scale-down",void 0];function l(e){return void 0!==e.default}function n(e){return void 0===e?e:"number"==typeof e?Number.isFinite(e)?e:NaN:"string"==typeof e&&/^[0-9]+$/.test(e)?parseInt(e,10):NaN}function o({src:e,sizes:t,unoptimized:r=!1,priority:o=!1,preload:d=!1,loading:c,className:m,quality:u,width:f,height:h,fill:x=!1,style:g,overrideSrc:p,onLoad:b,onLoadingComplete:j,placeholder:y="empty",blurDataURL:v,fetchPriority:N,decoding:w="async",layout:C,objectFit:D,objectPosition:S,lazyBoundary:_,lazyRoot:E,...O},M){var R;let P,T,$,{imgConf:k,showAltText:I,blurComplete:A,defaultLoader:z}=M,F=k||s.imageConfigDefault;if("allSizes"in F)P=F;else{let e=[...F.deviceSizes,...F.imageSizes].sort((e,t)=>e-t),t=F.deviceSizes.sort((e,t)=>e-t),r=F.qualities?.sort((e,t)=>e-t);P={...F,allSizes:e,deviceSizes:t,qualities:r}}if(void 0===z)throw Object.defineProperty(Error("images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config"),"__NEXT_ERROR_CODE",{value:"E163",enumerable:!1,configurable:!0});let L=O.loader||z;delete O.loader,delete O.srcSet;let U="__next_img_default"in L;if(U){if("custom"===P.loader)throw Object.defineProperty(Error(`Image with src "${e}" is missing "loader" prop.
|
|
Read more: https://nextjs.org/docs/messages/next-image-missing-loader`),"__NEXT_ERROR_CODE",{value:"E252",enumerable:!1,configurable:!0})}else{let e=L;L=t=>{let{config:r,...a}=t;return e(a)}}if(C){"fill"===C&&(x=!0);let e={intrinsic:{maxWidth:"100%",height:"auto"},responsive:{width:"100%",height:"auto"}}[C];e&&(g={...g,...e});let r={responsive:"100vw",fill:"100vw"}[C];r&&!t&&(t=r)}let H="",B=n(f),W=n(h);if((R=e)&&"object"==typeof R&&(l(R)||void 0!==R.src)){let t=l(e)?e.default:e;if(!t.src)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E460",enumerable:!1,configurable:!0});if(!t.height||!t.width)throw Object.defineProperty(Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(t)}`),"__NEXT_ERROR_CODE",{value:"E48",enumerable:!1,configurable:!0});if(T=t.blurWidth,$=t.blurHeight,v=v||t.blurDataURL,H=t.src,!x)if(B||W){if(B&&!W){let e=B/t.width;W=Math.round(t.height*e)}else if(!B&&W){let e=W/t.height;B=Math.round(t.width*e)}}else B=t.width,W=t.height}let Y=!o&&!d&&("lazy"===c||void 0===c);(!(e="string"==typeof e?e:H)||e.startsWith("data:")||e.startsWith("blob:"))&&(r=!0,Y=!1),P.unoptimized&&(r=!0),U&&!P.dangerouslyAllowSVG&&e.split("?",1)[0].endsWith(".svg")&&(r=!0);let G=n(u),q=Object.assign(x?{position:"absolute",height:"100%",width:"100%",left:0,top:0,right:0,bottom:0,objectFit:D,objectPosition:S}:{},I?{}:{color:"transparent"},g),V=A||"empty"===y?null:"blur"===y?`url("data:image/svg+xml;charset=utf-8,${(0,a.getImageBlurSvg)({widthInt:B,heightInt:W,blurWidth:T,blurHeight:$,blurDataURL:v||"",objectFit:q.objectFit})}")`:`url("${y}")`,X=i.includes(q.objectFit)?"fill"===q.objectFit?"100% 100%":"cover":q.objectFit,J=V?{backgroundSize:X,backgroundPosition:q.objectPosition||"50% 50%",backgroundRepeat:"no-repeat",backgroundImage:V}:{},K=function({config:e,src:t,unoptimized:r,width:a,quality:s,sizes:i,loader:l}){if(r)return{src:t,srcSet:void 0,sizes:void 0};let{widths:n,kind:o}=function({deviceSizes:e,allSizes:t},r,a){if(a){let r=/(^|\s)(1?\d?\d)vw/g,s=[];for(let e;e=r.exec(a);)s.push(parseInt(e[2]));if(s.length){let r=.01*Math.min(...s);return{widths:t.filter(t=>t>=e[0]*r),kind:"w"}}return{widths:t,kind:"w"}}return"number"!=typeof r?{widths:e,kind:"w"}:{widths:[...new Set([r,2*r].map(e=>t.find(t=>t>=e)||t[t.length-1]))],kind:"x"}}(e,a,i),d=n.length-1;return{sizes:i||"w"!==o?i:"100vw",srcSet:n.map((r,a)=>`${l({config:e,src:t,quality:s,width:r})} ${"w"===o?r:a+1}${o}`).join(", "),src:l({config:e,src:t,quality:s,width:n[d]})}}({config:P,src:e,unoptimized:r,width:B,quality:G,sizes:t,loader:L}),Q=Y?"lazy":c;return{props:{...O,loading:Q,fetchPriority:N,width:B,height:W,decoding:w,className:m,style:{...q,...J},sizes:K.sizes,srcSet:K.srcSet,src:p||K.src},meta:{unoptimized:r,preload:d||o,placeholder:y,fill:x}}}},85280,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return n}});let a=e.r(34346),s="undefined"==typeof window,i=s?()=>{}:a.useLayoutEffect,l=s?()=>{}:a.useEffect;function n(e){let{headManager:t,reduceComponentsToState:r}=e;function n(){if(t&&t.mountedInstances){let e=a.Children.toArray(Array.from(t.mountedInstances).filter(Boolean));t.updateHead(r(e))}}return s&&(t?.mountedInstances?.add(e.children),n()),i(()=>(t?.mountedInstances?.add(e.children),()=>{t?.mountedInstances?.delete(e.children)})),i(()=>(t&&(t._pendingUpdate=n),()=>{t&&(t._pendingUpdate=n)})),l(()=>(t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null),()=>{t&&t._pendingUpdate&&(t._pendingUpdate(),t._pendingUpdate=null)})),null}},59710,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return x},defaultHead:function(){return m}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let i=e.r(33334),l=e.r(88835),n=e.r(36792),o=l._(e.r(34346)),d=i._(e.r(85280)),c=e.r(75967);function m(){return[(0,n.jsx)("meta",{charSet:"utf-8"},"charset"),(0,n.jsx)("meta",{name:"viewport",content:"width=device-width"},"viewport")]}function u(e,t){return"string"==typeof t||"number"==typeof t?e:t.type===o.default.Fragment?e.concat(o.default.Children.toArray(t.props.children).reduce((e,t)=>"string"==typeof t||"number"==typeof t?e:e.concat(t),[])):e.concat(t)}e.r(90405);let f=["name","httpEquiv","charSet","itemProp"];function h(e){let t,r,a,s;return e.reduce(u,[]).reverse().concat(m().reverse()).filter((t=new Set,r=new Set,a=new Set,s={},e=>{let i=!0,l=!1;if(e.key&&"number"!=typeof e.key&&e.key.indexOf("$")>0){l=!0;let r=e.key.slice(e.key.indexOf("$")+1);t.has(r)?i=!1:t.add(r)}switch(e.type){case"title":case"base":r.has(e.type)?i=!1:r.add(e.type);break;case"meta":for(let t=0,r=f.length;t<r;t++){let r=f[t];if(e.props.hasOwnProperty(r))if("charSet"===r)a.has(r)?i=!1:a.add(r);else{let t=e.props[r],a=s[r]||new Set;("name"!==r||!l)&&a.has(t)?i=!1:(a.add(t),s[r]=a)}}}return i})).reverse().map((e,t)=>{let r=e.key||t;return o.default.cloneElement(e,{key:r})})}let x=function({children:e}){let t=(0,o.useContext)(c.HeadManagerContext);return(0,n.jsx)(d.default,{reduceComponentsToState:h,headManager:t,children:e})};("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},10847,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"ImageConfigContext",{enumerable:!0,get:function(){return i}});let a=e.r(33334)._(e.r(34346)),s=e.r(9807),i=a.default.createContext(s.imageConfigDefault)},63580,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"RouterContext",{enumerable:!0,get:function(){return a}});let a=e.r(33334)._(e.r(34346)).default.createContext(null)},41256,(e,t,r)=>{"use strict";function a(e,t){let r=e||75;return t?.qualities?.length?t.qualities.reduce((e,t)=>Math.abs(t-r)<Math.abs(e-r)?t:e,0):r}Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"findClosestQuality",{enumerable:!0,get:function(){return a}})},80478,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"default",{enumerable:!0,get:function(){return i}});let a=e.r(41256);function s({config:e,src:t,width:r,quality:s}){if(t.startsWith("/")&&t.includes("?")&&e.localPatterns?.length===1&&"**"===e.localPatterns[0].pathname&&""===e.localPatterns[0].search)throw Object.defineProperty(Error(`Image with src "${t}" is using a query string which is not configured in images.localPatterns.
|
|
Read more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`),"__NEXT_ERROR_CODE",{value:"E871",enumerable:!1,configurable:!0});let i=(0,a.findClosestQuality)(s,e);return`${e.path}?url=${encodeURIComponent(t)}&w=${r}&q=${i}${t.startsWith("/_next/static/media/"),""}`}s.__next_img_default=!0;let i=s},27015,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0}),Object.defineProperty(r,"Image",{enumerable:!0,get:function(){return y}});let a=e.r(33334),s=e.r(88835),i=e.r(36792),l=s._(e.r(34346)),n=a._(e.r(76124)),o=a._(e.r(59710)),d=e.r(35602),c=e.r(9807),m=e.r(10847);e.r(90405);let u=e.r(63580),f=a._(e.r(80478)),h=e.r(45707),x={deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0};function g(e,t,r,a,s,i,l){let n=e?.src;e&&e["data-loaded-src"]!==n&&(e["data-loaded-src"]=n,("decode"in e?e.decode():Promise.resolve()).catch(()=>{}).then(()=>{if(e.parentElement&&e.isConnected){if("empty"!==t&&s(!0),r?.current){let t=new Event("load");Object.defineProperty(t,"target",{writable:!1,value:e});let a=!1,s=!1;r.current({...t,nativeEvent:t,currentTarget:e,target:e,isDefaultPrevented:()=>a,isPropagationStopped:()=>s,persist:()=>{},preventDefault:()=>{a=!0,t.preventDefault()},stopPropagation:()=>{s=!0,t.stopPropagation()}})}a?.current&&a.current(e)}}))}function p(e){return l.use?{fetchPriority:e}:{fetchpriority:e}}"undefined"==typeof window&&(globalThis.__NEXT_IMAGE_IMPORTED=!0);let b=(0,l.forwardRef)(({src:e,srcSet:t,sizes:r,height:a,width:s,decoding:n,className:o,style:d,fetchPriority:c,placeholder:m,loading:u,unoptimized:f,fill:x,onLoadRef:b,onLoadingCompleteRef:j,setBlurComplete:y,setShowAltText:v,sizesInput:N,onLoad:w,onError:C,...D},S)=>{let _=(0,l.useCallback)(e=>{e&&(C&&(e.src=e.src),e.complete&&g(e,m,b,j,y,f,N))},[e,m,b,j,y,C,f,N]),E=(0,h.useMergedRef)(S,_);return(0,i.jsx)("img",{...D,...p(c),loading:u,width:s,height:a,decoding:n,"data-nimg":x?"fill":"1",className:o,style:d,sizes:r,srcSet:t,src:e,ref:E,onLoad:e=>{g(e.currentTarget,m,b,j,y,f,N)},onError:e=>{v(!0),"empty"!==m&&y(!0),C&&C(e)}})});function j({isAppRouter:e,imgAttributes:t}){let r={as:"image",imageSrcSet:t.srcSet,imageSizes:t.sizes,crossOrigin:t.crossOrigin,referrerPolicy:t.referrerPolicy,...p(t.fetchPriority)};return e&&n.default.preload?(n.default.preload(t.src,r),null):(0,i.jsx)(o.default,{children:(0,i.jsx)("link",{rel:"preload",href:t.srcSet?void 0:t.src,...r},"__nimg-"+t.src+t.srcSet+t.sizes)})}let y=(0,l.forwardRef)((e,t)=>{let r=(0,l.useContext)(u.RouterContext),a=(0,l.useContext)(m.ImageConfigContext),s=(0,l.useMemo)(()=>{let e=x||a||c.imageConfigDefault,t=[...e.deviceSizes,...e.imageSizes].sort((e,t)=>e-t),r=e.deviceSizes.sort((e,t)=>e-t),s=e.qualities?.sort((e,t)=>e-t);return{...e,allSizes:t,deviceSizes:r,qualities:s,localPatterns:"undefined"==typeof window?a?.localPatterns:e.localPatterns}},[a]),{onLoad:n,onLoadingComplete:o}=e,h=(0,l.useRef)(n);(0,l.useEffect)(()=>{h.current=n},[n]);let g=(0,l.useRef)(o);(0,l.useEffect)(()=>{g.current=o},[o]);let[p,y]=(0,l.useState)(!1),[v,N]=(0,l.useState)(!1),{props:w,meta:C}=(0,d.getImgProps)(e,{defaultLoader:f.default,imgConf:s,blurComplete:p,showAltText:v});return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)(b,{...w,unoptimized:C.unoptimized,placeholder:C.placeholder,fill:C.fill,onLoadRef:h,onLoadingCompleteRef:g,setBlurComplete:y,setShowAltText:N,sizesInput:e.sizes,ref:t}),C.preload?(0,i.jsx)(j,{isAppRouter:!r,imgAttributes:w}):null]})});("function"==typeof r.default||"object"==typeof r.default&&null!==r.default)&&void 0===r.default.__esModule&&(Object.defineProperty(r.default,"__esModule",{value:!0}),Object.assign(r.default,r),t.exports=r.default)},56668,(e,t,r)=>{"use strict";Object.defineProperty(r,"__esModule",{value:!0});var a={default:function(){return c},getImageProps:function(){return d}};for(var s in a)Object.defineProperty(r,s,{enumerable:!0,get:a[s]});let i=e.r(33334),l=e.r(35602),n=e.r(27015),o=i._(e.r(80478));function d(e){let{props:t}=(0,l.getImgProps)(e,{defaultLoader:o.default,imgConf:{deviceSizes:[640,750,828,1080,1200,1920,2048,3840],imageSizes:[32,48,64,96,128,256,384],qualities:[75],path:"/_next/image",loader:"default",dangerouslyAllowSVG:!1,unoptimized:!0}});for(let[e,r]of Object.entries(t))void 0===r&&delete t[e];return{props:t}}let c=n.Image},53264,(e,t,r)=>{t.exports=e.r(56668)},38315,e=>{"use strict";var t=e.i(36792),r=e.i(3965),a=e.i(53264),s=e.i(9991),i=e.i(10743),l=e.i(82772),n=e.i(43840),o=e.i(33483),d=e.i(63998),c=e.i(32301),m=e.i(91258),u=e.i(43359),f=e.i(90288),h=e.i(49954),x=e.i(27458),g=e.i(92879),p=e.i(34346);e.i(75246);var b=e.i(12908),j=e.i(89084),j=j;function y({members:e}){let r=(0,p.useRef)(null),a=(0,p.useRef)(null),s=(0,p.useRef)(null),l=(0,p.useRef)(null);return(0,p.useEffect)(()=>{if(!r.current||0===e.length)return;let t=b.init(r.current),a={male:e.filter(e=>"MALE"===e.gender).length,female:e.filter(e=>"FEMALE"===e.gender).length,other:e.filter(e=>"OTHER"===e.gender).length};return t.setOption({title:{text:"性别分布",left:"center",top:10,textStyle:{fontSize:14,fontWeight:"normal"}},tooltip:{trigger:"item",formatter:"{b}: {c} 人 ({d}%)"},legend:{bottom:10,left:"center"},series:[{type:"pie",radius:["40%","70%"],center:["50%","50%"],avoidLabelOverlap:!1,itemStyle:{borderRadius:10,borderColor:"#fff",borderWidth:2},label:{show:!1},emphasis:{label:{show:!0,fontSize:16,fontWeight:"bold"}},data:[{value:a.male,name:"男性",itemStyle:{color:"#3b82f6"}},{value:a.female,name:"女性",itemStyle:{color:"#ec4899"}},...a.other>0?[{value:a.other,name:"其他",itemStyle:{color:"#8b5cf6"}}]:[]]}]}),()=>{t.dispose()}},[e]),(0,p.useEffect)(()=>{if(!a.current||0===e.length)return;let t=b.init(a.current),r=new Map;e.forEach(e=>{let t=e.generation||0;r.set(t,(r.get(t)||0)+1)});let s=Array.from(r.entries()).sort((e,t)=>e[0]-t[0]);return t.setOption({title:{text:"世代分布",left:"center",top:10,textStyle:{fontSize:14,fontWeight:"normal"}},tooltip:{trigger:"axis",axisPointer:{type:"shadow"},formatter:"{b}世: {c} 人"},grid:{left:"3%",right:"4%",bottom:"3%",top:"15%",containLabel:!0},xAxis:{type:"category",data:s.map(([e])=>`第${e}世`),axisLabel:{rotate:45}},yAxis:{type:"value",name:"人数"},series:[{type:"bar",data:s.map(([,e])=>e),itemStyle:{color:new j.LinearGradient(0,0,0,1,[{offset:0,color:"#83bff6"},{offset:.5,color:"#188df0"},{offset:1,color:"#188df0"}])},emphasis:{itemStyle:{color:new j.LinearGradient(0,0,0,1,[{offset:0,color:"#2378f7"},{offset:.7,color:"#2378f7"},{offset:1,color:"#83bff6"}])}}}]}),()=>{t.dispose()}},[e]),(0,p.useEffect)(()=>{if(!s.current||0===e.length)return;let t=b.init(s.current),r=new Date().getFullYear(),a={"0-18":0,"19-35":0,"36-50":0,"51-65":0,"66+":0,已故:0};return e.forEach(e=>{if(e.deathDate)a["已故"]++;else if(e.birthDate){let t=r-new Date(e.birthDate).getFullYear();t<=18?a["0-18"]++:t<=35?a["19-35"]++:t<=50?a["36-50"]++:t<=65?a["51-65"]++:a["66+"]++}}),t.setOption({title:{text:"年龄分布",left:"center",top:10,textStyle:{fontSize:14,fontWeight:"normal"}},tooltip:{trigger:"item",formatter:"{b}: {c} 人 ({d}%)"},legend:{bottom:10,left:"center"},series:[{type:"pie",radius:"60%",center:["50%","50%"],data:Object.entries(a).filter(([,e])=>e>0).map(([e,t])=>({name:e,value:t})),emphasis:{itemStyle:{shadowBlur:10,shadowOffsetX:0,shadowColor:"rgba(0, 0, 0, 0.5)"}}}]}),()=>{t.dispose()}},[e]),(0,p.useEffect)(()=>{if(!l.current||0===e.length)return;let t=b.init(l.current),r=new Map;e.forEach(e=>{if(e.birthDate){let t=new Date(e.birthDate).getFullYear();if(t>=1900){let e=10*Math.floor(t/10);r.set(e,(r.get(e)||0)+1)}}});let a=Array.from(r.entries()).sort((e,t)=>e[0]-t[0]);return t.setOption({title:{text:"出生年代分布",left:"center",top:10,textStyle:{fontSize:14,fontWeight:"normal"}},tooltip:{trigger:"axis",formatter:"{b}年代: {c} 人"},grid:{left:"3%",right:"4%",bottom:"3%",top:"15%",containLabel:!0},xAxis:{type:"category",data:a.map(([e])=>`${e}s`),axisLabel:{rotate:45}},yAxis:{type:"value",name:"人数"},series:[{type:"line",data:a.map(([,e])=>e),smooth:!0,areaStyle:{color:new j.LinearGradient(0,0,0,1,[{offset:0,color:"rgba(99, 102, 241, 0.5)"},{offset:1,color:"rgba(99, 102, 241, 0.1)"}])},lineStyle:{color:"#6366f1",width:2},itemStyle:{color:"#6366f1"}}]}),()=>{t.dispose()}},[e]),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-6",children:[(0,t.jsxs)(i.Card,{children:[(0,t.jsxs)(i.CardHeader,{children:[(0,t.jsx)(i.CardTitle,{children:"性别分布"}),(0,t.jsx)(i.CardDescription,{children:"家族成员性别比例"})]}),(0,t.jsx)(i.CardContent,{children:(0,t.jsx)("div",{ref:r,className:"h-[300px]"})})]}),(0,t.jsxs)(i.Card,{children:[(0,t.jsxs)(i.CardHeader,{children:[(0,t.jsx)(i.CardTitle,{children:"世代分布"}),(0,t.jsx)(i.CardDescription,{children:"各世代人数统计"})]}),(0,t.jsx)(i.CardContent,{children:(0,t.jsx)("div",{ref:a,className:"h-[300px]"})})]}),(0,t.jsxs)(i.Card,{children:[(0,t.jsxs)(i.CardHeader,{children:[(0,t.jsx)(i.CardTitle,{children:"年龄分布"}),(0,t.jsx)(i.CardDescription,{children:"按年龄段划分的人数"})]}),(0,t.jsx)(i.CardContent,{children:(0,t.jsx)("div",{ref:s,className:"h-[300px]"})})]}),(0,t.jsxs)(i.Card,{children:[(0,t.jsxs)(i.CardHeader,{children:[(0,t.jsx)(i.CardTitle,{children:"出生年代分布"}),(0,t.jsx)(i.CardDescription,{children:"各年代出生人数趋势"})]}),(0,t.jsx)(i.CardContent,{children:(0,t.jsx)("div",{ref:l,className:"h-[300px]"})})]})]})}var v=e.i(86467),N=e.i(87830),w=e.i(90432),C=e.i(77627),D=e.i(75985),S=e.i(50314),_=e.i(59786),E=e.i(34072);let O=(0,e.i(27706).default)("Eye",[["path",{d:"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0",key:"1nclc0"}],["circle",{cx:"12",cy:"12",r:"3",key:"1v7zrd"}]]);var M=e.i(7790),R=e.i(12039),P=e.i(75212);function T(){let{data:e}=(0,N.useSession)(),{currentTree:r}=(0,g.useFamily)(),{showConfirm:a,showAlert:i}=(0,P.useDialog)(),[l,n]=(0,p.useState)(!1),[o,d]=(0,p.useState)([]),[c,m]=(0,p.useState)(!1),[f,h]=(0,p.useState)(""),[x,b]=(0,p.useState)("VIEWER"),[j,y]=(0,p.useState)(""),[v,T]=(0,p.useState)(""),[$,k]=(0,p.useState)("");(0,p.useEffect)(()=>{l&&r?.id&&I()},[l,r?.id]);let I=async()=>{if(r?.id)try{let e=await fetch(`/api/trees/${r.id}/collaborators`);if(e.ok){let t=await e.json();d(t.collaborators)}}catch(e){console.error("加载协作者失败:",e)}},A=async e=>{if(e.preventDefault(),r?.id){m(!0),T(""),k("");try{let e=await fetch(`/api/trees/${r.id}/invite`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({email:f,role:x,password:j||void 0})}),t=await e.json();if(!e.ok)throw Error(t.error||"邀请失败");k(t.message),h(""),y(""),I()}catch(e){T(e.message)}finally{m(!1)}}},z=async e=>{if(r?.id&&await a("确定要移除此协作者吗?","移除协作者"))try{if(!(await fetch(`/api/trees/${r.id}/collaborators?userId=${e}`,{method:"DELETE"})).ok)throw Error("移除失败");I()}catch(e){console.error(e),await i("移除失败","错误")}};return r&&r.ownerId===e?.user?.id?(0,t.jsxs)(w.Dialog,{open:l,onOpenChange:n,children:[(0,t.jsx)(w.DialogTrigger,{asChild:!0,children:(0,t.jsxs)(s.Button,{variant:"outline",className:"gap-2",children:[(0,t.jsx)(u.Users,{className:"h-4 w-4"}),"协作管理"]})}),(0,t.jsxs)(w.DialogContent,{className:"sm:max-w-[600px]",children:[(0,t.jsxs)(w.DialogHeader,{children:[(0,t.jsxs)(w.DialogTitle,{children:["协作管理 - ",r.name]}),(0,t.jsx)(w.DialogDescription,{children:"邀请其他用户协作编辑或查看您的家族树。"})]}),(0,t.jsxs)("div",{className:"space-y-6 py-4",children:[(0,t.jsxs)("form",{onSubmit:A,className:"space-y-4 border-b pb-6",children:[(0,t.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(D.Label,{htmlFor:"email",children:"邮箱地址"}),(0,t.jsx)(C.Input,{id:"email",type:"email",placeholder:"输入对方邮箱",value:f,onChange:e=>h(e.target.value),required:!0})]}),(0,t.jsxs)("div",{className:"space-y-2",children:[(0,t.jsx)(D.Label,{htmlFor:"role",children:"权限角色"}),(0,t.jsxs)(S.Select,{value:x,onValueChange:e=>b(e),children:[(0,t.jsx)(S.SelectTrigger,{children:(0,t.jsx)(S.SelectValue,{})}),(0,t.jsxs)(S.SelectContent,{children:[(0,t.jsx)(S.SelectItem,{value:"EDITOR",children:(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(M.Edit,{className:"mr-2 h-4 w-4"}),"编辑者 (可以增删改)"]})}),(0,t.jsx)(S.SelectItem,{value:"VIEWER",children:(0,t.jsxs)("div",{className:"flex items-center",children:[(0,t.jsx)(O,{className:"mr-2 h-4 w-4"}),"查看者 (只读)"]})})]})]})]}),(0,t.jsxs)("div",{className:"space-y-2 sm:col-span-2",children:[(0,t.jsx)(D.Label,{htmlFor:"password",children:"初始密码 (仅新用户)"}),(0,t.jsxs)("div",{className:"flex gap-2",children:[(0,t.jsx)(C.Input,{id:"password",type:"text",placeholder:"为新用户设置密码(可选)",value:j,onChange:e=>y(e.target.value),minLength:6,className:"flex-1"}),(0,t.jsx)(s.Button,{type:"submit",disabled:c,children:c?"处理中...":"发送邀请"})]}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground",children:"如果是现有用户,此密码将被忽略。"})]})]}),v&&(0,t.jsxs)(R.Alert,{variant:"destructive",children:[(0,t.jsx)(R.AlertTitle,{children:"错误"}),(0,t.jsx)(R.AlertDescription,{children:v})]}),$&&(0,t.jsxs)(R.Alert,{className:"bg-green-50 text-green-700 border-green-200",children:[(0,t.jsx)(R.AlertTitle,{children:"成功"}),(0,t.jsx)(R.AlertDescription,{children:$})]})]}),(0,t.jsxs)("div",{className:"space-y-4",children:[(0,t.jsx)("h3",{className:"font-medium text-sm text-muted-foreground",children:"现有协作者"}),0===o.length?(0,t.jsx)("div",{className:"text-center py-8 text-muted-foreground border border-dashed rounded-lg",children:"暂无协作者"}):(0,t.jsx)("div",{className:"space-y-2 max-h-[300px] overflow-y-auto pr-2",children:o.map(e=>(0,t.jsxs)("div",{className:"flex items-center justify-between p-3 rounded-lg border bg-muted/30",children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)(_.Avatar,{className:"h-9 w-9 border border-border",children:(0,t.jsx)(_.AvatarFallback,{children:e.user.name?.charAt(0).toUpperCase()||e.user.email.charAt(0).toUpperCase()})}),(0,t.jsxs)("div",{children:[(0,t.jsx)("div",{className:"font-medium text-sm",children:e.user.name||"用户"}),(0,t.jsx)("div",{className:"text-xs text-muted-foreground",children:e.user.email})]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("span",{className:`text-[10px] px-2 py-0.5 rounded-full border ${"EDITOR"===e.role?"bg-blue-50 text-blue-700 border-blue-200":"bg-gray-50 text-gray-700 border-gray-200"}`,children:"EDITOR"===e.role?"编辑者":"查看者"}),(0,t.jsx)(s.Button,{variant:"ghost",size:"icon",className:"h-8 w-8 text-muted-foreground hover:text-destructive",onClick:()=>z(e.userId),children:(0,t.jsx)(E.Trash2,{className:"h-4 w-4"})})]})]},e.id))})]})]})]})]}):null}var $=e.i(59210);function k(){let e,b,j,w,{treeData:C,isLoading:D,currentTree:S}=(0,g.useFamily)(),{data:_}=(0,N.useSession)(),[E,O]=(0,p.useState)([]);(0,p.useEffect)(()=>{_?.user?.id&&(localStorage.getItem(`user_${_.user.id}_visited`)||(localStorage.setItem(`user_${_.user.id}_visited`,"true"),window.location.href="/help"))},[_?.user?.id]),(0,p.useEffect)(()=>{S?.id&&_?.user?.id?fetch(`/api/trees/${S.id}/activity-logs?limit=10`).then(e=>{if(!e.ok)throw Error("获取活动日志失败");return e.json()}).then(e=>{e.logs&&O(e.logs)}).catch(e=>{console.error("获取活动日志失败:",e),O([])}):O([])},[S?.id,_?.user?.id]);let M=(0,p.useMemo)(()=>{let e=Object.values(C.members),t=e.length,r=e.filter(e=>!e.deathDate).length,a=e.filter(e=>e.deathDate).length,s=e.filter(e=>"MALE"===e.gender).length,i=e.filter(e=>"FEMALE"===e.gender).length,l=e.map(e=>e.generation||0),n=l.length>0?Math.max(...l):0,o=e.map(e=>e.birthDate?new Date(e.birthDate).getFullYear():null).filter(e=>null!==e),d=o.length>0?Math.min(...o):new Date().getFullYear(),c=o.length>0?new Date().getFullYear()-d:0,m=e.filter(e=>e.birthDate&&e.deathDate),u=m.reduce((e,t)=>{let r=new Date(t.birthDate).getFullYear();return e+(new Date(t.deathDate).getFullYear()-r)},0);return{totalMembers:t,livingMembers:r,deceasedMembers:a,maleCount:s,femaleCount:i,maxGeneration:n,yearsSpan:c,earliestYear:d,averageLifespan:m.length>0?Math.round(u/m.length):0}},[C]);(0,p.useMemo)(()=>Object.values(C.members).sort((e,t)=>parseInt(t.id)-parseInt(e.id)).slice(0,5),[C]);let R=(0,p.useMemo)(()=>{let e=new Date().getMonth()+1,t=Object.values(C.members),r=[];return t.forEach(t=>{if(t.birthDate){let a=new Date(t.birthDate).getMonth()+1,s=new Date(t.birthDate).getDate();a===e&&r.push({member:t,type:"birth",date:t.birthDate,day:s})}if(t.deathDate){let a=new Date(t.deathDate).getMonth()+1,s=new Date(t.deathDate).getDate();a===e&&r.push({member:t,type:"death",date:t.deathDate,day:s})}}),r.sort((e,t)=>e.day-t.day).slice(0,5)},[C]),P=(0,p.useMemo)(()=>{let e=Object.values(C.members),t={};return e.forEach(e=>{e.ancestralHome&&(t[e.ancestralHome]||(t[e.ancestralHome]=[]),t[e.ancestralHome].push(e))}),Object.entries(t).sort((e,t)=>t[1].length-e[1].length)},[C]);return D||S?(0,t.jsxs)("div",{className:"flex min-h-screen flex-col bg-background font-sans",children:[(0,t.jsx)(l.SiteHeader,{}),(0,t.jsxs)("main",{className:"flex-1 container mx-auto py-8 px-4 md:px-6",children:[(0,t.jsxs)("div",{className:"flex flex-col md:flex-row items-start md:items-center justify-between gap-4 mb-8",children:[(0,t.jsxs)("div",{children:[(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsx)("h1",{className:"text-3xl font-serif font-bold text-foreground",children:S?.name||"家族族谱"}),S?.currentUserRole&&(0,t.jsx)("span",{className:`text-xs px-2 py-1 rounded-full border font-sans font-normal translate-y-[2px] ${"OWNER"===S.currentUserRole?"bg-purple-100 text-purple-700 border-purple-200":"EDITOR"===S.currentUserRole?"bg-blue-100 text-blue-700 border-blue-200":"bg-gray-100 text-gray-700 border-gray-200"}`,children:"OWNER"===S.currentUserRole?"所有者":"EDITOR"===S.currentUserRole?"编辑者":"查看者"})]}),(0,t.jsxs)("p",{className:"text-muted-foreground mt-1",children:[S?.description||"记录家族历史,传承家族文化",M.maxGeneration>0&&` \xb7 第 ${M.maxGeneration} 代传人`]})]}),(0,t.jsxs)("div",{className:"flex items-center gap-2",children:[_&&S?.ownerId===_.user?.id&&(0,t.jsx)(T,{}),$.permissions.canCreate(S?.currentUserRole)&&(0,t.jsx)(r.default,{href:"/members/new",children:(0,t.jsxs)(s.Button,{className:"gap-2 bg-primary text-primary-foreground hover:bg-primary/90",children:[(0,t.jsx)(d.UserPlus,{className:"h-4 w-4"}),"添加成员"]})})]})]}),(0,t.jsxs)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4 mb-8",children:[(0,t.jsx)(I,{title:"家族成员",value:M.totalMembers.toString(),subtitle:`男 ${M.maleCount} \xb7 女 ${M.femaleCount}`,icon:(0,t.jsx)(u.Users,{className:"h-4 w-4"})}),(0,t.jsx)(I,{title:"记录年代",value:`${M.yearsSpan} 年`,subtitle:`始于 ${M.earliestYear} 年`,icon:(0,t.jsx)(h.Clock,{className:"h-4 w-4"})}),(0,t.jsx)(I,{title:"繁衍代数",value:`${M.maxGeneration} 代`,subtitle:`当前最高世代`,icon:(0,t.jsx)(c.Network,{className:"h-4 w-4"})}),(0,t.jsx)(I,{title:"在世 / 已故",value:`${M.livingMembers} / ${M.deceasedMembers}`,subtitle:`在世率 ${M.totalMembers>0?Math.round(M.livingMembers/M.totalMembers*100):0}%`,icon:(0,t.jsx)(u.Users,{className:"h-4 w-4"})}),(0,t.jsx)(I,{title:"平均寿命",value:M.averageLifespan>0?`${M.averageLifespan} 岁`:"暂无数据",subtitle:`已统计 ${M.deceasedMembers} 人`,icon:(0,t.jsx)(h.Clock,{className:"h-4 w-4"})}),(0,t.jsxs)(i.Card,{className:"relative overflow-hidden border border-border/50 shadow-sm bg-gradient-to-br from-card to-card/50 backdrop-blur transition-all hover:shadow-lg hover:border-primary/30 group",children:[(0,t.jsxs)(i.CardContent,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("p",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:"性别比例"}),(0,t.jsx)("div",{className:"text-primary/70 bg-primary/10 p-2.5 rounded-lg group-hover:bg-primary/20 transition-colors",children:(0,t.jsx)(u.Users,{className:"h-4 w-4"})})]}),(0,t.jsxs)("div",{className:"flex flex-col space-y-1",children:[(0,t.jsxs)("div",{className:"flex items-center justify-center gap-3",children:[(0,t.jsx)("span",{className:"text-3xl font-serif font-bold text-primary tracking-tight",children:M.maleCount>0?"1":"0"}),(0,t.jsx)("span",{className:"text-2xl font-bold text-muted-foreground",children:":"}),(0,t.jsx)("span",{className:"text-3xl font-serif font-bold text-primary tracking-tight",children:M.maleCount>0?(M.femaleCount/M.maleCount).toFixed(2):"0"})]}),(0,t.jsxs)("div",{className:"text-center text-xs text-muted-foreground/80 font-medium mt-1",children:["男性 ",M.maleCount," · 女性 ",M.femaleCount]})]})]}),(0,t.jsx)("div",{className:"absolute bottom-0 left-0 right-0 h-1 bg-gradient-to-r from-primary/50 via-primary to-primary/50 opacity-0 group-hover:opacity-100 transition-opacity"})]})]}),(0,t.jsxs)(o.Tabs,{defaultValue:"recent",className:"w-full",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsxs)(o.TabsList,{className:"bg-muted/50",children:[(0,t.jsx)(o.TabsTrigger,{value:"recent",children:"最近更新"}),(0,t.jsx)(o.TabsTrigger,{value:"anniversaries",children:"近期纪念日"}),(0,t.jsx)(o.TabsTrigger,{value:"statistics",children:"统计图表"}),(0,t.jsx)(o.TabsTrigger,{value:"migration",children:"迁徙记录"})]}),(0,t.jsx)(r.default,{href:"/members",children:(0,t.jsxs)(s.Button,{variant:"ghost",size:"sm",className:"text-muted-foreground gap-1",children:["查看全部 ",(0,t.jsx)(f.ArrowRight,{className:"h-3 w-3"})]})})]}),(0,t.jsx)(o.TabsContent,{value:"recent",className:"mt-0",children:(0,t.jsxs)("div",{className:"grid grid-cols-1 lg:grid-cols-3 gap-6",children:[(0,t.jsxs)(i.Card,{className:"lg:col-span-2 border-none shadow-sm bg-card/50 backdrop-blur",children:[(0,t.jsxs)(i.CardHeader,{children:[(0,t.jsx)(i.CardTitle,{className:"font-serif",children:"近期修谱动态"}),(0,t.jsx)(i.CardDescription,{children:"记录家族成员的最新变动与修订"})]}),(0,t.jsx)(i.CardContent,{children:(0,t.jsx)(n.ScrollArea,{className:"h-[400px] pr-4",children:(0,t.jsx)("div",{className:"space-y-4",children:E.length>0?E.map((e,r)=>(0,t.jsxs)("div",{className:"flex gap-3 group hover:bg-muted/30 p-2 rounded-lg transition-colors",children:[(0,t.jsxs)("div",{className:"relative flex flex-col items-center",children:[(0,t.jsx)("div",{className:"h-full w-px bg-border group-last:hidden"}),(0,t.jsx)("div",{className:`absolute top-2 h-2 w-2 rounded-full ring-4 ring-background ${"create"===e.action?"bg-green-500":"update"===e.action?"bg-blue-500":"delete"===e.action?"bg-red-500":"bg-purple-500"}`})]}),(0,t.jsxs)("div",{className:"pb-2 flex-1",children:[(0,t.jsxs)("div",{className:"flex items-center gap-2 mb-1 flex-wrap",children:[(0,t.jsx)("span",{className:`text-xs px-2 py-0.5 rounded-full ${"create"===e.action?"bg-green-100 text-green-700":"update"===e.action?"bg-blue-100 text-blue-700":"delete"===e.action?"bg-red-100 text-red-700":"bg-purple-100 text-purple-700"}`,children:"create"===e.action?"创建":"update"===e.action?"更新":"delete"===e.action?"删除":"导入"}),(0,t.jsx)("span",{className:"font-medium",children:e.entityName||"未知"}),(0,t.jsx)("span",{className:"text-xs text-muted-foreground",children:(0,v.format)(new Date(e.timestamp),"MM-dd HH:mm")})]}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["create"===e.action&&"新增了家族成员","update"===e.action&&"更新了成员信息","delete"===e.action&&"删除了成员","import"===e.action&&"导入了家族数据"]})]})]},e.id)):(0,t.jsx)("div",{className:"text-center py-12",children:(0,t.jsx)("p",{className:"text-sm text-foreground font-light tracking-wide",children:"静待修谱"})})})})})]}),(0,t.jsx)("div",{className:"space-y-6",children:(0,t.jsxs)(i.Card,{className:"border-none shadow-sm bg-primary/5",children:[(0,t.jsx)(i.CardHeader,{children:(0,t.jsxs)(i.CardTitle,{className:"flex items-center gap-2 text-primary font-serif",children:[(0,t.jsx)(m.Calendar,{className:"h-5 w-5"}),"本月祭祖/纪念"]})}),(0,t.jsx)(i.CardContent,{className:"grid gap-4",children:R.length>0?R.map((e,a)=>{let s=new Date().getFullYear()-new Date(e.date).getFullYear();return(0,t.jsx)(r.default,{href:`/members/${e.member.id}`,children:(0,t.jsxs)("div",{className:"flex items-center gap-4 p-3 rounded-lg bg-background/60 border border-border/50 hover:bg-background transition-colors cursor-pointer",children:[(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center w-12 h-12 rounded bg-primary/10 text-primary font-serif",children:[(0,t.jsxs)("span",{className:"text-xs",children:[new Date(e.date).getMonth()+1,"月"]}),(0,t.jsx)("span",{className:"font-bold text-lg",children:e.day})]}),(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsxs)("p",{className:"font-medium",children:[e.member.fullName," ","birth"===e.type?"诞辰":"忌日"]}),(0,t.jsxs)("p",{className:"text-sm text-muted-foreground",children:["第 ",e.member.generation," 世 · 距今 ",s," 年","death"===e.type&&" · 已故"]})]})]})},`${e.member.id}-${e.type}`)}):(0,t.jsx)("div",{className:"text-center py-12",children:(0,t.jsx)("p",{className:"text-sm text-foreground font-light tracking-wide",children:"此月无忆"})})})]})})]})}),(0,t.jsx)(o.TabsContent,{value:"anniversaries",className:"mt-0",children:(0,t.jsxs)(i.Card,{className:"border-none shadow-sm bg-card/50 backdrop-blur",children:[(0,t.jsxs)(i.CardHeader,{children:[(0,t.jsx)(i.CardTitle,{className:"font-serif",children:"近期纪念日"}),(0,t.jsx)(i.CardDescription,{children:"未来三个月内的生日和忌日"})]}),(0,t.jsx)(i.CardContent,{children:(0,t.jsx)("div",{className:"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4",children:(b=new Date((e=new Date).getFullYear(),e.getMonth()+3,e.getDate()),j=Object.values(C.members),w=[],j.forEach(t=>{if(t.birthDate){let r=new Date(t.birthDate),a=new Date(e.getFullYear(),r.getMonth(),r.getDate());a>=e&&a<=b&&w.push({member:t,type:"birth",date:a,originalDate:t.birthDate})}if(t.deathDate){let r=new Date(t.deathDate),a=new Date(e.getFullYear(),r.getMonth(),r.getDate());a>=e&&a<=b&&w.push({member:t,type:"death",date:a,originalDate:t.deathDate})}}),w.sort((e,t)=>e.date.getTime()-t.date.getTime()),w.length>0?w.map((a,s)=>{let l=e.getFullYear()-new Date(a.originalDate).getFullYear();return(0,t.jsx)(r.default,{href:`/members/${a.member.id}`,children:(0,t.jsx)(i.Card,{className:"hover:border-primary transition-colors cursor-pointer",children:(0,t.jsx)(i.CardContent,{className:"p-4",children:(0,t.jsxs)("div",{className:"flex items-center gap-3",children:[(0,t.jsxs)("div",{className:"flex flex-col items-center justify-center w-14 h-14 rounded-lg bg-primary/10 text-primary font-serif",children:[(0,t.jsxs)("span",{className:"text-xs",children:[a.date.getMonth()+1,"月"]}),(0,t.jsx)("span",{className:"font-bold text-lg",children:a.date.getDate()})]}),(0,t.jsxs)("div",{className:"flex-1",children:[(0,t.jsxs)("p",{className:"font-medium text-sm",children:[a.member.fullName," ","birth"===a.type?"诞辰":"忌日"]}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["第 ",a.member.generation," 世 · ",l," 年","death"===a.type&&" · 已故"]})]})]})})})},`${a.member.id}-${a.type}-${s}`)}):(0,t.jsx)("div",{className:"col-span-full text-center py-16",children:(0,t.jsx)("p",{className:"text-sm text-foreground font-light tracking-wide",children:"来日无期"})}))})})]})}),(0,t.jsx)(o.TabsContent,{value:"statistics",className:"mt-0",children:(0,t.jsx)(y,{members:Object.values(C.members)})}),(0,t.jsx)(o.TabsContent,{value:"migration",className:"mt-0",children:(0,t.jsxs)(i.Card,{className:"border-none shadow-sm bg-card/50 backdrop-blur",children:[(0,t.jsxs)(i.CardHeader,{children:[(0,t.jsx)(i.CardTitle,{className:"font-serif",children:"家族迁徙记录"}),(0,t.jsx)(i.CardDescription,{children:"记录家族成员的籍贯分布"})]}),(0,t.jsx)(i.CardContent,{children:(0,t.jsx)("div",{className:"space-y-6",children:P.length>0?P.map(([e,a])=>(0,t.jsxs)("div",{className:"border-l-4 border-primary pl-4",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,t.jsx)("h3",{className:"text-lg font-serif font-bold",children:e}),(0,t.jsxs)("span",{className:"text-sm text-muted-foreground",children:[a.length," 人"]})]}),(0,t.jsx)("div",{className:"grid grid-cols-2 md:grid-cols-3 lg:grid-cols-4 gap-2",children:a.map(e=>(0,t.jsx)(r.default,{href:`/members/${e.id}`,children:(0,t.jsxs)("div",{className:"px-3 py-2 bg-muted rounded hover:bg-muted/80 transition-colors",children:[(0,t.jsx)("p",{className:"text-sm font-medium truncate",children:e.fullName}),(0,t.jsxs)("p",{className:"text-xs text-muted-foreground",children:["第 ",e.generation," 世"]})]})},e.id))})]},e)):(0,t.jsx)("div",{className:"text-center py-16",children:(0,t.jsx)("p",{className:"text-sm text-foreground font-light tracking-wide",children:"未有迁徙"})})})})]})})]})]})]}):(0,t.jsxs)("div",{className:"flex min-h-screen flex-col bg-background font-sans",children:[(0,t.jsx)(l.SiteHeader,{}),(0,t.jsxs)("main",{className:"flex-1 flex items-center justify-center px-4 md:px-6 relative",children:[(0,t.jsxs)("div",{className:"absolute inset-0 pointer-events-none overflow-hidden",children:[(0,t.jsx)("div",{className:"absolute left-24 top-[60%] -translate-y-1/2 w-[30rem] h-[30rem] opacity-30 rotate-12",children:(0,t.jsx)(a.default,{src:"/building.png",alt:"",fill:!0,className:"object-contain",priority:!0})}),(0,t.jsx)("div",{className:"absolute right-24 top-[40%] -translate-y-1/2 w-[30rem] h-[30rem] opacity-30 -rotate-12",children:(0,t.jsx)(a.default,{src:"/tree.png",alt:"",fill:!0,className:"object-contain",priority:!0})})]}),(0,t.jsxs)("div",{className:"max-w-3xl mx-auto text-center space-y-12",children:[(0,t.jsx)("div",{className:"inline-flex items-center justify-center w-16 h-16 text-primary/20",children:(0,t.jsx)(x.BookOpen,{className:"h-16 w-16",strokeWidth:1})}),(0,t.jsxs)("div",{className:"space-y-6",children:[(0,t.jsx)("h1",{className:"text-4xl md:text-5xl font-serif font-light text-foreground tracking-wide",children:"华夏家谱"}),(0,t.jsx)("div",{className:"h-48 overflow-hidden relative",children:(0,t.jsxs)("div",{className:"space-y-8 text-muted-foreground antialiased",style:{animation:"scroll 30s linear infinite"},children:[(0,t.jsx)("p",{className:"text-lg md:text-xl font-normal leading-relaxed",children:"家族是根,文化是魂"}),(0,t.jsx)("p",{className:"text-base md:text-lg font-normal leading-relaxed opacity-85",children:"记录过往,传承未来"}),(0,t.jsx)("p",{className:"text-base md:text-lg font-normal leading-relaxed opacity-70",children:"让每一个故事都成为永恒"}),(0,t.jsx)("p",{className:"text-base md:text-lg font-normal leading-relaxed opacity-60",children:"血脉相连,世代相传"}),(0,t.jsx)("p",{className:"text-base md:text-lg font-normal leading-relaxed opacity-50",children:"铭记历史,启迪后人"}),(0,t.jsx)("p",{className:"text-base md:text-lg font-normal leading-relaxed opacity-40",children:"家风永续,德泽绵长"}),(0,t.jsx)("p",{className:"text-lg md:text-xl font-normal leading-relaxed",children:"家族是根,文化是魂"}),(0,t.jsx)("p",{className:"text-base md:text-lg font-normal leading-relaxed opacity-85",children:"记录过往,传承未来"}),(0,t.jsx)("p",{className:"text-base md:text-lg font-normal leading-relaxed opacity-70",children:"让每一个故事都成为永恒"})]})})]}),(0,t.jsx)("div",{className:"pt-8",children:(0,t.jsx)(r.default,{href:"/trees/new",children:(0,t.jsxs)(s.Button,{size:"lg",className:"gap-2 bg-primary text-primary-foreground hover:bg-primary/90 transition-all duration-300",children:["开始记录",(0,t.jsx)(f.ArrowRight,{className:"h-4 w-4"})]})})})]})]})]})}function I({title:e,value:r,subtitle:a,icon:s}){return(0,t.jsxs)(i.Card,{className:"relative overflow-hidden border border-border/50 shadow-sm bg-gradient-to-br from-card to-card/50 backdrop-blur transition-all hover:shadow-lg hover:border-primary/30 group",children:[(0,t.jsxs)(i.CardContent,{className:"p-6",children:[(0,t.jsxs)("div",{className:"flex items-center justify-between mb-4",children:[(0,t.jsx)("p",{className:"text-sm font-semibold text-muted-foreground uppercase tracking-wide",children:e}),(0,t.jsx)("div",{className:"text-primary/70 bg-primary/10 p-2.5 rounded-lg group-hover:bg-primary/20 transition-colors",children:s})]}),(0,t.jsxs)("div",{className:"flex flex-col space-y-1",children:[(0,t.jsx)("span",{className:"text-3xl font-serif font-bold text-foreground tracking-tight",children:r}),(0,t.jsx)("p",{className:"text-xs text-muted-foreground/80 font-medium",children:a})]})]}),(0,t.jsx)("div",{className:"absolute bottom-0 left-0 right-0 h-1 bg-gradient-to-r from-primary/50 via-primary to-primary/50 opacity-0 group-hover:opacity-100 transition-opacity"})]})}e.s(["default",()=>k],38315)}]); |