@shipfox/client-runners 21.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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shipfox/client-runners",
3
3
  "license": "MIT",
4
- "version": "21.0.0",
4
+ "version": "22.0.0",
5
5
  "repository": {
6
6
  "type": "git",
7
7
  "url": "git+https://github.com/ShipfoxHQ/shipfox.git",
@@ -27,11 +27,11 @@
27
27
  "dependencies": {
28
28
  "@swc/helpers": "^0.5.17",
29
29
  "@tanstack/react-form": "^1.32.0",
30
- "@shipfox/api-runners-dto": "12.4.0",
30
+ "@shipfox/api-runners-dto": "13.0.0",
31
31
  "@shipfox/client-api": "6.0.1",
32
- "@shipfox/client-shell": "21.0.0",
33
- "@shipfox/client-ui": "21.0.0",
34
- "@shipfox/react-ui": "2.0.0"
32
+ "@shipfox/client-shell": "22.0.0",
33
+ "@shipfox/client-ui": "22.0.0",
34
+ "@shipfox/react-ui": "2.1.0"
35
35
  },
36
36
  "peerDependencies": {
37
37
  "@tanstack/react-query": "^5.101.0",
@@ -45,8 +45,8 @@ export function ManualRegistrationTokenList({
45
45
  tokens: ManualRegistrationToken[];
46
46
  }) {
47
47
  return (
48
- <>
49
- <Panel className="max-[760px]:hidden">
48
+ <Panel>
49
+ <div className="max-[760px]:hidden">
50
50
  <Table className="table-fixed">
51
51
  <TableHeader>
52
52
  <TableRow>
@@ -81,16 +81,13 @@ export function ManualRegistrationTokenList({
81
81
  ))}
82
82
  </TableBody>
83
83
  </Table>
84
- </Panel>
84
+ </div>
85
85
  <ul
86
- className="hidden flex-col gap-inline max-[760px]:flex"
86
+ className="hidden flex-col divide-y divide-border-neutral-base max-[760px]:flex"
87
87
  aria-label="Manual registration tokens"
88
88
  >
89
89
  {tokens.map((token) => (
90
- <li
91
- key={token.id}
92
- className="flex flex-col gap-cluster rounded-8 border border-border-neutral-base bg-background-neutral-base p-panel-compact"
93
- >
90
+ <li key={token.id} className="flex flex-col gap-cluster p-panel-compact">
94
91
  <div className="flex items-start justify-between gap-cluster">
95
92
  <div className="min-w-0 flex-1">
96
93
  <TokenName name={tokenDisplayName(token)} />
@@ -117,7 +114,7 @@ export function ManualRegistrationTokenList({
117
114
  </li>
118
115
  ))}
119
116
  </ul>
120
- </>
117
+ </Panel>
121
118
  );
122
119
  }
123
120
 
@@ -219,20 +216,17 @@ export function EmptyManualRegistrationTokens() {
219
216
  icon="key2Line"
220
217
  title="No usable manual registration tokens"
221
218
  description="Create a token to connect a runner to this workspace."
219
+ variant="panel"
222
220
  />
223
221
  );
224
222
  }
225
223
 
226
224
  export function ManualRegistrationTokenTableSkeleton() {
227
225
  return (
228
- <div
229
- role="status"
230
- aria-label="Loading manual registration tokens"
231
- className="flex flex-col gap-inline"
232
- >
226
+ <Panel role="status" aria-label="Loading manual registration tokens" className="divide-y">
233
227
  {[0, 1, 2].map((row) => (
234
- <Skeleton key={row} className="h-44 w-full" />
228
+ <Skeleton key={row} className="h-44 w-full rounded-none" />
235
229
  ))}
236
- </div>
230
+ </Panel>
237
231
  );
238
232
  }
@@ -9,6 +9,7 @@ import {
9
9
  ModalTitle,
10
10
  ModalTrigger,
11
11
  } from '@shipfox/react-ui/modal';
12
+ import {Panel} from '@shipfox/react-ui/panel';
12
13
  import {Header, Text} from '@shipfox/react-ui/typography';
13
14
  import {useState} from 'react';
14
15
  import type {CreatedManualRegistrationToken} from '#core/token.js';
@@ -92,11 +93,19 @@ export function WorkspaceManualRegistrationTokensSettingsSection({
92
93
  {tokensQuery.isPending ? <ManualRegistrationTokenTableSkeleton /> : null}
93
94
 
94
95
  {tokensQuery.isError && tokensQuery.data === undefined ? (
95
- <QueryLoadError query={tokensQuery} subject="manual registration tokens" />
96
+ <Panel>
97
+ <QueryLoadError
98
+ query={tokensQuery}
99
+ subject="manual registration tokens"
100
+ variant="panel"
101
+ />
102
+ </Panel>
96
103
  ) : null}
97
104
 
98
105
  {tokensQuery.data !== undefined && tokens.length === 0 ? (
99
- <EmptyManualRegistrationTokens />
106
+ <Panel>
107
+ <EmptyManualRegistrationTokens />
108
+ </Panel>
100
109
  ) : null}
101
110
 
102
111
  {tokens.length > 0 ? (
@@ -53,8 +53,8 @@ export function ProvisionerTokenList({
53
53
  activeIds: ReadonlySet<string>;
54
54
  }) {
55
55
  return (
56
- <>
57
- <Panel className="max-[760px]:hidden">
56
+ <Panel>
57
+ <div className="max-[760px]:hidden">
58
58
  <Table className="table-fixed">
59
59
  <TableHeader>
60
60
  <TableRow>
@@ -93,13 +93,13 @@ export function ProvisionerTokenList({
93
93
  ))}
94
94
  </TableBody>
95
95
  </Table>
96
- </Panel>
97
- <ul className="hidden flex-col gap-inline max-[760px]:flex" aria-label="Provisioner tokens">
96
+ </div>
97
+ <ul
98
+ className="hidden flex-col divide-y divide-border-neutral-base max-[760px]:flex"
99
+ aria-label="Provisioner tokens"
100
+ >
98
101
  {tokens.map((token) => (
99
- <li
100
- key={token.id}
101
- className="flex flex-col gap-cluster rounded-8 border border-border-neutral-base bg-background-neutral-base p-panel-compact"
102
- >
102
+ <li key={token.id} className="flex flex-col gap-cluster p-panel-compact">
103
103
  <div className="flex items-start justify-between gap-cluster">
104
104
  <div className="min-w-0 flex-1">
105
105
  <TokenName name={provisionerTokenDisplayName(token)} />
@@ -132,7 +132,7 @@ export function ProvisionerTokenList({
132
132
  </li>
133
133
  ))}
134
134
  </ul>
135
- </>
135
+ </Panel>
136
136
  );
137
137
  }
138
138
 
@@ -257,16 +257,17 @@ export function EmptyProvisionerTokens() {
257
257
  icon="key2Line"
258
258
  title="No usable provisioner registration tokens"
259
259
  description="Create a token to connect a provisioner that provisions runners on demand."
260
+ variant="panel"
260
261
  />
261
262
  );
262
263
  }
263
264
 
264
265
  export function ProvisionerTokenTableSkeleton() {
265
266
  return (
266
- <div role="status" aria-label="Loading provisioner tokens" className="flex flex-col gap-inline">
267
+ <Panel role="status" aria-label="Loading provisioner tokens" className="divide-y">
267
268
  {[0, 1, 2].map((row) => (
268
- <Skeleton key={row} className="h-44 w-full" />
269
+ <Skeleton key={row} className="h-44 w-full rounded-none" />
269
270
  ))}
270
- </div>
271
+ </Panel>
271
272
  );
272
273
  }
@@ -9,6 +9,7 @@ import {
9
9
  ModalTitle,
10
10
  ModalTrigger,
11
11
  } from '@shipfox/react-ui/modal';
12
+ import {Panel} from '@shipfox/react-ui/panel';
12
13
  import {RelativeTimeProvider} from '@shipfox/react-ui/relative-time';
13
14
  import {Header, Text} from '@shipfox/react-ui/typography';
14
15
  import {useMemo, useState} from 'react';
@@ -98,10 +99,20 @@ export function WorkspaceProvisionerTokensSettingsSection({workspaceId}: {worksp
98
99
  {tokensQuery.isPending ? <ProvisionerTokenTableSkeleton /> : null}
99
100
 
100
101
  {tokensQuery.isError && tokensQuery.data === undefined ? (
101
- <QueryLoadError query={tokensQuery} subject="provisioner registration tokens" />
102
+ <Panel>
103
+ <QueryLoadError
104
+ query={tokensQuery}
105
+ subject="provisioner registration tokens"
106
+ variant="panel"
107
+ />
108
+ </Panel>
102
109
  ) : null}
103
110
 
104
- {tokensQuery.data !== undefined && tokens.length === 0 ? <EmptyProvisionerTokens /> : null}
111
+ {tokensQuery.data !== undefined && tokens.length === 0 ? (
112
+ <Panel>
113
+ <EmptyProvisionerTokens />
114
+ </Panel>
115
+ ) : null}
105
116
 
106
117
  {tokens.length > 0 ? (
107
118
  <RelativeTimeProvider>