+ {zoomable && (
+
+
+
+
+
+
+ )}
+
+
+ )
+}
diff --git a/frontends/ui/src/shared/components/Mermaid/index.ts b/frontends/ui/src/shared/components/Mermaid/index.ts
new file mode 100644
index 000000000..da30635fe
--- /dev/null
+++ b/frontends/ui/src/shared/components/Mermaid/index.ts
@@ -0,0 +1,4 @@
+// SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+export { MermaidBlock } from './MermaidBlock'
diff --git a/frontends/ui/src/shared/components/Sources/SourceKindIcon.tsx b/frontends/ui/src/shared/components/Sources/SourceKindIcon.tsx
new file mode 100644
index 000000000..4f99d0653
--- /dev/null
+++ b/frontends/ui/src/shared/components/Sources/SourceKindIcon.tsx
@@ -0,0 +1,33 @@
+// SPDX-FileCopyrightText: Copyright (c) 2025-2026, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
+// SPDX-License-Identifier: Apache-2.0
+
+import type { ReactNode } from 'react'
+import type { SourceKind } from './types'
+
+interface Props {
+ kind: SourceKind
+ className?: string
+}
+
+/**
+ * Compact inline icon for a source's origin. Uses `currentColor` so callers
+ * control the accent. Self-contained SVGs to keep source typing free of external
+ * icon dependencies.
+ */
+export function SourceKindIcon({ kind, className = 'h-3.5 w-3.5' }: Props): ReactNode {
+ const common = { className, viewBox: '0 0 16 16', fill: 'none', stroke: 'currentColor', strokeWidth: 1.4 }
+ if (kind === 'web') {
+ return (
+