Add premium My Case MVP
This commit is contained in:
+68
-61
@@ -20,83 +20,84 @@ function pt(string $key, string $lang): string {
|
||||
return htmlspecialchars(dbnToolsT($key, $lang));
|
||||
}
|
||||
|
||||
// New 3-tier NOK ladder. Plus carries a 14-day trial (card required, no charge for 14 days).
|
||||
$tierNames = [
|
||||
'free' => $uiLang === 'no' ? 'Gratis' : ($uiLang === 'uk' ? 'Безкоштовно' : ($uiLang === 'pl' ? 'Bezpłatnie' : 'Free')),
|
||||
'light' => 'Light',
|
||||
'pro' => 'Pro',
|
||||
'pro_plus' => $uiLang === 'no' ? 'Pro+ Familie' : ($uiLang === 'uk' ? 'Pro+ Сім\'я' : ($uiLang === 'pl' ? 'Pro+ Rodzina' : 'Pro+ Family')),
|
||||
'free' => $uiLang === 'no' ? 'Gratis' : ($uiLang === 'uk' ? 'Безкоштовно' : ($uiLang === 'pl' ? 'Bezpłatnie' : 'Free')),
|
||||
'plus' => 'Plus',
|
||||
'pro' => $uiLang === 'no' ? 'Pro Familie' : ($uiLang === 'uk' ? 'Pro Сім\'я' : ($uiLang === 'pl' ? 'Pro Rodzina' : 'Pro Family')),
|
||||
];
|
||||
|
||||
$creditsPerMonth = $uiLang === 'no' ? 'kreditter / mnd' : ($uiLang === 'uk' ? 'кредитів / міс' : ($uiLang === 'pl' ? 'kredytów / mies' : 'credits / mo'));
|
||||
$perMonth = $uiLang === 'no' ? '/ måned' : ($uiLang === 'uk' ? '/ міс' : ($uiLang === 'pl' ? '/ mies' : '/ month'));
|
||||
$capSuffix = $uiLang === 'no' ? '/ time' : ($uiLang === 'uk' ? '/ год' : ($uiLang === 'pl' ? '/ godz' : '/ hour'));
|
||||
|
||||
$tiers = [
|
||||
[
|
||||
'sku' => 'free',
|
||||
'name' => $tierNames['free'],
|
||||
'price' => '€0',
|
||||
'period' => dbnToolsT('pricing_period_always', $uiLang),
|
||||
'credits' => '30 ' . dbnToolsT('pricing_credits_mo', $uiLang),
|
||||
'storage' => dbnToolsT('pricing_no_storage', $uiLang),
|
||||
'seats' => dbnToolsT('pricing_seat_1', $uiLang),
|
||||
'cap' => '10 ' . dbnToolsT('pricing_cap_suffix', $uiLang),
|
||||
'features' => [
|
||||
dbnToolsT('pricing_free_f1', $uiLang),
|
||||
dbnToolsT('pricing_free_f2', $uiLang),
|
||||
dbnToolsT('pricing_free_f3', $uiLang),
|
||||
'price' => 'NOK 0',
|
||||
'period' => $uiLang === 'no' ? 'alltid' : 'always',
|
||||
'credits' => '30 ' . $creditsPerMonth,
|
||||
'storage' => $uiLang === 'no' ? 'Ingen saksoppbevaring' : 'No case storage',
|
||||
'seats' => $uiLang === 'no' ? '1 bruker' : '1 user',
|
||||
'cap' => '10 ' . $capSuffix,
|
||||
'features' => $uiLang === 'no' ? [
|
||||
'Alle 11 verktøy på innlimt tekst',
|
||||
'Norsk juridisk korpus (~220K passasjer)',
|
||||
'EU-vert (Tyskland / Finland / Norge)',
|
||||
] : [
|
||||
'All 11 tools on pasted text',
|
||||
'Norwegian legal corpus (~220K passages)',
|
||||
'EU-hosted (Germany / Finland / Norway)',
|
||||
],
|
||||
'cta' => $isAuthed ? null : dbnToolsT('pricing_cta_login', $uiLang),
|
||||
'highlight' => false,
|
||||
],
|
||||
[
|
||||
'sku' => 'light',
|
||||
'name' => $tierNames['light'],
|
||||
'price' => '€9',
|
||||
'period' => dbnToolsT('pricing_period_mo', $uiLang),
|
||||
'credits' => '120 ' . dbnToolsT('pricing_credits_mo', $uiLang),
|
||||
'storage' => '100 MB',
|
||||
'seats' => dbnToolsT('pricing_seat_1', $uiLang),
|
||||
'cap' => '15 ' . dbnToolsT('pricing_cap_suffix', $uiLang),
|
||||
'features' => [
|
||||
dbnToolsT('pricing_light_f1', $uiLang),
|
||||
dbnToolsT('pricing_light_f2', $uiLang),
|
||||
dbnToolsT('pricing_light_f3', $uiLang),
|
||||
dbnToolsT('pricing_light_f4', $uiLang),
|
||||
'sku' => 'plus',
|
||||
'name' => $tierNames['plus'],
|
||||
'price' => 'NOK 129',
|
||||
'period' => $perMonth,
|
||||
'credits' => '250 ' . $creditsPerMonth,
|
||||
'storage' => '500 MB',
|
||||
'seats' => $uiLang === 'no' ? '1 bruker' : '1 user',
|
||||
'cap' => '20 ' . $capSuffix,
|
||||
'features' => $uiLang === 'no' ? [
|
||||
'Min Sak — last opp dokumenter med OCR',
|
||||
'Bruk min sak som kontekst i alle verktøy',
|
||||
'Lagrede analyser — alle resultater samlet',
|
||||
'14 dagers gratis prøveperiode (kort kreves)',
|
||||
] : [
|
||||
'My Case — upload documents with OCR',
|
||||
'Use my case as context in every tool',
|
||||
'Saved analyses — every run kept and searchable',
|
||||
'14-day free trial (card required)',
|
||||
],
|
||||
'highlight' => false,
|
||||
'highlight' => true,
|
||||
'badge' => $uiLang === 'no' ? 'Mest populær' : 'Most popular',
|
||||
],
|
||||
[
|
||||
'sku' => 'pro',
|
||||
'name' => $tierNames['pro'],
|
||||
'price' => '€29',
|
||||
'period' => dbnToolsT('pricing_period_mo', $uiLang),
|
||||
'credits' => '500 ' . dbnToolsT('pricing_credits_mo', $uiLang),
|
||||
'storage' => '1 GB',
|
||||
'seats' => dbnToolsT('pricing_seat_1', $uiLang),
|
||||
'cap' => '30 ' . dbnToolsT('pricing_cap_suffix', $uiLang),
|
||||
'features' => [
|
||||
dbnToolsT('pricing_pro_f1', $uiLang),
|
||||
dbnToolsT('pricing_pro_f2', $uiLang),
|
||||
dbnToolsT('pricing_pro_f3', $uiLang),
|
||||
dbnToolsT('pricing_pro_f4', $uiLang),
|
||||
],
|
||||
'highlight' => true,
|
||||
'badge' => dbnToolsT('pricing_badge_popular', $uiLang),
|
||||
],
|
||||
[
|
||||
'sku' => 'pro_plus',
|
||||
'name' => $tierNames['pro_plus'],
|
||||
'price' => '€79',
|
||||
'period' => dbnToolsT('pricing_period_mo', $uiLang),
|
||||
'credits' => dbnToolsT('pricing_unlimited', $uiLang),
|
||||
'storage' => '10 GB',
|
||||
'seats' => dbnToolsT('pricing_seats_family', $uiLang),
|
||||
'cap' => '50 ' . dbnToolsT('pricing_cap_per_seat', $uiLang),
|
||||
'features' => [
|
||||
dbnToolsT('pricing_proplus_f1', $uiLang),
|
||||
dbnToolsT('pricing_proplus_f2', $uiLang),
|
||||
dbnToolsT('pricing_proplus_f3', $uiLang),
|
||||
dbnToolsT('pricing_proplus_f4', $uiLang),
|
||||
'price' => 'NOK 299',
|
||||
'period' => $perMonth,
|
||||
'credits' => '1000 ' . $creditsPerMonth,
|
||||
'storage' => '5 GB',
|
||||
'seats' => $uiLang === 'no' ? '3 brukere · delt sak' : '3 users · shared case',
|
||||
'cap' => '40 ' . $capSuffix,
|
||||
'features' => $uiLang === 'no' ? [
|
||||
'Alt i Plus, med mer plass og raskere modeller',
|
||||
'Familie-sete: 3 innlogginger på samme sak',
|
||||
'Prioritert GPT-4o for kompleks analyse',
|
||||
'Audit-logg for hvem som kjørte hva',
|
||||
] : [
|
||||
'Everything in Plus, with more space and faster models',
|
||||
'Family seats: 3 logins sharing one case',
|
||||
'Priority GPT-4o for complex analysis',
|
||||
'Audit log of who ran what',
|
||||
],
|
||||
'highlight' => false,
|
||||
'badge' => dbnToolsT('pricing_badge_family', $uiLang),
|
||||
'badge' => $uiLang === 'no' ? 'For familier' : 'For families',
|
||||
],
|
||||
];
|
||||
|
||||
@@ -106,9 +107,9 @@ $topupNotes = [
|
||||
'topup_l' => dbnToolsT('pricing_topup_l_note', $uiLang),
|
||||
];
|
||||
$topups = [
|
||||
['sku' => 'topup_s', 'price' => '€5', 'credits' => 30, 'note' => $topupNotes['topup_s']],
|
||||
['sku' => 'topup_m', 'price' => '€15', 'credits' => 100, 'note' => $topupNotes['topup_m']],
|
||||
['sku' => 'topup_l', 'price' => '€40', 'credits' => 300, 'note' => $topupNotes['topup_l']],
|
||||
['sku' => 'topup_s', 'price' => 'NOK 49', 'credits' => 30, 'note' => $topupNotes['topup_s']],
|
||||
['sku' => 'topup_m', 'price' => 'NOK 149', 'credits' => 100, 'note' => $topupNotes['topup_m']],
|
||||
['sku' => 'topup_l', 'price' => 'NOK 399', 'credits' => 300, 'note' => $topupNotes['topup_l']],
|
||||
];
|
||||
?>
|
||||
<!doctype html>
|
||||
@@ -194,6 +195,12 @@ $topups = [
|
||||
<p class="status-pill-info"><?= pt('pricing_status_canceled', $uiLang) ?></p>
|
||||
<?php endif; ?>
|
||||
|
||||
<div style="background:linear-gradient(135deg,#fef3c7,#fcd34d);color:#78350f;padding:1rem 1.5rem;border-radius:10px;margin-bottom:2rem;text-align:center;font-weight:600;">
|
||||
<?= $uiLang === 'no'
|
||||
? '🎉 Prøv Plus gratis i 14 dager — kort kreves, kanseller når som helst, ingen belastning før dag 15.'
|
||||
: '🎉 Try Plus free for 14 days — card required, cancel anytime, no charge until day 15.' ?>
|
||||
</div>
|
||||
|
||||
<?php if ($isAuthed && !$surveyDone): ?>
|
||||
<div class="survey-banner">
|
||||
<div class="copy">
|
||||
|
||||
Reference in New Issue
Block a user