@shipfox/client-triggers 14.0.0 → 14.0.1
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/CHANGELOG.md +14 -0
- package/dist/components/events-filter-bar.js +3 -3
- package/dist/components/events-filter-bar.js.map +1 -1
- package/dist/components/events-list-states.js +6 -6
- package/dist/components/events-list-states.js.map +1 -1
- package/dist/components/events-list.js +1 -1
- package/dist/components/events-list.js.map +1 -1
- package/dist/components/trigger-event-detail.js +20 -20
- package/dist/components/trigger-event-detail.js.map +1 -1
- package/dist/components/trigger-event-row.js +1 -1
- package/dist/components/trigger-event-row.js.map +1 -1
- package/dist/pages/events-page.js +3 -3
- package/dist/pages/events-page.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/components/events-filter-bar.tsx +3 -3
- package/src/components/events-list-states.tsx +6 -6
- package/src/components/events-list.tsx +1 -1
- package/src/components/trigger-event-detail.tsx +28 -20
- package/src/components/trigger-event-row.tsx +1 -1
- package/src/pages/events-page.tsx +3 -3
- package/tsconfig.build.tsbuildinfo +1 -1
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@shipfox/client-triggers",
|
|
3
3
|
"license": "MIT",
|
|
4
|
-
"version": "14.0.
|
|
4
|
+
"version": "14.0.1",
|
|
5
5
|
"repository": {
|
|
6
6
|
"type": "git",
|
|
7
7
|
"url": "git+https://github.com/ShipfoxHQ/shipfox.git",
|
|
@@ -28,11 +28,11 @@
|
|
|
28
28
|
"@swc/helpers": "^0.5.17",
|
|
29
29
|
"@shipfox/api-triggers-dto": "9.0.2",
|
|
30
30
|
"@shipfox/client-api": "6.0.1",
|
|
31
|
-
"@shipfox/client-projects": "14.0.
|
|
32
|
-
"@shipfox/client-shell": "14.0.
|
|
33
|
-
"@shipfox/client-ui": "14.0.
|
|
34
|
-
"@shipfox/integration-icons": "0.3.
|
|
35
|
-
"@shipfox/react-ui": "0.
|
|
31
|
+
"@shipfox/client-projects": "14.0.1",
|
|
32
|
+
"@shipfox/client-shell": "14.0.1",
|
|
33
|
+
"@shipfox/client-ui": "14.0.1",
|
|
34
|
+
"@shipfox/integration-icons": "0.3.1",
|
|
35
|
+
"@shipfox/react-ui": "1.0.0"
|
|
36
36
|
},
|
|
37
37
|
"peerDependencies": {
|
|
38
38
|
"@tanstack/react-query": "^5.101.0",
|
|
@@ -96,7 +96,7 @@ export function EventsFilterBar({
|
|
|
96
96
|
|
|
97
97
|
return (
|
|
98
98
|
<Collapsible open={open} onOpenChange={setOpen}>
|
|
99
|
-
<div className="flex items-center justify-between gap-
|
|
99
|
+
<div className="flex items-center justify-between gap-inline border-b border-border-neutral-base px-row py-row">
|
|
100
100
|
<CollapsibleTrigger asChild>
|
|
101
101
|
<Button
|
|
102
102
|
type="button"
|
|
@@ -115,7 +115,7 @@ export function EventsFilterBar({
|
|
|
115
115
|
) : null}
|
|
116
116
|
</div>
|
|
117
117
|
<CollapsibleContent>
|
|
118
|
-
<div className="grid grid-cols-1 gap-x-
|
|
118
|
+
<div className="grid grid-cols-1 gap-x-cluster gap-y-inline border-b border-border-neutral-base px-row py-row min-[520px]:grid-cols-2">
|
|
119
119
|
<FilterField label="Date" className="col-span-full">
|
|
120
120
|
<DateRangePicker
|
|
121
121
|
size="small"
|
|
@@ -186,7 +186,7 @@ function FilterField({
|
|
|
186
186
|
children: ReactNode;
|
|
187
187
|
}) {
|
|
188
188
|
return (
|
|
189
|
-
<div className={cn('flex min-w-0 flex-col gap-
|
|
189
|
+
<div className={cn('flex min-w-0 flex-col gap-tight', className)}>
|
|
190
190
|
<Text size="xs" className="font-medium text-foreground-neutral-muted">
|
|
191
191
|
{label}
|
|
192
192
|
</Text>
|
|
@@ -8,12 +8,12 @@ import {Link} from '@tanstack/react-router';
|
|
|
8
8
|
|
|
9
9
|
export function EventsListSkeleton() {
|
|
10
10
|
return (
|
|
11
|
-
<div className="flex flex-col gap-
|
|
11
|
+
<div className="flex flex-col gap-inline p-tight" role="status" aria-label="Loading events">
|
|
12
12
|
{Array.from({length: 8}).map((_, index) => (
|
|
13
13
|
<div
|
|
14
14
|
// biome-ignore lint/suspicious/noArrayIndexKey: skeleton row, stable position
|
|
15
15
|
key={index}
|
|
16
|
-
className="flex h-20 items-center gap-
|
|
16
|
+
className="flex h-20 items-center gap-cluster"
|
|
17
17
|
>
|
|
18
18
|
<Skeleton className="size-6 shrink-0 rounded-full" />
|
|
19
19
|
<Skeleton className="h-12 w-1/4" />
|
|
@@ -27,7 +27,7 @@ export function EventsListSkeleton() {
|
|
|
27
27
|
|
|
28
28
|
export function EventsListEmpty({workspaceSlug}: {workspaceSlug?: string | undefined}) {
|
|
29
29
|
return (
|
|
30
|
-
<div className="p-
|
|
30
|
+
<div className="p-panel-compact">
|
|
31
31
|
<EmptyState
|
|
32
32
|
icon="pulseLine"
|
|
33
33
|
title="No events yet"
|
|
@@ -48,7 +48,7 @@ export function EventsListEmpty({workspaceSlug}: {workspaceSlug?: string | undef
|
|
|
48
48
|
|
|
49
49
|
export function EventsListNoMatches({onClear}: {onClear: () => void}) {
|
|
50
50
|
return (
|
|
51
|
-
<div className="p-
|
|
51
|
+
<div className="p-panel-compact">
|
|
52
52
|
<EmptyState
|
|
53
53
|
icon="filterOffLine"
|
|
54
54
|
title="No matching events"
|
|
@@ -69,9 +69,9 @@ export function EventsListNoMatches({onClear}: {onClear: () => void}) {
|
|
|
69
69
|
*/
|
|
70
70
|
export function EventsListStaleError({query}: {query: QueryLoadErrorQuery}) {
|
|
71
71
|
return (
|
|
72
|
-
<div className="p-
|
|
72
|
+
<div className="p-tight">
|
|
73
73
|
<Callout role="alert" type="error">
|
|
74
|
-
<div className="flex items-center justify-between gap-
|
|
74
|
+
<div className="flex items-center justify-between gap-inline">
|
|
75
75
|
<Text size="xs">Could not refresh events.</Text>
|
|
76
76
|
<Button
|
|
77
77
|
type="button"
|
|
@@ -89,7 +89,7 @@ export function TriggerEventDetailView({
|
|
|
89
89
|
aria-label="Event details"
|
|
90
90
|
className={cn(PANEL_CLASS, DETAIL_RAIL_CLASS, 'flex min-h-0 flex-col overflow-hidden')}
|
|
91
91
|
>
|
|
92
|
-
<div className="flex shrink-0 flex-col gap-
|
|
92
|
+
<div className="flex shrink-0 flex-col gap-cluster border-b border-border-neutral-base p-panel-compact">
|
|
93
93
|
<Button
|
|
94
94
|
type="button"
|
|
95
95
|
variant="transparentMuted"
|
|
@@ -100,14 +100,14 @@ export function TriggerEventDetailView({
|
|
|
100
100
|
>
|
|
101
101
|
Back to events
|
|
102
102
|
</Button>
|
|
103
|
-
<div className="flex min-w-0 items-start justify-between gap-
|
|
104
|
-
<div className="flex min-w-0 flex-col gap-
|
|
103
|
+
<div className="flex min-w-0 items-start justify-between gap-cluster">
|
|
104
|
+
<div className="flex min-w-0 flex-col gap-tight">
|
|
105
105
|
<Tooltip>
|
|
106
106
|
<TooltipTrigger asChild>
|
|
107
107
|
<button
|
|
108
108
|
type="button"
|
|
109
109
|
aria-label={fullEventLabel}
|
|
110
|
-
className="flex min-w-0 items-center gap-
|
|
110
|
+
className="flex min-w-0 items-center gap-inline rounded-6 border-0 bg-transparent p-0 text-left outline-none focus-visible:shadow-button-neutral-focus"
|
|
111
111
|
>
|
|
112
112
|
<TriggerSourceIcon
|
|
113
113
|
provider={event.provider}
|
|
@@ -138,7 +138,7 @@ export function TriggerEventDetailView({
|
|
|
138
138
|
|
|
139
139
|
<div
|
|
140
140
|
key={event.id}
|
|
141
|
-
className="flex min-h-0 flex-1 flex-col gap-
|
|
141
|
+
className="flex min-h-0 flex-1 flex-col gap-section overflow-y-auto p-panel-compact scrollbar"
|
|
142
142
|
>
|
|
143
143
|
<EventRuns workspaceId={workspaceId} workspaceSlug={workspaceSlug} event={event} />
|
|
144
144
|
<EventPayload payload={formattedPayload} />
|
|
@@ -161,7 +161,7 @@ function TriggerEventDetailPlaceholder() {
|
|
|
161
161
|
aria-label="Event details"
|
|
162
162
|
className={cn(
|
|
163
163
|
PANEL_CLASS,
|
|
164
|
-
'hidden min-h-[240px] items-center justify-center p-
|
|
164
|
+
'hidden min-h-[240px] items-center justify-center p-panel @min-[820px]:flex',
|
|
165
165
|
)}
|
|
166
166
|
>
|
|
167
167
|
<EmptyState icon="pulseLine" variant="compact" title="No event selected" />
|
|
@@ -173,7 +173,11 @@ function TriggerEventDetailLoading({onBack}: {onBack: () => void}) {
|
|
|
173
173
|
return (
|
|
174
174
|
<aside
|
|
175
175
|
aria-label="Event details"
|
|
176
|
-
className={cn(
|
|
176
|
+
className={cn(
|
|
177
|
+
PANEL_CLASS,
|
|
178
|
+
DETAIL_RAIL_CLASS,
|
|
179
|
+
'flex min-h-[320px] flex-col gap-group p-panel-compact',
|
|
180
|
+
)}
|
|
177
181
|
>
|
|
178
182
|
<Button
|
|
179
183
|
type="button"
|
|
@@ -185,7 +189,7 @@ function TriggerEventDetailLoading({onBack}: {onBack: () => void}) {
|
|
|
185
189
|
>
|
|
186
190
|
Back to events
|
|
187
191
|
</Button>
|
|
188
|
-
<div className="flex flex-col gap-
|
|
192
|
+
<div className="flex flex-col gap-inline">
|
|
189
193
|
<Skeleton className="h-16 w-160" />
|
|
190
194
|
<Skeleton className="h-12 w-120" />
|
|
191
195
|
</div>
|
|
@@ -199,7 +203,11 @@ function TriggerEventDetailError({onBack, onRetry}: {onBack: () => void; onRetry
|
|
|
199
203
|
return (
|
|
200
204
|
<aside
|
|
201
205
|
aria-label="Event details"
|
|
202
|
-
className={cn(
|
|
206
|
+
className={cn(
|
|
207
|
+
PANEL_CLASS,
|
|
208
|
+
DETAIL_RAIL_CLASS,
|
|
209
|
+
'flex min-h-[320px] flex-col gap-group p-panel-compact',
|
|
210
|
+
)}
|
|
203
211
|
>
|
|
204
212
|
<Button
|
|
205
213
|
type="button"
|
|
@@ -212,7 +220,7 @@ function TriggerEventDetailError({onBack, onRetry}: {onBack: () => void; onRetry
|
|
|
212
220
|
Back to events
|
|
213
221
|
</Button>
|
|
214
222
|
<Callout role="alert" type="error">
|
|
215
|
-
<div className="flex items-center justify-between gap-
|
|
223
|
+
<div className="flex items-center justify-between gap-cluster">
|
|
216
224
|
<Text size="sm">Event detail could not be loaded.</Text>
|
|
217
225
|
<Button type="button" variant="secondary" size="xs" onClick={onRetry}>
|
|
218
226
|
Retry
|
|
@@ -293,11 +301,11 @@ function EventRunsList({
|
|
|
293
301
|
event: TriggerEventDetailModel;
|
|
294
302
|
}) {
|
|
295
303
|
return (
|
|
296
|
-
<section aria-labelledby="trigger-event-runs-heading" className="flex flex-col gap-
|
|
304
|
+
<section aria-labelledby="trigger-event-runs-heading" className="flex flex-col gap-inline">
|
|
297
305
|
<Text id="trigger-event-runs-heading" size="sm" bold>
|
|
298
306
|
Matched workflows
|
|
299
307
|
</Text>
|
|
300
|
-
<ul className="-mx-
|
|
308
|
+
<ul className="-mx-inline flex flex-col gap-tight">
|
|
301
309
|
{event.decisions.map((decision) => (
|
|
302
310
|
<DecisionRow
|
|
303
311
|
key={decision.id}
|
|
@@ -335,13 +343,13 @@ function DecisionRow({
|
|
|
335
343
|
|
|
336
344
|
if (decision.decision !== 'triggered' || !decision.runId || !decision.runName) {
|
|
337
345
|
return (
|
|
338
|
-
<li className="flex min-w-0 items-start gap-
|
|
346
|
+
<li className="flex min-w-0 items-start gap-inline rounded-6 p-tight">
|
|
339
347
|
<Icon
|
|
340
348
|
name="cornerDownRightLine"
|
|
341
|
-
className="
|
|
349
|
+
className="size-14 shrink-0 text-foreground-neutral-disabled"
|
|
342
350
|
aria-hidden="true"
|
|
343
351
|
/>
|
|
344
|
-
<div className="flex min-w-0 flex-col gap-
|
|
352
|
+
<div className="flex min-w-0 flex-col gap-tight">
|
|
345
353
|
<Text size="sm" className="min-w-0 truncate text-foreground-neutral-base">
|
|
346
354
|
{decision.subscriptionName}
|
|
347
355
|
</Text>
|
|
@@ -363,10 +371,10 @@ function DecisionRow({
|
|
|
363
371
|
<>
|
|
364
372
|
<Icon
|
|
365
373
|
name="cornerDownRightLine"
|
|
366
|
-
className="
|
|
374
|
+
className="size-14 shrink-0 text-foreground-neutral-muted"
|
|
367
375
|
aria-hidden="true"
|
|
368
376
|
/>
|
|
369
|
-
<span className="flex min-w-0 flex-col gap-
|
|
377
|
+
<span className="flex min-w-0 flex-col gap-tight">
|
|
370
378
|
<Text as="span" size="sm" className="min-w-0 truncate text-foreground-neutral-base">
|
|
371
379
|
{decision.subscriptionName}
|
|
372
380
|
</Text>
|
|
@@ -377,7 +385,7 @@ function DecisionRow({
|
|
|
377
385
|
</>
|
|
378
386
|
);
|
|
379
387
|
const rowClassName =
|
|
380
|
-
'flex min-w-0 items-start gap-
|
|
388
|
+
'flex min-w-0 items-start gap-inline rounded-6 p-tight hover:bg-background-components-hover focus-visible:outline-none focus-visible:shadow-button-neutral-focus';
|
|
381
389
|
|
|
382
390
|
return (
|
|
383
391
|
<li>
|
|
@@ -404,7 +412,7 @@ function EventPayload({payload}: {payload: string}) {
|
|
|
404
412
|
const data = [{language: 'json', filename: 'payload.json', code: payload}];
|
|
405
413
|
|
|
406
414
|
return (
|
|
407
|
-
<section aria-labelledby="trigger-event-payload-heading" className="flex flex-col gap-
|
|
415
|
+
<section aria-labelledby="trigger-event-payload-heading" className="flex flex-col gap-inline">
|
|
408
416
|
<Text id="trigger-event-payload-heading" size="sm" bold>
|
|
409
417
|
Payload
|
|
410
418
|
</Text>
|
|
@@ -412,7 +420,7 @@ function EventPayload({payload}: {payload: string}) {
|
|
|
412
420
|
data={data}
|
|
413
421
|
className="flex h-auto flex-col overflow-visible rounded-8 bg-background-contrast-base shadow-none"
|
|
414
422
|
>
|
|
415
|
-
<CodeBlockHeader className="sticky top-0 z-10 shrink-0 border-b border-border-contrast-base bg-background-contrast-base
|
|
423
|
+
<CodeBlockHeader className="sticky top-0 z-10 shrink-0 border-b border-border-contrast-base bg-background-contrast-base p-tight">
|
|
416
424
|
<CodeBlockFiles>
|
|
417
425
|
{(item) => <CodeBlockFilename value={item.filename}>{item.filename}</CodeBlockFilename>}
|
|
418
426
|
</CodeBlockFiles>
|
|
@@ -36,7 +36,7 @@ export function TriggerEventRow({event, selected, onSelect}: TriggerEventRowProp
|
|
|
36
36
|
<TooltipTrigger asChild>
|
|
37
37
|
<button
|
|
38
38
|
type="button"
|
|
39
|
-
className="flex min-w-0 items-center gap-
|
|
39
|
+
className="flex min-w-0 items-center gap-inline rounded-6 text-left outline-none focus-visible:shadow-button-neutral-focus"
|
|
40
40
|
onClick={() => onSelect(event.id)}
|
|
41
41
|
aria-label={`Open details for ${fullEventLabel}`}
|
|
42
42
|
>
|
|
@@ -44,10 +44,10 @@ export function EventsPage({
|
|
|
44
44
|
return (
|
|
45
45
|
<RelativeTimeProvider>
|
|
46
46
|
<section
|
|
47
|
-
className="@container flex min-w-0 flex-col gap-
|
|
47
|
+
className="@container flex min-w-0 flex-col gap-group"
|
|
48
48
|
aria-labelledby="trigger-events-heading"
|
|
49
49
|
>
|
|
50
|
-
<div className="flex flex-col gap-
|
|
50
|
+
<div className="flex flex-col gap-tight">
|
|
51
51
|
<Header id="trigger-events-heading" variant="h3">
|
|
52
52
|
Events
|
|
53
53
|
</Header>
|
|
@@ -57,7 +57,7 @@ export function EventsPage({
|
|
|
57
57
|
</Text>
|
|
58
58
|
</div>
|
|
59
59
|
|
|
60
|
-
<div className="grid min-h-0 items-start gap-
|
|
60
|
+
<div className="grid min-h-0 items-start gap-group @min-[820px]:grid-cols-[minmax(0,1fr)_minmax(360px,420px)]">
|
|
61
61
|
<div className={cn('min-w-0', selectedEventId && '@max-[820px]:hidden')}>
|
|
62
62
|
<EventsList
|
|
63
63
|
events={events}
|