@taskforcehq/taskforce 0.3.307 → 0.3.309
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/components/views/PlanComparisonPage.d.ts +20 -15
- package/dist/components/views/PlanComparisonPage.js +214 -83
- package/dist/components/views/PlanComparisonPage.test.js +249 -14
- package/dist/components/views/PlansPage.js +15 -9
- package/dist/components/views/PlansPage.test.js +4 -2
- package/dist/core/GlobalSettingsService.js +18 -0
- package/dist/core/GlobalSettingsService.test.d.ts +1 -0
- package/dist/core/GlobalSettingsService.test.js +45 -0
- package/dist/core/PlanEntitlementService.d.ts +20 -0
- package/dist/core/PlanEntitlementService.js +215 -19
- package/dist/core/PlanFeatureCatalog.test.js +55 -0
- package/dist/core/Taskforce.d.ts +14 -0
- package/dist/core/Taskforce.js +6 -0
- package/dist/core/types.d.ts +3 -0
- package/dist/migrations/taskSchemaMigrations.js +37 -15
- package/dist/server/routes/admin.js +146 -5
- package/dist/server/routes/authSupport.d.ts +1 -0
- package/dist/server/routes/authSupport.js +2 -1
- package/dist/server/routes/billing.d.ts +1 -0
- package/dist/server/routes/billing.js +105 -63
- package/dist/server/routes/billing.test.js +159 -11
- package/dist/server/routes.test.js +91 -10
- package/dist/ui/agent-logos/Gemini CLI.jpeg +0 -0
- package/dist/ui/agent-logos/antigravity.jpeg +0 -0
- package/dist/ui/agent-logos/chatgpt.png +0 -0
- package/dist/ui/agent-logos/claude-code.jpeg +0 -0
- package/dist/ui/agent-logos/codex.jpeg +0 -0
- package/dist/ui/agent-logos/cursor.png +0 -0
- package/dist/ui/agent-logos/openclaw.jpeg +0 -0
- package/dist/ui/agent-logos/windsurf.png +0 -0
- package/dist/ui/assets/{AgentsModule-2y82_3DO.js → AgentsModule-BS4Pi_nC.js} +1 -1
- package/dist/ui/assets/{AnnotatedAttachmentWorkspace-BTLZZCiQ.js → AnnotatedAttachmentWorkspace-CCckzWYZ.js} +1 -1
- package/dist/ui/assets/{ContextAttachmentManager-D2epuNnG.js → ContextAttachmentManager-CfG_ER7C.js} +1 -1
- package/dist/ui/assets/{DocumentWorkspace-sVa-3Do6.js → DocumentWorkspace-BVaWPA25.js} +1 -1
- package/dist/ui/assets/{EntityActivityTimeline-Zods27y_.js → EntityActivityTimeline-DSj0ThaK.js} +1 -1
- package/dist/ui/assets/{InitiativesModule-D4XseTwW.js → InitiativesModule-AxMkWtxH.js} +1 -1
- package/dist/ui/assets/PlansPage-B_z-D6Nh.css +1 -0
- package/dist/ui/assets/PlansPage-Ndt7mYfo.js +1 -0
- package/dist/ui/assets/{TaskContextUpload-uC5qx4Bv.js → TaskContextUpload-Dw4rTF4i.js} +1 -1
- package/dist/ui/assets/{TaskSettings-CqvPAsTv.js → TaskSettings-f2ga42_V.js} +1 -1
- package/dist/ui/assets/{WorkflowsModule-oOA9bcdK.js → WorkflowsModule-E4UL3mov.js} +1 -1
- package/dist/ui/assets/documentReferences-BOUcJm6-.js +1 -0
- package/dist/ui/assets/{index-CYyodXsg.css → index-BvAbqx5Q.css} +1 -1
- package/dist/ui/assets/{index-607WPo_X.js → index-MAHKvFqp.js} +4 -4
- package/dist/ui/index.html +2 -2
- package/dist/ui/og-image.png +0 -0
- package/package.json +1 -1
- package/dist/ui/assets/PlansPage-D5AcbO0L.js +0 -1
- package/dist/ui/assets/PlansPage-Dvqsz5zc.css +0 -1
- package/dist/ui/assets/documentReferences-DPZuTgHh.js +0 -1
package/dist/ui/index.html
CHANGED
|
@@ -8,13 +8,13 @@
|
|
|
8
8
|
<link rel="icon" type="image/png" sizes="16x16" href="/favicon/favicon-16x16.png" />
|
|
9
9
|
<link rel="apple-touch-icon" href="/taskforce/favicon/apple-touch-icon.png" />
|
|
10
10
|
<title>Taskforce</title>
|
|
11
|
-
<script type="module" crossorigin src="/taskforce/assets/index-
|
|
11
|
+
<script type="module" crossorigin src="/taskforce/assets/index-MAHKvFqp.js"></script>
|
|
12
12
|
<link rel="modulepreload" crossorigin href="/taskforce/assets/vendor-react-CKJs5o3c.js">
|
|
13
13
|
<link rel="modulepreload" crossorigin href="/taskforce/assets/vendor-icons-B32hGuF2.js">
|
|
14
14
|
<link rel="modulepreload" crossorigin href="/taskforce/assets/vendor-markdown-BUxTU7dS.js">
|
|
15
15
|
<link rel="modulepreload" crossorigin href="/taskforce/assets/vendor-dnd-DRzYolkg.js">
|
|
16
16
|
<link rel="modulepreload" crossorigin href="/taskforce/assets/vendor-router-BbWMxlnO.js">
|
|
17
|
-
<link rel="stylesheet" crossorigin href="/taskforce/assets/index-
|
|
17
|
+
<link rel="stylesheet" crossorigin href="/taskforce/assets/index-BvAbqx5Q.css">
|
|
18
18
|
</head>
|
|
19
19
|
<body>
|
|
20
20
|
<div id="root"></div>
|
|
Binary file
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@taskforcehq/taskforce",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.309",
|
|
4
4
|
"description": "Mission Command center for AI-powered task management (beta - under active development)",
|
|
5
5
|
"author": "Taskforce HQ <hello@taskforcehq.ai> (https://taskforcehq.ai)",
|
|
6
6
|
"license": "MIT",
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{r as a,j as e}from"./vendor-react-CKJs5o3c.js";import{H as pe,t as Ue,J as Fe,K as we,L as me,N as de,O as Ve,Q as Oe}from"./index-607WPo_X.js";import{aI as De,h as Ke,U as He}from"./vendor-icons-B32hGuF2.js";import{u as Ye,a as ze}from"./vendor-router-BbWMxlnO.js";import"./vendor-markdown-BUxTU7dS.js";import"./vendor-dnd-DRzYolkg.js";const qe="_plansWrapper_6hvnk_1",We="_contentFrame_6hvnk_28",Ge="_shellOwnsScroll_6hvnk_36",Qe="_withChrome_6hvnk_42",Je="_siteVariant_6hvnk_46",Xe="_title_6hvnk_54",Ze="_subtitle_6hvnk_66",et="_header_6hvnk_70",tt="_planCard_6hvnk_82",nt="_grid_6hvnk_95",rt="_planName_6hvnk_101",at="_featureText_6hvnk_108",st="_currentBadge_6hvnk_112",it="_navAction_6hvnk_116",ot="_backBtn_6hvnk_117",ct="_priceRows_6hvnk_128",lt="_headerBar_6hvnk_145",ut="_headerActions_6hvnk_154",mt="_debugMeta_6hvnk_183",dt="_clickablePlanCard_6hvnk_212",pt="_activePlanCard_6hvnk_227",ft="_planDescription_6hvnk_262",gt="_callToAction_6hvnk_291",ht="_primaryCta_6hvnk_303",yt="_secondaryCta_6hvnk_314",_t="_currentCta_6hvnk_326",vt="_featuresList_6hvnk_340",kt="_priceRow_6hvnk_128",St="_priceRowAmount_6hvnk_366",Ct="_priceRowInterval_6hvnk_372",bt="_ctaRow_6hvnk_377",wt="_featureItem_6hvnk_383",xt="_featureIcon_6hvnk_389",It="_featureLimitAccent_6hvnk_403",Nt="_featureLimitUnit_6hvnk_414",Pt="_featureTextBlock_6hvnk_420",jt="_featureDescription_6hvnk_426",Rt="_emptyState_6hvnk_432",Tt="_marketingEmptyState_6hvnk_441",At="_emptyBadge_6hvnk_469",Bt="_emptyHighlights_6hvnk_484",Et="_loader_6hvnk_506",Lt="_spinner_6hvnk_516",$t="_statusBanner_6hvnk_569",Mt="_successBanner_6hvnk_577",Ut="_infoBanner_6hvnk_583",Ft="_errorBanner_6hvnk_589",r={plansWrapper:qe,contentFrame:We,shellOwnsScroll:Ge,withChrome:Qe,siteVariant:Je,title:Xe,subtitle:Ze,header:et,planCard:tt,grid:nt,planName:rt,featureText:at,currentBadge:st,navAction:it,backBtn:ot,priceRows:ct,headerBar:lt,headerActions:ut,debugMeta:mt,clickablePlanCard:dt,activePlanCard:pt,planDescription:ft,callToAction:gt,primaryCta:ht,secondaryCta:yt,currentCta:_t,featuresList:vt,priceRow:kt,priceRowAmount:St,priceRowInterval:Ct,ctaRow:bt,featureItem:wt,featureIcon:xt,featureLimitAccent:It,featureLimitUnit:Nt,featureTextBlock:Pt,featureDescription:jt,emptyState:Rt,marketingEmptyState:Tt,emptyBadge:At,emptyHighlights:Bt,loader:Et,spinner:Lt,statusBanner:$t,successBanner:Mt,infoBanner:Ut,errorBanner:Ft};function Vt(){const n=globalThis.__DEBUG_MODE__;return typeof n=="boolean"?n:!1}function Ot(n){const i=String(n?.environment||"").trim(),c=String(n?.runtimeMode||"").trim();return!i&&!c?null:i&&c?`${i} (${c})`:i||c||null}function Dt(n,i){if(n==null||!i)return"Contact Sales";try{return new Intl.NumberFormat("en-US",{style:"currency",currency:i.toUpperCase(),minimumFractionDigits:0}).format(n/100)}catch{return`${i.toUpperCase()} ${n/100}`}}function Kt(){return"$0.00"}function Pe(n){return n?n.pricingType==="free"?!0:n.unitAmount!=null&&n.currency!=null:!1}function je(n){return n?n.pricingType==="free"?Kt():Dt(n.unitAmount,n.currency):"Unavailable"}function Re(n){const i=[n.pricing.month,n.pricing.year].filter(Boolean);if(i.some(u=>u.pricingType==="free"))return 0;const c=i.map(u=>u.pricingType==="stripe"&&typeof u.unitAmount=="number"?u.unitAmount:null).filter(u=>u!=null);return c.length>0?Math.min(...c):Number.POSITIVE_INFINITY}function Ht(n){return String(n||"").replace(/[_\-.]+/g," ").replace(/\b\w/g,i=>i.toUpperCase())}function xe(n,i){const c=n?.[i],u=Number(c);return Number.isFinite(u)?Math.max(1,Math.floor(u)):null}function Yt(n,i){const c=String(n.publicLabel||n.label||"").trim()||Ht(n.featureKey),u=n.config&&typeof n.config=="object"?n.config:{};if(n.featureKey==="context.uploads"){const g=xe(u,"storageLimitMb");if(g!==null)return{limitValue:String(g),limitUnit:"MB",baseLabel:c}}if(n.featureKey==="workspace.workspaces"){const g=xe(u,"maxWorkspaces");if(g!==null)return{limitValue:String(g),limitUnit:"x",baseLabel:c}}if(n.featureKey==="collaboration.ai_profiles"){const g=xe(u,"maxAiProfiles");if(g!==null)return{limitValue:String(g),limitUnit:"x",baseLabel:c}}if(n.featureKey==="collaboration.team_management"){const g=Number(i);if(Number.isFinite(g)&&g>0)return{limitValue:String(Math.floor(g)),limitUnit:"x",baseLabel:c}}return{limitValue:null,limitUnit:null,baseLabel:c}}function zt({heading:n,subtitle:i,variant:c="app",chrome:u,footer:g,isAuthenticated:D,authSessionResolved:Ce=!0,currentPlanId:ae,currentPlanVersionId:J,currentEntitlementState:X,markCurrentPlan:K,canManageCurrentPlan:H=!0,pricingEndpoint:se,statusBanner:b,onBack:Z,backLabel:P,backDisabled:j=!1,topActions:A,shellOwnsScroll:ie=!1,showPageBackButton:fe=!0,showHeaderBarWithChrome:ee=!1,currentPlanCardActionMode:Y="manage",fallbackPricingSource:oe=null,onSelectPlan:z}){const[m,ce]=a.useState([]),[q,$]=a.useState(null),[le,L]=a.useState({pageTitle:null,pageDescription:null}),[R,T]=a.useState(!0),[te,M]=a.useState(null),[ge,he]=a.useState(0);a.useEffect(()=>{let o=!0;return(async()=>{const v=String(se||"/api/taskforce/public/pricing").trim()||"/api/taskforce/public/pricing";o&&(T(!0),M(null));try{const S=await fetch(v,{method:"GET",credentials:"include"}),d=await S.json().catch(()=>({}));if(S.ok){o&&(ce(Array.isArray(d?.plans)?d.plans:[]),$(d?.pricingSource&&typeof d.pricingSource=="object"?d.pricingSource:null),L({pageTitle:typeof d?.pageTitle=="string"&&d.pageTitle.trim()||null,pageDescription:typeof d?.pageDescription=="string"&&d.pageDescription.trim()||null}));return}throw new Error(String(d?.error||`Failed to load pricing (${S.status})`))}catch(S){if(o){const d=S instanceof Error?S.message:"Failed to load pricing";M(d||"Failed to load pricing"),$(null),L({pageTitle:null,pageDescription:null})}}finally{o&&T(!1)}})(),()=>{o=!1}},[se,ge]);const V=a.useMemo(()=>[...m].sort((o,h)=>{const v=Re(o),S=Re(h);if(v!==S)return v-S;const d=o.defaultVersion?.versionNumber||0,y=h.defaultVersion?.versionNumber||0;return d!==y?d-y:String(o.displayName||o.planId).localeCompare(String(h.displayName||h.planId))}),[m]),O=a.useMemo(()=>Ot(q||oe),[oe,q]),ye=String(le.pageTitle||n).trim()||n,_e=String(le.pageDescription||i||"").trim(),W=Ce,k=`${r.plansWrapper} ${ie?r.shellOwnsScroll:"tf-scrollbar"} ${c==="site"?r.siteVariant:""} ${u?r.withChrome:""}`.trim(),ne=o=>ie?e.jsxs(e.Fragment,{children:[u,o,g]}):e.jsxs("div",{className:Ue.standaloneWrapper,"data-theme":"dark",children:[u,o,g]});return ne(R?e.jsx(e.Fragment,{children:e.jsx("div",{className:k,children:e.jsx("div",{className:r.contentFrame,children:e.jsxs("div",{className:r.loader,children:[e.jsx(Ke,{size:48,className:r.spinner}),e.jsx("p",{children:"Loading plans..."})]})})})}):te?e.jsx(e.Fragment,{children:e.jsx("div",{className:k,children:e.jsx("div",{className:r.contentFrame,children:e.jsxs("div",{className:r.emptyState,children:[e.jsx("h2",{children:"Connecting to plan pricing..."}),e.jsx("p",{children:te}),e.jsx("button",{className:r.backBtn,onClick:()=>he(o=>o+1),children:"Retry"})]})})})}):e.jsx(e.Fragment,{children:e.jsx("div",{className:k,children:e.jsxs("div",{className:r.contentFrame,children:[e.jsxs("div",{className:r.header,children:[(!u||ee)&&(fe||A)&&e.jsxs("div",{className:r.headerBar,children:[e.jsx("div",{children:fe?e.jsx("button",{className:r.backBtn,onClick:Z,disabled:j,children:P}):null}),e.jsx("div",{className:r.headerActions,children:A})]}),e.jsx("h1",{className:r.title,children:ye}),_e&&e.jsx("p",{className:r.subtitle,children:_e}),Vt()&&O?e.jsxs("p",{className:r.debugMeta,children:["Pricing source: ",O]}):null,b&&e.jsx("div",{className:`${r.statusBanner} ${b.type==="success"?r.successBanner:b.type==="info"?r.infoBanner:r.errorBanner}`,children:b.message})]}),V.length===0?e.jsxs("div",{className:`${r.emptyState} ${r.marketingEmptyState}`,children:[e.jsx("span",{className:r.emptyBadge,children:"Coming Soon"}),e.jsx("h2",{children:"Paid plans are getting their final polish."}),e.jsx("p",{children:"Taskforce pricing is on the way with flexible options for solo operators, teams, and larger rollouts. Check back soon for launch tiers, feature bundles, and early access details."}),e.jsxs("div",{className:r.emptyHighlights,"aria-label":"Upcoming pricing highlights",children:[e.jsx("span",{children:"Launch-ready tiers"}),e.jsx("span",{children:"Team billing controls"}),e.jsx("span",{children:"Feature-based packaging"})]})]}):e.jsx("div",{className:r.grid,children:V.map(o=>{const h=o.pricing.month,v=o.pricing.year,S=Pe(h),d=Pe(v),y=String(o.defaultVersion?.planVersionId||"").trim(),I=pe(X),ue=K??I,G=!!(y&&J&&J===y)||!!(!J&&(ae&&ae===o.planId)),E=ue&&G&&X!=="canceled",U=S?"month":d?"year":null,Q=U==="year"?v:h,re=Y==="manage",be=Y==="indicator",F=W&&!!y&&(E?re&&H:!!U),ve=()=>{if(y){if(E){if(!re||!H)return;z({planId:o.planId,planVersionId:y,interval:U||"month",pricingType:Q?.pricingType||"stripe",isCurrentPlan:!0});return}U&&z({planId:o.planId,planVersionId:y,interval:U,pricingType:Q?.pricingType||"stripe",isCurrentPlan:!1})}};return e.jsxs("div",{className:`${r.planCard} ${E?r.activePlanCard:""} ${F?r.clickablePlanCard:""}`,"data-testid":`plan-card-${o.planId}`,role:F?"button":void 0,tabIndex:F?0:void 0,onClick:F?ve:void 0,onKeyDown:F?C=>{(C.key==="Enter"||C.key===" ")&&(C.preventDefault(),ve())}:void 0,children:[E&&e.jsx("span",{className:r.currentBadge,children:"Current Plan"}),e.jsx("h3",{className:r.planName,children:o.displayName}),String(o.description||"").trim()&&e.jsx("p",{className:r.planDescription,children:String(o.description||"").trim()}),e.jsx("div",{className:r.featuresList,children:Array.isArray(o.features)&&o.features.length>0?o.features.map((C,t)=>e.jsxs("div",{className:r.featureItem,children:[e.jsx(De,{className:r.featureIcon}),e.jsxs("div",{className:r.featureTextBlock,children:[(()=>{const{limitValue:s,limitUnit:f,baseLabel:l}=Yt(C,o.defaultVersion?.seatLimit);return e.jsxs("span",{className:r.featureText,children:[s&&e.jsxs("span",{className:r.featureLimitAccent,children:[e.jsx("span",{children:s}),f?e.jsx("span",{className:f==="MB"?r.featureLimitUnit:void 0,children:f}):null]}),e.jsx("span",{children:s?` ${l}`:l})]})})(),String(C.publicDescription||C.description||"").trim()&&e.jsx("span",{className:r.featureDescription,children:String(C.publicDescription||C.description||"").trim()})]})]},`${C.featureKey}-${t}`)):e.jsx("span",{className:r.featureText,children:"No additional features included"})}),S||d?e.jsxs("div",{className:r.priceRows,children:[S?e.jsxs("div",{className:r.priceRow,children:[e.jsx("span",{className:r.priceRowAmount,children:je(h)}),e.jsx("span",{className:r.priceRowInterval,children:"/ month"})]}):null,d?e.jsxs("div",{className:r.priceRow,children:[e.jsx("span",{className:r.priceRowAmount,children:je(v)}),e.jsx("span",{className:r.priceRowInterval,children:"/ year"})]}):null]}):null,E?re?e.jsx("button",{className:`${r.callToAction} ${r.currentCta}`,"data-testid":`plan-manage-${o.planId}`,onClick:C=>{C.stopPropagation(),H&&z({planId:o.planId,planVersionId:y,interval:U||"month",pricingType:Q?.pricingType||"stripe",isCurrentPlan:!0})},disabled:!y||!H||!W,children:D&&H?"Manage Plan":"Current Plan"}):be?e.jsx("button",{className:`${r.callToAction} ${r.currentCta}`,"data-testid":`plan-current-${o.planId}`,disabled:!0,children:"Current Plan"}):null:e.jsxs("div",{className:r.ctaRow,children:[S?e.jsx("button",{className:`${r.callToAction} ${r.secondaryCta}`,"data-testid":`plan-select-${o.planId}-month`,onClick:C=>{C.stopPropagation(),z({planId:o.planId,planVersionId:y,interval:"month",pricingType:h?.pricingType||"stripe",isCurrentPlan:!1})},disabled:!y||!W,children:h?.pricingType==="free"?D?"Select Free":"Get Started Free":D?"Choose Monthly":"Get Started Monthly"}):null,d?e.jsx("button",{className:`${r.callToAction} ${r.primaryCta}`,"data-testid":`plan-select-${o.planId}-year`,onClick:C=>{C.stopPropagation(),z({planId:o.planId,planVersionId:y,interval:"year",pricingType:v?.pricingType||"stripe",isCurrentPlan:!1})},disabled:!y||!W,children:v?.pricingType==="free"?D?"Select Free":"Get Started Free":D?"Choose Yearly":"Get Started Yearly"}):null]})]},o.planId)})})]})})}))}const qt=1600,Te=[0,500,1e3,2e3],Wt=5e3,Gt=45e3,Qt="Choose a plan to continue.";function Jt(n,i){if(n===401)return!0;const c=String(i||"").trim().toUpperCase();return c==="CHECKOUT_SESSION_INCOMPLETE"||c==="CHECKOUT_PLAN_VERSION_UNRESOLVED"}function Xt(n){return n==="year"?"year":"month"}function Ie(n){const i=String(n||"").trim().toLowerCase();return i==="year"?"year":i==="month"?"month":null}function Ae(n){const i=String(n||"").trim();return i?i.replace(/\/+$/,""):""}function Ne(n={}){const i=new URLSearchParams;i.set("screen","plans");for(const[c,u]of Object.entries(n)){const g=String(u||"").trim();g&&i.set(c,g)}return`/?${i.toString()}`}function ln({isAuthenticated:n,authUserId:i,runtimeMode:c,authSessionResolved:u,currentTheme:g="dark",projectName:D,currentWorkspaceId:Ce,apiBaseUrl:ae,connectedEnvironmentSource:J,resolveCloudAuthUrl:X,embedded:K=!1,shellOwnsScroll:H=!1,onAccountProfileSummaryChange:se,onContinueToTaskforce:b,continueBusy:Z=!1}){const P=Ye(),j=ze(),[A,ie]=a.useState(null),[fe,ee]=a.useState(!1),[Y,oe]=a.useState(!1),[z,m]=a.useState(null),ce=a.useRef(!1),q=a.useRef(null),$=a.useRef(null),le=a.useRef(b),L=a.useMemo(()=>new URLSearchParams(j.search),[j.search]),R=String(L.get("checkout")||"").trim().toLowerCase(),T=String(L.get("gate")||"").trim().toLowerCase(),te=String(L.get("planId")||"").trim(),M=String(L.get("planVersionId")||"").trim(),ge=Xt(L.get("interval")),he=Ie(L.get("interval")),V=String(L.get("session_id")||"").trim(),O=a.useMemo(()=>Ae(ae),[ae]),ye=a.useMemo(()=>Ae(J),[J]),_e=a.useMemo(()=>({environment:Fe(ye||O),runtimeMode:c==="cloud"?"cloud":"local"}),[O,ye,c]),W=a.useCallback(t=>{const s=String(t||"").trim();return O?`${O}${s.startsWith("/")?s:`/${s}`}`:s},[O]),k=a.useCallback(t=>X?X(t):W(t),[W,X]),ne=a.useCallback(()=>{const t=new URLSearchParams(j.search);t.delete("screen"),t.delete("gate"),t.delete("checkout"),t.delete("planId"),t.delete("planVersionId"),t.delete("interval");const s=t.toString();P(`/${s?`?${s}`:""}${j.hash||""}`)},[j.hash,j.search,P]),o=a.useMemo(()=>k("/api/taskforce/public/pricing"),[k]),h=a.useMemo(()=>we(A,T),[A,T]),v=a.useMemo(()=>h.allowReturnToApp,[h.allowReturnToApp]),S=a.useMemo(()=>{const t=String(h.message||"").trim();return!t||t===Qt?null:t},[h.message]),d=a.useCallback(()=>{const t=new URLSearchParams(j.search);t.delete("checkout"),t.delete("session_id"),t.delete("gate"),t.delete("planId"),t.delete("planVersionId"),t.delete("interval");const s=t.toString();P(`${j.pathname}${s?`?${s}`:""}${j.hash||""}`,{replace:!0})},[j.hash,j.pathname,j.search,P]),y=a.useCallback(()=>{$.current!=null&&window.clearTimeout($.current),$.current=window.setTimeout(()=>{d(),$.current=null},qt)},[d]);a.useEffect(()=>{le.current=b},[b]);const I=a.useCallback(async t=>{const s=k(me);if(!n)return ie(null),de(s,{identityKey:i}),null;try{const f=await Ve(s,{identityKey:i,force:t?.force===!0});return ie(f),se?.(f),f}catch{return null}},[i,k,n,se]),ue=a.useCallback((t,s,f)=>{const l=String(s||"").trim();if(f?.preferFallback&&l)return l;const _=we(t,T).message;return _||l||"Unable to confirm checkout completion."},[T]),G=a.useCallback((t,s)=>!we(t,s).allowReturnToApp,[]),E=a.useCallback(async(t,s,f)=>{if(!t){m({type:"error",message:"Selected plan is missing a default plan version."});return}ee(!0),m(null);try{const l=await fetch(k("/api/taskforce/billing/checkout-session"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({planVersionId:t,interval:s})}),_=await l.json().catch(()=>({}));if(!l.ok){m({type:"error",message:String(_?.error||"Unable to start checkout for selected plan.")});return}const p=String(_?.checkoutState||"").trim().toLowerCase();if(p==="free"){m({type:"success",message:"Plan selected. Your access is ready."}),de(k(me),{identityKey:i});const x=await I({force:!0}),N=String(x?.entitlementState||"").trim().toLowerCase();f?.autoContinueOnActivation===!0&&pe(N)&&await b?.();return}if(p==="updated"){m({type:"success",message:String(_?.message||"Your subscription was updated successfully.")}),de(k(me),{identityKey:i});const x=await I({force:!0}),N=String(x?.entitlementState||"").trim().toLowerCase();f?.autoContinueOnActivation===!0&&pe(N)&&await b?.();return}if(p==="already_current_plan"){m({type:"success",message:String(_?.message||"You are already on this plan.")}),de(k(me),{identityKey:i}),await I();return}const B=String(_?.returnBaseUrl||"").trim();if(c==="local"&&B)try{const x=window.location.origin,N=new URL(B,x).origin;if(N!==x){m({type:"error",message:`Checkout return is misconfigured for this runtime. Expected ${x} but got ${N}.`});return}}catch{m({type:"error",message:"Checkout return URL is invalid for this runtime."});return}const w=String(_?.url||"").trim();if(!w){m({type:"error",message:"Checkout did not return a redirect URL."});return}window.location.assign(w)}catch{m({type:"error",message:"Unable to start checkout for selected plan."})}finally{ee(!1)}},[i,k,I,b,c]),U=a.useCallback(async(t,s)=>{if(!t)return{confirmed:!1,errorMessage:"Checkout session is missing.",retryable:!1};const f=async()=>{de(k(me),{identityKey:i});const l=await I({force:!0}),_=String(l?.entitlementState||"").trim().toLowerCase();if(!pe(_))return!1;const p=te,B=M,w=he,x=String(l?.planId||"").trim(),N=String(l?.planVersionId||"").trim(),ke=Ie(l?.billingInterval??null),Se=s?.preConfirmationSummary??null,Be=String(Se?.entitlementState||"").trim().toLowerCase(),Ee=pe(Be),Le=String(Se?.planId||"").trim(),$e=String(Se?.planVersionId||"").trim(),Me=Ie(Se?.billingInterval??null);return p&&x&&x!==p||B&&N&&N!==B||w&&ke&&ke!==w||Ee&&!(!!p&&x===p&&Le!==x)&&!(!!B&&N===B&&$e!==N)&&!(!!w&&ke===w&&Me!==ke)?!1:(s?.autoContinueOnActivation===!0&&await le.current?.(),!0)};try{const l=await fetch(k("/api/taskforce/billing/checkout-session/confirm"),{method:"POST",credentials:"include",headers:{"Content-Type":"application/json"},body:JSON.stringify({sessionId:t})}),_=await l.json().catch(()=>({}));if(!l.ok){const p=String(_?.code||"").trim(),B=Jt(l.status,p);return B&&await f()?{confirmed:!0}:{confirmed:!1,errorMessage:String(_?.error||"Unable to confirm checkout completion."),retryable:B}}return await f()?{confirmed:!0}:{confirmed:!0}}catch{return{confirmed:!1,errorMessage:"Unable to confirm checkout completion.",retryable:!0}}},[i,k,I,he,te,M]),Q=a.useCallback(async()=>{if(!n){P(`/login?mode=login&next=${encodeURIComponent(Ne())}`);return}ee(!0),m({type:"info",message:"Opening billing portal..."});try{const t=await fetch(k("/api/taskforce/billing/portal-session"),{method:"POST",credentials:"include"}),s=await t.json().catch(()=>({}));if(!t.ok){m({type:"error",message:String(s?.error||"Failed to open billing portal.")});return}const f=String(s?.url||"").trim();if(!f){m({type:"error",message:"Portal session did not return a redirect URL."});return}window.location.assign(f)}catch{m({type:"error",message:"Failed to open billing portal."})}finally{ee(!1)}},[k,n,P]),re=a.useCallback(async()=>{if(!(!b||Y||Z)){oe(!0);try{await b()}finally{oe(!1)}}},[Y,Z,b]);a.useEffect(()=>{I()},[I]),a.useEffect(()=>{v&&T==="missing_entitlement"&&d()},[d,T,v]),a.useEffect(()=>()=>{$.current!=null&&window.clearTimeout($.current)},[]),a.useEffect(()=>{R!=="success"&&(q.current=null)},[R]),a.useEffect(()=>{let t=!1;const s=new Set,f=async l=>{l<=0||await new Promise(_=>{const p=window.setTimeout(()=>{s.delete(p),_()},l);s.add(p)})};if(R==="success"){if(ce.current=!0,m({type:"success",message:"Checkout completed successfully. Finalizing your plan..."}),!n&&!u)return()=>{t=!0,s.forEach(p=>window.clearTimeout(p)),s.clear()};if(!n)return m({type:"error",message:"Sign in to finish activating your plan."}),()=>{t=!0,s.forEach(p=>window.clearTimeout(p)),s.clear()};const _=V||"__missing_session__";return q.current===_?()=>{t=!0,s.forEach(p=>window.clearTimeout(p)),s.clear()}:((async()=>{const p=Date.now(),B=await I({force:!0});if(t)return;let w=V?{confirmed:!1,errorMessage:"Unable to confirm checkout completion.",retryable:!0}:{confirmed:!1,errorMessage:"Checkout session is missing.",retryable:!1},x=0;for(;;){const N=x<Te.length?Te[x]:Wt;if(x+=1,await f(N),t||(w=V?await U(V,{autoContinueOnActivation:G(B,T),preConfirmationSummary:B}):{confirmed:!1,errorMessage:"Checkout session is missing.",retryable:!1},t))return;if(w.confirmed){q.current=_,m({type:"success",message:"Checkout completed successfully."}),y();return}if(!w.retryable||Date.now()-p>=Gt)break}if(!t&&!w.confirmed){const N=await I({force:!0});if(t)return;w.retryable||(q.current=_),m({type:"error",message:ue(N,w.errorMessage,{preferFallback:!w.retryable})}),w.retryable||y();return}})(),()=>{t=!0,s.forEach(p=>window.clearTimeout(p)),s.clear()})}if(R==="cancel"){(async()=>{const l=await I({force:!0});m({type:"error",message:ue(l,"Checkout was canceled. No charge was made.")}),y()})();return}if((R==="start"||R==="free")&&n&&M&&!ce.current){ce.current=!0,(async()=>{const l=await I({force:!0});await E(M,ge,{autoContinueOnActivation:G(l,T)})})();return}},[u,R,U,T,n,I,ge,M,V,ue,y,G,E]),a.useEffect(()=>{if(!(R==="success"||R==="cancel"||R==="start"||R==="free")){if(S){m({type:h.statusTone,message:S});return}m(t=>!t||t.type!=="error"?t:t.message===h.message?null:t)}},[R,S,h.message,h.statusTone]);const be=a.useCallback(async t=>{if(!n){const f=t.pricingType==="free"?"free":"start",l=Ne({checkout:f,planId:t.planId,planVersionId:t.planVersionId,interval:t.interval});P(`/login?mode=register&planId=${encodeURIComponent(t.planId)}&planVersionId=${encodeURIComponent(t.planVersionId)}&interval=${encodeURIComponent(t.interval)}&next=${encodeURIComponent(l)}`);return}if(t.isCurrentPlan){if(!A?.stripeCustomerId){m({type:"success",message:"Your current plan does not use Stripe billing."});return}await Q();return}const s=G(A,T);if(t.pricingType==="free"){await E(t.planVersionId,t.interval,{autoContinueOnActivation:s});return}await E(t.planVersionId,t.interval,{autoContinueOnActivation:s})},[A,T,n,P,Q,G,E]),F=a.useCallback(()=>{if(v&&b){re();return}if(K){ne();return}if(window.history.length>1){P(-1);return}P("/")},[ne,K,re,v,P,b]),ve=K?null:e.jsxs(e.Fragment,{children:[e.jsx("button",{className:r.navAction,onClick:F,disabled:Z||Y||n&&!v,children:v?"Take Me to Taskforce":"Back"}),n&&A?.stripeCustomerId&&e.jsx("button",{className:r.navAction,onClick:()=>{Q()},disabled:fe,children:"Manage billing"}),!n&&e.jsxs("button",{className:r.navAction,onClick:()=>P(`/login?mode=login&next=${encodeURIComponent(Ne())}`),children:[e.jsx(He,{size:16,style:{marginRight:"8px",verticalAlign:"text-bottom"}}),"Sign In"]})]}),C=K?null:e.jsx(Oe,{projectName:D,currentWorkspaceId:Ce,runtimeMode:c==="cloud"?"cloud":"local",theme:g,onBrandClick:F,actions:ve});return e.jsx(zt,{chrome:C,heading:"Subscription Plans",subtitle:"Manage your subscription and explore available features. Your current plan is highlighted below.",isAuthenticated:n,authSessionResolved:u,currentPlanId:String(A?.planId||te||"").trim()||null,currentPlanVersionId:String(A?.planVersionId||M||"").trim()||null,currentEntitlementState:String(A?.entitlementState||"").trim()||null,markCurrentPlan:h.markCurrentPlan,canManageCurrentPlan:!!A?.stripeCustomerId,pricingEndpoint:o,statusBanner:z,onBack:F,backLabel:v?"Take Me to Taskforce":K?"Back to Board":"Back to App",backDisabled:Z||Y||n&&!v,topActions:null,shellOwnsScroll:H,showPageBackButton:!1,showHeaderBarWithChrome:!1,currentPlanCardActionMode:"manage",fallbackPricingSource:_e,onSelectPlan:be})}export{ln as PlansPage};
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
._plansWrapper_6hvnk_1{--plans-accent: var(--brand-primary, #6366f1);--plans-accent-strong: var(--brand-primary-strong, #7c3aed);--plans-accent-soft: var(--brand-primary-soft, rgba(99, 102, 241, .1));--plans-accent-border: var(--brand-primary-border, rgba(99, 102, 241, .24));--plans-surface: color-mix(in srgb, var(--surface-panel) 84%, var(--surface-page));--plans-surface-elevated: color-mix(in srgb, var(--surface-elevated) 88%, var(--surface-panel));--plans-surface-strong: color-mix(in srgb, var(--surface-page) 70%, var(--surface-panel));--plans-shadow: 0 22px 44px rgba(0, 0, 0, .18);overflow-y:auto;display:flex;flex-direction:column;align-items:stretch;align-self:stretch;width:100%;flex:1;min-height:100%;min-width:0;padding:64px 24px;box-sizing:border-box;background:radial-gradient(900px 520px at 18% -4%,color-mix(in srgb,var(--plans-accent) 18%,transparent),transparent 62%),radial-gradient(780px 480px at 88% 2%,color-mix(in srgb,var(--brand-cloud-accent, #dd6b20) 12%,transparent),transparent 60%),linear-gradient(180deg,color-mix(in srgb,var(--surface-page) 94%,var(--surface-panel)),var(--surface-page));scrollbar-gutter:stable}._contentFrame_6hvnk_28{width:min(1100px,100%);max-width:1100px;margin:0 auto;display:flex;flex-direction:column}._shellOwnsScroll_6hvnk_36{overflow:visible;min-height:100%;scrollbar-gutter:auto}._withChrome_6hvnk_42{padding-top:32px}._siteVariant_6hvnk_46{background:radial-gradient(1200px 700px at 20% -10%,rgba(56,189,248,.25),transparent 60%),radial-gradient(900px 600px at 90% 0%,rgba(45,212,191,.18),transparent 65%),linear-gradient(150deg,#0b1022,#111936);padding:56px 24px 80px}._siteVariant_6hvnk_46 ._title_6hvnk_54{background:none;-webkit-text-fill-color:var(--text-primary);color:var(--text-primary);font-size:clamp(34px,6vw,58px);font-family:var(--font-brand);font-style:italic;text-transform:uppercase;letter-spacing:-.03em;margin-bottom:0}._siteVariant_6hvnk_46 ._subtitle_6hvnk_66{color:#a6b3d9}._siteVariant_6hvnk_46 ._header_6hvnk_70{width:100%;max-width:1040px;border:1px solid rgba(203,213,255,.2);border-radius:20px;padding:42px 28px;background:#090e208c;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);text-align:left;margin-bottom:20px}._siteVariant_6hvnk_46 ._planCard_6hvnk_82{background:#090e20b3;border-color:#cbd5ff33;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border-radius:16px;padding:22px 20px}._siteVariant_6hvnk_46 ._planCard_6hvnk_82:hover{transform:translateY(-3px);box-shadow:none}._siteVariant_6hvnk_46 ._grid_6hvnk_95{max-width:1040px;gap:12px;grid-template-columns:repeat(3,minmax(0,1fr))}._siteVariant_6hvnk_46 ._planName_6hvnk_101{font-size:22px;font-family:var(--font-brand);font-style:italic;text-transform:uppercase}._siteVariant_6hvnk_46 ._featureText_6hvnk_108{color:#a6b3d9}._siteVariant_6hvnk_46 ._currentBadge_6hvnk_112{font-size:11px}._siteVariant_6hvnk_46 ._navAction_6hvnk_116,._siteVariant_6hvnk_46 ._backBtn_6hvnk_117{border:1px solid rgba(203,213,255,.2);background:#141d3c99;color:#f6f8ff}._siteVariant_6hvnk_46 ._backBtn_6hvnk_117:hover,._siteVariant_6hvnk_46 ._navAction_6hvnk_116:hover{background:#141d3cd9}._siteVariant_6hvnk_46 ._priceRows_6hvnk_128{border-top-color:#cbd5ff33}._header_6hvnk_70{width:100%;text-align:left;margin-bottom:32px;padding:32px;border-radius:28px;border:1px solid var(--border-default);background:linear-gradient(180deg,color-mix(in srgb,var(--plans-surface-elevated) 92%,transparent),color-mix(in srgb,var(--plans-surface) 96%,transparent)),var(--plans-surface);box-shadow:var(--plans-shadow)}._headerBar_6hvnk_145{width:100%;display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:24px}._headerActions_6hvnk_154{display:flex;align-items:center;justify-content:flex-end;gap:12px;flex-wrap:wrap}._title_6hvnk_54{font-size:clamp(38px,5vw,54px);font-weight:800;font-family:var(--font-brand);font-style:italic;text-transform:uppercase;margin-bottom:16px;background:linear-gradient(135deg,var(--text-primary),color-mix(in srgb,var(--plans-accent) 72%,var(--text-primary)));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent;letter-spacing:-.04em;line-height:.98}._subtitle_6hvnk_66{font-size:18px;color:var(--text-secondary);line-height:1.7}._debugMeta_6hvnk_183{margin-top:16px;font-size:13px;color:var(--text-secondary);opacity:.8}._grid_6hvnk_95{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:20px;width:100%}._planCard_6hvnk_82{background:linear-gradient(180deg,color-mix(in srgb,var(--plans-surface-elevated) 90%,transparent),color-mix(in srgb,var(--plans-surface) 96%,transparent)),var(--plans-surface);border:1px solid var(--border-default);border-radius:22px;padding:28px;display:flex;flex-direction:column;position:relative;overflow:hidden;box-shadow:0 12px 28px #0000001f;transition:transform .24s ease,box-shadow .24s ease,border-color .24s ease,background .24s ease}._clickablePlanCard_6hvnk_212{cursor:pointer}._clickablePlanCard_6hvnk_212:focus-visible{outline:2px solid var(--plans-accent);outline-offset:4px}._planCard_6hvnk_82:hover{transform:translateY(-4px);border-color:var(--plans-accent-border);box-shadow:0 20px 36px #0000002e}._activePlanCard_6hvnk_227{border:1px solid color-mix(in srgb,var(--plans-accent) 38%,var(--border-default));background:linear-gradient(180deg,color-mix(in srgb,var(--plans-accent) 10%,var(--plans-surface-elevated)),color-mix(in srgb,var(--plans-accent) 4%,var(--plans-surface))),var(--plans-surface);box-shadow:0 18px 34px #0000002e,inset 0 0 0 1px color-mix(in srgb,var(--plans-accent) 16%,transparent)}._currentBadge_6hvnk_112{position:absolute;top:20px;right:20px;background:color-mix(in srgb,var(--plans-accent) 16%,var(--surface-page));color:var(--plans-accent-strong);font-size:12px;font-weight:700;padding:6px 12px;border-radius:999px;border:1px solid color-mix(in srgb,var(--plans-accent) 26%,transparent);text-transform:uppercase;letter-spacing:.08em}._planName_6hvnk_101{font-size:28px;font-weight:700;font-family:var(--font-brand);font-style:italic;text-transform:uppercase;color:var(--text-primary);margin-bottom:14px}._planDescription_6hvnk_262{margin:-4px 0 18px;color:var(--text-secondary);font-size:15px;line-height:1.45;max-width:34ch}._priceDisplay_6hvnk_270{margin-bottom:32px;display:flex;align-items:baseline;gap:8px}._priceAmount_6hvnk_277{font-size:56px;font-weight:800;color:var(--text-primary);letter-spacing:-2px;line-height:1}._priceInterval_6hvnk_285{font-size:16px;color:var(--text-secondary);font-weight:500}._callToAction_6hvnk_291{width:100%;padding:14px 18px;border-radius:12px;font-size:15px;font-weight:600;border:1px solid transparent;cursor:pointer;transition:all .2s ease;margin-bottom:0}._primaryCta_6hvnk_303{background:var(--button-primary-bg);border-color:var(--button-primary-border);color:var(--button-primary-text, white)}._primaryCta_6hvnk_303:hover{transform:translateY(-1px);box-shadow:0 10px 22px var(--brand-primary-glow)}._secondaryCta_6hvnk_314{background:var(--button-secondary-bg);color:var(--button-secondary-text);border-color:var(--button-secondary-border)}._secondaryCta_6hvnk_314:hover{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:var(--button-secondary-hover-text)}._currentCta_6hvnk_326{background:color-mix(in srgb,var(--plans-accent) 9%,var(--plans-surface-strong));color:var(--text-primary);border-color:color-mix(in srgb,var(--plans-accent) 24%,var(--border-default));box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--plans-accent) 10%,transparent);cursor:pointer}._currentCta_6hvnk_326:hover{background:color-mix(in srgb,var(--plans-accent) 14%,var(--plans-surface-strong));border-color:color-mix(in srgb,var(--plans-accent) 32%,var(--border-default));transform:translateY(-1px)}._featuresList_6hvnk_340{flex:1;display:flex;flex-direction:column;gap:20px;margin-bottom:28px}._priceRows_6hvnk_128{display:flex;flex-direction:column;gap:10px;margin-top:auto;margin-bottom:16px;border-top:1px solid var(--border-default);padding-top:16px}._priceRow_6hvnk_128{display:flex;align-items:baseline;justify-content:flex-end;gap:10px;text-align:right}._priceRowAmount_6hvnk_366{font-size:22px;font-weight:700;color:var(--text-primary)}._priceRowInterval_6hvnk_372{color:var(--text-secondary);font-weight:600}._ctaRow_6hvnk_377{display:grid;grid-template-columns:1fr;gap:10px}._featureItem_6hvnk_383{display:flex;align-items:flex-start;gap:16px}._featureIcon_6hvnk_389{color:var(--plans-accent);flex-shrink:0;width:20px;height:20px;margin-top:2px}._featureText_6hvnk_108{font-size:16px;line-height:1.5;color:var(--text-primary)}._featureLimitAccent_6hvnk_403{font-family:var(--font-brand);font-style:italic;color:var(--brand-cloud-accent, #ff8a00);letter-spacing:.01em;font-size:28px;line-height:.92;display:inline-block;margin-right:6px}._featureLimitUnit_6hvnk_414{font-size:.74em;line-height:1;vertical-align:baseline}._featureTextBlock_6hvnk_420{display:flex;flex-direction:column;gap:4px}._featureDescription_6hvnk_426{font-size:13px;line-height:1.45;color:var(--text-secondary)}._emptyState_6hvnk_432{text-align:center;padding:64px;background:var(--bg-secondary);border-radius:24px;border:1px dashed var(--border-color, var(--border-primary, rgba(255, 255, 255, .14)));width:100%}._marketingEmptyState_6hvnk_441{max-width:920px;border-style:solid;border-radius:28px;padding:72px 48px;background:radial-gradient(560px 260px at 15% 10%,rgba(34,197,94,.15),transparent 60%),radial-gradient(620px 320px at 85% 0%,rgba(251,191,36,.16),transparent 62%),linear-gradient(145deg,#0f172af5,#111827eb);box-shadow:0 28px 90px #00000047}._marketingEmptyState_6hvnk_441 h2{margin:18px 0 14px;font-size:clamp(32px,4vw,52px);line-height:1.02;letter-spacing:-.04em;color:#f8fafc}._marketingEmptyState_6hvnk_441 p{margin:0 auto;max-width:680px;font-size:18px;line-height:1.7;color:#cbd5e1}._emptyBadge_6hvnk_469{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:999px;background:#f8fafc14;border:1px solid rgba(248,250,252,.18);color:#f8fafc;font-size:12px;font-weight:800;letter-spacing:.14em;text-transform:uppercase}._emptyHighlights_6hvnk_484{display:flex;flex-wrap:wrap;justify-content:center;gap:12px;margin-top:28px}._emptyHighlights_6hvnk_484 span{display:inline-flex;align-items:center;gap:8px;padding:10px 14px;border-radius:999px;background:#94a3b81f;border:1px solid rgba(148,163,184,.18);color:#e2e8f0;font-size:13px;font-weight:700;letter-spacing:.02em}._loader_6hvnk_506{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:50vh;gap:24px;color:var(--text-secondary)}._spinner_6hvnk_516{animation:_spin_6hvnk_516 1s linear infinite;color:var(--accent-primary, #6366f1)}@keyframes _spin_6hvnk_516{0%{transform:rotate(0)}to{transform:rotate(360deg)}}._backBtn_6hvnk_117{background:var(--button-secondary-bg);border:1px solid var(--button-secondary-border);color:var(--button-secondary-text);display:flex;align-items:center;gap:8px;font-size:14px;font-weight:600;cursor:pointer;padding:10px 16px;border-radius:12px;transition:all .2s ease}._backBtn_6hvnk_117:hover{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:var(--button-secondary-hover-text)}._navAction_6hvnk_116{background:var(--button-secondary-bg);border:1px solid var(--button-secondary-border);color:var(--button-secondary-text);padding:10px 20px;border-radius:12px;font-weight:600;cursor:pointer;transition:all .2s ease}._navAction_6hvnk_116:hover{background:var(--button-secondary-hover-bg);border-color:var(--button-secondary-hover-border);color:var(--button-secondary-hover-text)}._statusBanner_6hvnk_569{margin-top:24px;padding:12px 24px;border-radius:12px;font-weight:500;font-size:14px}._successBanner_6hvnk_577{background:color-mix(in srgb,var(--status-success) 12%,var(--plans-surface-elevated));color:var(--status-success);border:1px solid color-mix(in srgb,var(--status-success) 24%,transparent)}._infoBanner_6hvnk_583{background:color-mix(in srgb,var(--button-primary-bg) 10%,var(--plans-surface-elevated));color:var(--text-secondary);border:1px solid color-mix(in srgb,var(--button-primary-bg) 18%,transparent)}._errorBanner_6hvnk_589{background:color-mix(in srgb,var(--status-error) 12%,var(--plans-surface-elevated));color:var(--status-error);border:1px solid color-mix(in srgb,var(--status-error) 24%,transparent)}@media(max-width:768px){._plansWrapper_6hvnk_1{padding:28px 14px}._withChrome_6hvnk_42{padding-top:24px}._header_6hvnk_70{margin-bottom:24px;padding:22px 18px}._headerBar_6hvnk_145{gap:10px;flex-wrap:wrap;margin-bottom:18px}._title_6hvnk_54{font-size:34px;margin-bottom:12px}._grid_6hvnk_95{grid-template-columns:1fr;gap:18px}._siteVariant_6hvnk_46 ._grid_6hvnk_95{grid-template-columns:1fr}._siteVariant_6hvnk_46 ._header_6hvnk_70{padding:26px 18px}._planCard_6hvnk_82{padding:22px}._marketingEmptyState_6hvnk_441{padding:56px 24px}._marketingEmptyState_6hvnk_441 h2{font-size:34px}._marketingEmptyState_6hvnk_441 p{font-size:16px}._headerActions_6hvnk_154{width:100%;justify-content:flex-start}}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
import{a1 as t}from"./index-607WPo_X.js";const n="D-";function E(e){return t(n,e)}export{E as g};
|