PageSourceSearch

https://naemo.ai/_next/static/chunks/8259.2f75fb1b4f62bcd8.js

js naemo.ai collected 2026-10-02 01:15:40 UTC 20,481 bytes, 1 lines download raw bytes

1"use strict";(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[8259],{68259:function(e,t,n){n.r(t),n.d(t,{default:function(){return _}});var s=n(57437),i=n(98319),a=n(10136),l=n(2265),c=n(10407),r=n(85929),d=n(97226),x=n(99897),o=n(93448),u=n(27526),m=n(83008),p=n(67920),b=n(93627),h=n(285),j=n(80664);function v(){let[e,t]=(0,l.useState)([]),[n,a]=(0,l.useState)(!0),[c,r]=(0,l.useState)(null),{showToast:d}=(0,i.pm)();(0,l.useEffect)(()=>{(async()=>{let e=await (0,m.X)("getMyPurchasedLicenses",{},{});if(e.success&&e.data)t(e.data.blocks);else{var n;r(null!==(n=e.error)&&void 0!==n?n:"불러오기 실패")}a(!1)})()},[]);let x=async e=>{let t=e.map(e=>e.code).join("\n");try{await navigator.clipboard.writeText(t),d("모든 코드가 클립보드에 복사되었습니다.","success")}catch(e){d("복사에 실패했습니다.","error")}},o=(e,t)=>{let n=e=>'"'.concat(String(null!=e?e:"").replace(/"/g,'""'),'"'),s=new Blob([[[n("code"),n("status"),n("redeemedAt")].join(","),...e.codes.map(e=>{var t;return[n(e.code),n(e.status),n(null!==(t=e.redeemedAt)&&void 0!==t?t:"")].join(",")})].join("\n")],{type:"text/csv;charset=utf-8;"}),i=URL.createObjectURL(s),a=document.createElement("a");a.href=i,a.download="license-block-".concat(t+1,".csv"),a.click(),setTimeout(()=>URL.revokeObjectURL(i),100)},u=e=>e?new Date(e).toLocaleDateString("ko-KR"):"-";return n?(0,s.jsx)("div",{className:"flex items-center justify-center py-10 text-zinc-400 text-sm",children:"불러오는 중..."}):c?(0,s.jsx)("div",{className:"flex items-center justify-center py-10 text-red-500 text-sm",children:c}):0===e.length?(0,s.jsx)("div",{className:"flex items-center justify-center py-10 text-zinc-400 text-sm",children:"구매한 코드가 없습니다."}):(0,s.jsx)("div",{className:"flex flex-col gap-4",children:e.map((e,t)=>(0,s.jsxs)("div",{className:"bg-[#fafaf9] dark:bg-[#18181b] border border-zinc-200 dark:border-zinc-800 rounded-xl p-4",children:[(0,s.jsxs)("div",{className:"flex items-center justify-between mb-3",children:[(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[(0,s.jsxs)("span",{className:"text-sm font-semibold text-zinc-800 dark:text-zinc-100",children:["블록 ",t+1]}),(0,s.jsxs)("span",{className:"text-xs text-zinc-500 dark:text-zinc-400",children:["사용 ",e.used," / ",e.total]}),e.subscriptionEnd&&(0,s.jsxs)("span",{className:"text-xs text-zinc-400 dark:text-zinc-500",children:["만료: ",u(e.subscriptionEnd)]})]}),(0,s.jsxs)("div",{className:"flex items-center gap-2",children:[(0,s.jsx)("button",{type:"button",onClick:()=>x(e.codes),className:"text-xs px-2.5 py-1 rounded-lg border border-zinc-200 dark:border-zinc-700 text-zinc-600 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors",children:"전체 복사"}),(0,s.jsx)("button",{type:"button",onClick:()=>o(e,t),className:"text-xs px-2.5 py-1 rounded-lg border border-zinc-200 dark:border-zinc-700 text-zinc-600 dark:text-zinc-300 hover:bg-zinc-100 dark:hover:bg-zinc-800 transition-colors",children:"CSV 다운로드"})]})]}),(0,s.jsx)("div",{className:"flex flex-col gap-1",children:e.codes.map(e=>(0,s.jsxs)("div",{className:"flex items-center justify-between px-3 py-2 bg-white dark:bg-zinc-900 rounded-lg border border-zinc-100 dark:border-zinc-800",children:[(0,s.jsx)("span",{className:"text-xs font-mono text-zinc-700 dark:text-zinc-200 tracking-wider",children:e.code}),(0,s.jsxs)("div",{className:"flex items-center gap-3",children:[e.redeemedAt&&(0,s.jsx)("span",{className:"text-xs text-zinc-400 dark:text-zinc-500",children:u(e.redeemedAt)}),(0,s.jsx)("span",{className:"REDEEMED"===e.status?"text-xs px-2 py-0.5 rounded-full bg-zinc-100 dark:bg-zinc-800 text-zinc-400 dark:text-zinc-500":"text-xs px-2 py-0.5 rounded-full bg-green-50 dark:bg-green-900/30 text-green-600 dark:text-green-400",children:"REDEEMED"===e.status?"사용됨":"미사용"})]})]},e.code))})]},e.schoolId))})}var z=n(98381),g=n(86315),f=n(21751),k=n(2665),N=n(25997),w=n(39561),y=n(70287),C=n(39994),S=n(76283),E=n(60850),R=n(99098),L=n(26862);function A(){let e=(0,w.g)(),{enabled:t,mode:i,setEnabled:a,setMode:c}
1=(0,L.t)(),[r,d]=(0,l.useState)(null);if((0,l.useEffect)(()=>{if(!e)return;let t=!1;return(async()=>{try{let{NativeBiometric:e}=await n.e(731).then(n.bind(n,60731)),s=await e.isAvailable({useFallback:!0});t||d(!!(s.isAvailable||s.deviceIsSecure))}catch(e){t||d(!1)}})(),()=>{t=!0}},[e]),!e)return null;let x=!1===r;return(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"px-1 pb-1.5 text-[12px] font-medium text-zinc-400 dark:text-zinc-500 uppercase tracking-wider",children:"생체 잠금"}),(0,s.jsxs)("div",{className:"bg-white dark:bg-[#1C1C1E] rounded-xl border border-zinc-200/60 dark:border-white/[0.08] overflow-hidden",children:[(0,s.jsxs)("div",{className:"px-4 py-3.5 flex items-center justify-between gap-3",children:[(0,s.jsxs)("div",{className:"min-w-0",children:[(0,s.jsx)("p",{className:"text-[14px] text-zinc-800 dark:text-zinc-200",children:"Face ID \xb7 지문으로 잠금"}),(0,s.jsx)("p",{className:"text-[12px] text-zinc-400 dark:text-zinc-500 mt-0.5",children:x?"이 기기에서는 생체 인증을 쓸 수 없습니다":"기본은 꺼져 있습니다. 켜면 아래에서 잠글 시점을 고르세요"})]}),(0,s.jsx)("button",{type:"button",role:"switch","aria-checked":t,disabled:x,onClick:()=>a(!t),className:(0,o.cn)("relative h-[28px] w-[48px] shrink-0 rounded-full transition-colors disabled:opacity-40",t?"bg-blue-500":"bg-zinc-300 dark:bg-zinc-600"),children:(0,s.jsx)("span",{className:(0,o.cn)("absolute top-[2px] left-[2px] h-[24px] w-[24px] rounded-full bg-white shadow transition-transform",t&&"translate-x-[20px]")})})]}),t&&!x&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"mx-4 h-px bg-zinc-100 dark:bg-zinc-800"}),(0,s.jsxs)("div",{className:"p-3",children:[(0,s.jsx)("p",{className:"px-1 pb-2 text-[12px] text-zinc-400 dark:text-zinc-500",children:"언제 잠글까요?"}),(0,s.jsxs)("div",{className:"grid grid-cols-1 gap-1.5",children:[(0,s.jsx)(F,{selected:"app_open"===i,title:"앱을 열 때",description:"앱을 켤 때, 그리고 5분 이상 나갔다 돌아올 때",onSelect:()=>c("app_open")}),(0,s.jsx)(F,{selected:"sensitive_menus"===i,title:"민감한 메뉴만",description:"학생 관리, 평가\xb7기록(수행\xb7세특\xb7자율\xb7진로\xb7행동특성)",onSelect:()=>c("sensitive_menus")})]})]})]})]})]})}function F(e){let{selected:t,title:n,description:i,onSelect:a}=e;return(0,s.jsxs)("button",{type:"button",onClick:a,className:(0,o.cn)("w-full text-left rounded-lg px-3 py-2.5 transition-colors",t?"bg-blue-50 dark:bg-blue-500/15 ring-1 ring-blue-400/60":"bg-zinc-50 dark:bg-zinc-800/60 active:bg-zinc-100 dark:active:bg-zinc-700/60"),children:[(0,s.jsx)("p",{className:"text-[14px] font-medium text-zinc-800 dark:text-zinc-100",children:n}),(0,s.jsx)("p",{className:"text-[12px] text-zinc-500 dark:text-zinc-400 mt-0.5",children:i})]})}var D=n(17790),T=n(45701);let H=[{id:"general",label:"일반"},{id:"timetable",label:"시간표"},{id:"student-roles",label:"학생 역할"}];function _(){var e,t;let[n,i]=(0,l.useState)(null),a=(0,l.useCallback)(()=>i(null),[]);return(0,f.rr)(n?null!==(t=null===(e=H.find(e=>e.id===n))||void 0===e?void 0:e.label)&&void 0!==t?t:"설정":null,a),(0,s.jsx)("div",{className:"h-full flex flex-col bg-[#FBFBF9] dark:bg-zinc-950",children:(0,s.jsxs)("div",{className:"flex-1 overflow-y-auto mobile-scroll-bottom mobile-scroll",children:[null===n&&(0,s.jsx)(B,{onSelect:i}),"general"===n&&(0,s.jsx)(I,{}),"timetable"===n&&(0,s.jsx)(O,{}),"student-roles"===n&&(0,s.jsx)(P,{})]})})}function B(e){var t,n;let{onSelect:i}=e,{data:a}=(0,u.kP)();return(0,s.jsxs)("div",{className:"px-4 pt-4 pb-10",children:[(0,s.jsxs)("div",{className:"space-y-[2px]",children:[H.map(e=>(0,s.jsxs)("button",{onClick:()=>i(e.id),className:(0,o.cn)("w-full flex items-center gap-3.5 px-3 py-[13px] rounded-xl transition","text-left active:scale-[0.98] active:bg-zinc-100/80 dark:active:bg-zinc-800/80"),children:[(0,s.jsx)("span",{className:"flex-1 text-[15px] font-medium text-zinc-800 dark:text-zinc-200",children:e.label}),(0,s.jsx)(c.Z,{size:15,className:"text-zinc-400 dark:text-zinc-500 shrink-0"})]},e.id)),(null==a?void 0:null===(n=a.user)||void 0===n?void 0:null===(t=n.email)||void 0===t?void 0:t.trim().toLowerCase())==="[email protected]"&&(0,s.jsxs)("button",{type:"button",onClick:()=>window.dispatchEvent(new CustomEvent("navigate-view",{detail:"school-collaboration"})),className:(0,o.cn)("w-full flex items-center gap-3.5 px-3 py-[13px] rounded-xl transition","text-left active:scale-[0.98] active:bg-zinc-100/80 dark:active:bg-zinc-800/80"),children:[(0,s.jsx)("span",{className:"flex-1 text-[15px] font-medium text-zinc-800 dark:text-zinc-200",children:"학교 협업"}),(0,s.jsx)(c.Z,{size:15,className:"text-zinc-400 dark:text-zinc-500 shrink-0"})]})]}),(null==a?void 0:a.user)&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"mx-1 my-6 h-px bg-zinc-200/70 dark:bg-zinc-800"}),(0,s.jsx)("button",{onClick:()=>
1(0,u.w7)(),className:"w-full text-center py-3 text-[14px] text-red-500 font-medium active:bg-zinc-100 dark:active:bg-zinc-800 rounded-xl transition-colors",children:"로그아웃"})]})]})}function I(){var e,t,n,r;let d=(0,w.g)(),{data:x,update:o}=(0,u.kP)(),b=(0,p.XC)(),h=(0,a.N)(),{showToast:z}=(0,i.pm)(),{isResetting:g,isResetModalOpen:f,resetStep:k,saveNeedsShareHint:N,openResetModal:L,closeResetModal:F,handleSaveAndReset:H,handleSaveFile:_,handleConfirmSavedAndReset:B,handleResetOnly:I,filename:O}=(0,S.v)(),[P,K]=(0,l.useState)(!1),[q,G]=(0,l.useState)(!1),[J,Q]=(0,l.useState)(!1),[Y,W]=(0,l.useState)(null);(0,l.useEffect)(()=>{let e=async()=>{if(null==x?void 0:x.user)try{var e;let t=await (0,E.T9)();t.success&&(null===(e=t.data)||void 0===e?void 0:e.schoolName)?W(t.data.schoolName):W(null)}catch(e){console.error("[MobileSettings] Failed to load school info:",e)}else W(null)};e();let t=()=>e();return window.addEventListener("school-settings-updated",t),()=>window.removeEventListener("school-settings-updated",t)},[null==x?void 0:x.user]);let $=async()=>{if(await h({title:"계정을 삭제할까요?",description:"탈퇴하면 이 계정으로 만든 모든 기록이 영구적으로 사라집니다. 되돌릴 수 없습니다.",consequences:["학생 명단","성적\xb7출결 기록","상담 일지","세특\xb7행동특성","설문과 응답","교무수첩 보관함"],confirmLabel:"계정 삭제"})){K(!0);try{let e=await (0,m.X)("deleteAccount",{confirmText:"탈퇴"},b);e.success?(z("계정을 삭제했습니다. 그동안 이용해 주셔서 감사합니다.","success"),await (0,u.w7)({callbackUrl:"/"})):(z(e.error||"계정 삭제 실패","error"),K(!1))}catch(e){console.error(e),z("오류가 발생했습니다.","error"),K(!1)}}},ee=async()=>{if(await h({title:"정기구독을 해지할까요?",description:"지금 결제한 이용 기간이 끝날 때까지는 그대로 쓰실 수 있고, 다음 결제부터 청구되지 않습니다.",confirmLabel:"구독 해지"})){G(!0);try{let e=await (0,m.X)("cancelIndividualSubscription",{},b);e.success?(z(e.message||"구독을 해지했습니다.","success"),window.location.reload()):z(e.error||"구독 해지 실패","error")}catch(e){console.error(e),z("오류가 발생했습니다.","error")}finally{G(!1)}}};return(0,s.jsxs)("div",{className:"px-4 pt-4 pb-10 space-y-6",children:[(0,s.jsxs)(M,{title:"계정",children:[(0,s.jsx)(X,{label:"이메일",value:(null==x?void 0:null===(e=x.user)||void 0===e?void 0:e.email)||"-"}),(0,s.jsx)(X,{label:"이름",value:(null==x?void 0:null===(t=x.user)||void 0===t?void 0:t.name)||"-"})]}),(0,s.jsx)(V,{}),(0,s.jsx)(Z,{}),(0,s.jsx)(A,{}),(0,s.jsx)(M,{title:"학교",children:(0,s.jsx)(X,{label:"학교명",value:(null==x?void 0:null===(n=x.user)||void 0===n?void 0:n.schoolName)||Y||"학교 미설정"})}),(0,s.jsx)(U,{}),(0,s.jsx)(T.D,{}),(0,s.jsxs)(M,{title:d?"학교 초대":"이용권\xb7초대 코드",children:[(0,s.jsxs)("button",{onClick:()=>Q(!0),className:"w-full px-4 py-3.5 flex items-center justify-between active:bg-zinc-50 dark:active:bg-zinc-800 transition-colors",children:[(0,s.jsx)("span",{className:"text-[14px] text-zinc-800 dark:text-zinc-200",children:d?"학교 참여":"코드 입력"}),(0,s.jsx)(c.Z,{size:15,className:"text-zinc-400 dark:text-zinc-500 shrink-0"})]}),(null==x?void 0:null===(r=x.user)||void 0===r?void 0:r.recurringStatus)==="ACTIVE"&&(0,s.jsxs)(s.Fragment,{children:[(0,s.jsx)("div",{className:"mx-4 h-px bg-zinc-100 dark:bg-zinc-800"}),(0,s.jsxs)("button",{onClick:ee,disabled:q,className:"w-full px-4 py-3.5 flex items-center justify-between active:bg-zinc-50 dark:active:bg-zinc-800 transition-colors disabled:opacity-50",children:[(0,s.jsx)("span",{className:"text-[14px] text-red-500 dark:text-red-400",children:"구독 해지"}),(0,s.jsx)("span",{className:"text-[13px] text-zinc-400 dark:text-zinc-500",children:q?"처리중...":""})]})]})]}),(0,s.jsx)(D.GoogleCalendarButton,{settingsRow:"mobile"}),!d&&(0,s.jsx)(M,{title:"구매한 코드",children:(0,s.jsx)("div",{className:"px-4 py-3",children:(0,s.jsx)(v,{})})}),(0,s.jsx)(j.g,{isOpen:J,onClose:()=>Q(!1)}),(0,s.jsx)(M,{title:"알림",children:(0,s.jsx)(R.l,{variant:"mobile"})}),(0,s.jsx)(M,{title:"교무수첩",children:(0,s.jsx)(y.J,{variant:"mobile"})}),(0,s.jsxs)(M,{title:"데이터 관리",children:[(0,s.jsxs)("button",{onClick:L,disabled:g||P,className:"w-full px-4 py-3.5 flex items-center justify-between active:bg-zinc-50 dark:active:bg-zinc-800 transition-colors disabled:opacity-50",children:[(0,s.jsx)("span",{className:"text-[14px] text-zinc-800 dark:text-zinc-200",children:"학생 초기화"}),(0,s.jsx)("span",{className:"text-[13px] text-zinc-400 dark:text-zinc-500",children:g?"처리 중…":""})]}),(0,s.jsx)("div",{className:"mx-4 h-px bg-zinc-100 dark:bg-zinc-800"}),(0,s.jsxs)("button",{onClick:$,disabled:P||g,className:"w-full px-4 py-3.5 flex items-center justify-between active:bg-zinc-50 dark:active:bg-zinc-800 transition-colors disabled:opacity-50",children:[(0,s.jsx)("span",{className:"text-[14px] text-red-500 dark:text-red-400",children:"계정 탈퇴"}),(0,s.jsx)("span",{className:"text-[13px] text-zinc-400 dark:text-zinc-500",children:P?"처리 중…":""})]})]}),(0,s.jsx)(C.C,{isOpen:f,step:k,onSaveAndReset:H,onResetOnly:I,onSaveFile:_,onConfirmSavedAndReset:B,onCancel:F,isProcessing:g,saveNeedsShareHint:N,filename:O})]})}function O(){return(0,s.jsx)("div",{className:"px-4 pt-4 pb-10",children:(0,s.jsx)("div",{className:"mobile-timetable-settings bg-white dark:bg-[#18181b] border border-zinc-200 dark:border-zinc-800 rounded-2xl p-4 overflow-x-auto",children:(0,s.jsx)(b.Q,{gridSelection:!1})})})}function P(){return(0,s.jsx)("div",{className:"px-4 pt-4 pb-10",children:(0,s.jsx)("div",{className:"mobile-student-roles bg-white dark:bg-[#18181b] border border-zinc-200 dark:border-zinc-800 rounded-2xl p-4 overflow-x-auto",children:(0,s.jsx)(h.k,{})})})}function U(){var e,t;let{data:n}=(0,u.kP)(),i=(0,w.g)(),{closeSettings:a}=(0,N.Y)(),l=null==n?void 0:null===(e=n.user)||void 0===e?void 0:e.paidUntil,c=null==n?void 0:null===(t=n.user)||void 0===t?void 0:t.recurringStatus,r=e=>new Date(e).toLocaleDateString("ko-KR",{year:"numeric",month:"long",day:"numeric"});return"ACTIVE"===c?(0,s.jsx)(M,{title:"플랜 안내",children:(0,s.jsxs)("div",{className:"px-4 py-3.5 flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-[14px] text-zinc-800 dark:text-zinc-200",children:"정기구독 중"}),l&&(0,s.jsxs)("span",{className:"text-[13px] text-zinc-400 dark:text-zinc-500",children:["다음 결제 예정: ",r(l)]})]})}):(0,k.Om)(l)?(0,s.jsx)(M,{title:"플랜 안내",children:(0,s.jsxs)("div",{className:"px-4 py-3.5 flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-[14px] text-zinc-800 dark:text-zinc-200",children:"유료 이용 중"}),l&&(0,s.jsxs)("span",{className:"text-[13px] text-zinc-400 dark:text-zinc-500",children:[r(l)," 까지"]})]})}):(0,s.jsx)(M,{title:"플랜 안내",children:(0,s.jsxs)("div",{className:"px-4 py-3.5 flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-[14px] text-zinc-800 dark:text-zinc-200",children:"무료 플랜"}),!i&&(0,s.jsx)("button",{onClick:()=>{a(),window.dispatchEvent(new CustomEvent("navigate-view",{detail:"plans"}))},className:"text-[13px] text-blue-500 font-medium active:opacity-70 transition-opacity",children:"요금제 보기"})]})})}function Z(){let{theme:e,setTheme:t}=(0,z.F)();return(0,s.jsx)(M,{title:"화면 모드",children:(0,s.jsx)("div",{className:"p-3",children:(0,s.jsxs)("div",{className:"grid grid-cols-3 gap-1.5 p-1 bg-zinc-100 dark:bg-zinc-800/80 rounded-xl",children:[(0,s.jsxs)("button",{onClick:()=>t("light"),className:(0,o.cn)("flex items-center justify-center gap-1.5 py-2 rounded-lg text-[13px] font-medium transition-all","light"===e?"bg-white dark:bg-zinc-700 text-zinc-900 dark:text-zinc-100 shadow-sm font-bold":"text-zinc-500 dark:text-zinc-400 active:bg-zinc-200/50 dark:active:bg-zinc-700/50"),children:[(0,s.jsx)(r.Z,{size:15,className:"light"===e?"text-amber-500":""}),(0,s.jsx)("span",{children:"라이트"})]}),(0,s.jsxs)("button",{onClick:()=>t("dark"),className:(0,o.cn)("flex items-center justify-center gap-1.5 py-2 rounded-lg text-[13px] font-medium transition-all","dark"===e?"bg-white dark:bg-zinc-700 text-zinc-900 dark:text-zinc-100 shadow-sm font-bold":"text-zinc-500 dark:text-zinc-400 active:bg-zinc-200/50 dark:active:bg-zinc-700/50"),children:[(0,s.jsx)(d.Z,{size:15,className:"dark"===e?"text-indigo-400":""}),(0,s.jsx)("span",{children:"다크"})]}),(0,s.jsxs)("button",{onClick:()=>t("system"),className:(0,o.cn)("flex items-center justify-center gap-1.5 py-2 rounded-lg text-[13px] font-medium transition-all","system"===e?"bg-white dark:bg-zinc-700 text-zinc-900 dark:text-zinc-100 shadow-sm font-bold":"text-zinc-500 dark:text-zinc-400 active:bg-zinc-200/50 dark:active:bg-zinc-700/50"),children:[(0,s.jsx)(x.Z,{size:15,className:"system"===e?"text-blue-500":""}),(0,s.jsx)("span",{children:"시스템"})]})]})})})}function M(e){let{title:t,children:n}=e;return(0,s.jsxs)("div",{children:[(0,s.jsx)("p",{className:"px-1 pb-1.5 text-[12px] font-medium text-zinc-400 dark:text-zinc-500 uppercase tracking-wider",children:t}),(0,s.jsx)("div",{className:"bg-white dark:bg-[#1C1C1E] rounded-xl border border-zinc-200/60 dark:border-white/[0.08] overflow-hidden",children:n})]})}function X(e){let{label:t,value:n}=e;return(0,s.jsxs)("div",{className:"px-4 py-3.5 flex items-center justify-between",children:[(0,s.jsx)("span",{className:"text-[14px] text-zinc-800 dark:text-zinc-200",children:t}),(0,s.jsx)("span",{className:"text-[13px] text-zinc-400 dark:text-zinc-500 truncate max-w-[200px]",children:n})]})}function V(){var e;let{config:t,handleSave:n}=(0,g.Nv)(),{data:i}=(0,u.kP)(),a=(null==i?void 0:null===(e=i.user)||void 0===e?void 0:e.name)||"선생님",c=(t.mobileHomeTitle||"{name}의 내모").replace("{name}",a),[r,d]=(0,l.useState)(c),[x,o]=(0,l.useState)(t.mobileHomeSlogan||"나만의 맞춤 교무수첩"),m=(0,l.useRef)(!1);return(0,l.useEffect)(()=>{m.current||(d((t.mobileHomeTitle||"{name}의 내모").replace("{name}",a)),o(t.mobileHomeSlogan||"나만의 맞춤 교무수첩"))},[t.mobileHomeTitle,t.mobileHomeSlogan,a]),(0,s.jsx)(M,{title:"홈 화면 문구",children:(0,s.jsxs)("div",{className:"px-4 py-3.5 space-y-4",children:[(0,s.jsxs)("div",{className:"space-y-1.5",children:[(0,s.jsx)("label",{className:"text-[12px] text-zinc-400 font-medium",children:"제목"}),(0,s.jsx)("input",{type:"text",value:r,onChange:e=>{m.current=!0,d(e.target.value)},onBlur:()=>{n({...t,mobileHomeTitle:r})},placeholder:"제목을 입력하세요",className:"w-full h-9 bg-zinc-100 border border-zinc-200 rounded-lg px-3 text-[16px] text-zinc-900 focus:outline-none focus:border-blue-400 transition-colors"})]}),(0,s.jsxs)("div",{className:"space-y-1.5 pt-1 border-t border-zinc-50",children:[(0,s.jsx)("label",{className:"text-[12px] text-zinc-400 font-medium",children:"부제목"}),(0,s.jsx)("input",{type:"text",value:x,onChange:e=>{m.current=!0,o(e.target.value)},onBlur:()=>{n({...t,mobileHomeSlogan:x})},placeholder:"부제목을 입력하세요",className:"w-full h-9 bg-zinc-100 border border-zinc-200 rounded-lg px-3 text-[16px] text-zinc-900 focus:outline-none focus:border-blue-400 transition-colors"})]})]})})}}}]);

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.