Files
supabase/apps/docs/components/MetricsStackCards.tsx
Ishleen Kaur 3c903b7dfa Add Elastic Tile to Supabase Metrics API page (#48564)
## I have read the
[CONTRIBUTING.md](https://github.com/supabase/supabase/blob/master/CONTRIBUTING.md)
file.

YES

## What kind of change does this PR introduce?

Feature

## What is the current behavior?

Elastic is not added as a tile in metrics API page. 

## What is the new behavior?

Now Elastic is supporting Supabase metrcis ingestion, hence it should be
listed in the Metrics page.

![Uploading Screenshot 2026-08-03 at 4.31.46 PM.png…]()

<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

- **New Features**
- Added Elastic as a supported metrics integration in the documentation.
- Added an Elastic integration card with community labeling and a link
to Elastic’s documentation.
- Added Elastic to the monitoring metrics navigation and Metrics API
guide resources.
- Added Elastic branding and iconography to the metrics integration
listings for easier recognition.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->

---------

Co-authored-by: Miranda Limonczenko <miranda.limonczenko@supabase.io>
2026-08-03 18:34:10 +00:00

51 lines
2.1 KiB
TypeScript

import { Datadog, Elastic, Grafana } from 'icons'
import { Flame } from 'lucide-react'
import Link from 'next/link'
import type { ReactNode } from 'react'
import { metricsStackOptions, type MetricsStackOption } from './MetricsStackCards.data'
const ICONS: Record<MetricsStackOption['iconKind'], ReactNode> = {
grafana: <Grafana className="h-5 w-5" />,
datadog: <Datadog className="h-5 w-5" />,
elastic: <Elastic className="h-5 w-5" />,
flame: <Flame className="h-5 w-5" strokeWidth={1.5} />,
}
export function MetricsStackCards() {
return (
<div className="grid gap-4 not-prose md:grid-cols-2">
{metricsStackOptions.map((option) => (
<Link key={option.href} href={option.href} className="col-span-1 block h-full">
<div className="relative flex h-full flex-col gap-4 rounded-2xl border border-foreground/10 bg-surface-75/50 p-5 text-left transition duration-200 hover:border-foreground/30 hover:bg-surface-100">
<div className="flex items-center gap-3">
<span
className="flex h-10 w-10 items-center justify-center rounded-full text-base font-semibold"
style={{ color: option.iconColor, backgroundColor: option.iconBg }}
>
{ICONS[option.iconKind]}
</span>
<p className="text-base font-medium text-foreground">{option.title}</p>
</div>
<div className="text-sm text-foreground-light">{option.description}</div>
<div className="mt-auto flex flex-wrap gap-2">
{option.badges.map((badge) => (
<span
key={`${option.href}-${badge.label}`}
className={`inline-flex items-center rounded-full border px-2.5 py-0.5 text-xs font-medium ${
badge.variant === 'community'
? 'border-warning/40 text-warning'
: 'border-brand-500/50 text-brand'
}`}
>
{badge.label}
</span>
))}
</div>
</div>
</Link>
))}
</div>
)
}