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.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