diff --git a/apps/portal/src/components/global/CompaniesTypeahead.tsx b/apps/portal/src/components/shared/CompaniesTypeahead.tsx similarity index 100% rename from apps/portal/src/components/global/CompaniesTypeahead.tsx rename to apps/portal/src/components/shared/CompaniesTypeahead.tsx diff --git a/apps/portal/src/components/shared/MonthYearPicker.tsx b/apps/portal/src/components/shared/MonthYearPicker.tsx new file mode 100644 index 00000000..bb6539f1 --- /dev/null +++ b/apps/portal/src/components/shared/MonthYearPicker.tsx @@ -0,0 +1,96 @@ +import { Select } from '@tih/ui'; + +type Month = 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12; + +export type MonthYear = Readonly<{ + month: Month; + year: number; +}>; + +type Props = Readonly<{ + onChange: (value: MonthYear) => void; + value: MonthYear; +}>; + +const MONTH_OPTIONS = [ + { + label: 'January', + value: 1, + }, + { + label: 'February', + value: 2, + }, + { + label: 'March', + value: 3, + }, + { + label: 'April', + value: 4, + }, + { + label: 'May', + value: 5, + }, + { + label: 'June', + value: 6, + }, + { + label: 'July', + value: 7, + }, + { + label: 'August', + value: 8, + }, + { + label: 'September', + value: 9, + }, + { + label: 'October', + value: 10, + }, + { + label: 'November', + value: 11, + }, + { + label: 'December', + value: 12, + }, +]; + +const NUM_YEARS = 5; +const YEAR_OPTIONS = Array.from({ length: NUM_YEARS }, (_, i) => { + const year = new Date().getFullYear() - NUM_YEARS + i + 1; + return { + label: String(year), + value: year, + }; +}); + +export default function MonthYearPicker({ value, onChange }: Props) { + return ( +
+ + onChange({ month: value.month, year: Number(newYear) }) + } + /> +
+ ); +} diff --git a/apps/portal/src/pages/index.tsx b/apps/portal/src/pages/index.tsx index 368ce97b..1a8a1b64 100644 --- a/apps/portal/src/pages/index.tsx +++ b/apps/portal/src/pages/index.tsx @@ -1,11 +1,18 @@ import { useState } from 'react'; import type { TypeaheadOption } from '@tih/ui'; +import { HorizontalDivider } from '@tih/ui'; -import CompaniesTypeahead from '~/components/global/CompaniesTypeahead'; +import CompaniesTypeahead from '~/components/shared/CompaniesTypeahead'; +import type { MonthYear } from '~/components/shared/MonthYearPicker'; +import MonthYearPicker from '~/components/shared/MonthYearPicker'; export default function HomePage() { const [selectedCompany, setSelectedCompany] = useState(null); + const [monthYear, setMonthYear] = useState({ + month: new Date().getMonth() + 1, + year: new Date().getFullYear(), + }); return (
@@ -18,6 +25,8 @@ export default function HomePage() { onSelect={(option) => setSelectedCompany(option)} />
{JSON.stringify(selectedCompany, null, 2)}
+ +