diff --git a/pwa/app/components/molecules/Header.tsx b/pwa/app/components/molecules/Header.tsx new file mode 100644 index 0000000000000000000000000000000000000000..ef26b7b21686a4f822d4fc6ee57337c0f40fae9a --- /dev/null +++ b/pwa/app/components/molecules/Header.tsx @@ -0,0 +1,27 @@ +import { Search } from 'lucide-react' + +interface HeaderProps { + onToggleSidebar: () => void +} + +export default function Header({ onToggleSidebar }: HeaderProps) { + return ( +
+ +
+ + +
+
+ ) +} diff --git a/pwa/app/components/molecules/Sidebar.tsx b/pwa/app/components/molecules/Sidebar.tsx new file mode 100644 index 0000000000000000000000000000000000000000..55710353ad47c57efda39c31f81b4c32a5e49d96 --- /dev/null +++ b/pwa/app/components/molecules/Sidebar.tsx @@ -0,0 +1,50 @@ +const tabs = [ + { key: 'temporal', label: 'Temporal' }, + { key: 'points', label: 'Points' }, + { key: 'diagram', label: 'Diagram' }, +] as const + +export type TabKey = (typeof tabs)[number]['key'] + +interface SidebarProps { + activeTab: TabKey + onTabChange: (tab: TabKey) => void + open: boolean +} + +export default function Sidebar({ activeTab, onTabChange, open }: SidebarProps) { + return ( +
+
+
+
+
+
+
+
+

FullStack Lab

+
+ +
+

Visualisation

+
+ + +
+
+ ) +} diff --git a/pwa/app/components/tabs/points.tsx b/pwa/app/components/tabs/points.tsx index 3a005c6dbf29c0cc8024899852aaeb9dd6a4c7ed..29acdb31ade0cb7adcb3e9093c778a3f009a4607 100644 --- a/pwa/app/components/tabs/points.tsx +++ b/pwa/app/components/tabs/points.tsx @@ -100,6 +100,7 @@ export default function Points() { }, plugins: { legend: { display: false }, + datalabels: { display: false }, tooltip: { backgroundColor: '#212529', borderColor: '#3a3f44', diff --git a/pwa/app/page.tsx b/pwa/app/page.tsx index 4726df03517704387890e859fa89f8421492db27..183998e7152c7477df755d4bc317f8b43194dc54 100644 --- a/pwa/app/page.tsx +++ b/pwa/app/page.tsx @@ -1,19 +1,12 @@ 'use client' import { useState } from 'react' -import { Search } from 'lucide-react' +import Sidebar, { type TabKey } from './components/molecules/Sidebar' +import Header from './components/molecules/Header' import Temporal from './components/tabs/temporal' import Points from './components/tabs/points' import Diagram from './components/tabs/diagram' -const tabs = [ - { key: 'temporal', label: 'Temporal' }, - { key: 'points', label: 'Points' }, - { key: 'diagram', label: 'Diagram' }, -] as const - -type TabKey = (typeof tabs)[number]['key'] - const tabComponents: Record = { temporal: Temporal, points: Points, @@ -22,58 +15,21 @@ const tabComponents: Record = { export default function Home() { const [activeTab, setActiveTab] = useState('temporal') + const [sidebarOpen, setSidebarOpen] = useState(false) const ActiveComponent = tabComponents[activeTab] return ( -
-
-
-
-
-
-
-
-
-

FullStack Lab

-
- -
-

Visualisation

-
- - -
-
+
+ + {sidebarOpen && ( +
setSidebarOpen(false)} + /> + )}
-
-
-
-
-
-
-
- - -
-
+
setSidebarOpen(prev => !prev)} />
diff --git a/pwa/app/services/diagram.services.tsx b/pwa/app/services/diagram.services.ts similarity index 100% rename from pwa/app/services/diagram.services.tsx rename to pwa/app/services/diagram.services.ts diff --git a/pwa/app/services/points.services.tsx b/pwa/app/services/points.services.ts similarity index 100% rename from pwa/app/services/points.services.tsx rename to pwa/app/services/points.services.ts diff --git a/pwa/app/services/temporal.services.tsx b/pwa/app/services/temporal.services.ts similarity index 99% rename from pwa/app/services/temporal.services.tsx rename to pwa/app/services/temporal.services.ts index 526e4a7bcadd1c0c7bff2d55c691a9e40cf28a98..b6ff8e28ccec47d1bdbf7b6241a39b11895a37bf 100644 --- a/pwa/app/services/temporal.services.tsx +++ b/pwa/app/services/temporal.services.ts @@ -14,7 +14,7 @@ export type TimeSeriesData = Record export async function getTimeSeries(regions: string[], taxType: string, startYear?: number, endYear?: number): Promise { const params = new URLSearchParams({ tax_type: taxType }) - if (regions.length > 0) params.set('region', regions.join(',')) + if (regions.length > 0) params.set('region', regions.join(',')) if (startYear) params.set('start_year', String(startYear)) if (endYear) params.set('end_year', String(endYear)) const res = await fetch(`/api/taxes/timeseries?${params}`)