1import"../chunks/CWj6FrbW.js";import{o as yt}from"../chunks/CfHcjSR2.js";import{p as xt,g as x,h as wt,f as w,e as G,t as C,a as h,b as $t,k as e,u as j,s as d,c,j as l,r as n,d as St}from"../chunks/Chv1Rf9A.js";import{d as kt,s as g}from"../chunks/CrUTHeR8.js";import{i as I}from"../chunks/BNC-Xv9g.js";import{e as Pt}from"../chunks/BmGKgcrT.js";import{s as T}from"../chunks/DVFsm7re.js";import{s as Ct,a as L}from"../chunks/D0O4N5Zc.js";import{$ as jt}from"../chunks/BoMiQoxg.js";import{g as At}from"../chunks/CmD3xIql.js";import{A as E}from"../chunks/9dsCwa7_.js";import{g as Ft,s as Tt}from"../chunks/B4buaF5z.js";import{u as J}from"../chunks/Z0MKQVrg.js";import{o as Et}from"../chunks/YiTIuREd.js";import{s as Nt}from"../chunks/CZ6Mq8FW.js";import{s as Ot}from"../chunks/Dik6IyV0.js";import{P as Ut}from"../chunks/BERNlt3O.js";import{j as zt,o as Bt}from"../chunks/BLMKb8GN.js";import"../chunks/69_IOA4Y.js";import{t as M}from"../chunks/CGgtpwTv.js";import{S as Dt}from"../chunks/QiF9L6rF.js";const It=!0,Lt=!0,me=Object.freeze(Object.defineProperty({__proto__:null,prerender:It,ssr:Lt},Symbol.toStringTag,{value:"Module"}));var Jt=w('<div><div class="flex items-center justify-center"><i class="fas fa-check-circle text-green-500 text-xl mr-3"></i> <span class="text-green-800 font-medium"> <strong> </strong></span></div></div>'),Mt=w('<div class="text-center py-12"><div class="inline-block animate-spin rounded-full h-8 w-8 border-b-2 border-primary-600"></div> <p class="mt-4 text-gray-600"> </p></div>'),Rt=w('<div class="text-center py-12"><div class="bg-red-50 border border-red-200 rounded-lg p-6 max-w-md mx-auto"><i class="fas fa-exclamation-triangle text-red-500 text-2xl mb-4"></i> <h3 class="text-lg font-semibold text-red-800 mb-2"> </h3> <p class="text-red-600 mb-4"> </p> <button class="bg-red-600 text-white px-4 py-2 rounded-lg hover:bg-red-700 transition-colors"> </button></div></div>'),qt=w("<div><!></div>"),Ht=w('<div class="mx-auto grid max-w-5xl grid-cols-1 items-stretch gap-8 md:grid-cols-2"></div>'),Kt=w('<!> <div class="container mx-auto px-6 py-12"><div class="text-center mb-16"><h1> </h1> <p> </p> <!></div> <!></div>',1);function ge(Q,V){xt(V,!0);const W=()=>L(Nt,"$siteConfigStore",O),N=()=>L(Ot,"$siteName",O),b=()=>L(jt,"$_",O),[O,X]=Ct(),Y={},Z={};let $=x(!1),U=x(wt([])),z=x(!0),p=x(""),u=x(null),v=x(!1);const tt="[email protected]";let et=j(()=>W().contact_email||tt),rt=j(()=>`Pricing - ${N()}`),at=j(()=>`Compare ${N()} plans and choose the right subscription for AI chat notes, export, and sharing.`);yt(()=>((async()=>(await ot(),await R(),e(v)&&await S(),l($,!0)))(),Et(async()=>{e(v)&&await S()})));async function ot(){const t=localStorage.getItem("user_token");if(t&&(J.subscribe(o=>{l(v,o.authenticated&&o.user!==null,!0)})(),!e(v)))try{const o=await fetch(`${E}/auth/me`,{headers:{Authorization:`Bearer ${t}`}});if(o.ok){const s=await o.json();J.setUser(s),J.setAuthenticated(!0),l(v,!0)}}catch(o){console.error("Auth check failed:",o)}}async function S(){if(e(v))try{const t=localStorage.getItem("user_token");if(!t)return;const r=await Ft(t);r&&r.plan?l(u,r.plan,!0):l(u,{id:"free",name:"Free Plan",price:0},!0)}catch(t){console.error("Failed to load current subscription:",t),l(u,{id:"free",name:"Free Plan",price:0},!0)}}async function R(){l(z,!0),l(p,"");try{const t=await fetch(`${E}/subscriptions/plans`);t.ok?l(U,await t.json(),!0):l(p,"Failed to load subscription plans")}catch(t){console.error("Error loading subscription plans:",t),l(p,"Network error. Please check if the backend is running.")}finally{l(z,!1)}}let st=j(()=>Bt(e(U)));function it(t){return e(u)?t.id===e(u).id||t.name===e(u).name:!1}async function nt(t){var o;const r=localStorage.getItem("user_token");if(!r){At("/login");return}try{const s=e(U).find(a=>a.id===t);if((o=s==null?void 0:s.name)!=null&&o.toLowerCase().includes("enterprise")){window.open(`mailto:${e(et)}?subject=${encodeURIComponent(`${N()} Enterprise Plan Inquiry`)}`,"_blank");return}if(s&&(s.price===0||s.name==="free")){const a=await fetch(`${E}/subscriptions/subscribe`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({plan_id:t})});if(a.ok)await S(),alert("Successfully subscribed to Free Plan!");else{const i=await a.json();l(p,i.detail||"Failed to subscribe to free plan",!0)}}else if(e(u)&&zt({plan:e(u)},s)){const a=await Tt(r,t,{success_url:`${window.location.origin}/subscription/success`,cancel_url:`${window.location.origin}/price`});a!=null&&a.url?window.location.href=a.url:a?(await S(),M.success("å·²å级为年ä»å¥é¤ï¼å·®é¢å°ææ¯ä¾ç»ç®")):(l(p,"å级å¥é¤å¤±è´¥"),M.error(e(p)))}else{const a=await fetch(`${E}/subscriptions/stripe/checkout`,{method:"POST",headers:{"Content-Type":"application/json",Authorization:`Bearer ${r}`},body:JSON.stringify({plan_id:t,success_url:`${window.location.origin}/subscription/success`,cancel_url:`${window.location.origin}/price`})});if(a.ok){const i=await a.json();i.upgraded?(await S(),M.success("å·²å级为年ä»å¥é¤ï¼å·®é¢å°ææ¯ä¾ç»ç®")):i.url&&(window.location.href=i.url)}else{const i=await a.json();l(p,i.detail||"Failed to create checkout session",!0)}}}catch(s){console.error("Error creating subscription:",s),l(p,"Failed to start subscription process")}}var ct={data:Y,params:Z},q=Kt(),H=G(q);Dt(H,{get title(){return e(rt)},get description(){return e(at)},path:"/price"});var K=d(H,2),B=c(K),A=c(B),lt=c(A,!0);n(A);var F=d(A,2),ut=c(F,!0);n(F);var pt=d(F,2);{var dt=t=>{var r=Jt(),o=c(r),s=d(c(o),2),a=c(s),i=d(a),f=c(i,!0);n(i),n(s),n(o),n(r),C((m,_)=>{T(r,1,`bg-green-50 border border-green-200 rounded-lg p-4 max-w-md mx-auto mb-8 transform transition-all duration-700 delay-400 ${e($)?"translate-y-0 opacity-100":"translate-y-4 opacity-0"}`),g(a,`${m??""}: `),g(f,_)},[()=>b()("subscription_page.currently_on"),()=>
1e(u).name||b()("subscription_page.free_plan")]),h(t,r)};I(pt,t=>{e(v)&&e(u)&&t(dt)})}n(B);var ft=d(B,2);{var mt=t=>{var r=Mt(),o=d(c(r),2),s=c(o,!0);n(o),n(r),C(a=>g(s,a),[()=>b()("subscription_page.loading_plans")]),h(t,r)},gt=t=>{var r=St(),o=G(r);{var s=i=>{var f=Rt(),m=c(f),_=d(c(m),2),y=c(_,!0);n(_);var k=d(_,2),D=c(k,!0);n(k);var P=d(k,2);P.__click=R;var vt=c(P,!0);n(P),n(m),n(f),C((_t,ht)=>{g(y,_t),g(D,e(p)),g(vt,ht)},[()=>b()("subscription_page.error_loading"),()=>b()("subscription_page.try_again")]),h(i,f)},a=i=>{var f=Ht();Pt(f,21,()=>e(st).tiers,m=>m.tierKey,(m,_)=>{var y=qt(),k=c(y);{let D=j(()=>e(u)?{plan:e(u)}:null);Ut(k,{get plans(){return e(_).plans},get currentSubscription(){return e(D)},isCurrentPlan:P=>it({id:P}),onSubscribe:nt})}n(y),C(()=>T(y,1,`flex h-full flex-col transform transition-all duration-700 ${e($)?"translate-y-0 opacity-100":"translate-y-8 opacity-0"}`)),h(m,y)}),n(f),h(i,f)};I(o,i=>{e(p)?i(s):i(a,!1)},!0)}h(t,r)};I(ft,t=>{e(z)?t(mt):t(gt,!1)})}n(K),C((t,r)=>{T(A,1,`text-4xl font-bold text-gray-900 mb-4 transform transition-all duration-700 delay-200 ${e($)?"translate-y-0 opacity-100":"translate-y-4 opacity-0"}`),g(lt,t),T(F,1,`text-xl text-gray-600 max-w-3xl mx-auto mb-8 transform transition-all duration-700 delay-300 ${e($)?"translate-y-0 opacity-100":"translate-y-4 opacity-0"}`),g(ut,r)},[()=>b()("navigation.price"),()=>b()("subscription_page.choose_plan",{default:"Choose the perfect plan for your needs"})]),h(Q,q);var bt=$t(ct);return X(),bt}kt(["click"]);export{ge as component,me as universal}; 2//# sourceMappingURL=31.Cuq8AGsO.js.map
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.