@flamingo-stack/openframe-frontend-core 0.0.706 → 0.0.707-snapshot.20261006193610

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (78) hide show
  1. package/dist/{chunk-K6O43WDL.cjs → chunk-2G7UYK35.cjs} +32 -32
  2. package/dist/{chunk-7SCNMP2B.cjs → chunk-2KXTOP6G.cjs} +26 -13
  3. package/dist/{chunk-DDVBX42E.cjs → chunk-2RNB5DTN.cjs} +7 -7
  4. package/dist/{chunk-TE773HEH.js → chunk-36BCTE7D.js} +4 -4
  5. package/dist/{chunk-STHZBOQI.cjs → chunk-3AHTOSXJ.cjs} +9 -9
  6. package/dist/{chunk-G6UMNAVI.js → chunk-4L6XCMOU.js} +10 -2
  7. package/dist/{chunk-T5TMCHWM.js → chunk-4UM2ETLM.js} +2 -2
  8. package/dist/{chunk-3PLDQDE6.cjs → chunk-6I4ZAFO2.cjs} +9 -9
  9. package/dist/{chunk-YGJKKDDM.js → chunk-6IW7TWPV.js} +1 -1
  10. package/dist/{chunk-3EZ4HHAP.js → chunk-6YKAT7NV.js} +2 -2
  11. package/dist/{chunk-HZ7CBXPL.cjs → chunk-AOWDNSTM.cjs} +40 -40
  12. package/dist/{chunk-SW5ZV2BN.cjs → chunk-B73373AG.cjs} +20 -20
  13. package/dist/{chunk-4ILM7W2R.js → chunk-CNWOMQQJ.js} +1 -1
  14. package/dist/{chunk-DWPAAWMR.js → chunk-CZSZSDD4.js} +4 -4
  15. package/dist/{chunk-PXOQIA5K.js → chunk-DA5UDTLG.js} +2 -2
  16. package/dist/{chunk-BHI6GVC4.js → chunk-F5FF4DME.js} +5 -4
  17. package/dist/{chunk-IKJA3Y7Z.js → chunk-I3ST4PLM.js} +1 -1
  18. package/dist/{chunk-LVSFKENJ.cjs → chunk-JRU2CXLB.cjs} +2 -2
  19. package/dist/{chunk-SEKYEWQG.cjs → chunk-L6Y6OOKG.cjs} +20 -20
  20. package/dist/{chunk-3NCM4ZQB.js → chunk-LFFB6EMB.js} +15 -2
  21. package/dist/{chunk-O2RSAA5M.js → chunk-LNW45N2C.js} +5 -5
  22. package/dist/{chunk-6232S532.js → chunk-MR3A4MZV.js} +1 -1
  23. package/dist/{chunk-RTIPR53L.cjs → chunk-NSGXARGJ.cjs} +70 -70
  24. package/dist/{chunk-UJ33ZXDT.cjs → chunk-OJLR5MEO.cjs} +4 -4
  25. package/dist/{chunk-GWQEYPYM.cjs → chunk-P42V6N34.cjs} +321 -313
  26. package/dist/{chunk-7GEBFJT2.js → chunk-PO33GZVY.js} +24 -4
  27. package/dist/{chunk-TQ4LB2DS.cjs → chunk-QAOFMK2A.cjs} +3 -3
  28. package/dist/{chunk-7OFPU7WE.cjs → chunk-SEXWHIMS.cjs} +351 -331
  29. package/dist/{chunk-4CJMQLB5.js → chunk-SS5MBHDP.js} +2 -2
  30. package/dist/{chunk-VZICIQW2.js → chunk-TDYIREDJ.js} +4 -4
  31. package/dist/{chunk-MB4PNY7C.cjs → chunk-YBUT4AMG.cjs} +2 -2
  32. package/dist/{chunk-M75XEEGT.cjs → chunk-ZCLBYT2V.cjs} +26 -25
  33. package/dist/components/case-studies/index.cjs +14 -14
  34. package/dist/components/case-studies/index.js +3 -3
  35. package/dist/components/chat/index.cjs +4 -2
  36. package/dist/components/chat/index.d.ts +1 -1
  37. package/dist/components/chat/index.d.ts.map +1 -1
  38. package/dist/components/chat/index.js +3 -1
  39. package/dist/components/chat/nav-link-anchor-via-runtime.d.ts +34 -5
  40. package/dist/components/chat/nav-link-anchor-via-runtime.d.ts.map +1 -1
  41. package/dist/components/contact/index.cjs +4 -4
  42. package/dist/components/contact/index.js +3 -3
  43. package/dist/components/docs/index.cjs +7 -7
  44. package/dist/components/docs/index.js +6 -6
  45. package/dist/components/embeds/index.cjs +4 -4
  46. package/dist/components/embeds/index.js +3 -3
  47. package/dist/components/faq/index.cjs +4 -4
  48. package/dist/components/faq/index.js +3 -3
  49. package/dist/components/features/index.cjs +3 -3
  50. package/dist/components/features/index.js +2 -2
  51. package/dist/components/help-center-pages/index.cjs +70 -70
  52. package/dist/components/help-center-pages/index.js +14 -14
  53. package/dist/components/index.cjs +38 -36
  54. package/dist/components/index.js +15 -13
  55. package/dist/components/meeting-scheduler/index.cjs +25 -25
  56. package/dist/components/meeting-scheduler/index.js +2 -2
  57. package/dist/components/navigation/index.cjs +6 -6
  58. package/dist/components/navigation/index.js +5 -5
  59. package/dist/components/navigation/site-footer.d.ts +7 -1
  60. package/dist/components/navigation/site-footer.d.ts.map +1 -1
  61. package/dist/components/onboarding-guides/index.cjs +6 -6
  62. package/dist/components/onboarding-guides/index.js +5 -5
  63. package/dist/components/platform/ToolBadge.d.ts +6 -0
  64. package/dist/components/platform/ToolBadge.d.ts.map +1 -1
  65. package/dist/components/tickets/index.cjs +7 -7
  66. package/dist/components/tickets/index.js +6 -6
  67. package/dist/components/ui/brand-association-card.d.ts +7 -0
  68. package/dist/components/ui/brand-association-card.d.ts.map +1 -1
  69. package/dist/components/ui/index.cjs +5 -3
  70. package/dist/components/ui/index.js +4 -2
  71. package/dist/index.cjs +9 -7
  72. package/dist/index.js +8 -6
  73. package/package.json +1 -1
  74. package/src/components/chat/index.ts +7 -1
  75. package/src/components/chat/nav-link-anchor-via-runtime.tsx +62 -9
  76. package/src/components/navigation/site-footer.tsx +13 -5
  77. package/src/components/platform/ToolBadge.tsx +18 -1
  78. package/src/components/ui/brand-association-card.tsx +25 -3
@@ -3,16 +3,16 @@
3
3
 
4
4
 
5
5
 
6
- var _chunkTQ4LB2DScjs = require('./chunk-TQ4LB2DS.cjs');
6
+ var _chunkQAOFMK2Acjs = require('./chunk-QAOFMK2A.cjs');
7
7
 
8
8
 
9
9
 
10
10
 
11
- var _chunkLVSFKENJcjs = require('./chunk-LVSFKENJ.cjs');
11
+ var _chunkJRU2CXLBcjs = require('./chunk-JRU2CXLB.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunk3PLDQDE6cjs = require('./chunk-3PLDQDE6.cjs');
15
+ var _chunk6I4ZAFO2cjs = require('./chunk-6I4ZAFO2.cjs');
16
16
 
17
17
 
18
18
 
@@ -22,7 +22,7 @@ var _chunk3PLDQDE6cjs = require('./chunk-3PLDQDE6.cjs');
22
22
 
23
23
 
24
24
 
25
- var _chunkGWQEYPYMcjs = require('./chunk-GWQEYPYM.cjs');
25
+ var _chunkP42V6N34cjs = require('./chunk-P42V6N34.cjs');
26
26
 
27
27
 
28
28
  var _chunkOF6GEI5Acjs = require('./chunk-OF6GEI5A.cjs');
@@ -333,8 +333,8 @@ function toDocContent(value, requestedPath) {
333
333
  }
334
334
  function useDocumentTree(config, initialPath) {
335
335
  const { structureEndpoint, contentEndpoint, baseRoute } = config;
336
- const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => ( _chunkGWQEYPYMcjs.DEFAULT_FOLDER_INDEX_FILE));
337
- const cleanInitialPath = _chunkGWQEYPYMcjs.stripFolderIndexFromPath.call(void 0, _optionalChain([initialPath, 'optionalAccess', _4 => _4.replace, 'call', _5 => _5(/\/$/, "")]) || "", folderIndexFile);
336
+ const folderIndexFile = _nullishCoalesce(config.folderIndexFile, () => ( _chunkP42V6N34cjs.DEFAULT_FOLDER_INDEX_FILE));
337
+ const cleanInitialPath = _chunkP42V6N34cjs.stripFolderIndexFromPath.call(void 0, _optionalChain([initialPath, 'optionalAccess', _4 => _4.replace, 'call', _5 => _5(/\/$/, "")]) || "", folderIndexFile);
338
338
  const [structure, setStructure] = _react.useState.call(void 0, []);
339
339
  const [selectedPath, setSelectedPath] = _react.useState.call(void 0, cleanInitialPath);
340
340
  const [content, setContent] = _react.useState.call(void 0, null);
@@ -358,12 +358,12 @@ function useDocumentTree(config, initialPath) {
358
358
  } else if (pathname.startsWith(`${normalizedBaseRoute}/`)) {
359
359
  pathFromUrl = pathname.substring(`${normalizedBaseRoute}/`.length);
360
360
  }
361
- pathFromUrl = _chunkGWQEYPYMcjs.stripFolderIndexFromPath.call(void 0, pathFromUrl, folderIndexFile);
361
+ pathFromUrl = _chunkP42V6N34cjs.stripFolderIndexFromPath.call(void 0, pathFromUrl, folderIndexFile);
362
362
  if (pathFromUrl !== selectedPathRef.current) {
363
363
  setSelectedPath(pathFromUrl);
364
364
  if (pathFromUrl) {
365
365
  const parentPath = pathFromUrl.includes("/") ? pathFromUrl.substring(0, pathFromUrl.lastIndexOf("/")) : pathFromUrl;
366
- setExpandedNodes(new Set(_chunkGWQEYPYMcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
366
+ setExpandedNodes(new Set(_chunkP42V6N34cjs.getDocAncestorNodeIds.call(void 0, parentPath)));
367
367
  }
368
368
  setTimeout(() => {
369
369
  scrollToContent();
@@ -381,7 +381,7 @@ function useDocumentTree(config, initialPath) {
381
381
  setSelectedPath(cleanInitialPath);
382
382
  if (cleanInitialPath) {
383
383
  const parentPath = cleanInitialPath.includes("/") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
384
- setExpandedNodes(new Set(_chunkGWQEYPYMcjs.getDocAncestorNodeIds.call(void 0, parentPath)));
384
+ setExpandedNodes(new Set(_chunkP42V6N34cjs.getDocAncestorNodeIds.call(void 0, parentPath)));
385
385
  }
386
386
  setExternalNavCount((n) => n + 1);
387
387
  }
@@ -406,7 +406,7 @@ function useDocumentTree(config, initialPath) {
406
406
  if (cleanInitialPath) {
407
407
  const pathForExpansion = cleanInitialPath.includes(".") ? cleanInitialPath.substring(0, cleanInitialPath.lastIndexOf("/")) : cleanInitialPath;
408
408
  if (pathForExpansion) {
409
- setExpandedNodes(new Set(_chunkGWQEYPYMcjs.getDocAncestorNodeIds.call(void 0, pathForExpansion)));
409
+ setExpandedNodes(new Set(_chunkP42V6N34cjs.getDocAncestorNodeIds.call(void 0, pathForExpansion)));
410
410
  }
411
411
  } else if (nodes.length > 0) {
412
412
  const hasRootReadme = nodes.some((node) => node.type === "file" && node.path === folderIndexFile);
@@ -446,7 +446,7 @@ function useDocumentTree(config, initialPath) {
446
446
  setContent(null);
447
447
  return;
448
448
  }
449
- const probe = _chunkGWQEYPYMcjs.findDocNodeByPath.call(void 0, _chunkGWQEYPYMcjs.stripFolderIndexFromPath.call(void 0, path, folderIndexFile), structure);
449
+ const probe = _chunkP42V6N34cjs.findDocNodeByPath.call(void 0, _chunkP42V6N34cjs.stripFolderIndexFromPath.call(void 0, path, folderIndexFile), structure);
450
450
  const probeIsNoReadmeFolder = !!probe && probe.type === "folder" && !probe.hasReadme;
451
451
  const preStructureFolderLike = structure.length === 0 && !path.endsWith(".md");
452
452
  if (probeIsNoReadmeFolder || preStructureFolderLike) {
@@ -503,7 +503,7 @@ function useDocumentTree(config, initialPath) {
503
503
  if (selectedPath === "") {
504
504
  pathToFetch = folderIndexFile;
505
505
  } else {
506
- const node = _chunkGWQEYPYMcjs.findDocNodeByPath.call(void 0, selectedPath, structure);
506
+ const node = _chunkP42V6N34cjs.findDocNodeByPath.call(void 0, selectedPath, structure);
507
507
  if (node && node.type === "folder" && !node.hasReadme) {
508
508
  const firstDocPath = findFirstDocPath(node);
509
509
  if (!firstDocPath) {
@@ -544,16 +544,16 @@ function useDocumentTree(config, initialPath) {
544
544
  if (node.type === "folder") {
545
545
  setExpandedNodes((prev) => {
546
546
  if (prev.has(node.id)) {
547
- const ancestorIds = _chunkGWQEYPYMcjs.getDocAncestorNodeIds.call(void 0, node.path);
547
+ const ancestorIds = _chunkP42V6N34cjs.getDocAncestorNodeIds.call(void 0, node.path);
548
548
  ancestorIds.pop();
549
549
  return new Set(ancestorIds);
550
550
  }
551
- return new Set(_chunkGWQEYPYMcjs.getDocAncestorNodeIds.call(void 0, node.path));
551
+ return new Set(_chunkP42V6N34cjs.getDocAncestorNodeIds.call(void 0, node.path));
552
552
  });
553
553
  } else {
554
554
  const lastSlash = node.path.lastIndexOf("/");
555
555
  if (lastSlash > 0) {
556
- setExpandedNodes(new Set(_chunkGWQEYPYMcjs.getDocAncestorNodeIds.call(void 0, node.path.substring(0, lastSlash))));
556
+ setExpandedNodes(new Set(_chunkP42V6N34cjs.getDocAncestorNodeIds.call(void 0, node.path.substring(0, lastSlash))));
557
557
  }
558
558
  }
559
559
  lastFetchedPath.current = null;
@@ -568,7 +568,7 @@ function useDocumentTree(config, initialPath) {
568
568
  const hashIndex = path.indexOf("#");
569
569
  const anchor = hashIndex !== -1 ? path.substring(hashIndex) : "";
570
570
  const cleanPath = path.replace(/\/$/, "").split("#")[0];
571
- const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _6 => _6.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current : _chunkGWQEYPYMcjs.stripFolderIndexFromPath.call(void 0, cleanPath, folderIndexFile);
571
+ const pathForSelection = anchor && _optionalChain([options, 'optionalAccess', _6 => _6.fromInternalLink]) && cleanPath === "" ? selectedPathRef.current : _chunkP42V6N34cjs.stripFolderIndexFromPath.call(void 0, cleanPath, folderIndexFile);
572
572
  if (anchor && _optionalChain([options, 'optionalAccess', _7 => _7.fromInternalLink]) && pathForSelection === selectedPathRef.current) {
573
573
  _chunkUVTD52MDcjs.navigateSamePageHash.call(void 0, anchor, { headerOffset: _chunkUVTD52MDcjs.HUB_HEADER_OFFSET_PX });
574
574
  return;
@@ -632,15 +632,15 @@ function useDocumentTree(config, initialPath) {
632
632
  return docNavigation.register({
633
633
  baseRoute: normalizedBaseRoute,
634
634
  findNodeByPath: (path) => {
635
- const clean = _chunkGWQEYPYMcjs.stripFolderIndexFromPath.call(void 0, path.replace(/\/$/, "").split("#")[0], folderIndexFile);
636
- return _nullishCoalesce(_chunkGWQEYPYMcjs.findDocNodeByPath.call(void 0, clean, structure), () => ( null));
635
+ const clean = _chunkP42V6N34cjs.stripFolderIndexFromPath.call(void 0, path.replace(/\/$/, "").split("#")[0], folderIndexFile);
636
+ return _nullishCoalesce(_chunkP42V6N34cjs.findDocNodeByPath.call(void 0, clean, structure), () => ( null));
637
637
  },
638
638
  selectNode
639
639
  });
640
640
  }, [docNavigation, normalizedBaseRoute, structure, selectNode, folderIndexFile]);
641
641
  const isEmptyFolder = _react.useMemo.call(void 0, () => {
642
642
  if (!selectedPath || structure.length === 0) return false;
643
- const node = _chunkGWQEYPYMcjs.findDocNodeByPath.call(void 0, selectedPath, structure);
643
+ const node = _chunkP42V6N34cjs.findDocNodeByPath.call(void 0, selectedPath, structure);
644
644
  return !!node && node.type === "folder" && !node.hasReadme && !findFirstDocPath(node);
645
645
  }, [selectedPath, structure]);
646
646
  return {
@@ -823,7 +823,7 @@ function DocViewerContent({
823
823
  label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _16 => _16.label]), () => ( "Back to home")),
824
824
  onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _17 => _17.href]), () => ( "/")))
825
825
  };
826
- const docSearch = _chunk3PLDQDE6cjs.useDocSearch.call(void 0, {
826
+ const docSearch = _chunk6I4ZAFO2cjs.useDocSearch.call(void 0, {
827
827
  source: chatSource,
828
828
  baseRoute,
829
829
  searchEndpoint,
@@ -847,7 +847,7 @@ function DocViewerContent({
847
847
  onResolveLink: resolveLink
848
848
  });
849
849
  }, [content, renderContent, navigateToDoc, sourceId, resolveLink]);
850
- const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([_chunkGWQEYPYMcjs.findDocNodeByPath.call(void 0, selectedPath, structure), 'optionalAccess', _18 => _18.documentType]) : void 0;
850
+ const selectedNodeDocType = selectedPath && structure.length > 0 ? _optionalChain([_chunkP42V6N34cjs.findDocNodeByPath.call(void 0, selectedPath, structure), 'optionalAccess', _18 => _18.documentType]) : void 0;
851
851
  const activeDocType = _nullishCoalesce(_optionalChain([content, 'optionalAccess', _19 => _19.documentType]), () => ( selectedNodeDocType));
852
852
  const isMarkdownContent = !activeDocType || activeDocType === "markdown";
853
853
  const showStickyNav = isMarkdownContent;
@@ -858,9 +858,9 @@ function DocViewerContent({
858
858
  const containerBgStyle = colorPalette.containerBackground !== "transparent" ? { backgroundColor: colorPalette.containerBackground } : {};
859
859
  const defaultEmptyText = structure.length > 0 ? "Select a document from the sidebar to view" : "No documents yet. Add content from the admin panel.";
860
860
  const resolvedEmptyText = emptyStateText || defaultEmptyText;
861
- const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: { ...bgStyle, ...containerBgStyle }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGWQEYPYMcjs.PageLayout, { title, subtitle, titleSize: "h1", titleWrap: true, backButton: _nullishCoalesce(backCfg, () => ( void 0)), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-10", children: [
861
+ const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { style: { ...bgStyle, ...containerBgStyle }, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP42V6N34cjs.PageLayout, { title, subtitle, titleSize: "h1", titleWrap: true, backButton: _nullishCoalesce(backCfg, () => ( void 0)), children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex w-full flex-col gap-10", children: [
862
862
  showAIChat && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
863
- _chunk3PLDQDE6cjs.DocSearchBar,
863
+ _chunk6I4ZAFO2cjs.DocSearchBar,
864
864
  {
865
865
  placeholder: `Search ${_optionalChain([sidebarLabel, 'optionalAccess', _23 => _23.toLowerCase, 'call', _24 => _24()]) || "documents"}...`,
866
866
  query: docSearch.query,
@@ -879,9 +879,9 @@ function DocViewerContent({
879
879
  ] })
880
880
  ] }) }),
881
881
  !error && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-1 flex-col items-start gap-6 content-lg:flex-row content-lg:gap-10", children: [
882
- /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full content-lg:w-[320px] content-lg:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "content-lg:sticky content-lg:top-20", children: isLoadingStructure ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGWQEYPYMcjs.CategorySidebarSkeleton, {}) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
882
+ /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "w-full content-lg:w-[320px] content-lg:shrink-0", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "content-lg:sticky content-lg:top-20", children: isLoadingStructure ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP42V6N34cjs.CategorySidebarSkeleton, {}) : /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, _jsxruntime.Fragment, { children: [
883
883
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentMobileDropdown, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
884
- _chunkLVSFKENJcjs.MobileNavigationDropdown,
884
+ _chunkJRU2CXLBcjs.MobileNavigationDropdown,
885
885
  {
886
886
  nodes: structure,
887
887
  selectedPath,
@@ -895,7 +895,7 @@ function DocViewerContent({
895
895
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, PersistentSidebar, { isLoading: false, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden content-lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
896
896
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "font-semibold text-ods-text-secondary text-h5", children: sidebarLabel }),
897
897
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
898
- _chunkLVSFKENJcjs.MultiLevelNavigation,
898
+ _chunkJRU2CXLBcjs.MultiLevelNavigation,
899
899
  {
900
900
  nodes: structure,
901
901
  selectedPath,
@@ -934,7 +934,7 @@ function DocViewerContent({
934
934
  showStickyNav && content && stickyNavSections.length > 0 && !isLoadingContent && /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "hidden content-lg:block", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "sticky top-24", children: [
935
935
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "h3", { className: "mb-4 font-semibold text-ods-text-secondary text-h5", children: "ON THIS PAGE" }),
936
936
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
937
- _chunkLVSFKENJcjs.StickySectionNav,
937
+ _chunkJRU2CXLBcjs.StickySectionNav,
938
938
  {
939
939
  sections: stickyNavSections,
940
940
  activeSection,
@@ -949,7 +949,7 @@ function DocViewerContent({
949
949
  ) })
950
950
  ] })
951
951
  ] }) }) });
952
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGWQEYPYMcjs.PageShell, { contentClassName: `${bgClass} ${className}`, children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `page-shell-content ${bgClass} ${className}`.trim(), children: inner });
952
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP42V6N34cjs.PageShell, { contentClassName: `${bgClass} ${className}`, children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: `page-shell-content ${bgClass} ${className}`.trim(), children: inner });
953
953
  }
954
954
 
955
955
  // src/components/docs/skeletons.tsx
@@ -1045,11 +1045,11 @@ function EmbedSkeleton({ documentType } = {}) {
1045
1045
 
1046
1046
  var DEFAULT_TITLE = "Documents";
1047
1047
  var defaultFallbackRenderer = () => /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "py-16 text-center", children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "p", { className: "text-ods-text-secondary", children: "Unsupported document type" }) });
1048
- var defaultPdfRenderer = (content, handlers) => content.fileUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTQ4LB2DScjs.PdfViewer, { src: content.fileUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
1049
- var defaultGoogleSheetRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkTQ4LB2DScjs.GoogleSheetsViewer, { externalUrl: content.externalUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
1050
- var defaultFigmaRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGWQEYPYMcjs.FigmaEmbed, { url: content.externalUrl, title: content.fileName, loading: "eager" }) : defaultFallbackRenderer(content, handlers);
1048
+ var defaultPdfRenderer = (content, handlers) => content.fileUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQAOFMK2Acjs.PdfViewer, { src: content.fileUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
1049
+ var defaultGoogleSheetRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkQAOFMK2Acjs.GoogleSheetsViewer, { externalUrl: content.externalUrl, fileName: content.fileName }) : defaultFallbackRenderer(content, handlers);
1050
+ var defaultFigmaRenderer = (content, handlers) => content.externalUrl ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP42V6N34cjs.FigmaEmbed, { url: content.externalUrl, title: content.fileName, loading: "eager" }) : defaultFallbackRenderer(content, handlers);
1051
1051
  var defaultFileRenderer = (content) => /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
1052
- _chunkTQ4LB2DScjs.FileDownloadCard,
1052
+ _chunkQAOFMK2Acjs.FileDownloadCard,
1053
1053
  {
1054
1054
  fileName: content.fileName,
1055
1055
  mimeType: content.mimeType,
@@ -4,12 +4,15 @@
4
4
 
5
5
 
6
6
 
7
- var _chunkGWQEYPYMcjs = require('./chunk-GWQEYPYM.cjs');
7
+ var _chunkP42V6N34cjs = require('./chunk-P42V6N34.cjs');
8
8
 
9
9
 
10
10
  var _chunkWCVZCGK5cjs = require('./chunk-WCVZCGK5.cjs');
11
11
 
12
12
 
13
+ var _chunkSEXWHIMScjs = require('./chunk-SEXWHIMS.cjs');
14
+
15
+
13
16
  var _chunkUVTD52MDcjs = require('./chunk-UVTD52MD.cjs');
14
17
 
15
18
 
@@ -125,12 +128,22 @@ var ToolBadge = ({
125
128
  icon,
126
129
  variant = "inline",
127
130
  href,
131
+ targetPlatform,
128
132
  className,
129
133
  iconClassName
130
134
  }) => {
131
- const text = _nullishCoalesce(label, () => ( (toolType ? _chunkGWQEYPYMcjs.getToolLabel.call(void 0, toolType) : "")));
135
+ const text = _nullishCoalesce(label, () => ( (toolType ? _chunkP42V6N34cjs.getToolLabel.call(void 0, toolType) : "")));
132
136
  const mark = _nullishCoalesce(icon, () => ( (toolType ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkUVTD52MDcjs.ToolIcon, { toolType, className: iconClassName, size: 16 }) : null)));
133
- const linked = (node, linkClassName) => href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href, target: "_blank", rel: "noopener noreferrer", title: text || void 0, className: linkClassName, children: node }) : node;
137
+ const linked = (node, linkClassName) => href && targetPlatform ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
138
+ _chunkSEXWHIMScjs.NavLinkAnchorViaRuntime,
139
+ {
140
+ href,
141
+ targetPlatform,
142
+ title: text || void 0,
143
+ className: linkClassName,
144
+ children: node
145
+ }
146
+ ) : href ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "a", { href, target: "_blank", rel: "noopener noreferrer", title: text || void 0, className: linkClassName, children: node }) : node;
134
147
  if (variant === "chip") {
135
148
  return linked(
136
149
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -162,31 +175,31 @@ var ToolBadge = ({
162
175
  // src/components/platform/ShellTypeBadge.tsx
163
176
 
164
177
  var shellIconMap = {
165
- [_chunkGWQEYPYMcjs.ShellTypeValues.POWERSHELL]: {
178
+ [_chunkP42V6N34cjs.ShellTypeValues.POWERSHELL]: {
166
179
  icon: _chunkVX4E6YSBcjs.PowershellLogoGreyIcon,
167
180
  props: { size: 16, className: "text-ods-text-secondary" }
168
181
  },
169
- [_chunkGWQEYPYMcjs.ShellTypeValues.CMD]: {
182
+ [_chunkP42V6N34cjs.ShellTypeValues.CMD]: {
170
183
  icon: _chunkLLSUVPQCcjs.CmdIcon,
171
184
  props: { size: 16, color: "var(--color-text-secondary)" }
172
185
  },
173
- [_chunkGWQEYPYMcjs.ShellTypeValues.BASH]: {
186
+ [_chunkP42V6N34cjs.ShellTypeValues.BASH]: {
174
187
  icon: _chunkLLSUVPQCcjs.BashIcon,
175
188
  props: { size: 16, color: "var(--color-text-secondary)" }
176
189
  },
177
- [_chunkGWQEYPYMcjs.ShellTypeValues.PYTHON]: {
190
+ [_chunkP42V6N34cjs.ShellTypeValues.PYTHON]: {
178
191
  icon: _chunkVX4E6YSBcjs.PythonLogoIcon,
179
192
  props: { size: 16, className: "text-ods-text-secondary" }
180
193
  },
181
- [_chunkGWQEYPYMcjs.ShellTypeValues.NUSHELL]: {
194
+ [_chunkP42V6N34cjs.ShellTypeValues.NUSHELL]: {
182
195
  icon: _chunkLLSUVPQCcjs.NushellIcon,
183
196
  props: { size: 16, color: "var(--color-text-secondary)" }
184
197
  },
185
- [_chunkGWQEYPYMcjs.ShellTypeValues.DENO]: {
198
+ [_chunkP42V6N34cjs.ShellTypeValues.DENO]: {
186
199
  icon: _chunkLLSUVPQCcjs.DenoIcon,
187
200
  props: { size: 16, color: "var(--color-text-secondary)" }
188
201
  },
189
- [_chunkGWQEYPYMcjs.ShellTypeValues.SHELL]: {
202
+ [_chunkP42V6N34cjs.ShellTypeValues.SHELL]: {
190
203
  icon: _chunkLLSUVPQCcjs.ShellIcon,
191
204
  props: { size: 16, color: "var(--color-text-secondary)" }
192
205
  }
@@ -197,7 +210,7 @@ var defaultIconConfig = {
197
210
  };
198
211
  var ShellTypeBadge = ({ shellType, className, iconClassName }) => {
199
212
  const normalizedType = _optionalChain([shellType, 'optionalAccess', _ => _.toUpperCase, 'call', _2 => _2()]);
200
- const label = _chunkGWQEYPYMcjs.getShellLabel.call(void 0, normalizedType);
213
+ const label = _chunkP42V6N34cjs.getShellLabel.call(void 0, normalizedType);
201
214
  const { icon: IconComponent, props: iconProps } = _nullishCoalesce(shellIconMap[normalizedType], () => ( defaultIconConfig));
202
215
  const defaultIconClassName = "className" in iconProps ? iconProps.className : void 0;
203
216
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex items-center gap-1", className), children: [
@@ -213,7 +226,7 @@ function formatSupportedPlatforms(platforms) {
213
226
  if (!platforms || platforms.length === 0) {
214
227
  return "All Platforms";
215
228
  }
216
- return platforms.map((platform) => _chunkGWQEYPYMcjs.getOSLabel.call(void 0, platform)).join(", ");
229
+ return platforms.map((platform) => _chunkP42V6N34cjs.getOSLabel.call(void 0, platform)).join(", ");
217
230
  }
218
231
  function InfoCell({ label, value, avatar, className }) {
219
232
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "flex min-w-0 items-center gap-2", className), children: [
@@ -233,7 +246,7 @@ var ScriptInfoSection = ({
233
246
  author,
234
247
  className
235
248
  }) => {
236
- const shellLabel = _chunkGWQEYPYMcjs.getShellLabel.call(void 0, shellType);
249
+ const shellLabel = _chunkP42V6N34cjs.getShellLabel.call(void 0, shellType);
237
250
  const platformsLabel = formatSupportedPlatforms(supportedPlatforms);
238
251
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: _chunk3ATAYP36cjs.cn.call(void 0, "overflow-hidden rounded-[6px] border border-ods-border bg-ods-card", className), children: [
239
252
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "border-b border-ods-border p-4", children: /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "flex flex-col gap-1", children: [
@@ -5,7 +5,7 @@ var _chunkUDFRUKLCcjs = require('./chunk-UDFRUKLC.cjs');
5
5
 
6
6
 
7
7
 
8
- var _chunkGWQEYPYMcjs = require('./chunk-GWQEYPYM.cjs');
8
+ var _chunkP42V6N34cjs = require('./chunk-P42V6N34.cjs');
9
9
 
10
10
 
11
11
  var _chunkWCVZCGK5cjs = require('./chunk-WCVZCGK5.cjs');
@@ -16,7 +16,7 @@ var _chunkBIZNSF3Ucjs = require('./chunk-BIZNSF3U.cjs');
16
16
 
17
17
 
18
18
 
19
- var _chunk7OFPU7WEcjs = require('./chunk-7OFPU7WE.cjs');
19
+ var _chunkSEXWHIMScjs = require('./chunk-SEXWHIMS.cjs');
20
20
 
21
21
 
22
22
 
@@ -56,7 +56,7 @@ function FaqAccordion({ items, defaultOpenIds = [] }) {
56
56
  return /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
57
57
  "div",
58
58
  {
59
- id: _chunk7OFPU7WEcjs.faqItemAnchor.call(void 0, item.id),
59
+ id: _chunkSEXWHIMScjs.faqItemAnchor.call(void 0, item.id),
60
60
  className: "scroll-mt-24 transition-colors hover:bg-ods-bg-hover",
61
61
  children: [
62
62
  /* @__PURE__ */ _jsxruntime.jsxs.call(void 0,
@@ -149,7 +149,7 @@ function groupFaqsBySection(faqs) {
149
149
  }
150
150
  let group = byName.get(name);
151
151
  if (!group) {
152
- group = { section: name, slug: _chunk7OFPU7WEcjs.faqSectionSlug.call(void 0, name), items: [] };
152
+ group = { section: name, slug: _chunkSEXWHIMScjs.faqSectionSlug.call(void 0, name), items: [] };
153
153
  byName.set(name, group);
154
154
  }
155
155
  group.items.push(item);
@@ -202,7 +202,7 @@ function GroupedFaqList({
202
202
  }, [slugKey]);
203
203
  const [hashTarget, setHashTarget] = _react.useState.call(void 0, null);
204
204
  _react.useEffect.call(void 0, () => {
205
- const refresh = () => setHashTarget(_chunk7OFPU7WEcjs.parseFaqHash.call(void 0, window.location.hash));
205
+ const refresh = () => setHashTarget(_chunkSEXWHIMScjs.parseFaqHash.call(void 0, window.location.hash));
206
206
  refresh();
207
207
  window.addEventListener("hashchange", refresh);
208
208
  return () => window.removeEventListener("hashchange", refresh);
@@ -336,7 +336,7 @@ function FaqDocumentPage({
336
336
  label: _nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _16 => _16.label]), () => ( "Back to home")),
337
337
  onClick: () => router.push(_nullishCoalesce(_optionalChain([backButton, 'optionalAccess', _17 => _17.href]), () => ( "/")))
338
338
  };
339
- const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGWQEYPYMcjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
339
+ const inner = /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP42V6N34cjs.PageLayout, { title, subtitle, backButton: backCfg, titleSize: "h1", titleWrap: true, children: /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
340
340
  FaqSection,
341
341
  {
342
342
  initialFaqs,
@@ -349,7 +349,7 @@ function FaqDocumentPage({
349
349
  minResults
350
350
  }
351
351
  ) });
352
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGWQEYPYMcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
352
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP42V6N34cjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
353
353
  }
354
354
 
355
355
 
@@ -2,11 +2,11 @@
2
2
  import {
3
3
  ArticleAuthorByline,
4
4
  DetailPageSkeleton
5
- } from "./chunk-IKJA3Y7Z.js";
5
+ } from "./chunk-I3ST4PLM.js";
6
6
  import {
7
7
  DocSearchBar,
8
8
  useDocSearch
9
- } from "./chunk-PXOQIA5K.js";
9
+ } from "./chunk-DA5UDTLG.js";
10
10
  import {
11
11
  useSelfFetch
12
12
  } from "./chunk-4IBPRIQH.js";
@@ -18,12 +18,12 @@ import {
18
18
  PageShell,
19
19
  RichMarkdownRenderer,
20
20
  resolveContentHref
21
- } from "./chunk-G6UMNAVI.js";
21
+ } from "./chunk-4L6XCMOU.js";
22
22
  import {
23
23
  EntityVideoSection,
24
24
  VideoBitesStrip,
25
25
  useCaptions
26
- } from "./chunk-7GEBFJT2.js";
26
+ } from "./chunk-PO33GZVY.js";
27
27
  import {
28
28
  useRouter,
29
29
  useSearchParams
@@ -10,7 +10,7 @@ var _chunkPLYEKV3Ncjs = require('./chunk-PLYEKV3N.cjs');
10
10
 
11
11
 
12
12
 
13
- var _chunkGWQEYPYMcjs = require('./chunk-GWQEYPYM.cjs');
13
+ var _chunkP42V6N34cjs = require('./chunk-P42V6N34.cjs');
14
14
 
15
15
 
16
16
 
@@ -63,7 +63,7 @@ function ListEmptyState({ isFiltered, filtered, onClearFilters, empty }) {
63
63
  var _react = require('react');
64
64
 
65
65
  function DevSectionView({ sectionKey, hero, preControls, children, showHeading = true }) {
66
- const section = _chunkGWQEYPYMcjs.OPENFRAME_DEV_SECTIONS[sectionKey];
66
+ const section = _chunkP42V6N34cjs.OPENFRAME_DEV_SECTIONS[sectionKey];
67
67
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
68
68
  const pathname = _chunk7DNL734Scjs.usePathname.call(void 0, );
69
69
  const searchParams = _chunk7DNL734Scjs.useSearchParams.call(void 0, );
@@ -114,7 +114,7 @@ function DevSectionView({ sectionKey, hero, preControls, children, showHeading =
114
114
  preControls,
115
115
  (search || filter) && /* @__PURE__ */ _jsxruntime.jsxs.call(void 0, "div", { className: "space-y-4", children: [
116
116
  search && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
117
- _chunkGWQEYPYMcjs.SearchInput,
117
+ _chunkP42V6N34cjs.SearchInput,
118
118
  {
119
119
  showDropdown: false,
120
120
  placeholder: search.placeholder,
@@ -124,7 +124,7 @@ function DevSectionView({ sectionKey, hero, preControls, children, showHeading =
124
124
  }
125
125
  ),
126
126
  filter && /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
127
- _chunkGWQEYPYMcjs.StatusFilterComponent,
127
+ _chunkP42V6N34cjs.StatusFilterComponent,
128
128
  {
129
129
  selectedStatus: currentFilterValue,
130
130
  onStatusChange: handleFilterChange,
@@ -148,7 +148,7 @@ function DevSectionPage({
148
148
  shell = true
149
149
  }) {
150
150
  const router = _chunk7DNL734Scjs.useRouter.call(void 0, );
151
- const section = _chunkGWQEYPYMcjs.OPENFRAME_DEV_SECTIONS[sectionKey];
151
+ const section = _chunkP42V6N34cjs.OPENFRAME_DEV_SECTIONS[sectionKey];
152
152
  const backCfg = backButton === false ? void 0 : {
153
153
  label: _nullishCoalesce((backButton ? backButton.label : void 0), () => ( "Back to home")),
154
154
  onClick: () => router.push(_nullishCoalesce((backButton ? backButton.href : void 0), () => ( "/")))
@@ -161,7 +161,7 @@ function DevSectionPage({
161
161
  // duplicate title. (The hero icon is intentionally dropped: TitleBlock is
162
162
  // frozen and renders title-only.)
163
163
  /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
164
- _chunkGWQEYPYMcjs.PageLayout,
164
+ _chunkP42V6N34cjs.PageLayout,
165
165
  {
166
166
  title: _nullishCoalesce(title, () => ( section.hero.title)),
167
167
  subtitle: _nullishCoalesce(subtitle, () => ( section.hero.description)),
@@ -172,7 +172,7 @@ function DevSectionPage({
172
172
  }
173
173
  )
174
174
  );
175
- return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkGWQEYPYMcjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
175
+ return shell ? /* @__PURE__ */ _jsxruntime.jsx.call(void 0, _chunkP42V6N34cjs.PageShell, { children: inner }) : /* @__PURE__ */ _jsxruntime.jsx.call(void 0, "div", { className: "page-shell-content", children: inner });
176
176
  }
177
177
 
178
178
  // src/components/shared/dev-section/dev-card-row.tsx
@@ -230,8 +230,8 @@ function getRelativeTime(timestamp) {
230
230
  }
231
231
  function DeliveryRow({ item, href, target, caption, id, className }) {
232
232
  const taskType = item.taskType;
233
- const typeBadgeLabel = _chunkGWQEYPYMcjs.TASK_TYPE_LABELS[taskType] || "TASK";
234
- const typeBadgeTextColor = _chunkGWQEYPYMcjs.TASK_TYPE_TEXT_COLORS[taskType] || "";
233
+ const typeBadgeLabel = _chunkP42V6N34cjs.TASK_TYPE_LABELS[taskType] || "TASK";
234
+ const typeBadgeTextColor = _chunkP42V6N34cjs.TASK_TYPE_TEXT_COLORS[taskType] || "";
235
235
  const statusBadgeScheme = _chunk6NTPY5QAcjs.getStatusColorScheme.call(void 0, item.status);
236
236
  const relativeTime = getRelativeTime(item.dateUpdated);
237
237
  const subtitle = `ACTIVE ${relativeTime}${item.listNames.length > 0 ? `, ${item.listNames.join(", ")}` : ""}, ${item.id}`;
@@ -92,9 +92,10 @@ import {
92
92
  useCaptions,
93
93
  useCollapsible,
94
94
  useIsHydrated,
95
+ useNavLinkViaRuntime,
95
96
  useResizablePanelSize,
96
97
  useScrollFade
97
- } from "./chunk-7GEBFJT2.js";
98
+ } from "./chunk-PO33GZVY.js";
98
99
  import {
99
100
  ToolIcon,
100
101
  createHeadingIdDeduper,
@@ -12375,6 +12376,13 @@ var BenefitCardGrid = ({ children, className = "", columns = 2 }) => {
12375
12376
  import { ExternalLink as ExternalLink4 } from "lucide-react";
12376
12377
  import React9 from "react";
12377
12378
  import { jsx as jsx90, jsxs as jsxs68 } from "react/jsx-runtime";
12379
+ function PlatformBrowseButton({ item }) {
12380
+ const linkProps = useNavLinkViaRuntime({ href: item.link, targetPlatform: item.targetPlatform });
12381
+ return /* @__PURE__ */ jsxs68(Button, { variant: "outline", linkProps, rightIcon: /* @__PURE__ */ jsx90(ExternalLink4, { className: "h-4 w-4" }), children: [
12382
+ "Browse ",
12383
+ item.buttonText
12384
+ ] });
12385
+ }
12378
12386
  function BrandAssociationCard({ item, className = "" }) {
12379
12387
  const renderIcon = () => {
12380
12388
  if (React9.isValidElement(item.icon)) {
@@ -12387,7 +12395,7 @@ function BrandAssociationCard({ item, className = "" }) {
12387
12395
  /* @__PURE__ */ jsx90("div", { className: "flex h-20 w-20 items-center justify-center", children: renderIcon() }),
12388
12396
  /* @__PURE__ */ jsx90("h3", { className: "text-ods-text-primary text-h2", children: item.title }),
12389
12397
  /* @__PURE__ */ jsx90("p", { className: "text-ods-text-secondary text-h6", children: item.description }),
12390
- /* @__PURE__ */ jsxs68(Button, { variant: "outline", href: item.link, openInNewTab: true, rightIcon: /* @__PURE__ */ jsx90(ExternalLink4, { className: "h-4 w-4" }), children: [
12398
+ item.targetPlatform ? /* @__PURE__ */ jsx90(PlatformBrowseButton, { item }) : /* @__PURE__ */ jsxs68(Button, { variant: "outline", href: item.link, openInNewTab: true, rightIcon: /* @__PURE__ */ jsx90(ExternalLink4, { className: "h-4 w-4" }), children: [
12391
12399
  "Browse ",
12392
12400
  item.buttonText
12393
12401
  ] })
@@ -5,7 +5,7 @@ import {
5
5
  import {
6
6
  PageLayout,
7
7
  PageShell
8
- } from "./chunk-G6UMNAVI.js";
8
+ } from "./chunk-4L6XCMOU.js";
9
9
  import {
10
10
  useScrollToHash
11
11
  } from "./chunk-KUC673HM.js";
@@ -16,7 +16,7 @@ import {
16
16
  faqItemAnchor,
17
17
  faqSectionSlug,
18
18
  parseFaqHash
19
- } from "./chunk-7GEBFJT2.js";
19
+ } from "./chunk-PO33GZVY.js";
20
20
  import {
21
21
  STICKY_HEADER_OFFSET_PX,
22
22
  navigateSamePageHash,
@@ -1,7 +1,7 @@
1
1
  "use strict";Object.defineProperty(exports, "__esModule", {value: true}); function _nullishCoalesce(lhs, rhsFn) { if (lhs != null) { return lhs; } else { return rhsFn(); } } function _optionalChain(ops) { let lastAccessLHS = undefined; let value = ops[0]; let i = 1; while (i < ops.length) { const op = ops[i]; const fn = ops[i + 1]; i += 2; if ((op === 'optionalAccess' || op === 'optionalCall') && value == null) { return undefined; } if (op === 'access' || op === 'optionalAccess') { lastAccessLHS = value; value = fn(value); } else if (op === 'call' || op === 'optionalCall') { value = fn((...args) => value.call(lastAccessLHS, ...args)); lastAccessLHS = undefined; } } return value; }"use client";
2
2
 
3
3
 
4
- var _chunkGWQEYPYMcjs = require('./chunk-GWQEYPYM.cjs');
4
+ var _chunkP42V6N34cjs = require('./chunk-P42V6N34.cjs');
5
5
 
6
6
 
7
7
  var _chunkOF6GEI5Acjs = require('./chunk-OF6GEI5A.cjs');
@@ -12,7 +12,7 @@ var _chunkOF6GEI5Acjs = require('./chunk-OF6GEI5A.cjs');
12
12
 
13
13
 
14
14
 
15
- var _chunk7OFPU7WEcjs = require('./chunk-7OFPU7WE.cjs');
15
+ var _chunkSEXWHIMScjs = require('./chunk-SEXWHIMS.cjs');
16
16
 
17
17
 
18
18
  var _chunkUVTD52MDcjs = require('./chunk-UVTD52MD.cjs');
@@ -39,7 +39,7 @@ var _jsxruntime = require('react/jsx-runtime');
39
39
  function DocSearchResultRow({ result, isHighlighted }) {
40
40
  const docType = _optionalChain([result, 'access', _ => _.metadata, 'optionalAccess', _2 => _2.documentType]) || void 0;
41
41
  const sourceRepo = _optionalChain([result, 'access', _3 => _3.metadata, 'optionalAccess', _4 => _4.sourceRepo]) || void 0;
42
- const { Icon: SourceIcon, label: iconLabel } = _chunk7OFPU7WEcjs.resolveSourceIcon.call(void 0, {
42
+ const { Icon: SourceIcon, label: iconLabel } = _chunkSEXWHIMScjs.resolveSourceIcon.call(void 0, {
43
43
  sourceRepo,
44
44
  documentType: docType
45
45
  });
@@ -69,7 +69,7 @@ function DocSearchBar({
69
69
  renderResult
70
70
  }) {
71
71
  return /* @__PURE__ */ _jsxruntime.jsx.call(void 0,
72
- _chunkGWQEYPYMcjs.SearchInput,
72
+ _chunkP42V6N34cjs.SearchInput,
73
73
  {
74
74
  placeholder,
75
75
  value: query,
@@ -119,7 +119,7 @@ function mapDocSearchResults(docs) {
119
119
  results.push({
120
120
  id: `group-${entry.repo}`,
121
121
  // Same table label and count as the chat's grouped chip: one owner each.
122
- title: `${_chunk7OFPU7WEcjs.getSourceLabel.call(void 0, entry.repo)} ${_chunk7OFPU7WEcjs.recordCountLabel.call(void 0, rows.length)}`,
122
+ title: `${_chunkSEXWHIMScjs.getSourceLabel.call(void 0, entry.repo)} ${_chunkSEXWHIMScjs.recordCountLabel.call(void 0, rows.length)}`,
123
123
  path: rows[0].path,
124
124
  type: "file",
125
125
  metadata: {
@@ -311,27 +311,27 @@ function useDocSearch(config) {
311
311
  case "navigate-same-tab": {
312
312
  if (wantsNewTab) {
313
313
  setKeepOpen(true);
314
- window.open(action.href, "_blank", _chunk7OFPU7WEcjs.NEW_TAB_FEATURES);
314
+ window.open(action.href, "_blank", _chunkSEXWHIMScjs.NEW_TAB_FEATURES);
315
315
  return;
316
316
  }
317
317
  setKeepOpen(false);
318
318
  const path = baseRoute && action.href.startsWith(`${baseRoute}/`) ? action.href.slice(baseRoute.length + 1) : null;
319
319
  if (path && _optionalChain([onInPageSwap, 'optionalCall', _16 => _16(path)])) return;
320
- router.push(_chunk7OFPU7WEcjs.stripSameOriginToPath.call(void 0, action.href));
320
+ router.push(_chunkSEXWHIMScjs.stripSameOriginToPath.call(void 0, action.href));
321
321
  return;
322
322
  }
323
323
  case "navigate-new-tab":
324
324
  setKeepOpen(true);
325
325
  if (_optionalChain([runtime, 'optionalAccess', _17 => _17.navigation, 'access', _18 => _18.mode]) === "embed") {
326
326
  const targetPlatform = _nullishCoalesce(_optionalChain([result, 'access', _19 => _19.metadata, 'optionalAccess', _20 => _20.targetPlatform]), () => ( null));
327
- _chunk7OFPU7WEcjs.resolveExternalNavigation.call(void 0, {
327
+ _chunkSEXWHIMScjs.resolveExternalNavigation.call(void 0, {
328
328
  href: action.href,
329
329
  targetPlatform,
330
330
  runtime
331
331
  }).open();
332
332
  return;
333
333
  }
334
- window.open(action.href, "_blank", _chunk7OFPU7WEcjs.NEW_TAB_FEATURES);
334
+ window.open(action.href, "_blank", _chunkSEXWHIMScjs.NEW_TAB_FEATURES);
335
335
  return;
336
336
  case "ask-ai":
337
337
  setKeepOpen(false);
@@ -1,7 +1,7 @@
1
1
  "use client";
2
2
  import {
3
3
  EmbedViewerFrame
4
- } from "./chunk-G6UMNAVI.js";
4
+ } from "./chunk-4L6XCMOU.js";
5
5
  import {
6
6
  toGoogleSheetsEmbedUrl,
7
7
  toGoogleSheetsOriginalUrl