From c852aa92f84d0c18b1bd7361163498a542461d45 Mon Sep 17 00:00:00 2001
From: Pawel Zelawski <pawel.zelawski@outlook.com>
Date: Thu, 10 Apr 2025 10:55:22 +0200
Subject: feat(client): implement react frontend application

- Created main entry point `src/client/main.tsx`.
- Created main `App` component `src/client/App.tsx`.
- Implemented state management (`initial`, `waiting`, `success`, `failed`) using `useState`.
- Implemented `handleStart` to call backend `/api/digiid/start` and transition to `waiting` state.
- Implemented `useEffect` hook for polling backend `/api/digiid/status/:sessionId` in `waiting` state.
    - Updates UI state based on polling response (`success`/`failed`).
    - Handles polling errors and cleanup.
- Implemented `handleReset` to return to `initial` state.
- Implemented views for each state:
    - `initial`: Welcome message, Start button.
    - `waiting`: QR code display, status message, Cancel button.
    - `success`: Success message, verified address, address type, Start Over button.
    - `failed`: Failure message, error details, Try Again button.
- Added client-side address type helper `getDigiByteAddressType` in `src/client/utils.ts`.
- Added basic CSS styling in `src/client/index.css` with light/dark mode support.
- Added frontend-related scripts (`dev:frontend`, `dev`, `build`, `lint`, `preview`) to `package.json`.
- Fixed linter type issue with `setInterval` return value.
---
 src/client/main.tsx | 10 ++++++++++
 1 file changed, 10 insertions(+)
 create mode 100644 src/client/main.tsx

(limited to 'src/client/main.tsx')

diff --git a/src/client/main.tsx b/src/client/main.tsx
new file mode 100644
index 0000000..b895c80
--- /dev/null
+++ b/src/client/main.tsx
@@ -0,0 +1,10 @@
+import React from 'react';
+import ReactDOM from 'react-dom/client';
+import App from './App';
+import './index.css'; // We'll create this file later for styles
+
+ReactDOM.createRoot(document.getElementById('root')!).render(
+  <React.StrictMode>
+    <App />
+  </React.StrictMode>
+); 
\ No newline at end of file
-- 
cgit v1.2.3

