@@ -41,7 +41,7 @@ import {
4141} from '@/components/ui/select'
4242import { Input } from '@/components/ui/input'
4343import { Label } from '@/components/ui/label'
44- import { useToast } from '@/components/ui/use-toast '
44+ import { toast } from 'sonner '
4545import { Skeleton } from '@/components/ui/skeleton'
4646import {
4747 UserPlus ,
@@ -86,7 +86,6 @@ export function TeamManagement({
8686 const [ inviteRole , setInviteRole ] = useState < 'admin' | 'editor' | 'viewer' > ( 'viewer' )
8787 const [ newRole , setNewRole ] = useState < 'owner' | 'admin' | 'editor' | 'viewer' > ( 'viewer' )
8888 const [ submitting , setSubmitting ] = useState ( false )
89- const { toast } = useToast ( )
9089
9190 // Check if current user can manage team
9291 const canManageTeam = [ 'owner' , 'admin' ] . includes ( currentUserRole )
@@ -110,15 +109,11 @@ export function TeamManagement({
110109 setMembers ( data . members || [ ] )
111110 } catch ( error ) {
112111 console . error ( 'Error fetching members:' , error )
113- toast ( {
114- title : 'Error' ,
115- description : 'Failed to load team members' ,
116- variant : 'destructive' ,
117- } )
112+ toast . error ( 'Failed to load team members' )
118113 } finally {
119114 setLoading ( false )
120115 }
121- } , [ companySlug , toast ] )
116+ } , [ companySlug ] )
122117
123118 useEffect ( ( ) => {
124119 fetchMembers ( )
@@ -127,11 +122,7 @@ export function TeamManagement({
127122 // Handle invite member
128123 const handleInvite = async ( ) => {
129124 if ( ! inviteEmail ) {
130- toast ( {
131- title : 'Error' ,
132- description : 'Please enter an email address' ,
133- variant : 'destructive' ,
134- } )
125+ toast . error ( 'Please enter an email address' )
135126 return
136127 }
137128
@@ -150,25 +141,28 @@ export function TeamManagement({
150141
151142 if ( ! response . ok ) {
152143 console . error ( 'Invite error response:' , data )
153- throw new Error ( data . error || 'Failed to invite member' )
144+
145+ // Check if it's a team limit error
146+ if ( data . upgrade_required ) {
147+ toast . error ( 'Team Member Limit Reached' , {
148+ description : `${ data . error } (${ data . current_usage } /${ data . limit } ). Please upgrade your plan to add more members.` ,
149+ duration : 6000 ,
150+ } )
151+ } else {
152+ toast . error ( data . error || 'Failed to invite member' )
153+ }
154+ return
154155 }
155156
156- toast ( {
157- title : 'Success' ,
158- description : 'Team member invited successfully' ,
159- } )
157+ toast . success ( 'Team member invited successfully' )
160158
161159 setInviteDialogOpen ( false )
162160 setInviteEmail ( '' )
163161 setInviteRole ( 'viewer' )
164162 fetchMembers ( )
165163 } catch ( error ) {
166164 console . error ( 'Error inviting member:' , error )
167- toast ( {
168- title : 'Error' ,
169- description : error instanceof Error ? error . message : 'Failed to invite member' ,
170- variant : 'destructive' ,
171- } )
165+ toast . error ( error instanceof Error ? error . message : 'Failed to invite member' )
172166 } finally {
173167 setSubmitting ( false )
174168 }
@@ -195,21 +189,14 @@ export function TeamManagement({
195189 throw new Error ( data . error || 'Failed to update role' )
196190 }
197191
198- toast ( {
199- title : 'Success' ,
200- description : 'Member role updated successfully' ,
201- } )
192+ toast . success ( 'Member role updated successfully' )
202193
203194 setRoleDialogOpen ( false )
204195 setSelectedMember ( null )
205196 fetchMembers ( )
206197 } catch ( error ) {
207198 console . error ( 'Error updating role:' , error )
208- toast ( {
209- title : 'Error' ,
210- description : error instanceof Error ? error . message : 'Failed to update role' ,
211- variant : 'destructive' ,
212- } )
199+ toast . error ( error instanceof Error ? error . message : 'Failed to update role' )
213200 } finally {
214201 setSubmitting ( false )
215202 }
@@ -234,21 +221,14 @@ export function TeamManagement({
234221 throw new Error ( data . error || 'Failed to remove member' )
235222 }
236223
237- toast ( {
238- title : 'Success' ,
239- description : 'Member removed successfully' ,
240- } )
224+ toast . success ( 'Member removed successfully' )
241225
242226 setRemoveDialogOpen ( false )
243227 setSelectedMember ( null )
244228 fetchMembers ( )
245229 } catch ( error ) {
246230 console . error ( 'Error removing member:' , error )
247- toast ( {
248- title : 'Error' ,
249- description : error instanceof Error ? error . message : 'Failed to remove member' ,
250- variant : 'destructive' ,
251- } )
231+ toast . error ( error instanceof Error ? error . message : 'Failed to remove member' )
252232 } finally {
253233 setSubmitting ( false )
254234 }
@@ -473,7 +453,7 @@ export function TeamManagement({
473453 < DialogHeader >
474454 < DialogTitle > Invite Team Member</ DialogTitle >
475455 < DialogDescription >
476- Send an invitation to join your team. They must have a CodeUnia account.
456+ Send an invitation to join your team. They must have a Codeunia account.
477457 </ DialogDescription >
478458 </ DialogHeader >
479459 < div className = "space-y-4 py-4" >
0 commit comments