Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place.
Path: blob/master/src/packages/next/components/about/team.tsx
Views: 687
import { ReactNode } from "react";12import { Card, Col, Layout, List, Row, Space, Typography } from "antd";34import { COLORS } from "@cocalc/util/theme";56import Footer from "components/landing/footer";7import Header from "components/landing/header";8import Head from "components/landing/head";9import Image, { StaticImageData } from "components/landing/image";1011import { MAX_WIDTH } from "lib/config";12import { Customize, CustomizeType } from "lib/customize";1314import { TitleComponent } from "./title-component";1516interface ExperienceComponentProps {17experiences: Array<{18institution: string;19position: string;20timeframe?: string;21}>;22};2324const ExperienceComponent = (25{ experiences }: ExperienceComponentProps26) => (27<List28size="small"29dataSource={experiences}30renderItem={(item) => (31<List.Item>32<List.Item.Meta33title={34<>35<Typography.Text>{item.institution}</Typography.Text>36{item.timeframe && (37<span style={{color: COLORS.GRAY }}> · {item.timeframe} </span>38)}39</>40}41description={42<>43<em>{item.position}</em>44</>45}46/>47</List.Item>48)}49/>50);5152export interface TeamBioProps {53customize: CustomizeType;54givenName: string;55surname: string;56position: string;57positionShort: string;58positionTimeframe: string;59image?: string | StaticImageData;60imageAlt?: string;61background: ReactNode;62companyRole: ReactNode;63personalSection: ReactNode;64pastExperience: ExperienceComponentProps['experiences'];65}6667export const TeamBio = (props: TeamBioProps) => {68const fullName = `${props.givenName} ${props.surname}`;6970return (71<Customize value={props.customize}>72<Head title={`Team - ${fullName}`}/>73<Layout>74<Header page="about" subPage="team"/>75<Layout.Content76style={{77backgroundColor: "white",78}}79>80<div81style={{82maxWidth: MAX_WIDTH,83margin: "15px auto",84padding: "15px",85backgroundColor: "white",86}}87>88<Space direction="vertical" size="middle">89<TitleComponent name={`Meet ${fullName}.`} level={2}/>9091<Row wrap gutter={24}>92<Col xs={24} md={12}>93<Card94style={{95maxWidth: "512px"96}}97cover={props.image && (98<Image99src={props.image}100alt={props.imageAlt || fullName}101/>102)}103>104<Card.Meta105title={`${fullName}, ${props.positionShort}`}106description={props.positionTimeframe}107/>108</Card>109</Col>110<Col xs={24} md={12}>111<Typography.Title level={5}>112{props.position}113</Typography.Title>114115{props.companyRole}116117{props.personalSection}118</Col>119</Row>120121<Typography.Title level={4}>Background</Typography.Title>122{props.background}123124<Typography.Title level={4}>Previous Experience</Typography.Title>125<ExperienceComponent experiences={props.pastExperience} />126</Space>127</div>128<Footer/>129</Layout.Content>130</Layout>131</Customize>132)133}134135136