Skip to content
Merged
Show file tree
Hide file tree
Changes from 8 commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
122 changes: 63 additions & 59 deletions design-system/ui/modals/QrModal.tsx
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import React from 'react';
import Countdown from '../texts/Countdown';
import IconText from '../texts/IconText';
import { flexColumnCenter, flexColumn, flexRowSpaceBetweenCenter } from '../../styles/flex';
import { flexColumn, flexRowSpaceBetweenCenter } from '../../styles/flex';
import qr_calendar from '../../icons/QrCalendar.svg';
import qr_location from '../../icons/QrLocation.svg';
import qr_ticket from '../../icons/QrTicket.svg';
Expand Down Expand Up @@ -30,7 +30,6 @@ const QrModal = ({
isChecked,
iconPath1,
ticketQrCode,
className,
title,
hostName,
date,
Expand All @@ -54,68 +53,73 @@ const QrModal = ({
});

return (
<div className={`${flexColumnCenter} h-screen ${className}`}>
<div>
{iconPath1 && <div className="w-full">{iconPath1}</div>}
<div className={`ml-[5%] -mt-[180%] ${isChecked ? '' : 'opacity-50'}`}>
{ticketQrCode ? (
<img
src={`data:image/png;base64,${ticketQrCode}`}
alt="QR Code"
className="w-60 h-60"
/>
) : (
<div className="w-60 h-60 flex items-center justify-center bg-deDayBgLight rounded-md border border-deDayTextDark text-deDayTextDark text-sm text-center px-4">
주최자의 승인이 완료되면<br /> QR이 발급됩니다.
</div>
)}
</div>
<div className={`${flexColumn} justify-start px-6 ${isChecked ? '' : 'opacity-50'}`}>
<div className={`${flexRowSpaceBetweenCenter} w-full mt-[22%]`}>
<h1 className="truncate max-w-48 mr-2 font-semibold">{title}</h1>
<Countdown children={remainDays} isChecked={isCountdownChecked} />
<div className="fixed inset-0 bg-black bg-opacity-50 flex items-center justify-center z-50">
<div className="relative w-[265px] h-[485px]">
{iconPath1 && <div className="w-full h-full">{iconPath1}</div>}

<div className="absolute top-0 left-0 w-full h-full flex flex-col justify-between items-center px-4 py-4">
<div className="flex items-center justify-center h-1/2 w-full">
{ticketQrCode ? (
<img
src={`data:image/png;base64,${ticketQrCode}`}
alt="QR Code"
className="w-60 h-60 "
/>
) : (
<div className="w-40 h-40 flex items-center justify-center bg-deDayBgLight rounded-md border border-deDayTextDark text-deDayTextDark text-sm text-center px-4">
주최자의 승인이 완료되면 QR이 발급됩니다.
</div>
)}
</div>
<h2 className="text-deDayTextDark text-xs font-medium mb-2">{hostName}</h2>
<div className="space-y-1 text-deDayTextDark">
<IconText
size="xSmall"
iconPath={<img src={qr_calendar} alt="qr_calendar" className='mr-1' />}
children={formattedDate}
className="text-11"
></IconText>
<IconText
size="xSmall"
iconPath={<img src={qr_location} alt="qr_location" className='mr-1' />}
children={location}
className="text-11"
></IconText>
<IconText
size="xSmall"
iconPath={<img src={qr_ticket} alt="qr_ticket" className='mr-1' />}
children={ticketName}
className="text-11"
></IconText>
<span className="text-sm font-bold">{formattedPrice}원</span>
<hr />
<IconText
size="xSmall"
iconPath={<img src={orderStatus === 'COMPLETED' ? qr_check : qr_pending} alt="qr_check" className='mr-1' />}
children={orderStatus === 'COMPLETED' ? '승인됨' : '대기 중'}
className="text-11"
></IconText>
<IconText
size="xSmall"
iconPath={<img src={isCheckIn ? qr_check : qr_pending} alt="qr_check" className='mr-1' />}
children={isCheckIn ? '체크인 완료' : '체크인 미완료'}
className="text-11"
></IconText>
<div className={`${flexColumn} justify-start items-start h-1/3 w-full p-3 ${isChecked ? '' : 'opacity-50'}`}>
<div className={`${flexRowSpaceBetweenCenter} w-full `}>
<h1 className="truncate max-w-36 mr-2 font-semibold">{title}</h1>
<Countdown children={remainDays} isChecked={isCountdownChecked} />
</div>
<h2 className="text-deDayTextDark text-xs font-medium mb-2">{hostName}</h2>
<div className="space-y-1 text-deDayTextDark">
<IconText
size="xSmall"
iconPath={<img src={qr_calendar} alt="qr_calendar" className='mr-1' />}
children={formattedDate}
className="text-11"
></IconText>
<IconText
size="xSmall"
iconPath={<img src={qr_location} alt="qr_location" className='mr-1' />}
children={location}
className="text-11"
></IconText>
<IconText
size="xSmall"
iconPath={<img src={qr_ticket} alt="qr_ticket" className='mr-1' />}
children={ticketName}
className="text-11"
></IconText>
<span className="text-sm font-bold">{formattedPrice}원</span>
<hr />
<IconText
size="xSmall"
iconPath={<img src={orderStatus === 'COMPLETED' ? qr_check : qr_pending} alt="qr_check" className='mr-1' />}
children={orderStatus === 'COMPLETED' ? '승인됨' : '대기 중'}
className="text-11"
></IconText>
<IconText
size="xSmall"
iconPath={<img src={isCheckIn ? qr_check : qr_pending} alt="qr_check" className='mr-1' />}
children={isCheckIn ? '체크인 완료' : '체크인 미완료'}
className="text-11"
></IconText>
</div>
</div>

<span onClick={onClick} className="text-deDayTextDark text-xs underline cursor-pointer mt-2">
닫기
</span>
</div>
</div>
<span onClick={onClick} className="text-white text-xs mt-6 underline cursor-pointer">
닫기
</span>
</div>
);

};
export default QrModal;
Loading