@shipfox/client-integrations 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.
Files changed (106) hide show
  1. package/.turbo/turbo-build.log +1 -1
  2. package/CHANGELOG.md +39 -0
  3. package/dist/components/callback-status-shell.d.ts.map +1 -1
  4. package/dist/components/callback-status-shell.js +4 -3
  5. package/dist/components/callback-status-shell.js.map +1 -1
  6. package/dist/components/connection-picker.js +2 -2
  7. package/dist/components/connection-picker.js.map +1 -1
  8. package/dist/components/installed-integrations-section.d.ts.map +1 -1
  9. package/dist/components/installed-integrations-section.js +155 -141
  10. package/dist/components/installed-integrations-section.js.map +1 -1
  11. package/dist/components/integration-gallery.stories.d.ts.map +1 -1
  12. package/dist/components/integration-gallery.stories.js +8 -3
  13. package/dist/components/integration-gallery.stories.js.map +1 -1
  14. package/dist/components/provider-grid.d.ts +0 -2
  15. package/dist/components/provider-grid.d.ts.map +1 -1
  16. package/dist/components/provider-grid.js +88 -104
  17. package/dist/components/provider-grid.js.map +1 -1
  18. package/dist/components/redirect-install-page.d.ts.map +1 -1
  19. package/dist/components/redirect-install-page.js +3 -2
  20. package/dist/components/redirect-install-page.js.map +1 -1
  21. package/dist/components/repository-picker.d.ts +1 -4
  22. package/dist/components/repository-picker.d.ts.map +1 -1
  23. package/dist/components/repository-picker.js +24 -37
  24. package/dist/components/repository-picker.js.map +1 -1
  25. package/dist/components/webhook/webhook-modals.stories.js +1 -1
  26. package/dist/components/webhook/webhook-modals.stories.js.map +1 -1
  27. package/dist/pages/gitea-install-page.js +1 -1
  28. package/dist/pages/gitea-install-page.js.map +1 -1
  29. package/dist/pages/jira-callback-page.js +6 -6
  30. package/dist/pages/jira-callback-page.js.map +1 -1
  31. package/dist/pages/sentry-callback-page.js +6 -6
  32. package/dist/pages/sentry-callback-page.js.map +1 -1
  33. package/dist/pages/source-control-onboarding-page.js +1 -1
  34. package/dist/pages/source-control-onboarding-page.js.map +1 -1
  35. package/dist/routes/gitea.d.ts +3 -0
  36. package/dist/routes/gitea.js +3 -0
  37. package/dist/routes/gitea.js.map +1 -1
  38. package/dist/routes/github-callback.d.ts +3 -0
  39. package/dist/routes/github-callback.d.ts.map +1 -1
  40. package/dist/routes/github-callback.js +3 -0
  41. package/dist/routes/github-callback.js.map +1 -1
  42. package/dist/routes/github.d.ts +3 -0
  43. package/dist/routes/github.js +3 -0
  44. package/dist/routes/github.js.map +1 -1
  45. package/dist/routes/integrations-settings.d.ts +3 -0
  46. package/dist/routes/integrations-settings.js +3 -0
  47. package/dist/routes/integrations-settings.js.map +1 -1
  48. package/dist/routes/integrations.d.ts +3 -0
  49. package/dist/routes/integrations.js +3 -0
  50. package/dist/routes/integrations.js.map +1 -1
  51. package/dist/routes/jira-callback.d.ts +3 -0
  52. package/dist/routes/jira-callback.js +3 -0
  53. package/dist/routes/jira-callback.js.map +1 -1
  54. package/dist/routes/jira.d.ts +3 -0
  55. package/dist/routes/jira.js +3 -0
  56. package/dist/routes/jira.js.map +1 -1
  57. package/dist/routes/linear-callback.d.ts +3 -0
  58. package/dist/routes/linear-callback.js +3 -0
  59. package/dist/routes/linear-callback.js.map +1 -1
  60. package/dist/routes/linear.d.ts +3 -0
  61. package/dist/routes/linear.js +3 -0
  62. package/dist/routes/linear.js.map +1 -1
  63. package/dist/routes/sentry-callback.d.ts +3 -0
  64. package/dist/routes/sentry-callback.js +3 -0
  65. package/dist/routes/sentry-callback.js.map +1 -1
  66. package/dist/routes/sentry.d.ts +3 -0
  67. package/dist/routes/sentry.js +3 -0
  68. package/dist/routes/sentry.js.map +1 -1
  69. package/dist/routes/slack-callback.d.ts +3 -0
  70. package/dist/routes/slack-callback.js +3 -0
  71. package/dist/routes/slack-callback.js.map +1 -1
  72. package/dist/routes/slack.d.ts +3 -0
  73. package/dist/routes/slack.js +3 -0
  74. package/dist/routes/slack.js.map +1 -1
  75. package/dist/tsconfig.test.tsbuildinfo +1 -1
  76. package/package.json +8 -8
  77. package/src/components/callback-status-shell.tsx +4 -3
  78. package/src/components/connection-picker.tsx +2 -2
  79. package/src/components/installed-integrations-section.tsx +110 -98
  80. package/src/components/integration-gallery.stories.tsx +8 -3
  81. package/src/components/integration-gallery.test.tsx +3 -1
  82. package/src/components/provider-grid.tsx +69 -79
  83. package/src/components/redirect-install-page.test.tsx +4 -0
  84. package/src/components/redirect-install-page.tsx +3 -2
  85. package/src/components/repository-picker.test.tsx +27 -13
  86. package/src/components/repository-picker.tsx +22 -47
  87. package/src/components/webhook/webhook-modals.stories.tsx +1 -1
  88. package/src/pages/gitea-install-page.tsx +1 -1
  89. package/src/pages/jira-callback-page.tsx +7 -7
  90. package/src/pages/sentry-callback-page.tsx +6 -8
  91. package/src/pages/slack-callback-page.test.tsx +7 -0
  92. package/src/pages/source-control-onboarding-page.tsx +1 -1
  93. package/src/routes/gitea.tsx +4 -1
  94. package/src/routes/github-callback.tsx +1 -0
  95. package/src/routes/github.tsx +4 -1
  96. package/src/routes/integrations-settings.tsx +4 -1
  97. package/src/routes/integrations.tsx +4 -1
  98. package/src/routes/jira-callback.tsx +1 -0
  99. package/src/routes/jira.tsx +4 -1
  100. package/src/routes/linear-callback.tsx +1 -0
  101. package/src/routes/linear.tsx +4 -1
  102. package/src/routes/sentry-callback.tsx +1 -0
  103. package/src/routes/sentry.tsx +4 -1
  104. package/src/routes/slack-callback.tsx +1 -0
  105. package/src/routes/slack.tsx +4 -1
  106. package/tsconfig.build.tsbuildinfo +1 -1
@@ -1,6 +1,9 @@
1
1
  import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { GiteaInstallPage } from '#pages/gitea-install-page.js';
3
3
  export default defineRoute({
4
+ staticData: {
5
+ frame: 'focused'
6
+ },
4
7
  component: GiteaInstallPage
5
8
  });
6
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/gitea.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {GiteaInstallPage} from '#pages/gitea-install-page.js';\n\nexport default defineRoute({component: GiteaInstallPage});\n"],"names":["defineRoute","GiteaInstallPage","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,gBAAgB,QAAO,+BAA+B;AAE9D,eAAeD,YAAY;IAACE,WAAWD;AAAgB,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/gitea.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {GiteaInstallPage} from '#pages/gitea-install-page.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n component: GiteaInstallPage,\n});\n"],"names":["defineRoute","GiteaInstallPage","staticData","frame","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,gBAAgB,QAAO,+BAA+B;AAE9D,eAAeD,YAAY;IACzBE,YAAY;QAACC,OAAO;IAAS;IAC7BC,WAAWH;AACb,GAAG"}
@@ -11,6 +11,9 @@ export interface GithubCallbackSearch {
11
11
  setupAction?: string;
12
12
  }
13
13
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
14
+ readonly staticData: {
15
+ readonly frame: "focused";
16
+ };
14
17
  readonly validateSearch: typeof validateGithubCallbackSearch;
15
18
  readonly component: typeof GithubCallbackRoute;
16
19
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"github-callback.d.ts","sourceRoot":"","sources":["../../src/routes/github-callback.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;;AAYD,iBAAS,mBAAmB,gCAuD3B;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAWjG;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAM5E;AACD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,GAC3B,oBAAoB,GAAG,SAAS,CAKlC;AAoBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGjE"}
1
+ {"version":3,"file":"github-callback.d.ts","sourceRoot":"","sources":["../../src/routes/github-callback.tsx"],"names":[],"mappings":"AAWA,MAAM,WAAW,oBAAoB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;;;;;;;;;AAaD,iBAAS,mBAAmB,gCAuD3B;AAED,wBAAgB,4BAA4B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,oBAAoB,CAWjG;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,oBAAoB,GAAG,MAAM,EAAE,CAM5E;AACD,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,oBAAoB,GAC3B,oBAAoB,GAAG,SAAS,CAKlC;AAoBD,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGjE"}
@@ -16,6 +16,9 @@ const callbackRequests = createSingleFlight({
16
16
  });
17
17
  const toastedCallbacks = new Set();
18
18
  export default defineRoute({
19
+ staticData: {
20
+ frame: 'focused'
21
+ },
19
22
  validateSearch: validateGithubCallbackSearch,
20
23
  component: GithubCallbackRoute
21
24
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/github-callback.tsx"],"sourcesContent":["import {ApiError} from '@shipfox/client-api';\nimport {useRefreshAuth} from '@shipfox/client-auth';\nimport {defineRoute, useRouteSearch} from '@shipfox/client-shell/runtime';\nimport {createSingleFlight} from '@shipfox/client-ui';\nimport {FullPageLoader} from '@shipfox/react-ui/loader';\nimport {toast} from '@shipfox/react-ui/toast';\nimport {useNavigate} from '@tanstack/react-router';\nimport {useEffect} from 'react';\nimport {useCompleteIntegrationCallback} from '#application/complete-integration-callback.js';\nimport {completeGithubCallback} from '#hooks/api/integrations.js';\n\nexport interface GithubCallbackParams {\n code: string;\n installationId: number;\n state: string;\n setupAction?: string;\n}\n\nexport interface GithubCallbackSearch {\n code?: string;\n installationId?: number;\n state?: string;\n setupAction?: string;\n}\n\n// Retain only recent completions: this bounds long-lived callback pages while\n// still covering StrictMode and immediate Back/Forward remounts.\nconst callbackRequests = createSingleFlight<string, void>({maxTerminalResults: 32});\nconst toastedCallbacks = new Set<string>();\n\nexport default defineRoute({\n validateSearch: validateGithubCallbackSearch,\n component: GithubCallbackRoute,\n});\n\nfunction GithubCallbackRoute() {\n const search = useRouteSearch(validateGithubCallbackSearch);\n const navigate = useNavigate();\n const refreshAuth = useRefreshAuth();\n const completeIntegrationCallback = useCompleteIntegrationCallback();\n\n useEffect(() => {\n const missing = missingCallbackParams(search);\n if (missing.length > 0) {\n toast.error(\n `GitHub callback is missing: ${missing.join(', ')}. ${missing.includes('code') ? 'Enable \"Request user authorization (OAuth) during installation\" on the Shipfox GitHub App.' : ''}`,\n );\n navigate({to: '/', replace: true});\n return;\n }\n const params = githubCallbackParams(search);\n if (!params) {\n toast.error('GitHub callback is missing required parameters.');\n navigate({to: '/', replace: true});\n return;\n }\n let disposed = false;\n const key = encodeCallbackQuery(params);\n const request = callbackRequests.run(\n key,\n async () =>\n void (await completeIntegrationCallback({\n input: params,\n refreshAuth,\n complete: async (input, token) => await completeGithubCallback({...input, token}),\n })),\n );\n request\n .then(() => {\n if (disposed) return;\n if (!toastedCallbacks.has(key)) {\n toastedCallbacks.add(key);\n toast.success('GitHub installed.');\n }\n navigate({to: '/', replace: true});\n })\n .catch((error: unknown) => {\n if (disposed) return;\n if (!toastedCallbacks.has(key)) {\n toastedCallbacks.add(key);\n toast.error(githubCallbackErrorMessage(error));\n }\n navigate({to: '/', replace: true});\n });\n return () => {\n disposed = true;\n };\n }, [completeIntegrationCallback, navigate, refreshAuth, search]);\n\n return <FullPageLoader />;\n}\n\nexport function validateGithubCallbackSearch(input: Record<string, unknown>): GithubCallbackSearch {\n const code = stringParam(input.code);\n const installationId = numberParam(input.installation_id);\n const state = stringParam(input.state);\n const setupAction = stringParam(input.setup_action);\n return {\n ...(code ? {code} : {}),\n ...(installationId === undefined ? {} : {installationId}),\n ...(state ? {state} : {}),\n ...(setupAction ? {setupAction} : {}),\n };\n}\n\nexport function missingCallbackParams(search: GithubCallbackSearch): string[] {\n const missing: string[] = [];\n if (!search.code) missing.push('code');\n if (search.installationId === undefined) missing.push('installation_id');\n if (!search.state) missing.push('state');\n return missing;\n}\nexport function githubCallbackParams(\n search: GithubCallbackSearch,\n): GithubCallbackParams | undefined {\n const {code, installationId, state} = search;\n if (!code || installationId === undefined || !state) return undefined;\n const {setupAction} = search;\n return setupAction ? {code, installationId, state, setupAction} : {code, installationId, state};\n}\nfunction encodeCallbackQuery(params: GithubCallbackParams): string {\n const search = new URLSearchParams();\n search.set('code', params.code);\n search.set('installation_id', params.installationId.toString());\n search.set('state', params.state);\n if (params.setupAction) search.set('setup_action', params.setupAction);\n return search.toString();\n}\nfunction stringParam(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\nfunction numberParam(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n if (typeof value === 'string' && value.length > 0) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n}\nexport function githubCallbackErrorMessage(error: unknown): string {\n if (error instanceof ApiError) return 'GitHub could not be installed. Try again from settings.';\n return 'Could not install GitHub.';\n}\n"],"names":["ApiError","useRefreshAuth","defineRoute","useRouteSearch","createSingleFlight","FullPageLoader","toast","useNavigate","useEffect","useCompleteIntegrationCallback","completeGithubCallback","callbackRequests","maxTerminalResults","toastedCallbacks","Set","validateSearch","validateGithubCallbackSearch","component","GithubCallbackRoute","search","navigate","refreshAuth","completeIntegrationCallback","missing","missingCallbackParams","length","error","join","includes","to","replace","params","githubCallbackParams","disposed","key","encodeCallbackQuery","request","run","input","complete","token","then","has","add","success","catch","githubCallbackErrorMessage","code","stringParam","installationId","numberParam","installation_id","state","setupAction","setup_action","undefined","push","URLSearchParams","set","toString","value","Number","isFinite","parsed"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/routes/github-callback.tsx"],"sourcesContent":["import {ApiError} from '@shipfox/client-api';\nimport {useRefreshAuth} from '@shipfox/client-auth';\nimport {defineRoute, useRouteSearch} from '@shipfox/client-shell/runtime';\nimport {createSingleFlight} from '@shipfox/client-ui';\nimport {FullPageLoader} from '@shipfox/react-ui/loader';\nimport {toast} from '@shipfox/react-ui/toast';\nimport {useNavigate} from '@tanstack/react-router';\nimport {useEffect} from 'react';\nimport {useCompleteIntegrationCallback} from '#application/complete-integration-callback.js';\nimport {completeGithubCallback} from '#hooks/api/integrations.js';\n\nexport interface GithubCallbackParams {\n code: string;\n installationId: number;\n state: string;\n setupAction?: string;\n}\n\nexport interface GithubCallbackSearch {\n code?: string;\n installationId?: number;\n state?: string;\n setupAction?: string;\n}\n\n// Retain only recent completions: this bounds long-lived callback pages while\n// still covering StrictMode and immediate Back/Forward remounts.\nconst callbackRequests = createSingleFlight<string, void>({maxTerminalResults: 32});\nconst toastedCallbacks = new Set<string>();\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n validateSearch: validateGithubCallbackSearch,\n component: GithubCallbackRoute,\n});\n\nfunction GithubCallbackRoute() {\n const search = useRouteSearch(validateGithubCallbackSearch);\n const navigate = useNavigate();\n const refreshAuth = useRefreshAuth();\n const completeIntegrationCallback = useCompleteIntegrationCallback();\n\n useEffect(() => {\n const missing = missingCallbackParams(search);\n if (missing.length > 0) {\n toast.error(\n `GitHub callback is missing: ${missing.join(', ')}. ${missing.includes('code') ? 'Enable \"Request user authorization (OAuth) during installation\" on the Shipfox GitHub App.' : ''}`,\n );\n navigate({to: '/', replace: true});\n return;\n }\n const params = githubCallbackParams(search);\n if (!params) {\n toast.error('GitHub callback is missing required parameters.');\n navigate({to: '/', replace: true});\n return;\n }\n let disposed = false;\n const key = encodeCallbackQuery(params);\n const request = callbackRequests.run(\n key,\n async () =>\n void (await completeIntegrationCallback({\n input: params,\n refreshAuth,\n complete: async (input, token) => await completeGithubCallback({...input, token}),\n })),\n );\n request\n .then(() => {\n if (disposed) return;\n if (!toastedCallbacks.has(key)) {\n toastedCallbacks.add(key);\n toast.success('GitHub installed.');\n }\n navigate({to: '/', replace: true});\n })\n .catch((error: unknown) => {\n if (disposed) return;\n if (!toastedCallbacks.has(key)) {\n toastedCallbacks.add(key);\n toast.error(githubCallbackErrorMessage(error));\n }\n navigate({to: '/', replace: true});\n });\n return () => {\n disposed = true;\n };\n }, [completeIntegrationCallback, navigate, refreshAuth, search]);\n\n return <FullPageLoader />;\n}\n\nexport function validateGithubCallbackSearch(input: Record<string, unknown>): GithubCallbackSearch {\n const code = stringParam(input.code);\n const installationId = numberParam(input.installation_id);\n const state = stringParam(input.state);\n const setupAction = stringParam(input.setup_action);\n return {\n ...(code ? {code} : {}),\n ...(installationId === undefined ? {} : {installationId}),\n ...(state ? {state} : {}),\n ...(setupAction ? {setupAction} : {}),\n };\n}\n\nexport function missingCallbackParams(search: GithubCallbackSearch): string[] {\n const missing: string[] = [];\n if (!search.code) missing.push('code');\n if (search.installationId === undefined) missing.push('installation_id');\n if (!search.state) missing.push('state');\n return missing;\n}\nexport function githubCallbackParams(\n search: GithubCallbackSearch,\n): GithubCallbackParams | undefined {\n const {code, installationId, state} = search;\n if (!code || installationId === undefined || !state) return undefined;\n const {setupAction} = search;\n return setupAction ? {code, installationId, state, setupAction} : {code, installationId, state};\n}\nfunction encodeCallbackQuery(params: GithubCallbackParams): string {\n const search = new URLSearchParams();\n search.set('code', params.code);\n search.set('installation_id', params.installationId.toString());\n search.set('state', params.state);\n if (params.setupAction) search.set('setup_action', params.setupAction);\n return search.toString();\n}\nfunction stringParam(value: unknown): string | undefined {\n return typeof value === 'string' && value.length > 0 ? value : undefined;\n}\nfunction numberParam(value: unknown): number | undefined {\n if (typeof value === 'number' && Number.isFinite(value)) return value;\n if (typeof value === 'string' && value.length > 0) {\n const parsed = Number(value);\n return Number.isFinite(parsed) ? parsed : undefined;\n }\n return undefined;\n}\nexport function githubCallbackErrorMessage(error: unknown): string {\n if (error instanceof ApiError) return 'GitHub could not be installed. Try again from settings.';\n return 'Could not install GitHub.';\n}\n"],"names":["ApiError","useRefreshAuth","defineRoute","useRouteSearch","createSingleFlight","FullPageLoader","toast","useNavigate","useEffect","useCompleteIntegrationCallback","completeGithubCallback","callbackRequests","maxTerminalResults","toastedCallbacks","Set","staticData","frame","validateSearch","validateGithubCallbackSearch","component","GithubCallbackRoute","search","navigate","refreshAuth","completeIntegrationCallback","missing","missingCallbackParams","length","error","join","includes","to","replace","params","githubCallbackParams","disposed","key","encodeCallbackQuery","request","run","input","complete","token","then","has","add","success","catch","githubCallbackErrorMessage","code","stringParam","installationId","numberParam","installation_id","state","setupAction","setup_action","undefined","push","URLSearchParams","set","toString","value","Number","isFinite","parsed"],"mappings":";AAAA,SAAQA,QAAQ,QAAO,sBAAsB;AAC7C,SAAQC,cAAc,QAAO,uBAAuB;AACpD,SAAQC,WAAW,EAAEC,cAAc,QAAO,gCAAgC;AAC1E,SAAQC,kBAAkB,QAAO,qBAAqB;AACtD,SAAQC,cAAc,QAAO,2BAA2B;AACxD,SAAQC,KAAK,QAAO,0BAA0B;AAC9C,SAAQC,WAAW,QAAO,yBAAyB;AACnD,SAAQC,SAAS,QAAO,QAAQ;AAChC,SAAQC,8BAA8B,QAAO,gDAAgD;AAC7F,SAAQC,sBAAsB,QAAO,6BAA6B;AAgBlE,8EAA8E;AAC9E,iEAAiE;AACjE,MAAMC,mBAAmBP,mBAAiC;IAACQ,oBAAoB;AAAE;AACjF,MAAMC,mBAAmB,IAAIC;AAE7B,eAAeZ,YAAY;IACzBa,YAAY;QAACC,OAAO;IAAS;IAC7BC,gBAAgBC;IAChBC,WAAWC;AACb,GAAG;AAEH,SAASA;IACP,MAAMC,SAASlB,eAAee;IAC9B,MAAMI,WAAWf;IACjB,MAAMgB,cAActB;IACpB,MAAMuB,8BAA8Bf;IAEpCD,UAAU;QACR,MAAMiB,UAAUC,sBAAsBL;QACtC,IAAII,QAAQE,MAAM,GAAG,GAAG;YACtBrB,MAAMsB,KAAK,CACT,CAAC,4BAA4B,EAAEH,QAAQI,IAAI,CAAC,MAAM,EAAE,EAAEJ,QAAQK,QAAQ,CAAC,UAAU,+FAA+F,IAAI;YAEtLR,SAAS;gBAACS,IAAI;gBAAKC,SAAS;YAAI;YAChC;QACF;QACA,MAAMC,SAASC,qBAAqBb;QACpC,IAAI,CAACY,QAAQ;YACX3B,MAAMsB,KAAK,CAAC;YACZN,SAAS;gBAACS,IAAI;gBAAKC,SAAS;YAAI;YAChC;QACF;QACA,IAAIG,WAAW;QACf,MAAMC,MAAMC,oBAAoBJ;QAChC,MAAMK,UAAU3B,iBAAiB4B,GAAG,CAClCH,KACA,UACE,KAAM,MAAMZ,4BAA4B;gBACtCgB,OAAOP;gBACPV;gBACAkB,UAAU,OAAOD,OAAOE,QAAU,MAAMhC,uBAAuB;wBAAC,GAAG8B,KAAK;wBAAEE;oBAAK;YACjF;QAEJJ,QACGK,IAAI,CAAC;YACJ,IAAIR,UAAU;YACd,IAAI,CAACtB,iBAAiB+B,GAAG,CAACR,MAAM;gBAC9BvB,iBAAiBgC,GAAG,CAACT;gBACrB9B,MAAMwC,OAAO,CAAC;YAChB;YACAxB,SAAS;gBAACS,IAAI;gBAAKC,SAAS;YAAI;QAClC,GACCe,KAAK,CAAC,CAACnB;YACN,IAAIO,UAAU;YACd,IAAI,CAACtB,iBAAiB+B,GAAG,CAACR,MAAM;gBAC9BvB,iBAAiBgC,GAAG,CAACT;gBACrB9B,MAAMsB,KAAK,CAACoB,2BAA2BpB;YACzC;YACAN,SAAS;gBAACS,IAAI;gBAAKC,SAAS;YAAI;QAClC;QACF,OAAO;YACLG,WAAW;QACb;IACF,GAAG;QAACX;QAA6BF;QAAUC;QAAaF;KAAO;IAE/D,qBAAO,KAAChB;AACV;AAEA,OAAO,SAASa,6BAA6BsB,KAA8B;IACzE,MAAMS,OAAOC,YAAYV,MAAMS,IAAI;IACnC,MAAME,iBAAiBC,YAAYZ,MAAMa,eAAe;IACxD,MAAMC,QAAQJ,YAAYV,MAAMc,KAAK;IACrC,MAAMC,cAAcL,YAAYV,MAAMgB,YAAY;IAClD,OAAO;QACL,GAAIP,OAAO;YAACA;QAAI,IAAI,CAAC,CAAC;QACtB,GAAIE,mBAAmBM,YAAY,CAAC,IAAI;YAACN;QAAc,CAAC;QACxD,GAAIG,QAAQ;YAACA;QAAK,IAAI,CAAC,CAAC;QACxB,GAAIC,cAAc;YAACA;QAAW,IAAI,CAAC,CAAC;IACtC;AACF;AAEA,OAAO,SAAS7B,sBAAsBL,MAA4B;IAChE,MAAMI,UAAoB,EAAE;IAC5B,IAAI,CAACJ,OAAO4B,IAAI,EAAExB,QAAQiC,IAAI,CAAC;IAC/B,IAAIrC,OAAO8B,cAAc,KAAKM,WAAWhC,QAAQiC,IAAI,CAAC;IACtD,IAAI,CAACrC,OAAOiC,KAAK,EAAE7B,QAAQiC,IAAI,CAAC;IAChC,OAAOjC;AACT;AACA,OAAO,SAASS,qBACdb,MAA4B;IAE5B,MAAM,EAAC4B,IAAI,EAAEE,cAAc,EAAEG,KAAK,EAAC,GAAGjC;IACtC,IAAI,CAAC4B,QAAQE,mBAAmBM,aAAa,CAACH,OAAO,OAAOG;IAC5D,MAAM,EAACF,WAAW,EAAC,GAAGlC;IACtB,OAAOkC,cAAc;QAACN;QAAME;QAAgBG;QAAOC;IAAW,IAAI;QAACN;QAAME;QAAgBG;IAAK;AAChG;AACA,SAASjB,oBAAoBJ,MAA4B;IACvD,MAAMZ,SAAS,IAAIsC;IACnBtC,OAAOuC,GAAG,CAAC,QAAQ3B,OAAOgB,IAAI;IAC9B5B,OAAOuC,GAAG,CAAC,mBAAmB3B,OAAOkB,cAAc,CAACU,QAAQ;IAC5DxC,OAAOuC,GAAG,CAAC,SAAS3B,OAAOqB,KAAK;IAChC,IAAIrB,OAAOsB,WAAW,EAAElC,OAAOuC,GAAG,CAAC,gBAAgB3B,OAAOsB,WAAW;IACrE,OAAOlC,OAAOwC,QAAQ;AACxB;AACA,SAASX,YAAYY,KAAc;IACjC,OAAO,OAAOA,UAAU,YAAYA,MAAMnC,MAAM,GAAG,IAAImC,QAAQL;AACjE;AACA,SAASL,YAAYU,KAAc;IACjC,IAAI,OAAOA,UAAU,YAAYC,OAAOC,QAAQ,CAACF,QAAQ,OAAOA;IAChE,IAAI,OAAOA,UAAU,YAAYA,MAAMnC,MAAM,GAAG,GAAG;QACjD,MAAMsC,SAASF,OAAOD;QACtB,OAAOC,OAAOC,QAAQ,CAACC,UAAUA,SAASR;IAC5C;IACA,OAAOA;AACT;AACA,OAAO,SAAST,2BAA2BpB,KAAc;IACvD,IAAIA,iBAAiB5B,UAAU,OAAO;IACtC,OAAO;AACT"}
@@ -1,5 +1,8 @@
1
1
  import { GithubInstallPage } from '#pages/github-install-page.js';
2
2
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
3
+ readonly staticData: {
4
+ readonly frame: "focused";
5
+ };
3
6
  readonly component: typeof GithubInstallPage;
4
7
  }>;
5
8
  export default _default;
@@ -1,6 +1,9 @@
1
1
  import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { GithubInstallPage } from '#pages/github-install-page.js';
3
3
  export default defineRoute({
4
+ staticData: {
5
+ frame: 'focused'
6
+ },
4
7
  component: GithubInstallPage
5
8
  });
6
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/github.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {GithubInstallPage} from '#pages/github-install-page.js';\n\nexport default defineRoute({component: GithubInstallPage});\n"],"names":["defineRoute","GithubInstallPage","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,iBAAiB,QAAO,gCAAgC;AAEhE,eAAeD,YAAY;IAACE,WAAWD;AAAiB,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/github.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {GithubInstallPage} from '#pages/github-install-page.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n component: GithubInstallPage,\n});\n"],"names":["defineRoute","GithubInstallPage","staticData","frame","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,iBAAiB,QAAO,gCAAgC;AAEhE,eAAeD,YAAY;IACzBE,YAAY;QAACC,OAAO;IAAS;IAC7BC,WAAWH;AACb,GAAG"}
@@ -1,5 +1,8 @@
1
1
  import { IntegrationGallery } from '#index.js';
2
2
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
3
+ readonly staticData: {
4
+ readonly frame: "content";
5
+ };
3
6
  readonly component: typeof IntegrationGallery;
4
7
  }>;
5
8
  export default _default;
@@ -1,6 +1,9 @@
1
1
  import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { IntegrationGallery } from '#index.js';
3
3
  export default defineRoute({
4
+ staticData: {
5
+ frame: 'content'
6
+ },
4
7
  component: IntegrationGallery
5
8
  });
6
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/integrations-settings.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {IntegrationGallery} from '#index.js';\n\nexport default defineRoute({component: IntegrationGallery});\n"],"names":["defineRoute","IntegrationGallery","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,kBAAkB,QAAO,YAAY;AAE7C,eAAeD,YAAY;IAACE,WAAWD;AAAkB,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/integrations-settings.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {IntegrationGallery} from '#index.js';\n\nexport default defineRoute({\n staticData: {frame: 'content'},\n component: IntegrationGallery,\n});\n"],"names":["defineRoute","IntegrationGallery","staticData","frame","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,kBAAkB,QAAO,YAAY;AAE7C,eAAeD,YAAY;IACzBE,YAAY;QAACC,OAAO;IAAS;IAC7BC,WAAWH;AACb,GAAG"}
@@ -1,5 +1,8 @@
1
1
  import { SourceControlOnboardingPage } from '#pages/source-control-onboarding-page.js';
2
2
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
3
+ readonly staticData: {
4
+ readonly frame: "focused";
5
+ };
3
6
  readonly component: typeof SourceControlOnboardingPage;
4
7
  }>;
5
8
  export default _default;
@@ -1,6 +1,9 @@
1
1
  import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { SourceControlOnboardingPage } from '#pages/source-control-onboarding-page.js';
3
3
  export default defineRoute({
4
+ staticData: {
5
+ frame: 'focused'
6
+ },
4
7
  component: SourceControlOnboardingPage
5
8
  });
6
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/integrations.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {SourceControlOnboardingPage} from '#pages/source-control-onboarding-page.js';\n\nexport default defineRoute({component: SourceControlOnboardingPage});\n"],"names":["defineRoute","SourceControlOnboardingPage","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,2BAA2B,QAAO,2CAA2C;AAErF,eAAeD,YAAY;IAACE,WAAWD;AAA2B,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/integrations.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {SourceControlOnboardingPage} from '#pages/source-control-onboarding-page.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n component: SourceControlOnboardingPage,\n});\n"],"names":["defineRoute","SourceControlOnboardingPage","staticData","frame","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,2BAA2B,QAAO,2CAA2C;AAErF,eAAeD,YAAY;IACzBE,YAAY;QAACC,OAAO;IAAS;IAC7BC,WAAWH;AACb,GAAG"}
@@ -1,6 +1,9 @@
1
1
  import { JiraCallbackPage } from '#pages/jira-callback-page.js';
2
2
  import { parseJiraCallbackQuery } from '../jira-callback.js';
3
3
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
4
+ readonly staticData: {
5
+ readonly frame: "focused";
6
+ };
4
7
  readonly validateSearch: typeof parseJiraCallbackQuery;
5
8
  readonly component: typeof JiraCallbackPage;
6
9
  }>;
@@ -2,6 +2,9 @@ import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { JiraCallbackPage } from '#pages/jira-callback-page.js';
3
3
  import { parseJiraCallbackQuery } from '../jira-callback.js';
4
4
  export default defineRoute({
5
+ staticData: {
6
+ frame: 'focused'
7
+ },
5
8
  validateSearch: parseJiraCallbackQuery,
6
9
  component: JiraCallbackPage
7
10
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/jira-callback.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {JiraCallbackPage} from '#pages/jira-callback-page.js';\nimport {parseJiraCallbackQuery} from '../jira-callback.js';\n\nexport default defineRoute({\n validateSearch: parseJiraCallbackQuery,\n component: JiraCallbackPage,\n});\n"],"names":["defineRoute","JiraCallbackPage","parseJiraCallbackQuery","validateSearch","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,gBAAgB,QAAO,+BAA+B;AAC9D,SAAQC,sBAAsB,QAAO,sBAAsB;AAE3D,eAAeF,YAAY;IACzBG,gBAAgBD;IAChBE,WAAWH;AACb,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/jira-callback.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {JiraCallbackPage} from '#pages/jira-callback-page.js';\nimport {parseJiraCallbackQuery} from '../jira-callback.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n validateSearch: parseJiraCallbackQuery,\n component: JiraCallbackPage,\n});\n"],"names":["defineRoute","JiraCallbackPage","parseJiraCallbackQuery","staticData","frame","validateSearch","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,gBAAgB,QAAO,+BAA+B;AAC9D,SAAQC,sBAAsB,QAAO,sBAAsB;AAE3D,eAAeF,YAAY;IACzBG,YAAY;QAACC,OAAO;IAAS;IAC7BC,gBAAgBH;IAChBI,WAAWL;AACb,GAAG"}
@@ -1,5 +1,8 @@
1
1
  import { JiraInstallPage } from '#pages/jira-install-page.js';
2
2
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
3
+ readonly staticData: {
4
+ readonly frame: "focused";
5
+ };
3
6
  readonly component: typeof JiraInstallPage;
4
7
  }>;
5
8
  export default _default;
@@ -1,6 +1,9 @@
1
1
  import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { JiraInstallPage } from '#pages/jira-install-page.js';
3
3
  export default defineRoute({
4
+ staticData: {
5
+ frame: 'focused'
6
+ },
4
7
  component: JiraInstallPage
5
8
  });
6
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/jira.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {JiraInstallPage} from '#pages/jira-install-page.js';\n\nexport default defineRoute({component: JiraInstallPage});\n"],"names":["defineRoute","JiraInstallPage","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,eAAe,QAAO,8BAA8B;AAE5D,eAAeD,YAAY;IAACE,WAAWD;AAAe,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/jira.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {JiraInstallPage} from '#pages/jira-install-page.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n component: JiraInstallPage,\n});\n"],"names":["defineRoute","JiraInstallPage","staticData","frame","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,eAAe,QAAO,8BAA8B;AAE5D,eAAeD,YAAY;IACzBE,YAAY;QAACC,OAAO;IAAS;IAC7BC,WAAWH;AACb,GAAG"}
@@ -1,6 +1,9 @@
1
1
  import { LinearCallbackPage } from '#pages/linear-callback-page.js';
2
2
  import { parseLinearCallbackQuery } from '../linear-callback.js';
3
3
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
4
+ readonly staticData: {
5
+ readonly frame: "focused";
6
+ };
4
7
  readonly validateSearch: typeof parseLinearCallbackQuery;
5
8
  readonly component: typeof LinearCallbackPage;
6
9
  }>;
@@ -2,6 +2,9 @@ import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { LinearCallbackPage } from '#pages/linear-callback-page.js';
3
3
  import { parseLinearCallbackQuery } from '../linear-callback.js';
4
4
  export default defineRoute({
5
+ staticData: {
6
+ frame: 'focused'
7
+ },
5
8
  validateSearch: parseLinearCallbackQuery,
6
9
  component: LinearCallbackPage
7
10
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/linear-callback.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {LinearCallbackPage} from '#pages/linear-callback-page.js';\nimport {parseLinearCallbackQuery} from '../linear-callback.js';\n\nexport default defineRoute({\n validateSearch: parseLinearCallbackQuery,\n component: LinearCallbackPage,\n});\n"],"names":["defineRoute","LinearCallbackPage","parseLinearCallbackQuery","validateSearch","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,kBAAkB,QAAO,iCAAiC;AAClE,SAAQC,wBAAwB,QAAO,wBAAwB;AAE/D,eAAeF,YAAY;IACzBG,gBAAgBD;IAChBE,WAAWH;AACb,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/linear-callback.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {LinearCallbackPage} from '#pages/linear-callback-page.js';\nimport {parseLinearCallbackQuery} from '../linear-callback.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n validateSearch: parseLinearCallbackQuery,\n component: LinearCallbackPage,\n});\n"],"names":["defineRoute","LinearCallbackPage","parseLinearCallbackQuery","staticData","frame","validateSearch","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,kBAAkB,QAAO,iCAAiC;AAClE,SAAQC,wBAAwB,QAAO,wBAAwB;AAE/D,eAAeF,YAAY;IACzBG,YAAY;QAACC,OAAO;IAAS;IAC7BC,gBAAgBH;IAChBI,WAAWL;AACb,GAAG"}
@@ -1,5 +1,8 @@
1
1
  import { LinearInstallPage } from '#pages/linear-install-page.js';
2
2
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
3
+ readonly staticData: {
4
+ readonly frame: "focused";
5
+ };
3
6
  readonly component: typeof LinearInstallPage;
4
7
  }>;
5
8
  export default _default;
@@ -1,6 +1,9 @@
1
1
  import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { LinearInstallPage } from '#pages/linear-install-page.js';
3
3
  export default defineRoute({
4
+ staticData: {
5
+ frame: 'focused'
6
+ },
4
7
  component: LinearInstallPage
5
8
  });
6
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/linear.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {LinearInstallPage} from '#pages/linear-install-page.js';\n\nexport default defineRoute({component: LinearInstallPage});\n"],"names":["defineRoute","LinearInstallPage","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,iBAAiB,QAAO,gCAAgC;AAEhE,eAAeD,YAAY;IAACE,WAAWD;AAAiB,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/linear.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {LinearInstallPage} from '#pages/linear-install-page.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n component: LinearInstallPage,\n});\n"],"names":["defineRoute","LinearInstallPage","staticData","frame","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,iBAAiB,QAAO,gCAAgC;AAEhE,eAAeD,YAAY;IACzBE,YAAY;QAACC,OAAO;IAAS;IAC7BC,WAAWH;AACb,GAAG"}
@@ -1,6 +1,9 @@
1
1
  import { SentryCallbackPage } from '#pages/sentry-callback-page.js';
2
2
  import { parseSentryCallbackParams } from '../sentry-callback.js';
3
3
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
4
+ readonly staticData: {
5
+ readonly frame: "focused";
6
+ };
4
7
  readonly validateSearch: typeof parseSentryCallbackParams;
5
8
  readonly component: typeof SentryCallbackPage;
6
9
  }>;
@@ -2,6 +2,9 @@ import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { SentryCallbackPage } from '#pages/sentry-callback-page.js';
3
3
  import { parseSentryCallbackParams } from '../sentry-callback.js';
4
4
  export default defineRoute({
5
+ staticData: {
6
+ frame: 'focused'
7
+ },
5
8
  validateSearch: parseSentryCallbackParams,
6
9
  component: SentryCallbackPage
7
10
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/sentry-callback.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {SentryCallbackPage} from '#pages/sentry-callback-page.js';\nimport {parseSentryCallbackParams} from '../sentry-callback.js';\n\nexport default defineRoute({\n validateSearch: parseSentryCallbackParams,\n component: SentryCallbackPage,\n});\n"],"names":["defineRoute","SentryCallbackPage","parseSentryCallbackParams","validateSearch","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,kBAAkB,QAAO,iCAAiC;AAClE,SAAQC,yBAAyB,QAAO,wBAAwB;AAEhE,eAAeF,YAAY;IACzBG,gBAAgBD;IAChBE,WAAWH;AACb,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/sentry-callback.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {SentryCallbackPage} from '#pages/sentry-callback-page.js';\nimport {parseSentryCallbackParams} from '../sentry-callback.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n validateSearch: parseSentryCallbackParams,\n component: SentryCallbackPage,\n});\n"],"names":["defineRoute","SentryCallbackPage","parseSentryCallbackParams","staticData","frame","validateSearch","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,kBAAkB,QAAO,iCAAiC;AAClE,SAAQC,yBAAyB,QAAO,wBAAwB;AAEhE,eAAeF,YAAY;IACzBG,YAAY;QAACC,OAAO;IAAS;IAC7BC,gBAAgBH;IAChBI,WAAWL;AACb,GAAG"}
@@ -1,5 +1,8 @@
1
1
  import { SentryInstallPage } from '#pages/sentry-install-page.js';
2
2
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
3
+ readonly staticData: {
4
+ readonly frame: "focused";
5
+ };
3
6
  readonly component: typeof SentryInstallPage;
4
7
  }>;
5
8
  export default _default;
@@ -1,6 +1,9 @@
1
1
  import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { SentryInstallPage } from '#pages/sentry-install-page.js';
3
3
  export default defineRoute({
4
+ staticData: {
5
+ frame: 'focused'
6
+ },
4
7
  component: SentryInstallPage
5
8
  });
6
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/sentry.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {SentryInstallPage} from '#pages/sentry-install-page.js';\n\nexport default defineRoute({component: SentryInstallPage});\n"],"names":["defineRoute","SentryInstallPage","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,iBAAiB,QAAO,gCAAgC;AAEhE,eAAeD,YAAY;IAACE,WAAWD;AAAiB,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/sentry.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {SentryInstallPage} from '#pages/sentry-install-page.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n component: SentryInstallPage,\n});\n"],"names":["defineRoute","SentryInstallPage","staticData","frame","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,iBAAiB,QAAO,gCAAgC;AAEhE,eAAeD,YAAY;IACzBE,YAAY;QAACC,OAAO;IAAS;IAC7BC,WAAWH;AACb,GAAG"}
@@ -1,6 +1,9 @@
1
1
  import { SlackCallbackPage } from '#pages/slack-callback-page.js';
2
2
  import { parseSlackCallbackQuery } from '../slack-callback.js';
3
3
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
4
+ readonly staticData: {
5
+ readonly frame: "focused";
6
+ };
4
7
  readonly validateSearch: typeof parseSlackCallbackQuery;
5
8
  readonly component: typeof SlackCallbackPage;
6
9
  }>;
@@ -2,6 +2,9 @@ import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { SlackCallbackPage } from '#pages/slack-callback-page.js';
3
3
  import { parseSlackCallbackQuery } from '../slack-callback.js';
4
4
  export default defineRoute({
5
+ staticData: {
6
+ frame: 'focused'
7
+ },
5
8
  validateSearch: parseSlackCallbackQuery,
6
9
  component: SlackCallbackPage
7
10
  });
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/slack-callback.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {SlackCallbackPage} from '#pages/slack-callback-page.js';\nimport {parseSlackCallbackQuery} from '../slack-callback.js';\n\nexport default defineRoute({\n validateSearch: parseSlackCallbackQuery,\n component: SlackCallbackPage,\n});\n"],"names":["defineRoute","SlackCallbackPage","parseSlackCallbackQuery","validateSearch","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,iBAAiB,QAAO,gCAAgC;AAChE,SAAQC,uBAAuB,QAAO,uBAAuB;AAE7D,eAAeF,YAAY;IACzBG,gBAAgBD;IAChBE,WAAWH;AACb,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/slack-callback.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {SlackCallbackPage} from '#pages/slack-callback-page.js';\nimport {parseSlackCallbackQuery} from '../slack-callback.js';\n\nexport default defineRoute({\n staticData: {frame: 'focused'},\n validateSearch: parseSlackCallbackQuery,\n component: SlackCallbackPage,\n});\n"],"names":["defineRoute","SlackCallbackPage","parseSlackCallbackQuery","staticData","frame","validateSearch","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,iBAAiB,QAAO,gCAAgC;AAChE,SAAQC,uBAAuB,QAAO,uBAAuB;AAE7D,eAAeF,YAAY;IACzBG,YAAY;QAACC,OAAO;IAAS;IAC7BC,gBAAgBH;IAChBI,WAAWL;AACb,GAAG"}
@@ -1,5 +1,8 @@
1
1
  import { SlackInstallPage } from '#pages/slack-install-page.js';
2
2
  declare const _default: import("@shipfox/client-shell/runtime").RouteImpl<{
3
+ readonly staticData: {
4
+ readonly frame: "focused";
5
+ };
3
6
  readonly component: typeof SlackInstallPage;
4
7
  }>;
5
8
  export default _default;
@@ -1,6 +1,9 @@
1
1
  import { defineRoute } from '@shipfox/client-shell/runtime';
2
2
  import { SlackInstallPage } from '#pages/slack-install-page.js';
3
3
  export default defineRoute({
4
+ staticData: {
5
+ frame: 'focused'
6
+ },
4
7
  component: SlackInstallPage
5
8
  });
6
9
 
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/routes/slack.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {SlackInstallPage} from '#pages/slack-install-page.js';\nexport default defineRoute({component: SlackInstallPage});\n"],"names":["defineRoute","SlackInstallPage","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,gBAAgB,QAAO,+BAA+B;AAC9D,eAAeD,YAAY;IAACE,WAAWD;AAAgB,GAAG"}
1
+ {"version":3,"sources":["../../src/routes/slack.tsx"],"sourcesContent":["import {defineRoute} from '@shipfox/client-shell/runtime';\nimport {SlackInstallPage} from '#pages/slack-install-page.js';\nexport default defineRoute({\n staticData: {frame: 'focused'},\n component: SlackInstallPage,\n});\n"],"names":["defineRoute","SlackInstallPage","staticData","frame","component"],"mappings":"AAAA,SAAQA,WAAW,QAAO,gCAAgC;AAC1D,SAAQC,gBAAgB,QAAO,+BAA+B;AAC9D,eAAeD,YAAY;IACzBE,YAAY;QAACC,OAAO;IAAS;IAC7BC,WAAWH;AACb,GAAG"}