1+ import { copyRosterToClipboard } from '../lib/role-utils'
12import { Roles } from '../model/roles'
2- import type { Lineup } from '../model/rosters'
33
44interface RosterRepositoryProps {
55 activePreset : string
66 customRosterName : string
77 deleteRoster : ( ) => void
8- rosterLineups : Record < string , Lineup >
8+ rosterLineups : Record < string , string [ ] >
99 saveRoster : ( ) => void
1010 selectRoster : ( selectedRoster : string ) => void
1111 setCustomRosterName : React . Dispatch < React . SetStateAction < string > >
@@ -20,11 +20,11 @@ export function RosterRepository({
2020 saveRoster,
2121 selectRoster,
2222 setCustomRosterName,
23- generateRoster
23+ generateRoster,
2424} : RosterRepositoryProps ) {
2525 return (
2626 < div className = "flex flex-wrap gap-1 justify-center content-baseline" >
27- < div id = "load-roster" className = ' md:flex-1 flex-nowrap text-nowrap' >
27+ < div id = "load-roster" className = " md:flex-1 flex-nowrap text-nowrap" >
2828 < div id = "select-roster" >
2929 < span className = "font-semibold" > Preset:</ span >
3030 < select
@@ -52,7 +52,7 @@ export function RosterRepository({
5252 </ span >
5353 </ div >
5454 </ div >
55- < div className = ' md:flex-1 flex-nowrap text-nowrap' >
55+ < div className = " md:flex-1 flex-nowrap text-nowrap" >
5656 < input
5757 value = { customRosterName }
5858 onChange = { ( e ) => setCustomRosterName ( e . target . value ) }
@@ -63,25 +63,33 @@ export function RosterRepository({
6363 className = "p-1.5 pl-3 rounded-l-xl placeholder:text-gray-100 placeholder:italic bg-slate-900 text-slate-200"
6464 />
6565 < span
66- onClick = { _ => customRosterName && saveRoster ( ) }
66+ onClick = { ( _ ) => customRosterName && saveRoster ( ) }
6767 className = { `${ ! customRosterName ? 'disabled text-gray-800 bg-gray-600' : 'bg-purple-600 hover:bg-purple-500 active:bg-purple-800' } select-none font-semibold rounded-r-lg p-2 ` }
6868 >
6969 Save Current Roster
7070 </ span >
7171 </ div >
7272
7373 < div className = "bg-indigo-900 shadow-2xl rounded-full p-3" >
74- < span className = ' font-semibold select-none' > Generate Lineup:</ span > { ' ' }
74+ < span className = " font-semibold select-none" > Generate Lineup:</ span > { ' ' }
7575 { [ 4 , 5 , 6 , 7 , 8 , 9 , 10 , 11 ] . map ( ( numPlayers ) => (
7676 < span
7777 key = { numPlayers }
78- className = { `mx-1 px-3 py-2 select-none ${ numPlayers % 2 == 0 ? 'bg-teal-700 hover:bg-teal-600 active:bg-teal-800' : 'bg-amber-700 hover:bg-amber-600 active:bg-amber-800' } rounded-full cursor-pointer` }
78+ className = { `mx-1 px-3 py-2 select-none ${ numPlayers % 2 == 0 ? 'bg-teal-700 hover:bg-teal-600 active:bg-teal-800' : 'bg-amber-700 hover:bg-amber-600 active:bg-amber-800' } rounded-full cursor-pointer` }
7979 onClick = { ( ) => generateRoster ( numPlayers ) }
8080 >
8181 { numPlayers }
8282 </ span >
8383 ) ) }
8484 </ div >
85+
86+ { /* Share Button */ }
87+ < span
88+ onClick = { copyRosterToClipboard }
89+ className = "select-none text-nowrap font-semibold flex-nowrap bg-indigo-600 hover:bg-indigo-500 active:bg-indigo-800 rounded-full px-3 py-3"
90+ >
91+ Share Roster 🔗
92+ </ span >
8593 </ div >
8694 )
8795}
0 commit comments