EnterpriseHosting.tsx 4.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960
  1. import * as React from 'react';
  2. import { Icon } from './ui/Icon';
  3. import { useTranslation } from '../hooks/useI18n';
  4. const EnterpriseHosting: React.FC = () => {
  5. const { t } = useTranslation();
  6. const [customDomain, setCustomDomain] = React.useState('');
  7. return (
  8. <div className="p-8 max-w-4xl mx-auto">
  9. <header className="mb-8">
  10. <h2 className="text-3xl font-bold text-gray-900 dark:text-white">{t('seo.hosting.title')}</h2>
  11. <p className="text-gray-500 dark:text-gray-400 mt-1">{t('seo.hosting.subtitle')}</p>
  12. </header>
  13. <div className="space-y-8">
  14. <div className="bg-white dark:bg-gray-800 p-6 rounded-lg shadow-sm">
  15. <h3 className="text-lg font-semibold text-gray-900 dark:text-white mb-4">{t('seo.hosting.custom_domain')}</h3>
  16. <p className="text-gray-500 dark:text-gray-400 mb-2">{t('seo.hosting.custom_domain_desc')}</p>
  17. <div className="flex items-center bg-gray-100 dark:bg-gray-700 rounded-md">
  18. <input
  19. type="text"
  20. value={customDomain}
  21. onChange={(e) => setCustomDomain(e.target.value)}
  22. placeholder="your-domain.com"
  23. className="w-full bg-transparent p-3 text-gray-900 dark:text-white focus:outline-none rounded-md"
  24. />
  25. </div>
  26. <button className="mt-4 w-full md:w-auto bg-brand-primary text-white font-semibold py-2 px-5 rounded-md hover:bg-brand-secondary transition-colors flex items-center justify-center gap-2">
  27. {t('seo.hosting.connect_domain')}
  28. <span className="text-xs bg-yellow-400 text-yellow-900 px-2 py-0.5 rounded-full font-bold">{t('pro')}</span>
  29. </button>
  30. <p className="text-xs text-gray-400 dark:text-gray-500 mt-4">{t('seo.hosting.dns_note')}</p>
  31. </div>
  32. <div className="bg-white dark:bg-gray-800 p-6 rounded-lg shadow-sm">
  33. <h3 className="text-lg font-semibold text-gray-900 dark:text-white mb-4">{t('seo.hosting.subscription')}</h3>
  34. <p className="text-gray-500 dark:text-gray-400 mb-4">{t('seo.hosting.subscription_desc')}</p>
  35. <div className="grid grid-cols-1 md:grid-cols-3 gap-6">
  36. {['Starter', 'Business', 'Enterprise'].map((plan, index) => (
  37. <div key={plan} className={`p-6 rounded-lg border-2 ${index === 1 ? 'border-brand-primary bg-brand-primary/5' : 'border-gray-200 dark:border-gray-700'}`}>
  38. <h4 className="text-xl font-bold text-gray-900 dark:text-white">{plan}</h4>
  39. <p className="text-3xl font-bold text-gray-900 dark:text-white my-4">${[29, 79, 199][index]}<span className="text-base font-normal text-gray-500 dark:text-gray-400">/mo</span></p>
  40. <ul className="space-y-2 text-sm text-gray-600 dark:text-gray-300">
  41. <li className="flex items-center gap-2"><Icon className="h-4 w-4 text-brand-primary"><path d="M5 13l4 4L19 7"/></Icon> Custom Domain</li>
  42. <li className="flex items-center gap-2"><Icon className="h-4 w-4 text-brand-primary"><path d="M5 13l4 4L19 7"/></Icon> {['10k', '50k', 'Unlimited'][index]} Clicks/mo</li>
  43. <li className="flex items-center gap-2"><Icon className="h-4 w-4 text-brand-primary"><path d="M5 13l4 4L19 7"/></Icon> Managed Hosting</li>
  44. </ul>
  45. <button className={`mt-6 w-full py-2 rounded-md font-semibold ${index === 1 ? 'bg-brand-primary text-white' : 'bg-gray-200 dark:bg-gray-600'}`}>
  46. {index === 1 ? t('seo.hosting.current_plan') : t('seo.hosting.select_plan')}
  47. </button>
  48. </div>
  49. ))}
  50. </div>
  51. </div>
  52. </div>
  53. </div>
  54. );
  55. };
  56. export default EnterpriseHosting;