This commit is contained in:
Frank
2026-02-25 23:06:16 -05:00
parent b8337cddc4
commit c4ea11fef3
2 changed files with 18 additions and 6 deletions

View File

@@ -1,16 +1,21 @@
import { A, useSearchParams } from "@solidjs/router" import { A, createAsync, query, useSearchParams } from "@solidjs/router"
import { Title } from "@solidjs/meta" import { Title } from "@solidjs/meta"
import { createMemo, createSignal, For, Match, onMount, Show, Switch } from "solid-js" import { createMemo, createSignal, For, Match, onMount, Show, Switch } from "solid-js"
import { PlanIcon, plans } from "./common" import { PlanIcon, plans } from "./common"
import { useI18n } from "~/context/i18n" import { useI18n } from "~/context/i18n"
import { useLanguage } from "~/context/language" import { useLanguage } from "~/context/language"
import { Resource } from "@opencode-ai/console-resource"
const paused = true const getPaused = query(async () => {
"use server"
return Resource.App.stage === "production"
}, "black.paused")
export default function Black() { export default function Black() {
const [params] = useSearchParams() const [params] = useSearchParams()
const i18n = useI18n() const i18n = useI18n()
const language = useLanguage() const language = useLanguage()
const paused = createAsync(() => getPaused())
const [selected, setSelected] = createSignal<string | null>((params.plan as string) || null) const [selected, setSelected] = createSignal<string | null>((params.plan as string) || null)
const [mounted, setMounted] = createSignal(false) const [mounted, setMounted] = createSignal(false)
const selectedPlan = createMemo(() => plans.find((p) => p.id === selected())) const selectedPlan = createMemo(() => plans.find((p) => p.id === selected()))
@@ -44,7 +49,7 @@ export default function Black() {
<> <>
<Title>{i18n.t("black.title")}</Title> <Title>{i18n.t("black.title")}</Title>
<section data-slot="cta"> <section data-slot="cta">
<Show when={!paused} fallback={<p data-slot="paused">{i18n.t("black.paused")}</p>}> <Show when={!paused()} fallback={<p data-slot="paused">{i18n.t("black.paused")}</p>}>
<Switch> <Switch>
<Match when={!selected()}> <Match when={!selected()}>
<div data-slot="pricing"> <div data-slot="pricing">
@@ -108,7 +113,7 @@ export default function Black() {
</Match> </Match>
</Switch> </Switch>
</Show> </Show>
<Show when={!paused}> <Show when={!paused()}>
<p data-slot="fine-print" style={{ "view-transition-name": "fine-print" }}> <p data-slot="fine-print" style={{ "view-transition-name": "fine-print" }}>
{i18n.t("black.finePrint.beforeTerms")} ·{" "} {i18n.t("black.finePrint.beforeTerms")} ·{" "}
<A href={language.route("/legal/terms-of-service")}>{i18n.t("black.finePrint.terms")}</A> <A href={language.route("/legal/terms-of-service")}>{i18n.t("black.finePrint.terms")}</A>

View File

@@ -17,6 +17,12 @@ import { Billing } from "@opencode-ai/console-core/billing.js"
import { useI18n } from "~/context/i18n" import { useI18n } from "~/context/i18n"
import { useLanguage } from "~/context/language" import { useLanguage } from "~/context/language"
import { formError } from "~/lib/form-error" import { formError } from "~/lib/form-error"
import { Resource } from "@opencode-ai/console-resource"
const getEnabled = query(async () => {
"use server"
return Resource.App.stage !== "production"
}, "black.subscribe.enabled")
const plansMap = Object.fromEntries(plans.map((p) => [p.id, p])) as Record<PlanID, (typeof plans)[number]> const plansMap = Object.fromEntries(plans.map((p) => [p.id, p])) as Record<PlanID, (typeof plans)[number]>
const stripePromise = loadStripe(import.meta.env.VITE_STRIPE_PUBLISHABLE_KEY!) const stripePromise = loadStripe(import.meta.env.VITE_STRIPE_PUBLISHABLE_KEY!)
@@ -269,6 +275,7 @@ export default function BlackSubscribe() {
const params = useParams() const params = useParams()
const i18n = useI18n() const i18n = useI18n()
const language = useLanguage() const language = useLanguage()
const enabled = createAsync(() => getEnabled())
const planData = plansMap[(params.plan as PlanID) ?? "20"] ?? plansMap["20"] const planData = plansMap[(params.plan as PlanID) ?? "20"] ?? plansMap["20"]
const plan = planData.id const plan = planData.id
@@ -359,7 +366,7 @@ export default function BlackSubscribe() {
} }
return ( return (
<> <Show when={enabled()}>
<Title>{i18n.t("black.subscribe.title")}</Title> <Title>{i18n.t("black.subscribe.title")}</Title>
<section data-slot="subscribe-form"> <section data-slot="subscribe-form">
<div data-slot="form-card"> <div data-slot="form-card">
@@ -472,6 +479,6 @@ export default function BlackSubscribe() {
<A href={language.route("/legal/terms-of-service")}>{i18n.t("black.finePrint.terms")}</A> <A href={language.route("/legal/terms-of-service")}>{i18n.t("black.finePrint.terms")}</A>
</p> </p>
</section> </section>
</> </Show>
) )
} }