'use client' import { useEffect, useReducer, useRef } from 'react' import { PhoneLoginsItems } from '../Navigation/NavigationMenu/NavigationMenu.constants' import { IconPanel } from 'ui-patterns/IconPanel' import { Dialog, DialogContent, DialogHeader, DialogSection, Heading } from 'ui' import MessageBird from './MessageBirdConfig.mdx' import Twilio from './TwilioConfig.mdx' import Vonage from './VonageConfig.mdx' import TextLocal from './TextLocalConfig.mdx' import { safeHistoryReplaceState } from '~/lib/historyUtils' const reducer = (_, action: (typeof PhoneLoginsItems)[number] | undefined) => { const url = new URL(document.location.href) if (action) { url.searchParams.set('showSmsProvider', encodeURIComponent(action.name)) } else { url.searchParams.delete('showSmsProvider') } safeHistoryReplaceState(url.toString()) return action } const AuthSmsProviderConfig = () => { const [selectedProvider, setSelectedProvider] = useReducer(reducer, undefined) useEffect(() => { const providerName = new URLSearchParams(document.location.search ?? '').get('showSmsProvider') if (!providerName) return const provider = PhoneLoginsItems.find((item) => item.name === decodeURIComponent(providerName)) if (provider) setSelectedProvider(provider) }, []) const headingRef = useRef(null) return ( <>

Configuring SMS Providers

{PhoneLoginsItems.map((provider) => ( ))}
!open && setSelectedProvider(undefined)} > {selectedProvider && ( { evt.preventDefault() headingRef.current?.focus() }} > {selectedProvider.name} {selectedProvider.name.toLowerCase().includes('messagebird') && } {selectedProvider.name.toLowerCase().includes('twilio') && } {selectedProvider.name.toLowerCase().includes('vonage') && } {selectedProvider.name.toLowerCase().includes('textlocal') && } )} ) } export default AuthSmsProviderConfig