Files
accountbook/frontend/.next/server/chunks/261.js
T

1 line
13 KiB
JavaScript
Raw Normal View History

2026-03-12 11:24:10 +08:00
exports.id=261,exports.ids=[261],exports.modules={1712:(e,r,n)=>{"use strict";n.d(r,{Z:()=>l});var t=n(997),o=n(6689),s=n(1163),i=n(349);let a=[{href:"/",label:"首页",icon:"home"},{href:"/stats",label:"统计",icon:"chart"},{href:"/recurring",label:"周期",icon:"repeat"},{href:"/categories",label:"分类",icon:"tags"}];function l({title:e,subtitle:r,actions:n,headerContent:l,children:c,contentClassName:d="",hideNav:u=!1,compactHeader:h=!1}){let p=(0,s.useRouter)(),k=(0,o.useMemo)(()=>{let e=a.find(e=>e.href===p.pathname);return e?.href||null},[p.pathname]),f=l||(e?(0,t.jsxs)("div",{className:"app-header__text",children:[t.jsx("h1",{children:e}),r?t.jsx("p",{children:r}):null]}):null),x=["app-header",h?"app-header--compact":"",f?"app-header--with-content":"app-header--actions-only",n?"app-header--with-actions":""].filter(Boolean).join(" ");return(0,t.jsxs)("div",{className:`app-shell${u?" app-shell--standalone":""}`,children:[t.jsx("header",{className:x,children:(0,t.jsxs)("div",{className:"app-shell__container app-header__inner",children:[f?t.jsx("div",{className:"app-header__main",children:f}):t.jsx("div",{className:"app-header__spacer","aria-hidden":"true"}),n?t.jsx("div",{className:"app-header__actions",children:n}):null]})}),t.jsx("main",{className:`app-content ${d}`.trim(),children:t.jsx("div",{className:"app-shell__container app-content__inner",children:c})}),u?null:t.jsx("nav",{className:"bottom-nav","aria-label":"主导航",children:t.jsx("div",{className:"app-shell__container bottom-nav__inner",children:a.map(e=>{let r=k===e.href;return(0,t.jsxs)("button",{type:"button",className:`bottom-nav__item${r?" is-active":""}`,onClick:()=>p.push(e.href),"aria-current":r?"page":void 0,children:[t.jsx(i.J,{name:e.icon,size:20}),t.jsx("span",{children:e.label})]},e.href)})})})]})}},4407:(e,r,n)=>{"use strict";n.d(r,{N:()=>l,W:()=>a});var t=n(997),o=n(6689),s=n(349);let i=(0,o.createContext)(null);function a({children:e}){let[r,n]=(0,o.useState)(null),a=(0,o.useCallback)(e=>new Promise(r=>{n({title:e.title||"请确认操作",description:e.description||"",confirmText:e.confirmText||"确认",cancelText:e.cancelText||"取消",tone:e.tone||"danger",resolve:r})}),[]),l=(0,o.useCallback)(e=>{n(r=>(r?.resolve(e),null))},[]),c=(0,o.useMemo)(()=>({confirm:a}),[a]);return(0,t.jsxs)(i.Provider,{value:c,children:[e,r?t.jsx("div",{className:"modal-overlay modal-overlay--center",onClick:()=>l(!1),children:(0,t.jsxs)("div",{className:"confirm-card",onClick:e=>e.stopPropagation(),role:"dialog","aria-modal":"true","aria-labelledby":"confirm-title",children:[t.jsx("div",{className:`confirm-card__icon confirm-card__icon--${r.tone}`,children:t.jsx(s.J,{name:"danger"===r.tone?"trash":"info",size:18})}),(0,t.jsxs)("div",{className:"confirm-card__body",children:[t.jsx("h2",{id:"confirm-title",children:r.title}),r.description?t.jsx("p",{children:r.description}):null]}),(0,t.jsxs)("div",{className:"confirm-card__actions",children:[t.jsx("button",{type:"button",className:"btn btn-secondary",onClick:()=>l(!1),children:r.cancelText}),t.jsx("button",{type:"button",className:`btn ${"danger"===r.tone?"btn-danger":"btn-primary"}`,onClick:()=>l(!0),children:r.confirmText})]})]})}):null]})}function l(){let e=(0,o.useContext)(i);if(!e)throw Error("useConfirm must be used within ConfirmProvider");return e}},4190:(e,r,n)=>{"use strict";n.d(r,{V:()=>a,p:()=>l});var t=n(997),o=n(6689),s=n(349);let i=(0,o.createContext)(null);function a({children:e}){let[r,n]=(0,o.useState)([]),a=(0,o.useRef)(new Map),l=(0,o.useCallback)(e=>{let r=a.current.get(e);r&&(clearTimeout(r),a.current.delete(e)),n(r=>r.filter(r=>r.id!==e))},[]),c=(0,o.useCallback)((e,r={})=>{let t=`${Date.now()}-${Math.random()}`,o={id:t,message:e,tone:r.tone||"info"};n(e=>[...e,o]);let s=setTimeout(()=>l(t),r.duration??2600);return a.current.set(t,s),t},[l]),d=(0,o.useMemo)(()=>({showToast:c,removeToast:l}),[c,l]);return(0,t.jsxs)(i.Provider,{value:d,children:[e,t.jsx("div",{className:"toast-stack","aria-live":"polite","aria-atomic":"true",children:r.map(e=>(0,t.jsxs)("div",{className:`toast toast--$