import { useRouter } from 'next/router' import { ControllerRenderProps, UseFormReturn } from 'react-hook-form' import { useDefaultRegionQuery } from 'data/misc/get-default-region-query' import { PROVIDERS } from 'lib/constants' import { SelectContent_Shadcn_, SelectGroup_Shadcn_, SelectItem_Shadcn_, SelectTrigger_Shadcn_, SelectValue_Shadcn_, Select_Shadcn_, } from 'ui' import { FormItemLayout } from 'ui-patterns/form/FormItemLayout/FormItemLayout' import type { CloudProvider } from 'shared-data' import { getAvailableRegions } from './ProjectCreation.utils' interface RegionSelectorProps { cloudProvider: CloudProvider field: ControllerRenderProps form: UseFormReturn } export const RegionSelector = ({ cloudProvider, field }: RegionSelectorProps) => { const router = useRouter() const showNonProdFields = process.env.NEXT_PUBLIC_ENVIRONMENT === 'local' || process.env.NEXT_PUBLIC_ENVIRONMENT === 'staging' const availableRegions = getAvailableRegions(PROVIDERS[cloudProvider].id) const { isLoading: isLoadingDefaultRegion } = useDefaultRegionQuery({ cloudProvider, }) return (

Select the region closest to your users for the best performance.

{showNonProdFields && (

Note: Only SG is supported for local/staging projects

)} } > {Object.keys(availableRegions).map((option: string, i) => { const label = Object.values(availableRegions)[i].displayName as string return (
region icon {label}
) })}
) }