@@ -30,15 +30,14 @@ import { EmptyState } from "components/EmptyState/EmptyState";
30
30
import { displayError , displaySuccess } from "components/GlobalSnackbar/utils" ;
31
31
import { LastSeen } from "components/LastSeen/LastSeen" ;
32
32
import { Loader } from "components/Loader/Loader" ;
33
- import { Margins } from "components/Margins/Margins" ;
34
33
import {
35
34
MoreMenu ,
36
35
MoreMenuContent ,
37
36
MoreMenuItem ,
38
37
MoreMenuTrigger ,
39
38
ThreeDotsButton ,
40
39
} from "components/MoreMenu/MoreMenu" ;
41
- import { ResourcePageHeader } from "components/PageHeader/PageHeader " ;
40
+ import { SettingsHeader } from "components/SettingsHeader/SettingsHeader " ;
42
41
import { Stack } from "components/Stack/Stack" ;
43
42
import {
44
43
PaginationStatus ,
@@ -98,111 +97,113 @@ export const GroupPage: FC = () => {
98
97
< >
99
98
{ helmet }
100
99
101
- < Margins >
102
- < ResourcePageHeader
103
- displayName = { groupData ?. display_name }
104
- name = { groupData ?. name }
105
- actions = {
106
- canUpdateGroup && (
107
- < >
108
- < Button
109
- startIcon = { < SettingsOutlined /> }
110
- to = "settings"
111
- component = { RouterLink }
112
- >
113
- Settings
114
- </ Button >
115
- < Button
116
- disabled = { groupData ?. id === groupData ?. organization_id }
117
- onClick = { ( ) => {
118
- setIsDeletingGroup ( true ) ;
119
- } }
120
- startIcon = { < DeleteOutline /> }
121
- css = { styles . removeButton }
122
- >
123
- Delete…
124
- </ Button >
125
- </ >
126
- )
127
- }
100
+ < Stack
101
+ alignItems = "baseline"
102
+ direction = "row"
103
+ justifyContent = "space-between"
104
+ >
105
+ < SettingsHeader
106
+ title = { groupData ?. display_name || groupData ?. name }
107
+ description = "Manage members for this group."
128
108
/>
129
-
130
- < Stack spacing = { 1 } >
131
- { canUpdateGroup && groupData && ! isEveryoneGroup ( groupData ) && (
132
- < AddGroupMember
133
- isLoading = { addMemberMutation . isLoading }
134
- onSubmit = { async ( user , reset ) => {
135
- try {
136
- await addMemberMutation . mutateAsync ( {
137
- groupId,
138
- userId : user . id ,
139
- } ) ;
140
- reset ( ) ;
141
- await groupQuery . refetch ( ) ;
142
- } catch ( error ) {
143
- displayError ( getErrorMessage ( error , "Failed to add member." ) ) ;
144
- }
109
+ { canUpdateGroup && (
110
+ < Stack direction = "row" spacing = { 2 } >
111
+ < Button
112
+ startIcon = { < SettingsOutlined /> }
113
+ to = "settings"
114
+ component = { RouterLink }
115
+ >
116
+ Settings
117
+ </ Button >
118
+ < Button
119
+ disabled = { groupData ?. id === groupData ?. organization_id }
120
+ onClick = { ( ) => {
121
+ setIsDeletingGroup ( true ) ;
145
122
} }
146
- />
147
- ) }
148
- < TableToolbar >
149
- < PaginationStatus
150
- isLoading = { Boolean ( isLoading ) }
151
- showing = { groupData ?. members . length ?? 0 }
152
- total = { groupData ?. members . length ?? 0 }
153
- label = "members"
154
- />
155
- </ TableToolbar >
123
+ startIcon = { < DeleteOutline /> }
124
+ css = { styles . removeButton }
125
+ >
126
+ Delete…
127
+ </ Button >
128
+ </ Stack >
129
+ ) }
130
+ </ Stack >
156
131
157
- < TableContainer >
158
- < Table >
159
- < TableHead >
160
- < TableRow >
161
- < TableCell width = "59%" > User</ TableCell >
162
- < TableCell width = "40" > Status</ TableCell >
163
- < TableCell width = "1%" > </ TableCell >
164
- </ TableRow >
165
- </ TableHead >
132
+ < Stack spacing = { 1 } >
133
+ { canUpdateGroup && groupData && ! isEveryoneGroup ( groupData ) && (
134
+ < AddGroupMember
135
+ isLoading = { addMemberMutation . isLoading }
136
+ onSubmit = { async ( user , reset ) => {
137
+ try {
138
+ await addMemberMutation . mutateAsync ( {
139
+ groupId,
140
+ userId : user . id ,
141
+ } ) ;
142
+ reset ( ) ;
143
+ await groupQuery . refetch ( ) ;
144
+ } catch ( error ) {
145
+ displayError ( getErrorMessage ( error , "Failed to add member." ) ) ;
146
+ }
147
+ } }
148
+ />
149
+ ) }
150
+ < TableToolbar >
151
+ < PaginationStatus
152
+ isLoading = { Boolean ( isLoading ) }
153
+ showing = { groupData ?. members . length ?? 0 }
154
+ total = { groupData ?. members . length ?? 0 }
155
+ label = "members"
156
+ />
157
+ </ TableToolbar >
158
+
159
+ < TableContainer >
160
+ < Table >
161
+ < TableHead >
162
+ < TableRow >
163
+ < TableCell width = "59%" > User</ TableCell >
164
+ < TableCell width = "40" > Status</ TableCell >
165
+ < TableCell width = "1%" > </ TableCell >
166
+ </ TableRow >
167
+ </ TableHead >
166
168
167
- < TableBody >
168
- { groupData ?. members . length === 0 ? (
169
- < TableRow >
170
- < TableCell colSpan = { 999 } >
171
- < EmptyState
172
- message = "No members yet"
173
- description = "Add a member using the controls above"
174
- />
175
- </ TableCell >
176
- </ TableRow >
177
- ) : (
178
- groupData ?. members . map ( ( member ) => (
179
- < GroupMemberRow
180
- member = { member }
181
- group = { groupData }
182
- key = { member . id }
183
- canUpdate = { canUpdateGroup }
184
- onRemove = { async ( ) => {
185
- try {
186
- await removeMemberMutation . mutateAsync ( {
187
- groupId : groupData . id ,
188
- userId : member . id ,
189
- } ) ;
190
- await groupQuery . refetch ( ) ;
191
- displaySuccess ( "Member removed successfully." ) ;
192
- } catch ( error ) {
193
- displayError (
194
- getErrorMessage ( error , "Failed to remove member." ) ,
195
- ) ;
196
- }
197
- } }
169
+ < TableBody >
170
+ { groupData ?. members . length === 0 ? (
171
+ < TableRow >
172
+ < TableCell colSpan = { 999 } >
173
+ < EmptyState
174
+ message = "No members yet"
175
+ description = "Add a member using the controls above"
198
176
/>
199
- ) )
200
- ) }
201
- </ TableBody >
202
- </ Table >
203
- </ TableContainer >
204
- </ Stack >
205
- </ Margins >
177
+ </ TableCell >
178
+ </ TableRow >
179
+ ) : (
180
+ groupData ?. members . map ( ( member ) => (
181
+ < GroupMemberRow
182
+ member = { member }
183
+ group = { groupData }
184
+ key = { member . id }
185
+ canUpdate = { canUpdateGroup }
186
+ onRemove = { async ( ) => {
187
+ try {
188
+ await removeMemberMutation . mutateAsync ( {
189
+ groupId : groupData . id ,
190
+ userId : member . id ,
191
+ } ) ;
192
+ await groupQuery . refetch ( ) ;
193
+ displaySuccess ( "Member removed successfully." ) ;
194
+ } catch ( error ) {
195
+ displayError (
196
+ getErrorMessage ( error , "Failed to remove member." ) ,
197
+ ) ;
198
+ }
199
+ } }
200
+ />
201
+ ) )
202
+ ) }
203
+ </ TableBody >
204
+ </ Table >
205
+ </ TableContainer >
206
+ </ Stack >
206
207
207
208
{ groupQuery . data && (
208
209
< DeleteDialog
0 commit comments