import type { NextPage } from 'next';
import { useRouter } from 'next/router';
import React, { ReactElement, ReactNode } from 'react';
import { useState } from 'react';
import styles from '../styles/Home.module.css';
function Tabs(props: { children: ReactElement[] }) {
const [activeIndex, setActiveIndex] = useState(0);
if (!props.children) {
return <>>;
}
let tabs = React.Children.map(props.children, (child, index) => {
return (
);
});
return (
{tabs}
{props.children[activeIndex]}
);
}
function DemoMeetingTab({ label }: { label: string }) {
const router = useRouter();
const startMeeting = () => {
router.push(`/rooms/${generateRoomId()}`);
};
return (
Try LiveKit Meet for free with our live demo project.
);
}
function CustomConnectionTab({ label }: { label: string }) {
const [liveKitUrl, setLiveKitUrl] = useState();
const [token, setToken] = useState();
const router = useRouter();
const join = () => {
router.push(`/custom/?liveKitUrl=${liveKitUrl}&token=${token}`);
};
return (
Connect LiveKit Meet with a custom server using LiveKit Cloud or LiveKit Server.
{/*
*/}
setLiveKitUrl(ev.target.value)}>
{/*
*/}
setToken(ev.target.value)}>
);
}
const Home: NextPage = () => {
return (
<>
Open source video conferencing app built on LiveKit Components, LiveKit Cloud,
and Next.js.
>
);
};
export default Home;
function generateRoomId(): string {
return `${randomString(4)}-${randomString(4)}`;
}
function randomString(length: number): string {
let result = '';
const characters = 'abcdefghijklmnopqrstuvwxyz0123456789';
const charactersLength = characters.length;
for (let i = 0; i < length; i++) {
result += characters.charAt(Math.floor(Math.random() * charactersLength));
}
return result;
}