← back to andybhushan__offering

Function bodies 151 total

All specs Real LLM only Function bodies
searchDocuments function · javascript · L47-L76 (30 LOC)
api/chat/index.js
async function searchDocuments(query) {
  if (!AZURE_SEARCH_KEY) return [];

  try {
    const url = `${AZURE_SEARCH_ENDPOINT}/indexes/${SEARCH_INDEX}/docs/search?api-version=2024-07-01`;
    const response = await fetch(url, {
      method: 'POST',
      headers: {
        'Content-Type': 'application/json',
        'api-key': AZURE_SEARCH_KEY,
      },
      body: JSON.stringify({
        search: query,
        top: 5,
        select: 'title,content',
        queryType: 'simple',
      }),
    });

    if (!response.ok) return [];

    const data = await response.json();
    return (data.value || []).map(doc => ({
      title: doc.title || 'Unknown',
      content: (doc.content || '').substring(0, 2000),
    }));
  } catch {
    return [];
  }
}
NotFound function · typescript · L100-L112 (13 LOC)
src/App.tsx
function NotFound() {
  return (
    <main style={{ flex: 1, display: 'flex', alignItems: 'center', justifyContent: 'center', padding: '80px 0' }}>
      <div style={{ textAlign: 'center' }}>
        <div style={{ fontSize: '80px', fontWeight: '700', color: 'var(--ibm-gray-80)' }}>404</div>
        <div style={{ fontSize: '20px', color: 'var(--ibm-gray-50)', marginBottom: '24px' }}>Page not found</div>
        <a href="/">
          <button className="btn btn-primary">Go Home</button>
        </a>
      </div>
    </main>
  );
}
App function · typescript · L114-L234 (121 LOC)
src/App.tsx
function App() {
  return (
    <ThemeProvider>
      <BrowserRouter>
        <ScrollToTop />
        <Navbar />
        <Routes>
          <Route path="/" element={<Home />} />

          {/* Data Transformation offering */}
          <Route path="/dt" element={<DTOffering />} />
          <Route path="/dt/co-sell" element={<CoSellBattlecard />} />
          <Route path="/dt/readiness" element={<ReadinessScorecard />} />
          <Route path="/dt/cdo-guide" element={<CDOGuide />} />
          <Route path="/dt/value-dashboard" element={<ValueDashboard />} />
          <Route path="/dt/ebc" element={<EBCPackage />} />
          <Route path="/dt/scorecard-template" element={<ScorecardTemplate />} />
          <Route path="/dt/first-call" element={<FirstCallDeck />} />
          <Route path="/dt/win-stories" element={<WinStories />} />
          <Route path="/dt/fabric-vs-databricks" element={<FabricVsDatabricks />} />
          <Route path="/dt/sprint-playbook" element={<SprintPlaybook 
BackToTop function · typescript · L4-L41 (38 LOC)
src/components/BackToTop.tsx
export function BackToTop() {
  const [visible, setVisible] = useState(false);

  useEffect(() => {
    const onScroll = () => setVisible(window.scrollY > 400);
    window.addEventListener('scroll', onScroll);
    return () => window.removeEventListener('scroll', onScroll);
  }, []);

  if (!visible) return null;

  return (
    <button
      onClick={() => window.scrollTo({ top: 0, behavior: 'smooth' })}
      aria-label="Back to top"
      style={{
        position: 'fixed',
        bottom: '32px',
        right: '32px',
        width: '44px',
        height: '44px',
        borderRadius: '50%',
        background: 'var(--ibm-blue)',
        color: 'white',
        border: 'none',
        cursor: 'pointer',
        display: 'flex',
        alignItems: 'center',
        justifyContent: 'center',
        boxShadow: '0 4px 12px rgba(0,0,0,0.3)',
        zIndex: 999,
        transition: 'opacity 0.3s, transform 0.3s',
      }}
    >
      <ArrowUp size={20} />
    </button>
  );
}
FooterLink function · typescript · L18-L31 (14 LOC)
src/components/Footer.tsx
function FooterLink({ to, label }: { to: string; label: string }) {
  return (
    <li>
      <Link
        to={to}
        style={linkStyle}
        onMouseEnter={e => (e.currentTarget.style.color = 'white')}
        onMouseLeave={e => (e.currentTarget.style.color = 'var(--ibm-gray-50)')}
      >
        {label}
      </Link>
    </li>
  );
}
Footer function · typescript · L33-L118 (86 LOC)
src/components/Footer.tsx
export function Footer() {
  const currentYear = new Date().getFullYear();

  return (
    <footer style={{
      background: '#0d0d0d',
      borderTop: '1px solid var(--ibm-gray-90)',
      marginTop: 'auto',
    }}>
      <div className="container" style={{ padding: '48px 32px 32px' }}>
        <div style={{
          display: 'grid',
          gridTemplateColumns: 'repeat(auto-fit, minmax(220px, 1fr))',
          gap: '40px',
          marginBottom: '40px',
        }}>
          {/* Column 1: Branding */}
          <div>
            <div style={{ display: 'flex', alignItems: 'center', gap: '8px', marginBottom: '16px' }}>
              <img src="/images/ibm-logo.png" alt="IBM" style={{ height: '20px' }} />
              <span style={{ color: 'var(--ibm-gray-50)', fontSize: '14px', fontWeight: '300' }}>+</span>
              <img src="/images/ms-logo.png" alt="Microsoft" style={{ height: '16px' }} />
            </div>
            <p style={{ fontSize: '13px', color: 'var(--ibm-gray-
MessageFormatter function · typescript · L11-L21 (11 LOC)
src/components/MessageFormatter.tsx
export function MessageFormatter({ content }: Props) {
  const blocks = parseBlocks(content);

  return (
    <div style={{ display: 'flex', flexDirection: 'column', gap: '6px' }}>
      {blocks.map((block, i) => (
        <BlockRenderer key={i} block={block} />
      ))}
    </div>
  );
}
Repobility (the analyzer behind this table) · https://repobility.com
parseBlocks function · typescript · L37-L109 (73 LOC)
src/components/MessageFormatter.tsx
function parseBlocks(raw: string): Block[] {
  const lines = raw.split('\n');
  const blocks: Block[] = [];
  let i = 0;

  while (i < lines.length) {
    const line = lines[i];

    // Code block
    if (line.trimStart().startsWith('```')) {
      const lang = line.trim().replace('```', '').trim();
      const codeLines: string[] = [];
      i++;
      while (i < lines.length && !lines[i].trimStart().startsWith('```')) {
        codeLines.push(lines[i]);
        i++;
      }
      blocks.push({ type: 'code', language: lang, code: codeLines.join('\n') });
      i++;
      continue;
    }

    // Heading
    const headingMatch = line.match(/^(#{1,4})\s+(.+)/);
    if (headingMatch) {
      blocks.push({ type: 'heading', level: headingMatch[1].length, text: headingMatch[2] });
      i++;
      continue;
    }

    // Horizontal rule
    if (/^---+$/.test(line.trim())) {
      blocks.push({ type: 'divider' });
      i++;
      continue;
    }

    // Bullet list
    if (/^\s*[-*]\s+/.test
formatInline function · typescript · L113-L211 (99 LOC)
src/components/MessageFormatter.tsx
function formatInline(text: string): string {
  return text
    // Bold
    .replace(/\*\*(.+?)\*\*/g, '<strong style="color:var(--text-primary)">$1</strong>')
    // Italic
    .replace(/(?<!\*)\*([^*]+)\*(?!\*)/g, '<em>$1</em>')
    // Inline code
    .replace(/`([^`]+)`/g, '<code style="background:var(--bg-elevated);padding:1px 4px;border-radius:3px;font-size:12px;font-family:var(--font-mono);color:var(--ibm-blue-light)">$1</code>')
    // Links
    .replace(/\[([^\]]+)\]\(([^)]+)\)/g, '<a href="$2" style="color:var(--ibm-blue-light);text-decoration:underline" target="_blank">$1</a>')
    // Arrow link pattern: → See more: text
    .replace(/→\s*(.+)/g, '<span style="color:var(--ibm-blue-light)">→ $1</span>');
}

// ── Block Renderer ──

function BlockRenderer({ block }: { block: Block }) {
  switch (block.type) {
    case 'heading':
      return (
        <div style={{
          fontSize: block.level <= 2 ? '15px' : '14px',
          fontWeight: '700',
          color: 'var(--text-
BlockRenderer function · typescript · L129-L211 (83 LOC)
src/components/MessageFormatter.tsx
function BlockRenderer({ block }: { block: Block }) {
  switch (block.type) {
    case 'heading':
      return (
        <div style={{
          fontSize: block.level <= 2 ? '15px' : '14px',
          fontWeight: '700',
          color: 'var(--text-primary)',
          marginTop: block.level <= 2 ? '10px' : '6px',
          marginBottom: '2px',
          borderBottom: block.level <= 2 ? '1px solid var(--border-subtle)' : 'none',
          paddingBottom: block.level <= 2 ? '4px' : '0',
        }}
          dangerouslySetInnerHTML={{ __html: formatInline(block.text) }}
        />
      );

    case 'paragraph':
      return (
        <div style={{ fontSize: '13px', lineHeight: '1.65', color: 'var(--text-secondary)' }}
          dangerouslySetInnerHTML={{ __html: formatInline(block.text) }}
        />
      );

    case 'bullet':
      return (
        <div style={{ display: 'flex', gap: '8px', alignItems: 'flex-start', marginLeft: '4px' }}>
          <span style={{ color: 'var(--ibm-blue
MetricCard function · typescript · L9-L26 (18 LOC)
src/components/MetricCard.tsx
export function MetricCard({ value, label, sublabel, color = 'var(--ibm-blue-light)', icon }: MetricCardProps) {
  return (
    <div className="card" style={{ textAlign: 'center' }}>
      {icon && <div style={{ fontSize: '28px', marginBottom: '8px' }}>{icon}</div>}
      <div style={{ fontSize: '40px', fontWeight: '700', color, lineHeight: '1', marginBottom: '8px' }}>
        {value}
      </div>
      <div style={{ fontSize: '14px', fontWeight: '600', color: 'var(--ibm-gray-20)', marginBottom: '4px' }}>
        {label}
      </div>
      {sublabel && (
        <div style={{ fontSize: '12px', color: 'var(--ibm-gray-50)' }}>
          {sublabel}
        </div>
      )}
    </div>
  );
}
DatabricksIcon function · typescript · L14-L22 (9 LOC)
src/components/MicrosoftIcons.tsx
export function DatabricksIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <path d="M12 2L2 7.5l10 5.5 10-5.5L12 2z" fill="#FF3621" />
      <path d="M2 12l10 5.5L22 12" stroke="#FF3621" strokeWidth="1.5" fill="none" />
      <path d="M2 16.5L12 22l10-5.5" stroke="#EE6C4D" strokeWidth="1.5" fill="none" />
    </svg>
  );
}
FabricIcon function · typescript · L25-L34 (10 LOC)
src/components/MicrosoftIcons.tsx
export function FabricIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <path d="M12 2L4 6.5V13l8 4.5 8-4.5V6.5L12 2z" fill="#0078D4" />
      <path d="M12 2v15" stroke="#fff" strokeWidth="0.8" opacity="0.5" />
      <path d="M4 6.5L12 11l8-4.5" stroke="#fff" strokeWidth="0.8" opacity="0.5" />
      <path d="M8 18l4 4 4-4" fill="#005A9E" />
    </svg>
  );
}
PowerBIIcon function · typescript · L37-L45 (9 LOC)
src/components/MicrosoftIcons.tsx
export function PowerBIIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <rect x="4" y="14" width="4" height="7" rx="1" fill="#F2C811" />
      <rect x="10" y="9" width="4" height="12" rx="1" fill="#E8B408" />
      <rect x="16" y="3" width="4" height="18" rx="1" fill="#D4A106" />
    </svg>
  );
}
EventHubIcon function · typescript · L48-L56 (9 LOC)
src/components/MicrosoftIcons.tsx
export function EventHubIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <circle cx="12" cy="12" r="9" stroke="#0078D4" strokeWidth="1.5" fill="none" />
      <path d="M7 8.5h10M7 12h10M7 15.5h10" stroke="#0078D4" strokeWidth="1.5" strokeLinecap="round" />
      <circle cx="12" cy="12" r="2.5" fill="#0078D4" />
    </svg>
  );
}
Source: Repobility analyzer · https://repobility.com
OneLakeIcon function · typescript · L59-L68 (10 LOC)
src/components/MicrosoftIcons.tsx
export function OneLakeIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <ellipse cx="12" cy="8" rx="9" ry="4" fill="#0078D4" />
      <path d="M3 8v8c0 2.2 4 4 9 4s9-1.8 9-4V8" fill="#005A9E" />
      <ellipse cx="12" cy="16" rx="9" ry="4" fill="#0078D4" opacity="0.6" />
      <path d="M8 10l4 3 4-3" stroke="#fff" strokeWidth="1.2" strokeLinecap="round" fill="none" />
    </svg>
  );
}
AzureIcon function · typescript · L71-L78 (8 LOC)
src/components/MicrosoftIcons.tsx
export function AzureIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <path d="M8.8 18.5H19l-5.4-6.3 3.6-8.7H13L6 15.5l2.8 3z" fill="#0078D4" />
      <path d="M13 3.5l-3 8.2L5 18.5h4.5L13 3.5z" fill="#0091EA" opacity="0.8" />
    </svg>
  );
}
CopilotIcon function · typescript · L81-L89 (9 LOC)
src/components/MicrosoftIcons.tsx
export function CopilotIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <path d="M12 3l1.5 4.5L18 9l-4.5 1.5L12 15l-1.5-4.5L6 9l4.5-1.5L12 3z" fill="#0078D4" />
      <path d="M18 14l1 3 3 1-3 1-1 3-1-3-3-1 3-1 1-3z" fill="#50E6FF" />
      <path d="M5 15l.7 2.3L8 18l-2.3.7L5 21l-.7-2.3L2 18l2.3-.7L5 15z" fill="#9B59B6" />
    </svg>
  );
}
TeamsIcon function · typescript · L92-L101 (10 LOC)
src/components/MicrosoftIcons.tsx
export function TeamsIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <rect x="3" y="5" width="14" height="14" rx="2" fill="#5B5FC7" />
      <text x="10" y="15" textAnchor="middle" fill="white" fontSize="9" fontWeight="700" fontFamily="Arial">T</text>
      <circle cx="19" cy="7" r="3" fill="#7B83EB" />
      <path d="M16 12h6v5c0 1.1-.9 2-2 2h-2c-1.1 0-2-.9-2-2v-5z" fill="#7B83EB" />
    </svg>
  );
}
PurviewIcon function · typescript · L104-L111 (8 LOC)
src/components/MicrosoftIcons.tsx
export function PurviewIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <path d="M12 2L4 6v6c0 5.1 3.4 9.8 8 11 4.6-1.2 8-5.9 8-11V6l-8-4z" fill="#0078D4" />
      <path d="M10 12l2 2 4-4" stroke="white" strokeWidth="2" strokeLinecap="round" strokeLinejoin="round" />
    </svg>
  );
}
M365Icon function · typescript · L114-L123 (10 LOC)
src/components/MicrosoftIcons.tsx
export function M365Icon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <rect x="3" y="3" width="8" height="8" rx="1.5" fill="#D83B01" />
      <rect x="13" y="3" width="8" height="8" rx="1.5" fill="#33AC2E" />
      <rect x="3" y="13" width="8" height="8" rx="1.5" fill="#0078D4" />
      <rect x="13" y="13" width="8" height="8" rx="1.5" fill="#FFB900" />
    </svg>
  );
}
AIFoundryIcon function · typescript · L126-L137 (12 LOC)
src/components/MicrosoftIcons.tsx
export function AIFoundryIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <circle cx="12" cy="10" r="7" fill="#0078D4" />
      <circle cx="9" cy="9" r="1.2" fill="white" />
      <circle cx="15" cy="9" r="1.2" fill="white" />
      <path d="M9 12.5c0 1.7 1.3 3 3 3s3-1.3 3-3" stroke="white" strokeWidth="1.2" fill="none" />
      <path d="M6 18h12" stroke="#0078D4" strokeWidth="1.5" strokeLinecap="round" />
      <path d="M8 20h8" stroke="#50E6FF" strokeWidth="1.5" strokeLinecap="round" />
    </svg>
  );
}
FabricIQIcon function · typescript · L140-L155 (16 LOC)
src/components/MicrosoftIcons.tsx
export function FabricIQIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <circle cx="12" cy="12" r="9" stroke="#6B3FA0" strokeWidth="1.5" fill="none" />
      <circle cx="12" cy="12" r="3" fill="#6B3FA0" />
      <line x1="12" y1="3" x2="12" y2="9" stroke="#6B3FA0" strokeWidth="1.5" />
      <line x1="12" y1="15" x2="12" y2="21" stroke="#6B3FA0" strokeWidth="1.5" />
      <line x1="3" y1="12" x2="9" y2="12" stroke="#6B3FA0" strokeWidth="1.5" />
      <line x1="15" y1="12" x2="21" y2="12" stroke="#6B3FA0" strokeWidth="1.5" />
      <circle cx="12" cy="3" r="1.5" fill="#9B59B6" />
      <circle cx="12" cy="21" r="1.5" fill="#9B59B6" />
      <circle cx="3" cy="12" r="1.5" fill="#9B59B6" />
      <circle cx="21" cy="12" r="1.5" fill="#9B59B6" />
    </svg>
  );
}
Repobility · code-quality intelligence platform · https://repobility.com
DataFactoryIcon function · typescript · L158-L168 (11 LOC)
src/components/MicrosoftIcons.tsx
export function DataFactoryIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <rect x="2" y="4" width="6" height="4" rx="1" fill="#0078D4" />
      <rect x="2" y="10" width="6" height="4" rx="1" fill="#0078D4" />
      <rect x="2" y="16" width="6" height="4" rx="1" fill="#0078D4" />
      <rect x="16" y="8" width="6" height="8" rx="1" fill="#005A9E" />
      <path d="M8 6h4l4 6-4 6H8" stroke="#50E6FF" strokeWidth="1.2" fill="none" />
    </svg>
  );
}
MLflowIcon function · typescript · L171-L179 (9 LOC)
src/components/MicrosoftIcons.tsx
export function MLflowIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <path d="M4 20L12 4l8 16H4z" stroke="#0194E2" strokeWidth="1.8" fill="none" />
      <circle cx="12" cy="13" r="3" fill="#0194E2" />
      <path d="M12 4v6" stroke="#0194E2" strokeWidth="1.5" />
    </svg>
  );
}
MirroringIcon function · typescript · L182-L193 (12 LOC)
src/components/MicrosoftIcons.tsx
export function MirroringIcon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <path d="M4 8h6v8H4z" fill="#0078D4" rx="1" />
      <path d="M14 8h6v8h-6z" fill="#005A9E" rx="1" />
      <path d="M10 10l4 0" stroke="#50E6FF" strokeWidth="1.5" markerEnd="url(#arrow)" />
      <path d="M14 14l-4 0" stroke="#50E6FF" strokeWidth="1.5" />
      <circle cx="10" cy="10" r="1" fill="#50E6FF" />
      <circle cx="14" cy="14" r="1" fill="#50E6FF" />
    </svg>
  );
}
Agent365Icon function · typescript · L196-L209 (14 LOC)
src/components/MicrosoftIcons.tsx
export function Agent365Icon({ size = 24, style, className }: IconProps) {
  return (
    <svg width={size} height={size} viewBox="0 0 24 24" fill="none" style={style} className={className}>
      <circle cx="12" cy="8" r="4" fill="#0078D4" />
      <circle cx="9" cy="7.5" r="0.8" fill="white" />
      <circle cx="15" cy="7.5" r="0.8" fill="white" />
      <path d="M10 9.5c0 1.1.9 2 2 2s2-.9 2-2" stroke="white" strokeWidth="0.8" fill="none" />
      <path d="M12 12v3" stroke="#0078D4" strokeWidth="1.5" />
      <rect x="5" y="15" width="14" height="6" rx="2" fill="#005A9E" />
      <path d="M8 18h8" stroke="#50E6FF" strokeWidth="1" />
      <path d="M8 20h5" stroke="#50E6FF" strokeWidth="1" />
    </svg>
  );
}
Navbar function · typescript · L20-L301 (282 LOC)
src/components/Navbar.tsx
export function Navbar() {
  const [mobileOpen, setMobileOpen] = useState(false);
  const [dropdown, setDropdown] = useState<string | null>(null);
  const location = useLocation();
  const { theme, toggle } = useThemeContext();

  const isActive = (href: string) =>
    href === '/' ? location.pathname === '/' : location.pathname.startsWith(href);

  const isResourcesActive =
    location.pathname === '/contact' ||
    location.pathname.startsWith('/dt/collateral') ||
    location.pathname.startsWith('/dt/2026') ||
    location.pathname.startsWith('/dt/demos') ||
    location.pathname.startsWith('/docs') ||
    location.pathname.startsWith('/archive') ||
    location.pathname.startsWith('/dt/refresh') ||
    location.pathname.startsWith('/dt/project-imagine') ||
    location.pathname.startsWith('/insights');

  const navLinkStyle = (active: boolean) => ({
    padding: '0 18px',
    height: '64px',
    display: 'flex' as const,
    alignItems: 'center' as const,
    fontSize: '14px',
   
ScrollToTop function · typescript · L4-L12 (9 LOC)
src/components/ScrollToTop.tsx
export function ScrollToTop() {
  const { pathname } = useLocation();

  useEffect(() => {
    window.scrollTo(0, 0);
  }, [pathname]);

  return null;
}
SectionHeader function · typescript · L9-L32 (24 LOC)
src/components/SectionHeader.tsx
export function SectionHeader({ badge, badgeColor = 'blue', title, subtitle, centered = false }: SectionHeaderProps) {
  return (
    <div style={{
      marginBottom: '48px',
      textAlign: centered ? 'center' : 'left',
      maxWidth: centered ? '680px' : undefined,
      margin: centered ? '0 auto 48px' : '0 0 48px',
    }}>
      {badge && (
        <div className={`badge badge-${badgeColor}`} style={{ marginBottom: '16px' }}>
          {badge}
        </div>
      )}
      <h2 style={{ fontSize: '36px', fontWeight: '700', marginBottom: '16px', lineHeight: '1.15' }}>
        {title}
      </h2>
      {subtitle && (
        <p style={{ fontSize: '18px', color: 'var(--ibm-gray-30)', lineHeight: '1.7' }}>
          {subtitle}
        </p>
      )}
    </div>
  );
}
UC1AsIsArchitectureDiagram function · typescript · L42-L213 (172 LOC)
src/components/UC1ArchitectureDiagrams.tsx
export function UC1AsIsArchitectureDiagram() {
  return (
    <div style={diagramContainer}>
      <div style={diagramHeader('#0043ce')}>
        <span style={badge('#0043ce')}>AS-IS</span>
        <span style={{ fontSize: '15px', fontWeight: 700, color: 'var(--ibm-blue-light)' }}>Fragmented Retail Analytics Stack</span>
        <span style={{ fontSize: '12px', color: 'var(--text-muted)', marginLeft: 'auto', fontStyle: 'italic' }}>
          "Transformation lives everywhere. Truth lives nowhere."
        </span>
      </div>

      <svg viewBox="0 0 1100 540" xmlns="http://www.w3.org/2000/svg" style={{ width: '100%', height: 'auto', display: 'block', background: '#0a0f1e' }}>
        <defs>
          <marker id="u1as-arr" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#4589ff"/></marker>
          <marker id="u1as-arr-dn" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#0043ce
Open data scored by Repobility · https://repobility.com
UC1ToBeArchitectureDiagram function · typescript · L219-L446 (228 LOC)
src/components/UC1ArchitectureDiagrams.tsx
export function UC1ToBeArchitectureDiagram() {
  return (
    <div style={diagramContainer}>
      <div style={diagramHeader('#0f62fe')}>
        <span style={badge('#0f62fe')}>TO-BE</span>
        <span style={{ fontSize: '15px', fontWeight: 700, color: 'var(--ibm-blue-light)' }}>Microsoft Fabric Medallion</span>
        <span style={{ fontSize: '12px', color: 'var(--text-muted)', marginLeft: 'auto', fontStyle: 'italic' }}>
          "Same source data. Different execution model."
        </span>
      </div>

      {/* Platform role bar */}
      <div style={{ display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: '0', borderBottom: '1px solid var(--card-border)' }}>
        {[
          { l: 'SOURCE', s: 'AS-IS ADLS (unchanged)', bg: 'rgba(69,137,255,0.06)', c: '#4589ff' },
          { l: 'CONTROL PLANE', s: 'Microsoft Fabric workspace', bg: 'rgba(15,98,254,0.08)', c: '#0f62fe' },
          { l: 'TRANSFORMATION', s: 'Notebooks (Bronze/Silver/Gold)', bg: 'rgba(130,207,255,0.06)'
AsIsArchitectureDiagram function · typescript · L42-L182 (141 LOC)
src/components/UC2ArchitectureDiagrams.tsx
export function AsIsArchitectureDiagram() {
  return (
    <div style={diagramContainer}>
      {/* Header (theme-aware) */}
      <div style={diagramHeader('#0043ce')}>
        <span style={badge('#0043ce')}>AS-IS</span>
        <span style={{ fontSize: '15px', fontWeight: 700, color: 'var(--ibm-blue-light)' }}>Reactive Alert Pattern</span>
        <span style={{ fontSize: '12px', color: 'var(--text-muted)', marginLeft: 'auto', fontStyle: 'italic' }}>
          "The data flows. The intelligence doesn't."
        </span>
      </div>

      {/* SVG: dark canvas, white/blue IBM palette */}
      <svg viewBox="0 0 1100 490" xmlns="http://www.w3.org/2000/svg" style={{ width: '100%', height: 'auto', display: 'block', background: '#0a0f1e' }}>
        <defs>
          <marker id="as-arr" markerWidth="8" markerHeight="6" refX="8" refY="3" orient="auto"><polygon points="0 0, 8 3, 0 6" fill="#4589ff"/></marker>
          <marker id="as-arr-dn" markerWidth="8" markerHeight="6" refX="8" refY="3"
ToBeArchitectureDiagram function · typescript · L188-L453 (266 LOC)
src/components/UC2ArchitectureDiagrams.tsx
export function ToBeArchitectureDiagram() {
  return (
    <div style={diagramContainer}>
      {/* Header (theme-aware) */}
      <div style={diagramHeader('#0f62fe')}>
        <span style={badge('#0f62fe')}>TO-BE</span>
        <span style={{ fontSize: '15px', fontWeight: 700, color: 'var(--ibm-blue-light)' }}>AI-Driven Operational Intelligence</span>
        <span style={{ fontSize: '12px', color: 'var(--text-muted)', marginLeft: 'auto', fontStyle: 'italic' }}>
          "Model is replaceable. Pipeline is the asset."
        </span>
      </div>

      {/* Platform Role Bar */}
      <div style={{ display: 'grid', gridTemplateColumns: 'repeat(4, 1fr)', gap: '0', borderBottom: '1px solid var(--card-border)' }}>
        {[
          { l: 'FOUNDATION', s: 'Event Hub + ADLS Gen2', bg: 'rgba(0,157,154,0.06)', c: '#009d9a' },
          { l: 'PRIMARY ENGINE', s: 'Azure Databricks (Medallion + MLflow)', bg: 'rgba(69,137,255,0.06)', c: '#4589ff' },
          { l: 'CONSUMPTION', s: 'Microsoft
VoiceChat function · typescript · L20-L350 (331 LOC)
src/components/VoiceChat.tsx
export function VoiceChat() {
  const [state, setState] = useState<State>('idle');
  const [aiSpeaking, setAiSpeaking] = useState(false);
  const [transcript, setTranscript] = useState('');
  const [error, setError] = useState('');
  const wsRef = useRef<WebSocket | null>(null);
  const audioContextRef = useRef<AudioContext | null>(null);
  const mediaStreamRef = useRef<MediaStream | null>(null);
  const workletNodeRef = useRef<AudioWorkletNode | ScriptProcessorNode | null>(null);
  const nextPlayTimeRef = useRef(0);
  const aiSpeakingRef = useRef(false);

  const playAudio = useCallback((base64Audio: string) => {
    const ctx = audioContextRef.current;
    if (!ctx) return;

    const binaryStr = atob(base64Audio);
    const bytes = new Uint8Array(binaryStr.length);
    for (let i = 0; i < binaryStr.length; i++) bytes[i] = binaryStr.charCodeAt(i);

    const pcm16 = new Int16Array(bytes.buffer);
    const float32 = new Float32Array(pcm16.length);
    for (let i = 0; i < pcm16.length;
ThemeProvider function · typescript · L12-L15 (4 LOC)
src/contexts/ThemeContext.tsx
export function ThemeProvider({ children }: { children: ReactNode }) {
  const value = useTheme();
  return <ThemeContext.Provider value={value}>{children}</ThemeContext.Provider>;
}
useThemeContext function · typescript · L17-L19 (3 LOC)
src/contexts/ThemeContext.tsx
export function useThemeContext() {
  return useContext(ThemeContext);
}
getBreadcrumbs function · typescript · L80-L95 (16 LOC)
src/data/docsNav.ts
export function getBreadcrumbs(currentHref: string): BreadcrumbItem[] {
  const crumbs: BreadcrumbItem[] = [{ label: 'Home', href: '/' }, { label: 'Docs', href: '/docs' }];
  if (currentHref === '/docs') return [{ label: 'Home', href: '/' }, { label: 'Docs' }];
  if (currentHref === '/docs/chatbot') {
    crumbs.push({ label: 'Chatbot Architecture' });
  } else if (currentHref.startsWith('/docs/uc1/')) {
    crumbs.push({ label: 'UC1', href: '/docs/uc1/overview' });
    const item = docsNavFlat.find(i => i.href === currentHref);
    if (item) crumbs.push({ label: item.label });
  } else if (currentHref.startsWith('/docs/uc2/')) {
    crumbs.push({ label: 'UC2', href: '/docs/uc2/overview' });
    const item = docsNavFlat.find(i => i.href === currentHref);
    if (item) crumbs.push({ label: item.label });
  }
  return crumbs;
}
usePageTitle function · typescript · L3-L9 (7 LOC)
src/hooks/usePageTitle.ts
export function usePageTitle(title: string) {
  useEffect(() => {
    const prev = document.title;
    document.title = title ? `${title} | IBM Microsoft Practice` : 'IBM Microsoft Practice Portal';
    return () => { document.title = prev; };
  }, [title]);
}
Repobility (the analyzer behind this table) · https://repobility.com
useTheme function · typescript · L5-L23 (19 LOC)
src/hooks/useTheme.ts
export function useTheme() {
  const [theme, setTheme] = useState<Theme>(
    () => (localStorage.getItem('theme') as Theme) ?? 'dark'
  );

  useEffect(() => {
    document.documentElement.setAttribute('data-theme', theme);
    localStorage.setItem('theme', theme);
  }, [theme]);

  // Apply on mount immediately
  useEffect(() => {
    document.documentElement.setAttribute('data-theme', theme);
  }, []);

  const toggle = () => setTheme(t => (t === 'dark' ? 'light' : 'dark'));

  return { theme, toggle };
}
AIOffering function · typescript · L17-L127 (111 LOC)
src/pages/ai/AIOffering.tsx
export function AIOffering() {
  return (
    <main style={{ flex: 1 }}>
      {/* Hero */}
      <section style={{
        background: 'linear-gradient(135deg, var(--hero-from) 0%, var(--hero-mid) 40%, var(--hero-to) 100%)',
        borderBottom: '1px solid var(--hero-border)',
        padding: '100px 0 80px',
        position: 'relative',
        overflow: 'hidden',
      }}>
        <div style={{
          position: 'absolute', inset: 0,
          backgroundImage: 'radial-gradient(circle at 1px 1px, var(--dot-color) 1px, transparent 0)',
          backgroundSize: '48px 48px', pointerEvents: 'none',
        }} />
        <div style={{ position: 'absolute', inset: 0, background: 'rgba(0,0,0,0.25)', pointerEvents: 'none' }} />
        <div className="container" style={{ position: 'relative', zIndex: 1 }}>
          <div style={{ display: 'flex', gap: '10px', marginBottom: '24px', flexWrap: 'wrap' }}>
            <span className="badge badge-blue" style={{ fontSize: '13px', padding: '6p
AMMOffering function · typescript · L17-L128 (112 LOC)
src/pages/amm/AMMOffering.tsx
export function AMMOffering() {
  return (
    <main style={{ flex: 1 }}>
      {/* Hero */}
      <section style={{
        background: 'linear-gradient(135deg, var(--hero-from) 0%, var(--hero-mid) 40%, var(--hero-to) 100%)',
        borderBottom: '1px solid var(--hero-border)',
        padding: '100px 0 80px',
        position: 'relative',
        overflow: 'hidden',
      }}>
        <div style={{
          position: 'absolute', inset: 0,
          backgroundImage: 'radial-gradient(circle at 1px 1px, var(--dot-color) 1px, transparent 0)',
          backgroundSize: '48px 48px', pointerEvents: 'none',
        }} />
        {/* Muted overlay */}
        <div style={{ position: 'absolute', inset: 0, background: 'rgba(0,0,0,0.25)', pointerEvents: 'none' }} />
        <div className="container" style={{ position: 'relative', zIndex: 1 }}>
          <div style={{ display: 'flex', gap: '10px', marginBottom: '24px', flexWrap: 'wrap' }}>
            <span className="badge badge-purple" style=
ArchiveHub function · typescript · L66-L178 (113 LOC)
src/pages/archive/ArchiveHub.tsx
export function ArchiveHub() {
  return (
    <main style={{ flex: 1 }}>
      {/* Hero */}
      <section style={{
        borderBottom: '1px solid var(--hero-border)',
        padding: '80px 0 60px',
        position: 'relative',
        overflow: 'hidden',
        background: 'linear-gradient(135deg, var(--hero-from) 0%, var(--hero-mid) 50%, var(--hero-to) 100%)',
      }}>
        <div style={{
          position: 'absolute', inset: 0,
          backgroundImage: 'radial-gradient(circle at 1px 1px, var(--dot-color) 1px, transparent 0)',
          backgroundSize: '48px 48px', pointerEvents: 'none',
        }} />
        <div className="container" style={{ position: 'relative', zIndex: 1 }}>
          <div style={{ display: 'flex', gap: '8px', marginBottom: '20px', flexWrap: 'wrap' }}>
            <span className="badge badge-blue"><ArchiveIcon size={12} style={{ marginRight: '4px' }} /> Archive</span>
            <span className="badge badge-blue">Research history</span>
          </
CollateralLayout function · typescript · L2-L4 (3 LOC)
src/pages/collateral/CollateralLayout.tsx
export function CollateralLayout() {
  return <Outlet />;
}
ContactPage function · typescript · L13-L245 (233 LOC)
src/pages/contact/ContactPage.tsx
export function ContactPage() {
  const [form, setForm] = useState({
    name: '',
    email: '',
    company: '',
    role: '',
    offering: '',
    message: '',
  });
  const [submitted, setSubmitted] = useState(false);

  const handleChange = (e: React.ChangeEvent<HTMLInputElement | HTMLTextAreaElement | HTMLSelectElement>) => {
    setForm({ ...form, [e.target.name]: e.target.value });
  };

  const handleSubmit = (e: React.FormEvent) => {
    e.preventDefault();
    setSubmitted(true);
  };

  return (
    <main style={{ flex: 1 }}>
      {/* Hero */}
      <section style={{
        background: 'linear-gradient(135deg, var(--hero-from) 0%, var(--hero-mid) 50%, var(--hero-to) 100%)',
        borderBottom: '1px solid var(--hero-border)',
        padding: '80px 0 60px',
        position: 'relative',
        overflow: 'hidden',
      }}>
        <div style={{
          position: 'absolute', inset: 0,
          backgroundImage: 'radial-gradient(circle at 1px 1px, var(--dot-color) 1px,
DPDEOffering function · typescript · L19-L145 (127 LOC)
src/pages/dpde/DPDEOffering.tsx
export function DPDEOffering() {
  return (
    <main style={{ flex: 1 }}>
      {/* Hero */}
      <section style={{
        background: 'linear-gradient(135deg, var(--hero-from) 0%, var(--hero-mid) 40%, var(--hero-to) 100%)',
        borderBottom: '1px solid var(--hero-border)',
        padding: '100px 0 80px',
        position: 'relative',
        overflow: 'hidden',
      }}>
        <div style={{
          position: 'absolute', inset: 0,
          backgroundImage: 'radial-gradient(circle at 1px 1px, var(--dot-color) 1px, transparent 0)',
          backgroundSize: '48px 48px', pointerEvents: 'none',
        }} />
        <div style={{ position: 'absolute', inset: 0, background: 'rgba(0,0,0,0.25)', pointerEvents: 'none' }} />
        <div className="container" style={{ position: 'relative', zIndex: 1 }}>
          <div style={{ display: 'flex', gap: '10px', marginBottom: '24px', flexWrap: 'wrap' }}>
            <span className="badge badge-teal" style={{ fontSize: '13px', padding: '
Header function · typescript · L11-L19 (9 LOC)
src/pages/dt/AgentPlaybook.tsx
function Header({ badge, title, desc }: { badge: string; title: string; desc?: string }) {
  return (
    <div style={{ marginBottom: '28px' }}>
      <div className="badge badge-blue" style={{ marginBottom: '14px' }}>{badge}</div>
      <h2 style={{ fontSize: 'clamp(22px, 2.8vw, 30px)', fontWeight: 700, marginBottom: '10px', lineHeight: 1.15 }}>{title}</h2>
      {desc && <p style={{ color: 'var(--text-secondary)', fontSize: '15px', maxWidth: '820px', lineHeight: 1.7 }}>{desc}</p>}
    </div>
  );
}
Source: Repobility analyzer · https://repobility.com
DataTable function · typescript · L21-L43 (23 LOC)
src/pages/dt/AgentPlaybook.tsx
function DataTable({ headers, rows }: { headers: string[]; rows: string[][] }) {
  return (
    <div style={{ background: 'var(--card-bg)', border: '1px solid var(--card-border)', borderRadius: '2px', overflow: 'auto' }}>
      <div style={{
        display: 'grid', gridTemplateColumns: headers.map((_, i) => i === 0 ? '1.3fr' : '1fr').join(' '),
        background: 'var(--bg-elevated)', padding: '12px 18px', fontSize: '11px', fontWeight: 600,
        color: 'var(--text-muted)', textTransform: 'uppercase', letterSpacing: '0.05em', minWidth: `${headers.length * 140}px`,
      }}>
        {headers.map(h => <div key={h}>{h}</div>)}
      </div>
      {rows.map((row, i) => (
        <div key={i} style={{
          display: 'grid', gridTemplateColumns: headers.map((_, j) => j === 0 ? '1.3fr' : '1fr').join(' '),
          padding: '12px 18px', borderTop: '1px solid var(--border-subtle)', fontSize: '13px', minWidth: `${headers.length * 140}px`,
        }}>
          {row.map((cell, j) => (
   
Checklist function · typescript · L45-L59 (15 LOC)
src/pages/dt/AgentPlaybook.tsx
function Checklist({ title, items, color = TEAL }: { title: string; items: string[]; color?: string }) {
  return (
    <div style={{ background: 'var(--card-bg)', border: '1px solid var(--card-border)', borderLeft: `4px solid ${color}`, borderRadius: '2px', padding: '18px 20px' }}>
      <h3 style={{ fontSize: '15px', fontWeight: 700, marginBottom: '14px' }}>{title}</h3>
      <ul style={{ listStyle: 'none', padding: 0, margin: 0, display: 'flex', flexDirection: 'column', gap: '8px' }}>
        {items.map((item, i) => (
          <li key={i} style={{ display: 'flex', gap: '10px', alignItems: 'flex-start' }}>
            <CheckmarkFilled size={16} color={color} style={{ flexShrink: 0, marginTop: '2px' }} />
            <span style={{ fontSize: '13.5px', color: 'var(--text-secondary)', lineHeight: 1.6 }}>{item}</span>
          </li>
        ))}
      </ul>
    </div>
  );
}
AgentPlaybook function · typescript · L61-L295 (235 LOC)
src/pages/dt/AgentPlaybook.tsx
export function AgentPlaybook() {
  return (
    <main style={{ flex: 1 }}>

      {/* HERO */}
      <section style={{
        background: 'linear-gradient(135deg, var(--hero-from) 0%, var(--hero-mid) 50%, var(--hero-to) 100%)',
        borderBottom: '1px solid var(--hero-border)', padding: '80px 0 60px',
      }}>
        <div className="container">
          <div style={{ display: 'flex', gap: '8px', marginBottom: '20px', fontSize: '13px', color: 'var(--text-muted)' }}>
            <Link to="/dt" style={{ color: 'var(--text-muted)', textDecoration: 'none' }}>DT Offering</Link>
            <span>/</span>
            <span style={{ color: B }}>Agent Deployment Playbook</span>
          </div>
          <div style={{ display: 'flex', gap: '8px', marginBottom: '20px', flexWrap: 'wrap' }}>
            <span className="badge badge-blue">Agent Deployment Playbook</span>
            <span className="badge badge-blue">Foundry + Agent 365 + Security</span>
          </div>
          <h1 style
page 1 / 4next ›