diff --git a/.github/workflows/pull-request.yml b/.github/workflows/pull-request.yml
index 281c529b..6ee16e03 100644
--- a/.github/workflows/pull-request.yml
+++ b/.github/workflows/pull-request.yml
@@ -68,7 +68,10 @@ jobs:
echo "Error: Source and Target Branches are the same. Please ensure they are different."
echo "Error: Close this PR and try again."
exit 1
-
+
+ - name: Check for unused files, exports and dependencies
+ run: npx knip
+
Check-Sensitive-Files:
if: ${{ github.actor != 'dependabot[bot]' }}
name: Checks if sensitive files have been changed without authorization
diff --git a/knip.json b/knip.json
new file mode 100644
index 00000000..b37f47fc
--- /dev/null
+++ b/knip.json
@@ -0,0 +1,5 @@
+{
+ "$schema": "https://unpkg.com/knip@5/schema.json",
+ "project": ["src/**/*.{ts,tsx}", "docs/**/*.{md,mdx}"],
+ "ignoreDependencies": ["docusaurus", "@docusaurus/plugin-content-docs"]
+}
diff --git a/package.json b/package.json
index 9c9dc8a9..53b8cc55 100644
--- a/package.json
+++ b/package.json
@@ -49,6 +49,7 @@
"eslint-plugin-react": "^7.37.5",
"eslint-plugin-tsdoc": "^0.5.0",
"husky": "^9.1.7",
+ "knip": "^5.71.0",
"lint-staged": "^16.2.7",
"typescript": "~5.9.3"
},
diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml
index 66e67f6c..07112848 100644
--- a/pnpm-lock.yaml
+++ b/pnpm-lock.yaml
@@ -84,6 +84,9 @@ importers:
husky:
specifier: ^9.1.7
version: 9.1.7
+ knip:
+ specifier: ^5.71.0
+ version: 5.71.0(@types/node@24.10.1)(typescript@5.9.3)
lint-staged:
specifier: ^16.2.7
version: 16.2.7
@@ -1286,6 +1289,15 @@ packages:
resolution: {integrity: sha512-lBSBiRruFurFKXr5Hbsl2thmGweAPmddhF3jb99U4EMDA5L+e5Y1rAkOS07Nvrup7HUMBDrCV45meaxZnt28nQ==}
engines: {node: '>=20.0'}
+ '@emnapi/core@1.7.1':
+ resolution: {integrity: sha512-o1uhUASyo921r2XtHYOHy7gdkGLge8ghBEQHMWmyJFoXlpU58kIrhhN3w26lpQb6dspetweapMn2CSNwQ8I4wg==}
+
+ '@emnapi/runtime@1.7.1':
+ resolution: {integrity: sha512-PVtJr5CmLwYAU9PZDMITZoR5iAOShYREoR45EyyLrbntV50mdePTgUn4AmOw90Ifcj+x2kRjdzr1HP3RrNiHGA==}
+
+ '@emnapi/wasi-threads@1.1.0':
+ resolution: {integrity: sha512-WI0DdZ8xFSbgMjR1sFsKABJ/C5OnRrjT06JXbZKexJGrDuPTzZdDYfFlsgcCXCyf+suG5QU2e/y1Wo2V/OapLQ==}
+
'@envelop/core@5.4.0':
resolution: {integrity: sha512-/1fat63pySE8rw/dZZArEVytLD90JApY85deDJ0/34gm+yhQ3k70CloSUevxoOE4YCGveG3s9SJJfQeeB4NAtQ==}
engines: {node: '>=18.0.0'}
@@ -1583,6 +1595,9 @@ packages:
resolution: {integrity: sha512-bPHp6Ji8b41szTOcaP63VlnbbO5Ny6dwAATtY6JTjh5N2OLrb5Qk/Th5cRkRQhkWCt+EJsYrNB0MiL+Gpn6e3g==}
engines: {node: '>=4'}
+ '@napi-rs/wasm-runtime@1.1.0':
+ resolution: {integrity: sha512-Fq6DJW+Bb5jaWE69/qOE0D1TUN9+6uWhCeZpdnSBk14pjLcCWR7Q8n49PTSPHazM37JqrsdpEthXy2xn6jWWiA==}
+
'@nodelib/fs.scandir@2.1.5':
resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==}
engines: {node: '>= 8'}
@@ -1603,6 +1618,106 @@ packages:
resolution: {integrity: sha512-3giAOQvZiH5F9bMlMiv8+GSPMeqg0dbaeo58/0SlA9sxSqZhnUtxzX9/2FzyhS9sWQf5S0GJE0AKBrFqjpeYcg==}
engines: {node: '>=8.0.0'}
+ '@oxc-resolver/binding-android-arm-eabi@11.15.0':
+ resolution: {integrity: sha512-Q+lWuFfq7whNelNJIP1dhXaVz4zO9Tu77GcQHyxDWh3MaCoO2Bisphgzmsh4ZoUe2zIchQh6OvQL99GlWHg9Tw==}
+ cpu: [arm]
+ os: [android]
+
+ '@oxc-resolver/binding-android-arm64@11.15.0':
+ resolution: {integrity: sha512-vbdBttesHR0W1oJaxgWVTboyMUuu+VnPsHXJ6jrXf4czELzB6GIg5DrmlyhAmFBhjwov+yJH/DfTnHS+2sDgOw==}
+ cpu: [arm64]
+ os: [android]
+
+ '@oxc-resolver/binding-darwin-arm64@11.15.0':
+ resolution: {integrity: sha512-R67lsOe1UzNjqVBCwCZX1rlItTsj/cVtBw4Uy19CvTicqEWvwaTn8t34zLD75LQwDDPCY3C8n7NbD+LIdw+ZoA==}
+ cpu: [arm64]
+ os: [darwin]
+
+ '@oxc-resolver/binding-darwin-x64@11.15.0':
+ resolution: {integrity: sha512-77mya5F8WV0EtCxI0MlVZcqkYlaQpfNwl/tZlfg4jRsoLpFbaTeWv75hFm6TE84WULVlJtSgvf7DhoWBxp9+ZQ==}
+ cpu: [x64]
+ os: [darwin]
+
+ '@oxc-resolver/binding-freebsd-x64@11.15.0':
+ resolution: {integrity: sha512-X1Sz7m5PC+6D3KWIDXMUtux+0Imj6HfHGdBStSvgdI60OravzI1t83eyn6eN0LPTrynuPrUgjk7tOnOsBzSWHw==}
+ cpu: [x64]
+ os: [freebsd]
+
+ '@oxc-resolver/binding-linux-arm-gnueabihf@11.15.0':
+ resolution: {integrity: sha512-L1x/wCaIRre+18I4cH/lTqSAymlV0k4HqfSYNNuI9oeL28Ks86lI6O5VfYL6sxxWYgjuWB98gNGo7tq7d4GarQ==}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm-musleabihf@11.15.0':
+ resolution: {integrity: sha512-abGXd/zMGa0tH8nKlAXdOnRy4G7jZmkU0J85kMKWns161bxIgGn/j7zxqh3DKEW98wAzzU9GofZMJ0P5YCVPVw==}
+ cpu: [arm]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm64-gnu@11.15.0':
+ resolution: {integrity: sha512-SVjjjtMW66Mza76PBGJLqB0KKyFTBnxmtDXLJPbL6ZPGSctcXVmujz7/WAc0rb9m2oV0cHQTtVjnq6orQnI/jg==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-arm64-musl@11.15.0':
+ resolution: {integrity: sha512-JDv2/AycPF2qgzEiDeMJCcSzKNDm3KxNg0KKWipoKEMDFqfM7LxNwwSVyAOGmrYlE4l3dg290hOMsr9xG7jv9g==}
+ cpu: [arm64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-ppc64-gnu@11.15.0':
+ resolution: {integrity: sha512-zbu9FhvBLW4KJxo7ElFvZWbSt4vP685Qc/Gyk/Ns3g2gR9qh2qWXouH8PWySy+Ko/qJ42+HJCLg+ZNcxikERfg==}
+ cpu: [ppc64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-riscv64-gnu@11.15.0':
+ resolution: {integrity: sha512-Kfleehe6B09C2qCnyIU01xLFqFXCHI4ylzkicfX/89j+gNHh9xyNdpEvit88Kq6i5tTGdavVnM6DQfOE2qNtlg==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-riscv64-musl@11.15.0':
+ resolution: {integrity: sha512-J7LPiEt27Tpm8P+qURDwNc8q45+n+mWgyys4/V6r5A8v5gDentHRGUx3iVk5NxdKhgoGulrzQocPTZVosq25Eg==}
+ cpu: [riscv64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-s390x-gnu@11.15.0':
+ resolution: {integrity: sha512-+8/d2tAScPjVJNyqa7GPGnqleTB/XW9dZJQ2D/oIM3wpH3TG+DaFEXBbk4QFJ9K9AUGBhvQvWU2mQyhK/yYn3Q==}
+ cpu: [s390x]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-x64-gnu@11.15.0':
+ resolution: {integrity: sha512-xtvSzH7Nr5MCZI2FKImmOdTl9kzuQ51RPyLh451tvD2qnkg3BaqI9Ox78bTk57YJhlXPuxWSOL5aZhKAc9J6qg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxc-resolver/binding-linux-x64-musl@11.15.0':
+ resolution: {integrity: sha512-14YL1zuXj06+/tqsuUZuzL0T425WA/I4nSVN1kBXeC5WHxem6lQ+2HGvG+crjeJEqHgZUT62YIgj88W+8E7eyg==}
+ cpu: [x64]
+ os: [linux]
+
+ '@oxc-resolver/binding-openharmony-arm64@11.15.0':
+ resolution: {integrity: sha512-/7Qli+1Wk93coxnrQaU8ySlICYN8HsgyIrzqjgIkQEpI//9eUeaeIHZptNl2fMvBGeXa7k2QgLbRNaBRgpnvMw==}
+ cpu: [arm64]
+ os: [openharmony]
+
+ '@oxc-resolver/binding-wasm32-wasi@11.15.0':
+ resolution: {integrity: sha512-q5rn2eIMQLuc/AVGR2rQKb2EVlgreATGG8xXg8f4XbbYCVgpxaq+dgMbiPStyNywW1MH8VU2T09UEm30UtOQvg==}
+ engines: {node: '>=14.0.0'}
+ cpu: [wasm32]
+
+ '@oxc-resolver/binding-win32-arm64-msvc@11.15.0':
+ resolution: {integrity: sha512-yCAh2RWjU/8wWTxQDgGPgzV9QBv0/Ojb5ej1c/58iOjyTuy/J1ZQtYi2SpULjKmwIxLJdTiCHpMilauWimE31w==}
+ cpu: [arm64]
+ os: [win32]
+
+ '@oxc-resolver/binding-win32-ia32-msvc@11.15.0':
+ resolution: {integrity: sha512-lmXKb6lvA6M6QIbtYfgjd+AryJqExZVSY2bfECC18OPu7Lv1mHFF171Mai5l9hG3r4IhHPPIwT10EHoilSCYeA==}
+ cpu: [ia32]
+ os: [win32]
+
+ '@oxc-resolver/binding-win32-x64-msvc@11.15.0':
+ resolution: {integrity: sha512-HZsfne0s/tGOcJK9ZdTGxsNU2P/dH0Shf0jqrPvsC6wX0Wk+6AyhSpHFLQCnLOuFQiHHU0ePfM8iYsoJb5hHpQ==}
+ cpu: [x64]
+ os: [win32]
+
'@pkgr/core@0.2.9':
resolution: {integrity: sha512-QNqXyfVS2wm9hweSYD2O7F0G06uurj9kZ96TRQE5Y9hU7+tgdZwIkbAKc5Ocy1HxEY2kuDQa6cQ1WRs/O5LFKA==}
engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0}
@@ -1756,6 +1871,9 @@ packages:
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
engines: {node: '>=10.13.0'}
+ '@tybys/wasm-util@0.10.1':
+ resolution: {integrity: sha512-9tTaPJLSiejZKx+Bmog4uSubteqTvFrVrURwkmHixBo0G4seD0zUxp98E1DzUBJxLQ3NPwXrGKDiVjwx/DpPsg==}
+
'@types/body-parser@1.19.6':
resolution: {integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==}
@@ -3867,6 +3985,9 @@ packages:
resolution: {integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==}
engines: {node: '>=0.8.0'}
+ fd-package-json@2.0.0:
+ resolution: {integrity: sha512-jKmm9YtsNXN789RS/0mSzOC1NUq9mkVd65vbSSVsKdjGvYXBuE4oWe2QOEoFeRmJg+lPuZxpmrfFclNhoRMneQ==}
+
fd-slicer@1.1.0:
resolution: {integrity: sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==}
@@ -4046,6 +4167,11 @@ packages:
resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==}
engines: {node: '>=0.4.x'}
+ formatly@0.3.0:
+ resolution: {integrity: sha512-9XNj/o4wrRFyhSMJOvsuyMwy8aUfBaZ1VrqHVfohyXf0Sw0e+yfKG+xZaY3arGCOMdwFsqObtzVOc1gU9KiT9w==}
+ engines: {node: '>=18.3.0'}
+ hasBin: true
+
formdata-polyfill@4.0.10:
resolution: {integrity: sha512-buewHzMvYL29jdeQTVILecSaZKnt/RJWjoZCF5OW60Z67/GmSLBkOFM7qh1PI3zFNtJbaZL5eQu1vLfazOwj4g==}
engines: {node: '>=12.20.0'}
@@ -5172,6 +5298,14 @@ packages:
resolution: {integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==}
engines: {node: '>=6'}
+ knip@5.71.0:
+ resolution: {integrity: sha512-hwgdqEJ+7DNJ5jE8BCPu7b57TY7vUwP6MzWYgCgPpg6iPCee/jKPShDNIlFER2koti4oz5xF88VJbKCb4Wl71g==}
+ engines: {node: '>=18.18.0'}
+ hasBin: true
+ peerDependencies:
+ '@types/node': '>=18'
+ typescript: '>=5.0.4 <7'
+
latest-version@7.0.0:
resolution: {integrity: sha512-KvNT4XqAMzdcL6ka6Tl3i2lYeFDgXNCuIX+xNx6ZMVR1dFq+idXd9FLKNMOIx0t9mJ9/HudyX4oZWXZQ0UJHeg==}
engines: {node: '>=14.16'}
@@ -5959,6 +6093,9 @@ packages:
resolution: {integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==}
engines: {node: '>= 0.4'}
+ oxc-resolver@11.15.0:
+ resolution: {integrity: sha512-Hk2J8QMYwmIO9XTCUiOH00+Xk2/+aBxRUnhrSlANDyCnLYc32R1WSIq1sU2yEdlqd53FfMpPEpnBYIKQMzliJw==}
+
p-cancelable@0.3.0:
resolution: {integrity: sha512-RVbZPLso8+jFeq1MfNvgXtCRED2raz/dKpacfTNxsx6pLEpEomM7gah6VeHSYV3+vo0OAi4MkArtQcWWXuQoyw==}
engines: {node: '>=4'}
@@ -7466,6 +7603,10 @@ packages:
resolution: {integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==}
engines: {node: '>=18'}
+ smol-toml@1.5.2:
+ resolution: {integrity: sha512-QlaZEqcAH3/RtNyet1IPIYPsEWAaYyXXv1Krsi+1L/QHppjX4Ifm8MQsBISz9vE8cHicIq3clogsheili5vhaQ==}
+ engines: {node: '>= 18'}
+
snake-case@3.0.4:
resolution: {integrity: sha512-LAOh4z89bGQvl9pFfNF8V146i7o7/CqFPbqzYgP+yYzDIDeS9HaNFtXABamRW+AQzEVODcvE79ljJ+8a9YSdMg==}
@@ -7713,6 +7854,10 @@ packages:
resolution: {integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==}
engines: {node: '>=8'}
+ strip-json-comments@5.0.3:
+ resolution: {integrity: sha512-1tB5mhVo7U+ETBKNf92xT4hrQa3pm0MZ0PQvuDnWgAAGHDsfp4lPSpiS6psrSiet87wyGPh9ft6wmhOMQ0hDiw==}
+ engines: {node: '>=14.16'}
+
strip-outer@1.0.1:
resolution: {integrity: sha512-k55yxKHwaXnpYGsOzg4Vl8+tDrWylxDEpknGjhTiZB8dFRU5rTo9CAzeycivxV3s+zlTKwrs6WxMxR95n26kwg==}
engines: {node: '>=0.10.0'}
@@ -8207,6 +8352,10 @@ packages:
vfile@6.0.3:
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
+ walk-up-path@4.0.0:
+ resolution: {integrity: sha512-3hu+tD8YzSLGuFYtPRb48vdhKMi0KQV5sn+uWr8+7dMEq/2G/dtLrdDinkLjqq5TIbIBjYJ4Ax/n3YiaW7QM8A==}
+ engines: {node: 20 || >=22}
+
watchpack@2.4.4:
resolution: {integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==}
engines: {node: '>=10.13.0'}
@@ -10446,6 +10595,22 @@ snapshots:
- uglify-js
- webpack-cli
+ '@emnapi/core@1.7.1':
+ dependencies:
+ '@emnapi/wasi-threads': 1.1.0
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/runtime@1.7.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
+ '@emnapi/wasi-threads@1.1.0':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@envelop/core@5.4.0':
dependencies:
'@envelop/instrumentation': 1.0.0
@@ -10883,6 +11048,13 @@ snapshots:
call-me-maybe: 1.0.2
glob-to-regexp: 0.3.0
+ '@napi-rs/wasm-runtime@1.1.0':
+ dependencies:
+ '@emnapi/core': 1.7.1
+ '@emnapi/runtime': 1.7.1
+ '@tybys/wasm-util': 0.10.1
+ optional: true
+
'@nodelib/fs.scandir@2.1.5':
dependencies:
'@nodelib/fs.stat': 2.0.5
@@ -10899,6 +11071,68 @@ snapshots:
'@opentelemetry/api@1.9.0': {}
+ '@oxc-resolver/binding-android-arm-eabi@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-android-arm64@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-darwin-arm64@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-darwin-x64@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-freebsd-x64@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm-gnueabihf@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm-musleabihf@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm64-gnu@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-linux-arm64-musl@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-linux-ppc64-gnu@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-linux-riscv64-gnu@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-linux-riscv64-musl@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-linux-s390x-gnu@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-linux-x64-gnu@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-linux-x64-musl@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-openharmony-arm64@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-wasm32-wasi@11.15.0':
+ dependencies:
+ '@napi-rs/wasm-runtime': 1.1.0
+ optional: true
+
+ '@oxc-resolver/binding-win32-arm64-msvc@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-win32-ia32-msvc@11.15.0':
+ optional: true
+
+ '@oxc-resolver/binding-win32-x64-msvc@11.15.0':
+ optional: true
+
'@pkgr/core@0.2.9': {}
'@pnpm/config.env-replace@1.1.0': {}
@@ -11062,6 +11296,11 @@ snapshots:
'@trysound/sax@0.2.0': {}
+ '@tybys/wasm-util@0.10.1':
+ dependencies:
+ tslib: 2.8.1
+ optional: true
+
'@types/body-parser@1.19.6':
dependencies:
'@types/connect': 3.4.38
@@ -13768,6 +14007,10 @@ snapshots:
dependencies:
websocket-driver: 0.7.4
+ fd-package-json@2.0.0:
+ dependencies:
+ walk-up-path: 4.0.0
+
fd-slicer@1.1.0:
dependencies:
pend: 1.2.0
@@ -13941,6 +14184,10 @@ snapshots:
format@0.2.2: {}
+ formatly@0.3.0:
+ dependencies:
+ fd-package-json: 2.0.0
+
formdata-polyfill@4.0.10:
dependencies:
fetch-blob: 3.2.0
@@ -15174,6 +15421,23 @@ snapshots:
kleur@3.0.3: {}
+ knip@5.71.0(@types/node@24.10.1)(typescript@5.9.3):
+ dependencies:
+ '@nodelib/fs.walk': 1.2.8
+ '@types/node': 24.10.1
+ fast-glob: 3.3.3
+ formatly: 0.3.0
+ jiti: 2.6.1
+ js-yaml: 4.1.1
+ minimist: 1.2.8
+ oxc-resolver: 11.15.0
+ picocolors: 1.1.1
+ picomatch: 4.0.3
+ smol-toml: 1.5.2
+ strip-json-comments: 5.0.3
+ typescript: 5.9.3
+ zod: 4.1.12
+
latest-version@7.0.0:
dependencies:
package-json: 8.1.1
@@ -16291,6 +16555,29 @@ snapshots:
object-keys: 1.1.1
safe-push-apply: 1.0.0
+ oxc-resolver@11.15.0:
+ optionalDependencies:
+ '@oxc-resolver/binding-android-arm-eabi': 11.15.0
+ '@oxc-resolver/binding-android-arm64': 11.15.0
+ '@oxc-resolver/binding-darwin-arm64': 11.15.0
+ '@oxc-resolver/binding-darwin-x64': 11.15.0
+ '@oxc-resolver/binding-freebsd-x64': 11.15.0
+ '@oxc-resolver/binding-linux-arm-gnueabihf': 11.15.0
+ '@oxc-resolver/binding-linux-arm-musleabihf': 11.15.0
+ '@oxc-resolver/binding-linux-arm64-gnu': 11.15.0
+ '@oxc-resolver/binding-linux-arm64-musl': 11.15.0
+ '@oxc-resolver/binding-linux-ppc64-gnu': 11.15.0
+ '@oxc-resolver/binding-linux-riscv64-gnu': 11.15.0
+ '@oxc-resolver/binding-linux-riscv64-musl': 11.15.0
+ '@oxc-resolver/binding-linux-s390x-gnu': 11.15.0
+ '@oxc-resolver/binding-linux-x64-gnu': 11.15.0
+ '@oxc-resolver/binding-linux-x64-musl': 11.15.0
+ '@oxc-resolver/binding-openharmony-arm64': 11.15.0
+ '@oxc-resolver/binding-wasm32-wasi': 11.15.0
+ '@oxc-resolver/binding-win32-arm64-msvc': 11.15.0
+ '@oxc-resolver/binding-win32-ia32-msvc': 11.15.0
+ '@oxc-resolver/binding-win32-x64-msvc': 11.15.0
+
p-cancelable@0.3.0: {}
p-cancelable@0.4.1: {}
@@ -18037,6 +18324,8 @@ snapshots:
ansi-styles: 6.2.3
is-fullwidth-code-point: 5.1.0
+ smol-toml@1.5.2: {}
+
snake-case@3.0.4:
dependencies:
dot-case: 3.0.4
@@ -18327,6 +18616,8 @@ snapshots:
strip-json-comments@3.1.1: {}
+ strip-json-comments@5.0.3: {}
+
strip-outer@1.0.1:
dependencies:
escape-string-regexp: 1.0.5
@@ -18864,6 +19155,8 @@ snapshots:
'@types/unist': 3.0.3
vfile-message: 4.0.3
+ walk-up-path@4.0.0: {}
+
watchpack@2.4.4:
dependencies:
glob-to-regexp: 0.4.1
diff --git a/src/utils/ActionButton.tsx b/src/utils/ActionButton.tsx
deleted file mode 100644
index 007b4cc3..00000000
--- a/src/utils/ActionButton.tsx
+++ /dev/null
@@ -1,30 +0,0 @@
-import React from 'react';
-
-interface IActionButtonProps {
- href: string;
- type?: 'primary' | 'secondary';
- target?: string;
- children: React.ReactNode;
- buttonClassName?: string;
-}
-
-function ActionButton({
- href,
- type = 'primary',
- target,
- children,
- buttonClassName,
-}: IActionButtonProps) {
- return (
-
- {children}
-
- );
-}
-
-export default ActionButton;
diff --git a/src/utils/HomeCallToAction.tsx b/src/utils/HomeCallToAction.tsx
deleted file mode 100644
index 19ad0249..00000000
--- a/src/utils/HomeCallToAction.tsx
+++ /dev/null
@@ -1,33 +0,0 @@
-import React from 'react';
-import ActionButton from './ActionButton';
-
-// interface HomeCallToActionProps {}
-
-const HomeCallToAction = () => {
- return (
- <>
-
- Learn More
-
-
- Mobile
-
-
- Web
-
-
- Admins
-
-
- Devs
-
- >
- );
-};
-
-export default HomeCallToAction;
diff --git a/src/utils/Section.tsx b/src/utils/Section.tsx
deleted file mode 100644
index b1d9f49d..00000000
--- a/src/utils/Section.tsx
+++ /dev/null
@@ -1,31 +0,0 @@
-import React from 'react';
-import type { JSX } from 'react';
-
-interface ISectionProps {
- element?: keyof JSX.IntrinsicElements;
- children?: React.ReactNode;
- className?: string;
- background?: 'light' | 'dark' | 'tint';
-}
-
-function Section({
- element = 'section',
- children,
- className,
- background = 'light',
-}: ISectionProps) {
- const El = element;
- return (
-
- {children}
-
- );
-}
-
-export default Section;
diff --git a/src/utils/TwoColumns.tsx b/src/utils/TwoColumns.tsx
deleted file mode 100644
index bea61731..00000000
--- a/src/utils/TwoColumns.tsx
+++ /dev/null
@@ -1,23 +0,0 @@
-import React, { FC } from 'react';
-import type { JSX } from 'react';
-
-interface IProps {
- columnOne: React.ReactNode;
- columnTwo: React.ReactNode | JSX.Element;
- reverse?: boolean;
-}
-
-const TwoColumns: FC = ({ columnOne, columnTwo, reverse = false }) => {
- const firstColumnClasses = `column first ${reverse ? 'right' : 'left'}`;
- const lastColumnClasses = `column last ${reverse ? 'left' : 'right'}`;
- const containerClasses = `TwoColumns ${reverse ? 'reverse' : ''}`;
-
- return (
-
-
{columnOne}
-
{columnTwo}
-
- );
-};
-
-export default TwoColumns;