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 (
+
+
+
+
+
+
+
+
+
+ )
+}
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 (
-
-
-
-
-
-
-
-
-
-
+
+
+ {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}`)