@e-llm-studio/instant-learning 1.3.3 → 1.3.4
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/ILMarketplaceWrapper.js +3 -0
- package/dist/ILMarketplaceWrapper.js.map +1 -1
- package/dist/cjs/ILMarketplaceWrapper.js +3 -0
- package/dist/cjs/ILMarketplaceWrapper.js.map +1 -1
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/ChatComponent.js +2 -1
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/ChatComponent.js.map +1 -1
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/NormalChat.js +2 -1
- package/dist/cjs/features/IL-OTJ/_components/ChatComponents/NormalChat.js.map +1 -1
- package/dist/cjs/features/IL-marketplace/PromoteFlow/EnvironmentConfigurationModal.js +41 -4
- package/dist/cjs/features/IL-marketplace/PromoteFlow/EnvironmentConfigurationModal.js.map +1 -1
- package/dist/cjs/features/IL-marketplace/PromoteFlow/PromoteFlow.js +444 -169
- package/dist/cjs/features/IL-marketplace/PromoteFlow/PromoteFlow.js.map +1 -1
- package/dist/cjs/features/IL-marketplace/PromoteFlow/PromoteFlow.module.css.js +2 -2
- package/dist/cjs/features/IL-marketplace/PromoteFlow/promote-flow.api.js +19 -2
- package/dist/cjs/features/IL-marketplace/PromoteFlow/promote-flow.api.js.map +1 -1
- package/dist/cjs/features/IL-marketplace/PromoteFlow/promote-flow.store.js +7 -0
- package/dist/cjs/features/IL-marketplace/PromoteFlow/promote-flow.store.js.map +1 -1
- package/dist/cjs/features/InstantLearning/InstantLearning.js +1 -0
- package/dist/cjs/features/InstantLearning/InstantLearning.js.map +1 -1
- package/dist/cjs/features/InstantLearning/_components/ChatComponent.js +3 -1
- package/dist/cjs/features/InstantLearning/_components/ChatComponent.js.map +1 -1
- package/dist/cjs/features/InstantLearning/_components/ContextualChatComponent.js +3 -1
- package/dist/cjs/features/InstantLearning/_components/ContextualChatComponent.js.map +1 -1
- package/dist/features/IL-OTJ/_components/ChatComponents/ChatComponent.js +2 -1
- package/dist/features/IL-OTJ/_components/ChatComponents/ChatComponent.js.map +1 -1
- package/dist/features/IL-OTJ/_components/ChatComponents/NormalChat.js +2 -1
- package/dist/features/IL-OTJ/_components/ChatComponents/NormalChat.js.map +1 -1
- package/dist/features/IL-marketplace/PromoteFlow/EnvironmentConfigurationModal.js +41 -4
- package/dist/features/IL-marketplace/PromoteFlow/EnvironmentConfigurationModal.js.map +1 -1
- package/dist/features/IL-marketplace/PromoteFlow/PromoteFlow.js +446 -171
- package/dist/features/IL-marketplace/PromoteFlow/PromoteFlow.js.map +1 -1
- package/dist/features/IL-marketplace/PromoteFlow/PromoteFlow.module.css.js +2 -2
- package/dist/features/IL-marketplace/PromoteFlow/promote-flow.api.js +17 -3
- package/dist/features/IL-marketplace/PromoteFlow/promote-flow.api.js.map +1 -1
- package/dist/features/IL-marketplace/PromoteFlow/promote-flow.store.js +7 -0
- package/dist/features/IL-marketplace/PromoteFlow/promote-flow.store.js.map +1 -1
- package/dist/features/InstantLearning/InstantLearning.js +1 -0
- package/dist/features/InstantLearning/InstantLearning.js.map +1 -1
- package/dist/features/InstantLearning/_components/ChatComponent.js +3 -1
- package/dist/features/InstantLearning/_components/ChatComponent.js.map +1 -1
- package/dist/features/InstantLearning/_components/ContextualChatComponent.js +3 -1
- package/dist/features/InstantLearning/_components/ContextualChatComponent.js.map +1 -1
- package/dist/types/src/ILMarketplaceWrapper.d.ts.map +1 -1
- package/dist/types/src/features/IL-OTJ/_components/ChatComponents/ChatComponent.d.ts.map +1 -1
- package/dist/types/src/features/IL-OTJ/_components/ChatComponents/NormalChat.d.ts.map +1 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/EnvironmentConfigurationModal.d.ts.map +1 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/PromoteFlow.d.ts.map +1 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.api.d.ts +5 -2
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.api.d.ts.map +1 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.interfaces.d.ts +26 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.interfaces.d.ts.map +1 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.store.d.ts +3 -1
- package/dist/types/src/features/IL-marketplace/PromoteFlow/promote-flow.store.d.ts.map +1 -1
- package/dist/types/src/features/InstantLearning/InstantLearning.d.ts.map +1 -1
- package/dist/types/src/features/InstantLearning/_components/ChatComponent.d.ts.map +1 -1
- package/dist/types/src/features/InstantLearning/_components/ContextualChatComponent.d.ts.map +1 -1
- package/package.json +4 -4
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ILMarketplaceWrapper.js","sources":["../../src/ILMarketplaceWrapper.tsx"],"sourcesContent":["import {\n Archive,\n ArrowRight,\n BookOpen,\n Bookmark,\n Clock4,\n Compass,\n Folder,\n Heart,\n Layers,\n LayoutGrid,\n Library,\n Plus,\n ShoppingBag,\n Sparkles,\n Star,\n Users,\n} from \"lucide-react\";\nimport { useCallback, useEffect, useMemo, useRef, Fragment, useState, type ReactNode } from \"react\";\nimport { QueryClientProvider, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { Toast } from \"primereact/toast\";\nimport { BsFunnel } from \"react-icons/bs\";\nimport { LscGuidelineSection } from \"./features/IL-marketplace/types/add-context.types\";\nimport { GuidelineStatusActions, LscGuidelineClassNames, LscGuidelineLabels, LscGuidelineStyles } from \"./features/IL-marketplace/types\";\nimport type { MarketplaceEmptyStateConfig, MarketplaceEmptyStatesConfig, MarketplaceTabValueTypeConfig, MarketplaceValueTypeConfig } from \"./features/IL-marketplace/types\";\nimport { FileItem } from \"./features/IL-marketplace/types/file-item\";\nimport { GuidelineLibrary } from \"./features/IL-marketplace/components/GuidelineLibrary\";\nimport { GuidelineLibraryTab } from \"./features/IL-marketplace/components/GuidelineLibraryTab\";\nimport { GuidelineLibraryContent } from \"./features/IL-marketplace/components/GuidelineLibraryContent\";\nimport type { ExploreHighlightConfig, ExternalShareRbacConfig, GuidelineCardMetadataConfig } from \"./features/IL-marketplace/components/GuidelineLibraryCard\";\nimport { GuidelineFilterPanel } from \"./features/IL-marketplace/components/GuidelineFilterPanel\";\nimport { GuidelineTooltip } from \"./features/IL-marketplace/components/GuidelineTooltip\";\nimport { defaultFormatAddedOnLabel, getGuidelineTitle, mergeGuidelineLabels } from \"./features/IL-marketplace/utils\";\nimport { guidelineQueryClient } from \"./features/IL-marketplace/queryClient\";\nimport { initGuidelineRuntimeConfig } from \"./features/IL-marketplace/services/guideline.runtime.config\";\nimport { useDeleteGuidelineMutation } from \"./features/IL-marketplace/hooks/useDeleteGuidelineMutation\";\nimport type {\n NodeTypeConfig,\n ScopeTreeNode,\n TreeSectionConfig,\n} from \"./adapters/creativeWorkspaceAdapter\";\nimport cssStyles from \"./ILMarketplaceWrapper.module.css\";\nimport { useInRouterContext, useLocation, useNavigate } from \"react-router-dom\";\nimport {\n ContentTypesResponse,\n fetchContentTypes,\n fetchMarketplaceApprovers,\n fetchMarketplaceDomains,\n fetchMarketplaceInstances,\n fetchMarketplaceInstanceVersion,\n fetchMyKnowledgeBaseGuidelines,\n fetchSavedMarketplaceGuidelines,\n setMarketplaceUserTag,\n toggleVariantApi,\n updateInstancePublishStatus,\n MarketplaceDomainNode,\n MarketplaceDomainsResponse,\n MarketplaceInstancesResponse,\n} from \"./features/IL-marketplace/services/IL-marketplace.api\";\nimport AddScopeModalComponent from \"./features/LearningManagement/RuleContent/AddScopeModal\";\nimport { SuccessToastContent } from \"./features/LearningManagement/shared\";\nimport useAuthStore from \"./features/LearningManagement/store/useAuthStore\";\nimport { useExternalWorkflowStore } from \"./features/LearningManagement/store/useExternalWorkflowStore\";\nimport { useLearningTemplateStore } from \"./features/LearningManagement/store/useLearningTemplateStore\";\nimport { useLMSConfigStore } from \"./features/LearningManagement/store/useLMSConfigStore\";\nimport useEnvStore, { RbacConfig } from \"./features/LearningManagement/store/useEnvStore\";\nimport { useAppSecRolesStore } from \"./features/LearningManagement/store/useAppSecRolesStore\";\nimport { useGetAppSecRolesQuery } from \"./features/LearningManagement/queries/useApprovalQueries\";\nimport { fetchRBACConfig } from \"./features/IL-marketplace/services/instant-learning.api\";\nimport { FALLBACK_RBAC_CONFIG } from \"./features/IL-marketplace/constants\";\nimport { LearningManagementWrapper, PromoteFlow, PublishToMarketplaceComponent } from \"./features/IL-marketplace\";\nimport type { InstantLearningApiItem, PublishStepConfig } from \"./features/IL-marketplace\";\nimport type { MiddleDrawerOverrides } from \"./features/LearningManagement/types\";\nimport { AxiosRequestConfig } from \"axios\";\nimport { applyAxiosConfig } from \"./api/transport\";\nimport { ILMarketplaceThemeProvider, getILMarketplaceThemeStyles, type ILMarketplaceTheme } from \"./features/IL-marketplace/marketplaceTheme\";\nimport { MF_EVENTS, type ILMarketplaceConfig, type IMicroFrontendApi } from \"./features/IL-marketplace/utils/microfrontend\";\n\n// import { MF_EVENTS, type ILMarketplaceConfig, type IMicroFrontendApi } from \"./features/IL-marketplace/utils/microfrontend\";\nexport type { ILMarketplaceTheme } from \"./features/IL-marketplace/marketplaceTheme\";\nexport type { MarketplaceEmptyStateConfig, MarketplaceEmptyStatesConfig } from \"./features/IL-marketplace/types\";\n\nexport type { ILMarketplaceConfig, IMicroFrontendApi, SendILMarketplaceDataPayload } from \"./features/IL-marketplace/utils/microfrontend\";\nexport { MF_EVENTS }\n\nexport const IL_MARKETPLACE_TAB_ID = \"IL Marketplace\";\nexport const MY_KNOWLEDGE_BASES_TAB_ID = \"My_Knowledge_Bases\";\nexport const SAVED_TAB_ID = \"Saved\";\n\n\nexport const IL_MARKETPLACE_VIEW = {\n marketplace: IL_MARKETPLACE_TAB_ID,\n myKnowledgeBases: MY_KNOWLEDGE_BASES_TAB_ID,\n saved: SAVED_TAB_ID,\n publishing: \"publishing\",\n promote: \"promote\",\n} as const;\n\n/** Any of the known views, or a custom tab id from `guidelineSections`. */\nexport type ILMarketplaceView =\n | (typeof IL_MARKETPLACE_VIEW)[keyof typeof IL_MARKETPLACE_VIEW]\n | (string & {});\n\n/** Relative (no host prefix) route suffixes. `basePath` is prepended to these at runtime. */\nconst DEFAULT_TAB_ROUTES: Record<string, string> = {\n [IL_MARKETPLACE_TAB_ID]: \"/marketplace\",\n [MY_KNOWLEDGE_BASES_TAB_ID]: \"/marketplace/my-knowledge-base\",\n [SAVED_TAB_ID]: \"/marketplace/saved\",\n [IL_MARKETPLACE_VIEW.publishing]: \"/marketplace/publish\",\n [IL_MARKETPLACE_VIEW.promote]: \"/marketplace/promote\",\n};\n\nconst DEFAULT_GUIDELINE_SECTIONS: LscGuidelineSection[] = [\n {\n id: IL_MARKETPLACE_TAB_ID,\n title: \"IL Marketplace\",\n route: \"/marketplace\",\n isActive: true,\n icon: <BookOpen className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n showTreeSidebar: true,\n },\n {\n id: MY_KNOWLEDGE_BASES_TAB_ID,\n title: \"My Knowledge Bases\",\n route: \"/marketplace/my-knowledge-base\",\n icon: <ShoppingBag className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n },\n {\n id: SAVED_TAB_ID,\n title: \"Saved\",\n route: \"/marketplace/saved\",\n icon: <Heart className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n },\n {\n id: \"recentlyAccessed\",\n title: \"Recently Used\",\n icon: <Clock4 className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n isDisabled: true,\n description: \"Coming soon\",\n },\n];\n\n/** JSON uses stable icon names; JSX icon props remain supported for existing consumers. */\nconst MARKETPLACE_TAB_ICONS: Record<string, ReactNode> = {\n \"book-open\": <BookOpen className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n \"shopping-bag\": <ShoppingBag className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n heart: <Heart className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n \"clock-4\": <Clock4 className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n star: <Star className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n bookmark: <Bookmark className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n folder: <Folder className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n layers: <Layers className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n \"layout-grid\": <LayoutGrid className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n library: <Library className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n compass: <Compass className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n users: <Users className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n sparkles: <Sparkles className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n archive: <Archive className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n};\n\nconst REQUIRED_MARKETPLACE_TAB_IDS = new Set([IL_MARKETPLACE_TAB_ID, MY_KNOWLEDGE_BASES_TAB_ID]);\n\nconst normalizeMarketplaceTabId = (id: string) => {\n if (id === \"IL_Marketplace\") return IL_MARKETPLACE_TAB_ID;\n if (id === \"My Knowledge Bases\") return MY_KNOWLEDGE_BASES_TAB_ID;\n return id;\n};\n\nconst resolveJsonSections = (\n tabs: MarketplaceTabValueTypeConfig[] | undefined,\n legacySections: LscGuidelineSection[]\n): LscGuidelineSection[] | undefined => {\n if (!tabs) return undefined;\n\n const fallbackSections = new Map<string, LscGuidelineSection>(\n [...DEFAULT_GUIDELINE_SECTIONS, ...legacySections].map((section) => [section.id, section])\n );\n const includedIds = new Set<string>();\n const sections: LscGuidelineSection[] = tabs.map(({ icon, id, title, ...tab }) => {\n const normalizedId = normalizeMarketplaceTabId(id);\n const fallback = fallbackSections.get(normalizedId);\n includedIds.add(normalizedId);\n return {\n ...fallback,\n ...tab,\n id: normalizedId,\n title: title ?? fallback?.title ?? normalizedId,\n route: tab.route ?? fallback?.route ?? DEFAULT_TAB_ROUTES[normalizedId],\n icon: icon ? MARKETPLACE_TAB_ICONS[icon] ?? fallback?.icon : fallback?.icon,\n ...(REQUIRED_MARKETPLACE_TAB_IDS.has(normalizedId) ? { isDisabled: false } : {}),\n };\n });\n\n REQUIRED_MARKETPLACE_TAB_IDS.forEach((id) => {\n if (includedIds.has(id)) return;\n const fallback = fallbackSections.get(id);\n if (fallback) sections.push({ ...fallback, isDisabled: false });\n });\n\n return sections;\n};\n\n// const normalizeRoutePath = (path: string) => {\n// if (!path) return \"/\";\n// const withLeadingSlash = path.startsWith(\"/\") ? path : `/${path}`;\n// const trimmed = withLeadingSlash.replace(/\\/+$/, \"\");\n// return trimmed || \"/\";\n// };\nconst normalizeRoutePath = (path: string) => {\n if (!path) return \"/\";\n let decoded = path;\n try {\n decoded = decodeURIComponent(path);\n } catch {\n // malformed percent-encoding — fall back to the raw value rather than throwing\n }\n const withLeadingSlash = decoded.startsWith(\"/\") ? decoded : `/${decoded}`;\n const trimmed = withLeadingSlash.replace(/\\/+$/, \"\");\n return trimmed || \"/\";\n};\n/** Joins a base path and a relative route without producing doubled or missing slashes. */\n// const joinPath = (basePath: string, relativePath: string): string => {\n// const cleanBase = basePath ? basePath.replace(/\\/+$/, \"\") : \"\";\n// const cleanRelative = relativePath.startsWith(\"/\") ? relativePath : `/${relativePath}`;\n// return `${cleanBase}${cleanRelative}` || \"/\";\n// };\nconst joinPath = (basePath: string, relativePath: string): string => {\n const cleanBase = basePath ? basePath.replace(/\\/+$/, \"\") : \"\";\n const cleanRelative = relativePath.startsWith(\"/\") ? relativePath : `/${relativePath}`;\n\n // If the current path already starts with cleanBase, and cleanBase is non-trivial,\n // don't re-add it — this happens when basePath detection re-runs against a URL\n // that's already prefixed (e.g. after a remount mid-navigation).\n if (cleanBase && typeof window !== \"undefined\") {\n const currentPath = window.location.pathname;\n if (currentPath.startsWith(cleanBase + cleanRelative)) {\n return currentPath; // already there, don't re-append\n }\n }\n\n return `${cleanBase}${cleanRelative}` || \"/\";\n};\n/**\n * Safe wrapper around react-router's useNavigate: returns null instead of throwing when this\n * component is rendered outside a Router context, so the fallback (manual pushState) path can\n * be used instead. useInRouterContext() itself never throws, and a given mount point does not\n * toggle in/out of a Router context across renders, so this conditional hook call is safe here\n * even though it deviates from the strict rules-of-hooks lint rule.\n */\nfunction useSafeRouterNavigate() {\n const inRouterContext = useInRouterContext();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const navigate = inRouterContext ? useNavigate() : null;\n return navigate;\n}\n\n/** Safe wrapper around react-router's useLocation, mirroring useSafeRouterNavigate above. */\nfunction useSafeRouterLocation() {\n const inRouterContext = useInRouterContext();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const location = inRouterContext ? useLocation() : null;\n return location;\n}\n\n/**\n * Detects the host's URL prefix (e.g. \"/mode/Instant Learning Mode\") with NO prop needed from\n * the consumer, by comparing the CURRENT browser path against the relative route of whichever\n * tab is currently active.\n *\n * Example: current path is \"/mode/Instant Learning Mode/marketplace\", and we know the\n * IL_MARKETPLACE_TAB_ID's relative route is \"/marketplace\". Stripping that known suffix off the\n * end leaves \"/mode/Instant Learning Mode\" — the prefix. Whatever the consumer's mount depth or\n * structure, this works because it never tries to parse/guess the shape of the prefix itself; it\n * only ever removes a suffix it already knows for certain.\n *\n * Returns null if no known relative route matches as a suffix of the current path (e.g. the\n * consumer hasn't routed to this component's tabs yet) — callers should fall back to \"\" in that\n * case, or retry on next navigation.\n */\nconst detectBasePathFromCurrentUrl = (\n pathname: string,\n sections: LscGuidelineSection[]\n): string | null => {\n const normalizedCurrent = normalizeRoutePath(pathname);\n\n const relativeRoutes = sections\n .map((section) => section.route ?? DEFAULT_TAB_ROUTES[section.id])\n .filter((route): route is string => Boolean(route))\n .map(normalizeRoutePath)\n .sort((a, b) => b.length - a.length);\n\n for (const relativeRoute of relativeRoutes) {\n if (normalizedCurrent === relativeRoute) {\n return \"\"; // no prefix at all — mounted at router root\n }\n if (normalizedCurrent.endsWith(relativeRoute)) {\n return normalizedCurrent.slice(0, normalizedCurrent.length - relativeRoute.length);\n }\n }\n\n // Nothing matched: the host hasn't routed into any of this wrapper's own\n // sub-routes yet (e.g. it just mounted at the mode's bare root, \"/mode/<name>\",\n // with no \"/marketplace\" suffix). Treat the current path itself as the prefix —\n // whatever comes after it is entirely this wrapper's own routing from here on.\n return normalizedCurrent;\n};\n\nconst decodeJwtPayload = (token?: string): Record<string, any> | undefined => {\n if (!token) return undefined;\n try {\n const payload = token.split(\".\")[1];\n const normalized = payload.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return JSON.parse(atob(normalized));\n } catch {\n return undefined;\n }\n};\n\nconst toFileItem = (item: FileItem & { description?: string | null }): FileItem => {\n const { description, ...rest } = item;\n return {\n ...rest,\n is_legacy: false,\n instant_learning_description: rest.instant_learning_description ?? description ?? undefined,\n };\n};\n\nconst toFileItems = (response: MarketplaceInstancesResponse): FileItem[] => {\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to fetch guidelines\");\n }\n const result = (response.responseData?.data?.results ?? response.responseData?.data?.result ?? []) as unknown as (FileItem & { description?: string | null })[];\n return result.map(toFileItem);\n};\n\nconst toScopeTreeNode = (node: MarketplaceDomainNode): ScopeTreeNode => ({\n id: node.id,\n name: node.name,\n type: node.scope_type as ScopeTreeNode[\"type\"],\n metrics: {\n learningsCount: node.metrics?.learningsCount ?? 0,\n stationsCount: node.metrics?.stationsCount,\n },\n children: (node.children ?? []).map(toScopeTreeNode),\n});\n\nconst toDomainTree = (response: MarketplaceDomainsResponse): ScopeTreeNode | null => {\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to fetch marketplace domains\");\n }\n const node = response.responseData?.data?.data;\n return node ? toScopeTreeNode(node) : null;\n};\n\nconst TOPIC_FILTER_SECTION_ID = \"topic\";\n\ntype MarketplaceScopeNode = {\n id: string;\n name: string;\n children?: MarketplaceScopeNode[];\n};\n\n// rootScope has no default on purpose: without host copy the root keeps its previous state.\nconst DEFAULT_MARKETPLACE_EMPTY_STATES: Record<\n Exclude<keyof MarketplaceEmptyStatesConfig, \"rootScope\">,\n Required<MarketplaceEmptyStateConfig>\n> = {\n scopeWithChildren: {\n title: \"Welcome to the Marketplace\",\n description: \"Browse the categories on the left to discover published {learningTerm}.\",\n },\n leafScope: {\n title: \"No {learningTerm} found for {scope}\",\n description: \"There are no published {learningTerm} in this category yet.\",\n },\n};\n\nconst findScopeTreeNode = (node: MarketplaceScopeNode | null, id: string): MarketplaceScopeNode | null => {\n if (!node) return null;\n if (node.id === id) return node;\n\n for (const child of node.children ?? []) {\n const match = findScopeTreeNode(child, id);\n if (match) return match;\n }\n\n return null;\n};\n\nconst replaceMarketplacePlaceholders = (\n value: string,\n scopeName: string,\n learningTerm: string\n): string => value\n .replace(/\\{scope\\}/g, scopeName)\n .replace(/\\{learningTerm\\}/g, learningTerm);\n\nconst toPluralLearningTerm = (learningTerm: string): string =>\n learningTerm.toLocaleLowerCase().endsWith(\"s\") ? learningTerm : `${learningTerm}s`;\n\nconst cloneFilterSection = (section: GuidelineFilterSectionState): GuidelineFilterSectionState => ({\n ...section,\n options: section.options.map((option) => ({ ...option })),\n});\n\nconst clearFilterSection = (section: GuidelineFilterSectionState): GuidelineFilterSectionState => ({\n ...section,\n options: section.options.map((option: GuidelineFilterOptionState) => ({\n ...option,\n checked: false,\n })),\n});\n\nconst cloneFilterSections = (sections: GuidelineFilterSectionState[]): GuidelineFilterSectionState[] =>\n sections.map(cloneFilterSection);\n\nconst getSelectedOptionIds = (\n sections: GuidelineFilterSectionState[],\n sectionId: string\n): string[] =>\n sections.find((section) => section.id === sectionId)?.options\n .filter((option) => option.checked)\n .map((option) => option.id) ?? [];\n\nconst buildResolvedFilterSections = (\n definitions: GuidelineFilterSectionState[],\n currentSelections: GuidelineFilterSectionState[]\n): GuidelineFilterSectionState[] => {\n const selectionsBySectionId = new Map(currentSelections.map((section) => [section.id, section]));\n\n return definitions.map((definition) => {\n const currentSelection = selectionsBySectionId.get(definition.id);\n\n if (!currentSelection) {\n return cloneFilterSection(definition);\n }\n\n const checkedByOptionId = new Map(\n currentSelection.options.map((option) => [option.id, option.checked])\n );\n\n return {\n ...definition,\n options: definition.options.map((option) => ({\n ...option,\n checked: checkedByOptionId.get(option.id) ?? option.checked,\n })),\n };\n });\n};\n\nconst getTopicFilterSection = (\n response: ContentTypesResponse\n): GuidelineFilterSectionState | null => {\n const contentTypes = response.responseData?.data?.results ?? [];\n const topicsById = new Map<string, string>();\n\n for (const contentType of contentTypes) {\n if (contentType.topic_id && contentType.topic_title) {\n topicsById.set(contentType.topic_id, contentType.topic_title);\n }\n }\n\n if (!topicsById.size) return null;\n\n return {\n id: TOPIC_FILTER_SECTION_ID,\n title: \"Topic\",\n options: Array.from(topicsById, ([id, label]) => ({\n id,\n label,\n checked: false,\n })),\n };\n};\ntype MyKnowledgeBaseQueryParams = {\n content_mode_mapping_id: string;\n status?: string[];\n ownership?: string[];\n};\nexport type ILMarketplaceLabelsConfig = {\n testKnowledgebaseLabel?: string;\n emptyTitle?: string;\n emptyDescription?: string;\n searchPlaceholder?: string;\n searchEmptyTitle?: string;\n addKnowledgeBaseLabel?: string;\n addKnowledgeBaseDisabledTooltip?: string;\n /** Scope-aware empty copy used when no Marketplace instances are returned. */\n emptyStates?: MarketplaceEmptyStatesConfig;\n};\n\n/** Controls the optional Content Type and Topic metadata displayed on marketplace cards. */\nexport type ILMarketplaceCardMetadataConfig = GuidelineCardMetadataConfig;\n\nexport type GuidelineFilterSectionState = {\n id: string;\n title: string;\n singleSelect?: boolean;\n options: GuidelineFilterOptionState[];\n};\n\nexport type GuidelineFilterOptionState = {\n id: string;\n label: string;\n checked: boolean;\n disabled?: boolean;\n};\n\nexport type ILMarketplaceWrapperProps = {\n guidelineSections?: LscGuidelineSection[];\n guidelineFiles?: FileItem[];\n /** Fallback sidebar tree used until `applicationMappingId` resolves via the marketplace domain API. */\n treeSidebarData?: ScopeTreeNode;\n /** Legacy card/landing copy. Marketplace UI labels belong in `marketPlace.labels` JSON. */\n labels?: LscGuidelineLabels;\n isILMarketplace?: boolean;\n handleCardClickCallback?: (guideline: FileItem) => void;\n handleViewButtonCallback?: (guideline: FileItem) => void;\n handlePreviewButtonCallback?: (guideline: FileItem) => void;\n /** Pin tooltip messages keyed by `instant_learning_id`. */\n guidelinePinnedMessages?: Record<string, string>;\n /**\n * Status-driven primary button (Configure for `statusActions.configurableStatuses`,\n * Test Template otherwise). Applied only when `statusActions.modeName` is set; any\n * other mode keeps the existing `handleViewButtonCallback` behaviour.\n */\n statusActions?: GuidelineStatusActions<FileItem>;\n previewDisabledTooltip?: string;\n /**\n * Shows the publish icon on every library card and runs the built-in `PublishToMarketplaceComponent`\n * flow on click. Ignored when `handlePublishButtonCallback` is supplied.\n */\n enablePublishToMarketplace?: boolean;\n /**\n * Publish icon click, same contract as `handlePreviewButtonCallback`: supplying it both shows the\n * icon and replaces the built-in flow, so the host can render whatever it wants instead.\n */\n handlePublishButtonCallback?: (guideline: FileItem) => void;\n /** Step overrides for the built-in publish flow; defaults to `DEFAULT_PUBLISH_STEPS`. */\n publishSteps?: PublishStepConfig[];\n /**\n * Handler for \"View Template\" on the publish flow's Template Details step. Omit it and the action\n * is not rendered at all; provide it and the action appears, with the click doing nothing except\n * calling this — the flow opens no preview of its own.\n *\n * Receives the template as the publish flow fetched it, which is richer and fresher than the\n * card's `FileItem`, and is deliberately independent of `handlePreviewButtonCallback`.\n */\n handleViewTemplateCallback?: (template: Partial<InstantLearningApiItem>) => void;\n /** Promote button click; omit it to use the built-in Promote ILKB screen. */\n handlePromoteButtonCallback?: (guideline: FileItem) => void;\n /** Shows a Promote button beside Select and opens the built-in Promote ILKB screen by default. */\n enablePromoteFlow?: boolean;\n /**\n * Full header node for the built-in publish flow, for hosts that would rather hand one over than\n * render it themselves. Omit it to get the default back row.\n */\n renderPublishHeader?: (context: { guideline: FileItem; onBack: () => void }) => ReactNode;\n /** Called after the built-in publish flow is submitted, once the flow has closed. */\n onPublished?: (guideline: FileItem) => void;\n /**\n * Hands the host the built-in publish flow's \"Validate & proceed\" action (same one the Template\n * Details step's own button calls), so a host-rendered button outside this library\n */\n onValidateAndProceedReady?: (trigger: () => void) => void;\n /** Host-supplied delete handler for the library card's three-dot menu; the menu item is hidden when omitted. */\n onDeleteGuideline?: (guideline: FileItem) => void | Promise<void>;\n onApproveGuideline?: (guideline: FileItem) => void | Promise<void>;\n onRejectGuideline?: (guideline: FileItem) => void | Promise<void>;\n /** \"Create New Template\" click — the host opens its own TeachMePlugin from here. */\n onAddKnowledgeBase?: () => void;\n marketplaceLabels?: ILMarketplaceLabelsConfig;\n /**\n * Local `marketPlace` JSON override. Intended for hosts/playgrounds that already have the\n * value-type JSON in memory; it takes precedence over the fetched value-type configuration.\n */\n marketPlaceConfig?: MarketplaceValueTypeConfig;\n /** Content Type and Topic display settings for template cards. */\n cardMetadata?: ILMarketplaceCardMetadataConfig;\n fetchGuidelinesForTab?: (tabId: string) => Promise<FileItem[]>;\n applicationMappingId?: string;\n scopeId?: string;\n authToken?: string;\n baseUrl: string;\n /** Marketplace content-mode mapping UUID used to scope all marketplace data. */\n contentModeMappingId: string;\n userDetails: Record<string, any>;\n baseWebsocketUrl: string;\n assistantName: string;\n appsecRbacUrl: string;\n appsecBaseUrl: string;\n modeId?: string;\n /** Passed through to the built-in publish flow's TeachMePlugin `config`. Defaults to \"techolution\". */\n organizationName?: string;\n /** Passed through to the built-in publish flow's TeachMePlugin `config` as `BASE_APPMOD_URL`. */\n appmodUrl?: string;\n /** Passed through to the built-in publish flow's TeachMePlugin `config` as `CONFIG_MASTER_NAME`. */\n configMasterName?: string;\n /**\n * Overrides for the Learning Management scope tree on the IL Marketplace tab. Omitted fields keep the LMS defaults.\n */\n treeOverrides?: MiddleDrawerOverrides;\n /** Host-supplied class name overrides, merged over the wrapper's internal defaults (host keys win). */\n classNames?: LscGuidelineClassNames;\n /** Per-component inline style overrides for precise changes such as font size or font weight. */\n styles?: LscGuidelineStyles;\n /**\n * Scoped visual tokens for the complete marketplace experience, including Learning Management.\n * Omitted values preserve the current library appearance.\n */\n theme?: ILMarketplaceTheme;\n isShareEnabled?: boolean;\n /** Tab ids the share action is shown on; defaults to `[MY_KNOWLEDGE_BASES_TAB_ID]`. */\n shareEnabledTabIds?: string[];\n /** Statuses (lowercased) the share action is shown for; omit to allow sharing regardless of status. */\n shareableGuidelineStatuses?: string[];\n // RBAC config for external host sharing, if applicable. If omitted, external sharing is disabled.\n externalShareRbacConfig?: ExternalShareRbacConfig;\n /** Whether to display the dashboard button in the guideline library content. */\n showDashboardButton?: boolean;\n /** Callback function invoked when the dashboard button is clicked. */\n onDashboardClick?: () => void;\n\n /**\n * The URL prefix this wrapper is mounted under in the host app, e.g. `/mode/Instant Learning Mode`.\n * ALL tab routes (default or from `guidelineSections[].route`) are resolved as `basePath + route`\n * when navigating and when matching the active tab from the URL. Pass whatever prefix your router\n * uses to reach this component — this is the one thing that varies per consumer, so it is the one\n * thing consumers must supply explicitly rather than the wrapper trying to guess it.\n * Defaults to \"\" (mounted at the router root).\n *\n * IMPORTANT: this wrapper does NOT render its own Router. It must be mounted inside the host's\n * existing <BrowserRouter>/<Routes> tree (with a matching route registered for\n * `basePath + \"/marketplace/*\"`), so that `useNavigate()`/`useLocation()` resolve against the\n * same router instance the rest of the host app uses.\n */\n basePath?: string;\n exploreHighlightGuidelineIds?: string[];\n /** Label + styling applied to the explore/preview button for ids in `exploreHighlightGuidelineIds`. */\n exploreHighlightConfig?: ExploreHighlightConfig;\n axiosConfig?: AxiosRequestConfig;\n mfApi?: IMicroFrontendApi;\n config?: ILMarketplaceConfig;\n /**\n * Initial section for state-driven hosts. This is read when the wrapper mounts, allowing a\n * host to restore the tab it was on after temporarily rendering another view.\n */\n initialActiveTabId?: string;\n /** Called when the wrapper selects a valid marketplace section. */\n onTabChange?: (tabId: string) => void;\n disableRouting?: boolean;\n};\n// Stable reference so an omitted `shareEnabledTabIds` doesn't create a new array (and thus a new\n// `isShareEnabledForActiveTab`) on every render.\nconst DEFAULT_SHARE_ENABLED_TAB_IDS = [MY_KNOWLEDGE_BASES_TAB_ID];\n\n// Section ids are local only — never sent. It is each section's checked *option* ids that go to the\n// API, as the query param named where the request params are built.\nconst statusFilterSectionId = \"section\"; // -> status=published|completed|draft|under_review\nconst ownershipFilterSectionId = \"ownership\"; // -> ownership=owned|shared\nconst initialFilters: GuidelineFilterSectionState[] = [\n {\n id: statusFilterSectionId,\n title: \"Status\",\n options: [\n { id: \"published\", label: \"Published\", checked: false },\n { id: \"completed\", label: \"Completed\", checked: false },\n { id: \"draft\", label: \"Draft\", checked: false },\n { id: \"under_review\", label: \"Under Review\", checked: false },\n\n ],\n },\n {\n id: ownershipFilterSectionId,\n title: \"Ownership\",\n options: [\n { id: \"owned\", label: \"Created by me\", checked: false },\n { id: \"shared\", label: \"Shared with me\", checked: false },\n ],\n },\n];\nconst treeSectionsConfig: TreeSectionConfig[] = [\n {\n id: 'learnings',\n label: 'Knowledge Bases',\n icon: BookOpen,\n badgeKey: 'learningsCount'\n },\n];\n\nconst nodeTypesConfig: NodeTypeConfig[] = [\n { type: 'GLOBAL', label: 'Global', addChildLabel: 'Add Domain', addChildType: 'SCOPE' },\n { type: 'SCOPE', label: 'Domain', addChildLabel: 'Add Subdomain', addChildType: 'SUBSCOPE' },\n { type: 'SUBSCOPE', label: 'Subdomain' },\n];\n\nconst defaultClassNames: LscGuidelineClassNames = {\n landingDebugLink: \"hidden\",\n landingRoot: \"h-full overflow-visible\",\n landingContent: \"!py-6 flex h-full min-h-0 flex-col overflow-visible\",\n landingBody: \"mt-12 grid w-full grid-cols-1 flex-1 min-h-0 overflow-visible items-stretch\",\n library: \"flex min-h-0 flex-col w-full overflow-visible\",\n libraryTabs: \"shrink-0\",\n libraryControls: \"shrink-0\",\n libraryScrollArea: \"mt-6 min-h-0 flex-1 pr-2\",\n cart: \"hidden\",\n libraryCardSelectButton: \"flex-row-reverse font-normal w-fit\",\n libraryCardDate: \"text-xs font-light\",\n landingTitle: \"bg-[linear-gradient(223.66deg,_#33D2FF_-48.24%,_#3D68DE_28.7%,_#9845E8_94.92%)] bg-clip-text text-transparent\",\n treeSidebarWrapper: \"flex flex-col border-r border-[#E3E6EA]\",\n guideLineLibraryContent: \"border border-[#E3E6EA] rounded-xl mt-5 flex flex-row\",\n treeSidebarHeading: \"p-4\",\n guideLineLibraryCardContainer: \"px-4\"\n};\nconst ILMarketplaceWrapperInner = ({\n guidelineSections: initialGuidelineSections,\n guidelineFiles,\n treeSidebarData,\n labels = {},\n isILMarketplace = true,\n handleViewButtonCallback,\n handleCardClickCallback,\n handlePreviewButtonCallback, // add\n guidelinePinnedMessages,\n statusActions,\n previewDisabledTooltip,\n enablePublishToMarketplace = false,\n handlePublishButtonCallback,\n publishSteps,\n handleViewTemplateCallback,\n handlePromoteButtonCallback,\n enablePromoteFlow = false,\n renderPublishHeader,\n onPublished,\n onValidateAndProceedReady,\n onDeleteGuideline,\n onApproveGuideline,\n onRejectGuideline,\n onAddKnowledgeBase,\n marketplaceLabels,\n marketPlaceConfig,\n cardMetadata,\n fetchGuidelinesForTab,\n applicationMappingId,\n scopeId,\n authToken: authTokenProp,\n baseUrl,\n contentModeMappingId,\n userDetails,\n baseWebsocketUrl,\n assistantName,\n appsecRbacUrl,\n appsecBaseUrl,\n modeId,\n organizationName,\n appmodUrl,\n configMasterName,\n treeOverrides,\n classNames: classNamesProp,\n styles,\n theme,\n isShareEnabled = true,\n shareEnabledTabIds = DEFAULT_SHARE_ENABLED_TAB_IDS,\n shareableGuidelineStatuses,\n externalShareRbacConfig,\n showDashboardButton,\n onDashboardClick,\n basePath = \"\",\n exploreHighlightGuidelineIds,\n exploreHighlightConfig,\n axiosConfig,\n mfApi,\n config,\n initialActiveTabId,\n onTabChange,\n disableRouting = false,\n}: ILMarketplaceWrapperProps) => {\n\n // Applied during render, before any child can fire a request. No-op when the\n // host does not pass one, so axios keeps its own default transport.\n applyAxiosConfig(axiosConfig);\n const defaultMarketPlaceRoleId = externalShareRbacConfig?.defaultMarketPlaceRoleId;\n const defaultAccessAppIntegrationIds = externalShareRbacConfig?.defaultAccessAppIntegrationIds;\n // Hosts write `externalShareRbacConfig` inline, so its array is a new identity\n // every render. Effects below depend on this key instead, never the array.\n const defaultAccessAppIntegrationIdsKey = defaultAccessAppIntegrationIds?.join(',');\n const classNames = useMemo(\n () => ({ ...defaultClassNames, ...classNamesProp }),\n [classNamesProp]\n );\n const themeStyles = useMemo(() => getILMarketplaceThemeStyles(theme), [theme]);\n basePath=basePath ? decodeURIComponent(basePath) : \"\";\n const fetchedMarketplaceValueTypeConfig = useLMSConfigStore((state) => state.lmsConfig?.marketplace);\n const marketplaceValueTypeConfig = marketPlaceConfig ?? fetchedMarketplaceValueTypeConfig;\n const legacySections = initialGuidelineSections ?? DEFAULT_GUIDELINE_SECTIONS;\n const jsonSections = useMemo(\n () => resolveJsonSections(marketplaceValueTypeConfig?.tabs, legacySections),\n [marketplaceValueTypeConfig?.tabs, legacySections]\n );\n\n // Both are \"safe\" — null when this component happens to render outside any Router context,\n // so the pushState fallback further down can still work rather than throwing.\n const routerNavigate = useSafeRouterNavigate();\n const routerLocation = useSafeRouterLocation();\n\n // Falls back to window.location when rendered outside a Router context (defensive only —\n // this component is designed to be mounted inside the host's existing Router).\n const currentPathnameForDetection =\n routerLocation?.pathname ??\n (typeof window !== \"undefined\" ? window.location.pathname : \"/\");\n\n const sectionsForDetection = useMemo(\n () => jsonSections ?? legacySections,\n [jsonSections, legacySections]\n );\n const [internalActiveTabId, setInternalActiveTabId] = useState<string>(\n () => {\n const requestedTab = sectionsForDetection.find(\n (section) => section.id === initialActiveTabId && !section.isDisabled\n );\n const configuredActiveTab = sectionsForDetection.find(\n (section) => section.isActive && !section.isDisabled\n );\n return requestedTab?.id ?? configuredActiveTab?.id ?? sectionsForDetection[0]?.id ?? IL_MARKETPLACE_TAB_ID;\n }\n );\n // Captured ONCE, from the URL the browser was actually on when this component mounted, and\n // never recomputed afterward. This is what makes it safe to reuse on every later navigation\n // even after the URL has already changed — recomputing from a post-navigation URL is exactly\n // what caused the prefix to get lost in earlier attempts.\n //\n // If an explicit `basePath` prop is supplied, it always wins (useful when the consumer knows\n // the prefix up front and doesn't want to rely on detection at all, e.g. on first mount before\n // any route has resolved).\n const cleanBase = basePath ? basePath.replace(/\\/+$/, \"\") : null;\n\n const basePathRef = useRef<string | null>(cleanBase);\n if (basePathRef.current === null) {\n const detected = detectBasePathFromCurrentUrl(currentPathnameForDetection, sectionsForDetection);\n basePathRef.current = detected ?? \"\";\n }\n const normalizedBasePath = basePathRef.current;\n // const basePathRef = useRef<string | null>(basePath ? basePath.replace(/\\/+$/, \"\") : null);\n // if (basePathRef.current === null) {\n // const detected = detectBasePathFromCurrentUrl(currentPathnameForDetection, sectionsForDetection);\n // if (detected !== null) {\n // basePathRef.current = detected;\n // }\n // }\n // const normalizedBasePath = basePathRef.current ?? \"\";\n\n const queryClient = useQueryClient();\n const deleteGuidelineMutation = useDeleteGuidelineMutation();\n const user = useAuthStore((state) => state.user);\n const setUser = useAuthStore((state) => state.setUser);\n const marketplaceLearningTerm = useLMSConfigStore(\n (state) => state.lmsConfig?.agents?.LearningTerm?.trim() || \"Guidelines\"\n );\n const rbacConfig = useEnvStore((state) => state.rbacConfig);\n const setRbacConfig = useEnvStore((state) => state.setRbacConfig);\n const appsecRoles = useAppSecRolesStore((state) => state.roles);\n const setAppsecRoles = useAppSecRolesStore((state) => state.setRoles);\n const authToken = authTokenProp || userDetails?.accessToken;\n const decodedTokenPayload = useMemo(() => decodeJwtPayload(authToken), [authToken]);\n const decodedUserEmail = decodedTokenPayload?.email as string | undefined;\n // Field-level merge preserves legacy props while ensuring JSON is authoritative.\n const resolvedMarketplaceLabels: ILMarketplaceLabelsConfig = {\n ...(marketplaceLabels ?? {}),\n ...(marketplaceValueTypeConfig?.labels ?? {}),\n };\n\n const marketplaceDispatchRef = useRef({ mfApi, config });\n const hasDispatchedRef = useRef(false);\n\n useEffect(() => {\n if (hasDispatchedRef.current) return;\n\n // Keep the ref in sync for other consumers, but drive the dispatch off the\n // live props — the host API can be injected a tick after first render.\n marketplaceDispatchRef.current = { mfApi, config };\n\n console.log(\"MFapi lib\", { hasApi: !!mfApi, config });\n\n if (!mfApi || typeof mfApi.dispatch !== \"function\") {\n console.log(\"skipping SEND_IL_MARKETPLACE_DATA - mfApi.dispatch not available yet\");\n return;\n }\n\n mfApi.dispatch(MF_EVENTS.SEND_IL_MARKETPLACE_DATA, { config: config ?? {} });\n hasDispatchedRef.current = true;\n console.log(\"dispatched SEND_IL_MARKETPLACE_DATA\", config ?? {});\n }, [mfApi, config]);\n\n useEffect(() => {\n if (!authToken || !decodedTokenPayload) return;\n if (useAuthStore.getState().user?.accessToken) return;\n\n setUser({\n _id: decodedTokenPayload._id ?? \"\",\n email: decodedTokenPayload.email ?? \"\",\n accessToken: authToken,\n firstname: decodedTokenPayload.firstname ?? \"\",\n lastname: decodedTokenPayload.lastname ?? \"\",\n provider: {\n provider: \"\",\n type: \"\",\n providerAccountId: \"\",\n access_token: \"\",\n expires_at: 0,\n refresh_token: \"\",\n scope: \"\",\n id_token: \"\",\n name: \"\",\n email: decodedTokenPayload.email ?? \"\",\n },\n });\n }, [authToken, decodedTokenPayload, setUser]);\n\n // Independently resolve RBAC config for this wrapper instead of relying on\n // LearningManagement having already hydrated useEnvStore elsewhere.\n useEffect(() => {\n if (!applicationMappingId || !baseUrl || !authToken) return;\n let cancelled = false;\n\n fetchRBACConfig(baseUrl, authToken, applicationMappingId)\n .then((data) => {\n if (cancelled) return;\n const resolvedConfig: RbacConfig = {\n applicationName: data?.application_name ?? FALLBACK_RBAC_CONFIG.applicationName,\n applicationId: data?.application_id ?? FALLBACK_RBAC_CONFIG.applicationId,\n moduleId: data?.module_data?.Scopes ?? FALLBACK_RBAC_CONFIG.moduleId,\n applicationModuleId: data?.module_data?.General ?? FALLBACK_RBAC_CONFIG.applicationModuleId,\n applicationResourceId: data?.resource_data?.[\"Learning Management\"] ?? FALLBACK_RBAC_CONFIG.applicationResourceId,\n appsecRbacUrl: FALLBACK_RBAC_CONFIG.appsecRbacUrl,\n appsecBaseUrl: FALLBACK_RBAC_CONFIG.appsecBaseUrl,\n defaultMarketPlaceRoleId,\n defaultAccessAppIntegrationIds,\n };\n setRbacConfig(resolvedConfig);\n })\n .catch((err) => {\n if (cancelled) return;\n console.error(\"Failed to fetch RBAC config for IL Marketplace\", err);\n setRbacConfig(FALLBACK_RBAC_CONFIG);\n });\n\n return () => {\n cancelled = true;\n };\n }, [applicationMappingId, baseUrl, authToken, setRbacConfig, defaultMarketPlaceRoleId, defaultAccessAppIntegrationIdsKey]);\n\n const { data: appsecRolesData } = useGetAppSecRolesQuery(\n rbacConfig?.applicationId ?? \"\",\n !!rbacConfig?.applicationId\n );\n\n useEffect(() => {\n if (appsecRolesData) {\n setAppsecRoles(appsecRolesData.map(({ _id, name }: { _id: string; name: string }) => ({ _id, name })));\n }\n }, [appsecRolesData, setAppsecRoles]);\n const sections = useMemo(\n () => jsonSections ?? legacySections,\n [jsonSections, legacySections]\n );\n const [searchText, setSearchText] = useState(\"\");\n const [appliedFilters, setAppliedFilters] = useState<GuidelineFilterSectionState[]>(initialFilters);\n const [draftFilters, setDraftFilters] = useState<GuidelineFilterSectionState[]>(initialFilters);\n const [showGuidelineFilterSidebar, setShowGuidelineFilterSidebar] = useState(false);\n // The marketplace tab renders LearningManagement's scope tree, which owns the\n // selection in this shared store. Guidelines are fetched for whatever it selects.\n const treeScopeId = useLearningTemplateStore((state) => state.selectedRuleSetId);\n const selectedScopeId = treeScopeId ?? scopeId;\n const [addDomainModal, setAddDomainModal] = useState<{ isOpen: boolean; parentId?: string; parentName?: string; childType?: 'SCOPE' | 'SUBSCOPE' }>({ isOpen: false });\n const [isGuidelineConfigInitialized, setIsGuidelineConfigInitialized] = useState(false);\n const [publishTarget, setPublishTarget] = useState<{ guideline: FileItem; instanceApplicationMappingId: string } | null>(null);\n const [promoteTarget, setPromoteTarget] = useState<{ guideline: FileItem } | null>(null);\n\n /**\n * A section's route, WITHOUT the host prefix. Comes from the section itself if provided, else\n * the built-in default for known tab ids.\n */\n const getRelativeSectionRoute = useCallback(\n (section: LscGuidelineSection) => section.route ?? DEFAULT_TAB_ROUTES[section.id],\n []\n );\n\n /**\n * A section's FULL route, with the host's `basePath` prepended. This is what gets pushed to\n * the browser URL — never the bare relative route, which would drop the host's prefix.\n */\n const getFullSectionRoute = useCallback(\n (section: LscGuidelineSection) => {\n const relative = getRelativeSectionRoute(section);\n return relative ? joinPath(normalizedBasePath, relative) : undefined;\n },\n [getRelativeSectionRoute, normalizedBasePath]\n );\n\n // Falls back to window.location when rendered outside a Router context (defensive only —\n // this component is designed to be mounted inside the host's existing Router).\n const currentPathname =\n routerLocation?.pathname ??\n (typeof window !== \"undefined\" ? window.location.pathname : \"/\");\n \n\n // const activeTabId = useMemo(() => {\n // const normalizedCurrent = normalizeRoutePath(currentPathname);\n // const match = sections.find((section) => {\n // const fullRoute = getFullSectionRoute(section);\n // return fullRoute && normalizeRoutePath(fullRoute) === normalizedCurrent;\n // });\n // return match?.id ?? IL_MARKETPLACE_TAB_ID;\n // }, [sections, currentPathname, getFullSectionRoute]);\n const routeDerivedActiveTabId = useMemo(() => {\n const normalizedCurrent = normalizeRoutePath(currentPathname);\n\n const publishRoute = joinPath(normalizedBasePath, DEFAULT_TAB_ROUTES[IL_MARKETPLACE_VIEW.publishing]);\n if (normalizedCurrent === normalizeRoutePath(publishRoute)) {\n return IL_MARKETPLACE_VIEW.publishing;\n }\n const promoteRoute = joinPath(normalizedBasePath, DEFAULT_TAB_ROUTES[IL_MARKETPLACE_VIEW.promote]);\n if (normalizedCurrent === normalizeRoutePath(promoteRoute)) {\n return IL_MARKETPLACE_VIEW.promote;\n }\n\n const match = sections.find((section) => {\n const fullRoute = getFullSectionRoute(section);\n const normalizedFullRoute = fullRoute ? normalizeRoutePath(fullRoute) : undefined;\n return fullRoute && normalizedFullRoute === normalizedCurrent;\n });\n\n return match?.id ?? IL_MARKETPLACE_TAB_ID;\n }, [sections, currentPathname, getFullSectionRoute, normalizedBasePath, getRelativeSectionRoute]);\n\n const activeTabId = disableRouting ? internalActiveTabId : routeDerivedActiveTabId;\n\n const isMarketplaceTab = activeTabId === IL_MARKETPLACE_TAB_ID;\n\n // Promote Flow also uses the guideline runtime config to reach LLM Studio.\n // Initializing it for this route prevents a direct /marketplace/promote visit\n // from attempting a promotion before the configuration exists.\n useEffect(() => {\n setIsGuidelineConfigInitialized(false);\n if (\n (activeTabId === IL_MARKETPLACE_TAB_ID || activeTabId === IL_MARKETPLACE_VIEW.promote) &&\n baseUrl &&\n modeId\n ) {\n const guidelineEditorConfig = {\n baseWebsocketUrl: baseWebsocketUrl || baseUrl,\n modeId,\n assistantName: assistantName || \"default\",\n appmodUrl: appmodUrl || \"https://dev.appmod.ai\",\n appsecBaseUrl: appsecBaseUrl || \"https://dev-cw-appsec.techo.camp\",\n applicationName: rbacConfig?.applicationName || \"Guideline Editor\",\n applicationId: rbacConfig?.applicationId || \"\",\n moduleId: rbacConfig?.moduleId || \"\",\n applicationModuleId: rbacConfig?.applicationModuleId || \"\",\n applicationResourceId: rbacConfig?.applicationResourceId || \"\",\n appsecGranularBaseUrl: appsecRbacUrl || \"https://dev-cw-appsec.techo.camp/granularApi\",\n audacyUrl: baseUrl,\n egptDomain: baseUrl?.replace(/^https?:\\/\\//, \"\") || \"devllmstudio.creativeworkspace.ai\",\n ilModelName: \"claude-3.5-sonnet\",\n };\n\n try {\n initGuidelineRuntimeConfig({\n apiBaseUrls: {\n llmStudio: baseUrl || \"https://devllmstudio.creativeworkspace.ai\",\n chatManagement: baseUrl || \"https://devllmstudio.creativeworkspace.ai\",\n },\n ilkbValueType: \"ILKB\",\n editorConfig: guidelineEditorConfig,\n apiAdapter: {\n makeApiRequest: async (method, url, options) => {\n // This is a placeholder implementation\n // The actual API calls will be handled by the services\n return { success: true } as any;\n },\n },\n getHostContext: () => ({\n authToken,\n userEmail: user?.email,\n userName: user?.firstname + \" \" + user?.lastname,\n }),\n syncChatId: () => {},\n });\n setIsGuidelineConfigInitialized(true);\n } catch (error) {\n console.error(\"Failed to initialize guideline runtime config:\", error);\n setIsGuidelineConfigInitialized(false);\n }\n }\n }, [activeTabId, baseUrl, modeId, baseWebsocketUrl, assistantName, appmodUrl, appsecBaseUrl, appsecRbacUrl, rbacConfig, authToken, user]);\n\n const handleUpdateActiveTab = useCallback((tabId: string) => {\n const section = sections.find((section) => section.id === tabId);\n if (!section || section.isDisabled) {\n return;\n }\n\n onTabChange?.(tabId);\n\n if (disableRouting) {\n setInternalActiveTabId(tabId);\n return;\n }\n\n const fullRoute = getFullSectionRoute(section);\n if (!fullRoute) return;\n\n if (normalizeRoutePath(currentPathname) === normalizeRoutePath(fullRoute)) {\n return;\n }\n\n if (routerNavigate) {\n // Goes through the host's own router instance — the same one managing \"/mode/<name>\" —\n // so the prefix is preserved and no competing route can re-match/rewrite it away.\n routerNavigate(fullRoute);\n return;\n }\n\n // Defensive fallback only, for the case this is rendered with no Router in the tree at all.\n if (typeof window !== \"undefined\") {\n window.history.pushState(null, \"\", fullRoute);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n }, [sections, getFullSectionRoute, currentPathname, routerNavigate, disableRouting, onTabChange]);\n\n const selectedStatusValues = useMemo(\n () => getSelectedOptionIds(appliedFilters, statusFilterSectionId),\n [appliedFilters]\n );\n\n const selectedOwnershipValues = useMemo(\n () => getSelectedOptionIds(appliedFilters, ownershipFilterSectionId),\n [appliedFilters]\n );\n\n const marketplaceQueryParams = useMemo<{ content_mode_mapping_id: string } | undefined>(() => {\n if (activeTabId !== IL_MARKETPLACE_TAB_ID) {\n return undefined;\n }\n\n return { content_mode_mapping_id: contentModeMappingId };\n}, [activeTabId, contentModeMappingId]);\n\nconst myKnowledgeBaseQueryParams = useMemo<MyKnowledgeBaseQueryParams | undefined>(() => {\n if (activeTabId !== MY_KNOWLEDGE_BASES_TAB_ID) {\n return undefined;\n }\n\n const params: MyKnowledgeBaseQueryParams = {\n content_mode_mapping_id: contentModeMappingId,\n };\n\n if (selectedStatusValues.length) {\n params.status = selectedStatusValues;\n }\n\n if (selectedOwnershipValues.length) {\n params.ownership = selectedOwnershipValues;\n }\n\n return params;\n}, [activeTabId, contentModeMappingId, selectedStatusValues, selectedOwnershipValues]);\n\nconst savedGuidelinesQueryParams = useMemo<MyKnowledgeBaseQueryParams | undefined>(() => {\n if (activeTabId !== SAVED_TAB_ID) {\n return undefined;\n }\n\n const params: MyKnowledgeBaseQueryParams = {\n content_mode_mapping_id: contentModeMappingId,\n };\n\n if (selectedStatusValues.length) {\n params.status = selectedStatusValues;\n }\n\n if (selectedOwnershipValues.length) {\n params.ownership = selectedOwnershipValues;\n }\n\n return params;\n}, [activeTabId, contentModeMappingId, selectedStatusValues, selectedOwnershipValues]);\n\n const resolveGuidelinesFetcher = (tabId: string): (() => Promise<FileItem[]>) | undefined => {\n if (tabId === IL_MARKETPLACE_TAB_ID) {\n return applicationMappingId && selectedScopeId\n ? () => {\n return fetchMarketplaceInstances(\n selectedScopeId,\n applicationMappingId,\n authToken,\n baseUrl,\n marketplaceQueryParams\n ).then((response) => toFileItems(response));\n }\n : undefined;\n }\n if (tabId === MY_KNOWLEDGE_BASES_TAB_ID) {\n return applicationMappingId\n ? () =>\n fetchMyKnowledgeBaseGuidelines(\n applicationMappingId,\n myKnowledgeBaseQueryParams,\n authToken,\n baseUrl\n ).then(toFileItems)\n : undefined;\n }\n if (tabId === SAVED_TAB_ID) {\n return applicationMappingId\n ? () =>\n fetchSavedMarketplaceGuidelines(\n applicationMappingId,\n authToken,\n baseUrl,\n savedGuidelinesQueryParams\n ).then(toFileItems)\n : undefined;\n }\n if (fetchGuidelinesForTab) {\n return () => fetchGuidelinesForTab(tabId);\n }\n return undefined;\n };\n\n const activeTabFetcher = activeTabId ? resolveGuidelinesFetcher(activeTabId) : undefined;\n\nconst {\n data: fetchedTabGuidelines,\n isFetching: isFetchingTabGuidelines,\n isSuccess: hasLoadedTabGuidelines,\n} = useQuery<FileItem[]>({\n queryKey: [\n \"il-marketplace-tab-guidelines\",\n activeTabId,\n selectedScopeId,\n activeTabId === MY_KNOWLEDGE_BASES_TAB_ID ? myKnowledgeBaseQueryParams?.content_mode_mapping_id ?? \"\" : \"\",\n activeTabId === MY_KNOWLEDGE_BASES_TAB_ID ? selectedStatusValues : [],\n activeTabId === IL_MARKETPLACE_TAB_ID ? marketplaceQueryParams?.content_mode_mapping_id ?? \"\" : \"\",\n activeTabId === SAVED_TAB_ID ? savedGuidelinesQueryParams?.content_mode_mapping_id ?? \"\" : \"\",\n activeTabId === SAVED_TAB_ID ? selectedStatusValues : [],\n activeTabId === IL_MARKETPLACE_TAB_ID ? [] : selectedOwnershipValues,\n contentModeMappingId,\n ],\n queryFn: () => activeTabFetcher!(),\n enabled: Boolean(activeTabFetcher) && Boolean(activeTabId),\n staleTime: 0,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n});\n\n const { data: fetchedTopicFilterSection } = useQuery<GuidelineFilterSectionState | null>({\n queryKey: [\"il-marketplace-topic-filter\", contentModeMappingId],\n queryFn: async () => {\n if (!contentModeMappingId) {\n return null;\n }\n const response = await fetchContentTypes(contentModeMappingId, baseUrl, authToken);\n return response.error ? null : getTopicFilterSection(response);\n },\n enabled: Boolean(contentModeMappingId),\n });\n\n const tabFilterDefinitions = useMemo(() => {\n if (isMarketplaceTab) {\n return fetchedTopicFilterSection ? [fetchedTopicFilterSection] : [];\n }\n\n return fetchedTopicFilterSection\n ? [fetchedTopicFilterSection, ...initialFilters]\n : initialFilters;\n }, [fetchedTopicFilterSection, isMarketplaceTab]);\n\n useEffect(() => {\n setAppliedFilters((currentSelections) =>\n buildResolvedFilterSections(tabFilterDefinitions, currentSelections)\n );\n setDraftFilters((currentSelections) =>\n buildResolvedFilterSections(tabFilterDefinitions, currentSelections)\n );\n }, [tabFilterDefinitions]);\n\n const tabGuidelines: FileItem[] = useMemo(\n () => fetchedTabGuidelines ?? (activeTabId === IL_MARKETPLACE_TAB_ID ? [] : guidelineFiles ?? []),\n [fetchedTabGuidelines, activeTabId, guidelineFiles]\n );\n\n // Skeletons are for having nothing to show; a background refetch keeps the current list on\n // screen rather than flashing back to placeholders.\n const isLoadingTabGuidelines = isFetchingTabGuidelines && !fetchedTabGuidelines;\n\n const toastRef = useRef<Toast>(null);\n\n\n\n // Set by ContinueWithTemplateModal's \"Save Draft\" — a separate component tree with no props\n // connecting it to this wrapper, so a store is what carries the just-saved guideline's id over.\n const pendingHighlightGuidelineId = useExternalWorkflowStore((state) => state.pendingHighlightGuidelineId);\n const setPendingHighlightGuidelineId = useExternalWorkflowStore((state) => state.setPendingHighlightGuidelineId);\n const [highlightedGuidelineId, setHighlightedGuidelineId] = useState<string | null>(null);\n\n // Drafts land on My Knowledge Bases: jump there so the effect below has a list to search once\n // the modal's cache invalidation refetches it.\n useEffect(() => {\n if (pendingHighlightGuidelineId && activeTabId !== MY_KNOWLEDGE_BASES_TAB_ID) {\n handleUpdateActiveTab(MY_KNOWLEDGE_BASES_TAB_ID);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pendingHighlightGuidelineId, activeTabId]);\n\n // Once the refetched list contains the just-saved draft, scroll to its card and flash a\n // highlighted border for a few seconds. Gives up after 15s so a failed save or a since-deleted\n // draft can't leave this wrapper stuck watching for an id that will never show up.\n useEffect(() => {\n if (!pendingHighlightGuidelineId || activeTabId !== MY_KNOWLEDGE_BASES_TAB_ID) {\n return;\n }\n\n const giveUpTimeout = setTimeout(() => setPendingHighlightGuidelineId(null), 15000);\n\n if (isFetchingTabGuidelines) {\n return () => clearTimeout(giveUpTimeout);\n }\n\n const targetId = pendingHighlightGuidelineId;\n const isDraftVisible = tabGuidelines.some(\n (item) => (item.instant_learning_id || item.id) === targetId\n );\n\n if (!isDraftVisible) {\n return () => clearTimeout(giveUpTimeout);\n }\n\n clearTimeout(giveUpTimeout);\n setPendingHighlightGuidelineId(null);\n setHighlightedGuidelineId(targetId);\n\n const cardElement = document.querySelector(`[data-guideline-id=\"${CSS.escape(targetId)}\"]`);\n cardElement?.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n }, [pendingHighlightGuidelineId, activeTabId, isFetchingTabGuidelines, tabGuidelines, setPendingHighlightGuidelineId]);\n\n // Kept separate from the effect above: that one re-runs the instant `pendingHighlightGuidelineId`\n // is cleared, which would cancel this timer via its own cleanup before it ever fired.\n useEffect(() => {\n if (!highlightedGuidelineId) return;\n const clearHighlightTimeout = setTimeout(() => setHighlightedGuidelineId(null), 2500);\n return () => clearTimeout(clearHighlightTimeout);\n }, [highlightedGuidelineId]);\n\n // The card only knows its own instance mapping id; the marketplace-wide `applicationMappingId`\n // is the same for every card under this wrapper, so it is paired in here.\n const openBuiltInPublishFlow = (guideline: FileItem) => {\n const instanceApplicationMappingId = guideline.application_mapping_ids?.[0];\n if (!instanceApplicationMappingId || !applicationMappingId) {\n console.error(\"Missing application mapping ids for publish\", { instanceApplicationMappingId, applicationMappingId });\n return;\n }\n\n setPublishTarget({ guideline, instanceApplicationMappingId });\n\n if (disableRouting) {\n setInternalActiveTabId(IL_MARKETPLACE_VIEW.publishing);\n return;\n }\n const publishFullRoute = joinPath(normalizedBasePath, DEFAULT_TAB_ROUTES[IL_MARKETPLACE_VIEW.publishing]);\n if (normalizeRoutePath(currentPathname) === normalizeRoutePath(publishFullRoute)) {\n return;\n }\n if (routerNavigate) {\n routerNavigate(publishFullRoute);\n return;\n }\n if (typeof window !== \"undefined\") {\n window.history.pushState(null, \"\", publishFullRoute);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n };\n\n // Host callback wins; JSON can hide the optional icon without changing the\n // host's existing publish integration.\n const publishButtonCallback = marketplaceValueTypeConfig?.statusActions?.showPublish === false\n ? undefined\n : handlePublishButtonCallback ?? (enablePublishToMarketplace ? openBuiltInPublishFlow : undefined);\n\n const openBuiltInPromoteFlow = (guideline: FileItem) => {\n setPromoteTarget({ guideline });\n\n if (disableRouting) {\n setInternalActiveTabId(IL_MARKETPLACE_VIEW.promote);\n return;\n }\n const promoteFullRoute = joinPath(normalizedBasePath, DEFAULT_TAB_ROUTES[IL_MARKETPLACE_VIEW.promote]);\n if (normalizeRoutePath(currentPathname) === normalizeRoutePath(promoteFullRoute)) {\n return;\n }\n if (routerNavigate) {\n routerNavigate(promoteFullRoute);\n return;\n }\n if (typeof window !== \"undefined\") {\n window.history.pushState(null, \"\", promoteFullRoute);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n };\n\n const promoteButtonCallback = handlePromoteButtonCallback ?? openBuiltInPromoteFlow;\n\n const handlePublishBack = () => {\n setPublishTarget(null);\n handleUpdateActiveTab(MY_KNOWLEDGE_BASES_TAB_ID);\n };\n\n const handlePromoteBack = () => {\n setPromoteTarget(null);\n handleUpdateActiveTab(MY_KNOWLEDGE_BASES_TAB_ID);\n };\n\n const handlePublishSubmit = async () => {\n const publishedGuideline = publishTarget?.guideline;\n setPublishTarget(null);\n handleUpdateActiveTab(MY_KNOWLEDGE_BASES_TAB_ID);\n await queryClient.invalidateQueries({ queryKey: [\"il-marketplace-tab-guidelines\"] });\n let isCurrentUserApprover = false;\n if (publishedGuideline?.instant_learning_id && publishedGuideline?.scope_id && user?.email) {\n const approversResponse = await fetchMarketplaceApprovers(\n publishedGuideline.instant_learning_id,\n publishedGuideline.scope_id,\n authToken,\n baseUrl\n );\n const approvers = approversResponse?.responseData?.data?.users ?? [];\n isCurrentUserApprover = approvers?.some(\n (approver) => approver?.email.toLowerCase() === user.email.toLowerCase()\n );\n }\n\n if (!isCurrentUserApprover) {\n toastRef.current?.show({\n severity: \"success\",\n sticky: false,\n life: 6000,\n content: (\n <SuccessToastContent\n title=\"Publish Request has been sent to admin\"\n message=\"You'll receive an email once your template is approved and published to the marketplace.\"\n />\n ),\n });\n }\n\n if (publishedGuideline) {\n onPublished?.(publishedGuideline);\n }\n };\n\n const handleVersionSelect = async (guideline: FileItem, version: number) => {\n const ilInstanceMappingId = guideline.application_mapping_ids?.[0];\n if (!ilInstanceMappingId || !applicationMappingId) {\n throw new Error(\"Missing application mapping ids for version switch\");\n }\n\n const response = await fetchMarketplaceInstanceVersion(ilInstanceMappingId, applicationMappingId, version, authToken, baseUrl);\n const versionInstance = response.responseData?.data?.results?.[0] ?? response.responseData?.data?.result?.[0];\n if (response.error || !versionInstance) {\n throw new Error(response.error?.errorMessage || \"Failed to fetch guideline version\");\n }\n\n const updatedItem = toFileItem(versionInstance as unknown as FileItem & { description?: string | null });\n const guidelineId = guideline.instant_learning_id || guideline.id;\n\n queryClient.setQueriesData<FileItem[]>(\n { queryKey: [\"il-marketplace-tab-guidelines\", activeTabId, selectedScopeId] },\n (previous?: FileItem[]) =>\n previous?.map((item) =>\n (item.instant_learning_id || item.id) === guidelineId\n ? { ...item, ...updatedItem, version_list: item.version_list ?? updatedItem.version_list }\n : item\n )\n );\n };\n\n const { data: fetchedDomainTree, isLoading: isLoadingDomainTree } = useQuery<ScopeTreeNode | null>({\n queryKey: [\"il-marketplace-domain-tree\", applicationMappingId, contentModeMappingId],\n queryFn: () =>\n fetchMarketplaceDomains(applicationMappingId as string, authToken, baseUrl, {\n content_mode_mapping_id: contentModeMappingId,\n }).then(toDomainTree),\n enabled: Boolean(applicationMappingId && contentModeMappingId),\n staleTime: Infinity,\n });\n const resolvedTreeSidebarData = fetchedDomainTree ?? treeSidebarData ?? null;\n\n const selectedMarketplaceScope = useMemo(\n () => findScopeTreeNode(resolvedTreeSidebarData, selectedScopeId ?? \"\"),\n [resolvedTreeSidebarData, selectedScopeId]\n );\n const isMarketplaceScopeEmpty =\n isILMarketplace &&\n activeTabId === IL_MARKETPLACE_TAB_ID &&\n Boolean(selectedMarketplaceScope) &&\n hasLoadedTabGuidelines &&\n tabGuidelines.length === 0;\n const marketplaceEmptyState = useMemo(() => {\n const stateKey = selectedMarketplaceScope?.children?.length\n ? \"scopeWithChildren\"\n : \"leafScope\";\n const defaultCopy = DEFAULT_MARKETPLACE_EMPTY_STATES[stateKey];\n const jsonCopy = marketplaceValueTypeConfig?.emptyStates?.[stateKey];\n const propCopy = resolvedMarketplaceLabels.emptyStates?.[stateKey];\n // Root-only copy wins field by field when set; unset fields keep the lookup above.\n const isRootScope =\n Boolean(selectedMarketplaceScope) && selectedMarketplaceScope?.id === resolvedTreeSidebarData?.id;\n const rootCopy = isRootScope\n ? {\n title: marketplaceValueTypeConfig?.emptyStates?.rootScope?.title ??\n resolvedMarketplaceLabels.emptyStates?.rootScope?.title,\n description: marketplaceValueTypeConfig?.emptyStates?.rootScope?.description ??\n resolvedMarketplaceLabels.emptyStates?.rootScope?.description,\n }\n : undefined;\n const scopeName = selectedMarketplaceScope?.name ?? \"this category\";\n const learningTerm = toPluralLearningTerm(marketplaceLearningTerm);\n\n return {\n title: replaceMarketplacePlaceholders(\n rootCopy?.title ??\n jsonCopy?.title ??\n propCopy?.title ??\n resolvedMarketplaceLabels.emptyTitle ??\n defaultCopy.title,\n scopeName,\n learningTerm\n ),\n description: replaceMarketplacePlaceholders(\n rootCopy?.description ??\n jsonCopy?.description ??\n propCopy?.description ??\n resolvedMarketplaceLabels.emptyDescription ??\n defaultCopy.description,\n scopeName,\n learningTerm\n ),\n };\n }, [\n marketplaceLearningTerm,\n marketplaceValueTypeConfig,\n resolvedMarketplaceLabels,\n resolvedTreeSidebarData,\n selectedMarketplaceScope,\n ]);\n\n useEffect(() => {\n if (isMarketplaceScopeEmpty) {\n setShowGuidelineFilterSidebar(false);\n }\n }, [isMarketplaceScopeEmpty]);\n\n const handleOpenGuidelineFilters = () => {\n setDraftFilters(cloneFilterSections(appliedFilters));\n setShowGuidelineFilterSidebar(true);\n };\n\n const activeFilterCount = useMemo(\n () =>\n appliedFilters.reduce(\n (count, section) =>\n count + section.options.filter((option) => option.checked).length,\n 0\n ),\n [appliedFilters]\n );\n\n const selectedTopicIds = useMemo(\n () => getSelectedOptionIds(appliedFilters, TOPIC_FILTER_SECTION_ID),\n [appliedFilters]\n );\n const isMarketplaceCatalogTab = isILMarketplace && activeTabId === IL_MARKETPLACE_TAB_ID;\n\n const filteredGuidelineFiles = useMemo(() => {\n const normalizedSearchText = searchText.trim().toLocaleLowerCase();\n\n return tabGuidelines\n ?.filter((file) => {\n const matchesSearch =\n !normalizedSearchText ||\n (getGuidelineTitle(file) || \"\")?.toLocaleLowerCase().includes(normalizedSearchText);\n const matchesStatus =\n selectedStatusValues.length === 0 ||\n selectedStatusValues?.includes((file.status ?? \"\").trim().toLocaleLowerCase());\n const matchesTopic =\n selectedTopicIds.length === 0 ||\n selectedTopicIds.includes(file.topic_id ?? \"\");\n\n return matchesSearch && matchesStatus && matchesTopic;\n })\n .map((file) =>\n isMarketplaceCatalogTab && file.version_list\n ? {\n ...file,\n version_list: file?.version_list?.filter(\n (entry) => (entry.status ?? \"\").trim().toLocaleLowerCase() === \"published\"\n ),\n }\n : file\n );\n }, [searchText, selectedTopicIds, selectedStatusValues, tabGuidelines, isMarketplaceCatalogTab]);\n\n const handleClearFilter = () => {\n const clearedFilters = tabFilterDefinitions.map(clearFilterSection);\n setAppliedFilters(clearedFilters);\n setDraftFilters(cloneFilterSections(clearedFilters));\n setShowGuidelineFilterSidebar(false);\n };\n\n const handleCloseGuidelineFilters = () => {\n setDraftFilters(cloneFilterSections(appliedFilters));\n setShowGuidelineFilterSidebar(false);\n };\n\n const handleApplyGuidelineFilters = () => {\n const nextAppliedFilters = cloneFilterSections(draftFilters);\n setAppliedFilters(nextAppliedFilters);\n setDraftFilters(cloneFilterSections(nextAppliedFilters));\n setShowGuidelineFilterSidebar(false);\n };\n\n const updateDraftFilterOption = (sectionId: string, optionId: string, checked: boolean) => {\n setDraftFilters((prev) =>\n prev.map((section) =>\n section.id !== sectionId\n ? section\n : {\n ...section,\n options: section.options.map((option) =>\n option.id === optionId ? { ...option, checked } : option\n ),\n }\n )\n );\n };\n\n\n const resolvedCardMetadata = {\n ...cardMetadata,\n contentType: { ...cardMetadata?.contentType, ...marketplaceValueTypeConfig?.cardMetadata?.contentType },\n topic: { ...cardMetadata?.topic, ...marketplaceValueTypeConfig?.cardMetadata?.topic },\n };\n const resolvedTreeOverrides = treeOverrides;\n const areStatusActionsDisabled = marketplaceValueTypeConfig?.statusActions?.enabled === false;\n // `enabled: false` hides every card CTA. Passing undefined would make the card fall\n // back to its select button, so the primary action is switched off explicitly;\n // View/Promote stay hidden because no onView/onPromote is passed.\n const resolvedStatusActions = areStatusActionsDisabled\n ? { showPrimaryAction: false, showView: false, showPromote: false }\n : { ...statusActions, ...marketplaceValueTypeConfig?.statusActions };\n const resolvedShareEnabled = marketplaceValueTypeConfig?.sharing?.isEnabled ?? isShareEnabled;\n const resolvedShowDashboardButton = marketplaceValueTypeConfig?.dashboard?.show ?? showDashboardButton;\n const resolvedDashboardLabel = marketplaceValueTypeConfig?.dashboard?.label;\n const showAddKnowledgeBase = marketplaceValueTypeConfig?.addKnowledgeBase?.show ?? true;\n\n // Sharing is only offered on the tabs the host opts in via `shareEnabledTabIds`.\n const isShareEnabledForActiveTab =\n Boolean(activeTabId && shareEnabledTabIds.includes(activeTabId)) && resolvedShareEnabled;\n\n const resolvedLabels = mergeGuidelineLabels(labels);\n const activeGuidelineSection = sections.find((section) => section.id === activeTabId);\n\n const noScopeSelectedForMarketplace =\n isILMarketplace && activeTabId === IL_MARKETPLACE_TAB_ID && !selectedScopeId;\n\n const isSearchActive = searchText.trim().length > 0;\n\n const addKnowledgeBaseButton = (\n <button\n type=\"button\"\n aria-disabled={!onAddKnowledgeBase}\n onClick={(event) => {\n event.preventDefault();\n onAddKnowledgeBase?.();\n }}\n className={`${cssStyles.addKnowledgeBaseButton} ${onAddKnowledgeBase ? \"\" : cssStyles.addKnowledgeBaseButtonDisabled}`}\n >\n <Plus className={cssStyles.addKnowledgeBaseIcon} strokeWidth={2.4} />\n <span>{resolvedMarketplaceLabels.addKnowledgeBaseLabel ?? \"IL Knowledge Base\"}</span>\n </button>\n );\n\n // Built once: rendered directly on other tabs, or handed to LearningManagement to render beside the scope tree on the marketplace tab.\n const guidelineContentProps = {\n guidelines: filteredGuidelineFiles,\n cartGuidelineIds: [],\n addToCartLabel: resolvedLabels.libraryAddToCart,\n addedToCartLabel: resolvedLabels.libraryAddedToCart,\n selectLabel: isILMarketplace ? resolvedMarketplaceLabels.testKnowledgebaseLabel : resolvedLabels.librarySelect,\n selectedLabel: isILMarketplace ? resolvedMarketplaceLabels.testKnowledgebaseLabel : resolvedLabels.librarySelected,\n exploreLabel: resolvedLabels.libraryExplore,\n showMoreLabel: resolvedLabels.libraryShowMore,\n showLessLabel: resolvedLabels.libraryShowLess,\n classNames,\n styles,\n customIcons: {\n selectedIcon: <ArrowRight />,\n unselectedIcon: <ArrowRight />,\n },\n subTitleLayout: \"template\",\n metadataConfig: resolvedCardMetadata,\n formatAddedOnLabel: defaultFormatAddedOnLabel,\n searchProps: isMarketplaceScopeEmpty ? undefined : {\n value: searchText,\n onChange: (value: any) => setSearchText(value),\n placeholder: resolvedMarketplaceLabels.searchPlaceholder ?? \"Search for Knowledge Bases...\",\n },\n filterProps: isMarketplaceScopeEmpty ? undefined : {\n label: \"Filters\",\n icon: <span>{BsFunnel({})}</span>,\n activeCount: activeFilterCount,\n onClick: handleOpenGuidelineFilters,\n onClear: handleClearFilter,\n },\n isLoading: isLoadingTabGuidelines,\n emptyTitle: isMarketplaceScopeEmpty\n ? marketplaceEmptyState.title\n : noScopeSelectedForMarketplace\n ? \"Select a subdomain to view Knowledge bases\"\n : isSearchActive\n ? resolvedMarketplaceLabels.searchEmptyTitle ?? \"No Knowledgebases found\"\n : labels.libraryEmptyTitle ?? (isILMarketplace ? resolvedMarketplaceLabels.emptyTitle : resolvedLabels.libraryEmptyTitle),\n emptyDescription: isMarketplaceScopeEmpty\n ? marketplaceEmptyState.description\n : noScopeSelectedForMarketplace || isSearchActive\n ? undefined\n : labels.libraryEmptyDescription ?? (isILMarketplace ? resolvedMarketplaceLabels.emptyDescription : resolvedLabels.libraryEmptyDescription),\n // appsec urls feed the per-card share modal\n instantLearning: {\n token: authToken,\n baseUrl,\n appsecGranularRbacUrl: appsecRbacUrl,\n appsecBaseUrl,\n },\n onWishlistToggle: async (applicationMappingId: string, nextState: boolean) => {\n const response = await setMarketplaceUserTag(applicationMappingId, nextState, authToken, baseUrl);\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to update wishlist status\");\n }\n await queryClient.invalidateQueries({ queryKey: [\"il-marketplace-tab-guidelines\"] });\n return nextState;\n },\n onVersionSelect: handleVersionSelect,\n onDeleteGuideline: onDeleteGuideline ?? ((guideline: FileItem) =>\n deleteGuidelineMutation.mutateAsync({ guideline, applicationMappingId, authToken, baseUrl })\n ),\n onApproveGuideline: onApproveGuideline ?? (async (guideline: FileItem) => {\n const response = await updateInstancePublishStatus(\n {\n variant_id: guideline?.variant_id ?? \"\",\n marketplace_application_mapping_id: applicationMappingId ?? \"\",\n application_mapping_id: guideline?.application_mapping_ids?.[0] ?? \"\",\n status: \"approved\",\n },\n authToken,\n baseUrl\n );\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to approve guideline\");\n }\n await queryClient.invalidateQueries({ queryKey: [\"il-marketplace-tab-guidelines\"] });\n }),\n onRejectGuideline: onRejectGuideline ?? (async (guideline: FileItem) => {\n const response = await updateInstancePublishStatus(\n {\n variant_id: guideline?.variant_id ?? \"\",\n marketplace_application_mapping_id: applicationMappingId ?? \"\",\n application_mapping_id: guideline?.application_mapping_ids?.[0] ?? \"\",\n status: \"rejected\",\n },\n authToken,\n baseUrl\n );\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to reject guideline\");\n }\n await queryClient.invalidateQueries({ queryKey: [\"il-marketplace-tab-guidelines\"] });\n }),\n onToggleVariantGuideline: async (guideline: FileItem) => {\n const variantId = guideline.variant_id ?? \"\";\n const mappingId = applicationMappingId;\n const nextEnabled = guideline.is_enabled === false;\n const response = await toggleVariantApi([variantId], nextEnabled, mappingId, authToken, baseUrl);\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to toggle variant status\");\n }\n await queryClient.invalidateQueries({ queryKey: [\"il-marketplace-tab-guidelines\"] });\n },\n // Temporary: retain the handler for a future re-enable, but hide the menu item on every tab.\n hideToggleVariantOption: true,\n isILMarketplace,\n isShareEnabled: isShareEnabledForActiveTab,\n shareableGuidelineStatuses,\n externalShareRbacConfig,\n handleViewButtonCallback,\n handleCardClickCallback,\n handlePreviewButtonCallback,\n guidelinePinnedMessages,\n handlePublishButtonCallback: publishButtonCallback,\n highlightedGuidelineId,\n statusActions: !areStatusActionsDisabled && (resolvedStatusActions?.modeName || enablePromoteFlow)\n ? {\n ...resolvedStatusActions,\n promoteLabel: resolvedStatusActions?.promoteLabel ?? \"Promote\",\n onPromote: resolvedStatusActions?.onPromote ?? promoteButtonCallback,\n }\n : resolvedStatusActions,\n previewDisabledTooltip: previewDisabledTooltip,\n showDashboardButton: resolvedShowDashboardButton,\n dashboardLabel: resolvedDashboardLabel,\n onDashboardClick,\n exploreHighlightGuidelineIds,\n exploreHighlightConfig,\n };\n\n // Built-in publish flow: takes over the whole wrapper rather than opening a modal, so the host\n // mode sees a full-screen page. Hosts passing `handlePublishButtonCallback` render their own\n // component instead and never reach this branch. Gated on the route (like the other tabs) so\n // browser back/forward out of \"/marketplace/publish\" exits the flow the same way it switches tabs.\n if (publishTarget && activeTabId === IL_MARKETPLACE_VIEW.publishing) {\n // Back button disabled for now — browser back on \"/marketplace/publish\" already exits the flow via the route.\n const publishHeader = renderPublishHeader\n ? renderPublishHeader({\n guideline: publishTarget.guideline,\n onBack: handlePublishBack,\n })\n : null;\n\n return (\n <ILMarketplaceThemeProvider theme={theme}>\n <div className={cssStyles.publishFlowWrapper} style={themeStyles}>\n {publishHeader}\n <div className={cssStyles.publishFlowBody}>\n <PublishToMarketplaceComponent\n steps={publishSteps}\n onViewTemplate={handleViewTemplateCallback}\n templateName={getGuidelineTitle(publishTarget.guideline)}\n version={publishTarget?.guideline?.version}\n applicationMappingId={applicationMappingId ?? \"\"}\n instanceApplicationMappingId={publishTarget?.guideline?.application_mapping_ids?.[0] || publishTarget.guideline.instant_learning_id || ''}\n contentModeMappingId={contentModeMappingId}\n authToken={authToken}\n baseUrl={baseUrl}\n assistantName={assistantName}\n organizationName={organizationName}\n baseWebsocketUrl={baseWebsocketUrl}\n appmodUrl={appmodUrl}\n configMasterName={configMasterName}\n onSubmit={handlePublishSubmit}\n onExposeValidateAndProceed={onValidateAndProceedReady}\n />\n </div>\n </div>\n </ILMarketplaceThemeProvider>\n );\n }\n\n if (promoteTarget && activeTabId === IL_MARKETPLACE_VIEW.promote) {\n return (\n <ILMarketplaceThemeProvider theme={theme}>\n <div className={cssStyles.publishFlowWrapper} style={themeStyles}>\n <Toast\n ref={toastRef}\n position=\"top-right\"\n appendTo={document.body}\n pt={{ root: { style: { zIndex: 9999 } } }}\n />\n <div className={cssStyles.publishFlowBody}>\n <PromoteFlow\n guideline={promoteTarget.guideline}\n onBack={handlePromoteBack}\n onPromote={(guideline) => {\n toastRef.current?.show({\n severity: \"success\",\n sticky: false,\n life: 3000,\n content: (\n <SuccessToastContent\n title=\"Promotion request started\"\n message={`${getGuidelineTitle(guideline)} is ready for promotion review.`}\n />\n ),\n });\n }}\n onSaveDraft={(guideline) => {\n toastRef.current?.show({\n severity: \"success\",\n sticky: false,\n life: 3000,\n content: (\n <SuccessToastContent\n title=\"Draft saved\"\n message={`${getGuidelineTitle(guideline)} promotion draft has been saved.`}\n />\n ),\n });\n }}\n />\n </div>\n </div>\n </ILMarketplaceThemeProvider>\n );\n }\n\n return (\n <ILMarketplaceThemeProvider theme={theme}>\n <div className={isILMarketplace ? cssStyles.contentWrapper : cssStyles.contentWrapperNormal} style={themeStyles}>\n <Toast\n ref={toastRef}\n position=\"top-right\"\n appendTo={document.body}\n pt={{ root: { style: { zIndex: 9999 } } }}\n />\n {/* Fixed Tab Header - Does not scroll */}\n <div className={isILMarketplace ? cssStyles.fixedTabHeader : cssStyles.normalTabHeader}>\n <div className={cssStyles.tabHeaderRow}>\n <div className={cssStyles.tabHeaderContainer}>\n {sections.map((section) => (\n <GuidelineLibraryTab\n key={section.id}\n section={section}\n isActive={section.id === activeTabId}\n classNames={classNames}\n styles={styles}\n onTabSelection={handleUpdateActiveTab}\n />\n ))}\n </div>\n {showAddKnowledgeBase && (onAddKnowledgeBase ? (\n addKnowledgeBaseButton\n ) : (\n <GuidelineTooltip content={resolvedMarketplaceLabels.addKnowledgeBaseDisabledTooltip ?? \"Coming soon\"}>\n {addKnowledgeBaseButton}\n </GuidelineTooltip>\n ))}\n </div>\n </div>\n\n {/* Scrollable Content Area */}\n <div className={isILMarketplace ? cssStyles.scrollableContent : cssStyles.contentAreaNoScroll}>\n {isILMarketplace && activeTabId === IL_MARKETPLACE_TAB_ID && isGuidelineConfigInitialized ? (\n <LearningManagementWrapper\n userDetails={userDetails}\n baseUrl={baseUrl}\n baseWebsocketUrl={baseWebsocketUrl}\n assistantName={assistantName}\n appsecRbacUrl={appsecRbacUrl}\n appsecBaseUrl={appsecBaseUrl}\n appIntegrationId={applicationMappingId ?? \"\"}\n contentModeMappingId={contentModeMappingId}\n modeId={modeId}\n isILMarketplace={isILMarketplace}\n guidelineTitle={activeGuidelineSection?.title ?? \"\"}\n onBack={() => handleUpdateActiveTab(MY_KNOWLEDGE_BASES_TAB_ID)}\n fetchILRBACConfig={fetchRBACConfig}\n guidelineContentProps={guidelineContentProps}\n treeOverrides={resolvedTreeOverrides}\n defaultMarketPlaceRoleId={defaultMarketPlaceRoleId}\n defaultAccessAppIntegrationIds={defaultAccessAppIntegrationIds}\n theme={theme}\n />\n ) : (\n <GuidelineLibraryContent {...guidelineContentProps} />\n )}\n </div>\n <GuidelineFilterPanel\n open={showGuidelineFilterSidebar}\n onClose={handleCloseGuidelineFilters}\n onCancel={handleCloseGuidelineFilters}\n onApply={handleApplyGuidelineFilters}\n sections={draftFilters.map((section) => ({\n ...section,\n options: section.options.map((option) => ({\n ...option,\n onChange: (checked) => updateDraftFilterOption(section.id, option.id, checked),\n })),\n }))}\n classNames={classNames}\n styles={styles}\n />\n </div>\n </ILMarketplaceThemeProvider>\n );\n};\n\nconst ILMarketplaceWrapper = (props: ILMarketplaceWrapperProps) => (\n <QueryClientProvider client={guidelineQueryClient}>\n <ILMarketplaceWrapperInner {...props} />\n </QueryClientProvider>\n);\n\nexport default ILMarketplaceWrapper;\n"],"names":["jsx","BookOpen","ShoppingBag","Heart","Clock4","Star","Bookmark","Folder","Layers","LayoutGrid","Library","Compass","Users","Sparkles","Archive","useInRouterContext","useNavigate","useLocation","applyAxiosConfig","useMemo","getILMarketplaceThemeStyles","useLMSConfigStore","_a","useState","_b","_c","_d","useRef","useQueryClient","useDeleteGuidelineMutation","useAuthStore","useEnvStore","useAppSecRolesStore","useEffect","MF_EVENTS","_e","_f","fetchRBACConfig","_g","_h","FALLBACK_RBAC_CONFIG","useGetAppSecRolesQuery","useLearningTemplateStore","useCallback","initGuidelineRuntimeConfig","section","fetchMarketplaceInstances","fetchMyKnowledgeBaseGuidelines","fetchSavedMarketplaceGuidelines","useQuery","fetchContentTypes","useExternalWorkflowStore","fetchMarketplaceApprovers","SuccessToastContent","_i","fetchMarketplaceInstanceVersion","fetchMarketplaceDomains","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","getGuidelineTitle","mergeGuidelineLabels","jsxs","cssStyles","Plus","ArrowRight","defaultFormatAddedOnLabel","BsFunnel","applicationMappingId","setMarketplaceUserTag","updateInstancePublishStatus","toggleVariantApi","ILMarketplaceThemeProvider","PublishToMarketplaceComponent","Toast","PromoteFlow","GuidelineLibraryTab","GuidelineTooltip","LearningManagementWrapper","GuidelineLibraryContent","GuidelineFilterPanel","QueryClientProvider","guidelineQueryClient"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ILMarketplaceWrapper.js","sources":["../../src/ILMarketplaceWrapper.tsx"],"sourcesContent":["import {\n Archive,\n ArrowRight,\n BookOpen,\n Bookmark,\n Clock4,\n Compass,\n Folder,\n Heart,\n Layers,\n LayoutGrid,\n Library,\n Plus,\n ShoppingBag,\n Sparkles,\n Star,\n Users,\n} from \"lucide-react\";\nimport { useCallback, useEffect, useMemo, useRef, Fragment, useState, type ReactNode } from \"react\";\nimport { QueryClientProvider, useQuery, useQueryClient } from \"@tanstack/react-query\";\nimport { Toast } from \"primereact/toast\";\nimport { BsFunnel } from \"react-icons/bs\";\nimport { LscGuidelineSection } from \"./features/IL-marketplace/types/add-context.types\";\nimport { GuidelineStatusActions, LscGuidelineClassNames, LscGuidelineLabels, LscGuidelineStyles } from \"./features/IL-marketplace/types\";\nimport type { MarketplaceEmptyStateConfig, MarketplaceEmptyStatesConfig, MarketplaceTabValueTypeConfig, MarketplaceValueTypeConfig } from \"./features/IL-marketplace/types\";\nimport { FileItem } from \"./features/IL-marketplace/types/file-item\";\nimport { GuidelineLibrary } from \"./features/IL-marketplace/components/GuidelineLibrary\";\nimport { GuidelineLibraryTab } from \"./features/IL-marketplace/components/GuidelineLibraryTab\";\nimport { GuidelineLibraryContent } from \"./features/IL-marketplace/components/GuidelineLibraryContent\";\nimport type { ExploreHighlightConfig, ExternalShareRbacConfig, GuidelineCardMetadataConfig } from \"./features/IL-marketplace/components/GuidelineLibraryCard\";\nimport { GuidelineFilterPanel } from \"./features/IL-marketplace/components/GuidelineFilterPanel\";\nimport { GuidelineTooltip } from \"./features/IL-marketplace/components/GuidelineTooltip\";\nimport { defaultFormatAddedOnLabel, getGuidelineTitle, mergeGuidelineLabels } from \"./features/IL-marketplace/utils\";\nimport { guidelineQueryClient } from \"./features/IL-marketplace/queryClient\";\nimport { initGuidelineRuntimeConfig } from \"./features/IL-marketplace/services/guideline.runtime.config\";\nimport { useDeleteGuidelineMutation } from \"./features/IL-marketplace/hooks/useDeleteGuidelineMutation\";\nimport type {\n NodeTypeConfig,\n ScopeTreeNode,\n TreeSectionConfig,\n} from \"./adapters/creativeWorkspaceAdapter\";\nimport cssStyles from \"./ILMarketplaceWrapper.module.css\";\nimport { useInRouterContext, useLocation, useNavigate } from \"react-router-dom\";\nimport {\n ContentTypesResponse,\n fetchContentTypes,\n fetchMarketplaceApprovers,\n fetchMarketplaceDomains,\n fetchMarketplaceInstances,\n fetchMarketplaceInstanceVersion,\n fetchMyKnowledgeBaseGuidelines,\n fetchSavedMarketplaceGuidelines,\n setMarketplaceUserTag,\n toggleVariantApi,\n updateInstancePublishStatus,\n MarketplaceDomainNode,\n MarketplaceDomainsResponse,\n MarketplaceInstancesResponse,\n} from \"./features/IL-marketplace/services/IL-marketplace.api\";\nimport AddScopeModalComponent from \"./features/LearningManagement/RuleContent/AddScopeModal\";\nimport { SuccessToastContent } from \"./features/LearningManagement/shared\";\nimport useAuthStore from \"./features/LearningManagement/store/useAuthStore\";\nimport { useExternalWorkflowStore } from \"./features/LearningManagement/store/useExternalWorkflowStore\";\nimport { useLearningTemplateStore } from \"./features/LearningManagement/store/useLearningTemplateStore\";\nimport { useLMSConfigStore } from \"./features/LearningManagement/store/useLMSConfigStore\";\nimport useEnvStore, { RbacConfig } from \"./features/LearningManagement/store/useEnvStore\";\nimport { useAppSecRolesStore } from \"./features/LearningManagement/store/useAppSecRolesStore\";\nimport { useGetAppSecRolesQuery } from \"./features/LearningManagement/queries/useApprovalQueries\";\nimport { fetchRBACConfig } from \"./features/IL-marketplace/services/instant-learning.api\";\nimport { FALLBACK_RBAC_CONFIG } from \"./features/IL-marketplace/constants\";\nimport { LearningManagementWrapper, PromoteFlow, PublishToMarketplaceComponent } from \"./features/IL-marketplace\";\nimport { usePromoteFlowStore } from \"./features/IL-marketplace/PromoteFlow/promote-flow.store\";\nimport type { InstantLearningApiItem, PublishStepConfig } from \"./features/IL-marketplace\";\nimport type { MiddleDrawerOverrides } from \"./features/LearningManagement/types\";\nimport { AxiosRequestConfig } from \"axios\";\nimport { applyAxiosConfig } from \"./api/transport\";\nimport { ILMarketplaceThemeProvider, getILMarketplaceThemeStyles, type ILMarketplaceTheme } from \"./features/IL-marketplace/marketplaceTheme\";\nimport { MF_EVENTS, type ILMarketplaceConfig, type IMicroFrontendApi } from \"./features/IL-marketplace/utils/microfrontend\";\n\n// import { MF_EVENTS, type ILMarketplaceConfig, type IMicroFrontendApi } from \"./features/IL-marketplace/utils/microfrontend\";\nexport type { ILMarketplaceTheme } from \"./features/IL-marketplace/marketplaceTheme\";\nexport type { MarketplaceEmptyStateConfig, MarketplaceEmptyStatesConfig } from \"./features/IL-marketplace/types\";\n\nexport type { ILMarketplaceConfig, IMicroFrontendApi, SendILMarketplaceDataPayload } from \"./features/IL-marketplace/utils/microfrontend\";\nexport { MF_EVENTS }\n\nexport const IL_MARKETPLACE_TAB_ID = \"IL Marketplace\";\nexport const MY_KNOWLEDGE_BASES_TAB_ID = \"My_Knowledge_Bases\";\nexport const SAVED_TAB_ID = \"Saved\";\n\n\nexport const IL_MARKETPLACE_VIEW = {\n marketplace: IL_MARKETPLACE_TAB_ID,\n myKnowledgeBases: MY_KNOWLEDGE_BASES_TAB_ID,\n saved: SAVED_TAB_ID,\n publishing: \"publishing\",\n promote: \"promote\",\n} as const;\n\n/** Any of the known views, or a custom tab id from `guidelineSections`. */\nexport type ILMarketplaceView =\n | (typeof IL_MARKETPLACE_VIEW)[keyof typeof IL_MARKETPLACE_VIEW]\n | (string & {});\n\n/** Relative (no host prefix) route suffixes. `basePath` is prepended to these at runtime. */\nconst DEFAULT_TAB_ROUTES: Record<string, string> = {\n [IL_MARKETPLACE_TAB_ID]: \"/marketplace\",\n [MY_KNOWLEDGE_BASES_TAB_ID]: \"/marketplace/my-knowledge-base\",\n [SAVED_TAB_ID]: \"/marketplace/saved\",\n [IL_MARKETPLACE_VIEW.publishing]: \"/marketplace/publish\",\n [IL_MARKETPLACE_VIEW.promote]: \"/marketplace/promote\",\n};\n\nconst DEFAULT_GUIDELINE_SECTIONS: LscGuidelineSection[] = [\n {\n id: IL_MARKETPLACE_TAB_ID,\n title: \"IL Marketplace\",\n route: \"/marketplace\",\n isActive: true,\n icon: <BookOpen className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n showTreeSidebar: true,\n },\n {\n id: MY_KNOWLEDGE_BASES_TAB_ID,\n title: \"My Knowledge Bases\",\n route: \"/marketplace/my-knowledge-base\",\n icon: <ShoppingBag className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n },\n {\n id: SAVED_TAB_ID,\n title: \"Saved\",\n route: \"/marketplace/saved\",\n icon: <Heart className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n },\n {\n id: \"recentlyAccessed\",\n title: \"Recently Used\",\n icon: <Clock4 className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n isDisabled: true,\n description: \"Coming soon\",\n },\n];\n\n/** JSON uses stable icon names; JSX icon props remain supported for existing consumers. */\nconst MARKETPLACE_TAB_ICONS: Record<string, ReactNode> = {\n \"book-open\": <BookOpen className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n \"shopping-bag\": <ShoppingBag className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n heart: <Heart className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n \"clock-4\": <Clock4 className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n star: <Star className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n bookmark: <Bookmark className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n folder: <Folder className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n layers: <Layers className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n \"layout-grid\": <LayoutGrid className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n library: <Library className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n compass: <Compass className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n users: <Users className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n sparkles: <Sparkles className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n archive: <Archive className=\"h-5 w-5 flex-shrink-0\" strokeWidth={2} />,\n};\n\nconst REQUIRED_MARKETPLACE_TAB_IDS = new Set([IL_MARKETPLACE_TAB_ID, MY_KNOWLEDGE_BASES_TAB_ID]);\n\nconst normalizeMarketplaceTabId = (id: string) => {\n if (id === \"IL_Marketplace\") return IL_MARKETPLACE_TAB_ID;\n if (id === \"My Knowledge Bases\") return MY_KNOWLEDGE_BASES_TAB_ID;\n return id;\n};\n\nconst resolveJsonSections = (\n tabs: MarketplaceTabValueTypeConfig[] | undefined,\n legacySections: LscGuidelineSection[]\n): LscGuidelineSection[] | undefined => {\n if (!tabs) return undefined;\n\n const fallbackSections = new Map<string, LscGuidelineSection>(\n [...DEFAULT_GUIDELINE_SECTIONS, ...legacySections].map((section) => [section.id, section])\n );\n const includedIds = new Set<string>();\n const sections: LscGuidelineSection[] = tabs.map(({ icon, id, title, ...tab }) => {\n const normalizedId = normalizeMarketplaceTabId(id);\n const fallback = fallbackSections.get(normalizedId);\n includedIds.add(normalizedId);\n return {\n ...fallback,\n ...tab,\n id: normalizedId,\n title: title ?? fallback?.title ?? normalizedId,\n route: tab.route ?? fallback?.route ?? DEFAULT_TAB_ROUTES[normalizedId],\n icon: icon ? MARKETPLACE_TAB_ICONS[icon] ?? fallback?.icon : fallback?.icon,\n ...(REQUIRED_MARKETPLACE_TAB_IDS.has(normalizedId) ? { isDisabled: false } : {}),\n };\n });\n\n REQUIRED_MARKETPLACE_TAB_IDS.forEach((id) => {\n if (includedIds.has(id)) return;\n const fallback = fallbackSections.get(id);\n if (fallback) sections.push({ ...fallback, isDisabled: false });\n });\n\n return sections;\n};\n\n// const normalizeRoutePath = (path: string) => {\n// if (!path) return \"/\";\n// const withLeadingSlash = path.startsWith(\"/\") ? path : `/${path}`;\n// const trimmed = withLeadingSlash.replace(/\\/+$/, \"\");\n// return trimmed || \"/\";\n// };\nconst normalizeRoutePath = (path: string) => {\n if (!path) return \"/\";\n let decoded = path;\n try {\n decoded = decodeURIComponent(path);\n } catch {\n // malformed percent-encoding — fall back to the raw value rather than throwing\n }\n const withLeadingSlash = decoded.startsWith(\"/\") ? decoded : `/${decoded}`;\n const trimmed = withLeadingSlash.replace(/\\/+$/, \"\");\n return trimmed || \"/\";\n};\n/** Joins a base path and a relative route without producing doubled or missing slashes. */\n// const joinPath = (basePath: string, relativePath: string): string => {\n// const cleanBase = basePath ? basePath.replace(/\\/+$/, \"\") : \"\";\n// const cleanRelative = relativePath.startsWith(\"/\") ? relativePath : `/${relativePath}`;\n// return `${cleanBase}${cleanRelative}` || \"/\";\n// };\nconst joinPath = (basePath: string, relativePath: string): string => {\n const cleanBase = basePath ? basePath.replace(/\\/+$/, \"\") : \"\";\n const cleanRelative = relativePath.startsWith(\"/\") ? relativePath : `/${relativePath}`;\n\n // If the current path already starts with cleanBase, and cleanBase is non-trivial,\n // don't re-add it — this happens when basePath detection re-runs against a URL\n // that's already prefixed (e.g. after a remount mid-navigation).\n if (cleanBase && typeof window !== \"undefined\") {\n const currentPath = window.location.pathname;\n if (currentPath.startsWith(cleanBase + cleanRelative)) {\n return currentPath; // already there, don't re-append\n }\n }\n\n return `${cleanBase}${cleanRelative}` || \"/\";\n};\n/**\n * Safe wrapper around react-router's useNavigate: returns null instead of throwing when this\n * component is rendered outside a Router context, so the fallback (manual pushState) path can\n * be used instead. useInRouterContext() itself never throws, and a given mount point does not\n * toggle in/out of a Router context across renders, so this conditional hook call is safe here\n * even though it deviates from the strict rules-of-hooks lint rule.\n */\nfunction useSafeRouterNavigate() {\n const inRouterContext = useInRouterContext();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const navigate = inRouterContext ? useNavigate() : null;\n return navigate;\n}\n\n/** Safe wrapper around react-router's useLocation, mirroring useSafeRouterNavigate above. */\nfunction useSafeRouterLocation() {\n const inRouterContext = useInRouterContext();\n // eslint-disable-next-line react-hooks/rules-of-hooks\n const location = inRouterContext ? useLocation() : null;\n return location;\n}\n\n/**\n * Detects the host's URL prefix (e.g. \"/mode/Instant Learning Mode\") with NO prop needed from\n * the consumer, by comparing the CURRENT browser path against the relative route of whichever\n * tab is currently active.\n *\n * Example: current path is \"/mode/Instant Learning Mode/marketplace\", and we know the\n * IL_MARKETPLACE_TAB_ID's relative route is \"/marketplace\". Stripping that known suffix off the\n * end leaves \"/mode/Instant Learning Mode\" — the prefix. Whatever the consumer's mount depth or\n * structure, this works because it never tries to parse/guess the shape of the prefix itself; it\n * only ever removes a suffix it already knows for certain.\n *\n * Returns null if no known relative route matches as a suffix of the current path (e.g. the\n * consumer hasn't routed to this component's tabs yet) — callers should fall back to \"\" in that\n * case, or retry on next navigation.\n */\nconst detectBasePathFromCurrentUrl = (\n pathname: string,\n sections: LscGuidelineSection[]\n): string | null => {\n const normalizedCurrent = normalizeRoutePath(pathname);\n\n const relativeRoutes = sections\n .map((section) => section.route ?? DEFAULT_TAB_ROUTES[section.id])\n .filter((route): route is string => Boolean(route))\n .map(normalizeRoutePath)\n .sort((a, b) => b.length - a.length);\n\n for (const relativeRoute of relativeRoutes) {\n if (normalizedCurrent === relativeRoute) {\n return \"\"; // no prefix at all — mounted at router root\n }\n if (normalizedCurrent.endsWith(relativeRoute)) {\n return normalizedCurrent.slice(0, normalizedCurrent.length - relativeRoute.length);\n }\n }\n\n // Nothing matched: the host hasn't routed into any of this wrapper's own\n // sub-routes yet (e.g. it just mounted at the mode's bare root, \"/mode/<name>\",\n // with no \"/marketplace\" suffix). Treat the current path itself as the prefix —\n // whatever comes after it is entirely this wrapper's own routing from here on.\n return normalizedCurrent;\n};\n\nconst decodeJwtPayload = (token?: string): Record<string, any> | undefined => {\n if (!token) return undefined;\n try {\n const payload = token.split(\".\")[1];\n const normalized = payload.replace(/-/g, \"+\").replace(/_/g, \"/\");\n return JSON.parse(atob(normalized));\n } catch {\n return undefined;\n }\n};\n\nconst toFileItem = (item: FileItem & { description?: string | null }): FileItem => {\n const { description, ...rest } = item;\n return {\n ...rest,\n is_legacy: false,\n instant_learning_description: rest.instant_learning_description ?? description ?? undefined,\n };\n};\n\nconst toFileItems = (response: MarketplaceInstancesResponse): FileItem[] => {\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to fetch guidelines\");\n }\n const result = (response.responseData?.data?.results ?? response.responseData?.data?.result ?? []) as unknown as (FileItem & { description?: string | null })[];\n return result.map(toFileItem);\n};\n\nconst toScopeTreeNode = (node: MarketplaceDomainNode): ScopeTreeNode => ({\n id: node.id,\n name: node.name,\n type: node.scope_type as ScopeTreeNode[\"type\"],\n metrics: {\n learningsCount: node.metrics?.learningsCount ?? 0,\n stationsCount: node.metrics?.stationsCount,\n },\n children: (node.children ?? []).map(toScopeTreeNode),\n});\n\nconst toDomainTree = (response: MarketplaceDomainsResponse): ScopeTreeNode | null => {\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to fetch marketplace domains\");\n }\n const node = response.responseData?.data?.data;\n return node ? toScopeTreeNode(node) : null;\n};\n\nconst TOPIC_FILTER_SECTION_ID = \"topic\";\n\ntype MarketplaceScopeNode = {\n id: string;\n name: string;\n children?: MarketplaceScopeNode[];\n};\n\n// rootScope has no default on purpose: without host copy the root keeps its previous state.\nconst DEFAULT_MARKETPLACE_EMPTY_STATES: Record<\n Exclude<keyof MarketplaceEmptyStatesConfig, \"rootScope\">,\n Required<MarketplaceEmptyStateConfig>\n> = {\n scopeWithChildren: {\n title: \"Welcome to the Marketplace\",\n description: \"Browse the categories on the left to discover published {learningTerm}.\",\n },\n leafScope: {\n title: \"No {learningTerm} found for {scope}\",\n description: \"There are no published {learningTerm} in this category yet.\",\n },\n};\n\nconst findScopeTreeNode = (node: MarketplaceScopeNode | null, id: string): MarketplaceScopeNode | null => {\n if (!node) return null;\n if (node.id === id) return node;\n\n for (const child of node.children ?? []) {\n const match = findScopeTreeNode(child, id);\n if (match) return match;\n }\n\n return null;\n};\n\nconst replaceMarketplacePlaceholders = (\n value: string,\n scopeName: string,\n learningTerm: string\n): string => value\n .replace(/\\{scope\\}/g, scopeName)\n .replace(/\\{learningTerm\\}/g, learningTerm);\n\nconst toPluralLearningTerm = (learningTerm: string): string =>\n learningTerm.toLocaleLowerCase().endsWith(\"s\") ? learningTerm : `${learningTerm}s`;\n\nconst cloneFilterSection = (section: GuidelineFilterSectionState): GuidelineFilterSectionState => ({\n ...section,\n options: section.options.map((option) => ({ ...option })),\n});\n\nconst clearFilterSection = (section: GuidelineFilterSectionState): GuidelineFilterSectionState => ({\n ...section,\n options: section.options.map((option: GuidelineFilterOptionState) => ({\n ...option,\n checked: false,\n })),\n});\n\nconst cloneFilterSections = (sections: GuidelineFilterSectionState[]): GuidelineFilterSectionState[] =>\n sections.map(cloneFilterSection);\n\nconst getSelectedOptionIds = (\n sections: GuidelineFilterSectionState[],\n sectionId: string\n): string[] =>\n sections.find((section) => section.id === sectionId)?.options\n .filter((option) => option.checked)\n .map((option) => option.id) ?? [];\n\nconst buildResolvedFilterSections = (\n definitions: GuidelineFilterSectionState[],\n currentSelections: GuidelineFilterSectionState[]\n): GuidelineFilterSectionState[] => {\n const selectionsBySectionId = new Map(currentSelections.map((section) => [section.id, section]));\n\n return definitions.map((definition) => {\n const currentSelection = selectionsBySectionId.get(definition.id);\n\n if (!currentSelection) {\n return cloneFilterSection(definition);\n }\n\n const checkedByOptionId = new Map(\n currentSelection.options.map((option) => [option.id, option.checked])\n );\n\n return {\n ...definition,\n options: definition.options.map((option) => ({\n ...option,\n checked: checkedByOptionId.get(option.id) ?? option.checked,\n })),\n };\n });\n};\n\nconst getTopicFilterSection = (\n response: ContentTypesResponse\n): GuidelineFilterSectionState | null => {\n const contentTypes = response.responseData?.data?.results ?? [];\n const topicsById = new Map<string, string>();\n\n for (const contentType of contentTypes) {\n if (contentType.topic_id && contentType.topic_title) {\n topicsById.set(contentType.topic_id, contentType.topic_title);\n }\n }\n\n if (!topicsById.size) return null;\n\n return {\n id: TOPIC_FILTER_SECTION_ID,\n title: \"Topic\",\n options: Array.from(topicsById, ([id, label]) => ({\n id,\n label,\n checked: false,\n })),\n };\n};\ntype MyKnowledgeBaseQueryParams = {\n content_mode_mapping_id: string;\n status?: string[];\n ownership?: string[];\n};\nexport type ILMarketplaceLabelsConfig = {\n testKnowledgebaseLabel?: string;\n emptyTitle?: string;\n emptyDescription?: string;\n searchPlaceholder?: string;\n searchEmptyTitle?: string;\n addKnowledgeBaseLabel?: string;\n addKnowledgeBaseDisabledTooltip?: string;\n /** Scope-aware empty copy used when no Marketplace instances are returned. */\n emptyStates?: MarketplaceEmptyStatesConfig;\n};\n\n/** Controls the optional Content Type and Topic metadata displayed on marketplace cards. */\nexport type ILMarketplaceCardMetadataConfig = GuidelineCardMetadataConfig;\n\nexport type GuidelineFilterSectionState = {\n id: string;\n title: string;\n singleSelect?: boolean;\n options: GuidelineFilterOptionState[];\n};\n\nexport type GuidelineFilterOptionState = {\n id: string;\n label: string;\n checked: boolean;\n disabled?: boolean;\n};\n\nexport type ILMarketplaceWrapperProps = {\n guidelineSections?: LscGuidelineSection[];\n guidelineFiles?: FileItem[];\n /** Fallback sidebar tree used until `applicationMappingId` resolves via the marketplace domain API. */\n treeSidebarData?: ScopeTreeNode;\n /** Legacy card/landing copy. Marketplace UI labels belong in `marketPlace.labels` JSON. */\n labels?: LscGuidelineLabels;\n isILMarketplace?: boolean;\n handleCardClickCallback?: (guideline: FileItem) => void;\n handleViewButtonCallback?: (guideline: FileItem) => void;\n handlePreviewButtonCallback?: (guideline: FileItem) => void;\n /** Pin tooltip messages keyed by `instant_learning_id`. */\n guidelinePinnedMessages?: Record<string, string>;\n /**\n * Status-driven primary button (Configure for `statusActions.configurableStatuses`,\n * Test Template otherwise). Applied only when `statusActions.modeName` is set; any\n * other mode keeps the existing `handleViewButtonCallback` behaviour.\n */\n statusActions?: GuidelineStatusActions<FileItem>;\n previewDisabledTooltip?: string;\n /**\n * Shows the publish icon on every library card and runs the built-in `PublishToMarketplaceComponent`\n * flow on click. Ignored when `handlePublishButtonCallback` is supplied.\n */\n enablePublishToMarketplace?: boolean;\n /**\n * Publish icon click, same contract as `handlePreviewButtonCallback`: supplying it both shows the\n * icon and replaces the built-in flow, so the host can render whatever it wants instead.\n */\n handlePublishButtonCallback?: (guideline: FileItem) => void;\n /** Step overrides for the built-in publish flow; defaults to `DEFAULT_PUBLISH_STEPS`. */\n publishSteps?: PublishStepConfig[];\n /**\n * Handler for \"View Template\" on the publish flow's Template Details step. Omit it and the action\n * is not rendered at all; provide it and the action appears, with the click doing nothing except\n * calling this — the flow opens no preview of its own.\n *\n * Receives the template as the publish flow fetched it, which is richer and fresher than the\n * card's `FileItem`, and is deliberately independent of `handlePreviewButtonCallback`.\n */\n handleViewTemplateCallback?: (template: Partial<InstantLearningApiItem>) => void;\n /** Promote button click; omit it to use the built-in Promote ILKB screen. */\n handlePromoteButtonCallback?: (guideline: FileItem) => void;\n /** Shows a Promote button beside Select and opens the built-in Promote ILKB screen by default. */\n enablePromoteFlow?: boolean;\n /**\n * Full header node for the built-in publish flow, for hosts that would rather hand one over than\n * render it themselves. Omit it to get the default back row.\n */\n renderPublishHeader?: (context: { guideline: FileItem; onBack: () => void }) => ReactNode;\n /** Called after the built-in publish flow is submitted, once the flow has closed. */\n onPublished?: (guideline: FileItem) => void;\n /**\n * Hands the host the built-in publish flow's \"Validate & proceed\" action (same one the Template\n * Details step's own button calls), so a host-rendered button outside this library\n */\n onValidateAndProceedReady?: (trigger: () => void) => void;\n /** Host-supplied delete handler for the library card's three-dot menu; the menu item is hidden when omitted. */\n onDeleteGuideline?: (guideline: FileItem) => void | Promise<void>;\n onApproveGuideline?: (guideline: FileItem) => void | Promise<void>;\n onRejectGuideline?: (guideline: FileItem) => void | Promise<void>;\n /** \"Create New Template\" click — the host opens its own TeachMePlugin from here. */\n onAddKnowledgeBase?: () => void;\n marketplaceLabels?: ILMarketplaceLabelsConfig;\n /**\n * Local `marketPlace` JSON override. Intended for hosts/playgrounds that already have the\n * value-type JSON in memory; it takes precedence over the fetched value-type configuration.\n */\n marketPlaceConfig?: MarketplaceValueTypeConfig;\n /** Content Type and Topic display settings for template cards. */\n cardMetadata?: ILMarketplaceCardMetadataConfig;\n fetchGuidelinesForTab?: (tabId: string) => Promise<FileItem[]>;\n applicationMappingId?: string;\n scopeId?: string;\n authToken?: string;\n baseUrl: string;\n /** Marketplace content-mode mapping UUID used to scope all marketplace data. */\n contentModeMappingId: string;\n userDetails: Record<string, any>;\n baseWebsocketUrl: string;\n assistantName: string;\n appsecRbacUrl: string;\n appsecBaseUrl: string;\n modeId?: string;\n /** Passed through to the built-in publish flow's TeachMePlugin `config`. Defaults to \"techolution\". */\n organizationName?: string;\n /** Passed through to the built-in publish flow's TeachMePlugin `config` as `BASE_APPMOD_URL`. */\n appmodUrl?: string;\n /** Passed through to the built-in publish flow's TeachMePlugin `config` as `CONFIG_MASTER_NAME`. */\n configMasterName?: string;\n /**\n * Overrides for the Learning Management scope tree on the IL Marketplace tab. Omitted fields keep the LMS defaults.\n */\n treeOverrides?: MiddleDrawerOverrides;\n /** Host-supplied class name overrides, merged over the wrapper's internal defaults (host keys win). */\n classNames?: LscGuidelineClassNames;\n /** Per-component inline style overrides for precise changes such as font size or font weight. */\n styles?: LscGuidelineStyles;\n /**\n * Scoped visual tokens for the complete marketplace experience, including Learning Management.\n * Omitted values preserve the current library appearance.\n */\n theme?: ILMarketplaceTheme;\n isShareEnabled?: boolean;\n /** Tab ids the share action is shown on; defaults to `[MY_KNOWLEDGE_BASES_TAB_ID]`. */\n shareEnabledTabIds?: string[];\n /** Statuses (lowercased) the share action is shown for; omit to allow sharing regardless of status. */\n shareableGuidelineStatuses?: string[];\n // RBAC config for external host sharing, if applicable. If omitted, external sharing is disabled.\n externalShareRbacConfig?: ExternalShareRbacConfig;\n /** Whether to display the dashboard button in the guideline library content. */\n showDashboardButton?: boolean;\n /** Callback function invoked when the dashboard button is clicked. */\n onDashboardClick?: () => void;\n\n /**\n * The URL prefix this wrapper is mounted under in the host app, e.g. `/mode/Instant Learning Mode`.\n * ALL tab routes (default or from `guidelineSections[].route`) are resolved as `basePath + route`\n * when navigating and when matching the active tab from the URL. Pass whatever prefix your router\n * uses to reach this component — this is the one thing that varies per consumer, so it is the one\n * thing consumers must supply explicitly rather than the wrapper trying to guess it.\n * Defaults to \"\" (mounted at the router root).\n *\n * IMPORTANT: this wrapper does NOT render its own Router. It must be mounted inside the host's\n * existing <BrowserRouter>/<Routes> tree (with a matching route registered for\n * `basePath + \"/marketplace/*\"`), so that `useNavigate()`/`useLocation()` resolve against the\n * same router instance the rest of the host app uses.\n */\n basePath?: string;\n exploreHighlightGuidelineIds?: string[];\n /** Label + styling applied to the explore/preview button for ids in `exploreHighlightGuidelineIds`. */\n exploreHighlightConfig?: ExploreHighlightConfig;\n axiosConfig?: AxiosRequestConfig;\n mfApi?: IMicroFrontendApi;\n config?: ILMarketplaceConfig;\n /**\n * Initial section for state-driven hosts. This is read when the wrapper mounts, allowing a\n * host to restore the tab it was on after temporarily rendering another view.\n */\n initialActiveTabId?: string;\n /** Called when the wrapper selects a valid marketplace section. */\n onTabChange?: (tabId: string) => void;\n disableRouting?: boolean;\n};\n// Stable reference so an omitted `shareEnabledTabIds` doesn't create a new array (and thus a new\n// `isShareEnabledForActiveTab`) on every render.\nconst DEFAULT_SHARE_ENABLED_TAB_IDS = [MY_KNOWLEDGE_BASES_TAB_ID];\n\n// Section ids are local only — never sent. It is each section's checked *option* ids that go to the\n// API, as the query param named where the request params are built.\nconst statusFilterSectionId = \"section\"; // -> status=published|completed|draft|under_review\nconst ownershipFilterSectionId = \"ownership\"; // -> ownership=owned|shared\nconst initialFilters: GuidelineFilterSectionState[] = [\n {\n id: statusFilterSectionId,\n title: \"Status\",\n options: [\n { id: \"published\", label: \"Published\", checked: false },\n { id: \"completed\", label: \"Completed\", checked: false },\n { id: \"draft\", label: \"Draft\", checked: false },\n { id: \"under_review\", label: \"Under Review\", checked: false },\n\n ],\n },\n {\n id: ownershipFilterSectionId,\n title: \"Ownership\",\n options: [\n { id: \"owned\", label: \"Created by me\", checked: false },\n { id: \"shared\", label: \"Shared with me\", checked: false },\n ],\n },\n];\nconst treeSectionsConfig: TreeSectionConfig[] = [\n {\n id: 'learnings',\n label: 'Knowledge Bases',\n icon: BookOpen,\n badgeKey: 'learningsCount'\n },\n];\n\nconst nodeTypesConfig: NodeTypeConfig[] = [\n { type: 'GLOBAL', label: 'Global', addChildLabel: 'Add Domain', addChildType: 'SCOPE' },\n { type: 'SCOPE', label: 'Domain', addChildLabel: 'Add Subdomain', addChildType: 'SUBSCOPE' },\n { type: 'SUBSCOPE', label: 'Subdomain' },\n];\n\nconst defaultClassNames: LscGuidelineClassNames = {\n landingDebugLink: \"hidden\",\n landingRoot: \"h-full overflow-visible\",\n landingContent: \"!py-6 flex h-full min-h-0 flex-col overflow-visible\",\n landingBody: \"mt-12 grid w-full grid-cols-1 flex-1 min-h-0 overflow-visible items-stretch\",\n library: \"flex min-h-0 flex-col w-full overflow-visible\",\n libraryTabs: \"shrink-0\",\n libraryControls: \"shrink-0\",\n libraryScrollArea: \"mt-6 min-h-0 flex-1 pr-2\",\n cart: \"hidden\",\n libraryCardSelectButton: \"flex-row-reverse font-normal w-fit\",\n libraryCardDate: \"text-xs font-light\",\n landingTitle: \"bg-[linear-gradient(223.66deg,_#33D2FF_-48.24%,_#3D68DE_28.7%,_#9845E8_94.92%)] bg-clip-text text-transparent\",\n treeSidebarWrapper: \"flex flex-col border-r border-[#E3E6EA]\",\n guideLineLibraryContent: \"border border-[#E3E6EA] rounded-xl mt-5 flex flex-row\",\n treeSidebarHeading: \"p-4\",\n guideLineLibraryCardContainer: \"px-4\"\n};\nconst ILMarketplaceWrapperInner = ({\n guidelineSections: initialGuidelineSections,\n guidelineFiles,\n treeSidebarData,\n labels = {},\n isILMarketplace = true,\n handleViewButtonCallback,\n handleCardClickCallback,\n handlePreviewButtonCallback, // add\n guidelinePinnedMessages,\n statusActions,\n previewDisabledTooltip,\n enablePublishToMarketplace = false,\n handlePublishButtonCallback,\n publishSteps,\n handleViewTemplateCallback,\n handlePromoteButtonCallback,\n enablePromoteFlow = false,\n renderPublishHeader,\n onPublished,\n onValidateAndProceedReady,\n onDeleteGuideline,\n onApproveGuideline,\n onRejectGuideline,\n onAddKnowledgeBase,\n marketplaceLabels,\n marketPlaceConfig,\n cardMetadata,\n fetchGuidelinesForTab,\n applicationMappingId,\n scopeId,\n authToken: authTokenProp,\n baseUrl,\n contentModeMappingId,\n userDetails,\n baseWebsocketUrl,\n assistantName,\n appsecRbacUrl,\n appsecBaseUrl,\n modeId,\n organizationName,\n appmodUrl,\n configMasterName,\n treeOverrides,\n classNames: classNamesProp,\n styles,\n theme,\n isShareEnabled = true,\n shareEnabledTabIds = DEFAULT_SHARE_ENABLED_TAB_IDS,\n shareableGuidelineStatuses,\n externalShareRbacConfig,\n showDashboardButton,\n onDashboardClick,\n basePath = \"\",\n exploreHighlightGuidelineIds,\n exploreHighlightConfig,\n axiosConfig,\n mfApi,\n config,\n initialActiveTabId,\n onTabChange,\n disableRouting = false,\n}: ILMarketplaceWrapperProps) => {\n\n // Applied during render, before any child can fire a request. No-op when the\n // host does not pass one, so axios keeps its own default transport.\n applyAxiosConfig(axiosConfig);\n const defaultMarketPlaceRoleId = externalShareRbacConfig?.defaultMarketPlaceRoleId;\n const defaultAccessAppIntegrationIds = externalShareRbacConfig?.defaultAccessAppIntegrationIds;\n // Hosts write `externalShareRbacConfig` inline, so its array is a new identity\n // every render. Effects below depend on this key instead, never the array.\n const defaultAccessAppIntegrationIdsKey = defaultAccessAppIntegrationIds?.join(',');\n const classNames = useMemo(\n () => ({ ...defaultClassNames, ...classNamesProp }),\n [classNamesProp]\n );\n const themeStyles = useMemo(() => getILMarketplaceThemeStyles(theme), [theme]);\n basePath=basePath ? decodeURIComponent(basePath) : \"\";\n const fetchedMarketplaceValueTypeConfig = useLMSConfigStore((state) => state.lmsConfig?.marketplace);\n const marketplaceValueTypeConfig = marketPlaceConfig ?? fetchedMarketplaceValueTypeConfig;\n const legacySections = initialGuidelineSections ?? DEFAULT_GUIDELINE_SECTIONS;\n const jsonSections = useMemo(\n () => resolveJsonSections(marketplaceValueTypeConfig?.tabs, legacySections),\n [marketplaceValueTypeConfig?.tabs, legacySections]\n );\n\n // Both are \"safe\" — null when this component happens to render outside any Router context,\n // so the pushState fallback further down can still work rather than throwing.\n const routerNavigate = useSafeRouterNavigate();\n const routerLocation = useSafeRouterLocation();\n\n // Falls back to window.location when rendered outside a Router context (defensive only —\n // this component is designed to be mounted inside the host's existing Router).\n const currentPathnameForDetection =\n routerLocation?.pathname ??\n (typeof window !== \"undefined\" ? window.location.pathname : \"/\");\n\n const sectionsForDetection = useMemo(\n () => jsonSections ?? legacySections,\n [jsonSections, legacySections]\n );\n const [internalActiveTabId, setInternalActiveTabId] = useState<string>(\n () => {\n const requestedTab = sectionsForDetection.find(\n (section) => section.id === initialActiveTabId && !section.isDisabled\n );\n const configuredActiveTab = sectionsForDetection.find(\n (section) => section.isActive && !section.isDisabled\n );\n return requestedTab?.id ?? configuredActiveTab?.id ?? sectionsForDetection[0]?.id ?? IL_MARKETPLACE_TAB_ID;\n }\n );\n // Captured ONCE, from the URL the browser was actually on when this component mounted, and\n // never recomputed afterward. This is what makes it safe to reuse on every later navigation\n // even after the URL has already changed — recomputing from a post-navigation URL is exactly\n // what caused the prefix to get lost in earlier attempts.\n //\n // If an explicit `basePath` prop is supplied, it always wins (useful when the consumer knows\n // the prefix up front and doesn't want to rely on detection at all, e.g. on first mount before\n // any route has resolved).\n const cleanBase = basePath ? basePath.replace(/\\/+$/, \"\") : null;\n\n const basePathRef = useRef<string | null>(cleanBase);\n if (basePathRef.current === null) {\n const detected = detectBasePathFromCurrentUrl(currentPathnameForDetection, sectionsForDetection);\n basePathRef.current = detected ?? \"\";\n }\n const normalizedBasePath = basePathRef.current;\n // const basePathRef = useRef<string | null>(basePath ? basePath.replace(/\\/+$/, \"\") : null);\n // if (basePathRef.current === null) {\n // const detected = detectBasePathFromCurrentUrl(currentPathnameForDetection, sectionsForDetection);\n // if (detected !== null) {\n // basePathRef.current = detected;\n // }\n // }\n // const normalizedBasePath = basePathRef.current ?? \"\";\n\n const queryClient = useQueryClient();\n const deleteGuidelineMutation = useDeleteGuidelineMutation();\n const user = useAuthStore((state) => state.user);\n const setUser = useAuthStore((state) => state.setUser);\n const marketplaceLearningTerm = useLMSConfigStore(\n (state) => state.lmsConfig?.agents?.LearningTerm?.trim() || \"Guidelines\"\n );\n const rbacConfig = useEnvStore((state) => state.rbacConfig);\n const setRbacConfig = useEnvStore((state) => state.setRbacConfig);\n const appsecRoles = useAppSecRolesStore((state) => state.roles);\n const setAppsecRoles = useAppSecRolesStore((state) => state.setRoles);\n const authToken = authTokenProp || userDetails?.accessToken;\n const decodedTokenPayload = useMemo(() => decodeJwtPayload(authToken), [authToken]);\n const decodedUserEmail = decodedTokenPayload?.email as string | undefined;\n // Field-level merge preserves legacy props while ensuring JSON is authoritative.\n const resolvedMarketplaceLabels: ILMarketplaceLabelsConfig = {\n ...(marketplaceLabels ?? {}),\n ...(marketplaceValueTypeConfig?.labels ?? {}),\n };\n\n const marketplaceDispatchRef = useRef({ mfApi, config });\n const hasDispatchedRef = useRef(false);\n\n useEffect(() => {\n if (hasDispatchedRef.current) return;\n\n // Keep the ref in sync for other consumers, but drive the dispatch off the\n // live props — the host API can be injected a tick after first render.\n marketplaceDispatchRef.current = { mfApi, config };\n\n console.log(\"MFapi lib\", { hasApi: !!mfApi, config });\n\n if (!mfApi || typeof mfApi.dispatch !== \"function\") {\n console.log(\"skipping SEND_IL_MARKETPLACE_DATA - mfApi.dispatch not available yet\");\n return;\n }\n\n mfApi.dispatch(MF_EVENTS.SEND_IL_MARKETPLACE_DATA, { config: config ?? {} });\n hasDispatchedRef.current = true;\n console.log(\"dispatched SEND_IL_MARKETPLACE_DATA\", config ?? {});\n }, [mfApi, config]);\n\n useEffect(() => {\n if (!authToken || !decodedTokenPayload) return;\n if (useAuthStore.getState().user?.accessToken) return;\n\n setUser({\n _id: decodedTokenPayload._id ?? \"\",\n email: decodedTokenPayload.email ?? \"\",\n accessToken: authToken,\n firstname: decodedTokenPayload.firstname ?? \"\",\n lastname: decodedTokenPayload.lastname ?? \"\",\n provider: {\n provider: \"\",\n type: \"\",\n providerAccountId: \"\",\n access_token: \"\",\n expires_at: 0,\n refresh_token: \"\",\n scope: \"\",\n id_token: \"\",\n name: \"\",\n email: decodedTokenPayload.email ?? \"\",\n },\n });\n }, [authToken, decodedTokenPayload, setUser]);\n\n // Independently resolve RBAC config for this wrapper instead of relying on\n // LearningManagement having already hydrated useEnvStore elsewhere.\n useEffect(() => {\n if (!applicationMappingId || !baseUrl || !authToken) return;\n let cancelled = false;\n\n fetchRBACConfig(baseUrl, authToken, applicationMappingId)\n .then((data) => {\n if (cancelled) return;\n const resolvedConfig: RbacConfig = {\n applicationName: data?.application_name ?? FALLBACK_RBAC_CONFIG.applicationName,\n applicationId: data?.application_id ?? FALLBACK_RBAC_CONFIG.applicationId,\n moduleId: data?.module_data?.Scopes ?? FALLBACK_RBAC_CONFIG.moduleId,\n applicationModuleId: data?.module_data?.General ?? FALLBACK_RBAC_CONFIG.applicationModuleId,\n applicationResourceId: data?.resource_data?.[\"Learning Management\"] ?? FALLBACK_RBAC_CONFIG.applicationResourceId,\n appsecRbacUrl: FALLBACK_RBAC_CONFIG.appsecRbacUrl,\n appsecBaseUrl: FALLBACK_RBAC_CONFIG.appsecBaseUrl,\n defaultMarketPlaceRoleId,\n defaultAccessAppIntegrationIds,\n };\n setRbacConfig(resolvedConfig);\n })\n .catch((err) => {\n if (cancelled) return;\n console.error(\"Failed to fetch RBAC config for IL Marketplace\", err);\n setRbacConfig(FALLBACK_RBAC_CONFIG);\n });\n\n return () => {\n cancelled = true;\n };\n }, [applicationMappingId, baseUrl, authToken, setRbacConfig, defaultMarketPlaceRoleId, defaultAccessAppIntegrationIdsKey]);\n\n const { data: appsecRolesData } = useGetAppSecRolesQuery(\n rbacConfig?.applicationId ?? \"\",\n !!rbacConfig?.applicationId\n );\n\n useEffect(() => {\n if (appsecRolesData) {\n setAppsecRoles(appsecRolesData.map(({ _id, name }: { _id: string; name: string }) => ({ _id, name })));\n }\n }, [appsecRolesData, setAppsecRoles]);\n const sections = useMemo(\n () => jsonSections ?? legacySections,\n [jsonSections, legacySections]\n );\n const [searchText, setSearchText] = useState(\"\");\n const [appliedFilters, setAppliedFilters] = useState<GuidelineFilterSectionState[]>(initialFilters);\n const [draftFilters, setDraftFilters] = useState<GuidelineFilterSectionState[]>(initialFilters);\n const [showGuidelineFilterSidebar, setShowGuidelineFilterSidebar] = useState(false);\n // The marketplace tab renders LearningManagement's scope tree, which owns the\n // selection in this shared store. Guidelines are fetched for whatever it selects.\n const treeScopeId = useLearningTemplateStore((state) => state.selectedRuleSetId);\n const selectedScopeId = treeScopeId ?? scopeId;\n const [addDomainModal, setAddDomainModal] = useState<{ isOpen: boolean; parentId?: string; parentName?: string; childType?: 'SCOPE' | 'SUBSCOPE' }>({ isOpen: false });\n const [isGuidelineConfigInitialized, setIsGuidelineConfigInitialized] = useState(false);\n const [publishTarget, setPublishTarget] = useState<{ guideline: FileItem; instanceApplicationMappingId: string } | null>(null);\n const [promoteTarget, setPromoteTarget] = useState<{ guideline: FileItem } | null>(null);\n\n /**\n * A section's route, WITHOUT the host prefix. Comes from the section itself if provided, else\n * the built-in default for known tab ids.\n */\n const getRelativeSectionRoute = useCallback(\n (section: LscGuidelineSection) => section.route ?? DEFAULT_TAB_ROUTES[section.id],\n []\n );\n\n /**\n * A section's FULL route, with the host's `basePath` prepended. This is what gets pushed to\n * the browser URL — never the bare relative route, which would drop the host's prefix.\n */\n const getFullSectionRoute = useCallback(\n (section: LscGuidelineSection) => {\n const relative = getRelativeSectionRoute(section);\n return relative ? joinPath(normalizedBasePath, relative) : undefined;\n },\n [getRelativeSectionRoute, normalizedBasePath]\n );\n\n // Falls back to window.location when rendered outside a Router context (defensive only —\n // this component is designed to be mounted inside the host's existing Router).\n const currentPathname =\n routerLocation?.pathname ??\n (typeof window !== \"undefined\" ? window.location.pathname : \"/\");\n \n\n // const activeTabId = useMemo(() => {\n // const normalizedCurrent = normalizeRoutePath(currentPathname);\n // const match = sections.find((section) => {\n // const fullRoute = getFullSectionRoute(section);\n // return fullRoute && normalizeRoutePath(fullRoute) === normalizedCurrent;\n // });\n // return match?.id ?? IL_MARKETPLACE_TAB_ID;\n // }, [sections, currentPathname, getFullSectionRoute]);\n const routeDerivedActiveTabId = useMemo(() => {\n const normalizedCurrent = normalizeRoutePath(currentPathname);\n\n const publishRoute = joinPath(normalizedBasePath, DEFAULT_TAB_ROUTES[IL_MARKETPLACE_VIEW.publishing]);\n if (normalizedCurrent === normalizeRoutePath(publishRoute)) {\n return IL_MARKETPLACE_VIEW.publishing;\n }\n const promoteRoute = joinPath(normalizedBasePath, DEFAULT_TAB_ROUTES[IL_MARKETPLACE_VIEW.promote]);\n if (normalizedCurrent === normalizeRoutePath(promoteRoute)) {\n return IL_MARKETPLACE_VIEW.promote;\n }\n\n const match = sections.find((section) => {\n const fullRoute = getFullSectionRoute(section);\n const normalizedFullRoute = fullRoute ? normalizeRoutePath(fullRoute) : undefined;\n return fullRoute && normalizedFullRoute === normalizedCurrent;\n });\n\n return match?.id ?? IL_MARKETPLACE_TAB_ID;\n }, [sections, currentPathname, getFullSectionRoute, normalizedBasePath, getRelativeSectionRoute]);\n\n const activeTabId = disableRouting ? internalActiveTabId : routeDerivedActiveTabId;\n\n const isMarketplaceTab = activeTabId === IL_MARKETPLACE_TAB_ID;\n\n // Promote Flow also uses the guideline runtime config to reach LLM Studio.\n // Initializing it for this route prevents a direct /marketplace/promote visit\n // from attempting a promotion before the configuration exists.\n useEffect(() => {\n setIsGuidelineConfigInitialized(false);\n if (\n (activeTabId === IL_MARKETPLACE_TAB_ID || activeTabId === IL_MARKETPLACE_VIEW.promote) &&\n baseUrl &&\n modeId\n ) {\n const guidelineEditorConfig = {\n baseWebsocketUrl: baseWebsocketUrl || baseUrl,\n modeId,\n assistantName: assistantName || \"default\",\n appmodUrl: appmodUrl || \"https://dev.appmod.ai\",\n appsecBaseUrl: appsecBaseUrl || \"https://dev-cw-appsec.techo.camp\",\n applicationName: rbacConfig?.applicationName || \"Guideline Editor\",\n applicationId: rbacConfig?.applicationId || \"\",\n moduleId: rbacConfig?.moduleId || \"\",\n applicationModuleId: rbacConfig?.applicationModuleId || \"\",\n applicationResourceId: rbacConfig?.applicationResourceId || \"\",\n appsecGranularBaseUrl: appsecRbacUrl || \"https://dev-cw-appsec.techo.camp/granularApi\",\n audacyUrl: baseUrl,\n egptDomain: baseUrl?.replace(/^https?:\\/\\//, \"\") || \"devllmstudio.creativeworkspace.ai\",\n ilModelName: \"claude-3.5-sonnet\",\n };\n\n try {\n initGuidelineRuntimeConfig({\n apiBaseUrls: {\n llmStudio: baseUrl || \"https://devllmstudio.creativeworkspace.ai\",\n chatManagement: baseUrl || \"https://devllmstudio.creativeworkspace.ai\",\n },\n ilkbValueType: \"ILKB\",\n editorConfig: guidelineEditorConfig,\n apiAdapter: {\n makeApiRequest: async (method, url, options) => {\n // This is a placeholder implementation\n // The actual API calls will be handled by the services\n return { success: true } as any;\n },\n },\n getHostContext: () => ({\n authToken,\n userEmail: user?.email,\n userName: user?.firstname + \" \" + user?.lastname,\n }),\n syncChatId: () => {},\n });\n setIsGuidelineConfigInitialized(true);\n } catch (error) {\n console.error(\"Failed to initialize guideline runtime config:\", error);\n setIsGuidelineConfigInitialized(false);\n }\n }\n }, [activeTabId, baseUrl, modeId, baseWebsocketUrl, assistantName, appmodUrl, appsecBaseUrl, appsecRbacUrl, rbacConfig, authToken, user]);\n\n const handleUpdateActiveTab = useCallback((tabId: string) => {\n const section = sections.find((section) => section.id === tabId);\n if (!section || section.isDisabled) {\n return;\n }\n\n onTabChange?.(tabId);\n\n if (disableRouting) {\n setInternalActiveTabId(tabId);\n return;\n }\n\n const fullRoute = getFullSectionRoute(section);\n if (!fullRoute) return;\n\n if (normalizeRoutePath(currentPathname) === normalizeRoutePath(fullRoute)) {\n return;\n }\n\n if (routerNavigate) {\n // Goes through the host's own router instance — the same one managing \"/mode/<name>\" —\n // so the prefix is preserved and no competing route can re-match/rewrite it away.\n routerNavigate(fullRoute);\n return;\n }\n\n // Defensive fallback only, for the case this is rendered with no Router in the tree at all.\n if (typeof window !== \"undefined\") {\n window.history.pushState(null, \"\", fullRoute);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n }, [sections, getFullSectionRoute, currentPathname, routerNavigate, disableRouting, onTabChange]);\n\n const selectedStatusValues = useMemo(\n () => getSelectedOptionIds(appliedFilters, statusFilterSectionId),\n [appliedFilters]\n );\n\n const selectedOwnershipValues = useMemo(\n () => getSelectedOptionIds(appliedFilters, ownershipFilterSectionId),\n [appliedFilters]\n );\n\n const marketplaceQueryParams = useMemo<{ content_mode_mapping_id: string } | undefined>(() => {\n if (activeTabId !== IL_MARKETPLACE_TAB_ID) {\n return undefined;\n }\n\n return { content_mode_mapping_id: contentModeMappingId };\n}, [activeTabId, contentModeMappingId]);\n\nconst myKnowledgeBaseQueryParams = useMemo<MyKnowledgeBaseQueryParams | undefined>(() => {\n if (activeTabId !== MY_KNOWLEDGE_BASES_TAB_ID) {\n return undefined;\n }\n\n const params: MyKnowledgeBaseQueryParams = {\n content_mode_mapping_id: contentModeMappingId,\n };\n\n if (selectedStatusValues.length) {\n params.status = selectedStatusValues;\n }\n\n if (selectedOwnershipValues.length) {\n params.ownership = selectedOwnershipValues;\n }\n\n return params;\n}, [activeTabId, contentModeMappingId, selectedStatusValues, selectedOwnershipValues]);\n\nconst savedGuidelinesQueryParams = useMemo<MyKnowledgeBaseQueryParams | undefined>(() => {\n if (activeTabId !== SAVED_TAB_ID) {\n return undefined;\n }\n\n const params: MyKnowledgeBaseQueryParams = {\n content_mode_mapping_id: contentModeMappingId,\n };\n\n if (selectedStatusValues.length) {\n params.status = selectedStatusValues;\n }\n\n if (selectedOwnershipValues.length) {\n params.ownership = selectedOwnershipValues;\n }\n\n return params;\n}, [activeTabId, contentModeMappingId, selectedStatusValues, selectedOwnershipValues]);\n\n const resolveGuidelinesFetcher = (tabId: string): (() => Promise<FileItem[]>) | undefined => {\n if (tabId === IL_MARKETPLACE_TAB_ID) {\n return applicationMappingId && selectedScopeId\n ? () => {\n return fetchMarketplaceInstances(\n selectedScopeId,\n applicationMappingId,\n authToken,\n baseUrl,\n marketplaceQueryParams\n ).then((response) => toFileItems(response));\n }\n : undefined;\n }\n if (tabId === MY_KNOWLEDGE_BASES_TAB_ID) {\n return applicationMappingId\n ? () =>\n fetchMyKnowledgeBaseGuidelines(\n applicationMappingId,\n myKnowledgeBaseQueryParams,\n authToken,\n baseUrl\n ).then(toFileItems)\n : undefined;\n }\n if (tabId === SAVED_TAB_ID) {\n return applicationMappingId\n ? () =>\n fetchSavedMarketplaceGuidelines(\n applicationMappingId,\n authToken,\n baseUrl,\n savedGuidelinesQueryParams\n ).then(toFileItems)\n : undefined;\n }\n if (fetchGuidelinesForTab) {\n return () => fetchGuidelinesForTab(tabId);\n }\n return undefined;\n };\n\n const activeTabFetcher = activeTabId ? resolveGuidelinesFetcher(activeTabId) : undefined;\n\nconst {\n data: fetchedTabGuidelines,\n isFetching: isFetchingTabGuidelines,\n isSuccess: hasLoadedTabGuidelines,\n} = useQuery<FileItem[]>({\n queryKey: [\n \"il-marketplace-tab-guidelines\",\n activeTabId,\n selectedScopeId,\n activeTabId === MY_KNOWLEDGE_BASES_TAB_ID ? myKnowledgeBaseQueryParams?.content_mode_mapping_id ?? \"\" : \"\",\n activeTabId === MY_KNOWLEDGE_BASES_TAB_ID ? selectedStatusValues : [],\n activeTabId === IL_MARKETPLACE_TAB_ID ? marketplaceQueryParams?.content_mode_mapping_id ?? \"\" : \"\",\n activeTabId === SAVED_TAB_ID ? savedGuidelinesQueryParams?.content_mode_mapping_id ?? \"\" : \"\",\n activeTabId === SAVED_TAB_ID ? selectedStatusValues : [],\n activeTabId === IL_MARKETPLACE_TAB_ID ? [] : selectedOwnershipValues,\n contentModeMappingId,\n ],\n queryFn: () => activeTabFetcher!(),\n enabled: Boolean(activeTabFetcher) && Boolean(activeTabId),\n staleTime: 0,\n refetchOnMount: \"always\",\n refetchOnWindowFocus: true,\n});\n\n const { data: fetchedTopicFilterSection } = useQuery<GuidelineFilterSectionState | null>({\n queryKey: [\"il-marketplace-topic-filter\", contentModeMappingId],\n queryFn: async () => {\n if (!contentModeMappingId) {\n return null;\n }\n const response = await fetchContentTypes(contentModeMappingId, baseUrl, authToken);\n return response.error ? null : getTopicFilterSection(response);\n },\n enabled: Boolean(contentModeMappingId),\n });\n\n const tabFilterDefinitions = useMemo(() => {\n if (isMarketplaceTab) {\n return fetchedTopicFilterSection ? [fetchedTopicFilterSection] : [];\n }\n\n return fetchedTopicFilterSection\n ? [fetchedTopicFilterSection, ...initialFilters]\n : initialFilters;\n }, [fetchedTopicFilterSection, isMarketplaceTab]);\n\n useEffect(() => {\n setAppliedFilters((currentSelections) =>\n buildResolvedFilterSections(tabFilterDefinitions, currentSelections)\n );\n setDraftFilters((currentSelections) =>\n buildResolvedFilterSections(tabFilterDefinitions, currentSelections)\n );\n }, [tabFilterDefinitions]);\n\n const tabGuidelines: FileItem[] = useMemo(\n () => fetchedTabGuidelines ?? (activeTabId === IL_MARKETPLACE_TAB_ID ? [] : guidelineFiles ?? []),\n [fetchedTabGuidelines, activeTabId, guidelineFiles]\n );\n\n // Skeletons are for having nothing to show; a background refetch keeps the current list on\n // screen rather than flashing back to placeholders.\n const isLoadingTabGuidelines = isFetchingTabGuidelines && !fetchedTabGuidelines;\n\n const toastRef = useRef<Toast>(null);\n\n\n\n // Set by ContinueWithTemplateModal's \"Save Draft\" — a separate component tree with no props\n // connecting it to this wrapper, so a store is what carries the just-saved guideline's id over.\n const pendingHighlightGuidelineId = useExternalWorkflowStore((state) => state.pendingHighlightGuidelineId);\n const setPendingHighlightGuidelineId = useExternalWorkflowStore((state) => state.setPendingHighlightGuidelineId);\n const [highlightedGuidelineId, setHighlightedGuidelineId] = useState<string | null>(null);\n\n // Drafts land on My Knowledge Bases: jump there so the effect below has a list to search once\n // the modal's cache invalidation refetches it.\n useEffect(() => {\n if (pendingHighlightGuidelineId && activeTabId !== MY_KNOWLEDGE_BASES_TAB_ID) {\n handleUpdateActiveTab(MY_KNOWLEDGE_BASES_TAB_ID);\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [pendingHighlightGuidelineId, activeTabId]);\n\n // Once the refetched list contains the just-saved draft, scroll to its card and flash a\n // highlighted border for a few seconds. Gives up after 15s so a failed save or a since-deleted\n // draft can't leave this wrapper stuck watching for an id that will never show up.\n useEffect(() => {\n if (!pendingHighlightGuidelineId || activeTabId !== MY_KNOWLEDGE_BASES_TAB_ID) {\n return;\n }\n\n const giveUpTimeout = setTimeout(() => setPendingHighlightGuidelineId(null), 15000);\n\n if (isFetchingTabGuidelines) {\n return () => clearTimeout(giveUpTimeout);\n }\n\n const targetId = pendingHighlightGuidelineId;\n const isDraftVisible = tabGuidelines.some(\n (item) => (item.instant_learning_id || item.id) === targetId\n );\n\n if (!isDraftVisible) {\n return () => clearTimeout(giveUpTimeout);\n }\n\n clearTimeout(giveUpTimeout);\n setPendingHighlightGuidelineId(null);\n setHighlightedGuidelineId(targetId);\n\n const cardElement = document.querySelector(`[data-guideline-id=\"${CSS.escape(targetId)}\"]`);\n cardElement?.scrollIntoView({ behavior: \"smooth\", block: \"center\" });\n }, [pendingHighlightGuidelineId, activeTabId, isFetchingTabGuidelines, tabGuidelines, setPendingHighlightGuidelineId]);\n\n // Kept separate from the effect above: that one re-runs the instant `pendingHighlightGuidelineId`\n // is cleared, which would cancel this timer via its own cleanup before it ever fired.\n useEffect(() => {\n if (!highlightedGuidelineId) return;\n const clearHighlightTimeout = setTimeout(() => setHighlightedGuidelineId(null), 2500);\n return () => clearTimeout(clearHighlightTimeout);\n }, [highlightedGuidelineId]);\n\n // The card only knows its own instance mapping id; the marketplace-wide `applicationMappingId`\n // is the same for every card under this wrapper, so it is paired in here.\n const openBuiltInPublishFlow = (guideline: FileItem) => {\n const instanceApplicationMappingId = guideline.application_mapping_ids?.[0];\n if (!instanceApplicationMappingId || !applicationMappingId) {\n console.error(\"Missing application mapping ids for publish\", { instanceApplicationMappingId, applicationMappingId });\n return;\n }\n\n setPublishTarget({ guideline, instanceApplicationMappingId });\n\n if (disableRouting) {\n setInternalActiveTabId(IL_MARKETPLACE_VIEW.publishing);\n return;\n }\n const publishFullRoute = joinPath(normalizedBasePath, DEFAULT_TAB_ROUTES[IL_MARKETPLACE_VIEW.publishing]);\n if (normalizeRoutePath(currentPathname) === normalizeRoutePath(publishFullRoute)) {\n return;\n }\n if (routerNavigate) {\n routerNavigate(publishFullRoute);\n return;\n }\n if (typeof window !== \"undefined\") {\n window.history.pushState(null, \"\", publishFullRoute);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n };\n\n // Host callback wins; JSON can hide the optional icon without changing the\n // host's existing publish integration.\n const publishButtonCallback = marketplaceValueTypeConfig?.statusActions?.showPublish === false\n ? undefined\n : handlePublishButtonCallback ?? (enablePublishToMarketplace ? openBuiltInPublishFlow : undefined);\n\n const openBuiltInPromoteFlow = (guideline: FileItem) => {\n // A previous promotion remains in the shared store after returning to the\n // marketplace. Opening Promote must start from its accordion overview;\n // status details are only shown after Promote Now or View details.\n usePromoteFlowStore.getState().setPromotionTask(null);\n usePromoteFlowStore.getState().setError(null);\n setPromoteTarget({ guideline });\n\n if (disableRouting) {\n setInternalActiveTabId(IL_MARKETPLACE_VIEW.promote);\n return;\n }\n const promoteFullRoute = joinPath(normalizedBasePath, DEFAULT_TAB_ROUTES[IL_MARKETPLACE_VIEW.promote]);\n if (normalizeRoutePath(currentPathname) === normalizeRoutePath(promoteFullRoute)) {\n return;\n }\n if (routerNavigate) {\n routerNavigate(promoteFullRoute);\n return;\n }\n if (typeof window !== \"undefined\") {\n window.history.pushState(null, \"\", promoteFullRoute);\n window.dispatchEvent(new PopStateEvent(\"popstate\"));\n }\n };\n\n const promoteButtonCallback = handlePromoteButtonCallback ?? openBuiltInPromoteFlow;\n\n const handlePublishBack = () => {\n setPublishTarget(null);\n handleUpdateActiveTab(MY_KNOWLEDGE_BASES_TAB_ID);\n };\n\n const handlePromoteBack = () => {\n setPromoteTarget(null);\n handleUpdateActiveTab(MY_KNOWLEDGE_BASES_TAB_ID);\n };\n\n const handlePublishSubmit = async () => {\n const publishedGuideline = publishTarget?.guideline;\n setPublishTarget(null);\n handleUpdateActiveTab(MY_KNOWLEDGE_BASES_TAB_ID);\n await queryClient.invalidateQueries({ queryKey: [\"il-marketplace-tab-guidelines\"] });\n let isCurrentUserApprover = false;\n if (publishedGuideline?.instant_learning_id && publishedGuideline?.scope_id && user?.email) {\n const approversResponse = await fetchMarketplaceApprovers(\n publishedGuideline.instant_learning_id,\n publishedGuideline.scope_id,\n authToken,\n baseUrl\n );\n const approvers = approversResponse?.responseData?.data?.users ?? [];\n isCurrentUserApprover = approvers?.some(\n (approver) => approver?.email.toLowerCase() === user.email.toLowerCase()\n );\n }\n\n if (!isCurrentUserApprover) {\n toastRef.current?.show({\n severity: \"success\",\n sticky: false,\n life: 6000,\n content: (\n <SuccessToastContent\n title=\"Publish Request has been sent to admin\"\n message=\"You'll receive an email once your template is approved and published to the marketplace.\"\n />\n ),\n });\n }\n\n if (publishedGuideline) {\n onPublished?.(publishedGuideline);\n }\n };\n\n const handleVersionSelect = async (guideline: FileItem, version: number) => {\n const ilInstanceMappingId = guideline.application_mapping_ids?.[0];\n if (!ilInstanceMappingId || !applicationMappingId) {\n throw new Error(\"Missing application mapping ids for version switch\");\n }\n\n const response = await fetchMarketplaceInstanceVersion(ilInstanceMappingId, applicationMappingId, version, authToken, baseUrl);\n const versionInstance = response.responseData?.data?.results?.[0] ?? response.responseData?.data?.result?.[0];\n if (response.error || !versionInstance) {\n throw new Error(response.error?.errorMessage || \"Failed to fetch guideline version\");\n }\n\n const updatedItem = toFileItem(versionInstance as unknown as FileItem & { description?: string | null });\n const guidelineId = guideline.instant_learning_id || guideline.id;\n\n queryClient.setQueriesData<FileItem[]>(\n { queryKey: [\"il-marketplace-tab-guidelines\", activeTabId, selectedScopeId] },\n (previous?: FileItem[]) =>\n previous?.map((item) =>\n (item.instant_learning_id || item.id) === guidelineId\n ? { ...item, ...updatedItem, version_list: item.version_list ?? updatedItem.version_list }\n : item\n )\n );\n };\n\n const { data: fetchedDomainTree, isLoading: isLoadingDomainTree } = useQuery<ScopeTreeNode | null>({\n queryKey: [\"il-marketplace-domain-tree\", applicationMappingId, contentModeMappingId],\n queryFn: () =>\n fetchMarketplaceDomains(applicationMappingId as string, authToken, baseUrl, {\n content_mode_mapping_id: contentModeMappingId,\n }).then(toDomainTree),\n enabled: Boolean(applicationMappingId && contentModeMappingId),\n staleTime: Infinity,\n });\n const resolvedTreeSidebarData = fetchedDomainTree ?? treeSidebarData ?? null;\n\n const selectedMarketplaceScope = useMemo(\n () => findScopeTreeNode(resolvedTreeSidebarData, selectedScopeId ?? \"\"),\n [resolvedTreeSidebarData, selectedScopeId]\n );\n const isMarketplaceScopeEmpty =\n isILMarketplace &&\n activeTabId === IL_MARKETPLACE_TAB_ID &&\n Boolean(selectedMarketplaceScope) &&\n hasLoadedTabGuidelines &&\n tabGuidelines.length === 0;\n const marketplaceEmptyState = useMemo(() => {\n const stateKey = selectedMarketplaceScope?.children?.length\n ? \"scopeWithChildren\"\n : \"leafScope\";\n const defaultCopy = DEFAULT_MARKETPLACE_EMPTY_STATES[stateKey];\n const jsonCopy = marketplaceValueTypeConfig?.emptyStates?.[stateKey];\n const propCopy = resolvedMarketplaceLabels.emptyStates?.[stateKey];\n // Root-only copy wins field by field when set; unset fields keep the lookup above.\n const isRootScope =\n Boolean(selectedMarketplaceScope) && selectedMarketplaceScope?.id === resolvedTreeSidebarData?.id;\n const rootCopy = isRootScope\n ? {\n title: marketplaceValueTypeConfig?.emptyStates?.rootScope?.title ??\n resolvedMarketplaceLabels.emptyStates?.rootScope?.title,\n description: marketplaceValueTypeConfig?.emptyStates?.rootScope?.description ??\n resolvedMarketplaceLabels.emptyStates?.rootScope?.description,\n }\n : undefined;\n const scopeName = selectedMarketplaceScope?.name ?? \"this category\";\n const learningTerm = toPluralLearningTerm(marketplaceLearningTerm);\n\n return {\n title: replaceMarketplacePlaceholders(\n rootCopy?.title ??\n jsonCopy?.title ??\n propCopy?.title ??\n resolvedMarketplaceLabels.emptyTitle ??\n defaultCopy.title,\n scopeName,\n learningTerm\n ),\n description: replaceMarketplacePlaceholders(\n rootCopy?.description ??\n jsonCopy?.description ??\n propCopy?.description ??\n resolvedMarketplaceLabels.emptyDescription ??\n defaultCopy.description,\n scopeName,\n learningTerm\n ),\n };\n }, [\n marketplaceLearningTerm,\n marketplaceValueTypeConfig,\n resolvedMarketplaceLabels,\n resolvedTreeSidebarData,\n selectedMarketplaceScope,\n ]);\n\n useEffect(() => {\n if (isMarketplaceScopeEmpty) {\n setShowGuidelineFilterSidebar(false);\n }\n }, [isMarketplaceScopeEmpty]);\n\n const handleOpenGuidelineFilters = () => {\n setDraftFilters(cloneFilterSections(appliedFilters));\n setShowGuidelineFilterSidebar(true);\n };\n\n const activeFilterCount = useMemo(\n () =>\n appliedFilters.reduce(\n (count, section) =>\n count + section.options.filter((option) => option.checked).length,\n 0\n ),\n [appliedFilters]\n );\n\n const selectedTopicIds = useMemo(\n () => getSelectedOptionIds(appliedFilters, TOPIC_FILTER_SECTION_ID),\n [appliedFilters]\n );\n const isMarketplaceCatalogTab = isILMarketplace && activeTabId === IL_MARKETPLACE_TAB_ID;\n\n const filteredGuidelineFiles = useMemo(() => {\n const normalizedSearchText = searchText.trim().toLocaleLowerCase();\n\n return tabGuidelines\n ?.filter((file) => {\n const matchesSearch =\n !normalizedSearchText ||\n (getGuidelineTitle(file) || \"\")?.toLocaleLowerCase().includes(normalizedSearchText);\n const matchesStatus =\n selectedStatusValues.length === 0 ||\n selectedStatusValues?.includes((file.status ?? \"\").trim().toLocaleLowerCase());\n const matchesTopic =\n selectedTopicIds.length === 0 ||\n selectedTopicIds.includes(file.topic_id ?? \"\");\n\n return matchesSearch && matchesStatus && matchesTopic;\n })\n .map((file) =>\n isMarketplaceCatalogTab && file.version_list\n ? {\n ...file,\n version_list: file?.version_list?.filter(\n (entry) => (entry.status ?? \"\").trim().toLocaleLowerCase() === \"published\"\n ),\n }\n : file\n );\n }, [searchText, selectedTopicIds, selectedStatusValues, tabGuidelines, isMarketplaceCatalogTab]);\n\n const handleClearFilter = () => {\n const clearedFilters = tabFilterDefinitions.map(clearFilterSection);\n setAppliedFilters(clearedFilters);\n setDraftFilters(cloneFilterSections(clearedFilters));\n setShowGuidelineFilterSidebar(false);\n };\n\n const handleCloseGuidelineFilters = () => {\n setDraftFilters(cloneFilterSections(appliedFilters));\n setShowGuidelineFilterSidebar(false);\n };\n\n const handleApplyGuidelineFilters = () => {\n const nextAppliedFilters = cloneFilterSections(draftFilters);\n setAppliedFilters(nextAppliedFilters);\n setDraftFilters(cloneFilterSections(nextAppliedFilters));\n setShowGuidelineFilterSidebar(false);\n };\n\n const updateDraftFilterOption = (sectionId: string, optionId: string, checked: boolean) => {\n setDraftFilters((prev) =>\n prev.map((section) =>\n section.id !== sectionId\n ? section\n : {\n ...section,\n options: section.options.map((option) =>\n option.id === optionId ? { ...option, checked } : option\n ),\n }\n )\n );\n };\n\n\n const resolvedCardMetadata = {\n ...cardMetadata,\n contentType: { ...cardMetadata?.contentType, ...marketplaceValueTypeConfig?.cardMetadata?.contentType },\n topic: { ...cardMetadata?.topic, ...marketplaceValueTypeConfig?.cardMetadata?.topic },\n };\n const resolvedTreeOverrides = treeOverrides;\n const areStatusActionsDisabled = marketplaceValueTypeConfig?.statusActions?.enabled === false;\n // `enabled: false` hides every card CTA. Passing undefined would make the card fall\n // back to its select button, so the primary action is switched off explicitly;\n // View/Promote stay hidden because no onView/onPromote is passed.\n const resolvedStatusActions = areStatusActionsDisabled\n ? { showPrimaryAction: false, showView: false, showPromote: false }\n : { ...statusActions, ...marketplaceValueTypeConfig?.statusActions };\n const resolvedShareEnabled = marketplaceValueTypeConfig?.sharing?.isEnabled ?? isShareEnabled;\n const resolvedShowDashboardButton = marketplaceValueTypeConfig?.dashboard?.show ?? showDashboardButton;\n const resolvedDashboardLabel = marketplaceValueTypeConfig?.dashboard?.label;\n const showAddKnowledgeBase = marketplaceValueTypeConfig?.addKnowledgeBase?.show ?? true;\n\n // Sharing is only offered on the tabs the host opts in via `shareEnabledTabIds`.\n const isShareEnabledForActiveTab =\n Boolean(activeTabId && shareEnabledTabIds.includes(activeTabId)) && resolvedShareEnabled;\n\n const resolvedLabels = mergeGuidelineLabels(labels);\n const activeGuidelineSection = sections.find((section) => section.id === activeTabId);\n\n const noScopeSelectedForMarketplace =\n isILMarketplace && activeTabId === IL_MARKETPLACE_TAB_ID && !selectedScopeId;\n\n const isSearchActive = searchText.trim().length > 0;\n\n const addKnowledgeBaseButton = (\n <button\n type=\"button\"\n aria-disabled={!onAddKnowledgeBase}\n onClick={(event) => {\n event.preventDefault();\n onAddKnowledgeBase?.();\n }}\n className={`${cssStyles.addKnowledgeBaseButton} ${onAddKnowledgeBase ? \"\" : cssStyles.addKnowledgeBaseButtonDisabled}`}\n >\n <Plus className={cssStyles.addKnowledgeBaseIcon} strokeWidth={2.4} />\n <span>{resolvedMarketplaceLabels.addKnowledgeBaseLabel ?? \"IL Knowledge Base\"}</span>\n </button>\n );\n\n // Built once: rendered directly on other tabs, or handed to LearningManagement to render beside the scope tree on the marketplace tab.\n const guidelineContentProps = {\n guidelines: filteredGuidelineFiles,\n cartGuidelineIds: [],\n addToCartLabel: resolvedLabels.libraryAddToCart,\n addedToCartLabel: resolvedLabels.libraryAddedToCart,\n selectLabel: isILMarketplace ? resolvedMarketplaceLabels.testKnowledgebaseLabel : resolvedLabels.librarySelect,\n selectedLabel: isILMarketplace ? resolvedMarketplaceLabels.testKnowledgebaseLabel : resolvedLabels.librarySelected,\n exploreLabel: resolvedLabels.libraryExplore,\n showMoreLabel: resolvedLabels.libraryShowMore,\n showLessLabel: resolvedLabels.libraryShowLess,\n classNames,\n styles,\n customIcons: {\n selectedIcon: <ArrowRight />,\n unselectedIcon: <ArrowRight />,\n },\n subTitleLayout: \"template\",\n metadataConfig: resolvedCardMetadata,\n formatAddedOnLabel: defaultFormatAddedOnLabel,\n searchProps: isMarketplaceScopeEmpty ? undefined : {\n value: searchText,\n onChange: (value: any) => setSearchText(value),\n placeholder: resolvedMarketplaceLabels.searchPlaceholder ?? \"Search for Knowledge Bases...\",\n },\n filterProps: isMarketplaceScopeEmpty ? undefined : {\n label: \"Filters\",\n icon: <span>{BsFunnel({})}</span>,\n activeCount: activeFilterCount,\n onClick: handleOpenGuidelineFilters,\n onClear: handleClearFilter,\n },\n isLoading: isLoadingTabGuidelines,\n emptyTitle: isMarketplaceScopeEmpty\n ? marketplaceEmptyState.title\n : noScopeSelectedForMarketplace\n ? \"Select a subdomain to view Knowledge bases\"\n : isSearchActive\n ? resolvedMarketplaceLabels.searchEmptyTitle ?? \"No Knowledgebases found\"\n : labels.libraryEmptyTitle ?? (isILMarketplace ? resolvedMarketplaceLabels.emptyTitle : resolvedLabels.libraryEmptyTitle),\n emptyDescription: isMarketplaceScopeEmpty\n ? marketplaceEmptyState.description\n : noScopeSelectedForMarketplace || isSearchActive\n ? undefined\n : labels.libraryEmptyDescription ?? (isILMarketplace ? resolvedMarketplaceLabels.emptyDescription : resolvedLabels.libraryEmptyDescription),\n // appsec urls feed the per-card share modal\n instantLearning: {\n token: authToken,\n baseUrl,\n appsecGranularRbacUrl: appsecRbacUrl,\n appsecBaseUrl,\n },\n onWishlistToggle: async (applicationMappingId: string, nextState: boolean) => {\n const response = await setMarketplaceUserTag(applicationMappingId, nextState, authToken, baseUrl);\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to update wishlist status\");\n }\n await queryClient.invalidateQueries({ queryKey: [\"il-marketplace-tab-guidelines\"] });\n return nextState;\n },\n onVersionSelect: handleVersionSelect,\n onDeleteGuideline: onDeleteGuideline ?? ((guideline: FileItem) =>\n deleteGuidelineMutation.mutateAsync({ guideline, applicationMappingId, authToken, baseUrl })\n ),\n onApproveGuideline: onApproveGuideline ?? (async (guideline: FileItem) => {\n const response = await updateInstancePublishStatus(\n {\n variant_id: guideline?.variant_id ?? \"\",\n marketplace_application_mapping_id: applicationMappingId ?? \"\",\n application_mapping_id: guideline?.application_mapping_ids?.[0] ?? \"\",\n status: \"approved\",\n },\n authToken,\n baseUrl\n );\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to approve guideline\");\n }\n await queryClient.invalidateQueries({ queryKey: [\"il-marketplace-tab-guidelines\"] });\n }),\n onRejectGuideline: onRejectGuideline ?? (async (guideline: FileItem) => {\n const response = await updateInstancePublishStatus(\n {\n variant_id: guideline?.variant_id ?? \"\",\n marketplace_application_mapping_id: applicationMappingId ?? \"\",\n application_mapping_id: guideline?.application_mapping_ids?.[0] ?? \"\",\n status: \"rejected\",\n },\n authToken,\n baseUrl\n );\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to reject guideline\");\n }\n await queryClient.invalidateQueries({ queryKey: [\"il-marketplace-tab-guidelines\"] });\n }),\n onToggleVariantGuideline: async (guideline: FileItem) => {\n const variantId = guideline.variant_id ?? \"\";\n const mappingId = applicationMappingId;\n const nextEnabled = guideline.is_enabled === false;\n const response = await toggleVariantApi([variantId], nextEnabled, mappingId, authToken, baseUrl);\n if (response.error) {\n throw new Error(response.error.errorMessage || \"Failed to toggle variant status\");\n }\n await queryClient.invalidateQueries({ queryKey: [\"il-marketplace-tab-guidelines\"] });\n },\n // Temporary: retain the handler for a future re-enable, but hide the menu item on every tab.\n hideToggleVariantOption: true,\n isILMarketplace,\n isShareEnabled: isShareEnabledForActiveTab,\n shareableGuidelineStatuses,\n externalShareRbacConfig,\n handleViewButtonCallback,\n handleCardClickCallback,\n handlePreviewButtonCallback,\n guidelinePinnedMessages,\n handlePublishButtonCallback: publishButtonCallback,\n highlightedGuidelineId,\n statusActions: !areStatusActionsDisabled && (resolvedStatusActions?.modeName || enablePromoteFlow)\n ? {\n ...resolvedStatusActions,\n promoteLabel: resolvedStatusActions?.promoteLabel ?? \"Promote\",\n onPromote: resolvedStatusActions?.onPromote ?? promoteButtonCallback,\n }\n : resolvedStatusActions,\n previewDisabledTooltip: previewDisabledTooltip,\n showDashboardButton: resolvedShowDashboardButton,\n dashboardLabel: resolvedDashboardLabel,\n onDashboardClick,\n exploreHighlightGuidelineIds,\n exploreHighlightConfig,\n };\n\n // Built-in publish flow: takes over the whole wrapper rather than opening a modal, so the host\n // mode sees a full-screen page. Hosts passing `handlePublishButtonCallback` render their own\n // component instead and never reach this branch. Gated on the route (like the other tabs) so\n // browser back/forward out of \"/marketplace/publish\" exits the flow the same way it switches tabs.\n if (publishTarget && activeTabId === IL_MARKETPLACE_VIEW.publishing) {\n // Back button disabled for now — browser back on \"/marketplace/publish\" already exits the flow via the route.\n const publishHeader = renderPublishHeader\n ? renderPublishHeader({\n guideline: publishTarget.guideline,\n onBack: handlePublishBack,\n })\n : null;\n\n return (\n <ILMarketplaceThemeProvider theme={theme}>\n <div className={cssStyles.publishFlowWrapper} style={themeStyles}>\n {publishHeader}\n <div className={cssStyles.publishFlowBody}>\n <PublishToMarketplaceComponent\n steps={publishSteps}\n onViewTemplate={handleViewTemplateCallback}\n templateName={getGuidelineTitle(publishTarget.guideline)}\n version={publishTarget?.guideline?.version}\n applicationMappingId={applicationMappingId ?? \"\"}\n instanceApplicationMappingId={publishTarget?.guideline?.application_mapping_ids?.[0] || publishTarget.guideline.instant_learning_id || ''}\n contentModeMappingId={contentModeMappingId}\n authToken={authToken}\n baseUrl={baseUrl}\n assistantName={assistantName}\n organizationName={organizationName}\n baseWebsocketUrl={baseWebsocketUrl}\n appmodUrl={appmodUrl}\n configMasterName={configMasterName}\n onSubmit={handlePublishSubmit}\n onExposeValidateAndProceed={onValidateAndProceedReady}\n />\n </div>\n </div>\n </ILMarketplaceThemeProvider>\n );\n }\n\n if (promoteTarget && activeTabId === IL_MARKETPLACE_VIEW.promote) {\n return (\n <ILMarketplaceThemeProvider theme={theme}>\n <div className={cssStyles.publishFlowWrapper} style={themeStyles}>\n <Toast\n ref={toastRef}\n position=\"top-right\"\n appendTo={document.body}\n pt={{ root: { style: { zIndex: 9999 } } }}\n />\n <div className={cssStyles.publishFlowBody}>\n <PromoteFlow\n guideline={promoteTarget.guideline}\n onBack={handlePromoteBack}\n onPromote={(guideline) => {\n toastRef.current?.show({\n severity: \"success\",\n sticky: false,\n life: 3000,\n content: (\n <SuccessToastContent\n title=\"Promotion request started\"\n message={`${getGuidelineTitle(guideline)} is ready for promotion review.`}\n />\n ),\n });\n }}\n onSaveDraft={(guideline) => {\n toastRef.current?.show({\n severity: \"success\",\n sticky: false,\n life: 3000,\n content: (\n <SuccessToastContent\n title=\"Draft saved\"\n message={`${getGuidelineTitle(guideline)} promotion draft has been saved.`}\n />\n ),\n });\n }}\n />\n </div>\n </div>\n </ILMarketplaceThemeProvider>\n );\n }\n\n return (\n <ILMarketplaceThemeProvider theme={theme}>\n <div className={isILMarketplace ? cssStyles.contentWrapper : cssStyles.contentWrapperNormal} style={themeStyles}>\n <Toast\n ref={toastRef}\n position=\"top-right\"\n appendTo={document.body}\n pt={{ root: { style: { zIndex: 9999 } } }}\n />\n {/* Fixed Tab Header - Does not scroll */}\n <div className={isILMarketplace ? cssStyles.fixedTabHeader : cssStyles.normalTabHeader}>\n <div className={cssStyles.tabHeaderRow}>\n <div className={cssStyles.tabHeaderContainer}>\n {sections.map((section) => (\n <GuidelineLibraryTab\n key={section.id}\n section={section}\n isActive={section.id === activeTabId}\n classNames={classNames}\n styles={styles}\n onTabSelection={handleUpdateActiveTab}\n />\n ))}\n </div>\n {showAddKnowledgeBase && (onAddKnowledgeBase ? (\n addKnowledgeBaseButton\n ) : (\n <GuidelineTooltip content={resolvedMarketplaceLabels.addKnowledgeBaseDisabledTooltip ?? \"Coming soon\"}>\n {addKnowledgeBaseButton}\n </GuidelineTooltip>\n ))}\n </div>\n </div>\n\n {/* Scrollable Content Area */}\n <div className={isILMarketplace ? cssStyles.scrollableContent : cssStyles.contentAreaNoScroll}>\n {isILMarketplace && activeTabId === IL_MARKETPLACE_TAB_ID && isGuidelineConfigInitialized ? (\n <LearningManagementWrapper\n userDetails={userDetails}\n baseUrl={baseUrl}\n baseWebsocketUrl={baseWebsocketUrl}\n assistantName={assistantName}\n appsecRbacUrl={appsecRbacUrl}\n appsecBaseUrl={appsecBaseUrl}\n appIntegrationId={applicationMappingId ?? \"\"}\n contentModeMappingId={contentModeMappingId}\n modeId={modeId}\n isILMarketplace={isILMarketplace}\n guidelineTitle={activeGuidelineSection?.title ?? \"\"}\n onBack={() => handleUpdateActiveTab(MY_KNOWLEDGE_BASES_TAB_ID)}\n fetchILRBACConfig={fetchRBACConfig}\n guidelineContentProps={guidelineContentProps}\n treeOverrides={resolvedTreeOverrides}\n defaultMarketPlaceRoleId={defaultMarketPlaceRoleId}\n defaultAccessAppIntegrationIds={defaultAccessAppIntegrationIds}\n theme={theme}\n />\n ) : (\n <GuidelineLibraryContent {...guidelineContentProps} />\n )}\n </div>\n <GuidelineFilterPanel\n open={showGuidelineFilterSidebar}\n onClose={handleCloseGuidelineFilters}\n onCancel={handleCloseGuidelineFilters}\n onApply={handleApplyGuidelineFilters}\n sections={draftFilters.map((section) => ({\n ...section,\n options: section.options.map((option) => ({\n ...option,\n onChange: (checked) => updateDraftFilterOption(section.id, option.id, checked),\n })),\n }))}\n classNames={classNames}\n styles={styles}\n />\n </div>\n </ILMarketplaceThemeProvider>\n );\n};\n\nconst ILMarketplaceWrapper = (props: ILMarketplaceWrapperProps) => (\n <QueryClientProvider client={guidelineQueryClient}>\n <ILMarketplaceWrapperInner {...props} />\n </QueryClientProvider>\n);\n\nexport default ILMarketplaceWrapper;\n"],"names":["jsx","BookOpen","ShoppingBag","Heart","Clock4","Star","Bookmark","Folder","Layers","LayoutGrid","Library","Compass","Users","Sparkles","Archive","useInRouterContext","useNavigate","useLocation","applyAxiosConfig","useMemo","getILMarketplaceThemeStyles","useLMSConfigStore","_a","useState","_b","_c","_d","useRef","useQueryClient","useDeleteGuidelineMutation","useAuthStore","useEnvStore","useAppSecRolesStore","useEffect","MF_EVENTS","_e","_f","fetchRBACConfig","_g","_h","FALLBACK_RBAC_CONFIG","useGetAppSecRolesQuery","useLearningTemplateStore","useCallback","initGuidelineRuntimeConfig","section","fetchMarketplaceInstances","fetchMyKnowledgeBaseGuidelines","fetchSavedMarketplaceGuidelines","useQuery","fetchContentTypes","useExternalWorkflowStore","usePromoteFlowStore","fetchMarketplaceApprovers","SuccessToastContent","_i","fetchMarketplaceInstanceVersion","fetchMarketplaceDomains","_j","_k","_l","_m","_n","_o","_p","_q","_r","_s","_t","_u","_v","getGuidelineTitle","mergeGuidelineLabels","jsxs","cssStyles","Plus","ArrowRight","defaultFormatAddedOnLabel","BsFunnel","applicationMappingId","setMarketplaceUserTag","updateInstancePublishStatus","toggleVariantApi","ILMarketplaceThemeProvider","PublishToMarketplaceComponent","Toast","PromoteFlow","GuidelineLibraryTab","GuidelineTooltip","LearningManagementWrapper","GuidelineLibraryContent","GuidelineFilterPanel","QueryClientProvider","guidelineQueryClient"],"mappings":"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"}
|