@@ -32,6 +32,7 @@ import {
3232 BoxArchive ,
3333 ChevronRight ,
3434 CircleXmark ,
35+ Copy ,
3536 EnvelopeArrowRight ,
3637 InvoiceDollar ,
3738 LoadingSpinner ,
@@ -290,126 +291,145 @@ function PageControls({ partner }: { partner: EnrolledPartnerProps }) {
290291 openPopover = { isOpen }
291292 setOpenPopover = { setIsOpen }
292293 content = {
293- < div className = "grid w-full grid-cols-1 gap-px p-2 md:w-48" >
294+ < div className = "w-full md:w-48" >
294295 { partner . status === "invited" ? (
295- < MenuItem
296- icon = { isDeletingInvite ? LoadingSpinner : Trash }
297- onClick = { async ( ) => {
298- if ( partner . status !== "invited" || ! workspaceId ) {
299- return ;
300- }
301- if (
302- ! window . confirm (
303- "Are you sure you want to delete this invite? This action cannot be undone." ,
304- )
305- ) {
306- return ;
307- }
308-
309- await deleteInvite ( {
310- workspaceId,
311- partnerId : partner . id ,
312- } ) ;
313- } }
314- variant = "danger"
315- >
316- Delete invite
317- </ MenuItem >
318- ) : (
319- < >
320- < MenuItem
321- as = { Link }
322- href = { `/${ workspaceSlug } /program/messages/${ partner . id } ` }
323- target = "_blank"
324- icon = { Msgs }
325- onClick = { ( ) => setIsOpen ( false ) }
326- className = "md:hidden"
327- >
328- Message
329- </ MenuItem >
296+ < div className = "grid gap-px p-2" >
330297 < MenuItem
331- icon = { InvoiceDollar }
332- onClick = { ( ) => {
333- setCreateCommissionSheetOpen ( true ) ;
334- setIsOpen ( false ) ;
335- } }
336- className = "md:hidden"
337- >
338- Create commission
339- </ MenuItem >
340- < MenuItem
341- icon = { Refresh2 }
342- onClick = { ( ) => {
343- setClawbackSheetOpen ( true ) ;
344- setIsOpen ( false ) ;
345- } }
346- >
347- Create clawback
348- </ MenuItem >
349- < MenuItem
350- icon = { PenWriting }
351- onClick = { ( ) => {
352- setShowPartnerAdvancedSettingsModal ( true ) ;
353- setIsOpen ( false ) ;
298+ icon = { isDeletingInvite ? LoadingSpinner : Trash }
299+ onClick = { async ( ) => {
300+ if ( partner . status !== "invited" || ! workspaceId ) {
301+ return ;
302+ }
303+ if (
304+ ! window . confirm (
305+ "Are you sure you want to delete this invite? This action cannot be undone." ,
306+ )
307+ ) {
308+ return ;
309+ }
310+
311+ await deleteInvite ( {
312+ workspaceId,
313+ partnerId : partner . id ,
314+ } ) ;
354315 } }
316+ variant = "danger"
355317 >
356- Advanced settings
318+ Delete invite
357319 </ MenuItem >
358- { ! [ "banned" , "deactivated" ] . includes ( partner . status ) && (
320+ </ div >
321+ ) : (
322+ < >
323+ < div className = "grid gap-px p-2" >
359324 < MenuItem
360- icon = { BoxArchive }
361- onClick = { ( ) => {
362- setShowArchivePartnerModal ( true ) ;
363- setIsOpen ( false ) ;
364- } }
325+ as = { Link }
326+ href = { `/${ workspaceSlug } /program/messages/${ partner . id } ` }
327+ target = "_blank"
328+ icon = { Msgs }
329+ onClick = { ( ) => setIsOpen ( false ) }
330+ className = "md:hidden"
365331 >
366- { partner . status === "archived" ? "Unarchive" : "Archive" } { " " }
367- partner
332+ Message
368333 </ MenuItem >
369- ) }
370- { partner . status === "deactivated" ? (
371334 < MenuItem
372- icon = { LockOpen }
335+ icon = { InvoiceDollar }
373336 onClick = { ( ) => {
374- setShowReactivatePartnerModal ( true ) ;
337+ setCreateCommissionSheetOpen ( true ) ;
375338 setIsOpen ( false ) ;
376339 } }
340+ className = "md:hidden"
377341 >
378- Reactivate partner
342+ Create commission
379343 </ MenuItem >
380- ) : partner . status !== "banned" ? (
381344 < MenuItem
382- icon = { CircleXmark }
345+ icon = { Refresh2 }
383346 onClick = { ( ) => {
384- setShowDeactivatePartnerModal ( true ) ;
347+ setClawbackSheetOpen ( true ) ;
385348 setIsOpen ( false ) ;
386349 } }
387350 >
388- Deactivate partner
351+ Create clawback
389352 </ MenuItem >
390- ) : null }
391- { partner . status === "banned" ? (
392353 < MenuItem
393- icon = { UserCheck }
354+ icon = { PenWriting }
394355 onClick = { ( ) => {
395- setShowUnbanPartnerModal ( true ) ;
356+ setShowPartnerAdvancedSettingsModal ( true ) ;
396357 setIsOpen ( false ) ;
397358 } }
398359 >
399- Unban partner
360+ Advanced settings
400361 </ MenuItem >
401- ) : (
402362 < MenuItem
403- icon = { UserDelete }
404- variant = "danger"
363+ icon = { Copy }
405364 onClick = { ( ) => {
406- setShowBanPartnerModal ( true ) ;
365+ navigator . clipboard . writeText ( partner . id ) ;
366+ toast . success ( "Partner ID copied!" ) ;
407367 setIsOpen ( false ) ;
408368 } }
409369 >
410- Ban partner
370+ Copy Partner ID
411371 </ MenuItem >
412- ) }
372+ </ div >
373+ < div className = "border-t border-neutral-200" />
374+ < div className = "grid gap-px p-2" >
375+ { ! [ "banned" , "deactivated" ] . includes ( partner . status ) && (
376+ < MenuItem
377+ icon = { BoxArchive }
378+ onClick = { ( ) => {
379+ setShowArchivePartnerModal ( true ) ;
380+ setIsOpen ( false ) ;
381+ } }
382+ >
383+ { partner . status === "archived"
384+ ? "Unarchive"
385+ : "Archive" } { " " }
386+ partner
387+ </ MenuItem >
388+ ) }
389+ { partner . status === "deactivated" ? (
390+ < MenuItem
391+ icon = { LockOpen }
392+ onClick = { ( ) => {
393+ setShowReactivatePartnerModal ( true ) ;
394+ setIsOpen ( false ) ;
395+ } }
396+ >
397+ Reactivate partner
398+ </ MenuItem >
399+ ) : partner . status !== "banned" ? (
400+ < MenuItem
401+ icon = { CircleXmark }
402+ onClick = { ( ) => {
403+ setShowDeactivatePartnerModal ( true ) ;
404+ setIsOpen ( false ) ;
405+ } }
406+ >
407+ Deactivate partner
408+ </ MenuItem >
409+ ) : null }
410+ { partner . status === "banned" ? (
411+ < MenuItem
412+ icon = { UserCheck }
413+ onClick = { ( ) => {
414+ setShowUnbanPartnerModal ( true ) ;
415+ setIsOpen ( false ) ;
416+ } }
417+ >
418+ Unban partner
419+ </ MenuItem >
420+ ) : (
421+ < MenuItem
422+ icon = { UserDelete }
423+ variant = "danger"
424+ onClick = { ( ) => {
425+ setShowBanPartnerModal ( true ) ;
426+ setIsOpen ( false ) ;
427+ } }
428+ >
429+ Ban partner
430+ </ MenuItem >
431+ ) }
432+ </ div >
413433 </ >
414434 ) }
415435 </ div >
0 commit comments