import React from 'react'; import { Modal, Button, Group, Stack } from '@mantine/core'; import { useTranslation } from 'react-i18next'; import AnimatedSlideBackground from '@app/components/onboarding/slides/AnimatedSlideBackground'; import ServerLicenseSlide from '@app/components/onboarding/slides/ServerLicenseSlide'; import { LicenseNotice } from '@app/types/types'; import { Z_INDEX_OVER_FULLSCREEN_SURFACE } from '@app/styles/zIndex'; import { BASE_PATH } from '@app/constants/app'; import styles from '@app/components/onboarding/InitialOnboardingModal/InitialOnboardingModal.module.css'; interface ServerLicenseModalProps { opened: boolean; onClose: () => void; onSeePlans?: () => void; licenseNotice: LicenseNotice; } export default function ServerLicenseModal({ opened, onClose, onSeePlans, licenseNotice, }: ServerLicenseModalProps) { const { t } = useTranslation(); const slide = React.useMemo(() => ServerLicenseSlide({ licenseNotice }), [licenseNotice]); const primaryLabel = licenseNotice.isOverLimit ? t('onboarding.serverLicense.upgrade', 'Upgrade now →') : t('onboarding.serverLicense.seePlans', 'See Plans →'); const secondaryLabel = t('onboarding.serverLicense.skip', 'Skip for now'); const handleSeePlans = () => { onSeePlans?.(); onClose(); }; const secondaryStyles = { root: { background: 'var(--onboarding-secondary-button-bg)', border: '1px solid var(--onboarding-secondary-button-border)', color: 'var(--onboarding-secondary-button-text)', }, }; const primaryStyles = { root: { background: 'var(--onboarding-primary-button-bg)', color: 'var(--onboarding-primary-button-text)', }, }; return (
Stirling logo
{slide.title}
{slide.body}
); }