diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache
new file mode 100644
index 0000000..1158f6a
--- /dev/null
+++ b/.firebase/hosting.ZGlzdA.cache
@@ -0,0 +1,5 @@
+404.html,1678441268921,daa499dd96d8229e73235345702ba32f0793f0c8e5c0d30e40e37a5872be57aa
+index.html,1678440698830,d34dfe50b125d1b5405dc96da6c74edb9acdd2c5599204c9c0c68831b02526ff
+assets/index-f0936bbe.css,1678440698830,d1cc6c72221b3819411737fbb6f5d25dc03de49db1dcb196843d3cecdcb394a1
+fav.svg,1678440669287,1e17e437405ca216fba974eabe397cc0e99dcd7e2605e57d86161f986e67147f
+assets/index-492b6872.js,1678440698830,c5a35310a0d6f602ffd6851fe2392badd05a7f0b0bf225e6ac73ddbc4292806a
diff --git a/.firebaserc b/.firebaserc
new file mode 100644
index 0000000..2c93ec8
--- /dev/null
+++ b/.firebaserc
@@ -0,0 +1,5 @@
+{
+ "projects": {
+ "default": "keygen-89601"
+ }
+}
diff --git a/firebase.json b/firebase.json
new file mode 100644
index 0000000..059fe4f
--- /dev/null
+++ b/firebase.json
@@ -0,0 +1,10 @@
+{
+ "hosting": {
+ "public": "dist",
+ "ignore": [
+ "firebase.json",
+ "**/.*",
+ "**/node_modules/**"
+ ]
+ }
+}
diff --git a/index.html b/index.html
index e0d1c84..bf8eb84 100644
--- a/index.html
+++ b/index.html
@@ -1,13 +1,22 @@
-
-
-
-
- Vite + React + TS
-
-
-
-
-
+
+
+
+
+
+
+
+ Password Generator
+
+
+
+
+
diff --git a/package.json b/package.json
index 36606c6..5be6d09 100644
--- a/package.json
+++ b/package.json
@@ -1,25 +1,25 @@
{
- "name": "securekeygen",
- "private": true,
- "version": "0.0.0",
- "type": "module",
- "scripts": {
- "dev": "vite",
- "build": "tsc && vite build",
- "preview": "vite preview"
- },
- "dependencies": {
- "react": "^18.2.0",
- "react-dom": "^18.2.0",
- "react-router-dom": "^6.8.2"
- },
- "devDependencies": {
- "@types/node": "^18.14.6",
- "@types/react": "^18.0.27",
- "@types/react-dom": "^18.0.10",
- "@vitejs/plugin-react-swc": "^3.0.0",
- "sass": "^1.58.3",
- "typescript": "^4.9.3",
- "vite": "^4.1.0"
- }
+ "name": "securekeygen",
+ "private": true,
+ "version": "0.1.0",
+ "type": "module",
+ "scripts": {
+ "dev": "vite",
+ "build": "tsc && vite build",
+ "preview": "vite preview"
+ },
+ "dependencies": {
+ "react": "^18.2.0",
+ "react-dom": "^18.2.0",
+ "react-router-dom": "^6.8.2"
+ },
+ "devDependencies": {
+ "@types/node": "^18.14.6",
+ "@types/react": "^18.0.27",
+ "@types/react-dom": "^18.0.10",
+ "@vitejs/plugin-react-swc": "^3.0.0",
+ "sass": "^1.58.3",
+ "typescript": "^4.9.3",
+ "vite": "^4.1.0"
+ }
}
diff --git a/public/fav.svg b/public/fav.svg
new file mode 100644
index 0000000..63e04e1
--- /dev/null
+++ b/public/fav.svg
@@ -0,0 +1 @@
+
\ No newline at end of file
diff --git a/public/vite.svg b/public/vite.svg
deleted file mode 100644
index e7b8dfb..0000000
--- a/public/vite.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file
diff --git a/src/Generator.tsx b/src/Generator.tsx
index 7f54ad2..cb3934e 100644
--- a/src/Generator.tsx
+++ b/src/Generator.tsx
@@ -7,6 +7,7 @@ const colorGood = "#31f399 ";
const colorBest = "#1fff3d";
export default function Generator() {
+ let initalLoaded: boolean = false;
const [password, setPassword] = useState("");
const [length, setLength] = useState(64);
@@ -37,6 +38,34 @@ export default function Generator() {
}
}
+ function saveToLocalStorage() {
+ localStorage.setItem("length", length.toString());
+ localStorage.setItem("numbers", numbers.toString());
+ localStorage.setItem("symbols", symbols.toString());
+ localStorage.setItem("uppercase", uppercase.toString());
+ localStorage.setItem("lowercase", lowercase.toString());
+ localStorage.setItem("similar", similar.toString());
+ localStorage.setItem("ambiguous", ambiguous.toString());
+ }
+
+ function loadFromLocalStorage() {
+ const length = localStorage.getItem("length") ?? "64";
+ const numbers = localStorage.getItem("numbers") ?? "true";
+ const symbols = localStorage.getItem("symbols") ?? "true";
+ const uppercase = localStorage.getItem("uppercase") ?? "true";
+ const lowercase = localStorage.getItem("lowercase" ?? "true");
+ const similar = localStorage.getItem("similar") ?? "false";
+ const ambiguous = localStorage.getItem("ambiguous") ?? "false";
+
+ setLength(parseInt(length));
+ setNumbers(numbers === "true");
+ setSymbols(symbols === "true");
+ setUppercase(uppercase === "true");
+ setLowercase(lowercase === "true");
+ setSimilar(similar === "true");
+ setAmbiguous(ambiguous === "true");
+ }
+
function generate() {
setPassword(
generatePassword({
@@ -49,9 +78,15 @@ export default function Generator() {
excludeAmbiguous: ambiguous,
})
);
+ saveToLocalStorage();
}
useEffect(() => {
+ if (!initalLoaded) {
+ loadFromLocalStorage();
+ initalLoaded = true;
+ }
+
generate();
}, []);
diff --git a/src/assets/react.svg b/src/assets/react.svg
deleted file mode 100644
index 6c87de9..0000000
--- a/src/assets/react.svg
+++ /dev/null
@@ -1 +0,0 @@
-
\ No newline at end of file