diff --git a/pwa/.prettierrc b/pwa/.prettierrc
index ea62a45491fcfe36c1b79928ef5d65abd176e504..fb95675f4f7dbeaccdb44630f259aa2c87595db3 100644
--- a/pwa/.prettierrc
+++ b/pwa/.prettierrc
@@ -2,7 +2,7 @@
"semi": false,
"trailingComma": "es5",
"singleQuote": true,
- "printWidth": 80,
+ "printWidth": 160,
"tabWidth": 4,
"useTabs": false,
"arrowParens": "avoid",
diff --git a/pwa/app/components/tabs/diagram.jsx b/pwa/app/components/tabs/diagram.jsx
new file mode 100644
index 0000000000000000000000000000000000000000..9159d2418a70c0f1a3fca0d517849b1bad851938
--- /dev/null
+++ b/pwa/app/components/tabs/diagram.jsx
@@ -0,0 +1,3 @@
+export default function Diagram() {
+ return
Diagram
+}
diff --git a/pwa/app/components/tabs/points.jsx b/pwa/app/components/tabs/points.jsx
new file mode 100644
index 0000000000000000000000000000000000000000..90766cfed1ab942664aabbd432801d143fc4a18b
--- /dev/null
+++ b/pwa/app/components/tabs/points.jsx
@@ -0,0 +1,3 @@
+export default function Points() {
+ return Points
+}
diff --git a/pwa/app/components/tabs/temporal.jsx b/pwa/app/components/tabs/temporal.jsx
new file mode 100644
index 0000000000000000000000000000000000000000..724d3b2a468d00d716ebf885c95ddfee39ff6c5d
--- /dev/null
+++ b/pwa/app/components/tabs/temporal.jsx
@@ -0,0 +1,3 @@
+export default function Temporal() {
+ return Temporal
+}
diff --git a/pwa/app/globals.css b/pwa/app/globals.css
index d4b5078586e291f9dc7d6f04a380aa3c1b52b84b..ba7afea7427baacac5c20f8c208718ce6204b0a9 100644
--- a/pwa/app/globals.css
+++ b/pwa/app/globals.css
@@ -1 +1,23 @@
@import 'tailwindcss';
+
+@keyframes grow {
+ 0% {
+ transform: scaleY(0);
+ opacity: 0;
+ }
+ 100% {
+ transform: scaleY(1);
+ opacity: 1;
+ }
+}
+
+h1 {
+ @apply text-2xl font-bold;
+}
+
+.bar {
+ transform-origin: bottom;
+ animation: grow 0.4s ease-out forwards;
+ opacity: 0;
+ transform: scaleY(0);
+}
diff --git a/pwa/app/page.tsx b/pwa/app/page.tsx
index c6de6ee03f97b41b43cc58b77cd926d06a1ec78b..993bcbaceab4bb435e5dadc444936ad6f15d1e94 100644
--- a/pwa/app/page.tsx
+++ b/pwa/app/page.tsx
@@ -1,21 +1,83 @@
+'use client'
+
+import { useState } from 'react'
+import { Search } from 'lucide-react'
+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,
+ diagram: Diagram,
+}
+
export default function Home() {
- const apiEntrypoint = process.env.NEXT_PUBLIC_ENTRYPOINT || "http://localhost:8000";
-
- return (
-
- FullStack Lab - REI 2022
- Analyse des taxes locales françaises
-
-
- );
+ const [activeTab, setActiveTab] = useState('temporal')
+ const ActiveComponent = tabComponents[activeTab]
+
+ return (
+
+
+
+
+
+
+
+
+
+
+
+
+
+ )
}
diff --git a/pwa/app/services/diagram.services.tsx b/pwa/app/services/diagram.services.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/pwa/app/services/points.services.tsx b/pwa/app/services/points.services.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/pwa/app/services/temporal.services.tsx b/pwa/app/services/temporal.services.tsx
new file mode 100644
index 0000000000000000000000000000000000000000..e69de29bb2d1d6434b8b29ae775ad8c2e48c5391
diff --git a/pwa/package-lock.json b/pwa/package-lock.json
index 4c2bd3393f5bbde764458c8218d9a75fc7457529..916116cdb1b0efe7feb7b9f9ddbdd1bab9813d96 100644
--- a/pwa/package-lock.json
+++ b/pwa/package-lock.json
@@ -9,6 +9,7 @@
"version": "0.1.0",
"dependencies": {
"@tailwindcss/postcss": "^4.1.18",
+ "lucide-react": "^0.563.0",
"next": "^15",
"postcss": "^8.5.6",
"react": "^19",
@@ -3797,6 +3798,15 @@
"loose-envify": "cli.js"
}
},
+ "node_modules/lucide-react": {
+ "version": "0.563.0",
+ "resolved": "https://registry.npmjs.org/lucide-react/-/lucide-react-0.563.0.tgz",
+ "integrity": "sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA==",
+ "license": "ISC",
+ "peerDependencies": {
+ "react": "^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0"
+ }
+ },
"node_modules/magic-string": {
"version": "0.30.21",
"resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.21.tgz",
diff --git a/pwa/package.json b/pwa/package.json
index e99606b8587a1c107eb0428925af87cc2cbaa0ab..8a88c39d592a42e54bfd5ea46f6901dc2f490f14 100644
--- a/pwa/package.json
+++ b/pwa/package.json
@@ -13,6 +13,7 @@
},
"dependencies": {
"@tailwindcss/postcss": "^4.1.18",
+ "lucide-react": "^0.563.0",
"next": "^15",
"postcss": "^8.5.6",
"react": "^19",
diff --git a/pwa/pnpm-lock.yaml b/pwa/pnpm-lock.yaml
index 1a751358bae3ec758c45d596aca9e8b4d3c59521..b4bdbb43c98ca419e6aee1dcc66732cc93dc3002 100644
--- a/pwa/pnpm-lock.yaml
+++ b/pwa/pnpm-lock.yaml
@@ -11,6 +11,9 @@ importers:
'@tailwindcss/postcss':
specifier: ^4.1.18
version: 4.1.18
+ lucide-react:
+ specifier: ^0.563.0
+ version: 0.563.0(react@19.2.4)
next:
specifier: ^15
version: 15.5.12(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
@@ -1141,6 +1144,11 @@ packages:
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
hasBin: true
+ lucide-react@0.563.0:
+ resolution: {integrity: sha512-8dXPB2GI4dI8jV4MgUDGBeLdGk8ekfqVZ0BdLcrRzocGgG75ltNEmWS+gE7uokKF/0oSUuczNDT+g9hFJ23FkA==}
+ peerDependencies:
+ react: ^16.5.1 || ^17.0.0 || ^18.0.0 || ^19.0.0
+
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
@@ -2636,6 +2644,10 @@ snapshots:
dependencies:
js-tokens: 4.0.0
+ lucide-react@0.563.0(react@19.2.4):
+ dependencies:
+ react: 19.2.4
+
magic-string@0.30.21:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5