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