feat(V2-3): Web App MVP — Next.js 15 + @d3ro/api-client

packages/api-client (@d3ro/api-client) 신규:
- types.ts: 12개 테이블 Row/Insert/Update 타입 + Database 형식
- client.ts: createD3roSupabaseClient 팩토리 (placeholder fallback)
- auth.ts: signInWithOAuth/signOut/getSession/onAuthStateChange
- meetings.ts: 회의 + 메모 + 문서 + 전사 CRUD
- history.ts: 음성 입력 이력 CRUD
- usage.ts: 일일 쿼터 + 구독 조회
- 루트 barrel은 types만 re-export, 함수는 subpath import 전용

apps/web (@d3ro/web) 신규 — Next.js 15 App Router:
- transpilePackages: @d3ro/core, ui, i18n, api-client
- ThemeProvider (MUI + AppRouterCacheProvider)
- I18nProvider (localStorage 어댑터)
- AuthProvider (Supabase session Context)
- 라우트 9개:
  - / (auth 상태 기반 리다이렉트)
  - /login (Google/GitHub OAuth, 미설정 경고)
  - /auth/callback (code -> session 교환)
  - /dashboard (요약 카드 + 최근 회의)
  - /meetings (카드 그리드 리스트)
  - /meetings/[id] (transcripts/memos/documents)
  - /record (getUserMedia + MediaRecorder + stt-proxy)
- Sidebar, 인증 가드, 9바 웨이브폼, 레벨 미터

packages/ui 확장:
- MetalCard가 BoxProps 상속 (sx/onClick 등 전달)
- theme.ts에 typoSx(key) 헬퍼 추가 (d3roTypo -> MUI sx 변환)
- d3roPalette.tag.blue 추가 (M5 정리 포함)
- DS 컴포넌트 9개에 'use client' directive
- MetalDial 미사용 import 제거

packages/i18n 확장:
- ko.json에 7개 새 키 (nav.meetings/record/logout, login.*)

설계 결정:
- Database 제네릭 현재는 기본 타입 (V2-4에서 supabase gen types로 자동화)
- api-client barrel은 타입만 노출해서 컴파일 전파 차단
- DS 컴포넌트 client 경계 명시
- env 없어도 Next.js 빌드 성공 (placeholder URL/key)

검증:
- web typecheck OK
- desktop typecheck OK (회귀 없음)
- web next build OK (9 라우트 정적/동적 생성)
- desktop build OK (회귀 없음)
This commit is contained in:
yunchan8804 2026-04-09 02:52:31 +09:00
parent 9742b2109a
commit d0c33ca259
190 changed files with 6167 additions and 18 deletions

View file

@ -0,0 +1 @@
self.__BUILD_MANIFEST=function(e,r,t,_){return{__rewrites:{afterFiles:[],beforeFiles:[],fallback:[]},__routerFilterStatic:{numItems:7,errorRate:1e-4,numBits:135,numHashes:14,bitArray:[1,1,0,0,e,r,r,e,r,e,e,e,r,r,r,r,r,e,r,e,r,e,e,e,e,e,e,e,e,r,r,e,r,r,e,e,e,r,r,e,r,r,r,r,e,r,r,e,r,r,r,e,r,e,e,r,e,e,r,e,e,e,r,r,r,r,r,e,r,e,r,e,r,e,r,e,r,e,e,r,e,e,e,r,r,r,e,e,r,r,e,r,e,e,r,r,r,e,e,r,e,e,e,e,r,r,e,r,r,e,e,r,e,r,r,r,e,r,e,r,e,r,e,e,e,e,r,r,r,e,e,e,e,r,r]},__routerFilterDynamic:{numItems:r,errorRate:1e-4,numBits:20,numHashes:14,bitArray:[e,r,e,e,e,r,e,e,r,r,e,e,r,e,e,e,r,e,r,e]},"/_error":["static/chunks/pages/_error-19ea2e6a6da76d0f.js"],sortedPages:["/_app","/_error"]}}(0,1,1e-4,14),self.__BUILD_MANIFEST_CB&&self.__BUILD_MANIFEST_CB();

View file

@ -0,0 +1 @@
self.__SSG_MANIFEST=new Set([]);self.__SSG_MANIFEST_CB&&self.__SSG_MANIFEST_CB()

View file

@ -0,0 +1 @@
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[140],{4620:(e,t,o)=>{o.d(t,{A:()=>l});let l=function(e){return"string"==typeof e}},8703:(e,t,o)=>{o.d(t,{A:()=>y});var l=o(7620),n=o(2902),r=o(7138),i=o(9407),a=o(8613),s=o(9468),c=o(5120),u=o(8020),f=o(3664);function p(e){return(0,f.Ay)("MuiSvgIcon",e)}(0,u.A)("MuiSvgIcon",["root","colorPrimary","colorSecondary","colorAction","colorError","colorDisabled","fontSizeInherit","fontSizeSmall","fontSizeMedium","fontSizeLarge"]);var d=o(4568);let m=(0,a.default)("svg",{name:"MuiSvgIcon",slot:"Root",overridesResolver:(e,t)=>{let{ownerState:o}=e;return[t.root,"inherit"!==o.color&&t["color".concat((0,i.A)(o.color))],t["fontSize".concat((0,i.A)(o.fontSize))]]}})((0,s.A)(e=>{var t,o,l,n,r,i,a,s,c,u,f,p,d,m,v,y,h,S;let{theme:g}=e;return{userSelect:"none",width:"1em",height:"1em",display:"inline-block",flexShrink:0,transition:null==(n=g.transitions)||null==(l=n.create)?void 0:l.call(n,"fill",{duration:null==(o=(null!=(v=g.vars)?v:g).transitions)||null==(t=o.duration)?void 0:t.shorter}),variants:[{props:e=>!e.hasSvgAsChild,style:{fill:"currentColor"}},{props:{fontSize:"inherit"},style:{fontSize:"inherit"}},{props:{fontSize:"small"},style:{fontSize:(null==(i=g.typography)||null==(r=i.pxToRem)?void 0:r.call(i,20))||"1.25rem"}},{props:{fontSize:"medium"},style:{fontSize:(null==(s=g.typography)||null==(a=s.pxToRem)?void 0:a.call(s,24))||"1.5rem"}},{props:{fontSize:"large"},style:{fontSize:(null==(u=g.typography)||null==(c=u.pxToRem)?void 0:c.call(u,35))||"2.1875rem"}},...Object.entries((null!=(y=g.vars)?y:g).palette).filter(e=>{let[,t]=e;return t&&t.main}).map(e=>{var t,o,l;let[n]=e;return{props:{color:n},style:{color:null==(o=(null!=(l=g.vars)?l:g).palette)||null==(t=o[n])?void 0:t.main}}}),{props:{color:"action"},style:{color:null==(p=(null!=(h=g.vars)?h:g).palette)||null==(f=p.action)?void 0:f.active}},{props:{color:"disabled"},style:{color:null==(m=(null!=(S=g.vars)?S:g).palette)||null==(d=m.action)?void 0:d.disabled}},{props:{color:"inherit"},style:{color:void 0}}]}})),v=l.forwardRef(function(e,t){let o=(0,c.b)({props:e,name:"MuiSvgIcon"}),{children:a,className:s,color:u="inherit",component:f="svg",fontSize:v="medium",htmlColor:y,inheritViewBox:h=!1,titleAccess:S,viewBox:g="0 0 24 24",...A}=o,z=l.isValidElement(a)&&"svg"===a.type,N={...o,color:u,component:f,fontSize:v,instanceFontSize:e.fontSize,inheritViewBox:h,viewBox:g,hasSvgAsChild:z},b={};h||(b.viewBox=g);let k=(e=>{let{color:t,fontSize:o,classes:l}=e,n={root:["root","inherit"!==t&&"color".concat((0,i.A)(t)),"fontSize".concat((0,i.A)(o))]};return(0,r.A)(n,p,l)})(N);return(0,d.jsxs)(m,{as:f,className:(0,n.A)(k.root,s),focusable:"false",color:y,"aria-hidden":!S||void 0,role:S?"img":void 0,ref:t,...b,...A,...z&&a.props,ownerState:N,children:[z?a.props.children:a,S?(0,d.jsx)("title",{children:S}):null]})});function y(e,t){function o(t,o){return(0,d.jsx)(v,{"data-testid":void 0,ref:o,...t,children:e})}return o.muiName=v.muiName,l.memo(l.forwardRef(o))}v.muiName="SvgIcon"},8804:(e,t,o)=>{o.d(t,{A:()=>c});var l=o(3786),n=o(4620),r=o(2902);let i=function(e,t=[]){if(void 0===e)return{};let o={};return Object.keys(e).filter(o=>o.match(/^on[A-Z]/)&&"function"==typeof e[o]&&!t.includes(o)).forEach(t=>{o[t]=e[t]}),o},a=function(e){if(void 0===e)return{};let t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&"function"==typeof e[t])).forEach(o=>{t[o]=e[o]}),t},s=function(e){let{getSlotProps:t,additionalProps:o,externalSlotProps:l,externalForwardedProps:n,className:s}=e;if(!t){let e=(0,r.A)(o?.className,s,n?.className,l?.className),t={...o?.style,...n?.style,...l?.style},i={...o,...n,...l};return e.length>0&&(i.className=e),Object.keys(t).length>0&&(i.style=t),{props:i,internalRef:void 0}}let c=i({...n,...l}),u=a(l),f=a(n),p=t(c),d=(0,r.A)(p?.className,o?.className,s,n?.className,l?.className),m={...p?.style,...o?.style,...n?.style,...l?.style},v={...p,...o,...f,...u};return d.length>0&&(v.className=d),Object.keys(m).length>0&&(v.style=m),{props:v,internalRef:p.ref}};function c(e,t){var o,r;let{className:i,elementType:a,ownerState:c,externalForwardedProps:u,internalForwardedProps:f,shouldForwardComponentProp:p=!1,...d}=t,{component:m,slots:v={[e]:void 0},slotProps:y={[e]:void 0},...h}=u,S=v[e]||a,g=(o=y[e],"function"==typeof o?o(c,void 0):o),{props:{component:A,...z},internalRef:N}=s({className:i,...d,externalForwardedProps:"root"===e?h:void 0,externalSlotProps:g}),b=(0,l.A)(N,null==g?void 0:g.ref,t.ref),k="root"===e?A||m:A,w=(r={..."root"===e&&!m&&!v[e]&&f,..."root"!==e&&!v[e]&&f,...z,...k&&!p&&{as:k},...k&&p&&{component:k},ref:b},void 0===S||(0,n.A)(S)?r:{...r,ownerState:{...r.ownerState,...c}});return[S,w]}}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[655],{7655:(e,t,l)=>{Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let u=l(4761),n=l(6029),a=u._(l(5729)),o=l(7069);async function r(e){let{Component:t,ctx:l}=e;return{pageProps:await (0,o.loadGetInitialProps)(t,l)}}class s extends a.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,n.jsx)(e,{...t})}}s.origGetInitialProps=r,s.getInitialProps=r,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[492],{1193:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return o}});let r=l(4568),n=l(4137),o=function(){return(0,r.jsx)("html",{children:(0,r.jsx)("body",{children:(0,r.jsx)(n.HTTPAccessErrorFallback,{status:404,message:"This page could not be found."})})})};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},4137:(e,t,l)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"HTTPAccessErrorFallback",{enumerable:!0,get:function(){return o}});let r=l(4568),n=l(5592);function o(e){let{status:t,message:l}=e;return(0,r.jsxs)(r.Fragment,{children:[(0,r.jsx)("title",{children:t+": "+l}),(0,r.jsx)("div",{style:n.styles.error,children:(0,r.jsxs)("div",{children:[(0,r.jsx)("style",{dangerouslySetInnerHTML:{__html:"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}"}}),(0,r.jsx)("h1",{className:"next-error-h1",style:n.styles.h1,children:t}),(0,r.jsx)("div",{style:n.styles.desc,children:(0,r.jsx)("h2",{style:n.styles.h2,children:l})})]})})]})}("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},5592:(e,t)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"styles",{enumerable:!0,get:function(){return l}});let l={error:{fontFamily:'system-ui,"Segoe UI",Roboto,Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji"',height:"100vh",textAlign:"center",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center"},desc:{display:"inline-block"},h1:{display:"inline-block",margin:"0 20px 0 0",padding:"0 23px 0 0",fontSize:24,fontWeight:500,verticalAlign:"top",lineHeight:"49px"},h2:{fontSize:14,fontWeight:400,lineHeight:"49px",margin:0}};("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)},8213:(e,t,l)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_not-found/page",function(){return l(1193)}])}},e=>{e.O(0,[587,18,358],()=>e(e.s=8213)),_N_E=e.O()}]);

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,974],{1680:()=>{}},_=>{_.O(0,[587,18,358],()=>_(_.s=1680)),_N_E=_.O()}]);

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[954],{324:(e,s,r)=>{"use strict";r.d(s,{Sidebar:()=>m});var a=r(4568),l=r(7541),o=r(1284),t=r(6987),n=r(3133),i=r(5193),d=r(5431),c=r(3775),h=r(1084),x=r(2278),p=r(2775),b=r(2010),u=r(1441),y=r(3791),g=r(7740),j=r(1037);function m(){var e,s,r,m;let M=(0,l.useRouter)(),A=(0,l.usePathname)(),{t:f}=(0,g.s9)(),k=[{key:"dashboard",path:"/dashboard",label:null!=(e=f("nav.dashboard"))?e:"Dashboard",icon:(0,a.jsx)(h.A,{})},{key:"meetings",path:"/meetings",label:null!=(s=f("nav.meetings"))?s:"Meetings",icon:(0,a.jsx)(x.A,{})},{key:"record",path:"/record",label:null!=(r=f("nav.record"))?r:"Record",icon:(0,a.jsx)(p.A,{})}];async function v(){let e=(0,j.c)();await e.auth.signOut(),M.replace("/login")}return(0,a.jsxs)(o.default,{sx:{width:240,minHeight:"100vh",bgcolor:y.sM.bg.sidebar,borderRight:"1px solid ".concat(y.sM.border.default),display:"flex",flexDirection:"column"},children:[(0,a.jsx)(o.default,{sx:{p:3,borderBottom:"1px solid ".concat(y.sM.border.default)},children:(0,a.jsx)(u.Rk,{variant:"heading",children:"D3RO VOICE"})}),(0,a.jsx)(t.A,{sx:{flex:1,py:2},children:k.map(e=>{let s=A===e.path||A.startsWith("".concat(e.path,"/"));return(0,a.jsx)(n.Ay,{disablePadding:!0,children:(0,a.jsxs)(i.A,{selected:s,onClick:()=>M.push(e.path),sx:{"&.Mui-selected":{bgcolor:y.sM.bg.inset,borderLeft:"3px solid ".concat(y.sM.accent.amber)}},children:[(0,a.jsx)(d.A,{sx:{color:s?y.sM.accent.amber:y.sM.text.label},children:e.icon}),(0,a.jsx)(c.A,{primary:e.label,primaryTypographyProps:{color:s?y.sM.text.primary:y.sM.text.secondary}})]})},e.key)})}),(0,a.jsx)(t.A,{sx:{borderTop:"1px solid ".concat(y.sM.border.default)},children:(0,a.jsx)(n.Ay,{disablePadding:!0,children:(0,a.jsxs)(i.A,{onClick:()=>void v(),children:[(0,a.jsx)(d.A,{sx:{color:y.sM.text.label},children:(0,a.jsx)(b.A,{})}),(0,a.jsx)(c.A,{primary:null!=(m=f("nav.logout"))?m:"Logout",primaryTypographyProps:{color:y.sM.text.secondary}})]})})})]})}},1441:(e,s,r)=>{"use strict";r.d(s,{Rk:()=>l.PhosphorText,Uu:()=>a.MetalCard}),r(4070),r(9006),r(5281),r(6652);var a=r(9502),l=r(215);r(2517),r(1459),r(984)},7963:(e,s,r)=>{Promise.resolve().then(r.bind(r,324)),Promise.resolve().then(r.bind(r,1284))}},e=>{e.O(0,[385,77,988,189,140,576,791,184,910,587,18,358],()=>e(e.s=7963)),_N_E=e.O()}]);

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[105],{2255:(e,r,o)=>{Promise.resolve().then(o.bind(o,1284)),Promise.resolve().then(o.bind(o,7960)),Promise.resolve().then(o.bind(o,5754)),Promise.resolve().then(o.bind(o,7301)),Promise.resolve().then(o.bind(o,8613)),Promise.resolve().then(o.bind(o,9746)),Promise.resolve().then(o.bind(o,1379)),Promise.resolve().then(o.bind(o,1774)),Promise.resolve().then(o.bind(o,8448)),Promise.resolve().then(o.bind(o,7273)),Promise.resolve().then(o.bind(o,5608)),Promise.resolve().then(o.bind(o,1238)),Promise.resolve().then(o.bind(o,4590)),Promise.resolve().then(o.bind(o,3174)),Promise.resolve().then(o.bind(o,2421)),Promise.resolve().then(o.bind(o,8758)),Promise.resolve().then(o.bind(o,9969)),Promise.resolve().then(o.bind(o,8356)),Promise.resolve().then(o.bind(o,5845)),Promise.resolve().then(o.bind(o,3292)),Promise.resolve().then(o.bind(o,2406)),Promise.resolve().then(o.bind(o,2105)),Promise.resolve().then(o.bind(o,1374)),Promise.resolve().then(o.bind(o,1580)),Promise.resolve().then(o.bind(o,850)),Promise.resolve().then(o.bind(o,6310)),Promise.resolve().then(o.bind(o,984)),Promise.resolve().then(o.bind(o,4070)),Promise.resolve().then(o.bind(o,9006)),Promise.resolve().then(o.bind(o,5281)),Promise.resolve().then(o.bind(o,9502)),Promise.resolve().then(o.bind(o,2517)),Promise.resolve().then(o.bind(o,215)),Promise.resolve().then(o.bind(o,6652)),Promise.resolve().then(o.bind(o,1459))},5754:(e,r,o)=>{"use strict";o.d(r,{default:()=>t});var i=o(3292),n=o(8613),s=o(5120);let t=(0,i.default)({createStyledComponent:(0,n.default)("div",{name:"MuiStack",slot:"Root"}),useThemeProps:e=>(0,s.b)({props:e,name:"MuiStack"})})},7488:(e,r,o)=>{"use strict";o.d(r,{A:()=>n});var i=o(7620);function n(e,r){return i.isValidElement(e)&&-1!==r.indexOf(e.type.muiName??e.type?._payload?.value?.muiName)}},7960:(e,r,o)=>{"use strict";o.r(r),o.d(r,{default:()=>d});var i=o(9969),n=o(8613),s=o(5120),t=o(1774);let d=(0,i.default)({createStyledComponent:(0,n.default)("div",{name:"MuiGrid",slot:"Root",overridesResolver:(e,r)=>{let{ownerState:o}=e;return[r.root,o.container&&r.container]}}),componentName:"MuiGrid",useThemeProps:e=>(0,s.b)({props:e,name:"MuiGrid"}),useTheme:t.default})}},e=>{e.O(0,[77,189,746,605,791,910,587,18,358],()=>e(e.s=2255)),_N_E=e.O()}]);

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[177],{255:(e,t,r)=>{Promise.resolve().then(r.bind(r,1598)),Promise.resolve().then(r.bind(r,1732)),Promise.resolve().then(r.bind(r,7455))},1598:(e,t,r)=>{"use strict";r.d(t,{A:()=>c,AuthProvider:()=>s});var o=r(4568),n=r(7620),l=r(1037);let a=(0,n.createContext)({session:null,user:null,loading:!0});function s(e){var t;let{children:r}=e,[s,c]=(0,n.useState)(null),[i,u]=(0,n.useState)(!0);return(0,n.useEffect)(()=>{let e=(0,l.c)();e.auth.getSession().then(e=>{let{data:t}=e;c(t.session)}).finally(()=>{u(!1)});let{data:{subscription:t}}=e.auth.onAuthStateChange((e,t)=>{c(t)});return()=>{t.unsubscribe()}},[]),(0,o.jsx)(a.Provider,{value:{session:s,user:null!=(t=null==s?void 0:s.user)?t:null,loading:i},children:r})}function c(){return(0,n.useContext)(a)}},1732:(e,t,r)=>{"use strict";r.d(t,{I18nProvider:()=>s});var o=r(4568),n=r(7740);let l="d3ro.voice.locale",a={load:()=>{try{return window.localStorage.getItem(l)}catch(e){return null}},save:e=>{try{window.localStorage.setItem(l,e)}catch(e){}}};function s(e){let{children:t}=e;return(0,o.jsx)(n.CY,{storage:a,children:t})}},7455:(e,t,r)=>{"use strict";r.d(t,{ThemeProvider:()=>f});var o=r(4568),n=r(7620),l=r(9746),a=r(6480),s=r(5120);let c="function"==typeof(0,a.Dp)({}),i=function(e){var t,r;let o=arguments.length>1&&void 0!==arguments[1]&&arguments[1],n={};o&&e.colorSchemes&&"function"==typeof e.getColorSchemeSelector&&Object.entries(e.colorSchemes).forEach(t=>{var r,o;let[l,a]=t,s=e.getColorSchemeSelector(l);s.startsWith("@")?n[s]={":root":{colorScheme:null==(r=a.palette)?void 0:r.mode}}:n[s.replace(/\s*&/,"")]={colorScheme:null==(o=a.palette)?void 0:o.mode}});let l={html:{WebkitFontSmoothing:"antialiased",MozOsxFontSmoothing:"grayscale",boxSizing:"border-box",WebkitTextSizeAdjust:"100%",...o&&!e.vars&&{colorScheme:e.palette.mode}},"*, *::before, *::after":{boxSizing:"inherit"},"strong, b":{fontWeight:e.typography.fontWeightBold},body:{margin:0,...{color:(e.vars||e).palette.text.primary,...e.typography.body1,backgroundColor:(e.vars||e).palette.background.default,"@media print":{backgroundColor:(e.vars||e).palette.common.white}},"&::backdrop":{backgroundColor:(e.vars||e).palette.background.default}},...n},a=null==(r=e.components)||null==(t=r.MuiCssBaseline)?void 0:t.styleOverrides;return a&&(l=[l,a]),l},u="mui-ecs",h=(0,a.Dp)(c?e=>{let{theme:t,enableColorScheme:r}=e;return i(t,r)}:e=>{let{theme:t}=e;return(e=>{let t=i(e,!1),r=Array.isArray(t)?t[0]:t;return!e.vars&&r&&(r.html[":root:has(".concat(u,")")]={colorScheme:e.palette.mode}),e.colorSchemes&&Object.entries(e.colorSchemes).forEach(t=>{var o,n;let[l,a]=t,s=e.getColorSchemeSelector(l);s.startsWith("@")?r[s]={[":root:not(:has(.".concat(u,"))")]:{colorScheme:null==(o=a.palette)?void 0:o.mode}}:r[s.replace(/\s*&/,"")]={["&:not(:has(.".concat(u,"))")]:{colorScheme:null==(n=a.palette)?void 0:n.mode}}}),t})(t)}),d=function(e){let{children:t,enableColorScheme:r=!1}=(0,s.b)({props:e,name:"MuiCssBaseline"});return(0,o.jsxs)(n.Fragment,{children:[c&&(0,o.jsx)(h,{enableColorScheme:r}),!c&&!r&&(0,o.jsx)("span",{className:u,style:{display:"none"}}),t]})};var m=r(1828),v=r(3459),p=r(7541);function y(e){let{options:t,CacheProvider:r=v.C,children:l}=e,[a]=n.useState(()=>{var e;let r=(0,m.A)({...t,key:null!=(e=null==t?void 0:t.key)?e:"mui"});r.compat=!0;let o=r.insert,n=[];return r.insert=function(){for(var e=arguments.length,l=Array(e),a=0;a<e;a++)l[a]=arguments[a];(null==t?void 0:t.enableCssLayer)&&!l[1].styles.match(/^@layer\s+[^{]*$/)&&(l[1].styles="@layer mui {".concat(l[1].styles,"}"));let[s,c]=l;return void 0===r.inserted[c.name]&&n.push({name:c.name,isGlobal:!s}),o(...l)},{cache:r,flush:()=>{let e=n;return n=[],e}}});return(0,p.useServerInsertedHTML)(()=>{let e=a.flush();if(0===e.length)return null;let r="",l=a.cache.key,s=[];return e.forEach(e=>{let{name:t,isGlobal:o}=e,n=a.cache.inserted[t];"string"==typeof n&&(o?s.push({name:t,style:n}):(r+=n,l+=" ".concat(t)))}),(0,o.jsxs)(n.Fragment,{children:[s.map(e=>{let{name:r,style:n}=e;return(0,o.jsx)("style",{nonce:null==t?void 0:t.nonce,"data-emotion":"".concat(a.cache.key,"-global ").concat(r),dangerouslySetInnerHTML:{__html:n}},r)}),r&&(0,o.jsx)("style",{nonce:null==t?void 0:t.nonce,"data-emotion":l,dangerouslySetInnerHTML:{__html:r}})]})}),(0,o.jsx)(r,{value:a.cache,children:l})}var g=r(3791);function f(e){let{children:t}=e,r=(0,n.useMemo)(()=>(0,g.O4)("dark",!0),[]);return(0,o.jsx)(y,{options:{key:"d3ro-mui",enableCssLayer:!0},children:(0,o.jsxs)(l.default,{theme:r,children:[(0,o.jsx)(d,{}),t]})})}}},e=>{e.O(0,[385,77,988,746,791,184,587,18,358],()=>e(e.s=255)),_N_E=e.O()}]);

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[520],{1009:(e,t,n)=>{"use strict";n.r(t),n.d(t,{default:()=>p});var l=n(4568),s=n(7541),a=n(7620),i=n(1284),r=n(5754),u=n(1181),o=n(2622),c=n(8703);let d=(0,c.A)((0,l.jsx)("path",{d:"M12.545,10.239v3.821h5.445c-0.712,2.315-2.647,3.972-5.445,3.972c-3.332,0-6.033-2.701-6.033-6.032s2.701-6.032,6.033-6.032c1.498,0,2.866,0.549,3.921,1.453l2.814-2.814C17.503,2.988,15.139,2,12.545,2C7.021,2,2.543,6.477,2.543,12s4.478,10,10.002,10c8.396,0,10.249-7.85,9.426-11.748L12.545,10.239z"}),"Google"),h=(0,c.A)((0,l.jsx)("path",{d:"M12 1.27a11 11 0 00-3.48 21.46c.55.09.73-.28.73-.55v-1.84c-3.03.64-3.67-1.46-3.67-1.46-.55-1.29-1.28-1.65-1.28-1.65-.92-.65.1-.65.1-.65 1.1 0 1.73 1.1 1.73 1.1.92 1.65 2.57 1.2 3.21.92a2 2 0 01.64-1.47c-2.47-.27-5.04-1.19-5.04-5.5 0-1.1.46-2.1 1.2-2.84a3.76 3.76 0 010-2.93s.91-.28 3.11 1.1c1.8-.49 3.7-.49 5.5 0 2.1-1.38 3.02-1.1 3.02-1.1a3.76 3.76 0 010 2.93c.83.74 1.2 1.74 1.2 2.94 0 4.21-2.57 5.13-5.04 5.4.45.37.82.92.82 2.02v3.03c0 .27.1.64.73.55A11 11 0 0012 1.27"}),"GitHub");var x=n(1441),g=n(3791),v=n(7740),f=n(1037),b=n(1598);function p(){var e,t,n,c;let p=(0,s.useRouter)(),{user:j,loading:A}=(0,b.A)(),{t:C}=(0,v.s9)(),[k,m]=(0,a.useState)(null),[w,S]=(0,a.useState)(!1),y=(0,f.$)();async function E(e){if(!y)return void m("Supabase 환경변수가 설정되지 않았습니다. apps/web/env.example.txt를 참고하세요.");m(null),S(!0);try{let t=(0,f.c)(),n="".concat(window.location.origin,"/auth/callback"),{error:l}=await t.auth.signInWithOAuth({provider:e,options:{redirectTo:n}});l&&(m(l.message),S(!1))}catch(e){m(e instanceof Error?e.message:"Unknown error"),S(!1)}}return(0,a.useEffect)(()=>{!A&&j&&p.replace("/dashboard")},[A,j,p]),(0,l.jsx)(i.default,{sx:{minHeight:"100vh",display:"flex",alignItems:"center",justifyContent:"center",bgcolor:g.sM.bg.app,p:4},children:(0,l.jsx)(x.Uu,{sx:{maxWidth:420,width:"100%",p:4},children:(0,l.jsxs)(r.default,{spacing:3,children:[(0,l.jsxs)(i.default,{sx:{textAlign:"center"},children:[(0,l.jsx)(x.Rk,{variant:"title",children:"D3RO VOICE"}),(0,l.jsx)(i.default,{sx:{mt:1,...(0,g.kR)("label"),color:g.sM.text.secondary},children:null!=(e=C("login.subtitle"))?e:"AI 음성 어시스턴트"})]}),!y&&(0,l.jsx)(u.A,{severity:"warning",variant:"outlined",children:"Supabase 환경변수가 설정되지 않았습니다. 로그인은 env 설정 후 가능합니다."}),k&&(0,l.jsx)(u.A,{severity:"error",variant:"outlined",children:k}),(0,l.jsxs)(r.default,{spacing:2,children:[(0,l.jsx)(o.A,{fullWidth:!0,variant:"contained",size:"large",startIcon:(0,l.jsx)(d,{}),disabled:w||!y,onClick:()=>void E("google"),children:null!=(t=C("login.google"))?t:"Google로 계속하기"}),(0,l.jsx)(o.A,{fullWidth:!0,variant:"outlined",size:"large",startIcon:(0,l.jsx)(h,{}),disabled:w||!y,onClick:()=>void E("github"),children:null!=(n=C("login.github"))?n:"GitHub로 계속하기"})]}),(0,l.jsx)(i.default,{sx:{textAlign:"center",color:g.sM.text.label,fontSize:12},children:null!=(c=C("login.terms"))?c:"계속 진행하면 이용약관 및 개인정보 처리방침에 동의합니다."})]})})})}},1441:(e,t,n)=>{"use strict";n.d(t,{Rk:()=>s.PhosphorText,Uu:()=>l.MetalCard}),n(4070),n(9006),n(5281),n(6652);var l=n(9502),s=n(215);n(2517),n(1459),n(984)},1598:(e,t,n)=>{"use strict";n.d(t,{A:()=>u,AuthProvider:()=>r});var l=n(4568),s=n(7620),a=n(1037);let i=(0,s.createContext)({session:null,user:null,loading:!0});function r(e){var t;let{children:n}=e,[r,u]=(0,s.useState)(null),[o,c]=(0,s.useState)(!0);return(0,s.useEffect)(()=>{let e=(0,a.c)();e.auth.getSession().then(e=>{let{data:t}=e;u(t.session)}).finally(()=>{c(!1)});let{data:{subscription:t}}=e.auth.onAuthStateChange((e,t)=>{u(t)});return()=>{t.unsubscribe()}},[]),(0,l.jsx)(i.Provider,{value:{session:r,user:null!=(t=null==r?void 0:r.user)?t:null,loading:o},children:n})}function u(){return(0,s.useContext)(i)}},8119:(e,t,n)=>{Promise.resolve().then(n.bind(n,1009))}},e=>{e.O(0,[385,77,988,189,140,374,791,184,910,587,18,358],()=>e(e.s=8119)),_N_E=e.O()}]);

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[573],{324:(e,s,r)=>{"use strict";r.d(s,{Sidebar:()=>y});var o=r(4568),n=r(7541),i=r(1284),t=r(6987),l=r(3133),d=r(5193),a=r(5431),h=r(3775),b=r(1084),c=r(2278),m=r(2775),v=r(2010),P=r(1441),x=r(3791),p=r(7740),u=r(1037);function y(){var e,s,r,y;let g=(0,n.useRouter)(),j=(0,n.usePathname)(),{t:M}=(0,p.s9)(),f=[{key:"dashboard",path:"/dashboard",label:null!=(e=M("nav.dashboard"))?e:"Dashboard",icon:(0,o.jsx)(b.A,{})},{key:"meetings",path:"/meetings",label:null!=(s=M("nav.meetings"))?s:"Meetings",icon:(0,o.jsx)(c.A,{})},{key:"record",path:"/record",label:null!=(r=M("nav.record"))?r:"Record",icon:(0,o.jsx)(m.A,{})}];async function k(){let e=(0,u.c)();await e.auth.signOut(),g.replace("/login")}return(0,o.jsxs)(i.default,{sx:{width:240,minHeight:"100vh",bgcolor:x.sM.bg.sidebar,borderRight:"1px solid ".concat(x.sM.border.default),display:"flex",flexDirection:"column"},children:[(0,o.jsx)(i.default,{sx:{p:3,borderBottom:"1px solid ".concat(x.sM.border.default)},children:(0,o.jsx)(P.Rk,{variant:"heading",children:"D3RO VOICE"})}),(0,o.jsx)(t.A,{sx:{flex:1,py:2},children:f.map(e=>{let s=j===e.path||j.startsWith("".concat(e.path,"/"));return(0,o.jsx)(l.Ay,{disablePadding:!0,children:(0,o.jsxs)(d.A,{selected:s,onClick:()=>g.push(e.path),sx:{"&.Mui-selected":{bgcolor:x.sM.bg.inset,borderLeft:"3px solid ".concat(x.sM.accent.amber)}},children:[(0,o.jsx)(a.A,{sx:{color:s?x.sM.accent.amber:x.sM.text.label},children:e.icon}),(0,o.jsx)(h.A,{primary:e.label,primaryTypographyProps:{color:s?x.sM.text.primary:x.sM.text.secondary}})]})},e.key)})}),(0,o.jsx)(t.A,{sx:{borderTop:"1px solid ".concat(x.sM.border.default)},children:(0,o.jsx)(l.Ay,{disablePadding:!0,children:(0,o.jsxs)(d.A,{onClick:()=>void k(),children:[(0,o.jsx)(a.A,{sx:{color:x.sM.text.label},children:(0,o.jsx)(v.A,{})}),(0,o.jsx)(h.A,{primary:null!=(y=M("nav.logout"))?y:"Logout",primaryTypographyProps:{color:x.sM.text.secondary}})]})})})]})}},1441:(e,s,r)=>{"use strict";r.d(s,{Rk:()=>n.PhosphorText,Uu:()=>o.MetalCard}),r(4070),r(9006),r(5281),r(6652);var o=r(9502),n=r(215);r(2517),r(1459),r(984)},3947:(e,s,r)=>{Promise.resolve().then(r.bind(r,324)),Promise.resolve().then(r.bind(r,1284)),Promise.resolve().then(r.bind(r,5754)),Promise.resolve().then(r.bind(r,7301)),Promise.resolve().then(r.bind(r,8613)),Promise.resolve().then(r.bind(r,9746)),Promise.resolve().then(r.bind(r,1379)),Promise.resolve().then(r.bind(r,1774)),Promise.resolve().then(r.bind(r,8448)),Promise.resolve().then(r.bind(r,7273)),Promise.resolve().then(r.bind(r,5608)),Promise.resolve().then(r.bind(r,1238)),Promise.resolve().then(r.bind(r,4590)),Promise.resolve().then(r.bind(r,3174)),Promise.resolve().then(r.bind(r,2421)),Promise.resolve().then(r.bind(r,8758)),Promise.resolve().then(r.bind(r,9969)),Promise.resolve().then(r.bind(r,8356)),Promise.resolve().then(r.bind(r,5845)),Promise.resolve().then(r.bind(r,3292)),Promise.resolve().then(r.bind(r,2406)),Promise.resolve().then(r.bind(r,2105)),Promise.resolve().then(r.bind(r,1374)),Promise.resolve().then(r.bind(r,1580)),Promise.resolve().then(r.bind(r,850)),Promise.resolve().then(r.bind(r,6310)),Promise.resolve().then(r.bind(r,984)),Promise.resolve().then(r.bind(r,4070)),Promise.resolve().then(r.bind(r,9006)),Promise.resolve().then(r.bind(r,5281)),Promise.resolve().then(r.bind(r,9502)),Promise.resolve().then(r.bind(r,2517)),Promise.resolve().then(r.bind(r,215)),Promise.resolve().then(r.bind(r,6652)),Promise.resolve().then(r.bind(r,1459))},5754:(e,s,r)=>{"use strict";r.d(s,{default:()=>t});var o=r(3292),n=r(8613),i=r(5120);let t=(0,o.default)({createStyledComponent:(0,n.default)("div",{name:"MuiStack",slot:"Root"}),useThemeProps:e=>(0,i.b)({props:e,name:"MuiStack"})})}},e=>{e.O(0,[385,77,988,189,140,576,746,605,791,184,910,587,18,358],()=>e(e.s=3947)),_N_E=e.O()}]);

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[873],{324:(e,s,r)=>{"use strict";r.d(s,{Sidebar:()=>y});var o=r(4568),n=r(7541),i=r(1284),t=r(6987),l=r(3133),d=r(5193),a=r(5431),h=r(3775),b=r(1084),c=r(2278),m=r(2775),v=r(2010),P=r(1441),x=r(3791),p=r(7740),u=r(1037);function y(){var e,s,r,y;let g=(0,n.useRouter)(),j=(0,n.usePathname)(),{t:M}=(0,p.s9)(),A=[{key:"dashboard",path:"/dashboard",label:null!=(e=M("nav.dashboard"))?e:"Dashboard",icon:(0,o.jsx)(b.A,{})},{key:"meetings",path:"/meetings",label:null!=(s=M("nav.meetings"))?s:"Meetings",icon:(0,o.jsx)(c.A,{})},{key:"record",path:"/record",label:null!=(r=M("nav.record"))?r:"Record",icon:(0,o.jsx)(m.A,{})}];async function f(){let e=(0,u.c)();await e.auth.signOut(),g.replace("/login")}return(0,o.jsxs)(i.default,{sx:{width:240,minHeight:"100vh",bgcolor:x.sM.bg.sidebar,borderRight:"1px solid ".concat(x.sM.border.default),display:"flex",flexDirection:"column"},children:[(0,o.jsx)(i.default,{sx:{p:3,borderBottom:"1px solid ".concat(x.sM.border.default)},children:(0,o.jsx)(P.Rk,{variant:"heading",children:"D3RO VOICE"})}),(0,o.jsx)(t.A,{sx:{flex:1,py:2},children:A.map(e=>{let s=j===e.path||j.startsWith("".concat(e.path,"/"));return(0,o.jsx)(l.Ay,{disablePadding:!0,children:(0,o.jsxs)(d.A,{selected:s,onClick:()=>g.push(e.path),sx:{"&.Mui-selected":{bgcolor:x.sM.bg.inset,borderLeft:"3px solid ".concat(x.sM.accent.amber)}},children:[(0,o.jsx)(a.A,{sx:{color:s?x.sM.accent.amber:x.sM.text.label},children:e.icon}),(0,o.jsx)(h.A,{primary:e.label,primaryTypographyProps:{color:s?x.sM.text.primary:x.sM.text.secondary}})]})},e.key)})}),(0,o.jsx)(t.A,{sx:{borderTop:"1px solid ".concat(x.sM.border.default)},children:(0,o.jsx)(l.Ay,{disablePadding:!0,children:(0,o.jsxs)(d.A,{onClick:()=>void f(),children:[(0,o.jsx)(a.A,{sx:{color:x.sM.text.label},children:(0,o.jsx)(v.A,{})}),(0,o.jsx)(h.A,{primary:null!=(y=M("nav.logout"))?y:"Logout",primaryTypographyProps:{color:x.sM.text.secondary}})]})})})]})}},1441:(e,s,r)=>{"use strict";r.d(s,{Rk:()=>n.PhosphorText,Uu:()=>o.MetalCard}),r(4070),r(9006),r(5281),r(6652);var o=r(9502),n=r(215);r(2517),r(1459),r(984)},3380:(e,s,r)=>{Promise.resolve().then(r.bind(r,324)),Promise.resolve().then(r.bind(r,1284)),Promise.resolve().then(r.bind(r,7960)),Promise.resolve().then(r.bind(r,7301)),Promise.resolve().then(r.bind(r,8613)),Promise.resolve().then(r.bind(r,9746)),Promise.resolve().then(r.bind(r,1379)),Promise.resolve().then(r.bind(r,1774)),Promise.resolve().then(r.bind(r,8448)),Promise.resolve().then(r.bind(r,7273)),Promise.resolve().then(r.bind(r,5608)),Promise.resolve().then(r.bind(r,1238)),Promise.resolve().then(r.bind(r,4590)),Promise.resolve().then(r.bind(r,3174)),Promise.resolve().then(r.bind(r,2421)),Promise.resolve().then(r.bind(r,8758)),Promise.resolve().then(r.bind(r,9969)),Promise.resolve().then(r.bind(r,8356)),Promise.resolve().then(r.bind(r,5845)),Promise.resolve().then(r.bind(r,3292)),Promise.resolve().then(r.bind(r,2406)),Promise.resolve().then(r.bind(r,2105)),Promise.resolve().then(r.bind(r,1374)),Promise.resolve().then(r.bind(r,1580)),Promise.resolve().then(r.bind(r,850)),Promise.resolve().then(r.bind(r,6310)),Promise.resolve().then(r.t.bind(r,9664,23)),Promise.resolve().then(r.bind(r,984)),Promise.resolve().then(r.bind(r,4070)),Promise.resolve().then(r.bind(r,9006)),Promise.resolve().then(r.bind(r,5281)),Promise.resolve().then(r.bind(r,9502)),Promise.resolve().then(r.bind(r,2517)),Promise.resolve().then(r.bind(r,215)),Promise.resolve().then(r.bind(r,6652)),Promise.resolve().then(r.bind(r,1459))}},e=>{e.O(0,[385,77,988,189,140,576,746,605,381,791,184,910,587,18,358],()=>e(e.s=3380)),_N_E=e.O()}]);

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[15,974],{1680:()=>{}},_=>{_.O(0,[587,18,358],()=>_(_.s=1680)),_N_E=_.O()}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[358],{309:(e,s,n)=>{Promise.resolve().then(n.t.bind(n,4431,23)),Promise.resolve().then(n.t.bind(n,1012,23)),Promise.resolve().then(n.t.bind(n,540,23)),Promise.resolve().then(n.t.bind(n,5293,23)),Promise.resolve().then(n.t.bind(n,5341,23)),Promise.resolve().then(n.t.bind(n,7158,23)),Promise.resolve().then(n.t.bind(n,25,23)),Promise.resolve().then(n.t.bind(n,5104,23)),Promise.resolve().then(n.bind(n,6505))},3398:()=>{}},e=>{var s=s=>e(e.s=s);e.O(0,[587,18],()=>(s(7449),s(309))),_N_E=e.O()}]);

View file

@ -0,0 +1 @@
(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[636,655],{6449:(e,t,n)=>{(window.__NEXT_P=window.__NEXT_P||[]).push(["/_app",function(){return n(7655)}])},7655:(e,t,n)=>{"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"default",{enumerable:!0,get:function(){return s}});let u=n(4761),l=n(6029),a=u._(n(5729)),o=n(7069);async function r(e){let{Component:t,ctx:n}=e;return{pageProps:await (0,o.loadGetInitialProps)(t,n)}}class s extends a.default.Component{render(){let{Component:e,pageProps:t}=this.props;return(0,l.jsx)(e,{...t})}}s.origGetInitialProps=r,s.getInitialProps=r,("function"==typeof t.default||"object"==typeof t.default&&null!==t.default)&&void 0===t.default.__esModule&&(Object.defineProperty(t.default,"__esModule",{value:!0}),Object.assign(t.default,t),e.exports=t.default)}},e=>{var t=t=>e(e.s=t);e.O(0,[593,792],()=>(t(6449),t(3727))),_N_E=e.O()}]);

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1 @@
(()=>{"use strict";var e={},t={};function r(o){var n=t[o];if(void 0!==n)return n.exports;var a=t[o]={exports:{}},i=!0;try{e[o](a,a.exports,r),i=!1}finally{i&&delete t[o]}return a.exports}r.m=e,(()=>{var e=[];r.O=(t,o,n,a)=>{if(o){a=a||0;for(var i=e.length;i>0&&e[i-1][2]>a;i--)e[i]=e[i-1];e[i]=[o,n,a];return}for(var u=1/0,i=0;i<e.length;i++){for(var[o,n,a]=e[i],l=!0,c=0;c<o.length;c++)(!1&a||u>=a)&&Object.keys(r.O).every(e=>r.O[e](o[c]))?o.splice(c--,1):(l=!1,a<u&&(u=a));if(l){e.splice(i--,1);var d=n();void 0!==d&&(t=d)}}return t}})(),r.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},(()=>{var e,t=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__;r.t=function(o,n){if(1&n&&(o=this(o)),8&n||"object"==typeof o&&o&&(4&n&&o.__esModule||16&n&&"function"==typeof o.then))return o;var a=Object.create(null);r.r(a);var i={};e=e||[null,t({}),t([]),t(t)];for(var u=2&n&&o;"object"==typeof u&&!~e.indexOf(u);u=t(u))Object.getOwnPropertyNames(u).forEach(e=>i[e]=()=>o[e]);return i.default=()=>o,r.d(a,i),a}})(),r.d=(e,t)=>{for(var o in t)r.o(t,o)&&!r.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>"static/chunks/"+e+"."+({655:"3fc65d6d0da75415",826:"28d19d6d7e1f7f11"})[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{var e={},t="_N_E:";r.l=(o,n,a,i)=>{if(e[o])return void e[o].push(n);if(void 0!==a)for(var u,l,c=document.getElementsByTagName("script"),d=0;d<c.length;d++){var f=c[d];if(f.getAttribute("src")==o||f.getAttribute("data-webpack")==t+a){u=f;break}}u||(l=!0,(u=document.createElement("script")).charset="utf-8",u.timeout=120,r.nc&&u.setAttribute("nonce",r.nc),u.setAttribute("data-webpack",t+a),u.src=r.tu(o)),e[o]=[n];var s=(t,r)=>{u.onerror=u.onload=null,clearTimeout(p);var n=e[o];if(delete e[o],u.parentNode&&u.parentNode.removeChild(u),n&&n.forEach(e=>e(r)),t)return t(r)},p=setTimeout(s.bind(null,void 0,{type:"timeout",target:u}),12e4);u.onerror=s.bind(null,u.onerror),u.onload=s.bind(null,u.onload),l&&document.head.appendChild(u)}})(),r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},(()=>{var e;r.tt=()=>(void 0===e&&(e={createScriptURL:e=>e},"undefined"!=typeof trustedTypes&&trustedTypes.createPolicy&&(e=trustedTypes.createPolicy("nextjs#bundler",e))),e)})(),r.tu=e=>r.tt().createScriptURL(e),r.p="/_next/",(()=>{var e={68:0};r.f.j=(t,o)=>{var n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(68!=t){var a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);var i=r.p+r.u(t),u=Error();r.l(i,o=>{if(r.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var a=o&&("load"===o.type?"missing":o.type),i=o&&o.target&&o.target.src;u.message="Loading chunk "+t+" failed.\n("+a+": "+i+")",u.name="ChunkLoadError",u.type=a,u.request=i,n[1](u)}},"chunk-"+t,t)}else e[t]=0},r.O.j=t=>0===e[t];var t=(t,o)=>{var n,a,[i,u,l]=o,c=0;if(i.some(t=>0!==e[t])){for(n in u)r.o(u,n)&&(r.m[n]=u[n]);if(l)var d=l(r)}for(t&&t(o);c<i.length;c++)a=i[c],r.o(e,a)&&e[a]&&e[a][0](),e[a]=0;return r.O(d)},o=self.webpackChunk_N_E=self.webpackChunk_N_E||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})()})();