@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/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@shipfox/client-triggers",
3
3
  "license": "MIT",
4
- "version": "14.0.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.0",
32
- "@shipfox/client-shell": "14.0.0",
33
- "@shipfox/client-ui": "14.0.0",
34
- "@shipfox/integration-icons": "0.3.0",
35
- "@shipfox/react-ui": "0.5.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-8 border-b border-border-neutral-base px-12 py-8">
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-12 gap-y-10 border-b border-border-neutral-base px-12 py-12 min-[520px]:grid-cols-2">
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-4', className)}>
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-8 p-8" role="status" aria-label="Loading events">
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-12"
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-16">
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-16">
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-8">
72
+ <div className="p-tight">
73
73
  <Callout role="alert" type="error">
74
- <div className="flex items-center justify-between gap-8">
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"
@@ -78,7 +78,7 @@ export function EventsList({
78
78
  </TableBody>
79
79
  </Table>
80
80
  {hasNextPage ? (
81
- <div className="flex justify-center p-16">
81
+ <div className="flex justify-center p-panel-compact">
82
82
  <Button
83
83
  type="button"
84
84
  variant="secondary"
@@ -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-12 border-b border-border-neutral-base p-16">
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-12">
104
- <div className="flex min-w-0 flex-col gap-4">
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-6 rounded-6 border-0 bg-transparent p-0 text-left outline-none focus-visible:shadow-button-neutral-focus"
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-20 overflow-y-auto p-16 scrollbar"
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-24 @min-[820px]:flex',
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(PANEL_CLASS, DETAIL_RAIL_CLASS, 'flex min-h-[320px] flex-col gap-16 p-16')}
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-8">
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(PANEL_CLASS, DETAIL_RAIL_CLASS, 'flex min-h-[320px] flex-col gap-16 p-16')}
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-12">
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-6">
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-8 flex flex-col gap-1">
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-8 rounded-6 px-8 py-6">
346
+ <li className="flex min-w-0 items-start gap-inline rounded-6 p-tight">
339
347
  <Icon
340
348
  name="cornerDownRightLine"
341
- className="mt-2 size-14 shrink-0 text-foreground-neutral-disabled"
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-1">
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="mt-3 size-14 shrink-0 text-foreground-neutral-muted"
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-1">
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-8 rounded-6 px-8 py-6 hover:bg-background-components-hover focus-visible:outline-none focus-visible:shadow-button-neutral-focus';
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-6">
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 px-10 py-6">
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-6 rounded-6 text-left outline-none focus-visible:shadow-button-neutral-focus"
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-16"
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-4">
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-16 @min-[820px]:grid-cols-[minmax(0,1fr)_minmax(360px,420px)]">
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}