18 lines
1.3 KiB
TypeScript
18 lines
1.3 KiB
TypeScript
'use client'
|
||
|
||
import './invite-delivery.css'
|
||
|
||
export default function InviteDeliveryChoice({ value, onChange }: {
|
||
value: 'manual' | 'email' | '' | null; onChange: (method: 'manual' | 'email') => void
|
||
}) {
|
||
return <div className="invite-delivery-options" role="group" aria-label="Invite delivery method">
|
||
{(['manual', 'email'] as const).map((method) => <button key={method} type="button" aria-pressed={value === method} onClick={() => onChange(method)}>
|
||
<span className="delivery-choice-icon" aria-hidden="true"><svg viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.7" strokeLinecap="round" strokeLinejoin="round">
|
||
{method === 'manual' ? <><path d="M10 13a5 5 0 0 0 7 0l3-3a5 5 0 0 0-7-7l-2 2" /><path d="M14 11a5 5 0 0 0-7 0l-3 3a5 5 0 0 0 7 7l2-2" /></> : <><rect x="3" y="5" width="18" height="14" rx="3" /><path d="m3 7 9 6 9-6" /></>}
|
||
</svg></span>
|
||
<span className="delivery-choice-copy"><strong>{method === 'manual' ? 'Copy a link' : 'Send an email'}</strong><small>{method === 'manual' ? 'Share it yourself. No email needed.' : 'We’ll send the invite. You get the link too.'}</small></span>
|
||
<span className="delivery-choice-check" aria-hidden="true">{value === method ? '✓' : ''}</span>
|
||
</button>)}
|
||
</div>
|
||
}
|