From 9eddf716e1455cc5da491c0ec80b406fbac2fcef Mon Sep 17 00:00:00 2001 From: Gregory Schier Date: Sun, 9 Nov 2025 07:07:18 -0800 Subject: [PATCH] Update commercial use trial wording --- .../components/Settings/SettingsLicense.tsx | 76 +++++++++++-------- src-web/components/core/Link.tsx | 31 ++++---- src-web/components/core/Separator.tsx | 14 +++- src-web/components/core/Tooltip.tsx | 4 +- 4 files changed, 77 insertions(+), 48 deletions(-) diff --git a/src-web/components/Settings/SettingsLicense.tsx b/src-web/components/Settings/SettingsLicense.tsx index 84d969a4..4bf5c844 100644 --- a/src-web/components/Settings/SettingsLicense.tsx +++ b/src-web/components/Settings/SettingsLicense.tsx @@ -10,6 +10,7 @@ import { Button } from '../core/Button'; import { Icon } from '../core/Icon'; import { Link } from '../core/Link'; import { PlainInput } from '../core/PlainInput'; +import { Separator } from '../core/Separator'; import { HStack, VStack } from '../core/Stacks'; import { LocalImage } from '../LocalImage'; @@ -34,43 +35,56 @@ function SettingsLicenseCmp() {
{check.data?.type === 'commercial_use' ? ( Your license is active 🥳 - ) : check.data?.type == 'trialing' ? ( - -

- - {pluralizeCount('day', differenceInDays(check.data.end, new Date()))} remaining - {' '} - on your commercial-use trial -

-
- ) : check.data?.type == 'personal_use' ? ( - -

You are able to use Yaak for personal use only

-
- ) : null} - - {check.data?.type !== 'commercial_use' && ( -
- -
-

Hey, I'm Greg 👋🏼

-

- Yaak is free for personal projects and learning.{' '} - {check.data?.type === 'trialing' ? 'Once your trial ends, a ' : 'A '} - license will be required for work or commercial use. -

-

+ ) : check.data?.type === 'trialing' ? ( + + +

+ {pluralizeCount('day', differenceInDays(check.data.end, new Date()))}{' '} + left to evaluate Yaak for commercial use. +
+ Personal use is always free, forever. + +

+ + Contact Support + + Learn More -

-
-
- )} +
+

+ + ) : check.data?.type === 'personal_use' ? ( + + +

+ Your commercial-use trial has ended. +
+ + You can continue using Yaak for personal use free, forever. +
+ A license is required for commercial use. +
+ +

+ + Contact Support + + + + Learn More + +
+

+
+ ) : null} {check.error && {check.error}} {activate.error && {activate.error}} diff --git a/src-web/components/core/Link.tsx b/src-web/components/core/Link.tsx index df3a3467..00dc7250 100644 --- a/src-web/components/core/Link.tsx +++ b/src-web/components/core/Link.tsx @@ -12,32 +12,37 @@ interface Props extends HTMLAttributes { export function Link({ href, children, noUnderline, className, ...other }: Props) { const isExternal = href.match(/^https?:\/\//); - className = classNames(className, 'relative'); + className = classNames( + className, + 'relative', + 'inline-flex items-center hover:underline group', + !noUnderline && 'underline', + ); if (isExternal) { + const isYaakLink = href.startsWith('https://yaak.app'); let finalHref = href; - if (href.startsWith('https://yaak.app')) { + if (isYaakLink) { const url = new URL(href); url.searchParams.set('ref', appInfo.identifier); finalHref = url.toString(); } return ( + // eslint-disable-next-line react/jsx-no-target-blank { - e.preventDefault(); - }} + rel={isYaakLink ? undefined : 'noopener noreferrer'} + onClick={(e) => e.preventDefault()} + className={className} {...other} > - {children} - + {children} + ); } diff --git a/src-web/components/core/Separator.tsx b/src-web/components/core/Separator.tsx index 238e02bb..89f90f86 100644 --- a/src-web/components/core/Separator.tsx +++ b/src-web/components/core/Separator.tsx @@ -1,3 +1,4 @@ +import type { Color } from '@yaakapp-internal/plugins'; import classNames from 'classnames'; import type { ReactNode } from 'react'; @@ -6,9 +7,10 @@ interface Props { dashed?: boolean; className?: string; children?: ReactNode; + color?: Color; } -export function Separator({ className, dashed, orientation = 'horizontal', children }: Props) { +export function Separator({ color, className, dashed, orientation = 'horizontal', children }: Props) { return (
{children && ( @@ -16,7 +18,15 @@ export function Separator({ className, dashed, orientation = 'horizontal', child )}