wip: zen lite

This commit is contained in:
Frank
2026-02-23 23:01:23 -05:00
parent eda71373b0
commit cda2af2589
20 changed files with 94 additions and 58 deletions

View File

@@ -243,6 +243,7 @@ export const dict = {
"black.hero.title": "الوصول إلى أفضل نماذج البرمجة في العالم", "black.hero.title": "الوصول إلى أفضل نماذج البرمجة في العالم",
"black.hero.subtitle": "بما في ذلك Claude، GPT، Gemini والمزيد", "black.hero.subtitle": "بما في ذلك Claude، GPT، Gemini والمزيد",
"black.title": "OpenCode Black | الأسعار", "black.title": "OpenCode Black | الأسعار",
"black.paused": "التسجيل في خطة Black متوقف مؤقتًا.",
"black.plan.icon20": "خطة Black 20", "black.plan.icon20": "خطة Black 20",
"black.plan.icon100": "خطة Black 100", "black.plan.icon100": "خطة Black 100",
"black.plan.icon200": "خطة Black 200", "black.plan.icon200": "خطة Black 200",

View File

@@ -247,6 +247,7 @@ export const dict = {
"black.hero.title": "Acesse os melhores modelos de codificação do mundo", "black.hero.title": "Acesse os melhores modelos de codificação do mundo",
"black.hero.subtitle": "Incluindo Claude, GPT, Gemini e mais", "black.hero.subtitle": "Incluindo Claude, GPT, Gemini e mais",
"black.title": "OpenCode Black | Preços", "black.title": "OpenCode Black | Preços",
"black.paused": "A inscrição no plano Black está temporariamente pausada.",
"black.plan.icon20": "Plano Black 20", "black.plan.icon20": "Plano Black 20",
"black.plan.icon100": "Plano Black 100", "black.plan.icon100": "Plano Black 100",
"black.plan.icon200": "Plano Black 200", "black.plan.icon200": "Plano Black 200",

View File

@@ -245,6 +245,7 @@ export const dict = {
"black.hero.title": "Få adgang til verdens bedste kodningsmodeller", "black.hero.title": "Få adgang til verdens bedste kodningsmodeller",
"black.hero.subtitle": "Inklusive Claude, GPT, Gemini og mere", "black.hero.subtitle": "Inklusive Claude, GPT, Gemini og mere",
"black.title": "OpenCode Black | Priser", "black.title": "OpenCode Black | Priser",
"black.paused": "Black-plantilmelding er midlertidigt sat på pause.",
"black.plan.icon20": "Black 20-plan", "black.plan.icon20": "Black 20-plan",
"black.plan.icon100": "Black 100-plan", "black.plan.icon100": "Black 100-plan",
"black.plan.icon200": "Black 200-plan", "black.plan.icon200": "Black 200-plan",

View File

@@ -247,6 +247,7 @@ export const dict = {
"black.hero.title": "Zugriff auf die weltweit besten Coding-Modelle", "black.hero.title": "Zugriff auf die weltweit besten Coding-Modelle",
"black.hero.subtitle": "Einschließlich Claude, GPT, Gemini und mehr", "black.hero.subtitle": "Einschließlich Claude, GPT, Gemini und mehr",
"black.title": "OpenCode Black | Preise", "black.title": "OpenCode Black | Preise",
"black.paused": "Die Anmeldung zum Black-Plan ist vorübergehend pausiert.",
"black.plan.icon20": "Black 20 Plan", "black.plan.icon20": "Black 20 Plan",
"black.plan.icon100": "Black 100 Plan", "black.plan.icon100": "Black 100 Plan",
"black.plan.icon200": "Black 200 Plan", "black.plan.icon200": "Black 200 Plan",

View File

@@ -239,6 +239,7 @@ export const dict = {
"black.hero.title": "Access all the world's best coding models", "black.hero.title": "Access all the world's best coding models",
"black.hero.subtitle": "Including Claude, GPT, Gemini and more", "black.hero.subtitle": "Including Claude, GPT, Gemini and more",
"black.title": "OpenCode Black | Pricing", "black.title": "OpenCode Black | Pricing",
"black.paused": "Black plan enrollment is temporarily paused.",
"black.plan.icon20": "Black 20 plan", "black.plan.icon20": "Black 20 plan",
"black.plan.icon100": "Black 100 plan", "black.plan.icon100": "Black 100 plan",
"black.plan.icon200": "Black 200 plan", "black.plan.icon200": "Black 200 plan",

View File

@@ -248,6 +248,7 @@ export const dict = {
"black.hero.title": "Accede a los mejores modelos de codificación del mundo", "black.hero.title": "Accede a los mejores modelos de codificación del mundo",
"black.hero.subtitle": "Incluyendo Claude, GPT, Gemini y más", "black.hero.subtitle": "Incluyendo Claude, GPT, Gemini y más",
"black.title": "OpenCode Black | Precios", "black.title": "OpenCode Black | Precios",
"black.paused": "La inscripción al plan Black está temporalmente pausada.",
"black.plan.icon20": "Plan Black 20", "black.plan.icon20": "Plan Black 20",
"black.plan.icon100": "Plan Black 100", "black.plan.icon100": "Plan Black 100",
"black.plan.icon200": "Plan Black 200", "black.plan.icon200": "Plan Black 200",

View File

@@ -251,6 +251,7 @@ export const dict = {
"black.hero.title": "Accédez aux meilleurs modèles de code au monde", "black.hero.title": "Accédez aux meilleurs modèles de code au monde",
"black.hero.subtitle": "Y compris Claude, GPT, Gemini et plus", "black.hero.subtitle": "Y compris Claude, GPT, Gemini et plus",
"black.title": "OpenCode Black | Tarification", "black.title": "OpenCode Black | Tarification",
"black.paused": "L'inscription au plan Black est temporairement suspendue.",
"black.plan.icon20": "Forfait Black 20", "black.plan.icon20": "Forfait Black 20",
"black.plan.icon100": "Forfait Black 100", "black.plan.icon100": "Forfait Black 100",
"black.plan.icon200": "Forfait Black 200", "black.plan.icon200": "Forfait Black 200",

View File

@@ -246,6 +246,7 @@ export const dict = {
"black.hero.title": "Accedi ai migliori modelli di coding al mondo", "black.hero.title": "Accedi ai migliori modelli di coding al mondo",
"black.hero.subtitle": "Inclusi Claude, GPT, Gemini e altri", "black.hero.subtitle": "Inclusi Claude, GPT, Gemini e altri",
"black.title": "OpenCode Black | Prezzi", "black.title": "OpenCode Black | Prezzi",
"black.paused": "L'iscrizione al piano Black è temporaneamente sospesa.",
"black.plan.icon20": "Piano Black 20", "black.plan.icon20": "Piano Black 20",
"black.plan.icon100": "Piano Black 100", "black.plan.icon100": "Piano Black 100",
"black.plan.icon200": "Piano Black 200", "black.plan.icon200": "Piano Black 200",

View File

@@ -244,6 +244,7 @@ export const dict = {
"black.hero.title": "世界最高峰のコーディングモデルすべてにアクセス", "black.hero.title": "世界最高峰のコーディングモデルすべてにアクセス",
"black.hero.subtitle": "Claude、GPT、Gemini などを含む", "black.hero.subtitle": "Claude、GPT、Gemini などを含む",
"black.title": "OpenCode Black | 料金", "black.title": "OpenCode Black | 料金",
"black.paused": "Blackプランの登録は一時的に停止しています。",
"black.plan.icon20": "Black 20 プラン", "black.plan.icon20": "Black 20 プラン",
"black.plan.icon100": "Black 100 プラン", "black.plan.icon100": "Black 100 プラン",
"black.plan.icon200": "Black 200 プラン", "black.plan.icon200": "Black 200 プラン",

View File

@@ -241,6 +241,7 @@ export const dict = {
"black.hero.title": "세계 최고의 코딩 모델에 액세스하세요", "black.hero.title": "세계 최고의 코딩 모델에 액세스하세요",
"black.hero.subtitle": "Claude, GPT, Gemini 등 포함", "black.hero.subtitle": "Claude, GPT, Gemini 등 포함",
"black.title": "OpenCode Black | 가격", "black.title": "OpenCode Black | 가격",
"black.paused": "Black 플랜 등록이 일시적으로 중단되었습니다.",
"black.plan.icon20": "Black 20 플랜", "black.plan.icon20": "Black 20 플랜",
"black.plan.icon100": "Black 100 플랜", "black.plan.icon100": "Black 100 플랜",
"black.plan.icon200": "Black 200 플랜", "black.plan.icon200": "Black 200 플랜",

View File

@@ -245,6 +245,7 @@ export const dict = {
"black.hero.title": "Få tilgang til verdens beste kodemodeller", "black.hero.title": "Få tilgang til verdens beste kodemodeller",
"black.hero.subtitle": "Inkludert Claude, GPT, Gemini og mer", "black.hero.subtitle": "Inkludert Claude, GPT, Gemini og mer",
"black.title": "OpenCode Black | Priser", "black.title": "OpenCode Black | Priser",
"black.paused": "Black-planregistrering er midlertidig satt på pause.",
"black.plan.icon20": "Black 20-plan", "black.plan.icon20": "Black 20-plan",
"black.plan.icon100": "Black 100-plan", "black.plan.icon100": "Black 100-plan",
"black.plan.icon200": "Black 200-plan", "black.plan.icon200": "Black 200-plan",

View File

@@ -246,6 +246,7 @@ export const dict = {
"black.hero.title": "Dostęp do najlepszych na świecie modeli kodujących", "black.hero.title": "Dostęp do najlepszych na świecie modeli kodujących",
"black.hero.subtitle": "W tym Claude, GPT, Gemini i inne", "black.hero.subtitle": "W tym Claude, GPT, Gemini i inne",
"black.title": "OpenCode Black | Cennik", "black.title": "OpenCode Black | Cennik",
"black.paused": "Rejestracja planu Black jest tymczasowo wstrzymana.",
"black.plan.icon20": "Plan Black 20", "black.plan.icon20": "Plan Black 20",
"black.plan.icon100": "Plan Black 100", "black.plan.icon100": "Plan Black 100",
"black.plan.icon200": "Plan Black 200", "black.plan.icon200": "Plan Black 200",

View File

@@ -249,6 +249,7 @@ export const dict = {
"black.hero.title": "Доступ к лучшим моделям для кодинга в мире", "black.hero.title": "Доступ к лучшим моделям для кодинга в мире",
"black.hero.subtitle": "Включая Claude, GPT, Gemini и другие", "black.hero.subtitle": "Включая Claude, GPT, Gemini и другие",
"black.title": "OpenCode Black | Цены", "black.title": "OpenCode Black | Цены",
"black.paused": "Регистрация на план Black временно приостановлена.",
"black.plan.icon20": "План Black 20", "black.plan.icon20": "План Black 20",
"black.plan.icon100": "План Black 100", "black.plan.icon100": "План Black 100",
"black.plan.icon200": "План Black 200", "black.plan.icon200": "План Black 200",

View File

@@ -244,6 +244,7 @@ export const dict = {
"black.hero.title": "เข้าถึงโมเดลเขียนโค้ดที่ดีที่สุดในโลก", "black.hero.title": "เข้าถึงโมเดลเขียนโค้ดที่ดีที่สุดในโลก",
"black.hero.subtitle": "รวมถึง Claude, GPT, Gemini และอื่นๆ อีกมากมาย", "black.hero.subtitle": "รวมถึง Claude, GPT, Gemini และอื่นๆ อีกมากมาย",
"black.title": "OpenCode Black | ราคา", "black.title": "OpenCode Black | ราคา",
"black.paused": "การสมัครแผน Black หยุดชั่วคราว",
"black.plan.icon20": "แผน Black 20", "black.plan.icon20": "แผน Black 20",
"black.plan.icon100": "แผน Black 100", "black.plan.icon100": "แผน Black 100",
"black.plan.icon200": "แผน Black 200", "black.plan.icon200": "แผน Black 200",

View File

@@ -247,6 +247,7 @@ export const dict = {
"black.hero.title": "Dünyanın en iyi kodlama modellerine erişin", "black.hero.title": "Dünyanın en iyi kodlama modellerine erişin",
"black.hero.subtitle": "Claude, GPT, Gemini ve daha fazlası dahil", "black.hero.subtitle": "Claude, GPT, Gemini ve daha fazlası dahil",
"black.title": "OpenCode Black | Fiyatlandırma", "black.title": "OpenCode Black | Fiyatlandırma",
"black.paused": "Black plan kaydı geçici olarak duraklatıldı.",
"black.plan.icon20": "Black 20 planı", "black.plan.icon20": "Black 20 planı",
"black.plan.icon100": "Black 100 planı", "black.plan.icon100": "Black 100 planı",
"black.plan.icon200": "Black 200 planı", "black.plan.icon200": "Black 200 planı",

View File

@@ -234,6 +234,7 @@ export const dict = {
"black.hero.title": "访问全球顶尖编程模型", "black.hero.title": "访问全球顶尖编程模型",
"black.hero.subtitle": "包括 Claude, GPT, Gemini 等", "black.hero.subtitle": "包括 Claude, GPT, Gemini 等",
"black.title": "OpenCode Black | 定价", "black.title": "OpenCode Black | 定价",
"black.paused": "Black 订阅已暂时暂停注册。",
"black.plan.icon20": "Black 20 计划", "black.plan.icon20": "Black 20 计划",
"black.plan.icon100": "Black 100 计划", "black.plan.icon100": "Black 100 计划",
"black.plan.icon200": "Black 200 计划", "black.plan.icon200": "Black 200 计划",

View File

@@ -234,6 +234,7 @@ export const dict = {
"black.hero.title": "存取全球最佳編碼模型", "black.hero.title": "存取全球最佳編碼模型",
"black.hero.subtitle": "包括 Claude、GPT、Gemini 等", "black.hero.subtitle": "包括 Claude、GPT、Gemini 等",
"black.title": "OpenCode Black | 定價", "black.title": "OpenCode Black | 定價",
"black.paused": "Black 訂閱暫時暫停註冊。",
"black.plan.icon20": "Black 20 方案", "black.plan.icon20": "Black 20 方案",
"black.plan.icon100": "Black 100 方案", "black.plan.icon100": "Black 100 方案",
"black.plan.icon200": "Black 200 方案", "black.plan.icon200": "Black 200 方案",

View File

@@ -335,6 +335,19 @@
} }
} }
[data-slot="paused"] {
flex: 1;
display: flex;
align-items: center;
justify-content: center;
color: rgba(255, 255, 255, 0.59);
font-size: 18px;
font-style: normal;
font-weight: 400;
line-height: 160%;
padding: 120px 20px;
}
[data-slot="pricing-card"] { [data-slot="pricing-card"] {
display: flex; display: flex;
flex-direction: column; flex-direction: column;

View File

@@ -5,6 +5,8 @@ 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"
const paused = true
export default function Black() { export default function Black() {
const [params] = useSearchParams() const [params] = useSearchParams()
const i18n = useI18n() const i18n = useI18n()
@@ -42,6 +44,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>}>
<Switch> <Switch>
<Match when={!selected()}> <Match when={!selected()}>
<div data-slot="pricing"> <div data-slot="pricing">
@@ -104,10 +107,13 @@ export default function Black() {
)} )}
</Match> </Match>
</Switch> </Switch>
</Show>
<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>
</p> </p>
</Show>
</section> </section>
</> </>
) )