Add initial cap table

This commit is contained in:
Ephraim Atta-Duncan
2023-08-06 22:46:20 +00:00
committed by Mythie
parent f882be4338
commit 27b42814d8
5 changed files with 82 additions and 1 deletions

View File

@ -0,0 +1,57 @@
'use client';
import { HTMLAttributes } from 'react';
import { Cell, Pie, PieChart } from 'recharts';
import { cn } from '@documenso/ui/lib/utils';
const data = [
{ name: 'Founders', percentage: 75.5 },
{ name: 'Investors', percentage: 14.5 },
{ name: 'Team Pool', percentage: 10 },
];
const COLORS = ['#7fd843', '#a2e771', '#c6f2a4'];
const RADIAN = Math.PI / 180;
const renderCustomizedLabel = ({ cx, cy, midAngle, innerRadius, outerRadius, percent, index }) => {
const radius = innerRadius + (outerRadius - innerRadius) * 0.25;
const x = cx + radius * Math.cos(-midAngle * RADIAN);
const y = cy + radius * Math.sin(-midAngle * RADIAN);
return (
<text x={x} y={y} fill="white" textAnchor={x > cx ? 'start' : 'end'} dominantBaseline="central">
{`${(percent * 100).toFixed(1)}%`}
</text>
);
};
export type CapTableProps = HTMLAttributes<HTMLDivElement>;
export const CapTable = ({ className, ...props }: CapTableProps) => {
return (
<div className={cn('flex flex-col', className)} {...props}>
<h3 className="px-4 text-lg font-semibold">Cap Table</h3>
<div className="border-border mt-2.5 flex flex-1 items-center justify-center rounded-2xl border shadow-sm hover:shadow">
<PieChart width={400} height={400}>
<Pie
data={data}
cx="50%"
cy="50%"
labelLine={false}
label={renderCustomizedLabel}
outerRadius={180}
innerRadius={100}
fill="#8884d8"
dataKey="percentage"
>
{data.map((entry, index) => (
<Cell key={`cell-${index}`} fill={COLORS[index % COLORS.length]} />
))}
</Pie>
</PieChart>
</div>
</div>
);
};

View File

@ -93,3 +93,18 @@ export const SALARY_BANDS = [
salary: 80_000, salary: 80_000,
}, },
]; ];
export const CAP_TABLE = [
{
shareholder: 'Founders',
percentage: '75.5',
},
{
shareholder: 'Investors',
percentage: '14.5',
},
{
shareholder: 'Team Pool',
percentage: '10',
},
];

View File

@ -3,6 +3,7 @@ import { z } from 'zod';
import { MetricCard } from '~/app/(marketing)/open/metric-card'; import { MetricCard } from '~/app/(marketing)/open/metric-card';
import { SalaryBands } from '~/app/(marketing)/open/salary-bands'; import { SalaryBands } from '~/app/(marketing)/open/salary-bands';
import { CapTable } from './cap-table';
import { FundingRaised } from './funding-raised'; import { FundingRaised } from './funding-raised';
import { TeamMembers } from './team-members'; import { TeamMembers } from './team-members';
@ -85,6 +86,8 @@ export default async function OpenPage() {
<FundingRaised className="col-span-12 lg:col-span-6" /> <FundingRaised className="col-span-12 lg:col-span-6" />
<CapTable className="col-span-12" />
<div className="col-span-12 mt-12 flex flex-col items-center justify-center"> <div className="col-span-12 mt-12 flex flex-col items-center justify-center">
<h2 className="text-2xl font-bold">Where's the rest?</h2> <h2 className="text-2xl font-bold">Where's the rest?</h2>

3
package-lock.json generated
View File

@ -9,6 +9,9 @@
"apps/*", "apps/*",
"packages/*" "packages/*"
], ],
"dependencies": {
"recharts": "^2.7.2"
},
"devDependencies": { "devDependencies": {
"dotenv": "^16.0.3", "dotenv": "^16.0.3",
"dotenv-cli": "^7.2.1", "dotenv-cli": "^7.2.1",

View File

@ -20,5 +20,8 @@
"workspaces": [ "workspaces": [
"apps/*", "apps/*",
"packages/*" "packages/*"
] ],
"dependencies": {
"recharts": "^2.7.2"
}
} }