mirror of
https://github.com/supabase/supabase.git
synced 2026-10-13 05:09:12 +03:00
* feat: more generic observability banner on db report * feat: try popup in corner * feat: tidy up and fix up event as well * feat: add event for dismiss as well * feat: add supplementary link at bottom of reports * fix: sizing of fonts * feat: banner stack approach * fix: isIndexAdvisorAvailable dep * chore: remove unused import for old banner * feat: remove unused isDismissed * chore: remove unused cn * chore: change prio on query perf page * chore: remove unused sendEvent * chore: better useEffect cleanup * chore: remove unused index advisor notice * fix: priority of banner stack * fix: first time loader flickering * chore: lowercase the word Free * feat: add IS_PLATFORM to make sure metrics api banner is scoped to platform * chore: another copy update for observability link * fix: telemetry keys to match styleguide * fix: use the correct way to apply events * feat: add events for index advisor banner too * chore: delete unused old banner * fix: dismiss buttons not working * feat: add extra event to enable index advisor
64 lines
2.3 KiB
TypeScript
64 lines
2.3 KiB
TypeScript
import { useParams } from 'common/hooks'
|
|
import { BannerCard } from '../BannerCard'
|
|
import { useTrack } from 'lib/telemetry/track'
|
|
import { useLocalStorageQuery } from 'hooks/misc/useLocalStorage'
|
|
import { LOCAL_STORAGE_KEYS } from 'common'
|
|
import { Badge } from 'ui'
|
|
import { LOG_DRAIN_TYPES } from 'components/interfaces/LogDrains/LogDrains.constants'
|
|
import React from 'react'
|
|
import { Button } from 'ui'
|
|
import Link from 'next/link'
|
|
import { DOCS_URL } from 'lib/constants'
|
|
import { useBannerStack } from '../BannerStackProvider'
|
|
|
|
export const BannerMetricsAPI = () => {
|
|
const { ref } = useParams()
|
|
const track = useTrack()
|
|
const { dismissBanner } = useBannerStack()
|
|
const [, setIsDismissed] = useLocalStorageQuery(
|
|
LOCAL_STORAGE_KEYS.OBSERVABILITY_BANNER_DISMISSED(ref ?? ''),
|
|
false
|
|
)
|
|
return (
|
|
<BannerCard
|
|
onDismiss={() => {
|
|
setIsDismissed(true)
|
|
dismissBanner('metrics-api-banner')
|
|
track('observability_banner_dismiss_button_clicked')
|
|
}}
|
|
>
|
|
<div className="flex flex-col gap-y-4">
|
|
<div className="flex flex-col gap-y-2 items-start">
|
|
<Badge variant="success" className="-ml-0.5 uppercase inline-flex items-center mb-2">
|
|
Beta
|
|
</Badge>
|
|
<div className="flex items-center gap-4">
|
|
{LOG_DRAIN_TYPES.filter((type) => type.value !== 'sentry').map((type) => (
|
|
<React.Fragment key={type.value}>
|
|
{React.cloneElement(type.icon, { height: 20, width: 20 })}
|
|
</React.Fragment>
|
|
))}
|
|
</div>
|
|
</div>
|
|
<div className="flex flex-col gap-y-1 mb-2">
|
|
<p className="text-sm font-medium">Export Metrics to your dashboards</p>
|
|
<p className="text-xs text-foreground-lighter text-balance">
|
|
Visualize over 200 database performance and health metrics with our Metrics API.
|
|
</p>
|
|
</div>
|
|
<div className="flex gap-2">
|
|
<Button type="default" size="tiny" asChild>
|
|
<Link
|
|
href={`${DOCS_URL}/guides/telemetry/metrics`}
|
|
target="_blank"
|
|
onClick={() => track('observability_banner_cta_button_clicked')}
|
|
>
|
|
Get started for free
|
|
</Link>
|
|
</Button>
|
|
</div>
|
|
</div>
|
|
</BannerCard>
|
|
)
|
|
}
|