AirwallexCardInput.tsx 2.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. "use client";
  2. import { useId } from "react";
  3. import {
  4. useAirwallexCard,
  5. useAirwallexCardState
  6. } from "@/lib/Airwallex/useAirwallexCard";
  7. export default function AirwallexCardInput() {
  8. const id = useId();
  9. const {
  10. cardNumberErrorMsg,
  11. expiryErrorMsg,
  12. cvcErrorMsg
  13. } = useAirwallexCardState();
  14. const cardNumberId = `airwallex_cardNumber_${id}`;
  15. const cvcId = `airwallex_cvc_${id}`;
  16. const expiryId = `airwallex_expiry_${id}`;
  17. useAirwallexCard({
  18. cardNumber: cardNumberId,
  19. cvc: cvcId,
  20. expiry: expiryId
  21. });
  22. return (
  23. <div id="airwallex-dropIn-card-container" className="w-full">
  24. <div className="w-full">
  25. <div id={cardNumberId} className="w-full box-border border-1 border-ly-inputborder h-11.5 pl-3 flex items-center"></div>
  26. {cardNumberErrorMsg && <p className="text-ly-12 text-ly-errorcolor">{cardNumberErrorMsg}</p>}
  27. </div>
  28. <div className="mt-3 flex justify-between gap-4">
  29. <div className="w-full">
  30. <div id={expiryId} className="w-full box-border border-1 border-ly-inputborder h-11.5 pl-3 flex items-center"></div>
  31. {expiryErrorMsg && <p className="text-ly-12 text-ly-errorcolor">{expiryErrorMsg}</p>}
  32. </div>
  33. <div className="w-full">
  34. <div id={cvcId} className="w-full box-border border-1 border-ly-inputborder h-11.5 pl-3 flex items-center"></div>
  35. {cvcErrorMsg && <p className="text-ly-12 text-ly-errorcolor">{cvcErrorMsg}</p>}
  36. </div>
  37. </div>
  38. <div className="mt-2 w-full flex items-center">
  39. <svg className="flex-none w-4.5 h-4.5 mr-2" xmlns="http://www.w3.org/2000/svg" width="1.4em" height="1.4em" viewBox="0 0 24 24" id="pci-svg">
  40. <path d="m18,8l-1,0l0,-2c0,-2.76 -2.24,-5 -5,-5s-5,2.24 -5,5l0,2l-1,0c-1.1,0 -2,0.9 -2,2l0,10c0,1.1 0.9,2 2,2l12,0c1.1,0 2,-0.9 2,-2l0,-10c0,-1.1 -0.9,-2 -2,-2zm-6,9c-1.1,0 -2,-0.9 -2,-2s0.9,-2 2,-2s2,0.9 2,2s-0.9,2 -2,2zm3.1,-9l-6.2,0l0,-2c0,-1.71 1.39,-3.1 3.1,-3.1c1.71,0 3.1,0.92125 3.1,2.84372l0,-0.78122l0,3.0375z"></path>
  41. </svg>
  42. <p className="text-ly-12 leading-ly-18">
  43. Your card details are protected using PCI DSS v3.2 security standards.
  44. </p>
  45. </div>
  46. </div>
  47. )
  48. }