PageSourceSearch

https://naemo.ai/_next/static/chunks/app/page-e8d94c0bb89295be.js

js naemo.ai collected 2026-09-24 14:30:01 UTC 132,120 bytes, 1 lines download raw bytes

1(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1931],{28910:function(e,t,n){Promise.resolve().then(n.bind(n,73066)),Promise.resolve().then(n.bind(n,92184))},60850:function(e,t,n){"use strict";n.d(t,{CZ:function(){return i},R2:function(){return r},T9:function(){return s},fk:function(){return l},mK:function(){return o}}),n(83079);var a=n(12119),i=(0,a.$)("489a0c9551b931e08d89f7f5f5c892c7b23fefff"),r=(0,a.$)("2a95e2f3f90e7fed938e495986951730a05744b5"),l=(0,a.$)("b4d076709ab489b493a50d11e39e0979ff1959b6"),s=(0,a.$)("b9f327ac565182d2647700118e1b3771a61f0997"),o=(0,a.$)("0fc61a8119cacee671e8cde298a46648317d4bef")},73066:function(e,t,n){"use strict";n.d(t,{default:function(){return tP}});var a=n(57437),i=n(2265),r=n(30166),l=n(40875),s=n(35224),o=n(10407),d=n(95805),c=n(29090),u=n(37760),x=n(24156),h=n(58346);function m(e){let{size:t=16,className:n="",...i}=e;return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",className:n,...i,children:(0,a.jsxs)("g",{fill:"currentColor",children:[(0,a.jsx)("path",{d:"M15 14a1 1 0 1 1 0 2 1 1 0 0 1 0-2m-.53-5.53a.75.75 0 0 1 1.06 1.06l-6 6a.75.75 0 0 1-1.06-1.06zM9 8a1 1 0 1 1 0 2 1 1 0 0 1 0-2"}),(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M10.762 1.924a1.75 1.75 0 0 1 2.475 0L15.314 4h2.936c.966 0 1.75.783 1.75 1.75v2.936l2.076 2.076a1.75 1.75 0 0 1 0 2.475L20 15.314v2.936A1.75 1.75 0 0 1 18.25 20h-2.937l-2.076 2.076a1.75 1.75 0 0 1-2.475 0L8.686 20H5.75A1.75 1.75 0 0 1 4 18.25v-2.937l-2.076-2.076a1.75 1.75 0 0 1 0-2.475L4 8.686V5.75C4 4.783 4.783 4 5.75 4h2.936zm1.415 1.06a.25.25 0 0 0-.354 0L9.527 5.28a.75.75 0 0 1-.53.22H5.75a.25.25 0 0 0-.25.25v3.247a.75.75 0 0 1-.22.53l-2.296 2.296a.25.25 0 0 0 0 .354l2.296 2.296c.14.14.22.331.22.53v3.247c0 .138.112.25.25.25h3.284a.75.75 0 0 1 .493.22l2.296 2.296a.25.25 0 0 0 .354 0l2.296-2.296a.75.75 0 0 1 .53-.22h3.247a.25.25 0 0 0 .25-.25v-3.247c0-.199.079-.39.22-.53l2.296-2.296a.25.25 0 0 0 0-.354L18.72 9.527a.75.75 0 0 1-.22-.53V5.75a.25.25 0 0 0-.25-.25h-3.247a.75.75 0 0 1-.53-.22z"})]})})}function f(e){let{size:t=16,className:n="",...i}=e;return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",className:n,...i,children:(0,a.jsxs)("g",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",children:[(0,a.jsx)("path",{d:"M12 7.512a4.5 4.5 0 1 1 0 9 4.5 4.5 0 0 1 0-9m0 1.5a3 3 0 1 0 0 6 3 3 0 0 0 0-6"}),(0,a.jsx)("path",{d:"M13.517 1.512a1.75 1.75 0 0 1 1.668 1.223l.726 2.297.166.096 2.352-.52a1.75 1.75 0 0 1 1.894.833l1.517 2.628a1.75 1.75 0 0 1-.225 2.057L20 11.892v.214l1.617 1.767a1.75 1.75 0 0 1 .225 2.056l-1.517 2.628a1.75 1.75 0 0 1-1.894.834l-2.321-.514q-.102.061-.207.12l-.716 2.268a1.75 1.75 0 0 1-1.668 1.223h-3.035a1.75 1.75 0 0 1-1.668-1.223L8.1 18.998l-.208-.12-2.322.514a1.75 1.75 0 0 1-1.893-.834L2.159 15.93a1.75 1.75 0 0 1 .225-2.056L4 12.108v-.216l-1.616-1.766a1.75 1.75 0 0 1-.225-2.056l1.517-2.628a1.75 1.75 0 0 1 1.893-.834l2.352.52.167-.096.726-2.297a1.75 1.75 0 0 1 1.668-1.223zm-3.035 1.5a.25.25 0 0 0-.238.175l-.817 2.588a.75.75 0 0 1-.375.442 7 7 0 0 0-.586.339.75.75 0 0 1-.57.103l-2.65-.586a.25.25 0 0 0-.271.119L3.458 8.82a.25.25 0 0 0 .032.293l1.824 1.992a.75.75 0 0 1 .195.548 7 7 0 0 0 0 .698.75.75 0 0 1-.197.545l-1.822 1.99a.25.25 0 0 0-.032.294l1.517 2.628a.25.25 0 0 0 .27.12l2.622-.58a.75.75 0 0 1 .573.104q.3.197.621.36a.75.75 0 0 1 .376.443l.808 2.558a.25.25 0 0 0 .238.175h3.035a.25.25 0 0 0 .238-.175l.808-2.56.012-.035a.75.75 0 0 1 .364-.407q.32-.163.62-.36l.032-.02a.75.75 0 0 1 .541-.085l2.622.58a.25.25 0 0 0 .27-.119l1.517-2.628a.25.25 0 0 0-.032-.293l-1.823-1.992a.75.75 0 0 1-.196-.545 7 7 0 0 0-.001-.697.75.75 0 0 1 .195-.547l1.824-1.992a.25.25 0 0 0 .032-.294L19.024 6.19a.25.25 0 0 0-.27-.119l-2.651.586a.75.75 0 0 1-.57-.103 7 7 0 0 0-.586-.338.75.75 0 0 1-.375-.442l-.817-2.588a.25.25 0 0 0-.238-.175z"})]})})}function p(e){let{size:t=16,className:n="",...i}=e;return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",className:n,...i,children:(0,a.jsxs)("g",{fill:"currentColor",children:[(0,a.jsx)("path",{d:"M12 15.5a1 1 0 1 1 0 2 1 1 0 0 1 0-2m1.25-9A2.75 2.75 0 0 1 16 9.25v.382a2.75 2.75 0 0 1-1.309 2.343l-1.941 1.194v.581a.75.75 0 0 1-1.5 0v-1a.75.75 0 0 1 .357-.639l2.298-1.414c.37-.227.595-.63.595-1.065V9.25c0-.69-.56-1.25-1.25-1.25h-2.5c-.69 0-1.25.56-1.25 1.25v.25a.75.75 0 0 1-1.5 0v-.25a2.75 2.75 0 0 1 2.75-2.75z"}),(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M12 2c5.523 0 10 4.477 10 10s-4.477 10-10 10S2 17.523 2 12 6.477 2 12 2m0 1.5a8.5 8.5 0 1 0 0 17 8.5 8.5 0 0 0 0-17"})]})})}function v(e){let{size:t=16,className:n="",...i}=e;return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",className:n,...i,children:(0,a.jsxs)("g",{fill:"currentColor",children:[(0,a.jsx)("path",{d:"M13.25 3a.75.75 0 0 1 0 1.5h-7.5c-.686 0-1.25.564-1.25 1.25v12.5c0 .686.564 1.25 1.25 1.25h7.5a.75.75 0 0 1 0 1.5h-7.5A2.756 2.756 0 0 1 3 18.25V5.75A2.756 2.756 0 0 1 5.75 3z"}),(0,a.jsx)("path",{d:"M15.47 7.22a.75.75 0 0 1 1.032-.027l.028.027 4.25 4.25a1 1 0 0 1 .067.076l.005.006a1 1 0 0 1 .055.086l.003.006.017.034.012.024q0 .005.003.008l.009.022.005.015.006.017.006.018.014.055.003.016.003.015.004.023.002.014a.7.7 0 0 1 0 .19l-.002.014-.004.023-.003.015-.003.016-.005.02-.01.034-.005.019-.006.017-.005.015-.01.021-.002.008-.012.025-.017.034-.003.006a1 1 0 0 1-.055.086l-.005.005a1 1 0 0 1-.067.077l-4.25 4.25a.75.75 0 0 1-1.06-1.06l2.97-2.97H8.75a.75.75 0 0 1 0-1.5h9.69l-2.97-2.97-.027-.028a.75.75 0 0 1 .027-1.032"})]})})}function b(e){let{size:t=16,className:n="",...i}=e;return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",className:n,...i,children:(0,a.jsxs)("g",{fill:"currentColor",children:[(0,a.jsx)("path",{d:"M15.25 16.5a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5zm0-3a.75.75 0 0 1 0 1.5h-6.5a.75.75 0 0 1 0-1.5z"}),(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M13.005 2h.032l.004.001.031.003h.013l.083.015.008.002.022.005.005.002.068.023.011.004.017.007.01.005.03.014.014.007.013.007.018.01.009.006a1 1 0 0 1 .083.06l.002.001.024.02.004.004.024.024 6.5 6.5.023.024.004.004q.046.051.082.11l.005.008.01.018.008.013.005.01.016.033.005.011.007.016.004.012q.018.045.03.095l.002.007a1 1 0 0 1 .019.164V20.25c0 .964-.786 1.75-1.75 1.75h-13c-.964 0-1.75-.786-1.75-1.75V3.75C3.75 2.786 4.536 2 5.5 2zM5.5 3.5a.253.253 0 0 0-.25.25v16.5c0 .136.114.25.25.25h13c.136 0 .25-.114.25-.25V10H13a.75.75 0 0 1-.75-.75V3.5zm8.25 5h3.94l-3.94-3.94z"})]})})}function g(e){let{size:t=16,className:n="",...i}=e;return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",className:n,...i,children:(0,a.jsxs)("g",{fill:"currentColor",children:[(0,a.jsx)("path",{d:"M15.22 9.22a.75.75 0 0 1 1.06 1.06l-4.5 4.5a.75.75 0 0 1-1.06 0l-2.5-2.5-.027-.028a.75.75 0 0 1 1.06-1.059l.027.027 1.97 1.97z"}),(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M19.251 3c.967 0 1.75.784 1.75 1.75v8.28a6.75 6.75 0 0 1-3.382 5.85l-5.245 3.02a.75.75 0 0 1-.748 0l-5.244-3.02A6.75 6.75 0 0 1 3 13.032V4.75C3 3.784 3.784 3 4.75 3zM4.75 4.5a.25.25 0 0 0-.25.25v8.281a5.25 5.25 0 0 0 2.63 4.55L12 20.384l4.87-2.803a5.25 5.25 0 0 0 2.631-4.55V4.75a.25.25 0 0 0-.25-.25z"})]})})}function w(e){let{size:t=16,className:n="",...i}=e;return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",className:n,...i,children:(0,a.jsx)("path",{fill:"currentColor",fillRule:"evenodd",clipRule:"evenodd",d:"M17.728 2.212a.75.75 0 0 1 1.044 1.076l-2.131 2.07a5.7 5.7 0 0 1 1.101 3.132 2.25 2.25 0 0 0 2.005-1.799l.018-.088a.75.75 0 0 1 1.47.294l-.017.088A3.75 3.75 0 0 1 17.75 9.99v2.26h3a.75.75 0 0 1 0 1.5h-3v2.509a3.7
15 3.75 0 0 1 3.468 3.006l.017.087a.75.75 0 0 1-1.47.295l-.018-.088a2.25 2.25 0 0 0-2.196-1.809 5.751 5.751 0 0 1-11.103 0 2.25 2.25 0 0 0-2.195 1.809l-.018.088a.75.75 0 0 1-1.47-.294l.017-.088a3.75 3.75 0 0 1 3.468-3.006V13.75H3.5a.75.75 0 0 1 0-1.5h2.75V9.99a3.75 3.75 0 0 1-3.468-3.005l-.017-.088a.75.75 0 0 1 1.47-.294l.018.088a2.25 2.25 0 0 0 2.004 1.8 5.7 5.7 0 0 1 1.101-3.134l-2.13-2.069a.75.75 0 0 1 1.045-1.076l2.12 2.06A5.73 5.73 0 0 1 12 3a5.72 5.72 0 0 1 3.605 1.272zM7.75 10v6.25a4.25 4.25 0 0 0 8.5 0V10zM12 4.5a4.25 4.25 0 0 0-4.242 4h8.484A4.25 4.25 0 0 0 12 4.5"})})}function k(e){let{size:t=16,className:n="",...i}=e;return(0,a.jsx)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 24 24",fill:"none",className:n,...i,children:(0,a.jsxs)("g",{fill:"currentColor",children:[(0,a.jsx)("path",{d:"M8 9.75a1 1 0 1 1 0 2 1 1 0 0 1 0-2m4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2m4 0a1 1 0 1 1 0 2 1 1 0 0 1 0-2"}),(0,a.jsx)("path",{fillRule:"evenodd",clipRule:"evenodd",d:"M13.75 2A8.25 8.25 0 0 1 22 10.25v.5A8.25 8.25 0 0 1 13.75 19H6.535l-3.42 1.905A.75.75 0 0 1 2 20.25v-10A8.25 8.25 0 0 1 10.25 2zm-3.5 1.5a6.75 6.75 0 0 0-6.75 6.75v8.723l2.475-1.378a.75.75 0 0 1 .365-.095h7.41a6.75 6.75 0 0 0 6.75-6.75v-.5a6.75 6.75 0 0 0-6.75-6.75z"})]})})}var j=n(54887),y=n(32489),z=n(27526),N=n(12618),E=n(34137),C=n(83444),S=n(61882);function D(e){let{isOpen:t,onClose:n}=e,[r,l]=(0,i.useState)(!1),[s,o]=(0,i.useState)(!1),[d,c]=(0,i.useState)(!1),[u,x]=(0,i.useState)(!1);if((0,i.useEffect)(()=>(o(!0),()=>o(!1)),[]),(0,i.useEffect)(()=>{if(!t)return;let e=!1;return(0,z.J9)().then(t=>{e||c(!!(null==t?void 0:t.apple))}).catch(()=>{}),()=>{e=!0}},[t]),(0,E.j)(n,t),!t||!s)return null;let h=async e=>{l(!0);try{await (0,z.zB)(e,(0,N.a)())}catch(e){console.error("Login failed:",e),l(!1)}};return(0,j.createPortal)((0,a.jsx)("div",{className:"modal-viewport z-[100] flex items-center justify-center bg-black/60 dark:bg-black/80 backdrop-blur-sm p-4",children:(0,a.jsxs)("div",{className:"relative w-full max-w-[400px] bg-white dark:bg-[#18181b] rounded-2xl shadow-2xl border border-zinc-200 dark:border-zinc-800 p-6 flex flex-col items-center animate-in fade-in zoom-in-95 duration-200",children:[(0,a.jsx)("button",{"aria-label":"닫기",onClick:n,className:"absolute top-2.5 right-2.5 p-2 text-zinc-500 dark:text-zinc-400 hover:text-black dark:hover:text-white transition-colors rounded-lg",children:(0,a.jsx)(y.Z,{size:20})}),(0,a.jsxs)("div",{className:"text-center mb-8 mt-2",children:[(0,a.jsx)("h2",{className:"text-2xl font-bold text-zinc-900 dark:text-white mb-2",children:"로그인 또는 회원 가입"}),(0,a.jsx)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400 leading-relaxed",children:"나만의 맞춤 교무수첩을 이용할 수 있습니다."})]}),(0,a.jsxs)("div",{className:"w-full space-y-2.5 mb-6",children:[(()=>{let e="undefined"!=typeof navigator&&(0,S.nO)(navigator.userAgent),t="w-full h-[46px] rounded-xl bg-white hover:bg-zinc-50 dark:bg-[#27272a] dark:hover:bg-[#3f3f46] border border-zinc-200 dark:border-zinc-700 hover:border-zinc-300 dark:hover:border-zinc-600 flex items-center justify-center gap-3 text-zinc-700 dark:text-white transition disabled:opacity-50 shadow-sm",n=d?(0,a.jsxs)("button",{type:"button","data-testid":"login-modal-apple",onClick:()=>h("apple"),disabled:r,className:t,children:[(0,a.jsx)(C.qw,{}),(0,a.jsx)("span",{className:"font-medium text-sm",style:{color:"inherit"},children:"Apple로 계속하기"})]},"apple"):null,i=(0,a.jsxs)("button",{type:"button","data-testid":"login-modal-google",onClick:()=>h("google"),disabled:r,className:t,children:[(0,a.jsxs)("svg",{viewBox:"0 0 24 24",width:"18",height:"18",xmlns:"http://www.w3.org/2000/svg",children:[(0,a.jsx)("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z",fill:"#4285F4"}),(0,a.jsx)("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),(0,a.jsx)("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),(0,a.jsx)("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]}),(0,a.jsx)("span",{className:"font-medium text-sm",style:{color:"inherit"},children:"Google로 계속하기"})]},"google");return n?e?(0,a.jsxs)(a.Fragment,{children:[n,i]}):(0,a.jsxs)(a.Fragment,{children:[i,n]}):i})(),(0,a.jsx)("button",{type:"button","data-testid":"login-modal-more-methods","aria-expanded":u,onClick:()=>x(e=>!e),disabled:r,className:"w-full h-10 text-sm text-zinc-500 dark:text-zinc-400 underline underline-offset-2 hover:text-zinc-700 dark:hover:text-zinc-200 transition disabled:opacity-50",children:"다른 방법으로 로그인"}),u&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("button",{onClick:()=>h("naver"),disabled:r,className:"w-full h-[46px] rounded-xl bg-white hover:bg-zinc-50 dark:bg-[#27272a] dark:hover:bg-[#3f3f46] border border-zinc-200 dark:border-zinc-700 hover:border-zinc-300 dark:hover:border-zinc-600 flex items-center justify-center gap-3 text-zinc-700 dark:text-white transition disabled:opacity-50 shadow-sm",children:[(0,a.jsx)("svg",{viewBox:"-3 -3 30 30",width:"18",height:"18",fill:"#03C75A",children:(0,a.jsx)("path",{d:"M16.273 12.845L7.376 0H0v24h7.726V11.156L16.624 24H24V0h-7.727v12.845z"})}),(0,a.jsx)("span",{className:"font-medium text-sm",children:"Naver로 계속하기"})]}),(0,a.jsxs)("button",{onClick:()=>
1h("kakao"),disabled:r,className:"w-full h-[46px] rounded-xl bg-white hover:bg-zinc-50 dark:bg-[#27272a] dark:hover:bg-[#3f3f46] border border-zinc-200 dark:border-zinc-700 hover:border-zinc-300 dark:hover:border-zinc-600 flex items-center justify-center gap-3 text-zinc-700 dark:text-white transition disabled:opacity-50 shadow-sm",children:[(0,a.jsx)("svg",{viewBox:"0 0 24 24",width:"18",height:"18",className:"fill-[#381C1D] dark:fill-[#FEE500]",children:(0,a.jsx)("path",{d:"M12 3C5.9 3 1 6.9 1 11.8c0 2.9 2.0 5.6 5.2 7.1-.2.7-.8 2.6-.8 3 .0.1.0.2.1.3.1.1.2.1.4.1.1 0 .2 0 .3-.1 2.7-1.8 3.8-2.6 3.8-2.6.6.1 1.3.2 2.0.2 6.1 0 11.0-3.9 11.0-8.8S18.1 3 12 3z"})}),(0,a.jsx)("span",{className:"font-medium text-sm",children:"Kakao로 계속하기"})]})]})]})]})}),document.body)}var M=n(41671),L=n(51817),I=n(93448);n(83079);var A=n(12119),B=(0,A.$)("622adbf8b38907b3dd31a4ee942db9a86b36b8bf"),T=n(45444);function Z(e){let{isOpen:t,onClose:n,userEmail:r,userName:l,onShowHistory:s}=e,[o,d]=(0,i.useState)(""),[c,u]=(0,i.useState)(!1),[x,h]=(0,i.useState)(!1),[m,f]=(0,i.useState)(null),[p,v]=(0,i.useState)(!1);(0,i.useEffect)(()=>(v(!0),()=>v(!1)),[]),(0,i.useEffect)(()=>{t&&(d(""),f(null),h(!1))},[t]);let b=async()=>{if(!o.trim()){f("내용을 입력해주세요.");return}u(!0),f(null);try{let e=await B({title:"버그 신고",description:o.trim(),contactEmail:r||void 0,userName:l});e.success?(h(!0),setTimeout(()=>{n(),h(!1)},5e3)):f(e.error||"버그 신고 전송에 실패했습니다.")}catch(e){f("오류가 발생했습니다. 다시 시도해주세요.")}finally{u(!1)}};(0,E.j)(n,t&&!c);let g=(0,T.X)(b,t&&!c);return t&&p?(0,j.createPortal)((0,a.jsx)("div",{className:"modal-viewport z-[100] flex items-center justify-center bg-black/40 dark:bg-black/60 backdrop-blur-sm p-4",children:(0,a.jsx)("div",{className:"relative w-full max-w-[560px] bg-white dark:bg-[#1a1a1a] rounded-2xl shadow-2xl border border-zinc-200 dark:border-zinc-800 p-4 flex flex-col animate-in fade-in zoom-in-95 duration-200",children:x?(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center py-10",children:[(0,a.jsx)(M.Z,{size:40,className:"text-green-500 mb-3"}),(0,a.jsx)("h2",{className:"text-base font-bold text-zinc-900 dark:text-white mb-1",children:"신고가 접수되었습니다"}),(0,a.jsx)("p",{className:"text-xs text-zinc-500 dark:text-zinc-400",children:"소중한 피드백 감사합니다."})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,a.jsx)("h2",{className:"text-base font-semibold text-zinc-900 dark:text-white",children:"무슨 일이 일어났나요?"}),(0,a.jsx)("button",{"aria-label":"닫기",onClick:n,disabled:c,className:"p-1 rounded-lg text-zinc-400 hover:text-zinc-600 dark:hover:text-white transition-colors disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500",children:(0,a.jsx)(y.Z,{size:20})})]}),(0,a.jsx)("textarea",{placeholder:"어떤 문제가 일어났는지 알려주세요",value:o,onChange:e=>{let t=e.target.value;t.length<=2e3&&d(t)},onKeyDown:g,disabled:c,className:"w-full h-[280px] bg-transparent border-none rounded-lg px-0 py-2.5 text-sm text-zinc-900 dark:text-white placeholder:text-zinc-400 dark:placeholder:text-zinc-500 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 transition-colors disabled:opacity-50 resize-y"}),(0,a.jsx)("div",{className:"flex justify-end mt-1.5 px-1",children:(0,a.jsxs)("span",{className:"text-xs text-zinc-500 dark:text-zinc-400",children:[o.length,"/",2e3,"자 사용"]})}),m&&(0,a.jsx)("div",{className:"text-xs text-red-400 bg-red-900/20 px-2.5 py-1.5 rounded-lg mt-3",children:m}),(0,a.jsxs)("div",{className:"flex items-center mt-4",children:[s&&(0,a.jsx)("button",{onClick:s,disabled:c,className:"text-xs text-zinc-500 hover:text-zinc-800 dark:text-zinc-400 dark:hover:text-zinc-200 transition-colors disabled:opacity-50 focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 rounded",children:"지난 내역"}),(0,a.jsx)("button",{onClick:b,disabled:c||!o.trim(),className:(0,I.cn)("ml-auto px-4 py-1.5 rounded-full text-sm font-medium transition flex items-center justify-center gap-1.5","bg-zinc-900 text-white hover:bg-zinc-800 dark:bg-zinc-100 dark:text-zinc-900 dark:hover:bg-zinc-200","disabled:opacity-40 disabled:cursor-not-allowed shadow-sm focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-blue-500"),children:c?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(L.Z,{size:14,className:"animate-spin"}),(0,a.jsx)("span",{children:"전송 중..."})]}):(0,a.jsx)("span",{children:"보내기"})})]})]})})}),document.body):null}var F=(0,A.$)("c083016a056c168a43de465139e0f05149e0e7c0");function R(e){let{isOpen:t,onClose:n,userEmail:r,userName:l,onShowHistory:s}=e,[o,d]=(0,i.useState)(""),[c,u]=(0,i.useState)(!1),[x,h]=(0,i.useState)(!1),[m,f]=(0,i.useState)(null),[p,v]=(0,i.useState)(!1);(0,i.useEffect)(()=>(v(!0),()=>v(!1)),[]),(0,i.useEffect)(()=>{t&&(d(""),f(null),h(!1))},[t]);let b=async()=>
1{if(!o.trim()){f("내용을 입력해주세요.");return}u(!0),f(null);try{let e=await F({title:"문의하기",description:o.trim(),contactEmail:r||void 0,userName:l});e.success?(h(!0),setTimeout(()=>{n(),h(!1)},5e3)):f(e.error||"문의 전송에 실패했습니다.")}catch(e){f("오류가 발생했습니다. 다시 시도해주세요.")}finally{u(!1)}};(0,E.j)(n,t&&!c);let g=(0,T.X)(b,t&&!c);return t&&p?(0,j.createPortal)((0,a.jsx)("div",{className:"modal-viewport z-[100] flex items-center justify-center bg-black/40 dark:bg-black/60 backdrop-blur-sm p-4",children:(0,a.jsx)("div",{className:"relative w-full max-w-[560px] bg-white dark:bg-[#1a1a1a] rounded-2xl shadow-2xl border border-zinc-200 dark:border-zinc-800 p-4 flex flex-col animate-in fade-in zoom-in-95 duration-200",children:x?(0,a.jsxs)("div",{className:"flex flex-col items-center justify-center py-10",children:[(0,a.jsx)(M.Z,{size:40,className:"text-green-500 mb-3"}),(0,a.jsx)("h2",{className:"text-base font-bold text-zinc-900 dark:text-white mb-1",children:"문의가 접수되었습니다"}),(0,a.jsx)("p",{className:"text-xs text-zinc-500 dark:text-zinc-400",children:"소중한 의견 감사합니다."})]}):(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,a.jsx)("h2",{className:"text-base font-semibold text-zinc-900 dark:text-white",children:"무엇을 도와드릴까요?"}),(0,a.jsx)("button",{"aria-label":"닫기",onClick:n,disabled:c,className:"text-zinc-400 hover:text-zinc-600 dark:hover:text-white transition-colors disabled:opacity-50",children:(0,a.jsx)(y.Z,{size:20})})]}),(0,a.jsx)("textarea",{placeholder:"궁금한 점이나 요청사항을 알려주세요",value:o,onChange:e=>{let t=e.target.value;t.length<=2e3&&d(t)},onKeyDown:g,disabled:c,className:"w-full h-[280px] bg-transparent border-none rounded-lg px-0 py-2.5 text-sm text-zinc-900 dark:text-white placeholder:text-zinc-400 dark:placeholder:text-zinc-500 focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 transition-colors disabled:opacity-50 resize-y"}),(0,a.jsx)("div",{className:"flex justify-end mt-1.5 px-1",children:(0,a.jsxs)("span",{className:"text-xs text-zinc-500",children:[o.length,"/",2e3,"자 사용"]})}),m&&(0,a.jsx)("div",{className:"text-xs text-red-400 bg-red-900/20 px-2.5 py-1.5 rounded-lg mt-3",children:m}),(0,a.jsxs)("div",{className:"flex items-center mt-4",children:[s&&(0,a.jsx)("button",{onClick:s,disabled:c,className:"text-xs text-zinc-500 hover:text-zinc-800 dark:text-zinc-400 dark:hover:text-zinc-200 transition-colors disabled:opacity-50",children:"지난 내역"}),(0,a.jsx)("button",{onClick:b,disabled:c||!o.trim(),style:{backgroundColor:"#EEEEE8"},className:(0,I.cn)("ml-auto px-4 py-1.5 rounded-full text-sm font-medium transition flex items-center justify-center gap-1.5","text-black dark:bg-white dark:text-black","disabled:opacity-50 disabled:cursor-not-allowed shadow-sm"),children:c?(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(L.Z,{size:14,className:"animate-spin"}),(0,a.jsx)("span",{children:"전송 중..."})]}):(0,a.jsx)("span",{children:"보내기"})})]})]})})}),document.body):null}var P=n(47260),O=n(75368),W=(0,A.$)("84dd762832a5e8c8878481ab26c397391e7f893f"),U=(0,A.$)("8fec50ddbecd847080513117009b7695287fea1e"),V=(0,A.$)("4044d2d05b3b5e0f2349339829914e62ebb19d3d"),G=n(64954);function H(e){try{return new Date(e).toLocaleString("ko-KR",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch(e){return""}}function _(e){let{isOpen:t,onClose:n}=e,[r,s]=(0,i.useState)(!1),[o,d]=(0,i.useState)(!0),[c,u]=(0,i.useState)([]),[x,h]=(0,i.useState)(null);if((0,i.useEffect)(()=>(s(!0),()=>s(!1)),[]),(0,i.useEffect)(()=>{if(!t)return;let e=!0;return d(!0),h(null),W().then(t=>{e&&u(t)}).catch(()=>{e&&u([])}).finally(()=>{e&&d(!1)}),()=>{e=!1}},[t]),(0,E.j)(n,t),!t||!r)return null;let m=e=>{let t=x!==e.id;h(t?e.id:null),t&&e.repliedAt&&!e.readAt&&(V(e.id),u(t=>t.map(t=>t.id===e.id?{...t,readAt:new Date().toISOString()}:t)))};return(0,j.createPortal)((0,a.jsx)("div",{className:"modal-viewport z-[100] flex items-center justify-center bg-black/40 dark:bg-black/60 backdrop-blur-sm p-4",children:(0,a.jsxs)("div",{className:"relative w-full max-w-[560px] bg-white dark:bg-[#1a1a1a] rounded-2xl shadow-2xl border border-zinc-200 dark:border-zinc-800 p-4 flex flex-col animate-in fade-in zoom-in-95 duration-200",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,a.jsx)("h2",{className:"text-base font-semibold text-zinc-900 dark:text-white",children:"지난 내역"}),(0,a.jsx)("button",{"aria-label":"닫기",onClick:n,className:"text-zinc-400 hover:text-zinc-600 dark:hover:text-white transition-colors",children:(0,a.jsx)(y.Z,{size:20})})]}),(0,a.jsx)("div",{className:"h-[340px] overflow-y-auto -mx-1 px-1",children:o?(0,a.jsx)("div",{className:"h-full flex items-center justify-center",children:(0,a.jsx)(L.Z,{size:20,className:"animate-spin text-zinc-400"})}):0===c.length?(0,a.jsx)("div",{className:"h-full flex items-center justify-center",children:(0,a.jsx)(G.Z,{size:"sm",title:"아직 보낸 문의가 없습니다",description:"문의 또는 버그를 접수하시면 답변 내역을 확인할 수 있습니다."})}):(0,a.jsx)("div",{className:"space-y-2",children:c.map(e=>{let t="bug"===e.type,n="answered"===e.status&&!!e.repliedAt,i=x===e.id;return(0,a.jsxs)("div",{className:"rounded-lg border border-zinc-200 dark:border-zinc-800 overflow-hidden",children:[(0,a.jsxs)("button",{onClick:()=>m(e),className:"w-full flex items-center gap-2.5 p-3 text-left hover:bg-zinc-50 dark:hover:bg-zinc-900/40 transition-colors",children:[t?(0,a.jsx)(P.Z,{size:15,className:"shrink-0 text-red-500"}):(0,a.jsx)(O.Z,{size:15,className:"shrink-0 text-blue-500"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 mb-0.5",children:[(0,a.jsx)("span",{className:"text-[11px] font-medium text-zinc-500 dark:text-zinc-400",children:t?"버그 신고":"문의"}),(0,a.jsx)("span",{className:"text-[10px] px-1.5 py-0.5 rounded-full ".concat(n?"bg-emerald-50 text-emerald-600 dark:bg-emerald-500/10 dark:text-emerald-400":"bg-amber-50 text-amber-600 dar
1k:bg-amber-500/10 dark:text-amber-400"),children:n?"답변 완료":"답변 대기"})]}),(0,a.jsx)("p",{className:"text-sm text-zinc-800 dark:text-zinc-100 truncate",children:e.description}),(0,a.jsx)("p",{className:"text-[11px] text-zinc-400 mt-0.5",children:H(e.createdAt)})]}),(0,a.jsx)(l.Z,{size:16,className:"shrink-0 text-zinc-400 transition-transform ".concat(i?"rotate-180":"")})]}),i&&(0,a.jsxs)("div",{className:"border-t border-zinc-200 dark:border-zinc-800 p-3 space-y-3",children:[(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-[11px] font-medium text-zinc-500 dark:text-zinc-400",children:"보낸 내용"}),(0,a.jsx)("p",{className:"mt-1 text-xs text-zinc-600 dark:text-zinc-300 whitespace-pre-wrap leading-relaxed",children:e.description})]}),(0,a.jsxs)("div",{children:[(0,a.jsx)("span",{className:"text-[11px] font-medium text-zinc-500 dark:text-zinc-400",children:"답변"}),n?(0,a.jsxs)("div",{className:"mt-1 rounded-lg bg-zinc-50 dark:bg-zinc-800/50 border border-zinc-200 dark:border-zinc-700/50 p-3",children:[(0,a.jsx)("p",{className:"text-sm text-zinc-800 dark:text-zinc-100 whitespace-pre-wrap leading-relaxed",children:e.replyBody}),e.repliedAt&&(0,a.jsx)("p",{className:"text-[11px] text-zinc-400 mt-2",children:H(e.repliedAt)})]}):(0,a.jsx)("p",{className:"mt-1 text-xs text-zinc-400",children:"아직 답변을 준비하고 있어요."})]})]})]},e.id)})})})]})}),document.body)}var K=n(70809),X=n(4908),q=n(48013),J=n(43232),$=n(92846),Y=n(39561),Q=n(86315),ee=n(45007),et=n(33145),en=n(60850);let ea=new Set(["student-management","work-notes","survey","seating","cleaning","random-picker","attendance-print","nametag"]);function ei(e){var t,n,r,j,y,N,E,C,S,M,L,A,B,T,F;let{currentView:P,onMenuClick:O,onMenuHover:W,session:U}=e,[V,G]=(0,i.useState)(!1),[H,ei]=(0,i.useState)(!1),[er,el]=(0,i.useState)(!1),[es,eo]=(0,i.useState)(!1),[ed,ec]=(0,i.useState)(!1),[eu,ex]=(0,i.useState)(!1),[eh,em]=(0,i.useState)(!1),[ef,ep]=(0,i.useState)(!1),[ev,eb]=(0,i.useState)([]),[eg,ew]=(0,i.useState)(null),ek=(0,Y.g)(),[ej,ey]=(0,i.useState)(0),ez=(0,i.useRef)(P);(0,i.useEffect)(()=>{"dashboard"===P&&"dashboard"!==ez.current&&ey(e=>e+1),ez.current=P},[P]);let{openSettings:eN}=(0,K.Y)(),{students:eE,isLoading:eC}=(0,X.AF)(),eS=!eC&&0===eE.length;(0,i.useEffect)(()=>{let e=async()=>{if(null==U?void 0:U.user)try{var e;let t=await (0,en.T9)();t.success&&(null===(e=t.data)||void 0===e?void 0:e.schoolName)?ew(t.data.schoolName):ew(null)}catch(e){console.error("[Sidebar] Failed to load school info:",e)}else ew(null)};e();let t=()=>e();return window.addEventListener("school-settings-updated",t),()=>window.removeEventListener("school-settings-updated",t)},[null==U?void 0:U.user]),(0,i.useEffect)(()=>{ei(!0);let e=()=>{let e=window.innerWidth;if(e<768){G(!0);return}let t=e<1280,n=localStorage.getItem("sidebarCollapsed");if(null===n){G(t);return}try{G(JSON.parse(n))}catch(e){G(t)}};return e(),window.addEventListener("resize",e),()=>window.removeEventListener("resize",e)},[]);let eD=()=>{let e=!V;G(e),localStorage.setItem("sidebarCollapsed",JSON.stringify(e))},eM=(0,i.useRef)(null),eL=e=>{eb(t=>t.includes(e)?t.filter(t=>t!==e):[...t,e])},{config:eI}=(0,Q.Nv)(),eA=[...eI.topLevelOrder.map(e=>({id:e,icon:(0,Q.m3)(e),label:(0,Q.Kg)(e)})),...eI.recordToolsOrder.length>0?[{id:"record-tools",icon:l.Z,label:Q.U8,children:eI.recordToolsOrder.map(e=>({id:e,icon:(0,Q.m3)(e),label:(0,Q.Kg)(e)}))}]:[],...eI.classToolsOrder.length>0?[{id:"class-tools",icon:l.Z,label:Q.zN,children:eI.classToolsOrder.map(e=>({id:e,icon:(0,Q.m3)(e),label:(0,Q.Kg)(e)}))}]:[]],eB=(0,i.useRef)(null);(0,i.useEffect)(()=>{let e=eA.filter(e=>e.children&&e.children.length>0);if(0===e.length||eB.current===P)return;eB.current=P;let t=e.find(e=>e.children.some(e=>e.id===P));t&&eb(e=>e.includes(t.id)?e:[...e,t.id])},[P,eA]),(0,i.useEffect)(()=>{let e=e=>{eM.current&&!eM.current.contains(e.target)&&el(!1)};return er?document.addEventListener("mouseup",e):document.removeEventListener("mouseup",e),()=>{document.removeEventListener("mouseup",e)}},[er]);let eT=function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];if(V){G(!1),t?($.MU.selection(),eb(t=>t.includes(e)?t:[...t,e])):O(e);return}t?($.MU.selection(),eL(e)):O(e)};return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("aside",{className:(0,I.cn)("flex h-full flex-col border-r duration-300 ease-in-out shrink-0 print:hidden","bg-[#09090b] border-[#27272a]",!ea.has(P)&&"nav-rail-shadow",V?"w-[70px]":"w-64"),children:[(0,a.jsxs)("div",{className:(0,I.cn)("h-16 flex items-center transition-all duration-300 px-4 relative shrink-0",V&&"group/logo cursor-pointer justify-center"),onClick:V?eD:void 0,role:V?"button":void 0,tabIndex:V?0:void 0,"aria-label":V?"메뉴 펼치기":void 0,onKeyDown:V?e=>
1{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),eD())}:void 0,children:[(0,a.jsxs)("div",{className:"flex items-center overflow-hidden",children:[(0,a.jsxs)("div",{className:"relative shrink-0",children:[(0,a.jsx)(J.O,{className:(0,I.cn)("transition duration-200 text-[#37352F] dark:text-white",ej>0&&"brand-logo-swing",V&&"group-hover/logo:opacity-0 group-hover/logo:scale-50")},ej),(0,a.jsx)(q.jp,{size:20,className:(0,I.cn)("absolute top-1/2 left-1/2 -translate-x-1/2 -translate-y-1/2 text-[#71717a] group-hover/logo:text-white transition-all duration-200 opacity-0 scale-50",V&&"group-hover/logo:opacity-100 group-hover/logo:scale-100")})]}),(0,a.jsx)("span",{className:(0,I.cn)("text-[17px] font-semibold whitespace-nowrap overflow-hidden transition-all duration-300 text-[#37352F] dark:text-white sidebar-brand-text",V?"max-w-0 opacity-0 ml-0":"max-w-[120px] opacity-100 ml-2"),children:"NAEMO"})]}),(0,a.jsx)("button",{onClick:e=>{e.stopPropagation(),eD()},onMouseDown:e=>e.preventDefault(),"aria-label":"메뉴 접기",className:(0,I.cn)("absolute right-4 text-[#71717a] hover:text-white transition-all duration-300 p-1",V?"opacity-0 pointer-events-none scale-90":"opacity-100 scale-100"),title:"메뉴 접기",children:(0,a.jsx)(s.Z,{size:18})})]}),(0,a.jsx)("nav",{className:"flex-1 px-3 pt-3 pb-3 space-y-0.5 overflow-y-auto custom-scrollbar overflow-x-hidden min-h-0",children:eA.map(e=>{var t;let n=e.icon,i=!!e.children,r=ev.includes(e.id),s=r?l.Z:o.Z,d=i&&(null===(t=e.children)||void 0===t?void 0:t.some(e=>e.id===P)),c=P===e.id||d,u="!text-zinc-500 dark:!text-zinc-400",x="transition-colors group-hover:!text-zinc-900 dark:group-hover:!text-zinc-200",h=i?void 0:(0,Q.sV)(e.id),m=(0,I.cn)("transition-colors shrink-0",i?(0,I.cn)(u,x):c||d?"text-white":"text-[#71717a] dark:text-white group-hover:text-white");return(0,a.jsxs)("div",{className:(0,I.cn)("record-tools"===e.id&&"mt-2"),children:[(0,a.jsxs)("button",{onClick:()=>eT(e.id,i),onMouseEnter:()=>!i&&(null==W?void 0:W(e.id)),onMouseDown:e=>e.preventDefault(),title:V?e.label:void 0,className:(0,I.cn)("w-full flex items-center transition-[background-color] duration-200 group relative py-2.5 px-3 rounded-md min-h-[44px]",i&&"sidebar-group-header",i?"text-zinc-500 dark:text-zinc-400":c&&!i?"bg-[#202023] text-white":"text-[#d4d4d8] hover:bg-[#202023] hover:text-white",d&&"text-white"),children:[i&&!V?null:h?(0,a.jsx)(ee.w,{src:h,size:20,className:m}):i?(0,a.jsx)(s,{size:14,strokeWidth:1.5,className:m}):(0,a.jsx)(n,{size:20,strokeWidth:1.5,className:m}),(0,a.jsx)("span",{className:(0,I.cn)("text-sm font-normal whitespace-nowrap overflow-hidden text-ellipsis transition-all duration-300 flex-1 text-left",i&&u,i&&x,i&&"!text-[12px]",i&&"!flex-none",V?"max-w-0 opacity-0 ml-0 pointer-events-none":i?"max-w-[200px] opacity-100 ml-0":"max-w-[200px] opacity-100 ml-3"),children:e.label}),i&&!V&&(0,a.jsx)(s,{size:14,strokeWidth:1.5,className:(0,I.cn)("ml-1 shrink-0",u,x),"aria-hidden":"true"}),V&&(0,a.jsx)("div",{className:"absolute left-full ml-2 px-2.5 py-1 bg-[#18181b] border border-white/10 text-[11px] font-medium text-white rounded-lg shadow-xl opacity-0 group-hover:opacity-100 pointer-events-none whitespace-nowrap z-50 transition-opacity duration-150",children:e.label})]}),i&&(0,a.jsx)("div",{"aria-hidden":!r,className:(0,I.cn)("grid transition-all duration-200 ease-out",r?"grid-rows-[1fr] opacity-100 mt-0.5":"grid-rows-[0fr] opacity-0 invisible mt-0"),children:(0,a.jsx)("div",{className:"overflow-hidden",children:(0,a.jsx)("div",{className:"space-y-0.5",children:e.children.map(e=>{let t=e.icon,n=P===e.id,i=(0,Q.sV)(e.id),r=(0,I.cn)("transition-colors shrink-0",n?"text-white":"text-[#a1a1aa] group-hover:text-white");return(0,a.jsxs)("button",{onClick:()=>{O(e.id)},onMouseEnter:()=>null==W?void 0:W(e.id),onMouseDown:e=>e.preventDefault(),className:(0,I.cn)("w-full flex items-center transition-colors duration-200 py-2.5 px-3 rounded-md min-h-[44px] group relative",n?"bg-[#202023] text-white":"text-[#d4d4d8] hover:bg-[#202023] hover:text-white"),children:[i?(0,a.jsx)(ee.w,{src:i,size:20,className:r}):(0,a.jsx)(t,{size:20,strokeWidth:1.5,className:r}),(0,a.jsx)("span",{className:(0,I.cn)("text-sm font-normal whitespace-nowrap overflow-hidden text-ellipsis text-left flex-1 transition-all duration-300",V?"max-w-0 opacity-0 ml-0 pointer-events-none":"max-w-[200px] opacity-100 ml-3"),children:e.label}),V&&(0,a.jsx)("div",{className:"absolute left-full ml-2 px-2.5 py-1 bg-[#18181b] border border-white/10 text-[11px] font-medium text-white rounded-lg shadow-xl opacity-0 group-hover:opacity-100 pointer-events-none whitespace-nowrap z-50 transition-opacity duration-150",children:e.label})]},e.id)})})})})]},e.id)})}),(0,a.jsxs)("div",{className:(0,I.cn)("shrink-0 mt-auto px-2 mb-1.5",V?"flex flex-col items-center gap-1.5":"flex items-center gap-1.5"),children:[(0,a.jsxs)("button",{type:"button",onClick:()=>eN("student-list"),title:eS?"학생 명단 (학생이 없습니다)":"학생 명단","aria-label":"학생 명단",className:(0,I.cn)("group relative flex items-center justify-center rounded-full transition-colors","bg-zinc-100 dark:bg-[#202023] hover:bg-zinc-200 dark:hover:bg-[#3f3f46]","text-zinc-600 dark:text-[#a1a1aa] hover:text-zinc-900 dark:hover:text-white",V?"p-2":"flex-1 gap-1.5 px-3 py-1.5"),children:[(0,a.jsx)(d.Z,{size:14,strokeWidth:1.5,className:"shrink-0"}),!V&&(0,a.jsxs)("span",{className:"text-xs font-medium inline-flex items-center gap-1.5",children:["학생 명단",eS&&(0,a.jsx)("span",{className:"w-1.5 h-1.5 rounded-full bg-red-500 shrink-0","aria-hidden":"true"})]}),V&&eS&&(0,a.jsx)("span",{className:"absolute top-0.5 right-0.5 w-1.5 h-1.5 rounded-full bg-red-500 ring-2 ring-zinc-50 dark:ring-[#09090b]","aria-hidden":"true"})]}),(0,a.jsxs)("button",{type:"button",onClick:()=>eN("grade-file"),title:"성적 파일","aria-label":"성적 파일",className:(0,I.cn)("group flex items-center justify-center rounded-full transition-colors","bg-zinc-100 dark:bg-[#202023] hover:bg-zinc-200 dark:hover:bg-[#3f3f46]","text-zinc-600 dark:text-[#a1a1aa] hover:text-zinc-900 dark:hover:text-white",V?"p-2":"flex-1 gap-1.5 px-3 py-1.5"),children:[(0,a.jsx)(h.d,{name:"student-cap",size:14,className:"shrink-0 opacity-80"}),!V&&(0,a.jsx)("span",{className:"text-xs font-medium",children:"성적 파일"})]})]}),(0,a.jsxs)("div",{className:"relative shrink-0 z-20",ref:eM,children:[er&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:(0,I.cn)("absolute bottom-full left-3 mb-0 w-56 bg-[#fafaf9] dark:bg-[#18181b] border border-zinc-200 dark:border-[#27272a] rounded-xl shadow-xl overflow-hidden z-50 flex flex-col scale-100 opacity-100 transition origin-bottom-left",V&&"left-14"),children:[(0,a.jsx)("div",{className:"px-4 pt-3 pb-2",children:(0,a.jsx)("p",{className:"text-xs text-[#71717a] truncate",children:(null==U?void 0:null===(t=U.user)||void 0===t?void 0:t.email)||"이메일 미등록"})}),(0,a.jsxs)("div",{className:"p-1",children:[(null==U?void 0:null===(n=U.user)||void 0===n?void 0:n.isSystemAdmin)&&(0,a.jsxs)("a",{href:"/admin",target:"_blank",rel:"noopener noreferrer",className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-amber-400 hover:bg-amber-400/10 rounded-lg transition-colors text-left profile-menu-item",onClick:()=>el(!1),children:[(0,a.jsx)(h.d,{name:"building",size:16,className:"opacity-80"}),(0,a.jsx)("span",{children:"관리자 대시보드"})]}),!ek&&(0,a.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-zinc-700 dark:text-[#E0E0E0] hover:bg-zinc-200/60 dark:hover:bg-white/5 rounded-lg transition-colors text-left profile-menu-item",onClick:()=>{window.dispatchEvent(new CustomEvent("navigate-view",{detail:"plans"})),el(!1)},children:[(0,a.jsx)(m,{size:16}),(0,a.jsx)("span",{children:"플랜 안내"})]}),(0,a.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-zinc-700 dark:text-[#E0E0E0] hover:bg-zinc-200/60 dark:hover:bg-white/5 rounded-lg transition-colors text-left profile-menu-item",onClick:()=>{eN(),el(!1)},children:[(0,a.jsx)(f,{size:16}),(0,a.jsx)("span",{children:"설정"})]}),(0,a.jsxs)("button",{style:{border:"none",outline:"none",boxShadow:"none"},className:(0,I.cn)("w-full flex items-center justify-between px-3 py-2 text-sm rounded-lg transition-colors text-left profile-help-button",ef?"text-zinc-900 dark:text-white":"text-zinc-700 dark:text-[#E0E0E0] hover:bg-zinc-200/60 dark:hover:bg-white/5"),onClick:e=>{e.preventDefault(),e.stopPropagation(),ep(!ef)},children:[(0,a.jsxs)("div",{className:"flex items-center gap-2",children:[(0,a.jsx)(p,{size:16}),(0,a.jsx)("span",{children:"도움말"})]}),(0,a.jsx)(o.Z,{size:14,className:"text-zinc-400 dark:text-[#a1a1aa]"})]}),(null==U?void 0:U.user)?(0,a.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-red-500 dark:text-red-400 hover:bg-red-500/10 rounded-lg transition-colors text-left profile-menu-item-logout",onClick:()=>(0,z.w7)(),children:[(0,a.jsx)(v,{size:16}),(0,a.jsx)("span",{children:"로그아웃"})]}):(0,a.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-blue-500 dark:text-blue-400 hover:bg-blue-500/10 rounded-lg transition-colors text-left profile-menu-item-login",onClick:()=>{eo(!0),el(!1)},children:[(0,a.jsx)(c.Z,{size:16}),(0,a.jsx)("span",{children:"로그인"})]})]})]}),ef&&(0,a.jsxs)("div",{className:(0,I.cn)("absolute bottom-[calc(100%+3.2rem)] left-[14.5rem] w-48 bg-[#fafaf9] dark:bg-[#18181b] border border-zinc-200 dark:border-[#27272a] rounded-xl shadow-xl overflow-hidden z-[60] flex flex-col p-1 animate-in fade-in slide-in-from-left-2 duration-200",V&&"left-[17.5rem]"),onClick:e=>e.stopPropagation(),children:[(0,a.jsxs)("a",{href:"/legal",target:"_blank",rel:"noopener noreferrer",className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-zinc-700 dark:text-[#E0E0E0] hover:bg-zinc-200/60 dark:hover:bg-white/5 rounded-lg transition-colors text-left",onClick:()=>{el(!1),ep(!1)},children:[(0,a.jsx)(b,{size:16}),(0,a.jsx)("span",{children:"이용약관 및 정책"})]}),(0,a.jsxs)("a",{href:"https://edzip.kr/product-detail/69c4bed034e49888c77d25d7",target:"_blank",rel:"noopener noreferrer",className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-zinc-700 dark:text-[#E0E0E0] hover:bg-zinc-200/60 dark:hover:bg-white/5 rounded-lg transition-colors text-left",onClick:()=>{el(!1),ep(!1)},children:[(0,a.jsx)(g,{size:16}),(0,a.jsx)("span",{children:"에듀집 등록 확인"})]}),(0,a.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-zinc-700 dark:text-[#E0E0E0] hover:bg-zinc-200/60 dark:hover:bg-white/5 rounded-lg transition-colors text-left",onClick:()=>{ec(!0),el(!1),ep(!1)},children:[(0,a.jsx)(w,{size:16}),(0,a.jsx)("span",{children:"버그 신고"})]}),(0,a.jsxs)("button",{className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-zinc-700 dark:text-[#E0E0E0] hover:bg-zinc-200/60 dark:hover:bg-white/5 rounded-lg transition-colors text-left",onClick:()=>{ex(!0),el(!1),ep(!1)},children:[(0,a.jsx)(k,{size:16}),(0,a.jsx)("span",{children:"문의하기"})]}),(0,a.jsxs)("a",{href:"https://www.instagram.com/naemo.ai/",target:"_blank",rel:"noopener noreferrer",className:"w-full flex items-center gap-2 px-3 py-2 text-sm text-zinc-700 dark:text-[#E0E0E0] hover:bg-zinc-200/60 dark:hover:bg-white/5 rounded-lg transition-colors text-left",onClick:()=>{el(!1),ep(!1)},children:[(0,a.jsx)(u.Z,{size:16}),(0,a.jsx)("span",{children:"소식 안내"})]})]})]}),(0,a.jsxs)("div",{onClick:()=>{(null==U?void 0:U.user)?el(!er):eo(!0)},onKeyDown:e=>
1{("Enter"===e.key||" "===e.key)&&(e.preventDefault(),(null==U?void 0:U.user)?el(!er):eo(!0))},role:"button",tabIndex:0,"aria-label":(null==U?void 0:U.user)?"프로필 메뉴":"로그인","aria-haspopup":(null==U?void 0:U.user)?"menu":void 0,"aria-expanded":(null==U?void 0:U.user)?er:void 0,className:(0,I.cn)("group/profile relative transition-all cursor-pointer hover:bg-[#3f3f46] sidebar-profile-hover mb-1 mx-1 rounded-md",V?"p-3 flex justify-center":"p-3"),children:[(0,a.jsxs)("div",{className:(0,I.cn)("flex items-center",V?"justify-center":"gap-3 px-1"),children:[(null==U?void 0:null===(r=U.user)||void 0===r?void 0:r.image)?(0,a.jsx)(et.default,{src:U.user.image,alt:"Profile",width:32,height:32,className:"rounded-full"}):(0,a.jsx)("div",{className:"w-8 h-8 rounded-full bg-[#27272a] border border-[#e0e0e0] dark:border-[#3f3f46] flex items-center justify-center text-xs font-medium text-white shrink-0",children:(null==U?void 0:null===(y=U.user)||void 0===y?void 0:null===(j=y.name)||void 0===j?void 0:j[0])||"G"}),!V&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsxs)("div",{className:"flex-1 min-w-0",children:[(0,a.jsx)("p",{className:"text-sm font-medium text-white truncate",children:(null==U?void 0:null===(N=U.user)||void 0===N?void 0:N.name)||"Guest"}),(0,a.jsx)("p",{className:"text-xs text-[#71717a] truncate",children:(null==U?void 0:null===(E=U.user)||void 0===E?void 0:E.schoolName)||eg||"학교 미설정"})]}),(0,a.jsx)(x.Z,{size:16,className:"ml-auto text-[#71717a] -mr-1"})]})]}),V&&(0,a.jsxs)("div",{className:"absolute left-full ml-2 px-3 py-1.5 bg-[#18181b] border border-white/10 rounded-lg shadow-xl opacity-0 group-hover/profile:opacity-100 pointer-events-none whitespace-nowrap z-50 transition-opacity duration-150 flex flex-col gap-0.5",children:[(0,a.jsx)("span",{className:"text-[12px] font-medium text-white leading-tight",children:(null==U?void 0:null===(C=U.user)||void 0===C?void 0:C.name)||"Guest"}),(0,a.jsx)("span",{className:"text-[10px] text-[#a1a1aa] leading-tight",children:(null==U?void 0:null===(S=U.user)||void 0===S?void 0:S.schoolName)||eg||"학교 미설정"})]})]})]})]}),(0,a.jsx)(D,{isOpen:es,onClose:()=>eo(!1)}),(0,a.jsx)(Z,{isOpen:ed,onClose:()=>ec(!1),userEmail:(null==U?void 0:null===(M=U.user)||void 0===M?void 0:M.email)||void 0,userName:(null==U?void 0:null===(L=U.user)||void 0===L?void 0:L.name)||void 0,onShowHistory:(null==U?void 0:null===(A=U.user)||void 0===A?void 0:A.id)?()=>{ec(!1),em(!0)}:void 0}),(0,a.jsx)(R,{isOpen:eu,onClose:()=>ex(!1),userEmail:(null==U?void 0:null===(B=U.user)||void 0===B?void 0:B.email)||void 0,userName:(null==U?void 0:null===(T=U.user)||void 0===T?void 0:T.name)||void 0,onShowHistory:(null==U?void 0:null===(F=U.user)||void 0===F?void 0:F.id)?()=>{ex(!1),em(!0)}:void 0}),(0,a.jsx)(_,{isOpen:eh,onClose:()=>em(!1)})]})}var er=n(98728),el=n(85929),es=n(97226),eo=n(73247),ed=n(65621),ec=n(54080),eu=n(98381);function ex(e){return e.metaKey||e.ctrlKey}function eh(e,t){return e.map(e=>{switch(e){case"mod":return t?"⌘":"Ctrl";case"shift":return t?"⇧":"Shift";case"alt":return t?"⌥":"Alt";case"enter":return t?"↵":"Enter";case"esc":return"Esc";case"up":return"↑";case"down":return"↓";default:return 1===e.length?e.toUpperCase():e}})}let em=["ㄱ","ㄲ","ㄴ","ㄷ","ㄸ","ㄹ","ㅁ","ㅂ","ㅃ","ㅅ","ㅆ","ㅇ","ㅈ","ㅉ","ㅊ","ㅋ","ㅌ","ㅍ","ㅎ"],ef={ㄲ:"ㄱ",ㄸ:"ㄷ",ㅃ:"ㅂ",ㅆ:"ㅅ",ㅉ:"ㅈ"};function ep(e){let t="";for(let r of e){var n,a,i;let e=null!==(n=r.codePointAt(0))&&void 0!==n?n:0;if(e>=44032&&e<=55203){let n=em[Math.floor((e-44032)/588)];t+=null!==(a=ef[n])&&void 0!==a?a:n}else t+=null!==(i=ef[r])&&void 0!==i?i:r}return t}function ev(e,t){if(!e)return!0;let n=0;for(let a=0;a<t.length&&n<e.length;a++)t[a]===e[n]&&n++;return n===e.length}let eb={dashboard:["dashboard","home","홈","메인","요약"],survey:["survey","설문","조사","앙케트"],"work-notes":["worknote","notes","memo","메모","노트","업무일지"],"work-schedule":["schedule","todo","calendar","일정","할일","캘린더","달력","스케줄"],"student-management":["student","students","학생","명단","로스터","roster"],"evaluation-record":["evaluation","세특","수행","평가","생기부","교과세특"],"behavior-record":["behavior","행발","행동특성","행동","종합의견"],attendance:["attendance","출석","출결","결석","지각"],activity:["activity","자율","진로","창체","동아리","활동"],seating:["seating","seat","자리","자리배치","좌석","배치"],nametag:["nametag","이름표","명찰","네임택"],cleaning:["cleaning","청소","청소구역","당번","분담"],"random-picker":["random","picker","뽑기","랜덤","추첨","제비뽑기"],"attendance-print":["print","출력","인쇄","출결출력"]},eg=e=>e.toLowerCase().replace(/\s+/g,""),ew="naemo:command-recents";function ek(){try{let e=localStorage.getItem(ew),t=e?JSON.parse(e):[];return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch(e){return[]}}function ej(e){let{onNavigate:t}=e,[n,r]=(0,i.useState)(!1),[l,s]=(0,i.useState)(""),[o,d]=(0,i.useState)(0),[c,u]=(0,i.useState)(!0),[x,h]=(0,i.useState)([]),m=(0,i.useRef)(null),f=(0,i.useRef)(null),{theme:p,toggleTheme:v}=(0,eu.F)(),{openSettings:b}=(0,K.Y)(),{config:g}=(0,Q.Nv)(),w=(0,i.useCallback)(()=>{r(!1),s(""),d(0)},[]),k=(0,i.useCallback)(()=>{h(ek()),s(""),d(0),r(!0)},[]),j=(0,i.useRef)(n),z=(0,i.useRef)(b);(0,i.useEffect)(()=>{j.current=n,z.current=b}),(0,i.useEffect)(()=>{u(function(){if("undefined"==typeof navigator)return!1;let e=navigator.userAgentData;if(null==e?void 0:e.platform)return/mac/i.test(e.platform);let t=navigator.platform||"",n=navigator.userAgent||"";return/Mac|iPhone|iPad|iPod/i.test(t)||/Mac OS X/i.test(n)}())},[]);let N=(0,i.useMemo)(()=>{let e=[...g.topLevelOrder,...g.recordToolsOrder,...g.classToolsOrder],t=new Set(e);return[...e,...Q.cf.map(e=>e.id).filter(e=>!t.has(e))].filter(e=>Q.cf.some(t=>t.id===e))},[g]),E=(0,i.useMemo)(()=>[...N.map(e=>{var n;return{id:"nav:".concat(e),label:(0,Q.Kg)(e),group:"nav",icon:(0,Q.m3)(e),keywords:null!==(n=eb[e])&&void 0!==n?n:[],run:()=>t(e)}}),{id:"action:settings",label:"설정 열기",group:"action",icon:er.Z,keywords:["settings","설정","환경설정","preferences","config"],shortcut:["mod",","],run:()=>b()},{id:"action:theme",label:"dark"===p?"라이트 모드로 전환":"다크 모드로 전환",group:"action",icon:"dark"===p?el.Z:es.Z,keywords:["theme","dark","light","테마","다크","라이트","야간","모드","화면"],run:()=>v()}],[N,t,b,v,p]),C=(0,i.useMemo)(()=>{let e=new Map;
1for(let t of E)e.set(t.id,t);return e},[E]),S=(0,i.useMemo)(()=>l.trim()?E.filter(e=>(function(e,t){let n=eg(t);if(!n)return 1;let a=eg(e.label),i=[a,...e.keywords.map(eg)];if(i.some(e=>e===n))return 100;if(a.startsWith(n))return 92;if(i.some(e=>e.startsWith(n)))return 84;if(a.includes(n))return 74;if(i.some(e=>e.includes(n)))return 64;let r=ep(a);if(n.length>0&&/^[ㄱ-ㅎ]+$/.test(n)){let e=ep(n);if(r.startsWith(e))return 58;if(r.includes(e))return 52}return ev(n,a)?36:i.some(e=>ev(n,e))?30:0})(e,l)>0).map(e=>({cmd:e,section:e.group})):[...x.slice(0,3).map(e=>C.get(e)).filter(e=>!!e).map(e=>({cmd:e,section:"recent"})),...E.map(e=>({cmd:e,section:e.group}))],[l,E,C,x]),D=S.map(e=>e.cmd);(0,i.useEffect)(()=>{d(e=>Math.min(e,Math.max(0,D.length-1)))},[D.length]),(0,i.useEffect)(()=>{let e=e=>{if(ex(e)&&("k"===e.key||"K"===e.key)){e.preventDefault(),j.current?w():k();return}if(j.current&&"Escape"===e.key){e.preventDefault(),w();return}if(ex(e)&&!e.shiftKey&&!e.altKey&&","===e.key){e.preventDefault(),j.current&&w(),z.current();return}let t=e.target instanceof HTMLElement&&e.target.closest('[role="dialog"],[aria-modal="true"]');j.current||"/"!==e.key||ex(e)||e.altKey||function(e){if(!(e instanceof HTMLElement))return!1;let t=e.tagName;return"INPUT"===t||"TEXTAREA"===t||"SELECT"===t||!!e.isContentEditable}(e.target)||t||(e.preventDefault(),k())};return window.addEventListener("keydown",e),()=>window.removeEventListener("keydown",e)},[k,w]),(0,i.useEffect)(()=>{let e=()=>k();return window.addEventListener("open-command-palette",e),()=>window.removeEventListener("open-command-palette",e)},[k]),(0,i.useEffect)(()=>{var e;if(!n)return;null===(e=m.current)||void 0===e||e.focus();let t=document.body.style.overflow;return document.body.style.overflow="hidden",()=>{document.body.style.overflow=t}},[n]),(0,i.useEffect)(()=>{var e;if(!n)return;let t=null===(e=f.current)||void 0===e?void 0:e.querySelector('[data-selected="true"]');null==t||t.scrollIntoView({block:"nearest"})},[o,n,l]);let M=(0,i.useCallback)(e=>{e&&(!function(e){try{let t=[e,...ek().filter(t=>t!==e)].slice(0,3);localStorage.setItem(ew,JSON.stringify(t))}catch(e){}}(e.id),w(),setTimeout(()=>e.run(),0))},[w]);if(!n)return null;let L=eh(["mod","k"],c),A={recent:"최근 사용",nav:"이동",action:"액션"},B="";return(0,a.jsxs)("div",{className:"modal-viewport keyboard-shrink-top z-[200] flex items-start justify-center px-4 pt-[14vh]",role:"dialog","aria-modal":"true","aria-label":"빠른 실행",children:[(0,a.jsx)("div",{className:"absolute inset-0 bg-black/40 dark:bg-black/60 backdrop-blur-sm",onClick:w}),(0,a.jsxs)("div",{className:"relative w-full max-w-lg bg-white dark:bg-[#18181b] border border-zinc-200 dark:border-[#27272a] rounded-xl overflow-hidden shadow-lg animate-in fade-in zoom-in-95 duration-150",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2.5 px-3.5 py-3 border-b border-zinc-200 dark:border-[#27272a]",children:[(0,a.jsx)(eo.Z,{size:16,className:"shrink-0 text-zinc-400 dark:text-[#71717a]"}),(0,a.jsx)("input",{ref:m,type:"text",value:l,onChange:e=>{s(e.target.value),d(0)},onKeyDown:e=>{e.nativeEvent.isComposing||("ArrowDown"===e.key?(e.preventDefault(),d(e=>Math.min(e+1,D.length-1))):"ArrowUp"===e.key?(e.preventDefault(),d(e=>Math.max(e-1,0))):"Home"===e.key?(e.preventDefault(),d(0)):"End"===e.key?(e.preventDefault(),d(D.length-1)):"Enter"===e.key?(e.preventDefault(),M(D[o])):"Escape"===e.key&&(e.preventDefault(),w()))},placeholder:"이동할 화면이나 명령을 검색하세요",className:"flex-1 min-w-0 bg-transparent text-zinc-900 dark:text-white placeholder:text-zinc-400 dark:placeholder:text-[#52525b] focus:outline-none focus-visible:ring-2 focus-visible:ring-blue-500 text-sm","aria-label":"명령어 검색",autoComplete:"off",spellCheck:!1}),(0,a.jsx)("div",{className:"hidden sm:flex items-center gap-0.5 shrink-0",children:L.map(e=>(0,a.jsx)("kbd",{className:"px-1.5 py-0.5 rounded bg-zinc-100 dark:bg-[#27272a] text-[10px] font-medium text-zinc-400 dark:text-[#71717a]",children:e},e))}),(0,a.jsx)("button",{"aria-label":"닫기",onClick:w,className:"shrink-0 p-1 rounded-md text-zinc-400 hover:text-zinc-600 dark:text-[#71717a] dark:hover:text-white hover:bg-zinc-100 dark:hover:bg-[#27272a] transition-colors",children:(0,a.jsx)(y.Z,{size:15})})]}),(0,a.jsx)("div",{ref:f,className:"max-h-[52vh] overflow-y-auto custom-scrollbar py-1.5",children:0===D.length?(0,a.jsxs)("div",{className:"px-4 py-9 text-center text-[13px] text-zinc-400 dark:text-[#52525b]",children:["‘",l,"’ 에 대한 결과가 없습니다"]}):S.map((e,t)=>{let{cmd:n,section:i}=e,r=i!==B;B=i;let s=t===o,u=n.icon;return(0,a.jsxs)("div",{children:[r&&(0,a.jsxs)("div",{className:"flex items-center gap-1.5 px-3.5 pt-2.5 pb-1 text-[11px] font-medium text-zinc-400 dark:text-[#52525b]",children:["recent"===i&&(0,a.jsx)(ed.Z,{size:11}),A[i]]}),(0,a.jsxs)("button",{"data-selected":s,onClick:()=>M(n),onMouseEnter:()=>d(t),className:(0,I.cn)("w-full flex items-center gap-2.5 px-3.5 py-2 text-left transition-colors",s?"bg-zinc-100 dark:bg-[#27272a] text-zinc-900 dark:text-white":"text-zinc-600 dark:text-[#a1a1aa]"),children:[(0,a.jsx)(u,{size:16,strokeWidth:1.5,className:s?"text-zinc-900 dark:text-white":"text-zinc-400 dark:text-[#71717a]"}),(0,a.jsx)("span",{className:"flex-1 text-[13px]",children:function(e,t){let n=t.trim();if(!n)return e;let i=e.toLowerCase().indexOf(n.toLowerCase());return -1===i?e:(0,a.jsxs)(a.Fragment,{children:[e.slice(0,i),(0,a.jsx)("span",{className:"font-semibold text-zinc-900 dark:text-white",children:e.slice(i,i+n.length)}),e.slice(i+n.length)]})}(n.label,l)}),n.shortcut&&(0,a.jsx)("span",{className:"flex items-center gap-0.5",children:eh(n.shortcut,c).map((e,t)=>(0,a.jsx)("kbd",{className:"px-1 py-0.5 rounded bg-zinc-200/70 dark:bg-[#3f3f46] text-[10px] font-medium text-zinc-500 dark:text-[#a1a1aa]",children:e},t))}),s&&(0,a.jsx)(ec.Z,{size:13,className:"text-zinc-400 dark:text-[#71717a]"})]})]},"".concat(i,":").concat(n.id))})}),(0,a.jsxs)("div",{className:"flex items-center gap-3.5 px-3.5 py-2 border-t border-zinc-200 dark:border-[#27272a] text-[11px] text-zinc-400 dark:text-[#52525b]",children:[(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)("kbd",{className:"px-1 py-0.5 rounded bg-zinc-100 dark:bg-[#27272a]",children:"↑↓"})," 이동"]}),(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)("kbd",{className:"px-1 py-0.5 rounded bg-zinc-100 dark:bg-[#27272a]",children:"↵"})," 실행"]}),(0,a.jsxs)("span",{className:"flex items-center gap-1",children:[(0,a.jsx)("kbd",{className:"px-1 py-0.5 rounded bg-zinc-100 dark:bg-[#27272a]",children:"Esc"})," 닫기"]})]})]})]})}var ey=n(98319),ez=n(76865),eN=n(41681),eE=n(96720);class eC extends i.Component{static getDerivedStateFromError(e){return{hasError:!0,error:e,silentReloading:!1}}componentDidCatch(e,t){var n;try{if((0,eE.Hu)(e,sessionStorage,()=>window.location.reload())){this.setState({silentReloading:!0});return}}catch(e){}console.error("ErrorBoundary caught an error:",e,t),(0,eN.F)(e,{boundary:this.props.fallbackMessage||"ErrorBoundary",componentStack:null!==(n=t.componentStack)&&void 0!==n?n:void 0})}get isChunkError(){return!!this.state.error&&(0,eE.lP)(this.state.error)}
1render(){if(this.state.silentReloading)return null;if(this.state.hasError){var e;let t=this.isChunkError;return(0,a.jsxs)("div",{className:"h-full flex flex-col items-center justify-center text-center px-6 bg-white dark:bg-[#09090b]",children:[(0,a.jsx)(ez.Z,{size:20,className:"text-zinc-400 dark:text-zinc-500 mb-3"}),(0,a.jsx)("h2",{className:"text-[17px] font-semibold text-zinc-900 dark:text-white",children:t?"화면을 불러오지 못했습니다":this.props.fallbackMessage||"오류가 발생했습니다"}),(0,a.jsx)("p",{className:"mt-1.5 text-[13px] leading-relaxed text-zinc-500 dark:text-zinc-400 max-w-[280px]",children:t?"다시 열면 이어서 사용할 수 있습니다.":(null===(e=this.state.error)||void 0===e?void 0:e.message)||"예기치 않은 오류가 발생했습니다. 다시 시도해 주세요."}),(0,a.jsx)("button",{onClick:this.handleReset,className:"mt-5 px-4 py-2 rounded-lg text-[13px] font-medium bg-zinc-900 text-white dark:bg-white dark:text-black hover:opacity-90 active:scale-[0.98] transition-[opacity,transform] duration-150",children:t?"다시 열기":"다시 시도"})]})}return this.props.children}constructor(...e){super(...e),this.state={hasError:!1,error:null,silentReloading:!1},this.handleReset=()=>{this.isChunkError?window.location.reload():this.setState({hasError:!1,error:null})}}}var eS=n(53834),eD=n(52570),eM=n(30401),eL=n(84929);function eI(){let{isQuotaModalOpen:e,quotaInfo:t,closeQuotaModal:n}=(0,eL.f)(),[r,l]=(0,i.useState)(!1),s=(0,Y.g)();if((0,E.j)(n,e),(0,i.useEffect)(()=>(l(!0),()=>l(!1)),[]),!e||!r||!t)return null;let o=parseFloat((Math.max(t.currentUsage,t.limit)/1048576).toFixed(1)),d=(t.limit/1048576).toFixed(0);return(0,j.createPortal)((0,a.jsx)("div",{className:"modal-viewport z-[100] flex items-center justify-center bg-black/60 backdrop-blur-sm p-4",onClick:e=>{e.target===e.currentTarget&&n()},children:(0,a.jsxs)("div",{className:"relative w-full max-w-[400px] bg-white dark:bg-[#0D0D0D] border border-zinc-200 dark:border-white/10 rounded-xl overflow-hidden animate-in fade-in zoom-in-95 duration-150 flex flex-col p-6",children:[(0,a.jsx)("button",{"aria-label":"닫기",onClick:n,className:"absolute top-4 right-4 p-1 text-zinc-400 hover:text-zinc-600 dark:hover:text-white transition-colors",children:(0,a.jsx)(y.Z,{size:18})}),(0,a.jsxs)("div",{className:"pt-2 pb-6 text-center",children:[(0,a.jsx)("h2",{className:"text-xl font-bold text-zinc-900 dark:text-white mb-2",children:"저장 용량이 가득 찼어요"}),(0,a.jsxs)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400 mb-6 leading-relaxed",children:["무료 계정의 저장 공간(",d,"MB)을 모두 사용했습니다."]}),(0,a.jsxs)("div",{className:"bg-zinc-50 dark:bg-white/5 rounded-lg p-4 border border-zinc-100 dark:border-white/5",children:[(0,a.jsxs)("div",{className:"flex items-center justify-between mb-2",children:[(0,a.jsx)("span",{className:"text-xs font-medium text-zinc-500 dark:text-zinc-400",children:"사용량"}),(0,a.jsxs)("span",{className:"text-xs font-semibold text-zinc-900 dark:text-white",children:[o,"MB / ",d,"MB"]})]}),(0,a.jsx)("div",{className:"w-full h-2 bg-zinc-200 dark:bg-zinc-700/50 rounded-full overflow-hidden",children:(0,a.jsx)("div",{className:"h-full bg-zinc-900 dark:bg-white rounded-full transition-all duration-500 ease-out",style:{width:"".concat(100,"%")}})})]})]}),(0,a.jsxs)("div",{className:"space-y-3 mb-8",children:[(0,a.jsx)("p",{className:"text-xs font-medium text-zinc-500 dark:text-zinc-400 px-1",children:"프로 플랜 혜택"}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsxs)("div",{className:"flex items-start gap-3 p-1",children:[(0,a.jsx)("div",{className:"w-5 h-5 rounded-full bg-zinc-100 dark:bg-white/10 flex items-center justify-center shrink-0 mt-0.5",children:(0,a.jsx)(eM.Z,{size:12,className:"text-zinc-900 dark:text-white",strokeWidth:3})}),(0,a.jsx)("span",{className:"text-sm text-zinc-600 dark:text-zinc-300",children:"용량 제한 없는 파일 업로드"})]}),(0,a.jsxs)("div",{className:"flex items-start gap-3 p-1",children:[(0,a.jsx)("div",{className:"w-5 h-5 rounded-full bg-zinc-100 dark:bg-white/10 flex items-center justify-center shrink-0 mt-0.5",children:(0,a.jsx)(eM.Z,{size:12,className:"text-zinc-900 dark:text-white",strokeWidth:3})}),(0,a.jsx)("span",{className:"text-sm text-zinc-600 dark:text-zinc-300",children:"우리 학급을 한눈에 관리"})]}),(0,a.jsxs)("div",{className:"flex items-start gap-3 p-1",children:[(0,a.jsx)("div",{className:"w-5 h-5 rounded-full bg-zinc-100 dark:bg-white/10 flex items-center justify-center shrink-0 mt-0.5",children:(0,a.jsx)(eM.Z,{size:12,className:"text-zinc-900 dark:text-white",strokeWidth:3})}),(0,a.jsx)("span",{className:"text-sm text-zinc-600 dark:text-zinc-300",children:"학기별 성적 추이 및 교과별 분석"})]}),(0,a.jsxs)("div",{className:"flex items-start gap-3 p-1",children:[(0,a.jsx)("div",{className:"w-5 h-5 rounded-full bg-zinc-100 dark:bg-white/10 flex items-center justify-center shrink-0 mt-0.5",children:(0,a.jsx)(eM.Z,{size:12,className:"text-zinc-900 dark:text-white",strokeWidth:3})}),(0,a.jsx)("span",{className:"text-sm text-zinc-600 dark:text-zinc-300",children:"학생별 생활기록부 AI 분석"})]}),(0,a.jsxs)("div",{className:"flex items-start gap-3 p-1",children:[(0,a.jsx)("div",{className:"w-5 h-5 rounded-full bg-zinc-100 dark:bg-white/10 flex items-center justify-center shrink-0 mt-0.5",children:(0,a.jsx)(eM.Z,{size:12,className:"text-zinc-900 dark:text-white",strokeWidth:3})}),(0,a.jsx)("span",{className:"text-sm text-zinc-600 dark:text-zinc-300",children:"상담에 필요한 시각적 자료 제공"})]})]})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[!s&&(0,a.jsx)("button",{type:"button",onClick:()=>{window.dispatchEvent(new CustomEvent("navigate-view",{detail:"plans"})),n()},className:"w-full h-12 bg-zinc-900 hover:bg-zinc-800 dark:bg-zinc-100 dark:hover:bg-zinc-200 text-white dark:text-zinc-900 text-sm font-semibold rounded-lg cursor-pointer transition flex items-center justify-center gap-2 shadow-sm focus-visible:ring-2 focus-visible:ring-blue-500",children:"요금제 확인하기"}),(0,a.jsx)("button",{onClick:n,className:"w-full h-10 text-sm font-medium text-zinc-500 hover:text-zinc-800 dark:text-zinc-400 dark:hover:text-zinc-200 transition-colors",children:s?"확인":"나중에 하기"})]})]})}),document.body)}var eA=n(91723),eB=n(77265),eT=n(46221),eZ=n(64972),eF=n(55900);function eR(e){let{daysLeft:t,expiryDate:n,onExtend:r,onClose:l}=e,[s,o]=(0,i.useState)(!1);if((0,i.useEffect)(()=>(o(!0),()=>o(!1)),[]),(0,E.j)(l),!s)return null;
1let c=new Date(n).toLocaleDateString("ko-KR",{year:"numeric",month:"long",day:"numeric"});return(0,j.createPortal)((0,a.jsx)("div",{className:"modal-viewport z-[100] flex items-center justify-center bg-black/60 backdrop-blur-sm p-4",onClick:e=>{e.target===e.currentTarget&&l()},children:(0,a.jsxs)("div",{className:"relative w-full max-w-[400px] bg-white dark:bg-[#0D0D0D] border border-zinc-200 dark:border-white/10 rounded-xl overflow-hidden animate-in fade-in zoom-in-95 duration-150 flex flex-col p-6",children:[(0,a.jsx)("button",{"aria-label":"닫기",onClick:l,className:"absolute top-4 right-4 p-1 text-zinc-400 hover:text-zinc-600 dark:hover:text-white transition-colors",children:(0,a.jsx)(y.Z,{size:18})}),(0,a.jsxs)("div",{className:"pt-2 pb-6 text-center",children:[(0,a.jsx)("div",{className:"w-12 h-12 bg-zinc-100 dark:bg-white/10 rounded-full flex items-center justify-center mx-auto mb-4",children:(0,a.jsx)(eA.Z,{size:24,className:"text-zinc-500 dark:text-zinc-400"})}),(0,a.jsx)("h2",{className:"text-xl font-bold text-zinc-900 dark:text-white mb-2",children:0===t?"이용 기간이 오늘까지입니다":"이용 기간이 ".concat(t,"일 남았습니다")}),(0,a.jsxs)("p",{className:"text-sm text-zinc-500 leading-relaxed",children:["프로 플랜이 ",(0,a.jsx)("span",{className:"font-semibold text-zinc-700 dark:text-zinc-300",children:c}),"에 만료됩니다."]})]}),(0,a.jsxs)("div",{className:"space-y-3 mb-8",children:[(0,a.jsx)("p",{className:"text-xs font-medium text-zinc-500 dark:text-zinc-400 px-1",children:"프로 플랜 혜택"}),(0,a.jsx)("div",{className:"space-y-2",children:[{icon:M.Z,label:"기본 요금제의 모든 기능 이용"},{icon:eB.Z,label:"파일 업로드 무제한"},{icon:eT.Z,label:"학생 성적 관리 (내신, 모의고사)"},{icon:eZ.Z,label:"생활기록부 AI 요약"},{icon:eF.Z,label:"대학 추천 기능"},{icon:d.Z,label:"교무실, 학교 단위로 이용 가능"}].map(e=>{let{icon:t,label:n}=e;return(0,a.jsxs)("div",{className:"flex items-center gap-3 p-1",children:[(0,a.jsx)(t,{size:18,className:"text-zinc-400 dark:text-zinc-500 shrink-0"}),(0,a.jsx)("span",{className:"text-sm text-zinc-600 dark:text-zinc-300",children:n})]},n)})})]}),(0,a.jsxs)("div",{className:"space-y-2",children:[(0,a.jsx)("div",{role:"button",onClick:()=>{r(),l()},className:"w-full h-12 bg-zinc-900 dark:bg-zinc-100 !text-white dark:!text-zinc-900 text-sm font-semibold rounded-lg cursor-pointer transition flex items-center justify-center gap-2 shadow-sm select-none",onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#3f3f46"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor=""},children:"기간 연장하기"}),(0,a.jsx)("button",{onClick:l,className:"w-full h-10 text-sm font-medium text-zinc-500 hover:text-zinc-800 dark:text-zinc-400 dark:hover:text-zinc-200 transition-colors",children:"나중에 하기"})]})]})}),document.body)}var eP=n(92451);let eO=[],eW="saemo_dismissed_announcements";function eU(){try{var e;return JSON.parse(null!==(e=localStorage.getItem(eW))&&void 0!==e?e:"[]")}catch(e){return[]}}function eV(e){let t=eU();t.includes(e)||localStorage.setItem(eW,JSON.stringify([...t,e]))}let eG={"neis-attendance-auto-v1":{title:"NEIS 출결 자동입력",description:"",ctaLabel:"출결 관리 바로가기",images:[{src:"/images/announcement-neis-attendance-1.jpg",alt:"NEIS 출결 자동입력"},{src:"/images/announcement-neis-attendance-2.jpg",alt:"NEIS 출결 자동입력"},{src:"/images/announcement-neis-attendance-3.jpg",alt:"NEIS 출결 자동입력"}]}};function eH(e){let{announcementId:t,onClose:n,onNavigate:r}=e,[l,s]=(0,i.useState)(!1),[d,c]=(0,i.useState)(0),u=(0,i.useRef)(null),x=eG[t];if((0,E.j)(n),(0,i.useEffect)(()=>(s(!0),()=>s(!1)),[]),!l||!x)return null;let{images:h}=x,m=h.length,f=m>1,p=()=>c(e=>Math.max(0,e-1)),v=()=>c(e=>Math.min(m-1,e+1)),b=()=>{n()};return(0,j.createPortal)((0,a.jsx)("div",{className:"modal-viewport z-[100] flex items-center justify-center bg-black/60 backdrop-blur-sm p-4",onClick:e=>{e.target===e.currentTarget&&b()},children:(0,a.jsxs)("div",{className:"w-full max-w-[400px] bg-white dark:bg-[#0D0D0D] border border-zinc-200 dark:border-white/10 rounded-xl overflow-hidden animate-in fade-in zoom-in-95 duration-150 flex flex-col",children:[(0,a.jsx)("div",{className:"px-5 pt-5 pb-3",children:(0,a.jsx)("p",{className:"text-base font-semibold text-zinc-700 dark:text-zinc-300",children:"내모 업데이트 안내"})}),(0,a.jsxs)("div",{className:"relative w-full aspect-[1080/1154] overflow-hidden bg-zinc-50 dark:bg-zinc-900 select-none",onTouchStart:e=>{u.current=e.touches[0].clientX},onTouchEnd:e=>{if(null===u.current)return;let t=u.current-e.changedTouches[0].clientX;t>40?v():t<-40&&p(),u.current=null},children:[(0,a.jsx)(et.default,{src:h[d].src,alt:h[d].alt,fill:!0,sizes:"400px",className:"object-cover animate-in fade-in duration-200",priority:0===d},d),f&&d>0&&(0,a.jsx)("div",{role:"button",onClick:p,className:"absolute left-3 top-1/2 -translate-y-1/2 w-8 h-8 bg-black/10 hover:bg-black/20 rounded-full flex items-center justify-center cursor-pointer transition-colors",children:(0,a.jsx)(eP.Z,{size:16,className:"text-white/70",strokeWidth:2.5})}),f&&d<m-1&&(0,a.jsx)("div",{role:"button",onClick:v,className:"absolute right-3 top-1/2 -translate-y-1/2 w-8 h-8 bg-black/10 hover:bg-black/20 rounded-full flex items-center justify-center cursor-pointer transition-colors",children:(0,a.jsx)(o.Z,{size:16,className:"text-white/70",strokeWidth:2.5})})]}),f&&(0,a.jsxs)("div",{className:"relative flex items-center justify-center gap-1.5 pt-2.5 pb-0.5 px-5",children:[h.map((e,t)=>(0,a.jsx)("div",{role:"button",onClick:()=>c(t),className:"rounded-full cursor-pointer transition duration-200 ".concat(t===d?"w-2 h-2 bg-blue-700 dark:bg-blue-400":"w-1.5 h-1.5 bg-zinc-300 dark:bg-zinc-600")},t)),(0,a.jsxs)("span",{className:"absolute right-5 text-xs font-medium text-zinc-400 dark:text-zinc-500 pointer-events-none",children:[d+1,"/",m]})]}),(0,a.jsxs)("div",{className:"px-5 pt-4 pb-5",children:[x.description&&(0,a.jsx)("p",{className:"text-sm text-zinc-500 dark:text-zinc-400 leading-relaxed whitespace-pre-line",children:x.description}),(0,a.jsxs)("div",{className:"mt-5 flex flex-col items-center gap-3",children:[(0,a.jsx)("button",{onClick:()=>{eV(t),null==r||r(),n()},className:"announcement-cta-btn w-full h-10 text-sm font-medium rounded-lg transition-colors dark:bg-zinc-100 dark:!text-zinc-900 dark:hover:bg-zinc-200",children:x.ctaLabel}),(0,a.jsx)("button",{type:"button",onClick:()=>{eV(t),n()},className:"text-sm text-zinc-400 dark:text-zinc-500 py-2 px-4 roun
1ded-lg active:bg-zinc-100 dark:active:bg-white/5 transition-colors",children:"다시 보지 않기"})]})]})]})}),document.body)}let e_="naemo_dismissed_ops_notices";function eK(){try{let e=localStorage.getItem(e_),t=e?JSON.parse(e):[];return Array.isArray(t)?t.filter(e=>"string"==typeof e):[]}catch(e){return[]}}function eX(e){let{isAuthenticated:t}=e,[n,r]=(0,i.useState)(null);return((0,i.useEffect)(()=>{let e=!1;return fetch("/api/notices").then(e=>e.ok?e.json():null).then(n=>{var a;if(e||!n)return;let i=eK(),l=null===(a=n.notices)||void 0===a?void 0:a.find(e=>!i.includes(e.id)&&("authenticated"!==e.target||!!t));r(null!=l?l:null)}).catch(()=>{}),()=>{e=!0}},[t]),n)?(0,a.jsxs)("div",{role:"status",className:"shrink-0 border-b border-emerald-700/30 bg-emerald-50 dark:border-emerald-800/40 dark:bg-emerald-950/40 px-4 py-2.5 flex items-start gap-3",children:[(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("div",{className:"text-[13px] font-medium text-emerald-900 dark:text-emerald-100",children:n.title}),(0,a.jsx)("p",{className:"mt-0.5 text-[12px] text-emerald-800/80 dark:text-emerald-100/80 whitespace-pre-wrap",children:n.body})]}),(0,a.jsx)("button",{type:"button",onClick:()=>{!function(e){try{localStorage.setItem(e_,JSON.stringify(e.slice(-50)))}catch(e){}}([...eK(),n.id]),r(null)},"aria-label":"공지 닫기",className:"shrink-0 p-1 text-emerald-700/70 hover:text-emerald-900 dark:text-emerald-300/70 dark:hover:text-emerald-100",children:(0,a.jsx)(y.Z,{size:14})})]}):null}var eq=n(89345);function eJ(e){let{replies:t,onClose:n}=e,[r,l]=(0,i.useState)(!1),[s,o]=(0,i.useState)(0),[d,c]=(0,i.useState)(!1);if((0,i.useEffect)(()=>(l(!0),()=>l(!1)),[]),!r||0===t.length||s>=t.length)return null;let u=t[s],x="bug"===u.type,h=s===t.length-1,m=(()=>{try{return new Date(u.repliedAt).toLocaleString("ko-KR",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch(e){return""}})(),f=async()=>{c(!0);try{await V(u.id)}finally{c(!1),h?n():o(e=>e+1)}};return(0,j.createPortal)((0,a.jsx)("div",{className:"modal-viewport z-[100] flex items-center justify-center bg-black/40 dark:bg-black/60 backdrop-blur-sm p-4",children:(0,a.jsxs)("div",{className:"relative w-full max-w-[520px] bg-white dark:bg-[#1a1a1a] rounded-2xl shadow-2xl border border-zinc-200 dark:border-zinc-800 p-5 flex flex-col animate-in fade-in zoom-in-95 duration-200",children:[(0,a.jsxs)("div",{className:"flex items-center gap-2.5 mb-1",children:[(0,a.jsx)("div",{className:"flex h-9 w-9 items-center justify-center rounded-full bg-slate-100 dark:bg-slate-700/40",children:(0,a.jsx)(eq.Z,{size:18,className:"text-slate-500 dark:text-slate-300"})}),(0,a.jsxs)("div",{children:[(0,a.jsx)("h2",{className:"text-base font-semibold text-zinc-900 dark:text-white",children:"답변이 도착했습니다"}),m&&(0,a.jsx)("p",{className:"text-[11px] text-zinc-400",children:m})]}),t.length>1&&(0,a.jsxs)("span",{className:"ml-auto text-[11px] text-zinc-400",children:[s+1," / ",t.length]})]}),(0,a.jsxs)("div",{className:"mt-4 rounded-lg bg-zinc-50 dark:bg-zinc-900/60 border border-zinc-200 dark:border-zinc-800 p-3",children:[(0,a.jsxs)("div",{className:"flex items-center gap-1.5 mb-1.5",children:[x?(0,a.jsx)(P.Z,{size:13,className:"text-red-500"}):(0,a.jsx)(O.Z,{size:13,className:"text-blue-500"}),(0,a.jsx)("span",{className:"text-[11px] font-medium text-zinc-500 dark:text-zinc-400",children:x?"내 버그 신고":"내 문의"})]}),(0,a.jsx)("p",{className:"text-xs text-zinc-600 dark:text-zinc-300 whitespace-pre-wrap max-h-24 overflow-y-auto leading-relaxed",children:u.description})]}),(0,a.jsxs)("div",{className:"mt-3",children:[(0,a.jsx)("span",{className:"text-[11px] font-medium text-zinc-500 dark:text-zinc-400",children:"답변"}),(0,a.jsx)("div",{className:"mt-1.5 rounded-lg bg-zinc-50 dark:bg-zinc-800/50 border border-zinc-200 dark:border-zinc-700/50 p-3",children:(0,a.jsx)("p",{className:"text-sm text-zinc-800 dark:text-zinc-100 whitespace-pre-wrap max-h-60 overflow-y-auto leading-relaxed",children:u.replyBody})})]}),(0,a.jsx)("div",{className:"flex justify-end mt-5",children:(0,a.jsx)("button",{onClick:f,disabled:d,className:(0,I.cn)("inquiry-confirm-btn","px-5 py-1.5 rounded-full text-sm font-medium transition flex items-center justify-center gap-1.5","disabled:opacity-50 disabled:cursor-not-allowed shadow-sm"),children:d?(0,a.jsx)(L.Z,{size:14,className:"animate-spin"}):(0,a.jsx)("span",{children:h?"확인":"다음"})})})]})}),document.body)}var e$=n(93202),eY=n(48313),eQ=n(9244);function e0(e,t,n){return t||"authenticating"===e?e:(null==n?void 0:n.lockOnBackgroun
1d)?"locked":e}function e2(e){return e?"unlocked":"locked"}var e1=n(8679),e5=n(26862);function e7(e){let{children:t,enabled:r=!0,currentView:l=""}=e,{enabled:s,mode:o,hydrated:d}=(0,e5.t)(),c=d&&s,u=!!(r&&c&&"sensitive_menus"===o&&(0,e1.Io)(l)),{locked:x,retry:h}=function(){var e;let t=!(arguments.length>0)||void 0===arguments[0]||arguments[0],a=arguments.length>1?arguments[1]:void 0,r=null!==(e=null==a?void 0:a.backgroundGraceMs)&&void 0!==e?e:e1.c5,l=(0,eQ.c)()&&t,[s,o]=(0,i.useState)("unlocked"),d=(0,i.useRef)(s);d.current=s;let c=(0,i.useRef)(!1),u=(0,i.useRef)(null),x=(0,i.useCallback)(async()=>{if(l&&!c.current){c.current=!0,o("authenticating");try{let{NativeBiometric:e}=await n.e(731).then(n.bind(n,60731)),t=await e.isAvailable({useFallback:!0});if(!t.isAvailable&&!t.deviceIsSecure){o("unlocked");return}await e.verifyIdentity({reason:"학생 개인정보 보호를 위해 본인 확인이 필요합니다",title:"내모 잠금 해제",useFallback:!0,fallbackTitle:"기기 암호 사용"}),o(e2(!0))}catch(e){o(e2(!1))}finally{c.current=!1}}},[l]);return(0,i.useEffect)(()=>{l?x():(o("unlocked"),u.current=null)},[l]),(0,i.useEffect)(()=>{let e;if(!l)return;let t=!1;return(async()=>{let{App:a}=await n.e(663).then(n.bind(n,90663)),i=await a.addListener("appStateChange",e=>{let{isActive:t}=e;if(!t){"authenticating"!==d.current&&(u.current=Date.now()),o(e0(d.current,!1));return}let n=u.current;u.current=null;let a=null==n?0:Date.now()-n;if((0,e1.C4)(a,r)&&"unlocked"===d.current){o("locked"),x();return}let i=e0(d.current,!0);o(i),"locked"===i&&x()});t?i.remove():e=i})(),()=>{t=!0,null==e||e.remove()}},[l,x,r]),{locked:l&&"unlocked"!==s,retry:x}}(!!(r&&c&&"app_open"===o)||u);return(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)("div",{inert:x?"":void 0,"aria-hidden":x||void 0,style:{isolation:"isolate"},children:t}),x&&(0,a.jsx)(eY.Z,{children:(0,a.jsxs)("div",{className:"fixed inset-0 flex flex-col items-center justify-center gap-4 bg-[#09090b] px-6 text-center text-white",style:{zIndex:2147483e3},role:"dialog","aria-modal":"true",children:[(0,a.jsx)("p",{className:"text-[15px] font-medium",children:"Face ID로 잠금을 해제해주세요"}),(0,a.jsx)("button",{onClick:h,className:"rounded-full bg-zinc-900 px-5 py-2.5 text-[13px] font-semibold text-white dark:bg-white dark:text-zinc-900",children:"다시 시도"})]})})]})}var e3=n(17829),e4=n(55701),e6=n(21751);function e8(e){let{currentView:t}=e,{subHeaderTitle:n,goBackFromSubHeader:r}=(0,e6.jM)(),l=null!==n,s=l?n:"settings"===t?"설정":(0,Q.Kg)(t),o="hub"===t,d=(0,i.useRef)([]);return o?null:(0,a.jsxs)("header",{className:(0,I.cn)("md:hidden fixed top-0 left-0 right-0 z-50","flex items-center gap-3 px-4","bg-[#FBFBF9]/80 dark:bg-[#09090b]/80 border-b border-zinc-200/40 dark:border-zinc-800/40","backdrop-blur-xl backdrop-saturate-150"),style:{top:"var(--vv-offset-top, 0px)",height:"calc(44px + env(safe-area-inset-top, 0px))",paddingTop:"env(safe-area-inset-top, 0px)"},children:[(0,a.jsx)("button",{onClick:()=>{if(l){$.MU.tap(),r();return}window.history.length>1&&window.location.hash?($.MU.tap(),window.history.back()):window.dispatchEvent(new CustomEvent("navigate-view",{detail:"hub"}))},className:(0,I.cn)("flex items-center justify-center w-11 h-11 -ml-2 rounded-lg active-spring transition-colors","text-zinc-600 dark:text-zinc-300 active:text-zinc-900 dark:active:text-white active:bg-zinc-200/50 dark:active:bg-white/[0.08]"),"aria-label":l?"뒤로가기":"홈으로",children:(0,a.jsx)(eP.Z,{size:20,strokeWidth:2})}),(0,a.jsx)("h1",{onClick:()=>{let e=Date.now();d.current=[...d.current,e].filter(t=>e-t<3e3),d.current.length>=5&&(d.current=[],window.dispatchEvent(new Event(e4.R)))},className:"flex-1 text-[15px] font-semibold truncate select-none text-zinc-800 dark:text-zinc-100",children:s}),(0,a.jsx)("div",{className:"w-8"})]})}var e9=n(16338),te=n(86267),tt=n(67920),tn=n(83008);function ta(){return"undefined"!=typeof document&&"hidden"===document.visibilityState}var ti=n(58819),tr=n(54696);function tl(e,t){let[n,a]=(0,i.useState)(t),[r,l]=(0,i.useState)(!1);(0,i.useEffect)(()=>{try{let t=window.localStorage.getItem(e);t&&a(JSON.parse(t))}catch(t){console.warn('Error reading localStorage key "'.concat(e,'":'),t)}l(!0)},[e]);let s=(0,i.useCallback)(t=>{try{let i=t instanceof Function?t(n):t;a(i),window.localStorage.setItem(e,JSON.stringify(i))}catch(t){console.warn('Error setting localStorage key "'.concat(e,'":'),t)}},[e,n]);return[n,s]}let ts="--pwa-banner-offset";function to(){let{data:e}=(0,z.kP)(),{canShow:t,platform:n,install:r,dismiss:l}=function(e){let[t,n]=tl("naemo-pwa-install-dismissed-at",0),[a,r]=tl("naemo-pwa-install-installed",!1),[l,s]=(0,i.useState)(!1),[o,d]=(0,i.useState)(!1),[c,u]=(0,i.useState)(!1),[x,h]=(0,i.useState)(!1),m=(0,i.useRef)(null);(0,i.useEffect)(()=>
1{if(!e)return;s(window.matchMedia("(display-mode: standalone)").matches||!0===window.navigator.standalone),d((0,S.ei)(window.navigator.userAgent));let t=e=>{e.preventDefault(),m.current=e,u(!0)},n=()=>{m.current=null,r(!0)};window.addEventListener("beforeinstallprompt",t),window.addEventListener("appinstalled",n);let a=window.setTimeout(()=>h(!0),2e3);return()=>{window.removeEventListener("beforeinstallprompt",t),window.removeEventListener("appinstalled",n),window.clearTimeout(a)}},[e,r]);let f=(0,S.E1)({isIOS:o,hasAndroidPrompt:c}),p=e&&(0,S.vy)({isStandalone:l,isInstalled:a,platform:f,dismissedAt:t,now:Date.now(),delayElapsed:x}),v=(0,i.useCallback)(()=>{n(Date.now())},[n]);return{canShow:p,platform:f,install:(0,i.useCallback)(async()=>{let e=m.current;if(!e)return;await e.prompt();let t=await e.userChoice;m.current=null,u(!1),"dismissed"===t.outcome?v():r(!0)},[v,r]),dismiss:v}}(!!(null==e?void 0:e.user)&&!(0,eQ.c)()),[s,o]=(0,i.useState)(!1),d=(0,i.useRef)(null);return((0,i.useEffect)(()=>{if(!t){o(!1);return}let e=requestAnimationFrame(()=>o(!0));return()=>cancelAnimationFrame(e)},[t]),(0,i.useEffect)(()=>{let e=document.documentElement;if(s&&d.current){let t=d.current.getBoundingClientRect().height;e.style.setProperty(ts,"".concat(Math.ceil(t),"px"))}else e.style.setProperty(ts,"0px");return()=>{e.style.setProperty(ts,"0px")}},[s]),t)?(0,a.jsx)(eY.Z,{children:(0,a.jsx)("div",{className:"md:hidden fixed inset-x-0 bottom-0 z-[90] px-4 transition-transform duration-300 ease-out",style:{paddingBottom:"max(env(safe-area-inset-bottom, 0px), 16px)",transform:s?"translateY(0)":"translateY(120%)"},role:"dialog","aria-label":"홈 화면에 추가",children:(0,a.jsxs)("div",{ref:d,className:"flex items-center gap-3 rounded-2xl border border-zinc-200 dark:border-zinc-800 bg-white dark:bg-zinc-900 px-4 py-3.5 text-zinc-900 dark:text-white shadow-2xl",children:[(0,a.jsx)("img",{src:"/brand-app-icon.svg",alt:"",className:"h-10 w-10 shrink-0 rounded-xl"}),(0,a.jsxs)("div",{className:"min-w-0 flex-1",children:[(0,a.jsx)("p",{className:"truncate text-[13px] font-semibold text-zinc-900 dark:text-white",children:"내모를 홈 화면에 추가하세요"}),(0,a.jsx)("p",{className:"truncate text-[12px] text-zinc-500 dark:text-zinc-400",children:"ios"===n?'공유 버튼 → "홈 화면에 추가"를 눌러주세요':"앱처럼 빠르게 열고 쓸 수 있어요"})]}),(0,a.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:["android"===n&&(0,a.jsx)("button",{onClick:r,className:"rounded-full bg-zinc-900 dark:bg-white px-3 py-1.5 text-[12px] font-semibold text-white dark:text-zinc-900 active:scale-95 transition",children:"추가하기"}),(0,a.jsx)("button",{onClick:l,className:"rounded-full px-3 py-1.5 text-[12px] font-medium text-zinc-500 dark:text-zinc-400 hover:text-zinc-900 dark:hover:text-white active:bg-zinc-100 dark:active:bg-zinc-800 transition",children:"ios"===n?"알겠어요":"나중에"})]})]})})}):null}var td=n(92934);let tc=["hub","dashboard","work-schedule","student-management","attendance","seating","nametag","cleaning","activity","random-picker","survey","work-notes","evaluation-record","behavior-record","plans","checkout","attendance-print","settings"];var tu=n(7153),tx=n(21652);let th="naemo:currentView";function tm(){try{return{local:window.localStorage,session:window.sessionStorage}}catch(e){return{local:null,session:null}}}function tf(){let e=window.location.hash.slice(1);return tc.includes(e)?e:"dashboard"}function tp(){var e,t;return e=(0,tx.UM)(),t=(0,tx.nX)()||(0,eQ.c)(),e||t}function tv(){return(0,a.jsx)("div",{className:"h-full w-full flex items-center justify-center bg-[#fafaf9] dark:bg-[#0D0D0D]",children:(0,a.jsx)(eS.W,{size:40,speed:1.2})})}let tb=(0,r.default)(()=>Promise.all([n.e(4065),n.e(3500),n.e(8726),n.e(2360),n.e(9717),n.e(8390),n.e(5238)]).then(n.bind(n,55238)),{loadableGenerated:{webpack:()=>[55238]},loading:tv}),tg=(0,r.default)(()=>Promise.all([n.e(3500),n.e(3917),n.e(2407)]).then(n.bind(n,48457)),{loadableGenerated:{webpack:()=>[48457]},loading:tv}),tw=(0,r.default)(()=>Promise.all([n.e(5804),n.e(6710),n.e(7502)]).then(n.bind(n,67502)),{loadableGenerated:{webpack:()=>[67502]},loading:tv}),tk=(0,r.default)(()=>Promise.all([n.e(6988),n.e(3450)]).then(n.bind(n,93450)),{loadableGenerated:{webpack:()=>[93450]},loading:tv}),tj=(0,r.default)(()=>n.e(8331).then(n.bind(n,58331)),{loadableGenerated:{webpack:()=>[58331]},loading:tv}),ty=(0,r.default)(()=>Promise.all([n.e(3719),n.e(5398),n.e(9136),n.e(9284)]).then(n.bind(n,49284)),{loadableGenerated:{webpack:()=>[49284]},loading:tv}),tz=(0,r.default)(()=>Promise.all([n.e(5804),n.e(6941),n.e(2360),n.e(6710),n.e(8037)]).then(n.bind(n,78037)),{loadableGenerated:{webpack:()=>[78037]},loading:tv}),tN=(0,r.default)(()=>Promise.all([n.e(9136),n.e(8280)]).then(n.bind(n,48280)),{loadableGenerated:{webpack:()=>[48280]},loading:tv}),tE=(0,r.default)(()=>Promise.all([n.e(37),n.e(9136),n.e(7861)]).then(n.bind(n,67861)),{loadableGenerated:{webpack:()=>[67861]},loading:tv}),tC=(0,r.default)(()=>n.e(3285).then(n.bind(n,13285)),{loadableGenerated:{webpack:()=>[13285]},loading:tv}),tS=(0,r.default)(()=>Promise.all([n.e(4831),n.e(6806)]).then(n.bind(n,96806)),{loadableGenerated:{webpack:()=>[96806]},loading:tv}),tD=(0,r.default)(()=>Promise.all([n.e(3719),n.e(5398),n.e(9646)]).then(n.bind(n,89646)),{loadableGenerated:{webpack:()=>[89646]},loading:tv}),tM=(0,r.default)(()=>n.e(2207).then(n.bind(n,72207)),{loadableGenerated:{webpack:()=>[72207]},loading:tv}),tL=(0,r.default)(()=>n.e(1487).then(n.bind(n,41487)),{loadableGenerated:{webpack:()=>[41487]},loading:tv}),tI=(0,r.default)(()=>n.e(6703).then(n.bind(n,46703)),{loadableGenerated:{webpack:()=>[46703]},loading:tv}),tA=(0,r.default)(()=>n.e(1658).then(n.bind(n,61658)),{loadableGenerated:{webpack:()=>[61658]},loading:tv}),tB=(0,r.default)(()=>n.e(2537).then(n.bind(n,52537)),{loadableGenerated:{webpack:()=>[52537]},loading:tv}),tT=(0,r.default)(()=>n.e(8259).then(n.bind(n,68259)),{loadableGenerated:{webpack:()=>[68259]},loading:tv}),tZ=(0,r.default)(()=>Promise.all([n.e(3719),n.e(5398),n.e(3086),n.e(9136),n.e(9589)]).then(n.bind(n,99589)),{loadableGenerated:{webpack:()=>[99589]},loading:tv}),tF=(0,r.default)(()=>Promise.all([n.e(2397),n.e(6038)]).then(n.bind(n,96038)),{loadableGenerated:{webpack:()=>[96038]},loading:tv}),tR=(0,r.default)(()=>Promise.all([n.e(4831),n.e(5784)]).then(n.bind(n,5784)),{loadableGenerated:{webpack:()=>[5784]},loading:tv});function tP(e){var t,n,r,l,s,o,d,c;let{session:u}=e,{update:x,data:h,status:m}=(0,z.kP)();(0,tr.Dv)();let f=(0,i.useRef)(null!=h?h:u);(null==h?void 0:h.user)&&(f.current=h);let p=(null==h?void 0:h.user)?h:(0,tr.YY)()?f.current:h,{students:v,isLoaded:b}=(0,X.AF)(),[g,w]=(0,i.useState)("dashboard"),[k,j]=(0,i.useState)(!1),y=(0,ti.d)(),N=k&&y,E=(0,i.useCallback)(e=>{let t=(0,eQ.I)()&&(0,tu.ZO)(e)?(0,tx.UM)()?"hub":"dashboard":e;!function(e,t,n){let{local:a,session:i}={...tm()};try{null==i||i.setItem(th,e),t&&(null==a||a.setItem(th,e))}catch(e){}}(t,tp()),w(t)},[]);(0,i.useEffect)(()=>{var e;let t=(0,tx.UM)(),n=tp();E(tc.includes(window.location.hash.slice(1))?tf():null!==(e=function(e,t){let{local:n,session:a}={...tm()};try{var i;let t=e&&null!==(i=null==n?void 0:n.getItem(th))&&void 0!==i?i:null==a?void 0:a.getItem(th);return tc.includes(t)?t:null}catch(e){return null}}(n))&&void 0!==e?e:t?"hub":"dashboard"),j(!0)},[E]);let[C,S]=(0,i.useState)(!1),[M,L]=(0,i.useState)(!1),[A,B]=(0,i.useState)(null),[T,Z]=(0,i.useState)([]),[F,R]=(0,i.useState)(null),[P,O]=(0,i.useState)(null);(0,i.useEffect)(()=>
1{if(k&&"true"===new URLSearchParams(window.location.search).get("payment_success")){x().catch(console.error),L(!0);let e=window.location.pathname+window.location.hash;window.history.replaceState({},"",e)}},[k,x]);let{showToast:W}=(0,ey.p)();!function(){var e;let{data:t,status:n}=(0,z.kP)(),{toasts:a,showToast:r,removeToast:l}=(0,ey.p)(),s=(0,tt.XC)(),o=(0,i.useRef)(!1),d=(0,i.useRef)(a),c=(0,i.useRef)(null),u=(0,i.useRef)(null),x=(0,i.useRef)(null),[h,m]=(0,i.useState)(0);(0,i.useEffect)(()=>{d.current=a},[a]),(0,i.useEffect)(()=>{let e=c.current;e&&a.some(t=>t.id!==e.toastId)&&(l(e.toastId),u.current&&(clearTimeout(u.current),u.current=null),c.current=null)},[a,l]),(0,i.useEffect)(()=>{let e=()=>{ta()||!x.current||c.current||(0,I.FB)(new Date)===x.current||m(e=>e+1)};document.addEventListener("visibilitychange",e),window.addEventListener("focus",e);let t=setInterval(e,36e5);return()=>{document.removeEventListener("visibilitychange",e),window.removeEventListener("focus",e),clearInterval(t)}},[]),(0,i.useEffect)(()=>{if("authenticated"!==n||!(null==t?void 0:t.user)||!s.user.id||o.current)return;o.current=!0;let e=!1,a=[],i=[],l=t=>{if(!ta()){t();return}let n=()=>{ta()||(document.removeEventListener("visibilitychange",n),e||t())};document.addEventListener("visibilitychange",n),i.push(()=>document.removeEventListener("visibilitychange",n))},h=async t=>{let n;if(e)return;if(ta()){l(m);return}if(d.current.length>0){0===t&&a.push(setTimeout(()=>h(1),3e3));return}try{n=await (0,tn.X)("getSuggestion",{},s)}catch(e){return}if(e||!(null==n?void 0:n.success)||!n.data)return;let{id:i,message:o,actionLabel:x,actionHref:f}=n.data;if(d.current.length>0)return;let p=()=>{u.current&&(clearTimeout(u.current),u.current=null),(0,tn.X)("markSuggestionShown",{id:i},s)},v=r(o,"suggestion",x&&f?{label:x,onClick:()=>{p(),(0,tn.X)("markSuggestionActed",{id:i},s),c.current=null;let e=function(e){let t=e.includes("#")?e.slice(e.indexOf("#")+1):e,n=t.indexOf("?"),a=-1===n?t:t.slice(0,n);if(-1===n)return{view:a};let i=new URLSearchParams(t.slice(n+1)),r=i.get("student")||void 0,l=i.get("tab")||void 0;return{view:a,...r?{studentId:r}:{},...l?{tab:l}:{}}}(f);e.studentId?window.dispatchEvent(new CustomEvent("navigate-to-student",{detail:{studentId:e.studentId,tab:e.tab}})):window.location.hash=e.view}}:void 0,()=>{p(),(0,tn.X)("markSuggestionDismissed",{id:i},s),c.current=null});c.current={toastId:v,suggestionId:i};let b=setTimeout(()=>{u.current=null,ta()||(0,tn.X)("markSuggestionShown",{id:i},s)},1500);u.current=b,a.push(b);let g=setTimeout(()=>{var e;(null===(e=c.current)||void 0===e?void 0:e.toastId)===v&&(c.current=null)},1e4);a.push(g)};function m(){x.current=(0,I.FB)(new Date),a.push(setTimeout(()=>void h(0),2500))}return l(m),()=>{e=!0,a.forEach(clearTimeout),i.forEach(e=>e()),o.current=!1}},[n,null==t?void 0:null===(e=t.user)||void 0===e?void 0:e.id,r,s,h])}(),(0,i.useEffect)(()=>{if(!k)return;let e=g===((0,tx.UM)()?"hub":"dashboard")?"":"#".concat(g);if(window.location.hash!==e){let t=window.location.pathname+window.location.search;!function(e){let t=window.history.state,n=!!(t&&(t.__NA||t._N));window.history.pushState(n?t:null,"",e)}(e?t+e:t)}},[g,k]),(0,i.useEffect)(()=>{let e=()=>{let e=(0,tx.UM)(),t=tf(),n=e&&"dashboard"===t&&!window.location.hash?"hub":t;n!==g&&E(n)};return window.addEventListener("hashchange",e),()=>window.removeEventListener("hashchange",e)},[g,E]),(0,i.useEffect)(()=>{let e=document.documentElement;return e.classList.add("app-shell-locked"),()=>e.classList.remove("app-shell-locked")},[]),(0,i.useEffect)(()=>{let e=(0,tx.UM)();e&&(0,eD.T)("hub");let t=setTimeout(()=>{e?((0,eD.T)("settings"),(0,eD.T)("student-management")):(0,eD.T)("dashboard"),(0,eD.T)("attendance")},1e3);return()=>clearTimeout(t)},[]);let{loadFromDB:V}=(0,e9.o)(),{loadFromDB:G}=(0,te.X)(),H=(0,tt.XC)();(0,i.useEffect)(()=>{k&&"authenticated"===m&&(null==h?void 0:h.user)&&(V(H),G())},[null==h?void 0:null===(t=h.user)||void 0===t?void 0:t.id,k,m]);let[_,K]=(0,i.useState)(!1),[q,J]=(0,i.useState)(0);(0,i.useEffect)(()=>{var e,t;if(!k||"authenticated"!==m)return;let n=null==h?void 0:null===(e=h.user)||void 0===e?void 0:e.paidUntil,a=null==h?void 0:null===(t=h.user)||void 0===t?void 0:t.recurringStatus;if(!n||"ACTIVE"===a)return;let i=new Date,r=new Date(n),l=e=>{let t=new Date(e);return t.setHours(0,0,0,0),t},s=Math.round((l(r).getTime()-l(i).getTime())/864e5);if(![5,3,1,0].includes(s))return;let o=r.toISOString().slice(0,10),d="subscription-expiry-dismissed-".concat(o,"-").concat(s,"d");!localStorage.getItem(d)&&((0,eQ.I)()||(J(s),K(!0)))}
1,[k,m,null==h?void 0:null===(n=h.user)||void 0===n?void 0:n.paidUntil,null==h?void 0:null===(r=h.user)||void 0===r?void 0:r.recurringStatus]);let Y=(0,i.useCallback)(e=>{if(e===g)return;let t=tc.includes(e)?e:"dashboard";t!==e&&console.warn('[AppShell] handleNavigate: invalid view "'.concat(e,'" → fallback to "dashboard"')),$.MU.selection(),E(t)},[g,E]),Q=(0,i.useCallback)(()=>{Y("plans")},[Y]),ee=(0,i.useCallback)(()=>{var e;K(!1);let t=null==h?void 0:null===(e=h.user)||void 0===e?void 0:e.paidUntil,n=t?new Date(t).toISOString().slice(0,10):"unknown",a="subscription-expiry-dismissed-".concat(n,"-").concat(q,"d");localStorage.setItem(a,new Date().toISOString())},[q,null==h?void 0:null===(l=h.user)||void 0===l?void 0:l.paidUntil]);(0,i.useEffect)(()=>{},[]),(0,i.useEffect)(()=>{let e=e=>{Y(e.detail)};return window.addEventListener("navigate-view",e),()=>window.removeEventListener("navigate-view",e)},[Y]),(0,i.useEffect)(()=>{let e=()=>{S(!0)};return window.addEventListener("open-login-modal",e),()=>window.removeEventListener("open-login-modal",e)},[]),(0,i.useEffect)(()=>{if(!k||"loading"===m||(0,tx.UM)())return;let e="authenticated"===m;if(e&&!b||e&&0===v.length&&!localStorage.getItem("rosterWizardCompleted")&&!(0,eQ.I)())return;let t=function(e){var t;let n=eU();return null!==(t=eO.find(t=>!n.includes(t.id)&&("authenticated"!==t.target||!!e)))&&void 0!==t?t:null}(e);t&&B(t.id)},[k,m,b,v.length]),(0,i.useEffect)(()=>{if(!k||"authenticated"!==m)return;let e=!1;return U().then(t=>{!e&&t.length>0&&Z(t)}).catch(()=>{}),()=>{e=!0}},[k,m]),(0,i.useEffect)(()=>{var e;if(!k||"authenticated"!==m||!(null==h?void 0:null===(e=h.user)||void 0===e?void 0:e.id))return;let t="activityNotif:since:".concat(h.user.id),n=async()=>{if("visible"!==document.visibilityState)return;let e=localStorage.getItem(t)||new Date(Date.now()-864e5).toISOString();try{let i=await fetch("/api/activities/notifications?since=".concat(encodeURIComponent(e)));if(i.ok){var n,a;let e=await i.json(),t=(n=e.count,a=e.latestStudentName,n<=0?"":1===n&&a?"".concat(a," 학생이 자율\xb7진로 활동을 제출\xb7수정했어요"):"학생 ".concat(n,"명이 자율\xb7진로 활동을 제출\xb7수정했어요"));t&&W(t,"info")}localStorage.setItem(t,new Date().toISOString())}catch(e){}};n();let a=setInterval(n,72e5),i=()=>{"visible"===document.visibilityState&&n()};return document.addEventListener("visibilitychange",i),()=>{clearInterval(a),document.removeEventListener("visibilitychange",i)}},[k,m,null==h?void 0:null===(s=h.user)||void 0===s?void 0:s.id,W]);let et=(0,i.useCallback)(e=>{R(e),$.MU.selection(),E("student-management")},[E]);return(0,i.useEffect)(()=>{let e=e=>{var t,n;(null===(t=e.detail)||void 0===t?void 0:t.studentId)&&(O(null!==(n=e.detail.tab)&&void 0!==n?n:null),et(e.detail.studentId))};return window.addEventListener("navigate-to-student",e),()=>window.removeEventListener("navigate-to-student",e)},[et]),(0,a.jsx)(e7,{enabled:!!(null==u?void 0:u.user),currentView:g,children:(0,a.jsxs)(e$.L,{children:[(0,a.jsx)(ej,{onNavigate:Y}),(0,a.jsx)(to,{}),(0,a.jsxs)("main",{className:"app-viewport h-screen h-[100dvh] min-h-[100dvh] w-full flex bg-[#fafaf9] dark:bg-[#09090b] overflow-hidden font-sans text-zinc-900 dark:text-[#fafafa]",children:[(0,a.jsx)("div",{className:"hidden md:flex relative z-20",children:(0,a.jsx)(ei,{currentView:k?g:"",onMenuClick:Y,onMenuHover:eD.T,session:p})}),(0,a.jsxs)("section",{className:"flex-1 h-full relative flex flex-col bg-[#fafaf9] dark:bg-[#09090b] sm:pt-0 min-w-0 overflow-x-hidden",children:[(0,a.jsx)(e8,{currentView:g}),"hub"!==g&&(0,a.jsx)("div",{className:"md:hidden shrink-0",style:{height:"calc(44px + env(safe-area-inset-top, 0px))"}}),(0,a.jsx)(eX,{isAuthenticated:"authenticated"===m}),!(null==p?void 0:p.user)&&(0,a.jsxs)("header",{className:"w-full border-b border-zinc-200 dark:border-zinc-800 bg-[#fafaf9] dark:bg-[#09090b] flex items-center justify-between px-6 shrink-0",style:{height:"hub"===g?"calc(".concat(48,"px + env(safe-area-inset-top, 0px))"):"".concat(48,"px"),paddingTop:"hub"===g?"env(safe-area-inset-top, 0px)":void 0},children:[(0,a.jsx)("span",{className:"text-sm text-zinc-500 font-medium",children:"아래는 사용 예시 화면입니다"}),(0,a.jsx)("button",{onClick:()=>S(!0),className:"px-4 py-2 bg-zinc-900 hover:bg-zinc-800 text-white text-sm font-semibold rounded-full shadow-lg transition-colors mb-[1px]",children:"시작하기"})]}),(0,a.jsxs)("div",{className:"flex-1 overflow-hidden relative",children:[N&&(0,a.jsx)("div",{hidden:!(c="hub"===g),"aria-hidden":!c,className:"absolute inset-0","data-hub-keep-alive":"true","data-hub-active":c?"true":"false",ref:e=>{var t;return t="hub"===g,void(e&&(t?e.removeAttribute("inert"):e.setAttribute("inert","")))},children:(0,a.jsx)(eC,{fallbackMessage:"메뉴를 불러올 수 없습니다",children:(0,a.jsx)(tL,{})})}),!(N&&"hub"===g)&&(0,a.jsx)("div",{className:(0,I.cn)("h-full","hub"!==g&&"view-fade-in"),children:(()=>
1{if(!k)return(0,a.jsx)(tv,{});switch(g){case"hub":if(N)return null;return(0,a.jsx)(eC,{fallbackMessage:"메뉴를 불러올 수 없습니다",children:(0,a.jsx)(tL,{})});case"dashboard":return(0,a.jsx)(eC,{fallbackMessage:"대시보드를 불러올 수 없습니다",children:(0,a.jsx)(e3.Z,{children:(0,a.jsx)(tb,{onNavigateToStudent:et})})});case"work-schedule":return(0,a.jsx)(eC,{fallbackMessage:"일정 관리를 불러올 수 없습니다",children:(0,a.jsx)(tz,{})});case"student-management":return(0,a.jsx)(eC,{fallbackMessage:"학생 관리를 불러올 수 없습니다",children:(0,a.jsx)(tg,{initialStudentId:F,initialTab:P,onStudentIdConsumed:()=>{R(null),O(null)}})});case"attendance":return(0,a.jsx)(eC,{fallbackMessage:"출결 관리를 불러올 수 없습니다",children:(0,a.jsx)(tw,{})});case"seating":return(0,a.jsx)(eC,{fallbackMessage:"자리 배치를 불러올 수 없습니다",children:(0,a.jsx)(tk,{})});case"nametag":return(0,a.jsx)(eC,{fallbackMessage:"이름표를 불러올 수 없습니다",children:(0,a.jsx)(tC,{})});case"cleaning":return(0,a.jsx)(eC,{fallbackMessage:"청소 구역을 불러올 수 없습니다",children:y?(0,a.jsx)("div",{className:"h-full",children:(0,a.jsx)(tF,{})}):(0,a.jsx)("div",{className:"h-full",children:(0,a.jsx)(tj,{})})});case"activity":return(0,a.jsx)(eC,{fallbackMessage:"자율\xb7진로를 불러올 수 없습니다",children:y?(0,a.jsx)("div",{className:"h-full",children:(0,a.jsx)(tZ,{})}):(0,a.jsx)("div",{className:"h-full",children:(0,a.jsx)(ty,{})})});case"random-picker":return(0,a.jsx)(eC,{fallbackMessage:"랜덤 뽑기를 불러올 수 없습니다",children:y?(0,a.jsx)("div",{className:"h-full",children:(0,a.jsx)(tR,{})}):(0,a.jsx)("div",{className:"h-full",children:(0,a.jsx)(tS,{})})});case"survey":return(0,a.jsx)(eC,{fallbackMessage:"설문 조사를 불러올 수 없습니다",children:(0,a.jsx)(tD,{})});case"work-notes":return(0,a.jsx)(eC,{fallbackMessage:"업무 노트를 불러올 수 없습니다",children:(0,a.jsx)(tM,{})});case"evaluation-record":return(0,a.jsx)(eC,{fallbackMessage:"평가 기록을 불러올 수 없습니다",children:(0,a.jsx)(tN,{})});case"behavior-record":return(0,a.jsx)(eC,{fallbackMessage:"행동특성 기록을 불러올 수 없습니다",children:(0,a.jsx)(tE,{})});case"plans":return(0,a.jsx)(eC,{fallbackMessage:"요금제 안내를 불러올 수 없습니다",children:(0,a.jsx)(tI,{})});case"checkout":return(0,a.jsx)(eC,{fallbackMessage:"결제 페이지를 불러올 수 없습니다",children:(0,a.jsx)(tA,{})});case"attendance-print":return(0,a.jsx)(eC,{fallbackMessage:"출결 출력을 불러올 수 없습니다",children:(0,a.jsx)(tB,{})});case"settings":return(0,a.jsx)(eC,{fallbackMessage:"설정을 불러올 수 없습니다",children:(0,a.jsx)(tT,{})});default:return(0,a.jsx)(eC,{fallbackMessage:"대시보드를 불러올 수 없습니다",children:(0,a.jsx)(tb,{})})}})()},g)]})]})]}),(0,a.jsx)(D,{isOpen:C,onClose:()=>S(!1)}),(0,a.jsx)(eI,{}),A&&(0,a.jsx)(eH,{announcementId:A,onClose:()=>B(null),onNavigate:()=>Y("attendance")}),T.length>0&&(0,a.jsx)(eJ,{replies:T,onClose:()=>Z([])}),_&&(0,a.jsx)(eR,{daysLeft:q,expiryDate:null!==(d=null==h?void 0:null===(o=h.user)||void 0===o?void 0:o.paidUntil)&&void 0!==d?d:new Date(Date.now()+864e5*q).toISOString(),onExtend:Q,onClose:ee}),M&&(0,a.jsx)(eY.Z,{children:(0,a.jsx)("div",{className:"modal-viewport z-[100000] flex items-center justify-center p-4 bg-black/50 backdrop-blur-sm animate-in fade-in duration-200",children:(0,a.jsx)("div",{className:"bg-white dark:bg-[#18181b] border border-zinc-200 dark:border-zinc-800 rounded-2xl w-full max-w-sm shadow-2xl overflow-hidden animate-in zoom-in-95 duration-200",children:(0,a.jsxs)("div",{className:"p-6 text-center",children:[(0,a.jsx)("div",{className:"w-16 h-16 bg-blue-50 dark:bg-blue-900/20 rounded-full flex items-center justify-center mx-auto mb-4",children:(0,a.jsx)(td.Z,{size:32,className:"text-blue-500"})}),(0,a.jsx)("h2",{className:"text-xl font-bold text-zinc-900 dark:text-white mb-2",children:"결제가 완료되었습니다!"}),(0,a.jsx)("p",{className:"text-sm text-zinc-500 mb-8",children:"학교 관리 페이지로 이동하시겠습니까?"}),(0,a.jsxs)("div",{className:"flex gap-3",children:[(0,a.jsx)("button",{onClick:()=>L(!1),className:"flex-1 py-3 px-4 bg-zinc-100 hover:bg-zinc-200 dark:bg-zinc-800 dark:hover:bg-zinc-700 text-zinc-700 dark:text-zinc-300 font-medium rounded-xl transition-colors text-sm",children:"나중에"}),(0,a.jsx)("button",{onClick:async()=>{L(!1),await x(),Y("dashboard")},className:"flex-1 py-3 px-4 bg-[#007AFF] hover:bg-[#0066DD] text-white font-medium rounded-xl transition-colors text-sm",children:"이동하기"})]})]})})})})]})})}},92184:function(e,t,n){"use strict";n.d(t,{default:function(){return C}});var a=n(57437),i=n(29),r=n.n(i),l=n(2265),s=n(30166),o=n(33145),d=n(27526),c=n(12618),u=n(46954),x=n(80726),h=n(93448),m=n(83444),f=n(92846);function p(e){let{provider:t,icon:n,label:i,onPress:r,loading:s=!1,disabled:o=!1,style:d}=e,[c,u]=(0,l.useState)(!1);
1return(0,a.jsxs)("button",{type:"button","data-provider":t,onClick:()=>{var e;(e={disabled:o,loading:s}).disabled||e.loading||((0,f.Jn)(),r())},onPointerDown:()=>u(!0),onPointerUp:()=>u(!1),onPointerCancel:()=>u(!1),onPointerLeave:()=>u(!1),disabled:o||s,"aria-busy":s,style:{height:"48px",borderRadius:"8px",width:"100%",display:"flex",alignItems:"center",gap:"10px",padding:"0 14px",fontSize:"14px",fontWeight:500,border:"1px solid var(--naemo-line)",backgroundColor:c?"var(--naemo-surface-pressed)":"var(--naemo-surface)",color:"var(--naemo-ink)",transition:"background-color 100ms linear",opacity:o&&!s?.4:1,...d},children:[(0,a.jsx)("span",{style:{flexShrink:0,display:"flex"},"aria-hidden":"true",children:n}),(0,a.jsx)("span",{style:{flex:1,textAlign:"center"},children:s?"연결 중...":i}),(0,a.jsx)("span",{style:{flexShrink:0,width:18},"aria-hidden":"true"})]})}var v=n(45007);let b=[{id:"google",label:"Google로 계속하기",icon:(0,a.jsx)(m._8,{})}],g=[{id:"naver",label:"Naver로 계속하기",icon:(0,a.jsx)(m.bg,{})},{id:"kakao",label:"Kakao로 계속하기",icon:(0,a.jsx)(m.Pv,{})}],w={id:"apple",label:"Apple로 계속하기",icon:(0,a.jsx)(m.qw,{})};function k(e){let{appleLoginEnabled:t=!1,preferAppleFirst:n=!1,nativeIos:i=!1}=e,[r,s]=(0,l.useState)(null),[o,h]=(0,l.useState)(!1),m=t?n?[w,...b]:[...b,w]:b,f=async e=>{s(e);try{await (0,d.zB)(e,(0,c.a)(i))}catch(e){s(null)}};return(0,a.jsxs)("div",{className:"naemo-landing",style:{position:"relative",height:"100%",display:"flex",flexDirection:"column",justifyContent:"center",padding:"0 24px",paddingBottom:72,backgroundColor:"var(--naemo-paper)",color:"var(--naemo-ink)",textAlign:"center"},children:[(0,a.jsxs)("div",{style:{display:"flex",flexDirection:"column",alignItems:"center"},children:[(0,a.jsx)(j,{}),(0,a.jsxs)("h1",{style:{marginTop:12,display:"flex",alignItems:"center",gap:10,fontSize:24,lineHeight:"32px",fontWeight:600,letterSpacing:"0.06em"},children:[(0,a.jsx)(y,{}),"NAEMO"]}),i&&(0,a.jsxs)("div",{"data-testid":"landing-ios-s1",style:{marginTop:16,maxWidth:320},children:[(0,a.jsx)("p",{"data-testid":"landing-ios-helper",style:{margin:0,fontSize:14,lineHeight:"20px",color:"var(--naemo-muted)"},children:"학생 명단과 학급 첫 설정은 웹에서 해주세요."}),(0,a.jsx)("p",{"data-testid":"landing-ios-returning",style:{margin:"8px 0 0",fontSize:14,lineHeight:"20px",color:"var(--naemo-muted)"},children:"이미 웹에서 쓰시나요? 아래에서 로그인하세요."})]}),(0,a.jsxs)("div",{style:{marginTop:40,width:"100%",display:"flex",flexDirection:"column",gap:8},children:[m.map(e=>(0,a.jsx)(p,{provider:e.id,icon:e.icon,label:e.label,loading:r===e.id,disabled:null!==r&&r!==e.id,onPress:()=>void f(e.id)},e.id)),(0,a.jsx)("button",{type:"button","data-testid":"landing-more-methods","aria-expanded":o,onClick:()=>h(e=>!e),style:{height:40,width:"100%",background:"none",border:"none",fontSize:13,color:"var(--naemo-muted)",textDecoration:"underline",textUnderlineOffset:3},children:"다른 방법으로 로그인"}),o&&g.map(e=>(0,a.jsx)(p,{provider:e.id,icon:e.icon,label:e.label,loading:r===e.id,disabled:null!==r&&r!==e.id,onPress:()=>void f(e.id)},e.id)),i?(0,a.jsx)("button",{type:"button","data-testid":"landing-web-start",onClick:()=>{(0,u.R)(x.hI)},style:{marginTop:4,height:44,width:"100%",background:"none",border:"none",fontSize:14,color:"var(--naemo-muted)",textDecoration:"underline",textUnderlineOffset:3},children:"웹에서 먼저 시작하기"}):(0,a.jsx)("button",{type:"button","data-testid":"landing-guest",onClick:()=>{window.location.href="/?guest=1"},style:{marginTop:4,height:44,width:"100%",background:"none",border:"none",fontSize:14,color:"var(--naemo-muted)",textDecoration:"underline",textUnderlineOffset:3},children:"로그인 없이 둘러보기"})]})]}),(0,a.jsxs)("p",{"data-testid":"landing-legal",style:{position:"absolute",left:24,right:24,bottom:"calc(env(safe-area-inset-bottom) + 20px)",fontSize:12,lineHeight:"18px",color:"var(--naemo-muted)"},children:["시작하면 내모의"," ",(0,a.jsx)("a",{href:"/terms",style:{textDecoration:"underline"},children:"이용약관"})," ","및"," ",(0,a.jsx)("a",{href:"/privacy",style:{textDecoration:"underline"},children:"개인정보 처리방침"}),"에 동의하게 됩니다."]}),(0,a.jsx)("style",{children:"\n                .naemo-landing {\n                    --naemo-paper: #ffffff;\n                    --naemo-ink: #1d1715;\n                    --naemo-muted: #787774;\n                    --naemo-line: #E9E9E7;\n                    --naemo-surface: #ffffff;\n                    --naemo-surface-pressed: #F1F1EF;\n                }\n                .dark .naemo-landing {\n                    --naemo-paper: #191919;\n                    --naemo-ink: #EDEDEC;\n                    --naemo-muted: #9B9B9B;\n                    --naemo-line: #2F2F2F;\n                    --naemo-surface: #191919;\n                    --naemo-surface-pressed: #262626;\n                }\n                /* 앱 전역의 버튼 눌림 물결 효과는 이 화면에서 쓰지 않는다.\n                   버튼 자신의 ë°°ê²½ 전환 하ë
1‚˜ë¡œ 충분하다. */\n                .naemo-landing button::after {\n                    content: none;\n                }\n                /* 카카오 심볼은 짙은 갈색이라 어두운 배경에서 사라진다.\n                   이 화면 안에서만 노란 심볼로 바꾼다 — 데스크톱 로그인 패널이\n                   쓰는 같은 아이콘은 밝은 배경이므로 건드리지 않는다. */\n                .dark .naemo-landing .kakao-symbol {\n                    fill: #FEE500;\n                }\n            "})]})}function j(){return(0,a.jsx)("div",{"data-testid":"landing-rocket","aria-hidden":"true",style:{width:112,height:112,display:"flex",alignItems:"center",justifyContent:"center"},children:(0,a.jsx)(v.w,{src:"/lordicons/rocket-loop.json",size:112,trigger:"loop",originalColors:!0})})}function y(){return(0,a.jsx)("svg",{"data-testid":"landing-mark",width:"28",height:"28",viewBox:"0 0 64 64",fill:"none","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M32 19L45 32L32 45L19 32Z",stroke:"var(--naemo-ink)",strokeWidth:"5",strokeLinejoin:"round"})})}let z=(0,s.default)(()=>n.e(101).then(n.bind(n,90101)),{loadableGenerated:{webpack:()=>[90101]},ssr:!1});function N(e){let{onClick:t,disabled:n,loading:i,icon:r,label:l}=e;return(0,a.jsxs)("button",{onClick:t,disabled:n,className:(0,h.cn)("w-full h-[46px] flex items-center gap-3 px-5 rounded-xl","border border-[#E5E4E0] bg-white hover:bg-[#f8f8f5]","text-[13.5px] font-medium text-[#1d1715]","transition duration-150","disabled:opacity-50 disabled:cursor-not-allowed","shadow-[0_1px_2px_rgba(0,0,0,0.06)]"),children:[(0,a.jsx)("span",{className:"shrink-0",children:r}),(0,a.jsx)("span",{className:"flex-1 text-center",children:i?"연결 중...":l})]})}function E(){return(0,a.jsxs)("div",{className:"flex-1 relative overflow-hidden animate-fadeSlideIn",children:[(0,a.jsx)(o.default,{src:"/images/brand-gradient.png",alt:"",fill:!0,priority:!0,style:{objectFit:"cover"}}),(0,a.jsx)(z,{})]})}function C(e){let{appleLoginEnabled:t=!1,preferAppleFirst:n=!1,nativeIos:i=!1}=e,[s,h]=(0,l.useState)(!1),[f,p]=(0,l.useState)(null),[v,b]=(0,l.useState)(!1),g=async e=>{h(!0),p(e);try{await (0,d.zB)(e,(0,c.a)(i))}catch(e){h(!1),p(null)}};return(0,a.jsxs)("div",{style:{backgroundColor:"#fafaf9",color:"#1d1715"},className:"jsx-2d8ce714dfc9baaa app-viewport h-screen w-full flex overflow-hidden font-sans",children:[(0,a.jsx)("div",{className:"jsx-2d8ce714dfc9baaa md:hidden w-full h-full",children:(0,a.jsx)(k,{appleLoginEnabled:t,preferAppleFirst:n,nativeIos:i})}),(0,a.jsxs)("div",{className:"jsx-2d8ce714dfc9baaa hidden md:flex flex-col flex-1 min-w-0 overflow-hidden relative",children:[(0,a.jsx)("div",{style:{background:"linear-gradient(to left, rgba(0,0,0,0.055) 0%, transparent 100%)",zIndex:20},className:"jsx-2d8ce714dfc9baaa absolute right-0 top-0 bottom-0 w-8 pointer-events-none"}),(0,a.jsx)("div",{className:"jsx-2d8ce714dfc9baaa flex-1 flex min-h-0 overflow-hidden",children:(0,a.jsx)(E,{})})]}),(0,a.jsxs)("div",{style:{backgroundColor:"#ffffff",boxShadow:"none"},className:"jsx-2d8ce714dfc9baaa hidden md:flex md:flex-none md:w-[400px] shrink-0 flex-col justify-center px-10",children:[(0,a.jsxs)("div",{className:"jsx-2d8ce714dfc9baaa mb-7",children:[(0,a.jsx)("h2",{style:{color:"#1d1715"},className:"jsx-2d8ce714dfc9baaa text-[24px] font-bold mb-1.5",children:"내모 시작하기"}),(0,a.jsxs)("p",{style:{color:"#787774"},className:"jsx-2d8ce714dfc9baaa flex items-center gap-1 text-[13.5px]",children:[(0,a.jsx)(o.default,{src:"/icons/landing-shield.svg",alt:"",width:14,height:14,className:"shrink-0","aria-hidden":!0}),"에듀집 및 학습지원 소프트웨어 등록"]}),(0,a.jsx)("p",{style:{color:"#787774"},className:"jsx-2d8ce714dfc9baaa text-[13.5px]",children:"무료로 시작 \xb7 개인 또는 단체 사용 가능"}),i&&(0,a.jsxs)("div",{"data-testid":"landing-ios-s1-desktop",className:"jsx-2d8ce714dfc9baaa mt-4 space-y-2",children:[(0,a.jsx)("p",{"data-testid":"landing-ios-helper-desktop",style:{color:"#787774"},className:"jsx-2d8ce714dfc9baaa text-[13.5px] leading-5",children:"학생 명단과 학급 첫 설정은 웹에서 해주세요."}),(0,a.jsx)("p",{"data-testid":"landing-ios-returning-desktop",style:{color:"#787774"},className:"jsx-2d8ce714dfc9baaa text-[13.5px] leading-5",children:"이미 웹에서 쓰시나요? 아래에서 로그인하세요."})]})]}),(0,a.jsxs)("div",{className:"jsx-2d8ce714dfc9baaa flex flex-col gap-2.5",children:[(0,a.jsx)(N,{onClick:()=>g("google"),disabled:s,loading:"google"===f,icon:(0,a.jsx)(m._8,{}),label:"Google로 로그인"}),t&&(0,a.jsx)(N,{onClick:()=>g("apple"),disabled:s,loading:"apple"===f,icon:(0,a.jsx)(m.qw,{}),label:"Apple로 로그인"}),(0,a.jsx)("button",{type:"button","data-testid":"landing-more-methods","aria-expanded":v,onClick:()=>b(e=>!e),style:{color:"#787774",background:"none",border:"none"},className:"jsx-2d8ce714dfc9baaa w-full h-10 text-[13px] underline underline-offset-2 transition",children:"다른 방법으로 로그인"}),v&&(0,a.jsxs)(a.Fragment,{children:[(0,a.jsx)(N,{onClick:()=>g("naver"),disabled:s,loading:"naver"===f,icon:(0,a.jsx)(m.bg,{}),label:"Naver로 로그인"}),(0,a.jsx)(N,{onClick:()=>g("kakao"),disabled:s,loading:"kakao"===f,icon:(0,a.jsx)(m.Pv,{}),label:"Kakao로 로그인"})]})]}),(0,a.jsxs)("div",{className:"jsx-2d8ce714dfc9baaa hidden md:block",children:[(0,a.jsxs)("div",{className:"jsx-2d8ce714dfc9baaa flex items-center gap-3 my-6",children:[(0,a.jsx)("div",{style:{backgroundColor:"#E5E4E0"},className:"jsx-2d8ce714dfc9baaa flex-1 h-px"}),(0,a.jsx)("span",{style:{color:"#B0B8C1"},className:"jsx-2d8ce714dfc9baaa text-[12.5px]",children:"또는"}),(0,a.jsx)("div",{style:{backgroundColor:"#E5E4E0"},className:"jsx-2d8ce714dfc9baaa flex-1 h-px"})]}),i?(0,a.jsx)("button",{type:"button","data-testid":"landing-web-start-desktop",onClick:()=>{(0,u.R)(x.hI)},style:{border:"1px solid #E5E4E0",backgroundColor:"transparent",color:"#787774"},className:"jsx-2d8ce714dfc9baaa w-full h-[44px] flex items-center justify-center rounded-xl text-[13px] transition duration-150",children:"웹에서 먼저 시작하기"}):(0,a.jsx)("button",{type:"button","data-testid":"landing-guest-desktop",onClick:()=>{window.location.href="/?guest=1"},style:{border:"1px solid #E5E4E0",backgroundColor:"transparent",color:"#787774"},onMouseEnter:e=>{e.currentTarget.style.backgroundColor="#f2f2ef",e.currentTarget.style.color="#1d1715"},onMouseLeave:e=>{e.currentTarget.style.backgroundColor="transparent",e.currentTarget.style.color="#787774"},className:"jsx-2d8ce714dfc9baaa w-full h-[44px] flex items-center justify-center rounded-xl text-[13px] transition duration-150",children:"로그인 없이 둘러보기"})]}),(0,a.jsxs)("p",{style:{color:"#B0B8C1"},className:"jsx-2d8ce714dfc9baaa mt-6 text-[11px] leading-relaxed",children:["시작하면 내모의"," ",(0,a.jsx)("a",{href:"/terms",style:{color:"#787774"},className:"jsx-2d8ce714dfc9baaa underline underline-offset-2 transition-colors hover:text-[#1d1715]",children:"이용약관"})," ","및"," ",(0,a.jsx)("a",{href:"/privacy",style:{color:"#787774"},className:"jsx-2d8ce714dfc9baaa underline underline-offset-2 transition-colors hover:text-[#1d1715]",children:"개인정보 처리방침"}),"에 동의하게 됩니다."]})]}),(0,a.jsx)(r(),{id:"2d8ce714dfc9baaa",children:"@-webkit-keyframes fadeSlideIn{from{opacity:0;-webkit-transform:translatey(8px);transform:translatey(8px)}to{opacity:1;-webkit-transform:translatey(0);transform:translatey(0)}}@-moz-keyframes fadeSlideIn{from{opacity:0;-moz-transform:translatey(8px);transform:translatey(8px)}to{opacity:1;-moz-transform:translatey(0);transform:translatey(0)}}@-o-keyframes fadeSlideIn{from{opacity:0;-o-transform:translatey(8px);transform:translatey(8px)}to{opacity:1;-o-transform:translatey(0);transform:translatey(0)}}@keyframes fadeSlideIn{from{opacity:0;-webkit-transform:translatey(8px);-moz-transform:translatey(8px);-o-transform:translatey(8px);transform:translatey(8px)}to{opacity:1;-webkit-transform:translatey(0);-moz-transform:translatey(0);-o-transform:translatey(0);transform:translatey(0)}}.animate-fadeSlideIn.jsx-2d8ce714dfc9baaa{-webkit-animation:fadeSlideIn.3s ease-out forwards;-moz-animation:fadeSlideIn.3s ease-out forwards;-o-animation:fadeSlideIn.3s ease-out forwards;animation:fadeSlideIn.3s ease-out forwards}"})]})}},64954:function(e,t,n){"use strict";n.d(t,{Z:function(){return l}});var a=n(57437);n(2265);var i=n(93448),r=n(51028);function l(e){let{title:t,description:n,action:l,badge:s,size:o="md",className:d="",iconSize:c,animate:u=!0}=e,x="sm"===o,h="lg"===o;return(0,a.jsxs)("div",{className:(0,i.cn)("group relative flex flex-col items-center justify-center text-center select-none",x?"py-8 px-4":h?"py-20 px-8"
1:"py-16 px-6",d),children:[s&&(0,a.jsx)("span",{className:"mb-3.5 inline-flex items-center px-3 py-1 rounded-full text-xs font-medium bg-zinc-100 dark:bg-white/[0.06] text-zinc-600 dark:text-zinc-300 border border-zinc-200/80 dark:border-white/10",children:s}),(0,a.jsx)("div",{className:(0,i.cn)("relative flex items-center justify-center transition-transform duration-300 ease-out",u&&"group-hover:scale-105",x?"mb-3":h?"mb-5":"mb-4"),children:(0,a.jsx)(r.w,{size:null!=c?c:x?48:h?80:64,showGlow:!1})}),(0,a.jsx)("h3",{className:(0,i.cn)("font-bold text-zinc-800 dark:text-zinc-100 tracking-tight",x?"text-sm":h?"text-[20px]":"text-base"),children:t}),n&&(0,a.jsx)("div",{className:(0,i.cn)("text-zinc-500 dark:text-zinc-400 font-normal leading-relaxed",x?"text-xs mt-1.5 max-w-xs":h?"text-[14px] mt-2 max-w-lg":"text-[13px] mt-1.5 max-w-md"),children:n}),l&&(0,a.jsx)("div",{className:(0,i.cn)("flex items-center justify-center",x?"mt-4":"mt-6"),children:l})]})}},48313:function(e,t,n){"use strict";n.d(t,{Z:function(){return r}});var a=n(2265),i=n(54887);function r(e){let{children:t}=e,[n,r]=(0,a.useState)(!1);return(0,a.useEffect)(()=>(r(!0),()=>r(!1)),[]),n?(0,i.createPortal)(t,document.body):null}},51028:function(e,t,n){"use strict";n.d(t,{w:function(){return r}});var a=n(57437),i=n(2265);function r(e){let{size:t=64,accentColor:n="#d97757",showGlow:r=!0,className:l="",...s}=e,o=i.useId(),d=i.useId();return(0,a.jsxs)("svg",{xmlns:"http://www.w3.org/2000/svg",width:t,height:t,viewBox:"0 0 430 430",fill:"none",className:l,...s,children:[(0,a.jsxs)("defs",{children:[(0,a.jsxs)("linearGradient",{id:d,x1:"90",y1:"90",x2:"300",y2:"300",gradientUnits:"userSpaceOnUse",children:[(0,a.jsx)("stop",{offset:"0%",stopColor:n,stopOpacity:"0.15"}),(0,a.jsx)("stop",{offset:"50%",stopColor:"#38bdf8",stopOpacity:"0.08"}),(0,a.jsx)("stop",{offset:"100%",stopColor:n,stopOpacity:"0.03"})]}),r&&(0,a.jsx)("filter",{id:o,x:"-20%",y:"-20%",width:"140%",height:"140%",children:(0,a.jsx)("feDropShadow",{dx:"0",dy:"4",stdDeviation:"8",floodColor:n,floodOpacity:"0.25"})})]}),(0,a.jsxs)("g",{strokeLinecap:"round",strokeLinejoin:"round",strokeMiterlimit:"14",children:[(0,a.jsx)("circle",{cx:"191",cy:"192",r:"102",fill:"url(#".concat(d,")"),className:"transition-colors duration-300"}),(0,a.jsx)("path",{className:"stroke-zinc-700 dark:stroke-zinc-200 transition-colors duration-200",strokeWidth:"13",d:"M293.7 89.4c56.7 56.7 56.7 148.6 0 205.3s-148.6 56.7-205.3 0-56.7-148.7 0-205.3 148.6-56.7 205.3 0"}),(0,a.jsx)("path",{stroke:n,strokeWidth:"13",d:"M82.1 147.5c5.7-14.1 14.2-27.3 25.7-38.7 13.7-13.7 29.9-23.2 47.1-28.7",filter:r?"url(#".concat(o,")"):void 0}),(0,a.jsx)("path",{className:"stroke-zinc-700 dark:stroke-zinc-200 transition-colors duration-200",strokeWidth:"15",d:"m296.1 296.6 88 86.5"})]})]})}},58346:function(e,t,n){"use strict";n.d(t,{d:function(){return l}});var a=n(57437),i=n(93448);let r={building:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cg%20fill%3D%22%23121331%22%3E%3Cpath%20d%3D%22M8.25%2010a.75.75%200%200%201%20.75.75v1.5a.75.75%200%200%201-1.5%200v-1.5a.75.75%200%200%201%20.75-.75M12%2010a.75.75%200%200%201%20.75.75v1.5a.75.75%200%200%201-1.5%200v-1.5A.75.75%200%200%201%2012%2010m3.75%200a.75.75%200%200%201%20.75.75v1.5a.75.75%200%200%201-1.5%200v-1.5a.75.75%200%200%201%20.75-.75m-7.5-4.5a.75.75%200%200%201%20.75.75v1.5a.75.75%200%200%201-1.5%200v-1.5a.75.75%200%200%201%20.75-.75m3.75%200a.75.75%200%200%201%20.75.75v1.5a.75.75%200%200%201-1.5%200v-1.5A.75.75%200%200%201%2012%205.5m3.75%200a.75.75%200%200%201%20.75.75v1.5a.75.75%200%200%201-1.5%200v-1.5a.75.75%200%200%201%20.75-.75%22/%3E%3Cpath%20fill-rule%3D%22evenodd%22%20d%3D%22M18.25%202c.966%200%201.75.784%201.75%201.75v16.5A1.75%201.75%200%200%201%2018.25%2022H5.75A1.75%201.75%200%200%201%204%2020.25V3.75C4%202.784%204.784%202%205.75%202zM5.75%203.5a.25.25%200%200%200-.25.25v16.5c0%20.138.112.25.25.25H9v-4.75a.75.75%200%200%201%20.75-.75h4.5a.75.75%200%200%201%20.75.75v4.75h3.25a.25.25%200%200%200%20.25-.25V3.75a.25.25%200%200%200-.25-.25zm4.75%2017h3v-4h-3z%22%20clip-rule%3D%22evenodd%22/%3E%3C/g%3E%3C/svg%3E",cross:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23121331%22%20d%3D%22M19.22%203.72a.75.75%200%201%201%201.06%201.06L13.06%2012l7.22%207.22.052.056a.75.75%200%200%201-1.056%201.056l-.056-.052L12%2013.06l-7.22%207.22a.75.75%200%201%201-1.06-1.06L10.94%2012%203.72%204.78a.75.75%200%201%201%201.06-1.06L12%2010.94z%22/%3E%3C/svg%3E",magnifier:"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23121331%22%20d%3D%22M16.334%204.667a8.25%208.25%200%200%201%20.506%2011.114l3.94%203.94.027.027a.75.75%200%200%201-1.06%201.06l-.027-.027-3.94-3.94a8.25%208.25%200%201%201%20.554-12.174M5.727%205.728a6.75%206.75%200%201%200%209.546%209.546%206.75%206.75%200%200%200-9.54
16-9.546%22/%3E%3C/svg%3E","student-cap":"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cpath%20fill%3D%22%23121331%22%20fill-rule%3D%22evenodd%22%20d%3D%22M11.12%202.144a1.75%201.75%200%200%201%201.76%200l8.76%205.092c.516.3.801.798.858%201.318q.011.06.012.124v5.572a.75.75%200%200%201-1.5%200v-3.622L19%2011.797v5.843c0%20.656-.367%201.257-.95%201.556l-5.25%202.695a1.75%201.75%200%200%201-1.598%200l-5.25-2.695c-.584-.3-.951-.9-.952-1.556v-5.843l-2.64-1.534c-1.16-.675-1.16-2.352%200-3.027zm1.76%2013.212a1.75%201.75%200%200%201-1.76%200L6.5%2012.669v4.97a.25.25%200%200%200%20.136.223l5.25%202.694a.25.25%200%200%200%20.229%200l5.25-2.695a.25.25%200%200%200%20.136-.221v-4.97zM12.124%203.44a.25.25%200%200%200-.25%200l-8.76%205.093a.25.25%200%200%200%200%20.433l8.76%205.093a.25.25%200%200%200%20.252%200l8.76-5.093a.25.25%200%200%200%200-.433z%22%20clip-rule%3D%22evenodd%22/%3E%3C/svg%3E","trash-bin":"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cg%20fill%3D%22%23121331%22%3E%3Cpath%20d%3D%22M9.75%209a.75.75%200%200%201%20.75.75v7.5a.75.75%200%200%201-1.5%200v-7.5A.75.75%200%200%201%209.75%209m4.5%200a.75.75%200%200%201%20.75.75v7.5a.75.75%200%200%201-1.5%200v-7.5a.75.75%200%200%201%20.75-.75%22/%3E%3Cpath%20fill-rule%3D%22evenodd%22%20d%3D%22M12%201a4%204%200%200%201%203.929%203.25h4.321a.75.75%200%200%201%200%201.5h-.75v13.5A2.75%202.75%200%200%201%2016.75%2022h-9.5a2.75%202.75%200%200%201-2.75-2.75V5.75h-.75a.75.75%200%200%201%200-1.5h4.321A4%204%200%200%201%2012%201M6%2019.25c0%20.69.56%201.25%201.25%201.25h9.5c.69%200%201.25-.56%201.25-1.25V5.75H6zM12%202.5a2.5%202.5%200%200%200-2.385%201.75h4.77A2.5%202.5%200%200%200%2012%202.5%22%20clip-rule%3D%22evenodd%22/%3E%3C/g%3E%3C/svg%3E","trending-up":"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cg%20stroke%3D%22%23121331%22%20stroke-linecap%3D%22round%22%20stroke-linejoin%3D%22round%22%20stroke-width%3D%221.5%22%3E%3Cpath%20d%3D%22M15.75%206.75h5.5v5.5%22/%3E%3Cpath%20d%3D%22m2.75%2018.25%206.63-6.67%203.54%203.55%208.33-8.38%22/%3E%3C/g%3E%3C/svg%3E","trophy-star":"data:image/svg+xml,%3Csvg%20xmlns%3D%22http%3A//www.w3.org/2000/svg%22%20width%3D%2224%22%20height%3D%2224%22%20fill%3D%22none%22%20viewBox%3D%220%200%2024%2024%22%3E%3Cg%20fill%3D%22%23121331%22%3E%3Cpath%20d%3D%22M11.765%205.35a.262.262%200%200%201%20.47%200l.615%201.244%201.373.199a.263.263%200%200%201%20.145.45l-.993.967.234%201.368a.262.262%200%200%201-.38.276L12%209.21l-1.229.645a.262.262%200%200%201-.38-.276l.234-1.368-.993-.968a.263.263%200%200%201%20.145-.449l1.373-.2z%22/%3E%3Cpath%20fill-rule%3D%22evenodd%22%20d%3D%22M16.25%202c.966%200%201.75.784%201.75%201.75V4h2.25c.966%200%201.75.784%201.75%201.75v1.5A4.75%204.75%200%200%201%2017.25%2012h-.055a6%206%200%200%201-4.445%202.951V16.5h3.5c.966%200%201.75.784%201.75%201.75v2A1.75%201.75%200%200%201%2016.25%2022h-8.5A1.75%201.75%200%200%201%206%2020.25v-2c0-.966.784-1.75%201.75-1.75h3.5v-1.549a6%206%200%200%201-4.447-2.955A4.91%204.91%200%200%201%202%207.086V5.68C2%204.752%202.752%204%203.679%204H6v-.25C6%202.784%206.784%202%207.75%202zm-8.5%2016a.25.25%200%200%200-.25.25v2c0%20.138.112.25.25.25h8.5a.25.25%200%200%200%20.25-.25v-2a.25.25%200%200%200-.25-.25zm0-14.5a.25.25%200%200%200-.25.25V9a4.5%204.5%200%201%200%209%200V3.75a.25.25%200%200%200-.25-.25zM18%209c0%20.5-.063.984-.178%201.448A3.25%203.25%200%200%200%2020.5%207.25v-1.5a.25.25%200%200%200-.25-.25H18zM3.679%205.5a.18.18%200%200%200-.179.179v1.408c0%201.63%201.142%202.99%202.669%203.33A6%206%200%200%201%206%209V5.5z%22%20clip-rule%3D%22evenodd%22/%3E%3C/g%3E%3C/svg%3E"};function l(e){let{name:t,size:n=24,className:l}=e,s=r[t];return s?(0,a.jsx)("img",{src:s,alt:"",width:n,height:n,className:(0,i.cn)("dark:invert",l),draggable:!1}):null}},83444:function(e,t,n){"use strict";n.d(t,{Pv:function(){return l},_8:function(){return i},bg:function(){return r},qw:function(){return s}});var a=n(57437);let i=()=>(0,a.jsxs)("svg",{viewBox:"0 0 24 24",width:"18",height:"18",children:[(0,a.jsx)("path",{d:"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z",fill:"#4285F4"}),(0,a.jsx)("path",{d:"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z",fill:"#34A853"}),(0,a.jsx)("path",{d:"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z",fill:"#FBBC05"}),(0,a.jsx)("path",{d:"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z",fill:"#EA4335"})]}
1),r=()=>(0,a.jsx)("svg",{viewBox:"-3 -3 30 30",width:"18",height:"18",fill:"#03C75A",children:(0,a.jsx)("path",{d:"M16.273 12.845L7.376 0H0v24h7.726V11.156L16.624 24H24V0h-7.727v12.845z"})}),l=()=>(0,a.jsx)("svg",{viewBox:"0 0 24 24",width:"18",height:"18",children:(0,a.jsx)("path",{className:"kakao-symbol",fill:"#381C1D",d:"M12 3C5.9 3 1 6.9 1 11.8c0 2.9 2 5.6 5.2 7.1-.2.7-.8 2.6-.8 3 0 .1 0 .2.1.3.1.1.2.1.4.1.1 0 .2 0 .3-.1 2.7-1.8 3.8-2.6 3.8-2.6.6.1 1.3.2 2 .2 6.1 0 11-3.9 11-8.8S18.1 3 12 3z"})}),s=()=>(0,a.jsx)("svg",{viewBox:"0 0 24 24",width:"18",height:"18",fill:"currentColor","aria-hidden":"true",children:(0,a.jsx)("path",{d:"M17.05 12.79c-.03-2.53 2.07-3.75 2.16-3.81-1.18-1.72-3.01-1.96-3.66-1.98-1.56-.16-3.04.92-3.83.92-.79 0-2.01-.9-3.31-.87-1.7.02-3.27.99-4.14 2.51-1.77 3.06-.45 7.59 1.27 10.07.84 1.21 1.84 2.57 3.15 2.52 1.26-.05 1.74-.82 3.27-.82s1.96.82 3.3.79c1.36-.02 2.22-1.23 3.05-2.45.96-1.4 1.36-2.76 1.38-2.83-.03-.01-2.64-1.01-2.67-4.02M14.6 4.63c.7-.84 1.17-2.01 1.04-3.18-1 .04-2.22.67-2.94 1.51-.64.74-1.2 1.93-1.05 3.07 1.12.09 2.26-.57 2.95-1.4"})})},26862:function(e,t,n){"use strict";n.d(t,{t:function(){return r}});var a=n(2265),i=n(8679);function r(){let[e,t]=(0,a.useState)(!1),[n,r]=(0,a.useState)("app_open"),[l,s]=(0,a.useState)(!1),o=(0,a.useCallback)(()=>{t((0,i.Kw)()),r((0,i.k2)()),s(!0)},[]);return(0,a.useEffect)(()=>{o();let e=()=>
1o();return window.addEventListener("biometric-lock-prefs-changed",e),window.addEventListener("storage",e),()=>{window.removeEventListener("biometric-lock-prefs-changed",e),window.removeEventListener("storage",e)}},[o]),{enabled:e,mode:n,hydrated:l,setEnabled:(0,a.useCallback)(e=>{(0,i.TG)(e),t(e)},[]),setMode:(0,a.useCallback)(e=>{(0,i.qo)(e),r(e)},[])}}},45444:function(e,t,n){"use strict";n.d(t,{X:function(){return i}});var a=n(2265);function i(e){let t=!(arguments.length>1)||void 0===arguments[1]||arguments[1];return(0,a.useCallback)(n=>{t&&"Enter"===n.key&&(n.metaKey||n.ctrlKey)&&(n.nativeEvent.isComposing||229===n.keyCode||(n.preventDefault(),e()))},[e,t])}},58819:function(e,t,n){"use strict";n.d(t,{d:function(){return r}});var a=n(2265),i=n(21652);function r(){let[e,t]=(0,a.useState)(()=>(0,i.UM)());return(0,a.useEffect)(()=>{let e=()=>t((0,i.UM)());e(),window.addEventListener("resize",e),window.addEventListener("orientationchange",e);let n="function"==typeof window.matchMedia?window.matchMedia(i.RS):null;return(null==n?void 0:n.addEventListener)?n.addEventListener("change",e):null==n||n.addListener(e),()=>{window.removeEventListener("resize",e),window.removeEventListener("orientationchange",e),(null==n?void 0:n.removeEventListener)?n.removeEventListener("change",e):null==n||n.removeListener(e)}},[]),e}},39561:function(e,t,n){"use strict";n.d(t,{g:function(){return r}});var a=n(2265),i=n(9244);function r(){let[e,t]=(0,a.useState)(!1);return(0,a.useEffect)(()=>{t((0,i.I)())},[]),e}},8679:function(e,t,n){"use strict";n.d(t,{C4:function(){return h},Io:function(){return o},Kw:function(){return d},TG:function(){return u},c5:function(){return l},k2:function(){return c},qo:function(){return x}});let a="biometricLockEnabled",i="biometricLockMode",r="app_open",l=3e5,s=["student-management","evaluation-record","activity","behavior-record"];function o(e){return s.includes(e)}function d(){try{var e;return e=localStorage.getItem(a),null!=e&&""!==e&&("true"===e||"1"===e)}catch(e){return!1}}function c(){try{var e;return e=localStorage.getItem(i),"sensitive_menus"===e||"app_open"===e?e:r}catch(e){return r}}function u(e){localStorage.setItem(a,e?"true":"false"),window.dispatchEvent(new CustomEvent("biometric-lock-prefs-changed"))}function x(e){localStorage.setItem(i,e),window.dispatchEvent(new CustomEvent("biometric-lock-prefs-changed"))}function h(e){let t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l;return e>=t}},46954:function(e,t,n){"use strict";n.d(t,{R:function(){return r}});var a=n(9244),i=n(80726);async function r(){let e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:i.hI;if((0,a.c)()){let{Browser:t}=await n.e(9090).then(n.bind(n,49090));await t.open({url:e});return}window.open(e,"_blank","noopener,noreferrer")}},16338:function(e,t,n){"use strict";n.d(t,{o:function(){return s}});var a=n(3011),i=n(89134),r=n(83008);let l=null,s=(0,a.U)()((0,i.tJ)((e,t)=>({title:"체크리스트",items:[],isLoaded:!1,isLoading:!1,syncWithDB:async e=>{var n;if((null==e?void 0:null===(n=e.user)||void 0===n?void 0:n.id)&&"teacher-1"!==e.user.id){if(!t().isLoaded){console.warn("[checklist] 서버에서 아직 불러오지 못해 저장을 보류합니다.");return}l&&clearTimeout(l),l=setTimeout(async()=>{l=null;let{title:n,items:a}=t();try{await (0,r.X)("saveChecklist",{title:n,items:a},e)}catch(e){console.error("Failed to sync checklist with DB:",e)}},700)}},flushSync:async e=>{var n;if(!(null==e?void 0:null===(n=e.user)||void 0===n?void 0:n.id)||"teacher-1"===e.user.id||!t().isLoaded||!l)return;clearTimeout(l),l=null;let{title:a,items:i}=t();try{await (0,r.X)("saveChecklist",{title:a,items:i},e)}catch(e){console.error("Failed to flush checklist to DB:",e)}},loadFromDB:async n=>{if(n&&"teacher-1"!==n.user.id&&!t().isLoading&&!t().isLoaded){e({isLoading:!0});try{let t=await (0,r.X)("getChecklist",{},n);t.success?t.data?e({title:t.data.title||"체크리스트",items:t.data.items||[],isLoaded:!0,isLoading:!1}):e({isLoaded:!0,isLoading:!1}):(console.warn("[checklist] load failed, keeping local data:",t.message||t.error),e({isLoading:!1}))}catch(t){console.error("Failed to load checklist from DB:",t),e({isLoading:!1})}}},setTitle:(n,a)=>{e({title:n}),t().syncWithDB(a)},addItem:function(n){let a=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",i=crypto.randomUUID();return e(e=>({items:[...e.items,{id:i,text:a,checked:!1}
1]})),t().syncWithDB(n),i},updateItem:(n,a,i)=>{e(e=>({items:e.items.map(e=>e.id===n?{...e,text:a}:e)})),t().syncWithDB(i)},toggleItem:(n,a)=>{e(e=>({items:e.items.map(e=>e.id===n?{...e,checked:!e.checked}:e)})),t().syncWithDB(a)},deleteItem:(n,a)=>{e(e=>({items:e.items.filter(e=>e.id!==n)})),t().syncWithDB(a)},reorderItems:(n,a)=>{e({items:n}),t().syncWithDB(a)},clearItems:()=>{l&&(clearTimeout(l),l=null),e({items:[],isLoaded:!1,isLoading:!1})}}),{name:"checklist-storage-v1",partialize:e=>({title:e.title,items:e.items})}))},86267:function(e,t,n){"use strict";n.d(t,{X:function(){return l}});var a=n(3011),i=n(89134),r=n(83008);let l=(0,a.U)()((0,i.tJ)((e,t)=>({linkedNotes:[],targetNoteId:null,isLoaded:!1,syncWithDB:async()=>{if(!t().isLoaded){console.warn("[workNoteShortcut] 서버에서 아직 불러오지 못해 저장을 보류합니다.");return}let{linkedNotes:e}=t();try{await (0,r.X)("saveWorkNoteShortcut",{linkedNotes:e},{user:{id:"",name:"",role:""}})}catch(e){console.error("Failed to sync work note shortcuts with DB:",e)}},loadFromDB:async()=>{try{let i=await (0,r.X)("getWorkNoteShortcut",{},{user:{id:"",name:"",role:""}});if(i.success){var n,a;e({linkedNotes:null!==(a=null===(n=i.data)||void 0===n?void 0:n.linkedNotes)&&void 0!==a?a:t().linkedNotes,isLoaded:!0})}else console.warn("[workNoteShortcut] 불러오기 실패, 이 기기 데이터를 유지합니다.")}catch(e){console.error("Failed to load work note shortcuts from DB:",e)}},addLinkedNote:(n,a)=>{e(e=>e.linkedNotes.some(e=>e.id===n)?e:{linkedNotes:[...e.linkedNotes,{id:n,title:a}]}),t().syncWithDB()},removeLinkedNote:n=>{e(e=>({linkedNotes:e.linkedNotes.filter(e=>e.id!==n)})),t().syncWithDB()},setTargetNoteId:t=>e({targetNoteId:t}),clearTargetNoteId:()=>e({targetNoteId:null}),clear:()=>e({linkedNotes:[],targetNoteId:null,isLoaded:!1})}),{name:"work-note-shortcut-v2",partialize:e=>({linkedNotes:e.linkedNotes})}))}},function(e){e.O(0,[6137,4561,7526,2145,6689,3100,3145,4489,2825,1084,8319,4908,809,3202,5101,7488,7135,2971,2117,1744],function(){return e(e.s=28910)}),_N_E=e.O()}]);

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