├── media ├── ar-1.png ├── ar-2.png ├── as-1.png ├── as-2.png ├── cms.png ├── join.png ├── stage.png ├── preview.png └── dashboard.png ├── public ├── bg.png ├── deploy.png ├── image1.png ├── image2.png ├── favicon.ico ├── favicon-16x16.png ├── favicon-32x32.png ├── icon-192x192.png ├── icon-512x512.png ├── twitter-card.png ├── apple-touch-icon.png ├── site.webmanifest └── chat.svg ├── lib ├── cms-providers │ └── prismic │ │ ├── documents │ │ ├── index.json │ │ └── en-us │ │ │ ├── X9j8vRIAACgA5wJP=#=X9j87hIAACgA5wM-=#=talk=#=X9j8vRIAACgA5wJR=#=en-us=#=y.json │ │ │ ├── X9joshIAACgA5qVC=#=X9jpexIAACkA5qjg=#=talk=#=X9joshIAACgA5qVE=#=en-us=#=y.json │ │ │ ├── X9kHdBIAACcA5zOI=#=X9kHsxIAACgA5zSg=#=talk=#=X9kHdBIAACcA5zOK=#=en-us=#=y.json │ │ │ ├── X9jsWRIAACgA5rYy=#=X9jslBIAACcA5rdM=#=talk=#=X9jsWRIAACgA5rY0=#=en-us=#=y.json │ │ │ ├── X9kFeRIAACgA5yqX=#=X9kFuhIAACYA5yu6=#=talk=#=X9kFeRIAACgA5yqZ=#=en-us=#=y.json │ │ │ ├── X9kHDBIAACcA5zGs=#=X9kHTBIAACgA5zLP=#=talk=#=X9kHDBIAACcA5zGu=#=en-us=#=y.json │ │ │ ├── X9j3OhIAACgA5ujr=#=X9j3hxIAACcA5upQ=#=talk=#=X9j3OhIAACgA5ujt=#=en-us=#=y.json │ │ │ ├── X9jmGxIAACkA5plN=#=X9jmexIAACcA5psF=#=talk=#=X9jmGxIAACkA5plP=#=en-us=#=y.json │ │ │ ├── X9jpoRIAACcA5qmT=#=X9jqohIAACYA5q5F=#=talk=#=X9jpoRIAACcA5qmV=#=en-us=#=y.json │ │ │ ├── X9kEwBIAACcA5ydY=#=X9kE8BIAACgA5ygr=#=talk=#=X9kEwBIAACcA5yda=#=en-us=#=y.json │ │ │ ├── X9kFDxIAACkA5yi4=#=X9kFPhIAACYA5ymR=#=talk=#=X9kFDxIAACkA5yi6=#=en-us=#=y.json │ │ │ ├── X9j7yxIAACgA5v3j=#=X9j8BRIAACcA5v7z=#=talk=#=X9j7yxIAACgA5v3l=#=en-us=#=y.json │ │ │ ├── X9jrThIAACkA5rFj=#=X9jsEBIAACkA5rTl=#=talk=#=X9jrThIAACkA5rFl=#=en-us=#=y.json │ │ │ ├── X9j2tRIAACgA5uZq=#=X9j3BhIAACgA5uf2=#=talk=#=X9j2tRIAACgA5uZs=#=en-us=#=y.json │ │ │ ├── X9j8WRIAACgA5wB6=#=X9j8kBIAACkA5wFv=#=talk=#=X9j8WRIAACgA5wB8=#=en-us=#=y.json │ │ │ ├── X9jiORIAACgA5odb=#=X9jjBBIAACkA5or2=#=talk=#=X9jiORIAACgA5odd=#=en-us=#=y.json │ │ │ ├── X9jmoBIAACcA5pu4=#=X9jnNhIAACYA5p5s=#=talk=#=X9jmoBIAACcA5pu6=#=en-us=#=y.json │ │ │ ├── X9kGsxIAACgA5zAR=#=X9kG6BIAACcA5zEM=#=talk=#=X9kGsxIAACgA5zAT=#=en-us=#=y.json │ │ │ ├── X9kX-BIAACcA53pG=#=X9uAxRIAACgA8nXO=#=stage=#=X9kX-BIAACcA53pI=#=en-us=#=y.json │ │ │ ├── X9kb_xIAACgA54w7=#=X9kb_xIAACgA54w8=#=stage=#=X9kb_xIAACgA54w9=#=en-us=#=y.json │ │ │ ├── X9j3yhIAACgA5uuF=#=X9j4KhIAACgA5u1K=#=talk=#=X9j3yhIAACgA5uuH=#=en-us=#=y.json │ │ │ ├── X9jw3hIAACkA5stx=#=X9jxQRIAACcA5s05=#=talk=#=X9jw3hIAACkA5stz=#=en-us=#=y.json │ │ │ ├── X9jVQxIAACgA5kpB=#=X9jbExIAACcA5mYK=#=talk=#=X9jVQxIAACgA5kpD=#=en-us=#=y.json │ │ │ ├── X9kEExIAACcA5yQ_=#=X9kEjxIAACcA5yZ4=#=talk=#=X9kEExIAACcA5yRB=#=en-us=#=y.json │ │ │ ├── X9jWmRIAACYA5lBt=#=X9jbHhIAACcA5mY9=#=talk=#=X9jWmRIAACYA5lBv=#=en-us=#=y.json │ │ │ ├── X9jddRIAACcA5nEu=#=X9jgYhIAACgA5n7J=#=talk=#=X9jddRIAACcA5nEw=#=en-us=#=y.json │ │ │ ├── X9itWRIAACcA5Zcc=#=X9uGPBIAACcA8o9o=#=job=#=X9itWRIAACcA5Zce=#=en-us=#=y.json │ │ │ ├── X9iutxIAACcA5Z1h=#=X9kk5xIAACcA57R7=#=job=#=X9iutxIAACcA5Z1j=#=en-us=#=y.json │ │ │ ├── X9iuNRIAACgA5ZsV=#=X9kkzBIAACkA57P-=#=job=#=X9iuNRIAACgA5ZsX=#=en-us=#=y.json │ │ │ ├── X9kZrBIAACcA54Hl=#=X9kZrBIAACcA54Hm=#=stage=#=X9kZrBIAACcA54Hn=#=en-us=#=y.json │ │ │ ├── X9kc1RIAACgA54_x=#=X9kc1RIAACgA54_y=#=stage=#=X9kc1RIAACgA54_z=#=en-us=#=y.json │ │ │ ├── X9ivKxIAACgA5Z9t=#=X9kk-hIAACYA57TQ=#=job=#=X9ivKxIAACgA5Z9v=#=en-us=#=y.json │ │ │ ├── X9it0BIAACYA5Zk9=#=X9kkvxIAACkA57PC=#=job=#=X9it0BIAACYA5Zk_=#=en-us=#=y.json │ │ │ ├── X9iulxIAACYA5ZzK=#=X9kk3xIAACcA57RS=#=job=#=X9iulxIAACYA5ZzM=#=en-us=#=y.json │ │ │ ├── X9ivYxIAACgA5aBx=#=X9klAhIAACYA57T6=#=job=#=X9ivYxIAACgA5aBz=#=en-us=#=y.json │ │ │ ├── X9itmRIAACkA5ZhF=#=X9kktxIAACkA57Oa=#=job=#=X9itmRIAACkA5ZhH=#=en-us=#=y.json │ │ │ ├── X9iu_BIAACcA5Z6e=#=X9kk8RIAACkA57Sm=#=job=#=X9iu_BIAACcA5Z6g=#=en-us=#=y.json │ │ │ ├── X9iuXxIAACYA5ZvT=#=X9kk1RIAACcA57Qo=#=job=#=X9iuXxIAACYA5ZvV=#=en-us=#=y.json │ │ │ ├── X9i3AxIAACcA5cRx=#=X9kKlRIAACgA50FH=#=speaker=#=X9i3AxIAACcA5cRz=#=en-us=#=y.json │ │ │ ├── X9jK8xIAACkA5hoI=#=X9jrWBIAACkA5rGS=#=speaker=#=X9jK8xIAACkA5hoK=#=en-us=#=y.json │ │ │ ├── X9jKoxIAACcA5hiZ=#=X9kJyhIAACgA5z3f=#=speaker=#=X9jKoxIAACcA5hib=#=en-us=#=y.json │ │ │ ├── X9jRbBIAACgA5jhp=#=X9j32xIAACYA5uvc=#=speaker=#=X9jRbBIAACgA5jhr=#=en-us=#=y.json │ │ │ ├── X9i0lBIAACYA5blV=#=X9kEIhIAACcA5ySF=#=speaker=#=X9i0lBIAACYA5blX=#=en-us=#=y.json │ │ │ ├── X9ivfhIAACYA5aDq=#=X9jiThIAACcA5oe-=#=speaker=#=X9ivfhIAACYA5aDs=#=en-us=#=y.json │ │ │ ├── X9jJhRIAACcA5hNe=#=X9j8zhIAACkA5wKa=#=speaker=#=X9jJhRIAACcA5hNg=#=en-us=#=y.json │ │ │ ├── X9jM4BIAACkA5iLV=#=X9kFhhIAACgA5yrO=#=speaker=#=X9jM4BIAACkA5iLX=#=en-us=#=y.json │ │ │ ├── X9i-rhIAACgA5eQ0=#=X9j3-hIAACkA5uxv=#=speaker=#=X9i-rhIAACgA5eQ2=#=en-us=#=y.json │ │ │ ├── X9i28BIAACcA5cQW=#=X9jhABIAACkA5oGg=#=speaker=#=X9i28BIAACcA5cQY=#=en-us=#=y.json │ │ │ ├── X9i5nxIAACcA5dBn=#=X9jsZRIAACkA5rZv=#=speaker=#=X9i5nxIAACcA5dBp=#=en-us=#=y.json │ │ │ ├── X9izVBIAACcA5bOL=#=X9jg8RIAACYA5oFZ=#=speaker=#=X9izVBIAACcA5bON=#=en-us=#=y.json │ │ │ ├── X9jQlhIAACYA5jQu=#=X9kHjRIAACgA5zP1=#=speaker=#=X9jQlhIAACYA5jQw=#=en-us=#=y.json │ │ │ ├── X9jSfBIAACgA5j1U=#=X9jVTRIAACgA5kpx=#=speaker=#=X9jSfBIAACgA5j1W=#=en-us=#=y.json │ │ │ ├── X9jOMxIAACgA5ij1=#=X9kGvRIAACkA5zBE=#=speaker=#=X9jOMxIAACgA5ij3=#=en-us=#=y.json │ │ │ ├── X9jPLhIAACgA5i14=#=X9kHFRIAACkA5zHX=#=speaker=#=X9jPLhIAACgA5i16=#=en-us=#=y.json │ │ │ ├── X9jUfxIAACcA5ka7=#=X9jWpBIAACkA5lCt=#=speaker=#=X9jUfxIAACcA5ka9=#=en-us=#=y.json │ │ │ ├── X9i0JBIAACgA5bdM=#=X9kEZxIAACYA5yXE=#=speaker=#=X9i0JBIAACgA5bdO=#=en-us=#=y.json │ │ │ ├── X9jBeBIAACgA5e99=#=X9jg2xIAACcA5oDx=#=speaker=#=X9jBeBIAACgA5e9_=#=en-us=#=y.json │ │ │ ├── X9jMURIAACYA5iBY=#=X9kFFxIAACkA5yjg=#=speaker=#=X9jMURIAACYA5iBa=#=en-us=#=y.json │ │ │ ├── X9jT0hIAACgA5kON=#=X9jpqhIAACkA5qnA=#=speaker=#=X9jT0hIAACgA5kOP=#=en-us=#=y.json │ │ │ ├── X9i4gBIAACYA5ctf=#=X9kEQxIAACkA5yUe=#=speaker=#=X9i4gBIAACYA5cth=#=en-us=#=y.json │ │ │ ├── X9i8PxIAACkA5dov=#=X9j2zxIAACYA5ubk=#=speaker=#=X9i8PxIAACkA5dox=#=en-us=#=y.json │ │ │ ├── X9jSWRIAACgA5jyo=#=X9j8ZRIAACcA5wCx=#=speaker=#=X9jSWRIAACgA5jyq=#=en-us=#=y.json │ │ │ ├── X9i-DBIAACgA5eEx=#=X9jpRBIAACkA5qfq=#=speaker=#=X9i-DBIAACgA5eEz=#=en-us=#=y.json │ │ │ ├── X9i-mRIAACcA5ePU=#=X9uHQxIAACgA8pQy=#=speaker=#=X9i-mRIAACcA5ePW=#=en-us=#=y.json │ │ │ ├── X9i51hIAACcA5dFu=#=X9j71RIAACgA5v4S=#=speaker=#=X9i51hIAACcA5dFw=#=en-us=#=y.json │ │ │ ├── X9jLzxIAACYA5h39=#=X9kJlhIAACgA5zzu=#=speaker=#=X9jLzxIAACYA5h3_=#=en-us=#=y.json │ │ │ ├── X9jMFBIAACYA5h85=#=X9jxEBIAACgA5sxR=#=speaker=#=X9jMFBIAACYA5h87=#=en-us=#=y.json │ │ │ ├── X9jMkBIAACcA5iF1=#=X9j3WBIAACkA5ul6=#=speaker=#=X9jMkBIAACcA5iF3=#=en-us=#=y.json │ │ │ ├── X9jQ0hIAACYA5jVk=#=X9jw6BIAACkA5suh=#=speaker=#=X9jQ0hIAACYA5jVm=#=en-us=#=y.json │ │ │ └── X9i9XhIAACgA5d4P=#=X9jmKRIAACgA5pmP=#=speaker=#=X9i9XhIAACgA5d4R=#=en-us=#=y.json │ │ ├── custom_types │ │ ├── index.json │ │ ├── stage.json │ │ ├── job.json │ │ └── talk.json │ │ └── utils.ts ├── db-providers │ └── supabase │ │ └── schema.sql ├── hooks │ ├── use-click-outside.ts │ ├── use-login-status.ts │ └── use-conf-data.ts ├── form-error.ts ├── is-mobile-or-tablet.ts ├── to-pixels.ts ├── redis.ts ├── captcha.ts ├── smooth-scroll.ts ├── screenshot.ts └── user-api.ts ├── postcss.config.js ├── .prettierrc.json ├── components ├── hms │ ├── Conference.tsx │ ├── lib │ │ ├── getToken.ts │ │ ├── useVideo.ts │ │ └── getAvatarBg.ts │ ├── preview │ │ └── IconButton.tsx │ ├── ControlButton.tsx │ ├── config.ts │ ├── select │ │ ├── index.tsx │ │ └── index.module.css │ ├── Avatar.tsx │ ├── DemoModal.tsx │ ├── Button.tsx │ ├── LinkButton.tsx │ ├── request │ │ └── index.module.css │ ├── Room.tsx │ ├── Live.tsx │ ├── demo-cta │ │ └── index.module.css │ ├── LeaveDialog.tsx │ └── Loading.tsx ├── icons │ ├── icon-menu.tsx │ ├── icon-users.tsx │ ├── icon-menu-hor.tsx │ ├── icon-fit-screen.tsx │ ├── icon-leave.tsx │ ├── icon-invite.tsx │ ├── icon-remove-user.tsx │ ├── icon-info.tsx │ ├── icon-bring-stage.tsx │ ├── icon-check.tsx │ ├── icon-copy.tsx │ ├── icon-logo.tsx │ ├── icon-transition.module.css │ ├── icon-linkedin.tsx │ └── icon-download.tsx ├── conf-container.module.css ├── conf-container.tsx ├── contact.module.css ├── ticket-number.tsx ├── logo.module.css ├── header.tsx ├── learn-more.tsx ├── ticket-image.module.css ├── header.module.css ├── resize-handler.tsx ├── logo.tsx ├── select.tsx ├── view-source.module.css ├── loading-dots.tsx ├── nprogress.tsx ├── view-source.tsx ├── loading-dots.module.css ├── captcha.tsx ├── schedule-sidebar-individual.tsx └── ticket-mono.tsx ├── next-env.d.ts ├── styles ├── chrome-bug.css └── nprogress.css ├── datocms.json ├── .gitignore ├── pages ├── ticket-image.tsx ├── _document.tsx ├── api │ ├── auth.ts │ ├── stages.ts │ └── save-github-token.ts ├── _app.tsx ├── index.tsx ├── jobs.tsx ├── expo.tsx ├── schedule.tsx └── speakers.tsx ├── tsconfig.json ├── next.config.js ├── LICENSE └── tailwind.config.js /media/ar-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/media/ar-1.png -------------------------------------------------------------------------------- /media/ar-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/media/ar-2.png -------------------------------------------------------------------------------- /media/as-1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/media/as-1.png -------------------------------------------------------------------------------- /media/as-2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/media/as-2.png -------------------------------------------------------------------------------- /media/cms.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/media/cms.png -------------------------------------------------------------------------------- /media/join.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/media/join.png -------------------------------------------------------------------------------- /media/stage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/media/stage.png -------------------------------------------------------------------------------- /public/bg.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/bg.png -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/index.json: -------------------------------------------------------------------------------- 1 | {"signature":"b5eec47a9c9c113c825272bd3d0b0ec2fc6b4171"} -------------------------------------------------------------------------------- /media/preview.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/media/preview.png -------------------------------------------------------------------------------- /public/deploy.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/deploy.png -------------------------------------------------------------------------------- /public/image1.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/image1.png -------------------------------------------------------------------------------- /public/image2.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/image2.png -------------------------------------------------------------------------------- /media/dashboard.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/media/dashboard.png -------------------------------------------------------------------------------- /public/favicon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/favicon.ico -------------------------------------------------------------------------------- /public/favicon-16x16.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/favicon-16x16.png -------------------------------------------------------------------------------- /public/favicon-32x32.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/favicon-32x32.png -------------------------------------------------------------------------------- /public/icon-192x192.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/icon-192x192.png -------------------------------------------------------------------------------- /public/icon-512x512.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/icon-512x512.png -------------------------------------------------------------------------------- /public/twitter-card.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/twitter-card.png -------------------------------------------------------------------------------- /postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /public/apple-touch-icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/vercel/virtual-event-starter-kit/HEAD/public/apple-touch-icon.png -------------------------------------------------------------------------------- /.prettierrc.json: -------------------------------------------------------------------------------- 1 | { 2 | "singleQuote": true, 3 | "printWidth": 100, 4 | "trailingComma": "none", 5 | "arrowParens": "avoid", 6 | "endOfLine": "auto" 7 | } 8 | -------------------------------------------------------------------------------- /components/hms/Conference.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import VideoList from './VideoList'; 3 | 4 | const List = () => { 5 | return ; 6 | }; 7 | 8 | export default List; 9 | -------------------------------------------------------------------------------- /next-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | /// 3 | 4 | // NOTE: This file should not be edited 5 | // see https://nextjs.org/docs/basic-features/typescript for more information. 6 | -------------------------------------------------------------------------------- /styles/chrome-bug.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Chrome has a bug with transitions on load since 2012! 3 | * 4 | * To prevent a "pop" of content, you have to disable all transitions until 5 | * the page is done loading. 6 | * 7 | * https://lab.laukstein.com/bug/input 8 | * https://twitter.com/timer150/status/1345217126680899584 9 | */ 10 | body.loading * { 11 | transition: none !important; 12 | } 13 | -------------------------------------------------------------------------------- /components/hms/lib/getToken.ts: -------------------------------------------------------------------------------- 1 | const endPoint = process.env.NEXT_PUBLIC_HMS_TOKEN_ENDPOINT; 2 | 3 | export const getToken = async (role: string, room_id: string): Promise => { 4 | const response = await fetch(`${endPoint}api/token`, { 5 | method: 'POST', 6 | body: JSON.stringify({ 7 | role: role, // backstage, stage, viewer 8 | room_id 9 | }) 10 | }); 11 | 12 | const { token } = await response.json(); 13 | 14 | return token; 15 | }; 16 | -------------------------------------------------------------------------------- /datocms.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Virtual Event Starter Kit", 3 | "description": "Fully customizable starter kit for your virtual event.", 4 | "previewImage": "https://demo.vercel.events/twitter-card.png", 5 | "datocmsProjectId": "37685", 6 | "deploymentType": "vercel", 7 | "vercelIntegrationIds": ["oac_7yeSwUoVR5no3SlA9WM6oR7l"], 8 | "buildCommand": "npm run build", 9 | "datocmsApiTokenEnvName": "DATOCMS_READ_ONLY_API_TOKEN", 10 | "livePreviewUrl": "https://demo.vercel.events/" 11 | } 12 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See https://help.github.com/articles/ignoring-files/ for more about ignoring files. 2 | 3 | # dependencies 4 | /node_modules 5 | /.pnp 6 | .pnp.js 7 | 8 | # testing 9 | /coverage 10 | 11 | # next.js 12 | /.next/ 13 | /out/ 14 | 15 | # production 16 | /build 17 | 18 | # misc 19 | .DS_Store 20 | *.pem 21 | 22 | # debug 23 | npm-debug.log* 24 | yarn-debug.log* 25 | yarn-error.log* 26 | 27 | # local env files 28 | .env.local 29 | .env.development.local 30 | .env.test.local 31 | .env.production.local 32 | 33 | # vercel 34 | .vercel 35 | .env*.local 36 | -------------------------------------------------------------------------------- /components/hms/preview/IconButton.tsx: -------------------------------------------------------------------------------- 1 | import React, { PropsWithChildren } from "react"; 2 | 3 | const IconButton: React.FC<{ active?: boolean; onClick?: () => void } & PropsWithChildren> = ({ 4 | active = false, 5 | onClick, 6 | children 7 | }) => { 8 | return ( 9 | 18 | ); 19 | }; 20 | 21 | export default IconButton; 22 | -------------------------------------------------------------------------------- /lib/cms-providers/prismic/custom_types/index.json: -------------------------------------------------------------------------------- 1 | [{ 2 | "id": "speaker", 3 | "name": "Speaker", 4 | "repeatable": true, 5 | "value": "speaker.json" 6 | }, { 7 | "id": "company", 8 | "name": "Company", 9 | "repeatable": true, 10 | "value": "company.json" 11 | }, { 12 | "id": "stage", 13 | "name": "Stage", 14 | "repeatable": true, 15 | "value": "stage.json" 16 | }, { 17 | "id": "talk", 18 | "name": "Talk", 19 | "repeatable": true, 20 | "value": "talk.json" 21 | }, { 22 | "id": "job", 23 | "name": "Job", 24 | "repeatable": true, 25 | "value": "job.json" 26 | }] -------------------------------------------------------------------------------- /lib/db-providers/supabase/schema.sql: -------------------------------------------------------------------------------- 1 | create table users ( 2 | id text primary key, 3 | email text unique, 4 | "ticketNumber" bigserial, 5 | name text, 6 | username text unique, 7 | "createdAt" timestamp with time zone default timezone('utc'::text, now()) not null 8 | ); 9 | alter table users enable row level security; 10 | 11 | create table github_users ( 12 | id uuid primary key default uuid_generate_v4(), 13 | "createdAt" timestamp with time zone default timezone('utc'::text, now()) not null, 14 | "userData" jsonb 15 | ); 16 | alter table github_users enable row level security; -------------------------------------------------------------------------------- /public/site.webmanifest: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Virtual Event Starter Kit", 3 | "short_name": "Virtual Event Starter Kit", 4 | "description": "Virtual Event Starter Kit -> https://demo.vercel.events", 5 | "display": "standalone", 6 | "start_url": "/", 7 | "theme_color": "#fff", 8 | "background_color": "#000000", 9 | "orientation": "portrait", 10 | "icons": [ 11 | { 12 | "src": "/icon-192x192.png", 13 | "type": "image/png", 14 | "sizes": "192x192" 15 | }, 16 | { 17 | "src": "/icon-512x512.png", 18 | "type": "image/png", 19 | "sizes": "512x512" 20 | } 21 | ] 22 | } 23 | -------------------------------------------------------------------------------- /components/hms/ControlButton.tsx: -------------------------------------------------------------------------------- 1 | export default function ControlButton(props: any) { 2 | return ( 3 |
4 | 13 | {props.text} 14 |
15 | ); 16 | } -------------------------------------------------------------------------------- /components/icons/icon-menu.tsx: -------------------------------------------------------------------------------- 1 | function MenuIcon(props: React.SVGProps) { 2 | return ( 3 | 15 | 16 | 17 | 18 | 19 | ); 20 | } 21 | 22 | export default MenuIcon; 23 | -------------------------------------------------------------------------------- /components/icons/icon-users.tsx: -------------------------------------------------------------------------------- 1 | import React, { SVGProps } from 'react'; 2 | 3 | const UsersIcon = (props: SVGProps) => { 4 | return ( 5 | 16 | 17 | 18 | 19 | 20 | ); 21 | }; 22 | 23 | export default UsersIcon; 24 | -------------------------------------------------------------------------------- /lib/hooks/use-click-outside.ts: -------------------------------------------------------------------------------- 1 | /* eslint-disable @typescript-eslint/no-explicit-any */ 2 | import { MutableRefObject, useEffect } from 'react'; 3 | 4 | const useClickOutside = ( 5 | ref: MutableRefObject, 6 | handler: (event: Event) => void 7 | ) => { 8 | useEffect(() => { 9 | const callback = (event: Event) => { 10 | const el = ref.current; 11 | if (!event || !el || el.contains((event as any).target)) return; 12 | handler(event); 13 | }; 14 | 15 | document.addEventListener('click', callback); 16 | return () => document.removeEventListener('click', callback); 17 | }, [ref, handler]); 18 | }; 19 | 20 | export default useClickOutside; 21 | -------------------------------------------------------------------------------- /components/icons/icon-menu-hor.tsx: -------------------------------------------------------------------------------- 1 | function HorizontalMenuIcon(props: React.SVGProps) { 2 | return ( 3 | 15 | 16 | 17 | 18 | 19 | ); 20 | } 21 | 22 | export default HorizontalMenuIcon; 23 | -------------------------------------------------------------------------------- /components/hms/config.ts: -------------------------------------------------------------------------------- 1 | export const hmsConfig = { 2 | /** 3 | * no. of tiles rendered before active speaker mode actviates 4 | */ 5 | activeSpeakerThreshold: 2, 6 | /** 7 | * aspect ratio of video tiles 8 | */ 9 | aspectRatio: { 10 | width: 1.8, 11 | height: 1 12 | }, 13 | /** 14 | * maximum no.of tiles that can be rendered in speakers row 15 | */ 16 | maxTileCountSpeakers: 5, 17 | /** 18 | * Turn off 100ms added things -> 19 | * Disable for removing Invite change role CTAs 20 | */ 21 | hmsIntegration: true, 22 | /** 23 | * border color for audioLevel 24 | */ 25 | audioLevelColor: '#702ec2', 26 | /** 27 | * setHmsWatermark 28 | */ 29 | setHmsWatermark: true 30 | }; 31 | -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9j8vRIAACgA5wJP=#=X9j87hIAACgA5wM-=#=talk=#=X9j8vRIAACgA5wJR=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"title":[{"type":"heading1","content":{"text":"10 Reasons You Don't Need a Custom Server","spans":[]}}],"speakers":[{"speaker":{"id":"X9jJhRIAACcA5hNe","wioUrl":"wio://documents/X9jJhRIAACcA5hNe"}}],"start":"2020-10-27T18:50:00+00:00","end":"2020-10-27T19:30:00+00:00","title_TYPE":"StructuredText","title_POSITION":0,"speakers_TYPE":"Group","speakers_POSITION":1,"speakers.speaker_TYPE":"Link","speakers.speaker_POSITION":2,"start_TYPE":"Timestamp","start_POSITION":3,"end_TYPE":"Timestamp","end_POSITION":4,"description_TYPE":"StructuredText","description_POSITION":5,"slugs_INTERNAL":["10-reasons-you-dont-need-a-custom-server"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/form-error.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | export default class FormError extends Error { 18 | constructor(public res: Response) { 19 | super(); 20 | } 21 | } 22 | -------------------------------------------------------------------------------- /components/hms/select/index.tsx: -------------------------------------------------------------------------------- 1 | import cn from 'classnames'; 2 | import styles from './index.module.css'; 3 | 4 | export default function Select({ className, ...props }: JSX.IntrinsicElements['select']) { 5 | return ( 6 |
7 | 24 |
25 | 36 | 37 | 38 |
39 |
40 | ); 41 | } 42 | -------------------------------------------------------------------------------- /components/icons/icon-transition.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | .fill-black { 18 | fill: black; 19 | transition: stroke fill 0.2s ease; 20 | } 21 | 22 | .stroke-black { 23 | stroke: black; 24 | transition: stroke fill 0.2s ease; 25 | } 26 | 27 | .stroke-white { 28 | stroke: #fff; 29 | transition: stroke fill 0.2s ease; 30 | } 31 | 32 | :global(.icon-button:hover) .fill-black, 33 | :global(.icon-button:focus) .fill-black { 34 | fill: #fff; 35 | transition: stroke fill 0.2s ease; 36 | } 37 | 38 | :global(.icon-button:hover) .stroke-black, 39 | :global(.icon-button:focus) .stroke-black { 40 | stroke: #fff; 41 | transition: stroke fill 0.2s ease; 42 | } 43 | 44 | :global(.icon-button:hover) .stroke-white, 45 | :global(.icon-button:focus) .stroke-white { 46 | stroke: black; 47 | transition: stroke fill 0.2s ease; 48 | } 49 | -------------------------------------------------------------------------------- /pages/api/auth.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { NextApiRequest, NextApiResponse } from 'next'; 18 | import { COOKIE } from '@lib/constants'; 19 | import { getTicketNumberByUserId } from '@lib/db-api'; 20 | 21 | export default async function auth(req: NextApiRequest, res: NextApiResponse) { 22 | const id = req.cookies[COOKIE]; 23 | if (!id) { 24 | return res.status(401).json({ 25 | error: { 26 | code: 'missing_cookie', 27 | message: 'Missing cookie' 28 | } 29 | }); 30 | } 31 | 32 | const ticketNumberString = await getTicketNumberByUserId(id); 33 | 34 | if (!ticketNumberString) { 35 | return res.status(401).json({ 36 | error: { 37 | code: 'not_registered', 38 | message: 'This user is not registered' 39 | } 40 | }); 41 | } 42 | 43 | return res.status(200).json({ loggedIn: true }); 44 | } 45 | -------------------------------------------------------------------------------- /components/view-source.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | .svg { 18 | z-index: 10; 19 | position: absolute; 20 | top: 0; 21 | right: 0; 22 | } 23 | 24 | .arm { 25 | transform-origin: 130px 106px; 26 | } 27 | 28 | .svg:hover .arm { 29 | animation: wave 560ms ease-in-out; 30 | } 31 | 32 | @keyframes wave { 33 | 0% { 34 | transform: rotate(0deg); 35 | } 36 | 37 | 20% { 38 | transform: rotate(-25deg); 39 | } 40 | 41 | 40% { 42 | transform: rotate(10deg); 43 | } 44 | 45 | 60% { 46 | transform: rotate(-25deg); 47 | } 48 | 49 | 80% { 50 | transform: rotate(10deg); 51 | } 52 | 53 | 100% { 54 | transform: rotate(0deg); 55 | } 56 | } 57 | 58 | @media (max-width: 500px) { 59 | .svg:hover .arm { 60 | animation: none; 61 | } 62 | 63 | .svg:hover .arm { 64 | animation: wave 560ms ease-in-out; 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /components/loading-dots.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import px from '@lib/to-pixels'; 18 | import cn from 'classnames'; 19 | import styles from './loading-dots.module.css'; 20 | 21 | interface Props { 22 | size?: number; 23 | height?: number | string; 24 | reverse?: boolean; 25 | children?: React.ReactNode; 26 | } 27 | 28 | export default function LoadingDots({ size = 2, height, children, reverse }: Props) { 29 | return ( 30 | 37 | {children &&
{children}
} 38 | 39 | 40 | 41 | 42 | ); 43 | } 44 | -------------------------------------------------------------------------------- /pages/_app.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { SSRProvider, OverlayProvider } from 'react-aria'; 18 | import '@styles/global.css'; 19 | import '@styles/nprogress.css'; 20 | import '@styles/chrome-bug.css'; 21 | import type { AppProps } from 'next/app'; 22 | import NProgress from '@components/nprogress'; 23 | import ResizeHandler from '@components/resize-handler'; 24 | import { useEffect } from 'react'; 25 | import { HMSRoomProvider } from '@100mslive/react-sdk'; 26 | 27 | export default function App({ Component, pageProps }: AppProps) { 28 | useEffect(() => { 29 | document.body.classList?.remove('loading'); 30 | }, []); 31 | return ( 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | ); 42 | } 43 | -------------------------------------------------------------------------------- /components/nprogress.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import NProgress from 'nprogress'; 18 | import { useRouter } from 'next/router'; 19 | import { useEffect } from 'react'; 20 | 21 | export default function Progress() { 22 | const router = useRouter(); 23 | 24 | useEffect(() => { 25 | let timeout: NodeJS.Timeout; 26 | 27 | const start = () => { 28 | timeout = setTimeout(() => NProgress.start(), 100); 29 | }; 30 | 31 | const done = () => { 32 | clearTimeout(timeout); 33 | NProgress.done(); 34 | }; 35 | 36 | router.events.on('routeChangeStart', start); 37 | router.events.on('routeChangeComplete', done); 38 | router.events.on('routeChangeError', done); 39 | return () => { 40 | router.events.off('routeChangeStart', start); 41 | router.events.off('routeChangeComplete', done); 42 | router.events.off('routeChangeError', done); 43 | }; 44 | }, [router.events]); 45 | return <>; 46 | } 47 | -------------------------------------------------------------------------------- /components/hms/Live.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import Footer from './Footer'; 3 | import Header from './Header'; 4 | import List from './Conference'; 5 | import toast, { Toaster } from 'react-hot-toast'; 6 | import { useHMSNotifications } from '@100mslive/react-sdk'; 7 | import DemoModal from './DemoModal'; 8 | 9 | /** 10 | * Live Video/Audio component 11 | */ 12 | const Live = () => { 13 | return ( 14 |
15 | 16 |
17 | 18 |
19 | {process.env.NEXT_PUBLIC_LIVE_DEMO === 'true' ? : null} 20 |
21 | ); 22 | }; 23 | 24 | export default Live; 25 | 26 | const Notification = () => { 27 | const notification = useHMSNotifications(); 28 | React.useEffect(() => { 29 | if (!notification) { 30 | return; 31 | } 32 | if (notification.type === 'RECONNECTING') { 33 | toast.error( 34 | 'You are offline for now. while we try to reconnect, please check your internet connection.' 35 | ); 36 | } 37 | if (notification.type === 'RECONNECTED') { 38 | toast.success('You are now connected.'); 39 | } 40 | if (notification.type === 'ERROR') { 41 | toast.error(`Error: ${notification.data.message}`); 42 | } 43 | }, [notification]); 44 | 45 | return ( 46 | 55 | ); 56 | }; 57 | -------------------------------------------------------------------------------- /components/hms/select/index.module.css: -------------------------------------------------------------------------------- 1 | .container { 2 | appearance: none; 3 | color: var(--accents-1); 4 | display: inline-flex; 5 | text-transform: uppercase; 6 | user-select: none; 7 | font-weight: 100; 8 | position: relative; 9 | white-space: nowrap; 10 | line-height: 0; 11 | height: 56px; 12 | max-width: 300px; 13 | min-width: 160px; 14 | outline: none; 15 | overflow: hidden; 16 | border-radius: var(--space-2x); 17 | background-color: var(--accents-6); 18 | } 19 | 20 | .select { 21 | -webkit-rtl-ordering: logical; 22 | appearance: none; 23 | border: none; 24 | cursor: default; 25 | color: #fff; 26 | font-size: 14px; 27 | font-family: inherit; 28 | width: 100%; 29 | word-spacing: normal; 30 | writing-mode: horizontal-tb !important; 31 | padding: var(--space-4x) var(--space-8x) var(--space-4x) var(--space-4x); 32 | transition: border-color 0.2s ease, background-color 0.2s ease; 33 | border: 1px solid var(--accents-7); 34 | border-radius: var(--space-2x); 35 | font-weight: 700; 36 | background-color: var(--accents-6); 37 | } 38 | 39 | .select:focus { 40 | outline: none; 41 | background-color: var(--accents-5); 42 | } 43 | 44 | .select:invalid { 45 | color: var(--secondary-color); 46 | } 47 | 48 | .select option { 49 | background-color: black; 50 | color: #fff; 51 | } 52 | 53 | .arrow { 54 | width: 30px; 55 | height: 100%; 56 | position: absolute; 57 | right: 0px; 58 | pointer-events: none; 59 | display: flex; 60 | align-items: center; 61 | transition: border 0.2s ease 0s; 62 | } 63 | 64 | .arrow > svg { 65 | color: #fff; 66 | strokewidth: 3px; 67 | } 68 | -------------------------------------------------------------------------------- /components/view-source.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import styles from './view-source.module.css'; 18 | import { REPO } from '@lib/constants'; 19 | 20 | export default function ViewSource() { 21 | return ( 22 | 30 | 31 | 32 | 36 | 37 | 38 | 39 | ); 40 | } 41 | -------------------------------------------------------------------------------- /components/hms/demo-cta/index.module.css: -------------------------------------------------------------------------------- 1 | .cta-btn { 2 | cursor: pointer; 3 | font-weight: 500; 4 | font-size: 15px; 5 | color: white; 6 | background: #323332; 7 | border: 2px solid #8465cb; 8 | border-radius: 8px; 9 | padding: 10px 16px; 10 | position: relative; 11 | } 12 | 13 | .tooltip { 14 | display: none; 15 | position: absolute; 16 | top: 70px; 17 | right: 20px; 18 | background: #444443; 19 | border-radius: 8px; 20 | padding: 12px; 21 | font-weight: normal; 22 | font-size: 13px; 23 | line-height: 20px; 24 | width: 250px; 25 | justify-content: space-between; 26 | gap: 5px; 27 | align-items: flex-start; 28 | } 29 | 30 | .overlay { 31 | background-color: rgba(0, 0, 0, 0.9); 32 | position: fixed; 33 | inset: 0; 34 | } 35 | 36 | .content { 37 | max-height: 760px; 38 | position: fixed; 39 | top: 50%; 40 | left: 50%; 41 | transform: translate(-50%, -50%); 42 | font-family: Inter; 43 | background: #111111; 44 | border-radius: 8px; 45 | padding: 24px; 46 | color: white; 47 | text-align: center; 48 | overflow-y: scroll; 49 | } 50 | 51 | .close-btn { 52 | width: 100%; 53 | color: white; 54 | display: flex; 55 | justify-content: flex-end; 56 | } 57 | 58 | .cta-wrapper { 59 | display: flex; 60 | align-items: center; 61 | gap: 1rem; 62 | } 63 | 64 | .cta-role { 65 | font-family: Inter; 66 | cursor: pointer; 67 | font-weight: 500; 68 | font-size: 15px; 69 | line-height: 24px; 70 | color: white; 71 | border-radius: 8px; 72 | padding: 8px 16px; 73 | position: relative; 74 | display: flex; 75 | align-items: center; 76 | background: #323332; 77 | gap: 0.5rem; 78 | } 79 | -------------------------------------------------------------------------------- /lib/screenshot.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import chrome from 'chrome-aws-lambda'; 18 | import puppeteer from 'puppeteer-core'; 19 | 20 | export default async function screenshot(url: string) { 21 | const options = process.env.AWS_REGION 22 | ? { 23 | args: chrome.args, 24 | executablePath: await chrome.executablePath, 25 | headless: chrome.headless 26 | } 27 | : { 28 | args: [], 29 | executablePath: 30 | process.platform === 'win32' 31 | ? 'C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe' 32 | : process.platform === 'linux' 33 | ? '/usr/bin/google-chrome' 34 | : '/Applications/Google Chrome.app/Contents/MacOS/Google Chrome' 35 | }; 36 | const browser = await puppeteer.launch(options); 37 | const page = await browser.newPage(); 38 | await page.setViewport({ width: 2000, height: 1000 }); 39 | await page.goto(url, { waitUntil: 'networkidle0' }); 40 | return await page.screenshot({ type: 'png' }); 41 | } 42 | -------------------------------------------------------------------------------- /lib/user-api.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | import crypto from 'crypto'; 17 | 18 | export async function register(email: string, token?: string) { 19 | return await fetch('/api/register', { 20 | method: 'POST', 21 | headers: { 22 | 'Content-Type': 'application/json' 23 | }, 24 | body: JSON.stringify({ email, token }) 25 | }); 26 | } 27 | 28 | export async function saveGithubToken({ id, token }: { id?: string; token: string }) { 29 | return await fetch('/api/save-github-token', { 30 | method: 'POST', 31 | headers: { 32 | 'Content-Type': 'application/json' 33 | }, 34 | body: JSON.stringify({ 35 | id, 36 | token 37 | }) 38 | }); 39 | } 40 | 41 | export function emailToId(email: string) { 42 | if (process.env.EMAIL_TO_ID_SECRET) { 43 | const hmac = crypto.createHmac('sha1', process.env.EMAIL_TO_ID_SECRET); 44 | hmac.update(email); 45 | const result = hmac.digest('hex'); 46 | return result; 47 | } else { 48 | throw new Error('EMAIL_TO_ID_SECRET is missing'); 49 | } 50 | } 51 | -------------------------------------------------------------------------------- /components/hms/LeaveDialog.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | import * as Dialog from '@radix-ui/react-dialog'; 3 | import { HangUpIcon } from '@100mslive/react-icons'; 4 | import ControlButton from './ControlButton'; 5 | import Button from './Button'; 6 | import { useHMSActions } from '@100mslive/react-sdk'; 7 | import { useRouter } from 'next/router'; 8 | 9 | const LeaveDialog = () => { 10 | const actions = useHMSActions(); 11 | const router = useRouter(); 12 | const leave = () => { 13 | try { 14 | actions.leave().then(() => router.push('/')); 15 | } catch (error) { 16 | console.log(error); 17 | } 18 | }; 19 | return ( 20 | 21 | 22 | 23 | {}}> 24 | 25 | 26 | 27 | 28 |

Leave Stage?

29 |

Are you sure you want to leave the stage?

30 |
31 | 34 | 35 | 38 | 39 |
40 |
41 |
42 | ); 43 | }; 44 | 45 | export default LeaveDialog; 46 | -------------------------------------------------------------------------------- /pages/index.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { useRouter } from 'next/router'; 18 | import { SkipNavContent } from '@reach/skip-nav'; 19 | 20 | import Page from '@components/page'; 21 | import ConfContent from '@components/index'; 22 | import { META_DESCRIPTION } from '@lib/constants'; 23 | 24 | export default function Conf() { 25 | const { query } = useRouter(); 26 | const meta = { 27 | title: 'Demo - Virtual Event Starter Kit', 28 | description: META_DESCRIPTION 29 | }; 30 | const ticketNumber = query.ticketNumber?.toString(); 31 | const defaultUserData = { 32 | id: query.id?.toString(), 33 | ticketNumber: ticketNumber ? parseInt(ticketNumber, 10) : undefined, 34 | name: query.name?.toString(), 35 | username: query.username?.toString() 36 | }; 37 | 38 | return ( 39 | 40 | 41 | 45 | 46 | ); 47 | } 48 | -------------------------------------------------------------------------------- /pages/api/stages.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import ms from 'ms'; 18 | import { NextApiRequest, NextApiResponse } from 'next'; 19 | import { getAllStages } from '@lib/cms-api'; 20 | 21 | // Number of seconds to cache the API response for 22 | const EXPIRES_SECONDS = 5; 23 | 24 | export default async function getStages(_: NextApiRequest, res: NextApiResponse) { 25 | try { 26 | const allStages = await getAllStages(); 27 | 28 | // Set caching headers 29 | const expires = new Date(Date.now() + ms(`${EXPIRES_SECONDS}s`)); 30 | res.setHeader('Expires', expires.toUTCString()); 31 | res.setHeader( 32 | 'Cache-Control', 33 | `s-maxage=${EXPIRES_SECONDS}, immutable, must-revalidate, stale-while-revalidate` 34 | ); 35 | 36 | return res.status(200).json(allStages); 37 | } catch (e) { 38 | // eslint-disable-next-line no-console 39 | console.log(e); 40 | 41 | return res.status(500).json({ 42 | error: { 43 | code: 'server_error', 44 | message: 'Internal server error' 45 | } 46 | }); 47 | } 48 | } 49 | -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i3AxIAACcA5cRx=#=X9kKlRIAACgA50FH=#=speaker=#=X9i3AxIAACcA5cRz=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Paulína Rodya","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"paulina","title":[{"type":"heading4","content":{"text":"VP of Engineering","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9i39xIAACgA5cjj","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/64b861ad-2c07-4db0-a045-fada96fe909a_image.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/64b861ad-2c07-4db0-a045-fada96fe909a_image.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Paulína Rodya","provider":"imgix","thumbnails":{}},"talk":{"id":"X9joshIAACgA5qVC","wioUrl":"wio://documents/X9joshIAACgA5qVC"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["paulina-rodya"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jK8xIAACkA5hoI=#=X9jrWBIAACkA5rGS=#=speaker=#=X9jK8xIAACkA5hoK=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Katell Kali","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"katell","title":[{"type":"heading4","content":{"text":"Creator","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6hIAACgA5bGR","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/d40dcab3-c3d3-4a8f-865a-31cd05cbada2_image+%2817%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/d40dcab3-c3d3-4a8f-865a-31cd05cbada2_image+%2817%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Katell Kali","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jrThIAACkA5rFj","wioUrl":"wio://documents/X9jrThIAACkA5rFj"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["katell-kali"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jKoxIAACcA5hiZ=#=X9kJyhIAACgA5z3f=#=speaker=#=X9jKoxIAACcA5hib=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Hadyn Faye","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"hadyn","title":[{"type":"heading4","content":{"text":"President","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy5hIAACgA5bFu","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/0c3d9f01-0e9f-41db-9093-78766436c376_image+%2818%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/0c3d9f01-0e9f-41db-9093-78766436c376_image+%2818%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Hadyn Faye","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jmoBIAACcA5pu4","wioUrl":"wio://documents/X9jmoBIAACcA5pu4"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["hadyn-faye"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jRbBIAACgA5jhp=#=X9j32xIAACYA5uvc=#=speaker=#=X9jRbBIAACgA5jhr=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Neha Beatriu","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"neha","title":[{"type":"heading4","content":{"text":"Founder","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6hIAACgA5bGT","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/020d1129-e981-4dd7-b6e8-02382f23d83b_image+%287%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/020d1129-e981-4dd7-b6e8-02382f23d83b_image+%287%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Neha Beatriu","provider":"imgix","thumbnails":{}},"talk":{"id":"X9j3yhIAACgA5uuF","wioUrl":"wio://documents/X9j3yhIAACgA5uuF"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["neha-beatriu"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /components/loading-dots.module.css: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | .loading { 18 | display: inline-flex; 19 | align-items: center; 20 | --loading-dots-height: auto; 21 | --loading-dots-size: 2px; 22 | height: var(--loading-dots-height); 23 | } 24 | 25 | .loading .spacer { 26 | margin-right: var(--space-3x); 27 | } 28 | 29 | .loading span { 30 | animation-name: blink; 31 | animation-duration: 1.4s; 32 | animation-iteration-count: infinite; 33 | animation-fill-mode: both; 34 | width: var(--loading-dots-size); 35 | height: var(--loading-dots-size); 36 | border-radius: 50%; 37 | background-color: var(--accents-6); 38 | display: inline-block; 39 | margin: 0 1px; 40 | } 41 | 42 | .loading.reverse span { 43 | background-color: var(--accents-2); 44 | } 45 | 46 | .loading span:nth-of-type(2) { 47 | animation-delay: 0.2s; 48 | } 49 | 50 | .loading span:nth-of-type(3) { 51 | animation-delay: 0.4s; 52 | } 53 | 54 | @keyframes blink { 55 | 0% { 56 | opacity: 0.2; 57 | } 58 | 20% { 59 | opacity: 1; 60 | } 61 | 100% { 62 | opacity: 0.2; 63 | } 64 | } 65 | -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i0lBIAACYA5blV=#=X9kEIhIAACcA5ySF=#=speaker=#=X9i0lBIAACYA5blX=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Christa Collyn","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"christa","title":[{"type":"heading4","content":{"text":"CEO","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6hIAACYA5bGM","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/c84ff287-49a2-4ccc-9953-f80fa89b8ff6_image+%2831%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/c84ff287-49a2-4ccc-9953-f80fa89b8ff6_image+%2831%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Christa Collyn","provider":"imgix","thumbnails":{}},"talk":{"id":"X9kEExIAACcA5yQ_","wioUrl":"wio://documents/X9kEExIAACcA5yQ_"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["christa-collyn"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9ivfhIAACYA5aDq=#=X9jiThIAACcA5oe-=#=speaker=#=X9ivfhIAACYA5aDs=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"July Desideria","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"july","title":[{"type":"heading4","content":{"text":"Senior Software Engineer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iw2RIAACYA5agl","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/bae167e1-e138-4bac-9b85-6fe2af48f183_image.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/bae167e1-e138-4bac-9b85-6fe2af48f183_image.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"July Desideria","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jiORIAACgA5odb","wioUrl":"wio://documents/X9jiORIAACgA5odb"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["july-desideria"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jJhRIAACcA5hNe=#=X9j8zhIAACkA5wKa=#=speaker=#=X9jJhRIAACcA5hNg=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Jazmin Sanel","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"jazmin","title":[{"type":"heading4","content":{"text":"Developer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy5hIAACcA5bFt","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/fe652df9-bf54-4bdb-b5dd-5b555f3e2592_image+%2819%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/fe652df9-bf54-4bdb-b5dd-5b555f3e2592_image+%2819%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Jazmin Sanel","provider":"imgix","thumbnails":{}},"talk":{"id":"X9j8vRIAACgA5wJP","wioUrl":"wio://documents/X9j8vRIAACgA5wJP"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["jazmin-sanel"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jM4BIAACkA5iLV=#=X9kFhhIAACgA5yrO=#=speaker=#=X9jM4BIAACkA5iLX=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Fabiana Aramis","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"fabiana","title":[{"type":"heading4","content":{"text":"CEO","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy5hIAACgA5bFz","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/5665a6f8-2e91-4d76-bf9c-55bd0ada974c_image+%2812%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/5665a6f8-2e91-4d76-bf9c-55bd0ada974c_image+%2812%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Fabiana Aramis","provider":"imgix","thumbnails":{}},"talk":{"id":"X9kFeRIAACgA5yqX","wioUrl":"wio://documents/X9kFeRIAACgA5yqX"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["fabiana-aramis"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i-rhIAACgA5eQ0=#=X9j3-hIAACkA5uxv=#=speaker=#=X9i-rhIAACgA5eQ2=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Ram Hanan","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"ram","title":[{"type":"heading4","content":{"text":"Senior Software Engineer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6hIAACYA5bGS","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/cfdc2089-a4f4-4db6-ab5d-f383c51757b3_image+%2821%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/cfdc2089-a4f4-4db6-ab5d-f383c51757b3_image+%2821%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Ram Hanan","provider":"imgix","thumbnails":{}},"talk":{"id":"X9j3yhIAACgA5uuF","wioUrl":"wio://documents/X9j3yhIAACgA5uuF"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["ram-hanan"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i28BIAACcA5cQW=#=X9jhABIAACkA5oGg=#=speaker=#=X9i28BIAACcA5cQY=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Prosper Aniruddha","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"prosper","title":[{"type":"heading4","content":{"text":"Lead Developer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9i1_BIAACgA5b-7","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/30db9c3f-deed-4602-942e-e636543f2b52_image.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/30db9c3f-deed-4602-942e-e636543f2b52_image.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Prosper Aniruddha","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jddRIAACcA5nEu","wioUrl":"wio://documents/X9jddRIAACcA5nEu"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["prosper-aniruddha"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i5nxIAACcA5dBn=#=X9jsZRIAACkA5rZv=#=speaker=#=X9i5nxIAACcA5dBp=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Cordula Daniel","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"cordula","title":[{"type":"heading4","content":{"text":"Co-Founder","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9i5mhIAACcA5dBQ","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/1708a781-b7f3-46e7-9c32-d7804ad97624_image+%282%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/1708a781-b7f3-46e7-9c32-d7804ad97624_image+%282%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Cordula Daniel","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jsWRIAACgA5rYy","wioUrl":"wio://documents/X9jsWRIAACgA5rYy"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["cordula-daniel"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9izVBIAACcA5bOL=#=X9jg8RIAACYA5oFZ=#=speaker=#=X9izVBIAACcA5bON=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Cerere Eetu","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"cerere","title":[{"type":"heading4","content":{"text":"Software Engineer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iyAxIAACkA5a1n","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/c185df56-d76c-4f6f-afdf-c7bcd97cff55_image+%281%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/c185df56-d76c-4f6f-afdf-c7bcd97cff55_image+%281%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Cerere Eetu","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jddRIAACcA5nEu","wioUrl":"wio://documents/X9jddRIAACcA5nEu"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["cerere-eetu"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jQlhIAACYA5jQu=#=X9kHjRIAACgA5zP1=#=speaker=#=X9jQlhIAACYA5jQw=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Kleon Renaud","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"kleon","title":[{"type":"heading4","content":{"text":"Software Engineer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6hIAACYA5bGJ","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/9ed16e73-7f1d-463d-99bc-751c3cf19cdd_image+%289%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/9ed16e73-7f1d-463d-99bc-751c3cf19cdd_image+%289%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Kleon Renaud","provider":"imgix","thumbnails":{}},"talk":{"id":"X9kHdBIAACcA5zOI","wioUrl":"wio://documents/X9kHdBIAACcA5zOI"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["kleon-renaud"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jSfBIAACgA5j1U=#=X9jVTRIAACgA5kpx=#=speaker=#=X9jSfBIAACgA5j1W=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Alon Neelima","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"alon","title":[{"type":"heading4","content":{"text":"Head of Development","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy5xIAACkA5bF4","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/a16ee2b4-c9b3-4f82-96b8-b7b309c0a0f0_image+%285%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/a16ee2b4-c9b3-4f82-96b8-b7b309c0a0f0_image+%285%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Alon Neelima","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jVQxIAACgA5kpB","wioUrl":"wio://documents/X9jVQxIAACgA5kpB"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["alon-neelima"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jOMxIAACgA5ij1=#=X9kGvRIAACkA5zBE=#=speaker=#=X9jOMxIAACgA5ij3=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Maksim Vishal","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"maksim","title":[{"type":"heading4","content":{"text":"Lead Engineer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6RIAACgA5bGD","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/9b533fdc-18ee-4ea1-9e4c-197355b4fef6_image+%2811%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/9b533fdc-18ee-4ea1-9e4c-197355b4fef6_image+%2811%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Maksim Vishal","provider":"imgix","thumbnails":{}},"talk":{"id":"X9kGsxIAACgA5zAR","wioUrl":"wio://documents/X9kGsxIAACgA5zAR"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["maksim-vishal"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jPLhIAACgA5i14=#=X9kHFRIAACkA5zHX=#=speaker=#=X9jPLhIAACgA5i16=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Süheyla Purnima","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"purnima","title":[{"type":"heading4","content":{"text":"Founder","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6hIAACYA5bGK","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/112b41ee-1748-44bb-870c-661aba667369_image+%2810%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/112b41ee-1748-44bb-870c-661aba667369_image+%2810%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Süheyla Purnima","provider":"imgix","thumbnails":{}},"talk":{"id":"X9kHDBIAACcA5zGs","wioUrl":"wio://documents/X9kHDBIAACcA5zGs"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["suheyla-purnima"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jUfxIAACcA5ka7=#=X9jWpBIAACkA5lCt=#=speaker=#=X9jUfxIAACcA5ka9=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Ensio Heidi","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"ensio","title":[{"type":"heading4","content":{"text":"Senior Software Developer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy5xIAACkA5bF8","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/9da8d55e-2587-4c0b-93d5-2261435ea50e_image+%283%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/9da8d55e-2587-4c0b-93d5-2261435ea50e_image+%283%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Ensio Heidi","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jWmRIAACYA5lBt","wioUrl":"wio://documents/X9jWmRIAACYA5lBt"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["ensio-heidi"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i0JBIAACgA5bdM=#=X9kEZxIAACYA5yXE=#=speaker=#=X9i0JBIAACgA5bdO=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Harshad İrem","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"harshad","title":[{"type":"heading4","content":{"text":"Senior Software Engineer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy5hIAACYA5bFs","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/bba2ee42-db65-42cc-94f6-a77f02b5ae0a_image+%282%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/bba2ee42-db65-42cc-94f6-a77f02b5ae0a_image+%282%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Harshad İrem","provider":"imgix","thumbnails":{}},"talk":{"id":"X9kEExIAACcA5yQ_","wioUrl":"wio://documents/X9kEExIAACcA5yQ_"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["harshad-irem"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jBeBIAACgA5e99=#=X9jg2xIAACcA5oDx=#=speaker=#=X9jBeBIAACgA5e9_=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Lallie Viggo","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"lallie","title":[{"type":"heading4","content":{"text":"Vice President of Cloud","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy5xIAACkA5bF5","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/d3e4428e-014c-4ed6-a9fc-ad20ba89a3bf_image+%2820%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/d3e4428e-014c-4ed6-a9fc-ad20ba89a3bf_image+%2820%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Lallie Viggo","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jddRIAACcA5nEu","wioUrl":"wio://documents/X9jddRIAACcA5nEu"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["lallie-viggo"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jMURIAACYA5iBY=#=X9kFFxIAACkA5yjg=#=speaker=#=X9jMURIAACYA5iBa=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Peg Amaterasu","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"peg","title":[{"type":"heading4","content":{"text":"Accessibility / Front-End","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6BIAACkA5bF-","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/cad09532-603e-4753-8869-1620477505b0_image+%2814%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/cad09532-603e-4753-8869-1620477505b0_image+%2814%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Peg Amaterasu","provider":"imgix","thumbnails":{}},"talk":{"id":"X9kFDxIAACkA5yi4","wioUrl":"wio://documents/X9kFDxIAACkA5yi4"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["peg-amaterasu"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jT0hIAACgA5kON=#=X9jpqhIAACkA5qnA=#=speaker=#=X9jT0hIAACgA5kOP=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Bhaskar Folami","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"bhaskar","title":[{"type":"heading4","content":{"text":"Software Architect","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy7BIAACgA5bGd","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/5e8aaa19-5a61-462a-afc3-2be0046505a0_image+%284%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/5e8aaa19-5a61-462a-afc3-2be0046505a0_image+%284%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Bhaskar Folami","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jpoRIAACcA5qmT","wioUrl":"wio://documents/X9jpoRIAACcA5qmT"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["bhaskar-folami"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i4gBIAACYA5ctf=#=X9kEQxIAACkA5yUe=#=speaker=#=X9i4gBIAACYA5cth=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Blagun Dobromil","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"blagun","title":[{"type":"heading4","content":{"text":"Designer & Developer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9i4ehIAACkA5ctD","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/527bb474-fe93-4dae-951f-93ca1f9ba518_image+%281%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/527bb474-fe93-4dae-951f-93ca1f9ba518_image+%281%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Blagun Dobromil","provider":"imgix","thumbnails":{}},"talk":{"id":"X9kEExIAACcA5yQ_","wioUrl":"wio://documents/X9kEExIAACcA5yQ_"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["blagun-dobromil"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i8PxIAACkA5dov=#=X9j2zxIAACYA5ubk=#=speaker=#=X9i8PxIAACkA5dox=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Lothaire Darius","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"lothaire","title":[{"type":"heading4","content":{"text":"Software Developer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6xIAACcA5bGX","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/0103a5a0-d3a3-4ed0-aece-1e3476ba055b_image+%2825%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/0103a5a0-d3a3-4ed0-aece-1e3476ba055b_image+%2825%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Lothaire Darius","provider":"imgix","thumbnails":{}},"talk":{"id":"X9j2tRIAACgA5uZq","wioUrl":"wio://documents/X9j2tRIAACgA5uZq"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["lothaire-darius"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jSWRIAACgA5jyo=#=X9j8ZRIAACcA5wCx=#=speaker=#=X9jSWRIAACgA5jyq=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Mariyam Bricius","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"mariyam","title":[{"type":"heading4","content":{"text":"Director of Technology","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy5xIAACkA5bF6","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/288d41ff-93fa-491c-8c1b-be3d45f8bc7e_image+%286%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/288d41ff-93fa-491c-8c1b-be3d45f8bc7e_image+%286%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Mariyam Bricius","provider":"imgix","thumbnails":{}},"talk":{"id":"X9j8WRIAACgA5wB6","wioUrl":"wio://documents/X9j8WRIAACgA5wB6"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["mariyam-bricius"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i-DBIAACgA5eEx=#=X9jpRBIAACkA5qfq=#=speaker=#=X9i-DBIAACgA5eEz=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Brunhild Calvin","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"brunhild","title":[{"type":"heading4","content":{"text":"Senior Software Engineer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6RIAACgA5bGE","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/4674eedd-c52c-422b-9e0a-601d19fef2ab_image+%2823%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/4674eedd-c52c-422b-9e0a-601d19fef2ab_image+%2823%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Brunhild Calvin","provider":"imgix","thumbnails":{}},"talk":{"id":"X9joshIAACgA5qVC","wioUrl":"wio://documents/X9joshIAACgA5qVC"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["brunhild-calvin"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i-mRIAACcA5ePU=#=X9uHQxIAACgA8pQy=#=speaker=#=X9i-mRIAACcA5ePW=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Manas Kerman","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"manas","title":[{"type":"heading4","content":{"text":"CFO","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"talk":{"id":"X9kEwBIAACcA5ydY","wioUrl":"wio://documents/X9kEwBIAACcA5ydY"},"image":{"origin":{"id":"X9iy6xIAACkA5bGc","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/6f3474a1-5525-41e7-a3fd-76918d36e251_image+%2822%29.jpeg","width":300,"height":400},"provider":"imgix","url":"https://images.prismic.io/nextjs-conference/6f3474a1-5525-41e7-a3fd-76918d36e251_image+%2822%29.jpeg?auto=compress,format&rect=0,0,300,400&w=300&h=400","alt":null,"credits":null,"width":300,"height":400,"edit":{"zoom":1,"crop":{"x":0,"y":0},"background":"#fff"},"thumbnails":{}},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["manas-kerman","cfo"],"uids_INTERNAL":["manas"]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i51hIAACcA5dFu=#=X9j71RIAACgA5v4S=#=speaker=#=X9i51hIAACcA5dFw=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Ricohard Bohuslav","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"ricohard","title":[{"type":"heading4","content":{"text":"Software Engineer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9i50hIAACkA5dFZ","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/2797ee98-fcce-46a0-9017-5a3ad0cae13c_image+%283%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/2797ee98-fcce-46a0-9017-5a3ad0cae13c_image+%283%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Ricohard Bohuslav","provider":"imgix","thumbnails":{}},"talk":{"id":"X9j7yxIAACgA5v3j","wioUrl":"wio://documents/X9j7yxIAACgA5v3j"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["ricohard-bohuslav"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jLzxIAACYA5h39=#=X9kJlhIAACgA5zzu=#=speaker=#=X9jLzxIAACYA5h3_=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Chidiebube Paul","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"chidiebube","title":[{"type":"heading4","content":{"text":"Lead Software Engineer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6hIAACgA5bGU","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/6be6c675-d4eb-4d7d-8d7a-bfc503386384_image+%2816%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/6be6c675-d4eb-4d7d-8d7a-bfc503386384_image+%2816%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Chidiebube Paul","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jVQxIAACgA5kpB","wioUrl":"wio://documents/X9jVQxIAACgA5kpB"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["chidiebube-paul"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jMFBIAACYA5h85=#=X9jxEBIAACgA5sxR=#=speaker=#=X9jMFBIAACYA5h87=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Ramses Reinaldo","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"ramses","title":[{"type":"heading4","content":{"text":"Lead Software Engineer","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy7RIAACcA5bGj","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/2fdeedca-4c53-4dcd-933f-4cefb4b9475b_image+%2815%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/2fdeedca-4c53-4dcd-933f-4cefb4b9475b_image+%2815%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Ramses Reinaldo","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jw3hIAACkA5stx","wioUrl":"wio://documents/X9jw3hIAACkA5stx"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["ramses-reinaldo"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jMkBIAACcA5iF1=#=X9j3WBIAACkA5ul6=#=speaker=#=X9jMkBIAACcA5iF3=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Terese Kreka","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"terese","title":[{"type":"heading4","content":{"text":"Senior Developer Advocate","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6xIAACkA5bGW","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/5485620e-b3e9-4888-ba97-636f35effb33_image+%2813%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/5485620e-b3e9-4888-ba97-636f35effb33_image+%2813%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Terese Kreka","provider":"imgix","thumbnails":{}},"talk":{"id":"X9j3OhIAACgA5ujr","wioUrl":"wio://documents/X9j3OhIAACgA5ujr"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["terese-kreka"],"uids_INTERNAL":["terese"]} -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9jQ0hIAACYA5jVk=#=X9jw6BIAACkA5suh=#=speaker=#=X9jQ0hIAACYA5jVm=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Catahecassa Sarra","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"catahecassa","title":[{"type":"heading4","content":{"text":"Senior Manager","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy5xIAACgA5bF9","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/b0f68b3f-dbb0-40b0-b51d-026a0c335f04_image+%288%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/b0f68b3f-dbb0-40b0-b51d-026a0c335f04_image+%288%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Catahecassa Sarra","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jw3hIAACkA5stx","wioUrl":"wio://documents/X9jw3hIAACkA5stx"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["catahecassa-sarra"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /pages/jobs.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { GetStaticProps } from 'next'; 18 | 19 | import Page from '@components/page'; 20 | import JobsGrid from '@components/jobs-grid'; 21 | import Layout from '@components/layout'; 22 | import Header from '@components/header'; 23 | 24 | import { getAllJobs } from '@lib/cms-api'; 25 | import { Job } from '@lib/types'; 26 | import { META_DESCRIPTION } from '@lib/constants'; 27 | 28 | type Props = { 29 | jobs: Job[]; 30 | }; 31 | 32 | export default function Jobs({ jobs }: Props) { 33 | const meta = { 34 | title: 'Career Fair - Virtual Event Starter Kit', 35 | description: META_DESCRIPTION 36 | }; 37 | 38 | return ( 39 | 40 | 41 |
42 | 43 | 44 | 45 | ); 46 | } 47 | 48 | export const getStaticProps: GetStaticProps = async () => { 49 | const jobs = await getAllJobs(); 50 | 51 | return { 52 | props: { 53 | jobs: jobs || [] 54 | }, 55 | revalidate: 60 56 | }; 57 | }; 58 | -------------------------------------------------------------------------------- /lib/cms-providers/prismic/documents/en-us/X9i9XhIAACgA5d4P=#=X9jmKRIAACgA5pmP=#=speaker=#=X9i9XhIAACgA5d4R=#=en-us=#=y.json: -------------------------------------------------------------------------------- 1 | {"name":[{"type":"heading1","content":{"text":"Chariovalda Magdalena","spans":[]}}],"bio":[{"type":"paragraph","content":{"text":"They have over ten years of experience building blazing-fast web applications with Next.js and Vercel. Outside of work, they enjoy hiking, skiing, and surfing. Before becoming a developer, they worked in finance for a Fortune 500 company.","spans":[]}}],"uid":"chariovalda","title":[{"type":"heading4","content":{"text":"Tech Lead","spans":[]}}],"twitter":{"url":"https://twitter.com/vercel","preview":null},"github":{"url":"https://github.com/vercel","preview":null},"company":[{"type":"heading4","content":{"text":"Company","spans":[]}}],"image":{"origin":{"id":"X9iy6hIAACcA5bGL","url":"https://prismic-io.s3.amazonaws.com/nextjs-conference/0939fff3-2ef3-49cb-b84b-bec5106dd83c_image+%2824%29.jpeg","width":300,"height":400},"width":300,"height":400,"url":"https://images.prismic.io/nextjs-conference/0939fff3-2ef3-49cb-b84b-bec5106dd83c_image+%2824%29.jpeg?auto=compress,format","edit":{"background":"#fff","zoom":1,"crop":{"x":0,"y":0}},"credits":null,"alt":"Chariovalda Magdalena","provider":"imgix","thumbnails":{}},"talk":{"id":"X9jmGxIAACkA5plN","wioUrl":"wio://documents/X9jmGxIAACkA5plN"},"name_TYPE":"StructuredText","name_POSITION":0,"bio_TYPE":"StructuredText","bio_POSITION":1,"uid_TYPE":"UID","uid_POSITION":2,"title_TYPE":"StructuredText","title_POSITION":3,"twitter_TYPE":"Link","twitter_POSITION":4,"github_TYPE":"Link","github_POSITION":5,"company_TYPE":"StructuredText","company_POSITION":6,"image_TYPE":"Image","image_POSITION":7,"talk_TYPE":"Link","talk_POSITION":8,"slugs_INTERNAL":["chariovalda-magdalena"],"uids_INTERNAL":[]} -------------------------------------------------------------------------------- /pages/api/save-github-token.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { NextApiRequest, NextApiResponse } from 'next'; 18 | import { getTicketNumberByUserId, updateUserWithGitHubUser } from '@lib/db-api'; 19 | 20 | export default async function saveGithubToken(req: NextApiRequest, res: NextApiResponse) { 21 | if (req.method !== 'POST') { 22 | return res.status(501).json({ 23 | error: { 24 | code: 'method_unknown', 25 | message: 'This endpoint only responds to POST' 26 | } 27 | }); 28 | } 29 | 30 | const body = req.body; 31 | 32 | if (!body.token || !body.id) { 33 | return res.status(400).json({ 34 | error: { 35 | code: 'bad_input', 36 | message: 'Invalid parameters' 37 | } 38 | }); 39 | } 40 | 41 | const ticketNumber = await getTicketNumberByUserId(body.id); 42 | if (!ticketNumber) { 43 | return res.status(404).json({ code: 'invalid_id', message: 'The registration does not exist' }); 44 | } 45 | 46 | const { username, name } = await updateUserWithGitHubUser(body.id, body.token, ticketNumber); 47 | 48 | res.json({ username, name }); 49 | } 50 | -------------------------------------------------------------------------------- /components/icons/icon-linkedin.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import styles from './icon-transition.module.css'; 18 | 19 | type Props = { width: number | string }; 20 | 21 | export default function IconLinkedin({ width }: Props) { 22 | return ( 23 | 24 | 30 | 31 | ); 32 | } 33 | -------------------------------------------------------------------------------- /components/icons/icon-download.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import cn from 'classnames'; 18 | import styles from './icon-transition.module.css'; 19 | 20 | type Props = { width: number | string }; 21 | 22 | export default function IconDownload({ width }: Props) { 23 | return ( 24 | 25 | 32 | 39 | 46 | 47 | ); 48 | } 49 | -------------------------------------------------------------------------------- /pages/expo.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { GetStaticProps } from 'next'; 18 | 19 | import Page from '@components/page'; 20 | import SponsorsGrid from '@components/sponsors-grid'; 21 | import Header from '@components/header'; 22 | import Layout from '@components/layout'; 23 | 24 | import { getAllSponsors } from '@lib/cms-api'; 25 | import { Sponsor } from '@lib/types'; 26 | import { META_DESCRIPTION } from '@lib/constants'; 27 | 28 | type Props = { 29 | sponsors: Sponsor[]; 30 | }; 31 | 32 | export default function ExpoPage({ sponsors }: Props) { 33 | const meta = { 34 | title: 'Expo - Virtual Event Starter Kit', 35 | description: META_DESCRIPTION 36 | }; 37 | 38 | return ( 39 | 40 | 41 |
42 | 43 | 44 | 45 | ); 46 | } 47 | 48 | export const getStaticProps: GetStaticProps = async () => { 49 | const sponsors = await getAllSponsors(); 50 | 51 | return { 52 | props: { 53 | sponsors: sponsors || [] 54 | }, 55 | revalidate: 60 56 | }; 57 | }; 58 | -------------------------------------------------------------------------------- /components/captcha.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import type HCaptcha from '@hcaptcha/react-hcaptcha'; 18 | import { IS_CAPTCHA_ENABLED } from '@lib/captcha'; 19 | 20 | import { ComponentProps, Suspense, forwardRef, useCallback, useRef, lazy } from 'react'; 21 | 22 | type Props = Omit, 'sitekey'>; 23 | 24 | const LazyCaptcha = lazy(() => import('@hcaptcha/react-hcaptcha')); 25 | 26 | export function useCaptcha() { 27 | const ref = useRef(null); 28 | 29 | const execute = useCallback(() => ref.current?.execute(), []); 30 | const reset = useCallback(() => ref.current?.resetCaptcha(), []); 31 | 32 | return { ref, execute, reset, isEnabled: IS_CAPTCHA_ENABLED }; 33 | } 34 | 35 | const Captcha = forwardRef((props, ref) => { 36 | if (!IS_CAPTCHA_ENABLED) { 37 | return null; 38 | } 39 | 40 | return ( 41 | 42 | 48 | 49 | ); 50 | }); 51 | 52 | export default Captcha; 53 | -------------------------------------------------------------------------------- /components/schedule-sidebar-individual.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { useState, useEffect } from 'react'; 18 | import { useRouter } from 'next/router'; 19 | import { Stage } from '@lib/types'; 20 | import styles from './schedule-sidebar.module.css'; 21 | import TalkCard from './talk-card'; 22 | import { SHORT_DATE } from '@lib/constants'; 23 | 24 | type Props = { 25 | allStages: Stage[]; 26 | }; 27 | 28 | export default function ScheduleSidebar({ allStages }: Props) { 29 | const router = useRouter(); 30 | const [currentStageSlug, setCurrentStageSlug] = useState(router.query.slug); 31 | const currentStage = allStages.find((s: Stage) => s.slug === currentStageSlug); 32 | 33 | useEffect(() => { 34 | setCurrentStageSlug(router.query.slug); 35 | }, [router.query.slug]); 36 | 37 | return ( 38 |
39 |

Schedule

40 |

{SHORT_DATE}

41 | 42 |
43 | {currentStage?.schedule.map(talk => ( 44 | 45 | ))} 46 |
47 |
48 | ); 49 | } 50 | -------------------------------------------------------------------------------- /pages/schedule.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { GetStaticProps } from 'next'; 18 | 19 | import Page from '@components/page'; 20 | import Schedule from '@components/schedule'; 21 | import Layout from '@components/layout'; 22 | import Header from '@components/header'; 23 | 24 | import { getAllStages } from '@lib/cms-api'; 25 | import { Stage } from '@lib/types'; 26 | import { META_DESCRIPTION } from '@lib/constants'; 27 | 28 | type Props = { 29 | allStages: Stage[]; 30 | }; 31 | 32 | export default function SchedulePage({ allStages }: Props) { 33 | const meta = { 34 | title: 'Schedule - Virtual Event Starter Kit', 35 | description: META_DESCRIPTION 36 | }; 37 | 38 | return ( 39 | 40 | 41 |
42 | 43 | 44 | 45 | ); 46 | } 47 | 48 | export const getStaticProps: GetStaticProps = async () => { 49 | const allStages = await getAllStages(); 50 | 51 | return { 52 | props: { 53 | allStages: allStages || [] 54 | }, 55 | revalidate: 60 56 | }; 57 | }; 58 | -------------------------------------------------------------------------------- /pages/speakers.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | import { GetStaticProps } from 'next'; 18 | 19 | import Page from '@components/page'; 20 | import SpeakersGrid from '@components/speakers-grid'; 21 | import Layout from '@components/layout'; 22 | import Header from '@components/header'; 23 | 24 | import { getAllSpeakers } from '@lib/cms-api'; 25 | import { Speaker } from '@lib/types'; 26 | import { META_DESCRIPTION } from '@lib/constants'; 27 | 28 | type Props = { 29 | speakers: Speaker[]; 30 | }; 31 | 32 | export default function Speakers({ speakers }: Props) { 33 | const meta = { 34 | title: 'Speakers - Virtual Event Starter Kit', 35 | description: META_DESCRIPTION 36 | }; 37 | return ( 38 | 39 | 40 |
41 | 42 | 43 | 44 | ); 45 | } 46 | 47 | export const getStaticProps: GetStaticProps = async () => { 48 | const speakers = await getAllSpeakers(); 49 | 50 | return { 51 | props: { 52 | speakers: speakers || [] 53 | }, 54 | revalidate: 60 55 | }; 56 | }; 57 | -------------------------------------------------------------------------------- /components/hms/Loading.tsx: -------------------------------------------------------------------------------- 1 | import React from 'react'; 2 | 3 | interface Props { 4 | /** 5 | * Adjusts width and height 6 | */ 7 | size?: number | string; 8 | /** 9 | * Color of Loader 10 | */ 11 | color?: string; 12 | } 13 | 14 | type LoadingProps = Props & React.SVGProps; 15 | 16 | export const Loading = ({ size = 24, color = 'white', ...props }: LoadingProps) => ( 17 | 25 | 29 | 38 | 39 | 40 | ); 41 | -------------------------------------------------------------------------------- /components/ticket-mono.tsx: -------------------------------------------------------------------------------- 1 | /** 2 | * Copyright 2020 Vercel Inc. 3 | * 4 | * Licensed under the Apache License, Version 2.0 (the "License"); 5 | * you may not use this file except in compliance with the License. 6 | * You may obtain a copy of the License at 7 | * 8 | * http://www.apache.org/licenses/LICENSE-2.0 9 | * 10 | * Unless required by applicable law or agreed to in writing, software 11 | * distributed under the License is distributed on an "AS IS" BASIS, 12 | * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 | * See the License for the specific language governing permissions and 14 | * limitations under the License. 15 | */ 16 | 17 | export default function TicketMono() { 18 | return ( 19 | 26 | 32 | 38 | 39 | 40 | ); 41 | } 42 | --------------------------------------------------------------------------------