@shipfox/client-workspace-settings 17.0.0 → 22.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.turbo/turbo-build.log +1 -1
- package/.turbo/turbo-type.log +1 -0
- package/CHANGELOG.md +34 -0
- package/dist/components/members/workspace-members-section.d.ts.map +1 -1
- package/dist/components/members/workspace-members-section.js +90 -73
- package/dist/components/members/workspace-members-section.js.map +1 -1
- package/dist/routes/general.d.ts +3 -0
- package/dist/routes/general.js +3 -0
- package/dist/routes/general.js.map +1 -1
- package/dist/routes/index.d.ts +3 -0
- package/dist/routes/index.d.ts.map +1 -1
- package/dist/routes/index.js +3 -0
- package/dist/routes/index.js.map +1 -1
- package/dist/routes/members.d.ts +3 -0
- package/dist/routes/members.js +3 -0
- package/dist/routes/members.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/components/members/workspace-members-section.tsx +68 -51
- package/src/routes/general.tsx +4 -1
- package/src/routes/index.tsx +1 -0
- package/src/routes/members.tsx +4 -1
- package/tsconfig.build.tsbuildinfo +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shipfox/client-workspace-settings",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "
|
|
4
|
+
"version": "22.0.0",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/ShipfoxHQ/shipfox.git",
|
|
@@ -27,12 +27,12 @@
|
|
|
27
27
|
"dependencies": {
|
|
28
28
|
"@swc/helpers": "^0.5.17",
|
|
29
29
|
"@tanstack/react-form": "^1.32.0",
|
|
30
|
-
"@shipfox/client-api": "6.0.1",
|
|
31
|
-
"@shipfox/client-shell": "17.0.0",
|
|
32
30
|
"@shipfox/api-workspaces-dto": "12.0.0",
|
|
33
|
-
"@shipfox/client-
|
|
34
|
-
"@shipfox/client-
|
|
35
|
-
"@shipfox/
|
|
31
|
+
"@shipfox/client-api": "6.0.1",
|
|
32
|
+
"@shipfox/client-auth": "22.0.0",
|
|
33
|
+
"@shipfox/client-shell": "22.0.0",
|
|
34
|
+
"@shipfox/react-ui": "2.1.0",
|
|
35
|
+
"@shipfox/client-ui": "22.0.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"@tanstack/react-query": "^5.101.0",
|
|
@@ -16,6 +16,7 @@ import {
|
|
|
16
16
|
ModalTitle,
|
|
17
17
|
ModalTrigger,
|
|
18
18
|
} from '@shipfox/react-ui/modal';
|
|
19
|
+
import {Panel} from '@shipfox/react-ui/panel';
|
|
19
20
|
import {Skeleton} from '@shipfox/react-ui/skeleton';
|
|
20
21
|
import {
|
|
21
22
|
Table,
|
|
@@ -81,35 +82,39 @@ function MembersSection({
|
|
|
81
82
|
</Text>
|
|
82
83
|
</div>
|
|
83
84
|
|
|
84
|
-
{query.isPending ? <TableSkeleton rows={3} cols={3} /> : null}
|
|
85
|
+
{query.isPending ? <TableSkeleton rows={3} cols={3} label="Loading members" /> : null}
|
|
85
86
|
|
|
86
87
|
{query.isError && query.data === undefined ? (
|
|
87
|
-
<
|
|
88
|
+
<Panel>
|
|
89
|
+
<QueryLoadError query={query} subject="members" variant="panel" />
|
|
90
|
+
</Panel>
|
|
88
91
|
) : null}
|
|
89
92
|
|
|
90
93
|
{members.length > 0 ? (
|
|
91
|
-
<
|
|
92
|
-
<
|
|
93
|
-
<
|
|
94
|
-
<
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
94
|
+
<Panel>
|
|
95
|
+
<Table>
|
|
96
|
+
<TableHeader>
|
|
97
|
+
<TableRow>
|
|
98
|
+
<TableHead>Name</TableHead>
|
|
99
|
+
<TableHead>Email</TableHead>
|
|
100
|
+
<TableHead>Joined</TableHead>
|
|
101
|
+
<TableHead className="w-80 text-right">Actions</TableHead>
|
|
102
|
+
</TableRow>
|
|
103
|
+
</TableHeader>
|
|
104
|
+
<TableBody>
|
|
105
|
+
{members.map((member) => (
|
|
106
|
+
<MemberRow
|
|
107
|
+
key={member.id}
|
|
108
|
+
member={member}
|
|
109
|
+
members={members}
|
|
110
|
+
currentUserId={auth.user?.id}
|
|
111
|
+
workspaceId={workspaceId}
|
|
112
|
+
workspaceName={workspaceName}
|
|
113
|
+
/>
|
|
114
|
+
))}
|
|
115
|
+
</TableBody>
|
|
116
|
+
</Table>
|
|
117
|
+
</Panel>
|
|
113
118
|
) : null}
|
|
114
119
|
</section>
|
|
115
120
|
);
|
|
@@ -224,34 +229,42 @@ function PendingInvitationsSection({
|
|
|
224
229
|
/>
|
|
225
230
|
</div>
|
|
226
231
|
|
|
227
|
-
{query.isPending ? <TableSkeleton rows={2} cols={3} /> : null}
|
|
232
|
+
{query.isPending ? <TableSkeleton rows={2} cols={3} label="Loading invitations" /> : null}
|
|
228
233
|
|
|
229
234
|
{query.isError && query.data === undefined ? (
|
|
230
|
-
<
|
|
235
|
+
<Panel>
|
|
236
|
+
<QueryLoadError query={query} subject="invitations" variant="panel" />
|
|
237
|
+
</Panel>
|
|
231
238
|
) : null}
|
|
232
239
|
|
|
233
|
-
{query.data !== undefined && invitations.length === 0 ?
|
|
240
|
+
{query.data !== undefined && invitations.length === 0 ? (
|
|
241
|
+
<Panel>
|
|
242
|
+
<EmptyInvitations />
|
|
243
|
+
</Panel>
|
|
244
|
+
) : null}
|
|
234
245
|
|
|
235
246
|
{invitations.length > 0 ? (
|
|
236
|
-
<
|
|
237
|
-
<
|
|
238
|
-
<
|
|
239
|
-
<
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
247
|
+
<Panel>
|
|
248
|
+
<Table>
|
|
249
|
+
<TableHeader>
|
|
250
|
+
<TableRow>
|
|
251
|
+
<TableHead>Email</TableHead>
|
|
252
|
+
<TableHead>Invited by</TableHead>
|
|
253
|
+
<TableHead>Expires</TableHead>
|
|
254
|
+
<TableHead className="w-80 text-right">Actions</TableHead>
|
|
255
|
+
</TableRow>
|
|
256
|
+
</TableHeader>
|
|
257
|
+
<TableBody>
|
|
258
|
+
{invitations.map((invitation) => (
|
|
259
|
+
<InvitationRow
|
|
260
|
+
key={invitation.id}
|
|
261
|
+
invitation={invitation}
|
|
262
|
+
workspaceId={workspaceId}
|
|
263
|
+
/>
|
|
264
|
+
))}
|
|
265
|
+
</TableBody>
|
|
266
|
+
</Table>
|
|
267
|
+
</Panel>
|
|
255
268
|
) : null}
|
|
256
269
|
</section>
|
|
257
270
|
);
|
|
@@ -453,22 +466,26 @@ function EmptyInvitations() {
|
|
|
453
466
|
icon="mailLine"
|
|
454
467
|
title="No pending invitations."
|
|
455
468
|
description="Invite someone above to grow your workspace."
|
|
469
|
+
variant="panel"
|
|
456
470
|
/>
|
|
457
471
|
);
|
|
458
472
|
}
|
|
459
473
|
|
|
460
|
-
function TableSkeleton({rows, cols}: {rows: number; cols: number}) {
|
|
474
|
+
function TableSkeleton({rows, cols, label}: {rows: number; cols: number; label: string}) {
|
|
461
475
|
return (
|
|
462
|
-
<
|
|
476
|
+
<Panel role="status" aria-label={label} className="divide-y">
|
|
463
477
|
{Array.from({length: rows}).map((_, rowIdx) => (
|
|
464
|
-
|
|
465
|
-
|
|
478
|
+
<div
|
|
479
|
+
// biome-ignore lint/suspicious/noArrayIndexKey: stable placeholder rows
|
|
480
|
+
key={rowIdx}
|
|
481
|
+
className="grid min-h-44 grid-cols-3 gap-group px-row py-row"
|
|
482
|
+
>
|
|
466
483
|
{Array.from({length: cols}).map((__, colIdx) => (
|
|
467
484
|
// biome-ignore lint/suspicious/noArrayIndexKey: stable placeholder cells
|
|
468
485
|
<Skeleton key={colIdx} className="h-20" />
|
|
469
486
|
))}
|
|
470
487
|
</div>
|
|
471
488
|
))}
|
|
472
|
-
</
|
|
489
|
+
</Panel>
|
|
473
490
|
);
|
|
474
491
|
}
|
package/src/routes/general.tsx
CHANGED
|
@@ -1,4 +1,7 @@
|
|
|
1
1
|
import {defineRoute} from '@shipfox/client-shell/runtime';
|
|
2
2
|
import {GeneralSettingsPage} from '#pages/general-settings-page.js';
|
|
3
3
|
|
|
4
|
-
export default defineRoute({
|
|
4
|
+
export default defineRoute({
|
|
5
|
+
staticData: {frame: 'content'},
|
|
6
|
+
component: GeneralSettingsPage,
|
|
7
|
+
});
|
package/src/routes/index.tsx
CHANGED
|
@@ -2,6 +2,7 @@ import {defineRoute} from '@shipfox/client-shell/runtime';
|
|
|
2
2
|
import {redirect} from '@tanstack/react-router';
|
|
3
3
|
|
|
4
4
|
export default defineRoute({
|
|
5
|
+
staticData: {frame: 'content'},
|
|
5
6
|
beforeLoad: ({params}: {params: {workspaceSlug: string}}) => {
|
|
6
7
|
throw redirect({
|
|
7
8
|
to: '/w/$workspaceSlug/settings/members',
|
package/src/routes/members.tsx
CHANGED
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
import {defineRoute} from '@shipfox/client-shell/runtime';
|
|
2
2
|
import {MembersSettingsPage} from '#pages/members-settings-page.js';
|
|
3
|
-
export default defineRoute({
|
|
3
|
+
export default defineRoute({
|
|
4
|
+
staticData: {frame: 'content'},
|
|
5
|
+
component: MembersSettingsPage,
|
|
6
|
+
});
|