@shipfox/client-triggers 21.0.0 → 22.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 +28 -0
- package/dist/components/events-list-states.d.ts.map +1 -1
- package/dist/components/events-list-states.js +31 -35
- package/dist/components/events-list-states.js.map +1 -1
- package/dist/components/events-list.d.ts.map +1 -1
- package/dist/components/events-list.js +2 -1
- package/dist/components/events-list.js.map +1 -1
- package/dist/routes/events-settings.d.ts +1 -1
- package/dist/routes/events-settings.d.ts.map +1 -1
- package/dist/routes/events-settings.js +17 -7
- package/dist/routes/events-settings.js.map +1 -1
- package/dist/tsconfig.test.tsbuildinfo +1 -1
- package/package.json +6 -6
- package/src/components/events-list-states.tsx +32 -30
- package/src/components/events-list.tsx +3 -1
- package/src/routes/events-settings.test.ts +7 -0
- package/src/routes/events-settings.tsx +11 -7
- package/tsconfig.build.tsbuildinfo +1 -1
package/.turbo/turbo-build.log
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
$ shipfox-swc
|
|
2
|
-
Successfully compiled: 18 files with swc (
|
|
2
|
+
Successfully compiled: 18 files with swc (111.19ms)
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,33 @@
|
|
|
1
1
|
# @shipfox/client-triggers
|
|
2
2
|
|
|
3
|
+
## 22.0.1
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- e92517f: Reorganizes workspace settings into a compact sidebar rail with section panels and relocates Events settings into the new workspace layout.
|
|
8
|
+
- Updated dependencies [e92517f]
|
|
9
|
+
- @shipfox/client-shell@22.0.1
|
|
10
|
+
- @shipfox/client-projects@22.0.1
|
|
11
|
+
|
|
12
|
+
## 22.0.0
|
|
13
|
+
|
|
14
|
+
### Patch Changes
|
|
15
|
+
|
|
16
|
+
- 7693eb3: Render empty and load-error states inside bordered panel bodies and keep loading placeholders aligned with their data regions.
|
|
17
|
+
- 00c1cb8: Panels across these surfaces share one hover, focus, and elevation treatment. Grids of openable things, including the integration gallery, the available providers grid, and the harness picker, render as cells inside a single panel divided by hairlines instead of separate bordered tiles.
|
|
18
|
+
- Updated dependencies [50b3867]
|
|
19
|
+
- Updated dependencies [00c1cb8]
|
|
20
|
+
- Updated dependencies [7693eb3]
|
|
21
|
+
- Updated dependencies [00c1cb8]
|
|
22
|
+
- Updated dependencies [00c1cb8]
|
|
23
|
+
- Updated dependencies [00c1cb8]
|
|
24
|
+
- Updated dependencies [56f4526]
|
|
25
|
+
- @shipfox/client-shell@22.0.0
|
|
26
|
+
- @shipfox/react-ui@2.1.0
|
|
27
|
+
- @shipfox/client-ui@22.0.0
|
|
28
|
+
- @shipfox/client-projects@22.0.0
|
|
29
|
+
- @shipfox/integration-icons@0.3.5
|
|
30
|
+
|
|
3
31
|
## 21.0.0
|
|
4
32
|
|
|
5
33
|
### Patch Changes
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-list-states.d.ts","sourceRoot":"","sources":["../../src/components/events-list-states.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAQ5D,wBAAgB,kBAAkB,
|
|
1
|
+
{"version":3,"file":"events-list-states.d.ts","sourceRoot":"","sources":["../../src/components/events-list-states.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,mBAAmB,EAAC,MAAM,oBAAoB,CAAC;AAQ5D,wBAAgB,kBAAkB,gCAqBjC;AAED,wBAAgB,eAAe,CAAC,EAAC,aAAa,EAAC,EAAE;IAAC,aAAa,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAAC,+BAkBpF;AAED,wBAAgB,mBAAmB,CAAC,EAAC,OAAO,EAAC,EAAE;IAAC,OAAO,EAAE,MAAM,IAAI,CAAA;CAAC,+BAcnE;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,EAAC,KAAK,EAAC,EAAE;IAAC,KAAK,EAAE,mBAAmB,CAAA;CAAC,+BAqBzE"}
|
|
@@ -7,13 +7,13 @@ import { Text } from '@shipfox/react-ui/typography';
|
|
|
7
7
|
import { Link } from '@tanstack/react-router';
|
|
8
8
|
export function EventsListSkeleton() {
|
|
9
9
|
return /*#__PURE__*/ _jsx("div", {
|
|
10
|
-
className: "flex flex-col
|
|
10
|
+
className: "flex flex-col divide-y divide-border-neutral-base",
|
|
11
11
|
role: "status",
|
|
12
12
|
"aria-label": "Loading events",
|
|
13
13
|
children: Array.from({
|
|
14
14
|
length: 8
|
|
15
15
|
}).map((_, index)=>/*#__PURE__*/ _jsxs("div", {
|
|
16
|
-
className: "flex h-
|
|
16
|
+
className: "flex min-h-44 items-center gap-cluster px-row py-row",
|
|
17
17
|
children: [
|
|
18
18
|
/*#__PURE__*/ _jsx(Skeleton, {
|
|
19
19
|
className: "size-6 shrink-0 rounded-full"
|
|
@@ -32,42 +32,38 @@ export function EventsListSkeleton() {
|
|
|
32
32
|
});
|
|
33
33
|
}
|
|
34
34
|
export function EventsListEmpty({ workspaceSlug }) {
|
|
35
|
-
return /*#__PURE__*/ _jsx(
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
}) : undefined
|
|
53
|
-
})
|
|
35
|
+
return /*#__PURE__*/ _jsx(EmptyState, {
|
|
36
|
+
icon: "pulseLine",
|
|
37
|
+
title: "No events yet",
|
|
38
|
+
description: "Events appear here once a connected integration delivers one or you fire a trigger.",
|
|
39
|
+
action: workspaceSlug ? /*#__PURE__*/ _jsx(Button, {
|
|
40
|
+
asChild: true,
|
|
41
|
+
size: "sm",
|
|
42
|
+
variant: "secondary",
|
|
43
|
+
children: /*#__PURE__*/ _jsx(Link, {
|
|
44
|
+
to: "/w/$workspaceSlug/settings/integrations",
|
|
45
|
+
params: {
|
|
46
|
+
workspaceSlug
|
|
47
|
+
},
|
|
48
|
+
children: "Configure integrations"
|
|
49
|
+
})
|
|
50
|
+
}) : undefined,
|
|
51
|
+
variant: "panel"
|
|
54
52
|
});
|
|
55
53
|
}
|
|
56
54
|
export function EventsListNoMatches({ onClear }) {
|
|
57
|
-
return /*#__PURE__*/ _jsx(
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
})
|
|
70
|
-
})
|
|
55
|
+
return /*#__PURE__*/ _jsx(EmptyState, {
|
|
56
|
+
icon: "filterOffLine",
|
|
57
|
+
title: "No matching events",
|
|
58
|
+
description: "No events match your current filters.",
|
|
59
|
+
action: /*#__PURE__*/ _jsx(Button, {
|
|
60
|
+
type: "button",
|
|
61
|
+
size: "sm",
|
|
62
|
+
variant: "secondary",
|
|
63
|
+
onClick: onClear,
|
|
64
|
+
children: "Clear filters"
|
|
65
|
+
}),
|
|
66
|
+
variant: "panel"
|
|
71
67
|
});
|
|
72
68
|
}
|
|
73
69
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/events-list-states.tsx"],"sourcesContent":["import type {QueryLoadErrorQuery} from '@shipfox/client-ui';\nimport {Button} from '@shipfox/react-ui/button';\nimport {Callout} from '@shipfox/react-ui/callout';\nimport {EmptyState} from '@shipfox/react-ui/empty-state';\nimport {Skeleton} from '@shipfox/react-ui/skeleton';\nimport {Text} from '@shipfox/react-ui/typography';\nimport {Link} from '@tanstack/react-router';\n\nexport function EventsListSkeleton() {\n return (\n <div
|
|
1
|
+
{"version":3,"sources":["../../src/components/events-list-states.tsx"],"sourcesContent":["import type {QueryLoadErrorQuery} from '@shipfox/client-ui';\nimport {Button} from '@shipfox/react-ui/button';\nimport {Callout} from '@shipfox/react-ui/callout';\nimport {EmptyState} from '@shipfox/react-ui/empty-state';\nimport {Skeleton} from '@shipfox/react-ui/skeleton';\nimport {Text} from '@shipfox/react-ui/typography';\nimport {Link} from '@tanstack/react-router';\n\nexport function EventsListSkeleton() {\n return (\n <div\n className=\"flex flex-col divide-y divide-border-neutral-base\"\n role=\"status\"\n aria-label=\"Loading events\"\n >\n {Array.from({length: 8}).map((_, index) => (\n <div\n // biome-ignore lint/suspicious/noArrayIndexKey: skeleton row, stable position\n key={index}\n className=\"flex min-h-44 items-center gap-cluster px-row py-row\"\n >\n <Skeleton className=\"size-6 shrink-0 rounded-full\" />\n <Skeleton className=\"h-12 w-1/4\" />\n <Skeleton className=\"h-12 w-20\" />\n <Skeleton className=\"ml-auto h-12 w-40\" />\n </div>\n ))}\n </div>\n );\n}\n\nexport function EventsListEmpty({workspaceSlug}: {workspaceSlug?: string | undefined}) {\n return (\n <EmptyState\n icon=\"pulseLine\"\n title=\"No events yet\"\n description=\"Events appear here once a connected integration delivers one or you fire a trigger.\"\n action={\n workspaceSlug ? (\n <Button asChild size=\"sm\" variant=\"secondary\">\n <Link to=\"/w/$workspaceSlug/settings/integrations\" params={{workspaceSlug}}>\n Configure integrations\n </Link>\n </Button>\n ) : undefined\n }\n variant=\"panel\"\n />\n );\n}\n\nexport function EventsListNoMatches({onClear}: {onClear: () => void}) {\n return (\n <EmptyState\n icon=\"filterOffLine\"\n title=\"No matching events\"\n description=\"No events match your current filters.\"\n action={\n <Button type=\"button\" size=\"sm\" variant=\"secondary\" onClick={onClear}>\n Clear filters\n </Button>\n }\n variant=\"panel\"\n />\n );\n}\n\n/**\n * Slim banner shown when a background refetch fails after a prior success, so the loaded\n * rows stay on screen with the retry inline rather than being wiped by a full placeholder.\n */\nexport function EventsListStaleError({query}: {query: QueryLoadErrorQuery}) {\n return (\n <div className=\"p-tight\">\n <Callout role=\"alert\" type=\"error\">\n <div className=\"flex items-center justify-between gap-inline\">\n <Text size=\"xs\">Could not refresh events.</Text>\n <Button\n type=\"button\"\n size=\"2xs\"\n variant=\"secondary\"\n isLoading={query.isFetching}\n onClick={() => {\n void query.refetch();\n }}\n >\n Retry\n </Button>\n </div>\n </Callout>\n </div>\n );\n}\n"],"names":["Button","Callout","EmptyState","Skeleton","Text","Link","EventsListSkeleton","div","className","role","aria-label","Array","from","length","map","_","index","EventsListEmpty","workspaceSlug","icon","title","description","action","asChild","size","variant","to","params","undefined","EventsListNoMatches","onClear","type","onClick","EventsListStaleError","query","isLoading","isFetching","refetch"],"mappings":";AACA,SAAQA,MAAM,QAAO,2BAA2B;AAChD,SAAQC,OAAO,QAAO,4BAA4B;AAClD,SAAQC,UAAU,QAAO,gCAAgC;AACzD,SAAQC,QAAQ,QAAO,6BAA6B;AACpD,SAAQC,IAAI,QAAO,+BAA+B;AAClD,SAAQC,IAAI,QAAO,yBAAyB;AAE5C,OAAO,SAASC;IACd,qBACE,KAACC;QACCC,WAAU;QACVC,MAAK;QACLC,cAAW;kBAEVC,MAAMC,IAAI,CAAC;YAACC,QAAQ;QAAC,GAAGC,GAAG,CAAC,CAACC,GAAGC,sBAC/B,MAACT;gBAGCC,WAAU;;kCAEV,KAACL;wBAASK,WAAU;;kCACpB,KAACL;wBAASK,WAAU;;kCACpB,KAACL;wBAASK,WAAU;;kCACpB,KAACL;wBAASK,WAAU;;;eANfQ;;AAWf;AAEA,OAAO,SAASC,gBAAgB,EAACC,aAAa,EAAuC;IACnF,qBACE,KAAChB;QACCiB,MAAK;QACLC,OAAM;QACNC,aAAY;QACZC,QACEJ,8BACE,KAAClB;YAAOuB,OAAO;YAACC,MAAK;YAAKC,SAAQ;sBAChC,cAAA,KAACpB;gBAAKqB,IAAG;gBAA0CC,QAAQ;oBAACT;gBAAa;0BAAG;;aAI5EU;QAENH,SAAQ;;AAGd;AAEA,OAAO,SAASI,oBAAoB,EAACC,OAAO,EAAwB;IAClE,qBACE,KAAC5B;QACCiB,MAAK;QACLC,OAAM;QACNC,aAAY;QACZC,sBACE,KAACtB;YAAO+B,MAAK;YAASP,MAAK;YAAKC,SAAQ;YAAYO,SAASF;sBAAS;;QAIxEL,SAAQ;;AAGd;AAEA;;;CAGC,GACD,OAAO,SAASQ,qBAAqB,EAACC,KAAK,EAA+B;IACxE,qBACE,KAAC3B;QAAIC,WAAU;kBACb,cAAA,KAACP;YAAQQ,MAAK;YAAQsB,MAAK;sBACzB,cAAA,MAACxB;gBAAIC,WAAU;;kCACb,KAACJ;wBAAKoB,MAAK;kCAAK;;kCAChB,KAACxB;wBACC+B,MAAK;wBACLP,MAAK;wBACLC,SAAQ;wBACRU,WAAWD,MAAME,UAAU;wBAC3BJ,SAAS;4BACP,KAAKE,MAAMG,OAAO;wBACpB;kCACD;;;;;;AAOX"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-list.d.ts","sourceRoot":"","sources":["../../src/components/events-list.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAEhD,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,eAAe,EACf,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,aAAa,GACd,EAAE,eAAe,+
|
|
1
|
+
{"version":3,"file":"events-list.d.ts","sourceRoot":"","sources":["../../src/components/events-list.tsx"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAC,eAAe,EAAC,MAAM,YAAY,CAAC;AAEhD,wBAAgB,UAAU,CAAC,EACzB,MAAM,EACN,KAAK,EACL,MAAM,EACN,OAAO,EACP,eAAe,EACf,aAAa,EACb,WAAW,EACX,kBAAkB,EAClB,UAAU,EACV,eAAe,EACf,aAAa,GACd,EAAE,eAAe,+BAwEjB"}
|
|
@@ -35,7 +35,8 @@ export function EventsList({ events, query, facets, filters, onFiltersChange, wo
|
|
|
35
35
|
!query.isPending ? /*#__PURE__*/ _jsx(QueryLoadError, {
|
|
36
36
|
query: query,
|
|
37
37
|
subject: "events",
|
|
38
|
-
icon: "pulseLine"
|
|
38
|
+
icon: "pulseLine",
|
|
39
|
+
variant: "panel"
|
|
39
40
|
}) : null,
|
|
40
41
|
!query.isPending && refreshFailed ? /*#__PURE__*/ _jsx(EventsListStaleError, {
|
|
41
42
|
query: query
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/components/events-list.tsx"],"sourcesContent":["import {QueryLoadError} from '@shipfox/client-ui';\nimport {Button} from '@shipfox/react-ui/button';\nimport {Panel} from '@shipfox/react-ui/panel';\nimport {Table, TableBody, TableHead, TableHeader, TableRow} from '@shipfox/react-ui/table';\nimport {hasTriggerEventFilters} from '#core/trigger-event.js';\nimport {EventsFilterBar} from './events-filter-bar.js';\nimport {\n EventsListEmpty,\n EventsListNoMatches,\n EventsListSkeleton,\n EventsListStaleError,\n} from './events-list-states.js';\nimport {TriggerEventRow} from './trigger-event-row.js';\nimport type {EventsListProps} from './types.js';\n\nexport function EventsList({\n events,\n query,\n facets,\n filters,\n onFiltersChange,\n workspaceSlug,\n hasNextPage,\n isFetchingNextPage,\n onLoadMore,\n selectedEventId,\n onSelectEvent,\n}: EventsListProps) {\n const activeFilters = hasTriggerEventFilters(filters);\n const refreshFailed = query.isError && query.data !== undefined;\n const showEmptyState = !query.isPending && !query.isError && events.length === 0;\n\n function clearFilters() {\n onFiltersChange({\n source: undefined,\n event: undefined,\n outcome: undefined,\n from: undefined,\n to: undefined,\n });\n }\n\n return (\n <Panel className=\"min-h-0 overflow-hidden p-0\">\n <EventsFilterBar\n filters={filters}\n onFiltersChange={onFiltersChange}\n sources={facets?.sources}\n events={facets?.events}\n hasActiveFilters={activeFilters}\n onClear={clearFilters}\n />\n\n {query.isPending ? <EventsListSkeleton /> : null}\n {!query.isPending ? <QueryLoadError query={query} subject=\"events\" icon=\"pulseLine\"
|
|
1
|
+
{"version":3,"sources":["../../src/components/events-list.tsx"],"sourcesContent":["import {QueryLoadError} from '@shipfox/client-ui';\nimport {Button} from '@shipfox/react-ui/button';\nimport {Panel} from '@shipfox/react-ui/panel';\nimport {Table, TableBody, TableHead, TableHeader, TableRow} from '@shipfox/react-ui/table';\nimport {hasTriggerEventFilters} from '#core/trigger-event.js';\nimport {EventsFilterBar} from './events-filter-bar.js';\nimport {\n EventsListEmpty,\n EventsListNoMatches,\n EventsListSkeleton,\n EventsListStaleError,\n} from './events-list-states.js';\nimport {TriggerEventRow} from './trigger-event-row.js';\nimport type {EventsListProps} from './types.js';\n\nexport function EventsList({\n events,\n query,\n facets,\n filters,\n onFiltersChange,\n workspaceSlug,\n hasNextPage,\n isFetchingNextPage,\n onLoadMore,\n selectedEventId,\n onSelectEvent,\n}: EventsListProps) {\n const activeFilters = hasTriggerEventFilters(filters);\n const refreshFailed = query.isError && query.data !== undefined;\n const showEmptyState = !query.isPending && !query.isError && events.length === 0;\n\n function clearFilters() {\n onFiltersChange({\n source: undefined,\n event: undefined,\n outcome: undefined,\n from: undefined,\n to: undefined,\n });\n }\n\n return (\n <Panel className=\"min-h-0 overflow-hidden p-0\">\n <EventsFilterBar\n filters={filters}\n onFiltersChange={onFiltersChange}\n sources={facets?.sources}\n events={facets?.events}\n hasActiveFilters={activeFilters}\n onClear={clearFilters}\n />\n\n {query.isPending ? <EventsListSkeleton /> : null}\n {!query.isPending ? (\n <QueryLoadError query={query} subject=\"events\" icon=\"pulseLine\" variant=\"panel\" />\n ) : null}\n {!query.isPending && refreshFailed ? <EventsListStaleError query={query} /> : null}\n {showEmptyState && !activeFilters ? <EventsListEmpty workspaceSlug={workspaceSlug} /> : null}\n {showEmptyState && activeFilters ? <EventsListNoMatches onClear={clearFilters} /> : null}\n\n {events.length > 0 ? (\n <>\n <Table>\n <TableHeader className=\"sticky top-0 z-10\">\n <TableRow>\n <TableHead>Event</TableHead>\n <TableHead>Result</TableHead>\n <TableHead className=\"text-right\">Received</TableHead>\n </TableRow>\n </TableHeader>\n <TableBody>\n {events.map((event) => (\n <TriggerEventRow\n key={event.id}\n event={event}\n selected={event.id === selectedEventId}\n onSelect={onSelectEvent}\n />\n ))}\n </TableBody>\n </Table>\n {hasNextPage ? (\n <div className=\"flex justify-center p-panel-compact\">\n <Button\n type=\"button\"\n variant=\"secondary\"\n size=\"sm\"\n isLoading={isFetchingNextPage}\n onClick={onLoadMore}\n >\n Load more\n </Button>\n </div>\n ) : null}\n </>\n ) : null}\n </Panel>\n );\n}\n"],"names":["QueryLoadError","Button","Panel","Table","TableBody","TableHead","TableHeader","TableRow","hasTriggerEventFilters","EventsFilterBar","EventsListEmpty","EventsListNoMatches","EventsListSkeleton","EventsListStaleError","TriggerEventRow","EventsList","events","query","facets","filters","onFiltersChange","workspaceSlug","hasNextPage","isFetchingNextPage","onLoadMore","selectedEventId","onSelectEvent","activeFilters","refreshFailed","isError","data","undefined","showEmptyState","isPending","length","clearFilters","source","event","outcome","from","to","className","sources","hasActiveFilters","onClear","subject","icon","variant","map","selected","id","onSelect","div","type","size","isLoading","onClick"],"mappings":";AAAA,SAAQA,cAAc,QAAO,qBAAqB;AAClD,SAAQC,MAAM,QAAO,2BAA2B;AAChD,SAAQC,KAAK,QAAO,0BAA0B;AAC9C,SAAQC,KAAK,EAAEC,SAAS,EAAEC,SAAS,EAAEC,WAAW,EAAEC,QAAQ,QAAO,0BAA0B;AAC3F,SAAQC,sBAAsB,QAAO,yBAAyB;AAC9D,SAAQC,eAAe,QAAO,yBAAyB;AACvD,SACEC,eAAe,EACfC,mBAAmB,EACnBC,kBAAkB,EAClBC,oBAAoB,QACf,0BAA0B;AACjC,SAAQC,eAAe,QAAO,yBAAyB;AAGvD,OAAO,SAASC,WAAW,EACzBC,MAAM,EACNC,KAAK,EACLC,MAAM,EACNC,OAAO,EACPC,eAAe,EACfC,aAAa,EACbC,WAAW,EACXC,kBAAkB,EAClBC,UAAU,EACVC,eAAe,EACfC,aAAa,EACG;IAChB,MAAMC,gBAAgBnB,uBAAuBW;IAC7C,MAAMS,gBAAgBX,MAAMY,OAAO,IAAIZ,MAAMa,IAAI,KAAKC;IACtD,MAAMC,iBAAiB,CAACf,MAAMgB,SAAS,IAAI,CAAChB,MAAMY,OAAO,IAAIb,OAAOkB,MAAM,KAAK;IAE/E,SAASC;QACPf,gBAAgB;YACdgB,QAAQL;YACRM,OAAON;YACPO,SAASP;YACTQ,MAAMR;YACNS,IAAIT;QACN;IACF;IAEA,qBACE,MAAC7B;QAAMuC,WAAU;;0BACf,KAAChC;gBACCU,SAASA;gBACTC,iBAAiBA;gBACjBsB,SAASxB,QAAQwB;gBACjB1B,QAAQE,QAAQF;gBAChB2B,kBAAkBhB;gBAClBiB,SAAST;;YAGVlB,MAAMgB,SAAS,iBAAG,KAACrB,0BAAwB;YAC3C,CAACK,MAAMgB,SAAS,iBACf,KAACjC;gBAAeiB,OAAOA;gBAAO4B,SAAQ;gBAASC,MAAK;gBAAYC,SAAQ;iBACtE;YACH,CAAC9B,MAAMgB,SAAS,IAAIL,8BAAgB,KAACf;gBAAqBI,OAAOA;iBAAY;YAC7Ee,kBAAkB,CAACL,8BAAgB,KAACjB;gBAAgBW,eAAeA;iBAAoB;YACvFW,kBAAkBL,8BAAgB,KAAChB;gBAAoBiC,SAAST;iBAAmB;YAEnFnB,OAAOkB,MAAM,GAAG,kBACf;;kCACE,MAAC/B;;0CACC,KAACG;gCAAYmC,WAAU;0CACrB,cAAA,MAAClC;;sDACC,KAACF;sDAAU;;sDACX,KAACA;sDAAU;;sDACX,KAACA;4CAAUoC,WAAU;sDAAa;;;;;0CAGtC,KAACrC;0CACEY,OAAOgC,GAAG,CAAC,CAACX,sBACX,KAACvB;wCAECuB,OAAOA;wCACPY,UAAUZ,MAAMa,EAAE,KAAKzB;wCACvB0B,UAAUzB;uCAHLW,MAAMa,EAAE;;;;oBAQpB5B,4BACC,KAAC8B;wBAAIX,WAAU;kCACb,cAAA,KAACxC;4BACCoD,MAAK;4BACLN,SAAQ;4BACRO,MAAK;4BACLC,WAAWhC;4BACXiC,SAAShC;sCACV;;yBAID;;iBAEJ;;;AAGV"}
|
|
@@ -2,7 +2,7 @@ import { type TriggerEventsSearch } from '#search.js';
|
|
|
2
2
|
declare function validateSearch(search: Record<string, unknown>): TriggerEventsSearch;
|
|
3
3
|
declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
|
|
4
4
|
readonly staticData: {
|
|
5
|
-
readonly frame: "
|
|
5
|
+
readonly frame: "content";
|
|
6
6
|
};
|
|
7
7
|
readonly validateSearch: typeof validateSearch;
|
|
8
8
|
readonly component: () => import("react").JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"events-settings.d.ts","sourceRoot":"","sources":["../../src/routes/events-settings.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"events-settings.d.ts","sourceRoot":"","sources":["../../src/routes/events-settings.tsx"],"names":[],"mappings":"AAKA,OAAO,EAAC,KAAK,mBAAmB,EAA8B,MAAM,YAAY,CAAC;AAQjF,iBAAS,cAAc,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB,CAE5E"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { jsx as _jsx } from "react/jsx-runtime";
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
2
|
import { defineRoute, useActiveWorkspace } from '@shipfox/client-shell/runtime';
|
|
3
|
+
import { Header } from '@shipfox/react-ui/typography';
|
|
3
4
|
import { getRouteApi } from '@tanstack/react-router';
|
|
4
5
|
import { EventsPage } from '#pages/events-page.js';
|
|
5
6
|
import { validateTriggerEventsSearch } from '#search.js';
|
|
@@ -13,7 +14,7 @@ function validateSearch(search) {
|
|
|
13
14
|
}
|
|
14
15
|
export default defineRoute({
|
|
15
16
|
staticData: {
|
|
16
|
-
frame: '
|
|
17
|
+
frame: 'content'
|
|
17
18
|
},
|
|
18
19
|
validateSearch,
|
|
19
20
|
component: ()=>{
|
|
@@ -29,11 +30,20 @@ export default defineRoute({
|
|
|
29
30
|
replace: true
|
|
30
31
|
});
|
|
31
32
|
};
|
|
32
|
-
return /*#__PURE__*/
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
33
|
+
return /*#__PURE__*/ _jsxs("div", {
|
|
34
|
+
className: "flex min-w-0 flex-col gap-section",
|
|
35
|
+
children: [
|
|
36
|
+
/*#__PURE__*/ _jsx(Header, {
|
|
37
|
+
variant: "h1",
|
|
38
|
+
children: "Events"
|
|
39
|
+
}),
|
|
40
|
+
/*#__PURE__*/ _jsx(EventsPage, {
|
|
41
|
+
workspaceId: workspace.id,
|
|
42
|
+
workspaceSlug: workspace.slug,
|
|
43
|
+
filters: search,
|
|
44
|
+
onFiltersChange: onFiltersChange
|
|
45
|
+
})
|
|
46
|
+
]
|
|
37
47
|
});
|
|
38
48
|
}
|
|
39
49
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../../src/routes/events-settings.tsx"],"sourcesContent":["import {defineRoute, useActiveWorkspace} from '@shipfox/client-shell/runtime';\nimport {getRouteApi} from '@tanstack/react-router';\nimport type {TriggerEventFilters} from '#core/trigger-event.js';\nimport {EventsPage} from '#pages/events-page.js';\nimport {type TriggerEventsSearch, validateTriggerEventsSearch} from '#search.js';\n\nconst routeApi = getRouteApi('/w/$workspaceSlug/settings/events');\n\n// Wrapped (not just re-typed) so the search validator's own type is portable outside this\n// package: TanStack Router's `const` generics capture the exact declared function, and a\n// route module consumed from another package (apps/client's composed router) can't print a\n// type that only resolves through this package's internal `#search.js` path.\nfunction validateSearch(search: Record<string, unknown>): TriggerEventsSearch {\n return validateTriggerEventsSearch(search);\n}\n\nexport default defineRoute({\n staticData: {frame: '
|
|
1
|
+
{"version":3,"sources":["../../src/routes/events-settings.tsx"],"sourcesContent":["import {defineRoute, useActiveWorkspace} from '@shipfox/client-shell/runtime';\nimport {Header} from '@shipfox/react-ui/typography';\nimport {getRouteApi} from '@tanstack/react-router';\nimport type {TriggerEventFilters} from '#core/trigger-event.js';\nimport {EventsPage} from '#pages/events-page.js';\nimport {type TriggerEventsSearch, validateTriggerEventsSearch} from '#search.js';\n\nconst routeApi = getRouteApi('/w/$workspaceSlug/settings/events');\n\n// Wrapped (not just re-typed) so the search validator's own type is portable outside this\n// package: TanStack Router's `const` generics capture the exact declared function, and a\n// route module consumed from another package (apps/client's composed router) can't print a\n// type that only resolves through this package's internal `#search.js` path.\nfunction validateSearch(search: Record<string, unknown>): TriggerEventsSearch {\n return validateTriggerEventsSearch(search);\n}\n\nexport default defineRoute({\n staticData: {frame: 'content'},\n validateSearch,\n component: () => {\n const workspace = useActiveWorkspace();\n const search = routeApi.useSearch();\n const navigate = routeApi.useNavigate();\n const onFiltersChange = (patch: Partial<TriggerEventFilters>) => {\n void navigate({search: {...search, ...patch}, replace: true});\n };\n return (\n <div className=\"flex min-w-0 flex-col gap-section\">\n <Header variant=\"h1\">Events</Header>\n <EventsPage\n workspaceId={workspace.id}\n workspaceSlug={workspace.slug}\n filters={search}\n onFiltersChange={onFiltersChange}\n />\n </div>\n );\n },\n});\n"],"names":["defineRoute","useActiveWorkspace","Header","getRouteApi","EventsPage","validateTriggerEventsSearch","routeApi","validateSearch","search","staticData","frame","component","workspace","useSearch","navigate","useNavigate","onFiltersChange","patch","replace","div","className","variant","workspaceId","id","workspaceSlug","slug","filters"],"mappings":";AAAA,SAAQA,WAAW,EAAEC,kBAAkB,QAAO,gCAAgC;AAC9E,SAAQC,MAAM,QAAO,+BAA+B;AACpD,SAAQC,WAAW,QAAO,yBAAyB;AAEnD,SAAQC,UAAU,QAAO,wBAAwB;AACjD,SAAkCC,2BAA2B,QAAO,aAAa;AAEjF,MAAMC,WAAWH,YAAY;AAE7B,0FAA0F;AAC1F,yFAAyF;AACzF,2FAA2F;AAC3F,6EAA6E;AAC7E,SAASI,eAAeC,MAA+B;IACrD,OAAOH,4BAA4BG;AACrC;AAEA,eAAeR,YAAY;IACzBS,YAAY;QAACC,OAAO;IAAS;IAC7BH;IACAI,WAAW;QACT,MAAMC,YAAYX;QAClB,MAAMO,SAASF,SAASO,SAAS;QACjC,MAAMC,WAAWR,SAASS,WAAW;QACrC,MAAMC,kBAAkB,CAACC;YACvB,KAAKH,SAAS;gBAACN,QAAQ;oBAAC,GAAGA,MAAM;oBAAE,GAAGS,KAAK;gBAAA;gBAAGC,SAAS;YAAI;QAC7D;QACA,qBACE,MAACC;YAAIC,WAAU;;8BACb,KAAClB;oBAAOmB,SAAQ;8BAAK;;8BACrB,KAACjB;oBACCkB,aAAaV,UAAUW,EAAE;oBACzBC,eAAeZ,UAAUa,IAAI;oBAC7BC,SAASlB;oBACTQ,iBAAiBA;;;;IAIzB;AACF,GAAG"}
|