diff --git a/package.json b/package.json
index 5b508c6..3f80a1c 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
{
"name": "kevins-data-toolbox",
- "version": "2.2.4",
+ "version": "2.3.0",
"private": true,
"dependencies": {
"@loadable/component": "^5.15.0",
diff --git a/public/locales/de/translation.json b/public/locales/de/translation.json
index 733f482..d445707 100644
--- a/public/locales/de/translation.json
+++ b/public/locales/de/translation.json
@@ -49,6 +49,10 @@
"octal": "Oktal",
"hexadecimal": "Hexadezimal",
"nanWarning": "Die Eingabe ist keine gültige Zahl!"
+ },
+ "urlencode": {
+ "title": "URL-Kodierung",
+ "description": "Kodiere und dekodiere URL-kodierte (or Prozent-kodierte) Zeichenfolgen."
}
}
},
diff --git a/public/locales/en/translation.json b/public/locales/en/translation.json
index 06d6413..6dfa661 100644
--- a/public/locales/en/translation.json
+++ b/public/locales/en/translation.json
@@ -49,6 +49,10 @@
"octal": "Octal",
"hexadecimal": "Hexadecimal",
"nanWarning": "The input is not a valid number!"
+ },
+ "urlencode": {
+ "title": "URL-Encoding",
+ "description": "Encode and decode strings to and from URL-encoding (or Percent-encoding)."
}
}
},
diff --git a/src/tools/ToolLoader.tsx b/src/tools/ToolLoader.tsx
index d279383..c2f9ed4 100644
--- a/src/tools/ToolLoader.tsx
+++ b/src/tools/ToolLoader.tsx
@@ -14,6 +14,7 @@ const HomePage = prerenderedLoadable(() => import('../pages/Home'));
const RotTool = prerenderedLoadable(() => import('./cyphers_and_cryptography/rot/RotTool'));
const Base64Tool = prerenderedLoadable(() => import('./encodings/base64/Base64Tool'));
const NumberBaseTool = prerenderedLoadable(() => import('./encodings/numberbase/NumberBaseTool'));
+const URLEncodeTool = prerenderedLoadable(() => import('./encodings/urlencode/URLEncodeTool'));
type ErrorBoundaryProps = {
resetFunction: () => void
@@ -72,6 +73,9 @@ const ToolLoader = () => {
case "numberbase":
return ;
+ case "urlencode":
+ return ;
+
default:
return ;
}
diff --git a/src/tools/encodings/urlencode/URLEncodeTool.module.scss b/src/tools/encodings/urlencode/URLEncodeTool.module.scss
new file mode 100644
index 0000000..8b82604
--- /dev/null
+++ b/src/tools/encodings/urlencode/URLEncodeTool.module.scss
@@ -0,0 +1 @@
+@import "../../../common";
\ No newline at end of file
diff --git a/src/tools/encodings/urlencode/URLEncodeTool.module.scss.d.ts b/src/tools/encodings/urlencode/URLEncodeTool.module.scss.d.ts
new file mode 100644
index 0000000..cb4acd1
--- /dev/null
+++ b/src/tools/encodings/urlencode/URLEncodeTool.module.scss.d.ts
@@ -0,0 +1,4 @@
+export const center: string;
+export const flexList: string;
+export const layoutBox: string;
+export const title: string;
diff --git a/src/tools/encodings/urlencode/URLEncodeTool.tsx b/src/tools/encodings/urlencode/URLEncodeTool.tsx
new file mode 100644
index 0000000..3636855
--- /dev/null
+++ b/src/tools/encodings/urlencode/URLEncodeTool.tsx
@@ -0,0 +1,45 @@
+import React, { useEffect, useState } from "react";
+import { useTranslation, Trans } from "react-i18next";
+import * as styles from "./URLEncodeTool.module.scss"
+import { Helmet } from "react-helmet";
+
+const URLEncodeTool = () => {
+ const { t } = useTranslation();
+
+ let [input, setInput] = useState("");
+ let [output, setOutput] = useState("");
+ let [reversed, setReversed] = useState(false)
+
+ useEffect(() => {
+ if(!reversed) {
+ setOutput(encodeURIComponent(input))
+ }
+
+ if(reversed) {
+ setInput(decodeURIComponent(output))
+ }
+
+ }, [input, output, reversed])
+
+ return (
+
+
+ {t("tools.encodings.urlencode.title")} | {t("site.title")}
+
+
+
+
{t("tools.encodings.urlencode.title")}
+
+
xxx, pre: }} />
+
+
+
+
+
+
+
+
+ )
+}
+
+export default URLEncodeTool;
\ No newline at end of file
diff --git a/src/tools/tools.ts b/src/tools/tools.ts
index d09d565..be3472f 100644
--- a/src/tools/tools.ts
+++ b/src/tools/tools.ts
@@ -1,4 +1,4 @@
-import {Smile, PlusSquare, Binary, Hash} from "lucide-react"
+import {Smile, PlusSquare, Binary, Hash, Globe} from "lucide-react"
const tools = [
{
@@ -35,6 +35,15 @@ const tools = [
"category": "encodings",
"hidden": false,
"keywords": "binary, base, base6, base10, base2, binary, hex, hexadecimal, oct, bin, dec, encodings, encoding, decoding"
+ },
+ {
+ "name": "tools.encodings.urlencode.title",
+ "external": false,
+ "urlname": "urlencode",
+ "icon": Globe,
+ "category": "encodings",
+ "hidden": false,
+ "keywords": "URL, urlencode, urldecode, URI, uriencode, uridecode, encoding, decoding, encoder, decoder, tool"
}
]