Compare commits

...

2 Commits
main ... dev

Author SHA1 Message Date
miloschwartz
333625f199 rename starter in cloud to basic 2026-02-12 20:24:23 -08:00
Owen
dbfd715381 Fix windows formatting 2026-02-12 16:27:51 -08:00
3 changed files with 22 additions and 22 deletions

View File

@@ -15,10 +15,10 @@ export const sandboxLimitSet: LimitSet = {
}; };
export const freeLimitSet: LimitSet = { export const freeLimitSet: LimitSet = {
[FeatureId.USERS]: { value: 5, description: "Starter limit" }, [FeatureId.SITES]: { value: 5, description: "Basic limit" },
[FeatureId.SITES]: { value: 5, description: "Starter limit" }, [FeatureId.USERS]: { value: 5, description: "Basic limit" },
[FeatureId.DOMAINS]: { value: 5, description: "Starter limit" }, [FeatureId.DOMAINS]: { value: 5, description: "Basic limit" },
[FeatureId.REMOTE_EXIT_NODES]: { value: 1, description: "Starter limit" }, [FeatureId.REMOTE_EXIT_NODES]: { value: 1, description: "Basic limit" },
}; };
export const tier1LimitSet: LimitSet = { export const tier1LimitSet: LimitSet = {

View File

@@ -61,7 +61,7 @@ import {
import { FeatureId } from "@server/lib/billing/features"; import { FeatureId } from "@server/lib/billing/features";
// Plan tier definitions matching the mockup // Plan tier definitions matching the mockup
type PlanId = "starter" | "home" | "team" | "business" | "enterprise"; type PlanId = "basic" | "home" | "team" | "business" | "enterprise";
type PlanOption = { type PlanOption = {
id: PlanId; id: PlanId;
@@ -73,8 +73,8 @@ type PlanOption = {
const planOptions: PlanOption[] = [ const planOptions: PlanOption[] = [
{ {
id: "starter", id: "basic",
name: "Starter", name: "Basic",
price: "Free", price: "Free",
tierType: null tierType: null
}, },
@@ -109,10 +109,10 @@ const planOptions: PlanOption[] = [
// Tier limits mapping derived from limit sets // Tier limits mapping derived from limit sets
const tierLimits: Record< const tierLimits: Record<
Tier | "starter", Tier | "basic",
{ users: number; sites: number; domains: number; remoteNodes: number } { users: number; sites: number; domains: number; remoteNodes: number }
> = { > = {
starter: { basic: {
users: freeLimitSet[FeatureId.USERS]?.value ?? 0, users: freeLimitSet[FeatureId.USERS]?.value ?? 0,
sites: freeLimitSet[FeatureId.SITES]?.value ?? 0, sites: freeLimitSet[FeatureId.SITES]?.value ?? 0,
domains: freeLimitSet[FeatureId.DOMAINS]?.value ?? 0, domains: freeLimitSet[FeatureId.DOMAINS]?.value ?? 0,
@@ -183,7 +183,7 @@ export default function BillingPage() {
// Confirmation dialog state // Confirmation dialog state
const [showConfirmDialog, setShowConfirmDialog] = useState(false); const [showConfirmDialog, setShowConfirmDialog] = useState(false);
const [pendingTier, setPendingTier] = useState<{ const [pendingTier, setPendingTier] = useState<{
tier: Tier | "starter"; tier: Tier | "basic";
action: "upgrade" | "downgrade"; action: "upgrade" | "downgrade";
planName: string; planName: string;
price: string; price: string;
@@ -402,8 +402,8 @@ export default function BillingPage() {
pendingTier.action === "upgrade" || pendingTier.action === "upgrade" ||
pendingTier.action === "downgrade" pendingTier.action === "downgrade"
) { ) {
// If downgrading to starter (free tier), go to Stripe portal // If downgrading to basic (free tier), go to Stripe portal
if (pendingTier.tier === "starter") { if (pendingTier.tier === "basic") {
handleModifySubscription(); handleModifySubscription();
} else if (hasSubscription) { } else if (hasSubscription) {
handleChangeTier(pendingTier.tier); handleChangeTier(pendingTier.tier);
@@ -417,7 +417,7 @@ export default function BillingPage() {
}; };
const showTierConfirmation = ( const showTierConfirmation = (
tier: Tier | "starter", tier: Tier | "basic",
action: "upgrade" | "downgrade", action: "upgrade" | "downgrade",
planName: string, planName: string,
price: string price: string
@@ -432,9 +432,9 @@ export default function BillingPage() {
// Get current plan ID from tier // Get current plan ID from tier
const getCurrentPlanId = (): PlanId => { const getCurrentPlanId = (): PlanId => {
if (!hasSubscription || !currentTier) return "starter"; if (!hasSubscription || !currentTier) return "basic";
const plan = planOptions.find((p) => p.tierType === currentTier); const plan = planOptions.find((p) => p.tierType === currentTier);
return plan?.id || "starter"; return plan?.id || "basic";
}; };
const currentPlanId = getCurrentPlanId(); const currentPlanId = getCurrentPlanId();
@@ -451,8 +451,8 @@ export default function BillingPage() {
} }
if (plan.id === currentPlanId) { if (plan.id === currentPlanId) {
// If it's the starter plan (starter with no subscription), show as current but disabled // If it's the basic plan (basic with no subscription), show as current but disabled
if (plan.id === "starter" && !hasSubscription) { if (plan.id === "basic" && !hasSubscription) {
return { return {
label: "Current Plan", label: "Current Plan",
action: () => {}, action: () => {},
@@ -484,10 +484,10 @@ export default function BillingPage() {
plan.name, plan.name,
plan.price + (" " + plan.priceDetail || "") plan.price + (" " + plan.priceDetail || "")
); );
} else if (plan.id === "starter") { } else if (plan.id === "basic") {
// Show confirmation for downgrading to starter (free tier) // Show confirmation for downgrading to basic (free tier)
showTierConfirmation( showTierConfirmation(
"starter", "basic",
"downgrade", "downgrade",
plan.name, plan.name,
plan.price plan.price
@@ -566,7 +566,7 @@ export default function BillingPage() {
}; };
// Check if downgrading to a tier would violate current usage limits // Check if downgrading to a tier would violate current usage limits
const checkLimitViolations = (targetTier: Tier | "starter"): Array<{ const checkLimitViolations = (targetTier: Tier | "basic"): Array<{
feature: string; feature: string;
currentUsage: number; currentUsage: number;
newLimit: number; newLimit: number;