@igstack/app-catalog-frontend-core 6.10.3 → 6.11.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/esm/__tests__/modules/auth/AuthContext.test.d.ts +1 -0
- package/dist/esm/__tests__/modules/communityTools/likedBy.test.d.ts +1 -0
- package/dist/esm/__tests__/modules/communityTools/timeAgo.test.d.ts +1 -0
- package/dist/esm/__tests__/modules/communityTools/useTimeUp.test.d.ts +1 -0
- package/dist/esm/api/infra/trpc.d.ts +419 -0
- package/dist/esm/api/infra/trpc.js.map +1 -1
- package/dist/esm/modules/appCatalog/hooks/useUpdateApp.d.ts +1 -1
- package/dist/esm/modules/appCatalog/ui/catalog/AppDetailPanel.d.ts +2 -4
- package/dist/esm/modules/appCatalog/ui/catalog/AppDetailPanel.js +29 -101
- package/dist/esm/modules/appCatalog/ui/catalog/AppDetailPanel.js.map +1 -1
- package/dist/esm/modules/appCatalog/ui/catalog/DetailDialogShell.d.ts +26 -0
- package/dist/esm/modules/appCatalog/ui/catalog/DetailDialogShell.js +108 -0
- package/dist/esm/modules/appCatalog/ui/catalog/DetailDialogShell.js.map +1 -0
- package/dist/esm/modules/appCatalog/ui/components/ScreenshotGallery.d.ts +2 -1
- package/dist/esm/modules/appCatalog/ui/components/ScreenshotGallery.js.map +1 -1
- package/dist/esm/modules/appCatalog/ui/components/SectionTabs.d.ts +8 -0
- package/dist/esm/modules/appCatalog/ui/components/SectionTabs.js +73 -0
- package/dist/esm/modules/appCatalog/ui/components/SectionTabs.js.map +1 -0
- package/dist/esm/modules/appCatalog/ui/detail/AppDetails.js +19 -2
- package/dist/esm/modules/appCatalog/ui/detail/AppDetails.js.map +1 -1
- package/dist/esm/modules/appCatalog/ui/detail/CommentsFeed.d.ts +3 -2
- package/dist/esm/modules/appCatalog/ui/detail/CommentsFeed.js +4 -4
- package/dist/esm/modules/appCatalog/ui/detail/CommentsFeed.js.map +1 -1
- package/dist/esm/modules/appCatalog/ui/detail/CommentsHelp.d.ts +2 -1
- package/dist/esm/modules/appCatalog/ui/detail/CommentsHelp.js +2 -2
- package/dist/esm/modules/appCatalog/ui/detail/CommentsHelp.js.map +1 -1
- package/dist/esm/modules/appCatalog/ui/detail/CommunityInput.d.ts +3 -2
- package/dist/esm/modules/appCatalog/ui/detail/CommunityInput.js +13 -9
- package/dist/esm/modules/appCatalog/ui/detail/CommunityInput.js.map +1 -1
- package/dist/esm/modules/appCatalog/ui/detail/CommunitySection.d.ts +4 -2
- package/dist/esm/modules/appCatalog/ui/detail/CommunitySection.js +10 -4
- package/dist/esm/modules/appCatalog/ui/detail/CommunitySection.js.map +1 -1
- package/dist/esm/modules/appCatalog/ui/detail/communityDraft.d.ts +12 -0
- package/dist/esm/modules/appCatalog/ui/detail/communityDraft.js +4 -0
- package/dist/esm/modules/appCatalog/ui/detail/communityDraft.js.map +1 -1
- package/dist/esm/modules/appCatalog/ui/detail/composeComments.js +1 -0
- package/dist/esm/modules/appCatalog/ui/detail/composeComments.js.map +1 -1
- package/dist/esm/modules/appCatalog/ui/detail/useCommunityToolCount.d.ts +6 -0
- package/dist/esm/modules/appCatalog/ui/detail/useCommunityToolCount.js +16 -0
- package/dist/esm/modules/appCatalog/ui/detail/useCommunityToolCount.js.map +1 -0
- package/dist/esm/modules/appCatalog/ui/layout/AppCatalogLayout.js +2 -2
- package/dist/esm/modules/appCatalog/ui/layout/AppCatalogLayout.js.map +1 -1
- package/dist/esm/modules/auth/AuthContext.js +7 -3
- package/dist/esm/modules/auth/AuthContext.js.map +1 -1
- package/dist/esm/modules/auth/ui/LoginModal.js +16 -8
- package/dist/esm/modules/auth/ui/LoginModal.js.map +1 -1
- package/dist/esm/modules/communityTools/likedBy.d.ts +8 -0
- package/dist/esm/modules/communityTools/likedBy.js +23 -0
- package/dist/esm/modules/communityTools/likedBy.js.map +1 -0
- package/dist/esm/modules/communityTools/timeAgo.d.ts +2 -0
- package/dist/esm/modules/communityTools/timeAgo.js +18 -0
- package/dist/esm/modules/communityTools/timeAgo.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/CardScreenshot.d.ts +13 -0
- package/dist/esm/modules/communityTools/ui/CardScreenshot.js +112 -0
- package/dist/esm/modules/communityTools/ui/CardScreenshot.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/CardTitleBlock.d.ts +8 -0
- package/dist/esm/modules/communityTools/ui/CardTitleBlock.js +59 -0
- package/dist/esm/modules/communityTools/ui/CardTitleBlock.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/CommunityPage.d.ts +12 -0
- package/dist/esm/modules/communityTools/ui/CommunityPage.js +547 -0
- package/dist/esm/modules/communityTools/ui/CommunityPage.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/FeedRow.d.ts +42 -0
- package/dist/esm/modules/communityTools/ui/FeedRow.js +260 -0
- package/dist/esm/modules/communityTools/ui/FeedRow.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/FeedSortControl.d.ts +17 -0
- package/dist/esm/modules/communityTools/ui/FeedSortControl.js +84 -0
- package/dist/esm/modules/communityTools/ui/FeedSortControl.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/LifecycleBadge.d.ts +7 -0
- package/dist/esm/modules/communityTools/ui/LifecycleBadge.js +50 -0
- package/dist/esm/modules/communityTools/ui/LifecycleBadge.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/LikeButton.d.ts +9 -0
- package/dist/esm/modules/communityTools/ui/LikeButton.js +56 -0
- package/dist/esm/modules/communityTools/ui/LikeButton.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/MarginPreview.d.ts +18 -0
- package/dist/esm/modules/communityTools/ui/MarginPreview.js +115 -0
- package/dist/esm/modules/communityTools/ui/MarginPreview.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/MyToolsShelf.d.ts +12 -0
- package/dist/esm/modules/communityTools/ui/MyToolsShelf.js +88 -0
- package/dist/esm/modules/communityTools/ui/MyToolsShelf.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/OwnerPicker.d.ts +56 -0
- package/dist/esm/modules/communityTools/ui/OwnerPicker.js +245 -0
- package/dist/esm/modules/communityTools/ui/OwnerPicker.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/PinButton.d.ts +14 -0
- package/dist/esm/modules/communityTools/ui/PinButton.js +72 -0
- package/dist/esm/modules/communityTools/ui/PinButton.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/ShelfTile.d.ts +13 -0
- package/dist/esm/modules/communityTools/ui/ShelfTile.js +81 -0
- package/dist/esm/modules/communityTools/ui/ShelfTile.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/TagPicker.d.ts +21 -0
- package/dist/esm/modules/communityTools/ui/TagPicker.js +87 -0
- package/dist/esm/modules/communityTools/ui/TagPicker.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/TagRow.d.ts +22 -0
- package/dist/esm/modules/communityTools/ui/TagRow.js +92 -0
- package/dist/esm/modules/communityTools/ui/TagRow.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/Toast.d.ts +19 -0
- package/dist/esm/modules/communityTools/ui/Toast.js +87 -0
- package/dist/esm/modules/communityTools/ui/Toast.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/ToolCard.d.ts +22 -0
- package/dist/esm/modules/communityTools/ui/ToolCard.js +467 -0
- package/dist/esm/modules/communityTools/ui/ToolCard.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/ToolFormDialog.d.ts +32 -0
- package/dist/esm/modules/communityTools/ui/ToolFormDialog.js +765 -0
- package/dist/esm/modules/communityTools/ui/ToolFormDialog.js.map +1 -0
- package/dist/esm/modules/communityTools/ui/ToolSearch.d.ts +15 -0
- package/dist/esm/modules/communityTools/ui/ToolSearch.js +92 -0
- package/dist/esm/modules/communityTools/ui/ToolSearch.js.map +1 -0
- package/dist/esm/modules/communityTools/useCommunityTools.d.ts +157 -0
- package/dist/esm/modules/communityTools/useCommunityTools.js +122 -0
- package/dist/esm/modules/communityTools/useCommunityTools.js.map +1 -0
- package/dist/esm/modules/communityTools/useCommunityToolsConfig.d.ts +10 -0
- package/dist/esm/modules/communityTools/useCommunityToolsConfig.js +20 -0
- package/dist/esm/modules/communityTools/useCommunityToolsConfig.js.map +1 -0
- package/dist/esm/modules/communityTools/useTimeUp.d.ts +5 -0
- package/dist/esm/modules/communityTools/useTimeUp.js +13 -0
- package/dist/esm/modules/communityTools/useTimeUp.js.map +1 -0
- package/dist/esm/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/schemas.js +2 -2
- package/dist/esm/node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/core/schemas.js +1 -1
- package/dist/esm/routeTree.gen.d.ts +96 -3
- package/dist/esm/routeTree.gen.js +19 -0
- package/dist/esm/routeTree.gen.js.map +1 -1
- package/dist/esm/routes/_layout/community.$slug.d.ts +22 -0
- package/dist/esm/routes/_layout/community._slug.js +10 -0
- package/dist/esm/routes/_layout/community._slug.js.map +1 -0
- package/dist/esm/routes/_layout/community.d.ts +23 -0
- package/dist/esm/routes/_layout/community.js +71 -0
- package/dist/esm/routes/_layout/community.js.map +1 -0
- package/dist/esm/ui/components/header/Header.js +7 -3
- package/dist/esm/ui/components/header/Header.js.map +1 -1
- package/dist/esm/util/highlightMatches.d.ts +2 -0
- package/dist/esm/util/highlightMatches.js +32 -0
- package/dist/esm/util/highlightMatches.js.map +1 -0
- package/dist/index.css +6 -0
- package/package.json +5 -5
- package/src/__tests__/modules/appCatalog/ui/catalog/AppDetailPanel.appSwitch.test.tsx +3 -0
- package/src/__tests__/modules/appCatalog/ui/catalog/AppDetailPanel.enter.test.tsx +3 -0
- package/src/__tests__/modules/appCatalog/ui/detail/AppDetails.background.test.tsx +3 -0
- package/src/__tests__/modules/appCatalog/ui/detail/AppDetails.behindThisCard.test.tsx +4 -0
- package/src/__tests__/modules/appCatalog/ui/detail/AppDetails.doorAndTabs.test.tsx +3 -0
- package/src/__tests__/modules/appCatalog/ui/detail/AppDetails.escape.test.tsx +3 -0
- package/src/__tests__/modules/appCatalog/ui/detail/AppDetails.knowMore.test.tsx +3 -0
- package/src/__tests__/modules/appCatalog/ui/detail/AppDetails.sectionOrder.test.tsx +3 -0
- package/src/__tests__/modules/appCatalog/ui/detail/AppDetails.subResourceTab.test.tsx +3 -0
- package/src/__tests__/modules/appCatalog/ui/detail/AppDetails.tags.test.tsx +3 -0
- package/src/__tests__/modules/appCatalog/ui/detail/CommunitySection.feed.test.tsx +10 -3
- package/src/__tests__/modules/appCatalog/ui/detail/CommunitySection.help.test.tsx +4 -1
- package/src/__tests__/modules/appCatalog/ui/detail/CommunitySection.input.test.tsx +12 -2
- package/src/__tests__/modules/appCatalog/ui/detail/composeComments.test.ts +1 -0
- package/src/__tests__/modules/auth/AuthContext.test.tsx +55 -0
- package/src/__tests__/modules/communityTools/likedBy.test.ts +45 -0
- package/src/__tests__/modules/communityTools/timeAgo.test.ts +28 -0
- package/src/__tests__/modules/communityTools/useTimeUp.test.ts +31 -0
- package/src/__tests__/ui/components/header/Header.login.test.tsx +4 -4
- package/src/api/infra/trpc.ts +2 -0
- package/src/index.css +6 -0
- package/src/modules/appCatalog/ui/catalog/AppDetailPanel.tsx +33 -176
- package/src/modules/appCatalog/ui/catalog/DetailDialogShell.tsx +199 -0
- package/src/modules/appCatalog/ui/components/ScreenshotGallery.tsx +2 -1
- package/src/modules/appCatalog/ui/components/SectionTabs.tsx +81 -0
- package/src/modules/appCatalog/ui/detail/AppDetails.tsx +17 -2
- package/src/modules/appCatalog/ui/detail/CommentsFeed.tsx +9 -4
- package/src/modules/appCatalog/ui/detail/CommentsHelp.tsx +6 -3
- package/src/modules/appCatalog/ui/detail/CommunityInput.tsx +15 -10
- package/src/modules/appCatalog/ui/detail/CommunitySection.tsx +10 -5
- package/src/modules/appCatalog/ui/detail/communityDraft.ts +16 -0
- package/src/modules/appCatalog/ui/detail/composeComments.ts +1 -0
- package/src/modules/appCatalog/ui/detail/useCommunityToolCount.ts +18 -0
- package/src/modules/appCatalog/ui/layout/AppCatalogLayout.tsx +2 -2
- package/src/modules/auth/AuthContext.tsx +9 -3
- package/src/modules/auth/ui/LoginModal.tsx +7 -2
- package/src/modules/communityTools/likedBy.ts +32 -0
- package/src/modules/communityTools/timeAgo.ts +16 -0
- package/src/modules/communityTools/ui/CardScreenshot.tsx +124 -0
- package/src/modules/communityTools/ui/CardTitleBlock.tsx +58 -0
- package/src/modules/communityTools/ui/CommunityPage.tsx +626 -0
- package/src/modules/communityTools/ui/FeedRow.tsx +310 -0
- package/src/modules/communityTools/ui/FeedSortControl.tsx +97 -0
- package/src/modules/communityTools/ui/LifecycleBadge.tsx +44 -0
- package/src/modules/communityTools/ui/LikeButton.tsx +56 -0
- package/src/modules/communityTools/ui/MarginPreview.tsx +143 -0
- package/src/modules/communityTools/ui/MyToolsShelf.tsx +112 -0
- package/src/modules/communityTools/ui/OwnerPicker.tsx +311 -0
- package/src/modules/communityTools/ui/PinButton.tsx +87 -0
- package/src/modules/communityTools/ui/ShelfTile.tsx +83 -0
- package/src/modules/communityTools/ui/TagPicker.tsx +118 -0
- package/src/modules/communityTools/ui/TagRow.tsx +118 -0
- package/src/modules/communityTools/ui/Toast.tsx +105 -0
- package/src/modules/communityTools/ui/ToolCard.tsx +519 -0
- package/src/modules/communityTools/ui/ToolFormDialog.tsx +922 -0
- package/src/modules/communityTools/ui/ToolSearch.tsx +111 -0
- package/src/modules/communityTools/useCommunityTools.ts +146 -0
- package/src/modules/communityTools/useCommunityToolsConfig.ts +26 -0
- package/src/modules/communityTools/useTimeUp.ts +14 -0
- package/src/routeTree.gen.ts +52 -0
- package/src/routes/_layout/community.$slug.tsx +7 -0
- package/src/routes/_layout/community.tsx +97 -0
- package/src/ui/components/header/Header.tsx +9 -3
- package/src/util/highlightMatches.tsx +34 -0
- package/dist/esm/modules/appCatalog/ui/components/ViewToggle.d.ts +0 -12
- package/dist/esm/modules/appCatalog/ui/components/ViewToggle.js +0 -56
- package/dist/esm/modules/appCatalog/ui/components/ViewToggle.js.map +0 -1
- package/src/modules/appCatalog/ui/components/ViewToggle.tsx +0 -59
|
@@ -3,7 +3,7 @@ import { $constructor, globalConfig, $ZodAsyncError, $ZodEncodeError, config } f
|
|
|
3
3
|
import { Doc } from "./doc.js";
|
|
4
4
|
import { safeParse, safeParseAsync } from "./parse.js";
|
|
5
5
|
import { string, datetime, date, time, duration, email, guid, uuid, emoji, nanoid, cuid, cuid2, ulid, xid, ksuid, ipv4, ipv6, cidrv4, cidrv6, base64, base64url, e164 } from "./regexes.js";
|
|
6
|
-
import { allowsEval, cached, isObject, esc,
|
|
6
|
+
import { allowsEval, cached, isObject, esc, getEnumValues, propertyKeyTypes, escapeRegex, defineLazy, cleanRegex, aborted, prefixIssues, optionalKeys, finalizeIssue, isPlainObject, issue } from "./util.js";
|
|
7
7
|
import { clone } from "./util.js";
|
|
8
8
|
import { version } from "./versions.js";
|
|
9
9
|
const $ZodType = /* @__PURE__ */ $constructor("$ZodType", (inst, def) => {
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Route as rootRouteImport } from './routes/__root.js';
|
|
2
2
|
import { Route as LayoutRouteImport } from './routes/_layout.js';
|
|
3
3
|
import { Route as LayoutIndexRouteImport } from './routes/_layout/index.js';
|
|
4
|
+
import { Route as LayoutCommunityRouteImport } from './routes/_layout/community.js';
|
|
4
5
|
import { Route as LayoutLoginRouteImport } from './routes/_layout/login.js';
|
|
5
6
|
import { Route as LayoutMcpRouteImport } from './routes/_layout/mcp.js';
|
|
6
7
|
import { Route as LayoutServiceDesksRouteImport } from './routes/_layout/service-desks.js';
|
|
7
8
|
import { Route as AuthCallbackRouteImport } from './routes/auth.callback';
|
|
8
9
|
import { Route as LayoutAppSlugRouteImport } from './routes/_layout/app.$slug';
|
|
10
|
+
import { Route as LayoutCommunitySlugRouteImport } from './routes/_layout/community.$slug';
|
|
9
11
|
import { Route as LayoutCatalogAppsIndexRouteImport } from './routes/_layout/catalog.apps.index';
|
|
10
12
|
import { Route as LayoutAppSlugSubSubSlugRouteImport } from './routes/_layout/app.$slug_.sub.$subSlug';
|
|
11
13
|
declare const LayoutRoute: import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/react-router').RootRoute<import('@tanstack/react-router').Register, undefined, import('.').AcRouterContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "", "/", "/_layout", "/_layout", undefined, import('@tanstack/router-core').ResolveParams<"">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
|
|
@@ -13,6 +15,28 @@ declare const LayoutIndexRoute: import('@tanstack/router-core').Route<import('@t
|
|
|
13
15
|
filterTag: import('zod').ZodOptional<import('zod').ZodString>;
|
|
14
16
|
q: import('zod').ZodOptional<import('zod').ZodString>;
|
|
15
17
|
}, import('zod/v4/core').$strip>, import('@tanstack/router-core').ResolveParams<"/">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
|
|
18
|
+
declare const LayoutCommunityRoute: import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/react-router').RootRoute<import('@tanstack/react-router').Register, undefined, import('.').AcRouterContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "", "/", "/_layout", "/_layout", undefined, import('@tanstack/router-core').ResolveParams<"">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/community", "/community", "/_layout/community", "/_layout/community", import('zod').ZodPipe<import('zod').ZodObject<{
|
|
19
|
+
tag: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodString>>;
|
|
20
|
+
sort: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodEnum<{
|
|
21
|
+
updated: "updated";
|
|
22
|
+
popular: "popular";
|
|
23
|
+
newest: "newest";
|
|
24
|
+
}>>>;
|
|
25
|
+
dir: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodEnum<{
|
|
26
|
+
asc: "asc";
|
|
27
|
+
}>>>;
|
|
28
|
+
window: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodString>>;
|
|
29
|
+
}, import('zod/v4/core').$strip>, import('zod').ZodTransform<{
|
|
30
|
+
sort: "updated" | "popular" | "newest" | undefined;
|
|
31
|
+
window: undefined;
|
|
32
|
+
tag?: string | undefined;
|
|
33
|
+
dir?: "asc" | undefined;
|
|
34
|
+
}, {
|
|
35
|
+
tag?: string | undefined;
|
|
36
|
+
sort?: "updated" | "popular" | "newest" | undefined;
|
|
37
|
+
dir?: "asc" | undefined;
|
|
38
|
+
window?: string | undefined;
|
|
39
|
+
}>>, import('@tanstack/router-core').ResolveParams<"/community">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
|
|
16
40
|
declare const LayoutLoginRoute: import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/react-router').RootRoute<import('@tanstack/react-router').Register, undefined, import('.').AcRouterContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "", "/", "/_layout", "/_layout", undefined, import('@tanstack/router-core').ResolveParams<"">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/login", "/login", "/_layout/login", "/_layout/login", undefined, import('@tanstack/router-core').ResolveParams<"/login">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
|
|
17
41
|
declare const LayoutMcpRoute: import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/react-router').RootRoute<import('@tanstack/react-router').Register, undefined, import('.').AcRouterContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "", "/", "/_layout", "/_layout", undefined, import('@tanstack/router-core').ResolveParams<"">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/mcp", "/mcp", "/_layout/mcp", "/_layout/mcp", undefined, import('@tanstack/router-core').ResolveParams<"/mcp">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
|
|
18
42
|
declare const LayoutServiceDesksRoute: import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/react-router').RootRoute<import('@tanstack/react-router').Register, undefined, import('.').AcRouterContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "", "/", "/_layout", "/_layout", undefined, import('@tanstack/router-core').ResolveParams<"">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/service-desks", "/service-desks", "/_layout/service-desks", "/_layout/service-desks", import('zod').ZodObject<{
|
|
@@ -29,6 +53,28 @@ declare const LayoutAppSlugRoute: import('@tanstack/router-core').Route<import('
|
|
|
29
53
|
sub: import('zod').ZodOptional<import('zod').ZodString>;
|
|
30
54
|
qj: import('zod').ZodOptional<import('zod').ZodString>;
|
|
31
55
|
}, import('zod/v4/core').$strip>, import('@tanstack/router-core').ResolveParams<"/app/$slug">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
|
|
56
|
+
declare const LayoutCommunitySlugRoute: import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/react-router').RootRoute<import('@tanstack/react-router').Register, undefined, import('.').AcRouterContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "", "/", "/_layout", "/_layout", undefined, import('@tanstack/router-core').ResolveParams<"">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/community", "/community", "/_layout/community", "/_layout/community", import('zod').ZodPipe<import('zod').ZodObject<{
|
|
57
|
+
tag: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodString>>;
|
|
58
|
+
sort: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodEnum<{
|
|
59
|
+
updated: "updated";
|
|
60
|
+
popular: "popular";
|
|
61
|
+
newest: "newest";
|
|
62
|
+
}>>>;
|
|
63
|
+
dir: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodEnum<{
|
|
64
|
+
asc: "asc";
|
|
65
|
+
}>>>;
|
|
66
|
+
window: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodString>>;
|
|
67
|
+
}, import('zod/v4/core').$strip>, import('zod').ZodTransform<{
|
|
68
|
+
sort: "updated" | "popular" | "newest" | undefined;
|
|
69
|
+
window: undefined;
|
|
70
|
+
tag?: string | undefined;
|
|
71
|
+
dir?: "asc" | undefined;
|
|
72
|
+
}, {
|
|
73
|
+
tag?: string | undefined;
|
|
74
|
+
sort?: "updated" | "popular" | "newest" | undefined;
|
|
75
|
+
dir?: "asc" | undefined;
|
|
76
|
+
window?: string | undefined;
|
|
77
|
+
}>>, import('@tanstack/router-core').ResolveParams<"/community">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/$slug", "/community/$slug", "/_layout/community/$slug", "/_layout/community/$slug", undefined, import('@tanstack/router-core').ResolveParams<"/$slug">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
|
|
32
78
|
declare const LayoutCatalogAppsIndexRoute: import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/react-router').RootRoute<import('@tanstack/react-router').Register, undefined, import('.').AcRouterContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "", "/", "/_layout", "/_layout", undefined, import('@tanstack/router-core').ResolveParams<"">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/catalog/apps", "/catalog/apps/", "/_layout/catalog/apps/", "/_layout/catalog/apps/", import('zod').ZodObject<{
|
|
33
79
|
app: import('zod').ZodOptional<import('zod').ZodString>;
|
|
34
80
|
q: import('zod').ZodOptional<import('zod').ZodString>;
|
|
@@ -43,42 +89,48 @@ declare const LayoutAppSlugSubSubSlugRoute: import('@tanstack/router-core').Rout
|
|
|
43
89
|
}, import('zod/v4/core').$strip>, import('@tanstack/router-core').ResolveParams<"/app/$slug/sub/$subSlug">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
|
|
44
90
|
export interface FileRoutesByFullPath {
|
|
45
91
|
'/': typeof LayoutIndexRoute;
|
|
92
|
+
'/community': typeof LayoutCommunityRouteWithChildren;
|
|
46
93
|
'/login': typeof LayoutLoginRoute;
|
|
47
94
|
'/mcp': typeof LayoutMcpRoute;
|
|
48
95
|
'/service-desks': typeof LayoutServiceDesksRoute;
|
|
49
96
|
'/auth/callback': typeof AuthCallbackRoute;
|
|
50
97
|
'/app/$slug': typeof LayoutAppSlugRoute;
|
|
98
|
+
'/community/$slug': typeof LayoutCommunitySlugRoute;
|
|
51
99
|
'/catalog/apps/': typeof LayoutCatalogAppsIndexRoute;
|
|
52
100
|
'/app/$slug/sub/$subSlug': typeof LayoutAppSlugSubSubSlugRoute;
|
|
53
101
|
}
|
|
54
102
|
export interface FileRoutesByTo {
|
|
103
|
+
'/community': typeof LayoutCommunityRouteWithChildren;
|
|
55
104
|
'/login': typeof LayoutLoginRoute;
|
|
56
105
|
'/mcp': typeof LayoutMcpRoute;
|
|
57
106
|
'/service-desks': typeof LayoutServiceDesksRoute;
|
|
58
107
|
'/auth/callback': typeof AuthCallbackRoute;
|
|
59
108
|
'/': typeof LayoutIndexRoute;
|
|
60
109
|
'/app/$slug': typeof LayoutAppSlugRoute;
|
|
110
|
+
'/community/$slug': typeof LayoutCommunitySlugRoute;
|
|
61
111
|
'/catalog/apps': typeof LayoutCatalogAppsIndexRoute;
|
|
62
112
|
'/app/$slug/sub/$subSlug': typeof LayoutAppSlugSubSubSlugRoute;
|
|
63
113
|
}
|
|
64
114
|
export interface FileRoutesById {
|
|
65
115
|
__root__: typeof rootRouteImport;
|
|
66
116
|
'/_layout': typeof LayoutRouteWithChildren;
|
|
117
|
+
'/_layout/community': typeof LayoutCommunityRouteWithChildren;
|
|
67
118
|
'/_layout/login': typeof LayoutLoginRoute;
|
|
68
119
|
'/_layout/mcp': typeof LayoutMcpRoute;
|
|
69
120
|
'/_layout/service-desks': typeof LayoutServiceDesksRoute;
|
|
70
121
|
'/auth/callback': typeof AuthCallbackRoute;
|
|
71
122
|
'/_layout/': typeof LayoutIndexRoute;
|
|
72
123
|
'/_layout/app/$slug': typeof LayoutAppSlugRoute;
|
|
124
|
+
'/_layout/community/$slug': typeof LayoutCommunitySlugRoute;
|
|
73
125
|
'/_layout/catalog/apps/': typeof LayoutCatalogAppsIndexRoute;
|
|
74
126
|
'/_layout/app/$slug_/sub/$subSlug': typeof LayoutAppSlugSubSubSlugRoute;
|
|
75
127
|
}
|
|
76
128
|
export interface FileRouteTypes {
|
|
77
129
|
fileRoutesByFullPath: FileRoutesByFullPath;
|
|
78
|
-
fullPaths: '/' | '/login' | '/mcp' | '/service-desks' | '/auth/callback' | '/app/$slug' | '/catalog/apps/' | '/app/$slug/sub/$subSlug';
|
|
130
|
+
fullPaths: '/' | '/community' | '/login' | '/mcp' | '/service-desks' | '/auth/callback' | '/app/$slug' | '/community/$slug' | '/catalog/apps/' | '/app/$slug/sub/$subSlug';
|
|
79
131
|
fileRoutesByTo: FileRoutesByTo;
|
|
80
|
-
to: '/login' | '/mcp' | '/service-desks' | '/auth/callback' | '/' | '/app/$slug' | '/catalog/apps' | '/app/$slug/sub/$subSlug';
|
|
81
|
-
id: '__root__' | '/_layout' | '/_layout/login' | '/_layout/mcp' | '/_layout/service-desks' | '/auth/callback' | '/_layout/' | '/_layout/app/$slug' | '/_layout/catalog/apps/' | '/_layout/app/$slug_/sub/$subSlug';
|
|
132
|
+
to: '/community' | '/login' | '/mcp' | '/service-desks' | '/auth/callback' | '/' | '/app/$slug' | '/community/$slug' | '/catalog/apps' | '/app/$slug/sub/$subSlug';
|
|
133
|
+
id: '__root__' | '/_layout' | '/_layout/community' | '/_layout/login' | '/_layout/mcp' | '/_layout/service-desks' | '/auth/callback' | '/_layout/' | '/_layout/app/$slug' | '/_layout/community/$slug' | '/_layout/catalog/apps/' | '/_layout/app/$slug_/sub/$subSlug';
|
|
82
134
|
fileRoutesById: FileRoutesById;
|
|
83
135
|
}
|
|
84
136
|
export interface RootRouteChildren {
|
|
@@ -101,6 +153,13 @@ declare module '@tanstack/react-router' {
|
|
|
101
153
|
preLoaderRoute: typeof LayoutIndexRouteImport;
|
|
102
154
|
parentRoute: typeof LayoutRoute;
|
|
103
155
|
};
|
|
156
|
+
'/_layout/community': {
|
|
157
|
+
id: '/_layout/community';
|
|
158
|
+
path: '/community';
|
|
159
|
+
fullPath: '/community';
|
|
160
|
+
preLoaderRoute: typeof LayoutCommunityRouteImport;
|
|
161
|
+
parentRoute: typeof LayoutRoute;
|
|
162
|
+
};
|
|
104
163
|
'/_layout/login': {
|
|
105
164
|
id: '/_layout/login';
|
|
106
165
|
path: '/login';
|
|
@@ -136,6 +195,13 @@ declare module '@tanstack/react-router' {
|
|
|
136
195
|
preLoaderRoute: typeof LayoutAppSlugRouteImport;
|
|
137
196
|
parentRoute: typeof LayoutRoute;
|
|
138
197
|
};
|
|
198
|
+
'/_layout/community/$slug': {
|
|
199
|
+
id: '/_layout/community/$slug';
|
|
200
|
+
path: '/$slug';
|
|
201
|
+
fullPath: '/community/$slug';
|
|
202
|
+
preLoaderRoute: typeof LayoutCommunitySlugRouteImport;
|
|
203
|
+
parentRoute: typeof LayoutCommunityRoute;
|
|
204
|
+
};
|
|
139
205
|
'/_layout/catalog/apps/': {
|
|
140
206
|
id: '/_layout/catalog/apps/';
|
|
141
207
|
path: '/catalog/apps';
|
|
@@ -152,7 +218,34 @@ declare module '@tanstack/react-router' {
|
|
|
152
218
|
};
|
|
153
219
|
}
|
|
154
220
|
}
|
|
221
|
+
interface LayoutCommunityRouteChildren {
|
|
222
|
+
LayoutCommunitySlugRoute: typeof LayoutCommunitySlugRoute;
|
|
223
|
+
}
|
|
224
|
+
declare const LayoutCommunityRouteChildren: LayoutCommunityRouteChildren;
|
|
225
|
+
declare const LayoutCommunityRouteWithChildren: import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/react-router').RootRoute<import('@tanstack/react-router').Register, undefined, import('.').AcRouterContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "", "/", "/_layout", "/_layout", undefined, import('@tanstack/router-core').ResolveParams<"">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/community", "/community", "/_layout/community", "/_layout/community", import('zod').ZodPipe<import('zod').ZodObject<{
|
|
226
|
+
tag: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodString>>;
|
|
227
|
+
sort: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodEnum<{
|
|
228
|
+
updated: "updated";
|
|
229
|
+
popular: "popular";
|
|
230
|
+
newest: "newest";
|
|
231
|
+
}>>>;
|
|
232
|
+
dir: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodEnum<{
|
|
233
|
+
asc: "asc";
|
|
234
|
+
}>>>;
|
|
235
|
+
window: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodString>>;
|
|
236
|
+
}, import('zod/v4/core').$strip>, import('zod').ZodTransform<{
|
|
237
|
+
sort: "updated" | "popular" | "newest" | undefined;
|
|
238
|
+
window: undefined;
|
|
239
|
+
tag?: string | undefined;
|
|
240
|
+
dir?: "asc" | undefined;
|
|
241
|
+
}, {
|
|
242
|
+
tag?: string | undefined;
|
|
243
|
+
sort?: "updated" | "popular" | "newest" | undefined;
|
|
244
|
+
dir?: "asc" | undefined;
|
|
245
|
+
window?: string | undefined;
|
|
246
|
+
}>>, import('@tanstack/router-core').ResolveParams<"/community">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, LayoutCommunityRouteChildren, unknown, unknown, unknown, undefined>;
|
|
155
247
|
interface LayoutRouteChildren {
|
|
248
|
+
LayoutCommunityRoute: typeof LayoutCommunityRouteWithChildren;
|
|
156
249
|
LayoutLoginRoute: typeof LayoutLoginRoute;
|
|
157
250
|
LayoutMcpRoute: typeof LayoutMcpRoute;
|
|
158
251
|
LayoutServiceDesksRoute: typeof LayoutServiceDesksRoute;
|
|
@@ -1,11 +1,13 @@
|
|
|
1
1
|
import { Route } from "./routes/__root.js";
|
|
2
2
|
import { Route as Route$2 } from "./routes/_layout.js";
|
|
3
3
|
import { Route as Route$6 } from "./routes/_layout/index.js";
|
|
4
|
+
import { Route as Route$a } from "./routes/_layout/community.js";
|
|
4
5
|
import { Route as Route$9 } from "./routes/_layout/login.js";
|
|
5
6
|
import { Route as Route$8 } from "./routes/_layout/mcp.js";
|
|
6
7
|
import { Route as Route$7 } from "./routes/_layout/service-desks.js";
|
|
7
8
|
import { Route as Route$1 } from "./routes/auth.callback.js";
|
|
8
9
|
import { Route as Route$5 } from "./routes/_layout/app._slug.js";
|
|
10
|
+
import { Route as Route$b } from "./routes/_layout/community._slug.js";
|
|
9
11
|
import { Route as Route$4 } from "./routes/_layout/catalog.apps.index.js";
|
|
10
12
|
import { Route as Route$3 } from "./routes/_layout/app._slug_.sub._subSlug.js";
|
|
11
13
|
const LayoutRoute = Route$2.update({
|
|
@@ -17,6 +19,11 @@ const LayoutIndexRoute = Route$6.update({
|
|
|
17
19
|
path: "/",
|
|
18
20
|
getParentRoute: () => LayoutRoute
|
|
19
21
|
});
|
|
22
|
+
const LayoutCommunityRoute = Route$a.update({
|
|
23
|
+
id: "/community",
|
|
24
|
+
path: "/community",
|
|
25
|
+
getParentRoute: () => LayoutRoute
|
|
26
|
+
});
|
|
20
27
|
const LayoutLoginRoute = Route$9.update({
|
|
21
28
|
id: "/login",
|
|
22
29
|
path: "/login",
|
|
@@ -42,6 +49,11 @@ const LayoutAppSlugRoute = Route$5.update({
|
|
|
42
49
|
path: "/app/$slug",
|
|
43
50
|
getParentRoute: () => LayoutRoute
|
|
44
51
|
});
|
|
52
|
+
const LayoutCommunitySlugRoute = Route$b.update({
|
|
53
|
+
id: "/$slug",
|
|
54
|
+
path: "/$slug",
|
|
55
|
+
getParentRoute: () => LayoutCommunityRoute
|
|
56
|
+
});
|
|
45
57
|
const LayoutCatalogAppsIndexRoute = Route$4.update({
|
|
46
58
|
id: "/catalog/apps/",
|
|
47
59
|
path: "/catalog/apps/",
|
|
@@ -52,7 +64,14 @@ const LayoutAppSlugSubSubSlugRoute = Route$3.update({
|
|
|
52
64
|
path: "/app/$slug/sub/$subSlug",
|
|
53
65
|
getParentRoute: () => LayoutRoute
|
|
54
66
|
});
|
|
67
|
+
const LayoutCommunityRouteChildren = {
|
|
68
|
+
LayoutCommunitySlugRoute
|
|
69
|
+
};
|
|
70
|
+
const LayoutCommunityRouteWithChildren = LayoutCommunityRoute._addFileChildren(
|
|
71
|
+
LayoutCommunityRouteChildren
|
|
72
|
+
);
|
|
55
73
|
const LayoutRouteChildren = {
|
|
74
|
+
LayoutCommunityRoute: LayoutCommunityRouteWithChildren,
|
|
56
75
|
LayoutLoginRoute,
|
|
57
76
|
LayoutMcpRoute,
|
|
58
77
|
LayoutServiceDesksRoute,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"routeTree.gen.js","sources":["../../src/routeTree.gen.ts"],"sourcesContent":["/* eslint-disable */\n\n// @ts-nocheck\n\n// noinspection JSUnusedGlobalSymbols\n\n// This file was automatically generated by TanStack Router.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nimport { Route as rootRouteImport } from './routes/__root'\nimport { Route as LayoutRouteImport } from './routes/_layout'\nimport { Route as LayoutIndexRouteImport } from './routes/_layout/index'\nimport { Route as LayoutLoginRouteImport } from './routes/_layout/login'\nimport { Route as LayoutMcpRouteImport } from './routes/_layout/mcp'\nimport { Route as LayoutServiceDesksRouteImport } from './routes/_layout/service-desks'\nimport { Route as AuthCallbackRouteImport } from './routes/auth.callback'\nimport { Route as LayoutAppSlugRouteImport } from './routes/_layout/app.$slug'\nimport { Route as LayoutCatalogAppsIndexRouteImport } from './routes/_layout/catalog.apps.index'\nimport { Route as LayoutAppSlugSubSubSlugRouteImport } from './routes/_layout/app.$slug_.sub.$subSlug'\n\nconst LayoutRoute = LayoutRouteImport.update({\n id: '/_layout',\n getParentRoute: () => rootRouteImport,\n} as any)\nconst LayoutIndexRoute = LayoutIndexRouteImport.update({\n id: '/',\n path: '/',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutLoginRoute = LayoutLoginRouteImport.update({\n id: '/login',\n path: '/login',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutMcpRoute = LayoutMcpRouteImport.update({\n id: '/mcp',\n path: '/mcp',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutServiceDesksRoute = LayoutServiceDesksRouteImport.update({\n id: '/service-desks',\n path: '/service-desks',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst AuthCallbackRoute = AuthCallbackRouteImport.update({\n id: '/auth/callback',\n path: '/auth/callback',\n getParentRoute: () => rootRouteImport,\n} as any)\nconst LayoutAppSlugRoute = LayoutAppSlugRouteImport.update({\n id: '/app/$slug',\n path: '/app/$slug',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutCatalogAppsIndexRoute = LayoutCatalogAppsIndexRouteImport.update({\n id: '/catalog/apps/',\n path: '/catalog/apps/',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutAppSlugSubSubSlugRoute = LayoutAppSlugSubSubSlugRouteImport.update({\n id: '/app/$slug_/sub/$subSlug',\n path: '/app/$slug/sub/$subSlug',\n getParentRoute: () => LayoutRoute,\n} as any)\n\nexport interface FileRoutesByFullPath {\n '/': typeof LayoutIndexRoute\n '/login': typeof LayoutLoginRoute\n '/mcp': typeof LayoutMcpRoute\n '/service-desks': typeof LayoutServiceDesksRoute\n '/auth/callback': typeof AuthCallbackRoute\n '/app/$slug': typeof LayoutAppSlugRoute\n '/catalog/apps/': typeof LayoutCatalogAppsIndexRoute\n '/app/$slug/sub/$subSlug': typeof LayoutAppSlugSubSubSlugRoute\n}\nexport interface FileRoutesByTo {\n '/login': typeof LayoutLoginRoute\n '/mcp': typeof LayoutMcpRoute\n '/service-desks': typeof LayoutServiceDesksRoute\n '/auth/callback': typeof AuthCallbackRoute\n '/': typeof LayoutIndexRoute\n '/app/$slug': typeof LayoutAppSlugRoute\n '/catalog/apps': typeof LayoutCatalogAppsIndexRoute\n '/app/$slug/sub/$subSlug': typeof LayoutAppSlugSubSubSlugRoute\n}\nexport interface FileRoutesById {\n __root__: typeof rootRouteImport\n '/_layout': typeof LayoutRouteWithChildren\n '/_layout/login': typeof LayoutLoginRoute\n '/_layout/mcp': typeof LayoutMcpRoute\n '/_layout/service-desks': typeof LayoutServiceDesksRoute\n '/auth/callback': typeof AuthCallbackRoute\n '/_layout/': typeof LayoutIndexRoute\n '/_layout/app/$slug': typeof LayoutAppSlugRoute\n '/_layout/catalog/apps/': typeof LayoutCatalogAppsIndexRoute\n '/_layout/app/$slug_/sub/$subSlug': typeof LayoutAppSlugSubSubSlugRoute\n}\nexport interface FileRouteTypes {\n fileRoutesByFullPath: FileRoutesByFullPath\n fullPaths:\n | '/'\n | '/login'\n | '/mcp'\n | '/service-desks'\n | '/auth/callback'\n | '/app/$slug'\n | '/catalog/apps/'\n | '/app/$slug/sub/$subSlug'\n fileRoutesByTo: FileRoutesByTo\n to:\n | '/login'\n | '/mcp'\n | '/service-desks'\n | '/auth/callback'\n | '/'\n | '/app/$slug'\n | '/catalog/apps'\n | '/app/$slug/sub/$subSlug'\n id:\n | '__root__'\n | '/_layout'\n | '/_layout/login'\n | '/_layout/mcp'\n | '/_layout/service-desks'\n | '/auth/callback'\n | '/_layout/'\n | '/_layout/app/$slug'\n | '/_layout/catalog/apps/'\n | '/_layout/app/$slug_/sub/$subSlug'\n fileRoutesById: FileRoutesById\n}\nexport interface RootRouteChildren {\n LayoutRoute: typeof LayoutRouteWithChildren\n AuthCallbackRoute: typeof AuthCallbackRoute\n}\n\ndeclare module '@tanstack/react-router' {\n interface FileRoutesByPath {\n '/_layout': {\n id: '/_layout'\n path: ''\n fullPath: '/'\n preLoaderRoute: typeof LayoutRouteImport\n parentRoute: typeof rootRouteImport\n }\n '/_layout/': {\n id: '/_layout/'\n path: '/'\n fullPath: '/'\n preLoaderRoute: typeof LayoutIndexRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/login': {\n id: '/_layout/login'\n path: '/login'\n fullPath: '/login'\n preLoaderRoute: typeof LayoutLoginRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/mcp': {\n id: '/_layout/mcp'\n path: '/mcp'\n fullPath: '/mcp'\n preLoaderRoute: typeof LayoutMcpRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/service-desks': {\n id: '/_layout/service-desks'\n path: '/service-desks'\n fullPath: '/service-desks'\n preLoaderRoute: typeof LayoutServiceDesksRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/auth/callback': {\n id: '/auth/callback'\n path: '/auth/callback'\n fullPath: '/auth/callback'\n preLoaderRoute: typeof AuthCallbackRouteImport\n parentRoute: typeof rootRouteImport\n }\n '/_layout/app/$slug': {\n id: '/_layout/app/$slug'\n path: '/app/$slug'\n fullPath: '/app/$slug'\n preLoaderRoute: typeof LayoutAppSlugRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/catalog/apps/': {\n id: '/_layout/catalog/apps/'\n path: '/catalog/apps'\n fullPath: '/catalog/apps/'\n preLoaderRoute: typeof LayoutCatalogAppsIndexRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/app/$slug_/sub/$subSlug': {\n id: '/_layout/app/$slug_/sub/$subSlug'\n path: '/app/$slug/sub/$subSlug'\n fullPath: '/app/$slug/sub/$subSlug'\n preLoaderRoute: typeof LayoutAppSlugSubSubSlugRouteImport\n parentRoute: typeof LayoutRoute\n }\n }\n}\n\ninterface LayoutRouteChildren {\n LayoutLoginRoute: typeof LayoutLoginRoute\n LayoutMcpRoute: typeof LayoutMcpRoute\n LayoutServiceDesksRoute: typeof LayoutServiceDesksRoute\n LayoutIndexRoute: typeof LayoutIndexRoute\n LayoutAppSlugRoute: typeof LayoutAppSlugRoute\n LayoutCatalogAppsIndexRoute: typeof LayoutCatalogAppsIndexRoute\n LayoutAppSlugSubSubSlugRoute: typeof LayoutAppSlugSubSubSlugRoute\n}\n\nconst LayoutRouteChildren: LayoutRouteChildren = {\n LayoutLoginRoute: LayoutLoginRoute,\n LayoutMcpRoute: LayoutMcpRoute,\n LayoutServiceDesksRoute: LayoutServiceDesksRoute,\n LayoutIndexRoute: LayoutIndexRoute,\n LayoutAppSlugRoute: LayoutAppSlugRoute,\n LayoutCatalogAppsIndexRoute: LayoutCatalogAppsIndexRoute,\n LayoutAppSlugSubSubSlugRoute: LayoutAppSlugSubSubSlugRoute,\n}\n\nconst LayoutRouteWithChildren =\n LayoutRoute._addFileChildren(LayoutRouteChildren)\n\nconst rootRouteChildren: RootRouteChildren = {\n LayoutRoute: LayoutRouteWithChildren,\n AuthCallbackRoute: AuthCallbackRoute,\n}\nexport const routeTree = rootRouteImport\n ._addFileChildren(rootRouteChildren)\n ._addFileTypes<FileRouteTypes>()\n"],"names":["LayoutRouteImport","rootRouteImport","LayoutIndexRouteImport","LayoutLoginRouteImport","LayoutMcpRouteImport","LayoutServiceDesksRouteImport","AuthCallbackRouteImport","LayoutAppSlugRouteImport","LayoutCatalogAppsIndexRouteImport","LayoutAppSlugSubSubSlugRouteImport"],"mappings":";;;;;;;;;;AAqBA,MAAM,cAAcA,QAAkB,OAAO;AAAA,EAC3C,IAAI;AAAA,EACJ,gBAAgB,MAAMC;AACxB,CAAQ;AACR,MAAM,mBAAmBC,QAAuB,OAAO;AAAA,EACrD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,mBAAmBC,QAAuB,OAAO;AAAA,EACrD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,iBAAiBC,QAAqB,OAAO;AAAA,EACjD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,0BAA0BC,QAA8B,OAAO;AAAA,EACnE,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,oBAAoBC,QAAwB,OAAO;AAAA,EACvD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAML;AACxB,CAAQ;AACR,MAAM,qBAAqBM,QAAyB,OAAO;AAAA,EACzD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,8BAA8BC,QAAkC,OAAO;AAAA,EAC3E,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,+BAA+BC,QAAmC,OAAO;AAAA,EAC7E,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AAuJR,MAAM,sBAA2C;AAAA,EAC/C;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,0BACJ,YAAY,iBAAiB,mBAAmB;AAElD,MAAM,oBAAuC;AAAA,EAC3C,aAAa;AAAA,EACb;AACF;AACO,MAAM,YAAYR,MACtB,iBAAiB,iBAAiB,EAClC,cAAA;"}
|
|
1
|
+
{"version":3,"file":"routeTree.gen.js","sources":["../../src/routeTree.gen.ts"],"sourcesContent":["/* eslint-disable */\n\n// @ts-nocheck\n\n// noinspection JSUnusedGlobalSymbols\n\n// This file was automatically generated by TanStack Router.\n// You should NOT make any changes in this file as it will be overwritten.\n// Additionally, you should also exclude this file from your linter and/or formatter to prevent it from being checked or modified.\n\nimport { Route as rootRouteImport } from './routes/__root'\nimport { Route as LayoutRouteImport } from './routes/_layout'\nimport { Route as LayoutIndexRouteImport } from './routes/_layout/index'\nimport { Route as LayoutCommunityRouteImport } from './routes/_layout/community'\nimport { Route as LayoutLoginRouteImport } from './routes/_layout/login'\nimport { Route as LayoutMcpRouteImport } from './routes/_layout/mcp'\nimport { Route as LayoutServiceDesksRouteImport } from './routes/_layout/service-desks'\nimport { Route as AuthCallbackRouteImport } from './routes/auth.callback'\nimport { Route as LayoutAppSlugRouteImport } from './routes/_layout/app.$slug'\nimport { Route as LayoutCommunitySlugRouteImport } from './routes/_layout/community.$slug'\nimport { Route as LayoutCatalogAppsIndexRouteImport } from './routes/_layout/catalog.apps.index'\nimport { Route as LayoutAppSlugSubSubSlugRouteImport } from './routes/_layout/app.$slug_.sub.$subSlug'\n\nconst LayoutRoute = LayoutRouteImport.update({\n id: '/_layout',\n getParentRoute: () => rootRouteImport,\n} as any)\nconst LayoutIndexRoute = LayoutIndexRouteImport.update({\n id: '/',\n path: '/',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutCommunityRoute = LayoutCommunityRouteImport.update({\n id: '/community',\n path: '/community',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutLoginRoute = LayoutLoginRouteImport.update({\n id: '/login',\n path: '/login',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutMcpRoute = LayoutMcpRouteImport.update({\n id: '/mcp',\n path: '/mcp',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutServiceDesksRoute = LayoutServiceDesksRouteImport.update({\n id: '/service-desks',\n path: '/service-desks',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst AuthCallbackRoute = AuthCallbackRouteImport.update({\n id: '/auth/callback',\n path: '/auth/callback',\n getParentRoute: () => rootRouteImport,\n} as any)\nconst LayoutAppSlugRoute = LayoutAppSlugRouteImport.update({\n id: '/app/$slug',\n path: '/app/$slug',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutCommunitySlugRoute = LayoutCommunitySlugRouteImport.update({\n id: '/$slug',\n path: '/$slug',\n getParentRoute: () => LayoutCommunityRoute,\n} as any)\nconst LayoutCatalogAppsIndexRoute = LayoutCatalogAppsIndexRouteImport.update({\n id: '/catalog/apps/',\n path: '/catalog/apps/',\n getParentRoute: () => LayoutRoute,\n} as any)\nconst LayoutAppSlugSubSubSlugRoute = LayoutAppSlugSubSubSlugRouteImport.update({\n id: '/app/$slug_/sub/$subSlug',\n path: '/app/$slug/sub/$subSlug',\n getParentRoute: () => LayoutRoute,\n} as any)\n\nexport interface FileRoutesByFullPath {\n '/': typeof LayoutIndexRoute\n '/community': typeof LayoutCommunityRouteWithChildren\n '/login': typeof LayoutLoginRoute\n '/mcp': typeof LayoutMcpRoute\n '/service-desks': typeof LayoutServiceDesksRoute\n '/auth/callback': typeof AuthCallbackRoute\n '/app/$slug': typeof LayoutAppSlugRoute\n '/community/$slug': typeof LayoutCommunitySlugRoute\n '/catalog/apps/': typeof LayoutCatalogAppsIndexRoute\n '/app/$slug/sub/$subSlug': typeof LayoutAppSlugSubSubSlugRoute\n}\nexport interface FileRoutesByTo {\n '/community': typeof LayoutCommunityRouteWithChildren\n '/login': typeof LayoutLoginRoute\n '/mcp': typeof LayoutMcpRoute\n '/service-desks': typeof LayoutServiceDesksRoute\n '/auth/callback': typeof AuthCallbackRoute\n '/': typeof LayoutIndexRoute\n '/app/$slug': typeof LayoutAppSlugRoute\n '/community/$slug': typeof LayoutCommunitySlugRoute\n '/catalog/apps': typeof LayoutCatalogAppsIndexRoute\n '/app/$slug/sub/$subSlug': typeof LayoutAppSlugSubSubSlugRoute\n}\nexport interface FileRoutesById {\n __root__: typeof rootRouteImport\n '/_layout': typeof LayoutRouteWithChildren\n '/_layout/community': typeof LayoutCommunityRouteWithChildren\n '/_layout/login': typeof LayoutLoginRoute\n '/_layout/mcp': typeof LayoutMcpRoute\n '/_layout/service-desks': typeof LayoutServiceDesksRoute\n '/auth/callback': typeof AuthCallbackRoute\n '/_layout/': typeof LayoutIndexRoute\n '/_layout/app/$slug': typeof LayoutAppSlugRoute\n '/_layout/community/$slug': typeof LayoutCommunitySlugRoute\n '/_layout/catalog/apps/': typeof LayoutCatalogAppsIndexRoute\n '/_layout/app/$slug_/sub/$subSlug': typeof LayoutAppSlugSubSubSlugRoute\n}\nexport interface FileRouteTypes {\n fileRoutesByFullPath: FileRoutesByFullPath\n fullPaths:\n | '/'\n | '/community'\n | '/login'\n | '/mcp'\n | '/service-desks'\n | '/auth/callback'\n | '/app/$slug'\n | '/community/$slug'\n | '/catalog/apps/'\n | '/app/$slug/sub/$subSlug'\n fileRoutesByTo: FileRoutesByTo\n to:\n | '/community'\n | '/login'\n | '/mcp'\n | '/service-desks'\n | '/auth/callback'\n | '/'\n | '/app/$slug'\n | '/community/$slug'\n | '/catalog/apps'\n | '/app/$slug/sub/$subSlug'\n id:\n | '__root__'\n | '/_layout'\n | '/_layout/community'\n | '/_layout/login'\n | '/_layout/mcp'\n | '/_layout/service-desks'\n | '/auth/callback'\n | '/_layout/'\n | '/_layout/app/$slug'\n | '/_layout/community/$slug'\n | '/_layout/catalog/apps/'\n | '/_layout/app/$slug_/sub/$subSlug'\n fileRoutesById: FileRoutesById\n}\nexport interface RootRouteChildren {\n LayoutRoute: typeof LayoutRouteWithChildren\n AuthCallbackRoute: typeof AuthCallbackRoute\n}\n\ndeclare module '@tanstack/react-router' {\n interface FileRoutesByPath {\n '/_layout': {\n id: '/_layout'\n path: ''\n fullPath: '/'\n preLoaderRoute: typeof LayoutRouteImport\n parentRoute: typeof rootRouteImport\n }\n '/_layout/': {\n id: '/_layout/'\n path: '/'\n fullPath: '/'\n preLoaderRoute: typeof LayoutIndexRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/community': {\n id: '/_layout/community'\n path: '/community'\n fullPath: '/community'\n preLoaderRoute: typeof LayoutCommunityRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/login': {\n id: '/_layout/login'\n path: '/login'\n fullPath: '/login'\n preLoaderRoute: typeof LayoutLoginRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/mcp': {\n id: '/_layout/mcp'\n path: '/mcp'\n fullPath: '/mcp'\n preLoaderRoute: typeof LayoutMcpRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/service-desks': {\n id: '/_layout/service-desks'\n path: '/service-desks'\n fullPath: '/service-desks'\n preLoaderRoute: typeof LayoutServiceDesksRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/auth/callback': {\n id: '/auth/callback'\n path: '/auth/callback'\n fullPath: '/auth/callback'\n preLoaderRoute: typeof AuthCallbackRouteImport\n parentRoute: typeof rootRouteImport\n }\n '/_layout/app/$slug': {\n id: '/_layout/app/$slug'\n path: '/app/$slug'\n fullPath: '/app/$slug'\n preLoaderRoute: typeof LayoutAppSlugRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/community/$slug': {\n id: '/_layout/community/$slug'\n path: '/$slug'\n fullPath: '/community/$slug'\n preLoaderRoute: typeof LayoutCommunitySlugRouteImport\n parentRoute: typeof LayoutCommunityRoute\n }\n '/_layout/catalog/apps/': {\n id: '/_layout/catalog/apps/'\n path: '/catalog/apps'\n fullPath: '/catalog/apps/'\n preLoaderRoute: typeof LayoutCatalogAppsIndexRouteImport\n parentRoute: typeof LayoutRoute\n }\n '/_layout/app/$slug_/sub/$subSlug': {\n id: '/_layout/app/$slug_/sub/$subSlug'\n path: '/app/$slug/sub/$subSlug'\n fullPath: '/app/$slug/sub/$subSlug'\n preLoaderRoute: typeof LayoutAppSlugSubSubSlugRouteImport\n parentRoute: typeof LayoutRoute\n }\n }\n}\n\ninterface LayoutCommunityRouteChildren {\n LayoutCommunitySlugRoute: typeof LayoutCommunitySlugRoute\n}\n\nconst LayoutCommunityRouteChildren: LayoutCommunityRouteChildren = {\n LayoutCommunitySlugRoute: LayoutCommunitySlugRoute,\n}\n\nconst LayoutCommunityRouteWithChildren = LayoutCommunityRoute._addFileChildren(\n LayoutCommunityRouteChildren,\n)\n\ninterface LayoutRouteChildren {\n LayoutCommunityRoute: typeof LayoutCommunityRouteWithChildren\n LayoutLoginRoute: typeof LayoutLoginRoute\n LayoutMcpRoute: typeof LayoutMcpRoute\n LayoutServiceDesksRoute: typeof LayoutServiceDesksRoute\n LayoutIndexRoute: typeof LayoutIndexRoute\n LayoutAppSlugRoute: typeof LayoutAppSlugRoute\n LayoutCatalogAppsIndexRoute: typeof LayoutCatalogAppsIndexRoute\n LayoutAppSlugSubSubSlugRoute: typeof LayoutAppSlugSubSubSlugRoute\n}\n\nconst LayoutRouteChildren: LayoutRouteChildren = {\n LayoutCommunityRoute: LayoutCommunityRouteWithChildren,\n LayoutLoginRoute: LayoutLoginRoute,\n LayoutMcpRoute: LayoutMcpRoute,\n LayoutServiceDesksRoute: LayoutServiceDesksRoute,\n LayoutIndexRoute: LayoutIndexRoute,\n LayoutAppSlugRoute: LayoutAppSlugRoute,\n LayoutCatalogAppsIndexRoute: LayoutCatalogAppsIndexRoute,\n LayoutAppSlugSubSubSlugRoute: LayoutAppSlugSubSubSlugRoute,\n}\n\nconst LayoutRouteWithChildren =\n LayoutRoute._addFileChildren(LayoutRouteChildren)\n\nconst rootRouteChildren: RootRouteChildren = {\n LayoutRoute: LayoutRouteWithChildren,\n AuthCallbackRoute: AuthCallbackRoute,\n}\nexport const routeTree = rootRouteImport\n ._addFileChildren(rootRouteChildren)\n ._addFileTypes<FileRouteTypes>()\n"],"names":["LayoutRouteImport","rootRouteImport","LayoutIndexRouteImport","LayoutCommunityRouteImport","LayoutLoginRouteImport","LayoutMcpRouteImport","LayoutServiceDesksRouteImport","AuthCallbackRouteImport","LayoutAppSlugRouteImport","LayoutCommunitySlugRouteImport","LayoutCatalogAppsIndexRouteImport","LayoutAppSlugSubSubSlugRouteImport"],"mappings":";;;;;;;;;;;;AAuBA,MAAM,cAAcA,QAAkB,OAAO;AAAA,EAC3C,IAAI;AAAA,EACJ,gBAAgB,MAAMC;AACxB,CAAQ;AACR,MAAM,mBAAmBC,QAAuB,OAAO;AAAA,EACrD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,uBAAuBC,QAA2B,OAAO;AAAA,EAC7D,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,mBAAmBC,QAAuB,OAAO;AAAA,EACrD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,iBAAiBC,QAAqB,OAAO;AAAA,EACjD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,0BAA0BC,QAA8B,OAAO;AAAA,EACnE,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,oBAAoBC,QAAwB,OAAO;AAAA,EACvD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAMN;AACxB,CAAQ;AACR,MAAM,qBAAqBO,QAAyB,OAAO;AAAA,EACzD,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,2BAA2BC,QAA+B,OAAO;AAAA,EACrE,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,8BAA8BC,QAAkC,OAAO;AAAA,EAC3E,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AACR,MAAM,+BAA+BC,QAAmC,OAAO;AAAA,EAC7E,IAAI;AAAA,EACJ,MAAM;AAAA,EACN,gBAAgB,MAAM;AACxB,CAAQ;AA2KR,MAAM,+BAA6D;AAAA,EACjE;AACF;AAEA,MAAM,mCAAmC,qBAAqB;AAAA,EAC5D;AACF;AAaA,MAAM,sBAA2C;AAAA,EAC/C,sBAAsB;AAAA,EACtB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACF;AAEA,MAAM,0BACJ,YAAY,iBAAiB,mBAAmB;AAElD,MAAM,oBAAuC;AAAA,EAC3C,aAAa;AAAA,EACb;AACF;AACO,MAAM,YAAYV,MACtB,iBAAiB,iBAAiB,EAClC,cAAA;"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
export declare const Route: import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/react-router').RootRoute<import('@tanstack/react-router').Register, undefined, import('../..').AcRouterContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "", "/", "/_layout", "/_layout", undefined, import('@tanstack/router-core').ResolveParams<"">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/community", "/community", "/_layout/community", "/_layout/community", import('zod').ZodPipe<import('zod').ZodObject<{
|
|
2
|
+
tag: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodString>>;
|
|
3
|
+
sort: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodEnum<{
|
|
4
|
+
updated: "updated";
|
|
5
|
+
popular: "popular";
|
|
6
|
+
newest: "newest";
|
|
7
|
+
}>>>;
|
|
8
|
+
dir: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodEnum<{
|
|
9
|
+
asc: "asc";
|
|
10
|
+
}>>>;
|
|
11
|
+
window: import('zod').ZodCatch<import('zod').ZodOptional<import('zod').ZodString>>;
|
|
12
|
+
}, import('zod/v4/core').$strip>, import('zod').ZodTransform<{
|
|
13
|
+
sort: "updated" | "popular" | "newest" | undefined;
|
|
14
|
+
window: undefined;
|
|
15
|
+
tag?: string | undefined;
|
|
16
|
+
dir?: "asc" | undefined;
|
|
17
|
+
}, {
|
|
18
|
+
tag?: string | undefined;
|
|
19
|
+
sort?: "updated" | "popular" | "newest" | undefined;
|
|
20
|
+
dir?: "asc" | undefined;
|
|
21
|
+
window?: string | undefined;
|
|
22
|
+
}>>, import('@tanstack/router-core').ResolveParams<"/community">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/$slug", "/community/$slug", "/_layout/community/$slug", "/_layout/community/$slug", undefined, import('@tanstack/router-core').ResolveParams<"/$slug">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { createFileRoute } from "@tanstack/react-router";
|
|
2
|
+
const Route = createFileRoute("/_layout/community/$slug")({
|
|
3
|
+
// Renders nothing: the parent `/community` route owns the page, so the list
|
|
4
|
+
// stays mounted (and keeps its scroll) under the card for this slug.
|
|
5
|
+
component: () => null
|
|
6
|
+
});
|
|
7
|
+
export {
|
|
8
|
+
Route
|
|
9
|
+
};
|
|
10
|
+
//# sourceMappingURL=community._slug.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community._slug.js","sources":["../../../../src/routes/_layout/community.$slug.tsx"],"sourcesContent":["import { createFileRoute } from '@tanstack/react-router'\n\nexport const Route = createFileRoute('/_layout/community/$slug')({\n // Renders nothing: the parent `/community` route owns the page, so the list\n // stays mounted (and keeps its scroll) under the card for this slug.\n component: () => null,\n})\n"],"names":[],"mappings":";AAEO,MAAM,QAAQ,gBAAgB,0BAA0B,EAAE;AAAA;AAAA;AAAA,EAG/D,WAAW,MAAM;AACnB,CAAC;"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
export declare const Route: import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/router-core').Route<import('@tanstack/react-router').Register, import('@tanstack/react-router').RootRoute<import('@tanstack/react-router').Register, undefined, import('../..').AcRouterContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "", "/", "/_layout", "/_layout", undefined, import('@tanstack/router-core').ResolveParams<"">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>, "/community", "/community", "/_layout/community", "/_layout/community", z.ZodPipe<z.ZodObject<{
|
|
3
|
+
tag: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
4
|
+
sort: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
|
|
5
|
+
updated: "updated";
|
|
6
|
+
popular: "popular";
|
|
7
|
+
newest: "newest";
|
|
8
|
+
}>>>;
|
|
9
|
+
dir: z.ZodCatch<z.ZodOptional<z.ZodEnum<{
|
|
10
|
+
asc: "asc";
|
|
11
|
+
}>>>;
|
|
12
|
+
window: z.ZodCatch<z.ZodOptional<z.ZodString>>;
|
|
13
|
+
}, z.core.$strip>, z.ZodTransform<{
|
|
14
|
+
sort: "updated" | "popular" | "newest" | undefined;
|
|
15
|
+
window: undefined;
|
|
16
|
+
tag?: string | undefined;
|
|
17
|
+
dir?: "asc" | undefined;
|
|
18
|
+
}, {
|
|
19
|
+
tag?: string | undefined;
|
|
20
|
+
sort?: "updated" | "popular" | "newest" | undefined;
|
|
21
|
+
dir?: "asc" | undefined;
|
|
22
|
+
window?: string | undefined;
|
|
23
|
+
}>>, import('@tanstack/router-core').ResolveParams<"/community">, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, import('@tanstack/router-core').AnyContext, {}, undefined, unknown, unknown, unknown, unknown, undefined>;
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
import { jsx, jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { createFileRoute, stripSearchParams, useParams, Outlet } from "@tanstack/react-router";
|
|
3
|
+
import { AppCatalogLayout } from "../../modules/appCatalog/ui/layout/AppCatalogLayout.js";
|
|
4
|
+
import { CommunityPage } from "../../modules/communityTools/ui/CommunityPage.js";
|
|
5
|
+
import { useCommunityToolsConfig } from "../../modules/communityTools/useCommunityToolsConfig.js";
|
|
6
|
+
import { NotFoundError } from "../../ui/error/NotFoundError.js";
|
|
7
|
+
import { TopLevelProvidersForErrors } from "../../ui/layout/TopLevelProvidersForErrors.js";
|
|
8
|
+
import { object, string, enum as _enum } from "../../node_modules/.pnpm/zod@4.3.5/node_modules/zod/v4/classic/schemas.js";
|
|
9
|
+
const LEGACY_WINDOW = {
|
|
10
|
+
newest: "newest",
|
|
11
|
+
month: "popular",
|
|
12
|
+
all: "popular"
|
|
13
|
+
};
|
|
14
|
+
const searchSchema = object({
|
|
15
|
+
/** `<kind>:<value>`, e.g. `topic:sandbox` or `app:order-service`. */
|
|
16
|
+
tag: string().optional().catch(void 0),
|
|
17
|
+
/** Most liked when absent. */
|
|
18
|
+
sort: _enum(["popular", "newest", "updated"]).optional().catch(void 0),
|
|
19
|
+
/** Descending when absent. */
|
|
20
|
+
dir: _enum(["asc"]).optional().catch(void 0),
|
|
21
|
+
/** The old window toggle: `newest` still means Newest; the param is dropped. */
|
|
22
|
+
window: string().optional().catch(void 0)
|
|
23
|
+
}).transform(({ window, ...search }) => ({
|
|
24
|
+
...search,
|
|
25
|
+
sort: search.sort ?? LEGACY_WINDOW[window ?? ""],
|
|
26
|
+
window: void 0
|
|
27
|
+
}));
|
|
28
|
+
const Route = createFileRoute("/_layout/community")({
|
|
29
|
+
component: RouteComponent,
|
|
30
|
+
validateSearch: searchSchema,
|
|
31
|
+
search: { middlewares: [stripSearchParams(["window"])] }
|
|
32
|
+
});
|
|
33
|
+
function RouteComponent() {
|
|
34
|
+
const { queryClient, trpcClient } = Route.useRouteContext();
|
|
35
|
+
const search = Route.useSearch();
|
|
36
|
+
const navigate = Route.useNavigate();
|
|
37
|
+
const { slug } = useParams({ strict: false });
|
|
38
|
+
const config = useCommunityToolsConfig({ queryClient, trpcClient });
|
|
39
|
+
const setSearch = (patch) => void (slug ? navigate({
|
|
40
|
+
to: "/community/$slug",
|
|
41
|
+
params: { slug },
|
|
42
|
+
search: (prev) => ({ ...prev, ...patch })
|
|
43
|
+
}) : navigate({
|
|
44
|
+
to: "/community",
|
|
45
|
+
search: (prev) => ({ ...prev, ...patch })
|
|
46
|
+
}));
|
|
47
|
+
if ((config == null ? void 0 : config.enabled) === false) {
|
|
48
|
+
return /* @__PURE__ */ jsx(TopLevelProvidersForErrors, { children: /* @__PURE__ */ jsx(NotFoundError, {}) });
|
|
49
|
+
}
|
|
50
|
+
return /* @__PURE__ */ jsxs(AppCatalogLayout, { queryClient, trpcClient, children: [
|
|
51
|
+
/* @__PURE__ */ jsx(
|
|
52
|
+
CommunityPage,
|
|
53
|
+
{
|
|
54
|
+
tag: search.tag,
|
|
55
|
+
sort: search.sort ?? "liked",
|
|
56
|
+
dir: search.dir ?? "desc",
|
|
57
|
+
cardSlug: slug,
|
|
58
|
+
onTagChange: (tag) => setSearch({ tag }),
|
|
59
|
+
onSortChange: (sort, dir) => setSearch({
|
|
60
|
+
sort: sort === "liked" ? void 0 : sort,
|
|
61
|
+
dir: dir === "asc" ? "asc" : void 0
|
|
62
|
+
})
|
|
63
|
+
}
|
|
64
|
+
),
|
|
65
|
+
/* @__PURE__ */ jsx(Outlet, {})
|
|
66
|
+
] });
|
|
67
|
+
}
|
|
68
|
+
export {
|
|
69
|
+
Route
|
|
70
|
+
};
|
|
71
|
+
//# sourceMappingURL=community.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"community.js","sources":["../../../../src/routes/_layout/community.tsx"],"sourcesContent":["import {\n Outlet,\n createFileRoute,\n stripSearchParams,\n useParams,\n} from '@tanstack/react-router'\nimport { z } from 'zod'\nimport { AppCatalogLayout } from '~/modules/appCatalog/ui/layout/AppCatalogLayout'\nimport { CommunityPage } from '~/modules/communityTools/ui/CommunityPage'\nimport { useCommunityToolsConfig } from '~/modules/communityTools/useCommunityToolsConfig'\nimport { NotFoundError } from '~/ui/error/NotFoundError'\nimport { TopLevelProvidersForErrors } from '~/ui/layout/TopLevelProvidersForErrors'\n\n// Each defaults to absent, so a plain /community link stays plain. A value that\n// does not parse reads as absent rather than failing the route.\n/** The old window toggle: Newest kept its name; both view counts are Popular now. */\nconst LEGACY_WINDOW: Record<string, 'popular' | 'newest' | undefined> = {\n newest: 'newest',\n month: 'popular',\n all: 'popular',\n}\n\nconst searchSchema = z\n .object({\n /** `<kind>:<value>`, e.g. `topic:sandbox` or `app:order-service`. */\n tag: z.string().optional().catch(undefined),\n /** Most liked when absent. */\n sort: z.enum(['popular', 'newest', 'updated']).optional().catch(undefined),\n /** Descending when absent. */\n dir: z.enum(['asc']).optional().catch(undefined),\n /** The old window toggle: `newest` still means Newest; the param is dropped. */\n window: z.string().optional().catch(undefined),\n })\n .transform(({ window, ...search }) => ({\n ...search,\n sort: search.sort ?? LEGACY_WINDOW[window ?? ''],\n window: undefined,\n }))\n\nexport const Route = createFileRoute('/_layout/community')({\n component: RouteComponent,\n validateSearch: searchSchema,\n search: { middlewares: [stripSearchParams(['window'])] },\n})\n\nfunction RouteComponent() {\n const { queryClient, trpcClient } = Route.useRouteContext()\n const search = Route.useSearch()\n const navigate = Route.useNavigate()\n // Set while a card is open: the child route's slug.\n const { slug } = useParams({ strict: false })\n // Read here, above the layout's providers, so a deployment with the feature\n // off answers a typed-in /community with the usual not-found page.\n const config = useCommunityToolsConfig({ queryClient, trpcClient })\n\n // A tag or sort change keeps an open card open: it navigates from the\n // current match, not from this parent route, which would drop the slug.\n const setSearch = (patch: Partial<typeof search>) =>\n void (slug\n ? navigate({\n to: '/community/$slug',\n params: { slug },\n search: (prev) => ({ ...prev, ...patch }),\n })\n : navigate({\n to: '/community',\n search: (prev) => ({ ...prev, ...patch }),\n }))\n\n if (config?.enabled === false) {\n return (\n <TopLevelProvidersForErrors>\n <NotFoundError />\n </TopLevelProvidersForErrors>\n )\n }\n\n return (\n <AppCatalogLayout queryClient={queryClient} trpcClient={trpcClient}>\n <CommunityPage\n tag={search.tag}\n sort={search.sort ?? 'liked'}\n dir={search.dir ?? 'desc'}\n cardSlug={slug}\n onTagChange={(tag) => setSearch({ tag })}\n onSortChange={(sort, dir) =>\n setSearch({\n sort: sort === 'liked' ? undefined : sort,\n dir: dir === 'asc' ? 'asc' : undefined,\n })\n }\n />\n {/* The card route renders nothing; the page above reads its slug. */}\n <Outlet />\n </AppCatalogLayout>\n )\n}\n"],"names":["z.object","z.string","z.enum"],"mappings":";;;;;;;;AAgBA,MAAM,gBAAkE;AAAA,EACtE,QAAQ;AAAA,EACR,OAAO;AAAA,EACP,KAAK;AACP;AAEA,MAAM,eAAeA,OACX;AAAA;AAAA,EAEN,KAAKC,OAAE,EAAS,SAAA,EAAW,MAAM,MAAS;AAAA;AAAA,EAE1C,MAAMC,MAAO,CAAC,WAAW,UAAU,SAAS,CAAC,EAAE,SAAA,EAAW,MAAM,MAAS;AAAA;AAAA,EAEzE,KAAKA,MAAO,CAAC,KAAK,CAAC,EAAE,SAAA,EAAW,MAAM,MAAS;AAAA;AAAA,EAE/C,QAAQD,OAAE,EAAS,SAAA,EAAW,MAAM,MAAS;AAC/C,CAAC,EACA,UAAU,CAAC,EAAE,QAAQ,GAAG,cAAc;AAAA,EACrC,GAAG;AAAA,EACH,MAAM,OAAO,QAAQ,cAAc,UAAU,EAAE;AAAA,EAC/C,QAAQ;AACV,EAAE;AAEG,MAAM,QAAQ,gBAAgB,oBAAoB,EAAE;AAAA,EACzD,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,QAAQ,EAAE,aAAa,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,EAAA;AACvD,CAAC;AAED,SAAS,iBAAiB;AACxB,QAAM,EAAE,aAAa,eAAe,MAAM,gBAAA;AAC1C,QAAM,SAAS,MAAM,UAAA;AACrB,QAAM,WAAW,MAAM,YAAA;AAEvB,QAAM,EAAE,KAAA,IAAS,UAAU,EAAE,QAAQ,OAAO;AAG5C,QAAM,SAAS,wBAAwB,EAAE,aAAa,YAAY;AAIlE,QAAM,YAAY,CAAC,UACjB,MAAM,OACF,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,QAAQ,EAAE,KAAA;AAAA,IACV,QAAQ,CAAC,UAAU,EAAE,GAAG,MAAM,GAAG,MAAA;AAAA,EAAM,CACxC,IACD,SAAS;AAAA,IACP,IAAI;AAAA,IACJ,QAAQ,CAAC,UAAU,EAAE,GAAG,MAAM,GAAG,MAAA;AAAA,EAAM,CACxC;AAEP,OAAI,iCAAQ,aAAY,OAAO;AAC7B,WACE,oBAAC,4BAAA,EACC,UAAA,oBAAC,eAAA,CAAA,CAAc,GACjB;AAAA,EAEJ;AAEA,SACE,qBAAC,kBAAA,EAAiB,aAA0B,YAC1C,UAAA;AAAA,IAAA;AAAA,MAAC;AAAA,MAAA;AAAA,QACC,KAAK,OAAO;AAAA,QACZ,MAAM,OAAO,QAAQ;AAAA,QACrB,KAAK,OAAO,OAAO;AAAA,QACnB,UAAU;AAAA,QACV,aAAa,CAAC,QAAQ,UAAU,EAAE,KAAK;AAAA,QACvC,cAAc,CAAC,MAAM,QACnB,UAAU;AAAA,UACR,MAAM,SAAS,UAAU,SAAY;AAAA,UACrC,KAAK,QAAQ,QAAQ,QAAQ;AAAA,QAAA,CAC9B;AAAA,MAAA;AAAA,IAAA;AAAA,wBAIJ,QAAA,CAAA,CAAO;AAAA,EAAA,GACV;AAEJ;"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsxs, jsx, Fragment } from "react/jsx-runtime";
|
|
2
2
|
import { Link } from "@tanstack/react-router";
|
|
3
3
|
import { useQuery } from "@tanstack/react-query";
|
|
4
|
-
import { LogOut, X } from "lucide-react";
|
|
4
|
+
import { Plug, LogOut, X } from "lucide-react";
|
|
5
5
|
import { use } from "react";
|
|
6
6
|
import SvgAppCatalog from "../../../assets/app-catalog.svg.js";
|
|
7
7
|
import { useTRPC } from "../../../api/infra/trpc.js";
|
|
@@ -145,9 +145,13 @@ function Header({ middle }) {
|
|
|
145
145
|
] }) }),
|
|
146
146
|
middle && /* @__PURE__ */ jsx("div", { className: "flex-1", children: middle }),
|
|
147
147
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-3 ml-auto", children: [
|
|
148
|
+
/* @__PURE__ */ jsx(Button, { variant: "outline", size: "sm", asChild: true, children: /* @__PURE__ */ jsxs(Link, { to: "/mcp", children: [
|
|
149
|
+
/* @__PURE__ */ jsx(Plug, {}),
|
|
150
|
+
"MCP"
|
|
151
|
+
] }) }),
|
|
148
152
|
/* @__PURE__ */ jsx(ThemeSwitcher, {}),
|
|
149
153
|
isLoading ? /* @__PURE__ */ jsx(Skeleton, { className: "w-8 h-8 rounded-full" }) : !isAuthenticated ? (
|
|
150
|
-
// The catalog is browsable without signing in;
|
|
154
|
+
// The catalog is browsable without signing in; Sign in is for the parts
|
|
151
155
|
// that need an identity (comments, admin). DEV Login is gated behind
|
|
152
156
|
// `devLoginEnabled`, so it never reaches a real deployment.
|
|
153
157
|
/* @__PURE__ */ jsxs("div", { className: "flex items-center gap-2", children: [
|
|
@@ -166,7 +170,7 @@ function Header({ middle }) {
|
|
|
166
170
|
type: "button",
|
|
167
171
|
onClick: handleLoginClick,
|
|
168
172
|
className: "text-sm font-medium text-muted-foreground hover:text-foreground cursor-pointer",
|
|
169
|
-
children: "
|
|
173
|
+
children: "Sign in"
|
|
170
174
|
}
|
|
171
175
|
)
|
|
172
176
|
] })
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Header.js","sources":["../../../../../src/ui/components/header/Header.tsx"],"sourcesContent":["import type {\n AppVersionInfo,\n VersionInfo,\n} from '@igstack/app-catalog-backend-core'\nimport { Link } from '@tanstack/react-router'\nimport { useQuery } from '@tanstack/react-query'\nimport { LogOut, X } from 'lucide-react'\nimport React, { use } from 'react'\nimport AppCatalogLogo from '~/assets/app-catalog.svg?react'\nimport { useTRPC } from '~/api/infra/trpc'\nimport { ThemeSwitcher } from '~/components/ThemeSwitcher'\nimport { AppCatalogContext } from '~/modules/appCatalog/context/AppCatalogContext'\nimport { AttributionFooter } from '~/modules/appCatalog/ui/catalog/AttributionFooter'\nimport {\n useAuth,\n useAuthActions,\n useIsAuthenticated,\n useUser,\n} from '~/modules/auth'\nimport { useAuthModal } from '~/modules/auth/AuthModalContext'\nimport { Button } from '~/ui/button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '~/ui/dropdown-menu'\nimport {\n Popover,\n PopoverClose,\n PopoverContent,\n PopoverTrigger,\n} from '~/ui/popover'\nimport { Skeleton } from '~/ui/skeleton'\n\nfunction ShaSuffix({ version }: { version: VersionInfo }) {\n if (!version.sha) return null\n if (version.shaUrl) {\n return (\n <>\n {' '}\n <a\n href={version.shaUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-muted-foreground hover:text-primary\"\n onClick={(e) => e.stopPropagation()}\n >\n ({version.sha})\n </a>\n </>\n )\n }\n return <span className=\"text-muted-foreground\"> ({version.sha})</span>\n}\n\nfunction VersionItem({\n label,\n version,\n}: {\n label: string\n version: VersionInfo\n}) {\n return (\n <div className=\"flex items-center justify-between gap-4 py-1\">\n <span className=\"text-xs text-muted-foreground\">{label}</span>\n <span className=\"text-sm font-medium text-right\">\n {version.url ? (\n <a\n href={version.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:text-primary/80 transition-colors\"\n onClick={(e) => e.stopPropagation()}\n >\n {version.displayName}\n </a>\n ) : (\n version.displayName\n )}\n <ShaSuffix version={version} />\n </span>\n </div>\n )\n}\n\nexport function VersionDisplay({ versions }: { versions: AppVersionInfo }) {\n const isLocal =\n versions.backend?.displayName === 'local' && !versions.coreVersion\n\n if (isLocal) {\n return (\n <span className=\"text-xs text-muted-foreground\" title=\"Local\">\n local\n </span>\n )\n }\n\n return (\n <div className=\"flex flex-col divide-y\">\n {versions.backend && (\n <VersionItem label=\"Pipeline\" version={versions.backend} />\n )}\n {versions.coreVersion && (\n <VersionItem label=\"Core\" version={versions.coreVersion} />\n )}\n {versions.frontend && (\n <VersionItem label=\"FE\" version={versions.frontend} />\n )}\n </div>\n )\n}\n\n/**\n * Version detail moved behind an on-demand popover (same click-to-reveal\n * pattern as PersonBadge's approver chips) instead of always-visible text —\n * keeps the header compact. Content is unchanged: same Pipeline/Core/FE\n * lines, links, and SHA suffix as before, just revealed on click.\n */\nexport function VersionPopover({ versions }: { versions: AppVersionInfo }) {\n const isLocal =\n versions.backend?.displayName === 'local' && !versions.coreVersion\n\n if (isLocal) {\n return (\n <span className=\"text-xs text-muted-foreground\" title=\"Local\">\n local\n </span>\n )\n }\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-mono leading-none text-muted-foreground hover:bg-primary/15 hover:text-primary transition-colors\"\n aria-label=\"Show version details\"\n title=\"Version details\"\n data-testid=\"version-info-trigger\"\n >\n {versions.backend?.displayName ?? '?'}\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-72 p-0 overflow-hidden\">\n <div className=\"flex items-center justify-between px-3 py-2 border-b bg-muted/40\">\n <span className=\"text-sm font-semibold\">Version details</span>\n <PopoverClose\n className=\"rounded p-1 text-muted-foreground hover:text-foreground hover:bg-muted transition-colors\"\n aria-label=\"Close\"\n >\n <X className=\"size-3.5\" />\n </PopoverClose>\n </div>\n <div className=\"px-3 py-1\">\n <VersionDisplay versions={versions} />\n </div>\n <AttributionFooter variant=\"popover\" />\n </PopoverContent>\n </Popover>\n )\n}\n\nexport interface HeaderProps {\n middle?: React.ReactNode\n}\n\nexport function Header({ middle }: HeaderProps) {\n const { isLoading } = useAuth()\n const isAuthenticated = useIsAuthenticated()\n const user = useUser()\n const { logout, devLogin } = useAuthActions()\n const { open: openLoginModal } = useAuthModal()\n const appCatalogContextMaybe = use(AppCatalogContext)\n const trpc = useTRPC()\n const { data: providersData } = useQuery(\n trpc.auth.getProviders.queryOptions(),\n )\n\n const handleLogout = async () => {\n try {\n await logout()\n } catch (error) {\n console.error('Logout failed:', error)\n }\n }\n\n const handleLoginClick = () => {\n // Preserve the current URL for redirect after login\n const currentUrl = window.location.pathname + window.location.search\n openLoginModal(currentUrl)\n }\n\n return (\n <div className=\"flex items-center mb-4 pb-4 gap-4 border-b\">\n <div className=\"flex items-center gap-4\">\n <div className=\"flex items-center gap-2\">\n <Link to=\"/\">\n <AppCatalogLogo className=\"h-16 w-16\" />\n </Link>\n <div className=\"flex flex-col items-start\">\n <Link to=\"/\" className=\"font-serif text-lg font-semibold\">\n App Catalog\n </Link>\n {appCatalogContextMaybe?.versions && (\n <VersionPopover versions={appCatalogContextMaybe.versions} />\n )}\n </div>\n </div>\n </div>\n {middle && <div className=\"flex-1\">{middle}</div>}\n <div className=\"flex items-center gap-3 ml-auto\">\n <ThemeSwitcher />\n {isLoading ? (\n <Skeleton className=\"w-8 h-8 rounded-full\" />\n ) : !isAuthenticated ? (\n // The catalog is browsable without signing in; Login is for the parts\n // that need an identity (comments, admin). DEV Login is gated behind\n // `devLoginEnabled`, so it never reaches a real deployment.\n <div className=\"flex items-center gap-2\">\n {providersData?.devLoginEnabled && (\n <button\n type=\"button\"\n onClick={devLogin}\n className=\"text-xs font-medium px-2 py-1 rounded bg-amber-500/20 text-amber-600 dark:text-amber-400 hover:bg-amber-500/30 border border-amber-500/30 cursor-pointer\"\n >\n DEV Login\n </button>\n )}\n <button\n type=\"button\"\n onClick={handleLoginClick}\n className=\"text-sm font-medium text-muted-foreground hover:text-foreground cursor-pointer\"\n >\n Login\n </button>\n </div>\n ) : (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-8 h-8 rounded-full p-0 hover:bg-accent hover:text-accent-foreground cursor-pointer\"\n aria-label={`User menu for ${user?.name || 'User'}`}\n data-testid=\"user-avatar-button\"\n >\n {user?.image ? (\n <img\n src={user.image}\n alt={user.name || 'User'}\n className=\"w-full h-full rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex items-center justify-center w-full h-full rounded-full bg-primary text-primary-foreground text-xs font-semibold\">\n {(user?.name || user?.email || '?').charAt(0).toUpperCase()}\n </div>\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-56\">\n <div className=\"px-2 py-3 flex items-center gap-3\">\n {user?.image ? (\n <img\n src={user.image}\n alt={user.name || 'User'}\n className=\"w-10 h-10 rounded-full object-cover shrink-0\"\n />\n ) : (\n <div className=\"flex items-center justify-center w-10 h-10 rounded-full bg-primary text-primary-foreground text-sm font-semibold shrink-0\">\n {(user?.name || user?.email || '?').charAt(0).toUpperCase()}\n </div>\n )}\n <div className=\"flex flex-col min-w-0\">\n <p className=\"text-xs text-muted-foreground truncate\">\n @{user?.email?.split('@')[0] || 'user'}\n </p>\n <p className=\"text-sm font-medium truncate\">\n {user?.name || 'User'}\n </p>\n </div>\n </div>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={handleLogout}>\n <LogOut className=\"h-4 w-4 mr-2\" />\n <span>Sign out</span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </div>\n )\n}\n"],"names":["AppCatalogLogo"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"Header.js","sources":["../../../../../src/ui/components/header/Header.tsx"],"sourcesContent":["import type {\n AppVersionInfo,\n VersionInfo,\n} from '@igstack/app-catalog-backend-core'\nimport { Link } from '@tanstack/react-router'\nimport { useQuery } from '@tanstack/react-query'\nimport { LogOut, Plug, X } from 'lucide-react'\nimport React, { use } from 'react'\nimport AppCatalogLogo from '~/assets/app-catalog.svg?react'\nimport { useTRPC } from '~/api/infra/trpc'\nimport { ThemeSwitcher } from '~/components/ThemeSwitcher'\nimport { AppCatalogContext } from '~/modules/appCatalog/context/AppCatalogContext'\nimport { AttributionFooter } from '~/modules/appCatalog/ui/catalog/AttributionFooter'\nimport {\n useAuth,\n useAuthActions,\n useIsAuthenticated,\n useUser,\n} from '~/modules/auth'\nimport { useAuthModal } from '~/modules/auth/AuthModalContext'\nimport { Button } from '~/ui/button'\nimport {\n DropdownMenu,\n DropdownMenuContent,\n DropdownMenuItem,\n DropdownMenuSeparator,\n DropdownMenuTrigger,\n} from '~/ui/dropdown-menu'\nimport {\n Popover,\n PopoverClose,\n PopoverContent,\n PopoverTrigger,\n} from '~/ui/popover'\nimport { Skeleton } from '~/ui/skeleton'\n\nfunction ShaSuffix({ version }: { version: VersionInfo }) {\n if (!version.sha) return null\n if (version.shaUrl) {\n return (\n <>\n {' '}\n <a\n href={version.shaUrl}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-muted-foreground hover:text-primary\"\n onClick={(e) => e.stopPropagation()}\n >\n ({version.sha})\n </a>\n </>\n )\n }\n return <span className=\"text-muted-foreground\"> ({version.sha})</span>\n}\n\nfunction VersionItem({\n label,\n version,\n}: {\n label: string\n version: VersionInfo\n}) {\n return (\n <div className=\"flex items-center justify-between gap-4 py-1\">\n <span className=\"text-xs text-muted-foreground\">{label}</span>\n <span className=\"text-sm font-medium text-right\">\n {version.url ? (\n <a\n href={version.url}\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n className=\"text-primary hover:text-primary/80 transition-colors\"\n onClick={(e) => e.stopPropagation()}\n >\n {version.displayName}\n </a>\n ) : (\n version.displayName\n )}\n <ShaSuffix version={version} />\n </span>\n </div>\n )\n}\n\nexport function VersionDisplay({ versions }: { versions: AppVersionInfo }) {\n const isLocal =\n versions.backend?.displayName === 'local' && !versions.coreVersion\n\n if (isLocal) {\n return (\n <span className=\"text-xs text-muted-foreground\" title=\"Local\">\n local\n </span>\n )\n }\n\n return (\n <div className=\"flex flex-col divide-y\">\n {versions.backend && (\n <VersionItem label=\"Pipeline\" version={versions.backend} />\n )}\n {versions.coreVersion && (\n <VersionItem label=\"Core\" version={versions.coreVersion} />\n )}\n {versions.frontend && (\n <VersionItem label=\"FE\" version={versions.frontend} />\n )}\n </div>\n )\n}\n\n/**\n * Version detail moved behind an on-demand popover (same click-to-reveal\n * pattern as PersonBadge's approver chips) instead of always-visible text —\n * keeps the header compact. Content is unchanged: same Pipeline/Core/FE\n * lines, links, and SHA suffix as before, just revealed on click.\n */\nexport function VersionPopover({ versions }: { versions: AppVersionInfo }) {\n const isLocal =\n versions.backend?.displayName === 'local' && !versions.coreVersion\n\n if (isLocal) {\n return (\n <span className=\"text-xs text-muted-foreground\" title=\"Local\">\n local\n </span>\n )\n }\n\n return (\n <Popover>\n <PopoverTrigger asChild>\n <button\n type=\"button\"\n className=\"inline-flex items-center gap-1 rounded-full bg-muted px-2 py-0.5 text-[10px] font-mono leading-none text-muted-foreground hover:bg-primary/15 hover:text-primary transition-colors\"\n aria-label=\"Show version details\"\n title=\"Version details\"\n data-testid=\"version-info-trigger\"\n >\n {versions.backend?.displayName ?? '?'}\n </button>\n </PopoverTrigger>\n <PopoverContent align=\"start\" className=\"w-72 p-0 overflow-hidden\">\n <div className=\"flex items-center justify-between px-3 py-2 border-b bg-muted/40\">\n <span className=\"text-sm font-semibold\">Version details</span>\n <PopoverClose\n className=\"rounded p-1 text-muted-foreground hover:text-foreground hover:bg-muted transition-colors\"\n aria-label=\"Close\"\n >\n <X className=\"size-3.5\" />\n </PopoverClose>\n </div>\n <div className=\"px-3 py-1\">\n <VersionDisplay versions={versions} />\n </div>\n <AttributionFooter variant=\"popover\" />\n </PopoverContent>\n </Popover>\n )\n}\n\nexport interface HeaderProps {\n middle?: React.ReactNode\n}\n\nexport function Header({ middle }: HeaderProps) {\n const { isLoading } = useAuth()\n const isAuthenticated = useIsAuthenticated()\n const user = useUser()\n const { logout, devLogin } = useAuthActions()\n const { open: openLoginModal } = useAuthModal()\n const appCatalogContextMaybe = use(AppCatalogContext)\n const trpc = useTRPC()\n const { data: providersData } = useQuery(\n trpc.auth.getProviders.queryOptions(),\n )\n\n const handleLogout = async () => {\n try {\n await logout()\n } catch (error) {\n console.error('Logout failed:', error)\n }\n }\n\n const handleLoginClick = () => {\n // Preserve the current URL for redirect after login\n const currentUrl = window.location.pathname + window.location.search\n openLoginModal(currentUrl)\n }\n\n return (\n <div className=\"flex items-center mb-4 pb-4 gap-4 border-b\">\n <div className=\"flex items-center gap-4\">\n <div className=\"flex items-center gap-2\">\n <Link to=\"/\">\n <AppCatalogLogo className=\"h-16 w-16\" />\n </Link>\n <div className=\"flex flex-col items-start\">\n <Link to=\"/\" className=\"font-serif text-lg font-semibold\">\n App Catalog\n </Link>\n {appCatalogContextMaybe?.versions && (\n <VersionPopover versions={appCatalogContextMaybe.versions} />\n )}\n </div>\n </div>\n </div>\n {middle && <div className=\"flex-1\">{middle}</div>}\n <div className=\"flex items-center gap-3 ml-auto\">\n <Button variant=\"outline\" size=\"sm\" asChild>\n <Link to=\"/mcp\">\n <Plug />\n MCP\n </Link>\n </Button>\n <ThemeSwitcher />\n {isLoading ? (\n <Skeleton className=\"w-8 h-8 rounded-full\" />\n ) : !isAuthenticated ? (\n // The catalog is browsable without signing in; Sign in is for the parts\n // that need an identity (comments, admin). DEV Login is gated behind\n // `devLoginEnabled`, so it never reaches a real deployment.\n <div className=\"flex items-center gap-2\">\n {providersData?.devLoginEnabled && (\n <button\n type=\"button\"\n onClick={devLogin}\n className=\"text-xs font-medium px-2 py-1 rounded bg-amber-500/20 text-amber-600 dark:text-amber-400 hover:bg-amber-500/30 border border-amber-500/30 cursor-pointer\"\n >\n DEV Login\n </button>\n )}\n <button\n type=\"button\"\n onClick={handleLoginClick}\n className=\"text-sm font-medium text-muted-foreground hover:text-foreground cursor-pointer\"\n >\n Sign in\n </button>\n </div>\n ) : (\n <DropdownMenu>\n <DropdownMenuTrigger asChild>\n <Button\n variant=\"ghost\"\n size=\"sm\"\n className=\"w-8 h-8 rounded-full p-0 hover:bg-accent hover:text-accent-foreground cursor-pointer\"\n aria-label={`User menu for ${user?.name || 'User'}`}\n data-testid=\"user-avatar-button\"\n >\n {user?.image ? (\n <img\n src={user.image}\n alt={user.name || 'User'}\n className=\"w-full h-full rounded-full object-cover\"\n />\n ) : (\n <div className=\"flex items-center justify-center w-full h-full rounded-full bg-primary text-primary-foreground text-xs font-semibold\">\n {(user?.name || user?.email || '?').charAt(0).toUpperCase()}\n </div>\n )}\n </Button>\n </DropdownMenuTrigger>\n <DropdownMenuContent align=\"end\" className=\"w-56\">\n <div className=\"px-2 py-3 flex items-center gap-3\">\n {user?.image ? (\n <img\n src={user.image}\n alt={user.name || 'User'}\n className=\"w-10 h-10 rounded-full object-cover shrink-0\"\n />\n ) : (\n <div className=\"flex items-center justify-center w-10 h-10 rounded-full bg-primary text-primary-foreground text-sm font-semibold shrink-0\">\n {(user?.name || user?.email || '?').charAt(0).toUpperCase()}\n </div>\n )}\n <div className=\"flex flex-col min-w-0\">\n <p className=\"text-xs text-muted-foreground truncate\">\n @{user?.email?.split('@')[0] || 'user'}\n </p>\n <p className=\"text-sm font-medium truncate\">\n {user?.name || 'User'}\n </p>\n </div>\n </div>\n <DropdownMenuSeparator />\n <DropdownMenuItem onClick={handleLogout}>\n <LogOut className=\"h-4 w-4 mr-2\" />\n <span>Sign out</span>\n </DropdownMenuItem>\n </DropdownMenuContent>\n </DropdownMenu>\n )}\n </div>\n </div>\n )\n}\n"],"names":["AppCatalogLogo"],"mappings":"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"}
|
|
@@ -1,2 +1,4 @@
|
|
|
1
1
|
import { default as React } from 'react';
|
|
2
2
|
export declare function highlightMatches(text: string, query: string): React.ReactNode;
|
|
3
|
+
/** Like `highlightMatches`, for several search words at once, in any order. */
|
|
4
|
+
export declare function highlightTokens(text: string, tokens: string[]): React.ReactNode;
|