index.tsx 2.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. import { memo } from 'react';
  2. import { Button } from 'antd';
  3. import { useTranslation } from 'react-i18next';
  4. import { useResponsive } from '@/hooks/useResponsive';
  5. import OrderSummaryItem from '../OrderSummaryItem';
  6. import type { Plan } from '../PricingContent/useService';
  7. import { useService } from './useService';
  8. export interface OrderSummaryProps {
  9. selectedPlan: Plan | null;
  10. }
  11. const OrderSummary = memo(({ selectedPlan }: OrderSummaryProps) => {
  12. const { t } = useTranslation();
  13. const { isMobile } = useResponsive();
  14. const { userAccount, currentSubscription, orderTotal } = useService({ selectedPlan });
  15. return (
  16. <div className="flex flex-col gap-5 bg-[#1B1D22] rounded-xl p-[25px_30px_25px_25px] shadow-[0px_4px_10px_0px_rgba(0,0,0,0.05)]">
  17. <div className="flex flex-col gap-5">
  18. <OrderSummaryItem label={t('pages.pricing.orderSummary.account')} value={userAccount} />
  19. <OrderSummaryItem
  20. label={t('pages.pricing.orderSummary.currentSubscription')}
  21. value={currentSubscription}
  22. />
  23. <OrderSummaryItem
  24. label={t('pages.pricing.orderSummary.orderTotal')}
  25. value={orderTotal}
  26. valueColor="text-[#0EA5E9]"
  27. />
  28. </div>
  29. <p className="text-[#646776] text-xs font-normal leading-[1.4]">
  30. {t('pages.pricing.orderSummary.terms')}
  31. </p>
  32. <div className={`flex gap-5 ${isMobile ? 'flex-col' : 'flex-row'}`}>
  33. <Button
  34. className="bg-[#0EA5E9] text-white text-sm font-medium leading-[1.4] uppercase rounded-[25px] px-[42px] py-[10px] h-auto border-none hover:bg-[#0EA5E9]/80"
  35. onClick={() => {
  36. // Handle payment
  37. }}
  38. >
  39. {t('pages.pricing.orderSummary.goPayNow')}
  40. </Button>
  41. </div>
  42. </div>
  43. );
  44. });
  45. OrderSummary.displayName = 'OrderSummary';
  46. export default OrderSummary;