From 5d44e24c9583c5df0ca279593b462086039ebfd4 Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 2 Apr 2026 01:24:00 +0000
Subject: [PATCH 1/2] Initial plan
From b3caeb8ce58900630396212ea607854223db106e Mon Sep 17 00:00:00 2001
From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com>
Date: Thu, 2 Apr 2026 01:27:56 +0000
Subject: [PATCH 2/2] feat: remove auth, store, redux, and axios from template
Agent-Logs-Url: https://github.com/zihluwang/delta-force-firearm-modification-codes/sessions/3477dccf-d002-4dda-ad39-4768da36bb9e
Co-authored-by: zihluwang <47817169+zihluwang@users.noreply.github.com>
---
.env.example | 2 -
package.json | 4 -
pnpm-lock.yaml | 306 -----------------------
src/components/protected-route/index.tsx | 40 ---
src/main.tsx | 11 +-
src/store/auth-slice/index.ts | 63 -----
src/store/index.ts | 49 ----
7 files changed, 2 insertions(+), 473 deletions(-)
delete mode 100644 src/components/protected-route/index.tsx
delete mode 100644 src/store/auth-slice/index.ts
delete mode 100644 src/store/index.ts
diff --git a/.env.example b/.env.example
index 7549ed2..e69de29 100644
--- a/.env.example
+++ b/.env.example
@@ -1,2 +0,0 @@
-# Redux Persistence Location
-VITE_REDUX_STORAGE=local
\ No newline at end of file
diff --git a/package.json b/package.json
index 932071e..e8bf12b 100644
--- a/package.json
+++ b/package.json
@@ -12,16 +12,12 @@
"predeploy": "pnpm build"
},
"dependencies": {
- "@reduxjs/toolkit": "^2.11.2",
"@tailwindcss/vite": "^4.2.2",
- "axios": "^1.13.6",
"dayjs": "^1.11.20",
"react": "^19.2.4",
"react-dom": "^19.2.4",
- "react-redux": "^9.2.0",
"react-router": "^7.13.1",
"react-router-dom": "^7.13.1",
- "redux-persist": "^6.0.0",
"tailwindcss": "^4.2.2"
},
"devDependencies": {
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 421c51b..8ba8497 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -8,15 +8,9 @@ importers:
.:
dependencies:
- '@reduxjs/toolkit':
- specifier: ^2.11.2
- version: 2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1))(react@19.2.4)
'@tailwindcss/vite':
specifier: ^4.2.2
version: 4.2.2(vite@8.0.1(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.6.1))
- axios:
- specifier: ^1.13.6
- version: 1.13.6
dayjs:
specifier: ^1.11.20
version: 1.11.20
@@ -26,18 +20,12 @@ importers:
react-dom:
specifier: ^19.2.4
version: 19.2.4(react@19.2.4)
- react-redux:
- specifier: ^9.2.0
- version: 9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1)
react-router:
specifier: ^7.13.1
version: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
react-router-dom:
specifier: ^7.13.1
version: 7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4)
- redux-persist:
- specifier: ^6.0.0
- version: 6.0.0(react@19.2.4)(redux@5.0.1)
tailwindcss:
specifier: ^4.2.2
version: 4.2.2
@@ -256,17 +244,6 @@ packages:
'@oxc-project/types@0.120.0':
resolution: {integrity: sha512-k1YNu55DuvAip/MGE1FTsIuU3FUCn6v/ujG9V7Nq5Df/kX2CWb13hhwD0lmJGMGqE+bE1MXvv9SZVnMzEXlWcg==}
- '@reduxjs/toolkit@2.11.2':
- resolution: {integrity: sha512-Kd6kAHTA6/nUpp8mySPqj3en3dm0tdMIgbttnQ1xFMVpufoj+ADi8pXLBsd4xzTRHQa7t/Jv8W5UnCuW4kuWMQ==}
- peerDependencies:
- react: ^16.9.0 || ^17.0.0 || ^18 || ^19
- react-redux: ^7.2.1 || ^8.1.3 || ^9.0.0
- peerDependenciesMeta:
- react:
- optional: true
- react-redux:
- optional: true
-
'@rolldown/binding-android-arm64@1.0.0-rc.10':
resolution: {integrity: sha512-jOHxwXhxmFKuXztiu1ORieJeTbx5vrTkcOkkkn2d35726+iwhrY1w/+nYY/AGgF12thg33qC3R1LMBF5tHTZHg==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -368,12 +345,6 @@ packages:
'@rolldown/pluginutils@1.0.0-rc.7':
resolution: {integrity: sha512-qujRfC8sFVInYSPPMLQByRh7zhwkGFS4+tyMQ83srV1qrxL4g8E2tyxVVyxd0+8QeBM1mIk9KbWxkegRr76XzA==}
- '@standard-schema/spec@1.1.0':
- resolution: {integrity: sha512-l2aFy5jALhniG5HgqrD6jXLi/rUWrKvqN/qJx6yoJsgKhblVd+iqqU4RCXavm/jPityDo5TCvKMnpjKnOriy0w==}
-
- '@standard-schema/utils@0.3.0':
- resolution: {integrity: sha512-e7Mew686owMaPJVNNLs55PUvgz371nKgwsc4vxE49zsODpJEnxgxRo2y/OKrqueavXgZNMDVj3DdHFlaSAeU8g==}
-
'@tailwindcss/node@4.2.2':
resolution: {integrity: sha512-pXS+wJ2gZpVXqFaUEjojq7jzMpTGf8rU6ipJz5ovJV6PUGmlJ+jvIwGrzdHdQ80Sg+wmQxUFuoW1UAAwHNEdFA==}
@@ -482,9 +453,6 @@ packages:
'@types/react@19.2.14':
resolution: {integrity: sha512-ilcTH/UniCkMdtexkoCN0bI7pMcJDvmQFPvuPvmEaYA/NSfFTAgdUSLAoVjaRJm7+6PvcM+q1zYOwS4wTYMF9w==}
- '@types/use-sync-external-store@0.0.6':
- resolution: {integrity: sha512-zFDAD+tlpf2r4asuHEj0XH6pY6i0g5NeAHPn+15wk3BV6JA69eERFXC1gyGThDkVa1zCyKr5jox1+2LbV/AMLg==}
-
'@vitejs/plugin-react@6.0.1':
resolution: {integrity: sha512-l9X/E3cDb+xY3SWzlG1MOGt2usfEHGMNIaegaUGFsLkb3RCn/k8/TOXBcab+OndDI4TBtktT8/9BwwW8Vi9KUQ==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -498,20 +466,6 @@ packages:
babel-plugin-react-compiler:
optional: true
- asynckit@0.4.0:
- resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==}
-
- axios@1.13.6:
- resolution: {integrity: sha512-ChTCHMouEe2kn713WHbQGcuYrr6fXTBiu460OTwWrWob16g1bXn4vtz07Ope7ewMozJAnEquLk5lWQWtBig9DQ==}
-
- call-bind-apply-helpers@1.0.2:
- resolution: {integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==}
- engines: {node: '>= 0.4'}
-
- combined-stream@1.0.8:
- resolution: {integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==}
- engines: {node: '>= 0.8'}
-
cookie@1.1.1:
resolution: {integrity: sha512-ei8Aos7ja0weRpFzJnEA9UHJ/7XQmqglbRwnf2ATjcB9Wq874VKH9kfjjirM6UhU2/E5fFYadylyhFldcqSidQ==}
engines: {node: '>=18'}
@@ -522,38 +476,14 @@ packages:
dayjs@1.11.20:
resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==}
- delayed-stream@1.0.0:
- resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==}
- engines: {node: '>=0.4.0'}
-
detect-libc@2.1.2:
resolution: {integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==}
engines: {node: '>=8'}
- dunder-proto@1.0.1:
- resolution: {integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==}
- engines: {node: '>= 0.4'}
-
enhanced-resolve@5.20.1:
resolution: {integrity: sha512-Qohcme7V1inbAfvjItgw0EaxVX5q2rdVEZHRBrEQdRZTssLDGsL8Lwrznl8oQ/6kuTJONLaDcGjkNP247XEhcA==}
engines: {node: '>=10.13.0'}
- es-define-property@1.0.1:
- resolution: {integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==}
- engines: {node: '>= 0.4'}
-
- es-errors@1.3.0:
- resolution: {integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==}
- engines: {node: '>= 0.4'}
-
- es-object-atoms@1.1.1:
- resolution: {integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==}
- engines: {node: '>= 0.4'}
-
- es-set-tostringtag@2.1.0:
- resolution: {integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==}
- engines: {node: '>= 0.4'}
-
esbuild@0.27.4:
resolution: {integrity: sha512-Rq4vbHnYkK5fws5NF7MYTU68FPRE1ajX7heQ/8QXXWqNgqqJ/GkmmyxIzUnf2Sr/bakf8l54716CcMGHYhMrrQ==}
engines: {node: '>=18'}
@@ -568,61 +498,18 @@ packages:
picomatch:
optional: true
- follow-redirects@1.15.11:
- resolution: {integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==}
- engines: {node: '>=4.0'}
- peerDependencies:
- debug: '*'
- peerDependenciesMeta:
- debug:
- optional: true
-
- form-data@4.0.5:
- resolution: {integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==}
- engines: {node: '>= 6'}
-
fsevents@2.3.3:
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
- function-bind@1.1.2:
- resolution: {integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==}
-
- get-intrinsic@1.3.0:
- resolution: {integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==}
- engines: {node: '>= 0.4'}
-
- get-proto@1.0.1:
- resolution: {integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==}
- engines: {node: '>= 0.4'}
-
globals@16.5.0:
resolution: {integrity: sha512-c/c15i26VrJ4IRt5Z89DnIzCGDn9EcebibhAOjw5ibqEHsE1wLUgkPn9RDmNcUKyU87GeaL633nyJ+pplFR2ZQ==}
engines: {node: '>=18'}
- gopd@1.2.0:
- resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==}
- engines: {node: '>= 0.4'}
-
graceful-fs@4.2.11:
resolution: {integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==}
- has-symbols@1.1.0:
- resolution: {integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==}
- engines: {node: '>= 0.4'}
-
- has-tostringtag@1.0.2:
- resolution: {integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==}
- engines: {node: '>= 0.4'}
-
- hasown@2.0.2:
- resolution: {integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==}
- engines: {node: '>= 0.4'}
-
- immer@11.1.4:
- resolution: {integrity: sha512-XREFCPo6ksxVzP4E0ekD5aMdf8WMwmdNaz6vuvxgI40UaEiu6q3p8X52aU6GdyvLY3XXX/8R7JOTXStz/nBbRw==}
-
jiti@2.6.1:
resolution: {integrity: sha512-ekilCSN1jwRvIbgeg/57YFh8qQDNbwDb9xT/qu2DAHbFFZUicIl4ygVaAvzveMhMVr3LnpSKTNnwt8PoOfmKhQ==}
hasBin: true
@@ -704,18 +591,6 @@ packages:
magic-string@0.30.21:
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
- math-intrinsics@1.1.0:
- resolution: {integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==}
- engines: {node: '>= 0.4'}
-
- mime-db@1.52.0:
- resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==}
- engines: {node: '>= 0.6'}
-
- mime-types@2.1.35:
- resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==}
- engines: {node: '>= 0.6'}
-
nanoid@3.3.11:
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
@@ -737,26 +612,11 @@ packages:
engines: {node: '>=14'}
hasBin: true
- proxy-from-env@1.1.0:
- resolution: {integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==}
-
react-dom@19.2.4:
resolution: {integrity: sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==}
peerDependencies:
react: ^19.2.4
- react-redux@9.2.0:
- resolution: {integrity: sha512-ROY9fvHhwOD9ySfrF0wmvu//bKCQ6AeZZq1nJNtbDC+kk5DuSuNX/n6YWYF/SYy7bSba4D4FSz8DJeKY/S/r+g==}
- peerDependencies:
- '@types/react': ^18.2.25 || ^19
- react: ^18.0 || ^19
- redux: ^5.0.0
- peerDependenciesMeta:
- '@types/react':
- optional: true
- redux:
- optional: true
-
react-router-dom@7.13.1:
resolution: {integrity: sha512-UJnV3Rxc5TgUPJt2KJpo1Jpy0OKQr0AjgbZzBFjaPJcFOb2Y8jA5H3LT8HUJAiRLlWrEXWHbF1Z4SCZaQjWDHw==}
engines: {node: '>=20.0.0'}
@@ -778,26 +638,6 @@ packages:
resolution: {integrity: sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==}
engines: {node: '>=0.10.0'}
- redux-persist@6.0.0:
- resolution: {integrity: sha512-71LLMbUq2r02ng2We9S215LtPu3fY0KgaGE0k8WRgl6RkqxtGfl7HUozz1Dftwsb0D/5mZ8dwAaPbtnzfvbEwQ==}
- peerDependencies:
- react: '>=16'
- redux: '>4.0.0'
- peerDependenciesMeta:
- react:
- optional: true
-
- redux-thunk@3.1.0:
- resolution: {integrity: sha512-NW2r5T6ksUKXCabzhL9z+h206HQw/NJkcLm1GPImRQ8IzfXwRGqjVhKJGauHirT0DAuyy6hjdnMZaRoAcy0Klw==}
- peerDependencies:
- redux: ^5.0.0
-
- redux@5.0.1:
- resolution: {integrity: sha512-M9/ELqF6fy8FwmkpnF0S3YKOqMyoWJ4+CS5Efg2ct3oY9daQvd/Pc71FpGZsVsbl3Cpb+IIcjBDUnnyBdQbq4w==}
-
- reselect@5.1.1:
- resolution: {integrity: sha512-K/BG6eIky/SBpzfHZv/dd+9JBFiS4SWV7FIujVyJRux6e45+73RaUHXLmIR1f7WOMaQ0U1km6qwklRQxpJJY0w==}
-
rolldown@1.0.0-rc.10:
resolution: {integrity: sha512-q7j6vvarRFmKpgJUT8HCAUljkgzEp4LAhPlJUvQhA5LA1SUL36s5QCysMutErzL3EbNOZOkoziSx9iZC4FddKA==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -835,11 +675,6 @@ packages:
undici-types@6.21.0:
resolution: {integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==}
- use-sync-external-store@1.6.0:
- resolution: {integrity: sha512-Pp6GSwGP/NrPIrxVFAIkOQeyw8lFenOHijQWkUTrDvrF4ALqylP2C/KCkeS9dpUM3KvYRQhna5vt7IL95+ZQ9w==}
- peerDependencies:
- react: ^16.8.0 || ^17.0.0 || ^18.0.0 || ^19.0.0
-
vite@8.0.1:
resolution: {integrity: sha512-wt+Z2qIhfFt85uiyRt5LPU4oVEJBXj8hZNWKeqFG4gRG/0RaRGJ7njQCwzFVjO+v4+Ipmf5CY7VdmZRAYYBPHw==}
engines: {node: ^20.19.0 || >=22.12.0}
@@ -1007,18 +842,6 @@ snapshots:
'@oxc-project/types@0.120.0': {}
- '@reduxjs/toolkit@2.11.2(react-redux@9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1))(react@19.2.4)':
- dependencies:
- '@standard-schema/spec': 1.1.0
- '@standard-schema/utils': 0.3.0
- immer: 11.1.4
- redux: 5.0.1
- redux-thunk: 3.1.0(redux@5.0.1)
- reselect: 5.1.1
- optionalDependencies:
- react: 19.2.4
- react-redux: 9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1)
-
'@rolldown/binding-android-arm64@1.0.0-rc.10':
optional: true
@@ -1070,10 +893,6 @@ snapshots:
'@rolldown/pluginutils@1.0.0-rc.7': {}
- '@standard-schema/spec@1.1.0': {}
-
- '@standard-schema/utils@0.3.0': {}
-
'@tailwindcss/node@4.2.2':
dependencies:
'@jridgewell/remapping': 2.3.5
@@ -1159,68 +978,24 @@ snapshots:
dependencies:
csstype: 3.2.3
- '@types/use-sync-external-store@0.0.6': {}
-
'@vitejs/plugin-react@6.0.1(vite@8.0.1(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.6.1))':
dependencies:
'@rolldown/pluginutils': 1.0.0-rc.7
vite: 8.0.1(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.6.1)
- asynckit@0.4.0: {}
-
- axios@1.13.6:
- dependencies:
- follow-redirects: 1.15.11
- form-data: 4.0.5
- proxy-from-env: 1.1.0
- transitivePeerDependencies:
- - debug
-
- call-bind-apply-helpers@1.0.2:
- dependencies:
- es-errors: 1.3.0
- function-bind: 1.1.2
-
- combined-stream@1.0.8:
- dependencies:
- delayed-stream: 1.0.0
-
cookie@1.1.1: {}
csstype@3.2.3: {}
dayjs@1.11.20: {}
- delayed-stream@1.0.0: {}
-
detect-libc@2.1.2: {}
- dunder-proto@1.0.1:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-errors: 1.3.0
- gopd: 1.2.0
-
enhanced-resolve@5.20.1:
dependencies:
graceful-fs: 4.2.11
tapable: 2.3.0
- es-define-property@1.0.1: {}
-
- es-errors@1.3.0: {}
-
- es-object-atoms@1.1.1:
- dependencies:
- es-errors: 1.3.0
-
- es-set-tostringtag@2.1.0:
- dependencies:
- es-errors: 1.3.0
- get-intrinsic: 1.3.0
- has-tostringtag: 1.0.2
- hasown: 2.0.2
-
esbuild@0.27.4:
optionalDependencies:
'@esbuild/aix-ppc64': 0.27.4
@@ -1255,57 +1030,13 @@ snapshots:
optionalDependencies:
picomatch: 4.0.3
- follow-redirects@1.15.11: {}
-
- form-data@4.0.5:
- dependencies:
- asynckit: 0.4.0
- combined-stream: 1.0.8
- es-set-tostringtag: 2.1.0
- hasown: 2.0.2
- mime-types: 2.1.35
-
fsevents@2.3.3:
optional: true
- function-bind@1.1.2: {}
-
- get-intrinsic@1.3.0:
- dependencies:
- call-bind-apply-helpers: 1.0.2
- es-define-property: 1.0.1
- es-errors: 1.3.0
- es-object-atoms: 1.1.1
- function-bind: 1.1.2
- get-proto: 1.0.1
- gopd: 1.2.0
- has-symbols: 1.1.0
- hasown: 2.0.2
- math-intrinsics: 1.1.0
-
- get-proto@1.0.1:
- dependencies:
- dunder-proto: 1.0.1
- es-object-atoms: 1.1.1
-
globals@16.5.0: {}
- gopd@1.2.0: {}
-
graceful-fs@4.2.11: {}
- has-symbols@1.1.0: {}
-
- has-tostringtag@1.0.2:
- dependencies:
- has-symbols: 1.1.0
-
- hasown@2.0.2:
- dependencies:
- function-bind: 1.1.2
-
- immer@11.1.4: {}
-
jiti@2.6.1: {}
lightningcss-android-arm64@1.32.0:
@@ -1361,14 +1092,6 @@ snapshots:
dependencies:
'@jridgewell/sourcemap-codec': 1.5.5
- math-intrinsics@1.1.0: {}
-
- mime-db@1.52.0: {}
-
- mime-types@2.1.35:
- dependencies:
- mime-db: 1.52.0
-
nanoid@3.3.11: {}
picocolors@1.1.1: {}
@@ -1383,22 +1106,11 @@ snapshots:
prettier@3.8.1: {}
- proxy-from-env@1.1.0: {}
-
react-dom@19.2.4(react@19.2.4):
dependencies:
react: 19.2.4
scheduler: 0.27.0
- react-redux@9.2.0(@types/react@19.2.14)(react@19.2.4)(redux@5.0.1):
- dependencies:
- '@types/use-sync-external-store': 0.0.6
- react: 19.2.4
- use-sync-external-store: 1.6.0(react@19.2.4)
- optionalDependencies:
- '@types/react': 19.2.14
- redux: 5.0.1
-
react-router-dom@7.13.1(react-dom@19.2.4(react@19.2.4))(react@19.2.4):
dependencies:
react: 19.2.4
@@ -1415,20 +1127,6 @@ snapshots:
react@19.2.4: {}
- redux-persist@6.0.0(react@19.2.4)(redux@5.0.1):
- dependencies:
- redux: 5.0.1
- optionalDependencies:
- react: 19.2.4
-
- redux-thunk@3.1.0(redux@5.0.1):
- dependencies:
- redux: 5.0.1
-
- redux@5.0.1: {}
-
- reselect@5.1.1: {}
-
rolldown@1.0.0-rc.10:
dependencies:
'@oxc-project/types': 0.120.0
@@ -1472,10 +1170,6 @@ snapshots:
undici-types@6.21.0: {}
- use-sync-external-store@1.6.0(react@19.2.4):
- dependencies:
- react: 19.2.4
-
vite@8.0.1(@types/node@22.19.15)(esbuild@0.27.4)(jiti@2.6.1):
dependencies:
lightningcss: 1.32.0
diff --git a/src/components/protected-route/index.tsx b/src/components/protected-route/index.tsx
deleted file mode 100644
index c0d617b..0000000
--- a/src/components/protected-route/index.tsx
+++ /dev/null
@@ -1,40 +0,0 @@
-import { Navigate, Outlet, useLocation } from "react-router"
-import { useAppSelector } from "@/store"
-
-/**
- * Renders child routes if the user is unauthenticated, otherwise redirects authenticated users to
- * the root path.
- *
- * This component's logic allows unauthenticated users to access nested routes rendered
- * via `Outlet`. Conversely, if a user is authenticated, they are redirected to the application's
- * root path (`""`). This behaviour is inverse to the typical implementation of a 'protected route',
- * which usually grants access to authenticated users and redirects unauthenticated users to a
- * login page.
- */
-export default function ProtectedRoute() {
- /**
- * Retrieves the authentication status from the Redux store.
- */
- const isAuthenticated = useAppSelector((state) => state.auth.isAuthenticated)
-
- /**
- * Retrieves the current location object from React Router.
- */
- const location = useLocation()
-
- if (isAuthenticated) {
- /**
- * Redirects authenticated users to the application's root path (`""`).
- *
- * The redirection includes the current location's state, allowing the
- * target route to know where the user was redirected from. The
- * `replace` prop ensures the current history entry is replaced.
- */
- return
- }
-
- /**
- * Renders the child routes if the user is unauthenticated.
- */
- return
-}
diff --git a/src/main.tsx b/src/main.tsx
index bd293ad..8f0f640 100644
--- a/src/main.tsx
+++ b/src/main.tsx
@@ -1,23 +1,16 @@
import { StrictMode } from "react"
import { createRoot } from "react-dom/client"
-import { Provider as ReduxProvider } from "react-redux"
-import { PersistGate } from "redux-persist/integration/react"
import { RouterProvider } from "react-router-dom"
import "@/init"
-import store, { persistor } from "@/store"
import router from "@/router"
import "./index.css"
/**
* Main application entry point.
- * Sets up the React app with Redux store and React Router.
+ * Sets up the React app with React Router.
*/
createRoot(document.getElementById("root")!).render(
-
-
-
-
-
+
,
)
diff --git a/src/store/auth-slice/index.ts b/src/store/auth-slice/index.ts
deleted file mode 100644
index c3dbe08..0000000
--- a/src/store/auth-slice/index.ts
+++ /dev/null
@@ -1,63 +0,0 @@
-import { createSlice } from "@reduxjs/toolkit"
-
-/**
- * Defines the structure of the authentication state within the Redux store.
- */
-interface AuthState {
- /**
- * Indicates whether a user is currently authenticated.
- * @type {boolean}
- */
- isAuthenticated: boolean
-}
-
-/**
- * The initial state for the authentication slice.
- *
- * By default, the user is considered unauthenticated.
- *
- * @constant
- * @type {AuthState}
- */
-const initialState: AuthState = {
- isAuthenticated: false
-}
-
-/**
- * A Redux Toolkit slice for managing authentication-related state.
- *
- * This slice includes the reducer, actions, and initial state for the authentication feature.
- * Currently, it only defines the initial state and no specific reducers, meaning it only
- * holds the `isAuthenticated` flag.
- */
-const authSlice = createSlice({
- /**
- * The name of the slice, used to generate action types.
- * @type {string}
- */
- name: "auth",
- /**
- * The initial state for this slice.
- * @type {AuthState}
- */
- initialState,
- /**
- * An object of reducer functions. Currently empty, meaning no actions are explicitly defined for
- * state modification within this slice.
- * @type {object}
- */
- reducers: {
-
- }
-})
-
-// export const { } = authSlice.actions
-
-/**
- * The reducer function for the authentication slice.
- *
- * This is the default export and should be combined with other reducers in the Redux store.
- *
- * @default
- */
-export default authSlice.reducer
\ No newline at end of file
diff --git a/src/store/index.ts b/src/store/index.ts
deleted file mode 100644
index 2ee3a4f..0000000
--- a/src/store/index.ts
+++ /dev/null
@@ -1,49 +0,0 @@
-import { configureStore, combineReducers } from "@reduxjs/toolkit"
-import { useDispatch, useSelector } from "react-redux"
-import {
- persistStore,
- persistReducer,
- FLUSH,
- REHYDRATE,
- PAUSE,
- PERSIST,
- PURGE,
- REGISTER,
-} from "redux-persist"
-import createWebStorage from "redux-persist/es/storage/createWebStorage"
-import authReducer from "./auth-slice"
-
-const storage = createWebStorage(import.meta.env.VITE_REDUX_STORAGE ?? "local")
-
-const persistConfig = {
- key: "root",
- storage,
- whitelist: ["auth"],
- // blacklist: ['department'],
-}
-
-const rootReducer = combineReducers({
- auth: authReducer,
-})
-
-const persistedReducer = persistReducer(persistConfig, rootReducer)
-
-const store = configureStore({
- reducer: persistedReducer,
- middleware: (getDefaultMiddleware) =>
- getDefaultMiddleware({
- serializableCheck: {
- ignoredActions: [FLUSH, REHYDRATE, PAUSE, PERSIST, PURGE, REGISTER],
- },
- }),
-})
-
-export const persistor = persistStore(store)
-
-export default store
-export type RootState = ReturnType
-export type AppDispatch = typeof store.dispatch
-export type AppStore = typeof store
-
-export const useAppDispatch = useDispatch.withTypes()
-export const useAppSelector = useSelector.withTypes()