BannerIndexAdvisor.tsx 1.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. import { LOCAL_STORAGE_KEYS } from 'common'
  2. import { useParams } from 'common/hooks'
  3. import { Lightbulb } from 'lucide-react'
  4. import { BannerCard } from '../BannerCard'
  5. import { useBannerStack } from '../BannerStackProvider'
  6. import { EnableIndexAdvisorButton } from '@/components/interfaces/QueryPerformance/IndexAdvisor/EnableIndexAdvisorButton'
  7. import { useLocalStorageQuery } from '@/hooks/misc/useLocalStorage'
  8. import { useTrack } from '@/lib/telemetry/track'
  9. export const BannerIndexAdvisor = () => {
  10. const track = useTrack()
  11. const { ref } = useParams()
  12. const { dismissBanner } = useBannerStack()
  13. const [, setIsDismissed] = useLocalStorageQuery(
  14. LOCAL_STORAGE_KEYS.INDEX_ADVISOR_NOTICE_DISMISSED(ref ?? ''),
  15. false
  16. )
  17. return (
  18. <BannerCard
  19. onDismiss={() => {
  20. setIsDismissed(true)
  21. dismissBanner('index-advisor-banner')
  22. track('index_advisor_banner_dismiss_button_clicked')
  23. }}
  24. >
  25. <div className="flex flex-col gap-y-4">
  26. <div className="flex flex-col gap-y-2 items-start">
  27. <div className="p-2 rounded-lg bg-warning-300 text-warning">
  28. <Lightbulb size={16} />
  29. </div>
  30. </div>
  31. <div className="flex flex-col gap-y-1 mb-2">
  32. <p className="text-sm font-medium">Enable Index Advisor</p>
  33. <p className="text-xs text-foreground-lighter text-balance">
  34. Recommends indexes to improve query performance.
  35. </p>
  36. </div>
  37. <div className="flex gap-2">
  38. <EnableIndexAdvisorButton />
  39. </div>
  40. </div>
  41. </BannerCard>
  42. )
  43. }