Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 2 additions & 1 deletion src/common/constants.js
Original file line number Diff line number Diff line change
Expand Up @@ -72,4 +72,5 @@ export const DEFAULT_CASCADE_PARAMS = {
export const ALL = '*';
export const URL_REGISTRY_DOC_LINK = 'https://docs.openconceptlab.org/en/latest/oclapi/apireference/urlregistry.html'
export const MATCHING_ALGORITHMS_DOC_LINK = 'https://docs.openconceptlab.org/en/latest/oclmap/matching-algorithms.html'
export const MAPPER_ANNOUNCEMENT_URL = 'https://openconceptlab.org/blog/letter-to-the-ocl-community?utm_source=oclmap&utm_medium=banner&utm_campaign=preview_launch'
export const MAPPER_ANNOUNCEMENT_LETTER_URL = 'https://openconceptlab.org/blog/letter-to-the-ocl-community?utm_source=oclmap&utm_medium=banner&utm_campaign=subscription_dates'
export const MAPPER_ANNOUNCEMENT_PRICING_URL = 'https://openconceptlab.org/pricing?utm_source=oclmap&utm_medium=banner&utm_campaign=subscription_dates'
23 changes: 17 additions & 6 deletions src/components/app/AnnouncementBanner.jsx
Original file line number Diff line number Diff line change
Expand Up @@ -6,14 +6,20 @@ import Link from '@mui/material/Link';
import Typography from '@mui/material/Typography';
import CampaignOutlinedIcon from '@mui/icons-material/CampaignOutlined';
import CloseIcon from '@mui/icons-material/Close';
import { MAPPER_ANNOUNCEMENT_URL } from '../../common/constants';
import { MAPPER_ANNOUNCEMENT_LETTER_URL, MAPPER_ANNOUNCEMENT_PRICING_URL } from '../../common/constants';

// OCL Online-wide announcement strip, fixed above the app bar and styled like
// the community site's AnnouncementBanner, so it reads as sitting above the
// tool rather than inside it. Same component in TBv3 and TBv2. Update
// announcement.* in the locale bundles (and bump ANNOUNCEMENT_ID) to re-show a
// new announcement to visitors who dismissed a previous one.
const ANNOUNCEMENT_ID = 'mapper-public-preview-2026-09-v2';
const ANNOUNCEMENT_ID = 'subscription-dates-2026-10';

// Shown after announcement.text in this order, separated by a middle dot.
const ANNOUNCEMENT_LINKS = [
{ labelKey: 'announcement.link_label', href: MAPPER_ANNOUNCEMENT_LETTER_URL },
{ labelKey: 'announcement.pricing_link_label', href: MAPPER_ANNOUNCEMENT_PRICING_URL },
];

const DISMISSED_KEY = 'announcementDismissed';

Expand Down Expand Up @@ -95,10 +101,15 @@ const AnnouncementBanner = () => {
{t('announcement.title')}
</Typography>
<Typography variant='body2' sx={{ color: 'surface.contrastText' }}>
{t('announcement.text')}{' '}
<Link href={MAPPER_ANNOUNCEMENT_URL} target='_blank' rel='noopener noreferrer' sx={{ fontWeight: 600, '&:hover, &:focus': { color: 'primary.main' } }}>
{t('announcement.link_label')}
</Link>
{t('announcement.text')}
{ANNOUNCEMENT_LINKS.map(({ labelKey, href }, i) => (
<React.Fragment key={href}>
{i ? ' · ' : ' '}
<Link href={href} target='_blank' rel='noopener noreferrer' sx={{ fontWeight: 600, whiteSpace: 'nowrap', '&:hover, &:focus': { color: 'primary.main' } }}>
{t(labelKey)}
</Link>
</React.Fragment>
))}
</Typography>
</Box>
<IconButton size='small' aria-label={t('announcement.dismiss')} onClick={onClose}>
Expand Down
5 changes: 3 additions & 2 deletions src/i18n/locales/en/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -775,9 +775,10 @@
},
"unknown_error": "Unknown error",
"announcement": {
"title": "Welcome to the public preview of the OCL Mapper!",
"text": "Try it now, ahead of the full release coming soon.",
"title": "Subscriptions open November 1.",
"text": "Existing accounts using premium features have a grace period until December 1.",
"link_label": "Learn more",
"pricing_link_label": "See pricing",
"dismiss": "Dismiss"
},
"quota": {
Expand Down
5 changes: 3 additions & 2 deletions src/i18n/locales/es/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -769,9 +769,10 @@
},
"unknown_error": "Error desconocido",
"announcement": {
"title": "¡Te damos la bienvenida a la vista previa pública de OCL Mapper!",
"text": "Pruébalo ahora, antes del lanzamiento completo que llegará pronto.",
"title": "Las suscripciones abren el 1 de noviembre.",
"text": "Las cuentas existentes que usan funciones premium tienen un periodo de gracia hasta el 1 de diciembre.",
"link_label": "Más información",
"pricing_link_label": "Ver precios",
"dismiss": "Descartar"
},
"quota": {
Expand Down
5 changes: 3 additions & 2 deletions src/i18n/locales/zh/translations.json
Original file line number Diff line number Diff line change
Expand Up @@ -767,9 +767,10 @@
},
"unknown_error": "未知错误",
"announcement": {
"title": "欢迎体验 OCL Mapper 公开预览版!",
"text": "正式版即将推出,现在就来抢先试用吧。",
"title": "订阅将于 11 月 1 日开放。",
"text": "使用高级功能的现有账户可享受宽限期至 12 月 1 日。",
"link_label": "了解更多",
"pricing_link_label": "查看价格",
"dismiss": "关闭"
},
"quota": {
Expand Down
Loading