PackageOverview.tsx 3.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. import { useTranslation } from "react-i18next";
  2. import ProductInfoModal from "../../../components/ProductInfoModal";
  3. import { Package } from "../../../services/product/type";
  4. import React, { useState, useEffect } from "react";
  5. import { formatCarriers } from "../../../logic/loigicUtils";
  6. const PackageOverview = ({ packageInfo }: { packageInfo: Package }) => {
  7. const { t } = useTranslation();
  8. const [isInfoModalOpen, setIsInfoModalOpen] = useState<boolean>(false);
  9. useEffect(() => {
  10. console.log("Package info updated: ", packageInfo);
  11. }, [packageInfo]);
  12. return (
  13. <>
  14. <ProductInfoModal
  15. isOpen={isInfoModalOpen}
  16. onClose={() => setIsInfoModalOpen(false)}
  17. packageInfo={packageInfo}
  18. />
  19. <div className="bg-[#f0f9ff] rounded-[24px] p-6 md:p-8 border border-sky-100 shadow-sm transition-all">
  20. <h3 className="text-lg md:text-xl font-black text-slate-900 mb-4">
  21. {t("productInformation")}:
  22. </h3>
  23. <ul className="space-y-4 text-sm md:text-base">
  24. <li className="">
  25. <div className="font-bold text-slate-500 min-w-[150px] shrink-0">
  26. {t("networkProvider")}:
  27. </div>
  28. <div className="font-bold text-slate-900">
  29. {formatCarriers(packageInfo?.carriers)}
  30. </div>
  31. </li>
  32. <li className="flex flex-col sm:flex-row sm:items-baseline gap-1 sm:gap-2">
  33. <span className="font-bold text-slate-500 min-w-[150px] shrink-0">
  34. {t("infoRegistration")} (eKYC):
  35. </span>
  36. <span className="font-medium text-slate-900">
  37. {packageInfo?.ekycRequired ? t("required") : t("notRequired")}
  38. </span>
  39. </li>
  40. <li className="flex flex-col sm:flex-row sm:items-baseline gap-1 sm:gap-2">
  41. <span className="font-bold text-slate-500 min-w-[150px] shrink-0">
  42. {t("packageStartTime")}:
  43. </span>
  44. <span className="font-medium text-slate-900">
  45. {packageInfo?.activationMethod === 1
  46. ? t("usageTimeCalculatedFromSignal")
  47. : t("usageTimeCalculatedFromPurchase")}
  48. </span>
  49. </li>
  50. <li className="flex flex-col sm:flex-row sm:items-baseline gap-1 sm:gap-2">
  51. <span className="font-bold text-slate-500 min-w-[150px] shrink-0">
  52. {t("coverageArea")}:
  53. </span>
  54. <span className="font-medium text-slate-900">
  55. {packageInfo?.coverageArea}
  56. </span>
  57. </li>
  58. </ul>
  59. <button
  60. onClick={() => setIsInfoModalOpen(true)}
  61. className="mt-6 flex items-center text-[#EE0434] font-bold text-sm hover:underline hover:text-[#BB0329] transition-colors group"
  62. >
  63. <span>{t("seeMore")}</span>
  64. <div className="w-5 h-5 bg-white rounded-full flex items-center justify-center ml-2 shadow-sm group-hover:shadow-md transition-all">
  65. <svg
  66. className="w-3 h-3 text-[#EE0434]"
  67. fill="none"
  68. stroke="currentColor"
  69. viewBox="0 0 24 24"
  70. >
  71. <path
  72. strokeLinecap="round"
  73. strokeLinejoin="round"
  74. strokeWidth={2.5}
  75. d="M19 9l-7 7-7-7"
  76. />
  77. </svg>
  78. </div>
  79. </button>
  80. </div>
  81. </>
  82. );
  83. };
  84. export default PackageOverview;