From 7a97cb04b44d0f972774f74295214e079ec29581 Mon Sep 17 00:00:00 2001 From: devvsakib Date: Tue, 7 Oct 2025 20:42:32 +0600 Subject: [PATCH 1/3] Add YAML Formatter component and update availability in DevArea --- package.json | 1 + src/components/DevAreaTools/YAMLFormatter.jsx | 95 +++++++++ src/pages/DevArea/DevTools.jsx | 4 + src/pages/DevArea/index.jsx | 142 ++++++++++++- yarn.lock | 186 +++++++++++++----- 5 files changed, 376 insertions(+), 52 deletions(-) create mode 100644 src/components/DevAreaTools/YAMLFormatter.jsx diff --git a/package.json b/package.json index 4237c39..52a18ff 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,7 @@ "axios": "^1.2.2", "classnames": "^2.5.1", "framer-motion": "^10.8.3", + "js-yaml": "^4.1.0", "lodash": "^4.17.21", "lucide-react": "^0.544.0", "prettier": "^3.3.3", diff --git a/src/components/DevAreaTools/YAMLFormatter.jsx b/src/components/DevAreaTools/YAMLFormatter.jsx new file mode 100644 index 0000000..16a52aa --- /dev/null +++ b/src/components/DevAreaTools/YAMLFormatter.jsx @@ -0,0 +1,95 @@ +import React, { useState } from "react"; +import yaml from "js-yaml"; + +export default function YAMLFormatter() { + const [input, setInput] = useState(""); + const [output, setOutput] = useState(""); + const [error, setError] = useState(null); + + const handleFormat = () => { + setError(null); + try { + const parsed = yaml.load(input); + const formatted = yaml.dump(parsed, { indent: 2 }); + setOutput(formatted); + } catch (err) { + setError("Invalid YAML syntax."); + } + }; + + const handleMinify = () => { + setError(null); + try { + const parsed = yaml.load(input); + const minified = yaml.dump(parsed, { indent: 0, flowLevel: -1 }).replace(/\n/g, ""); + setOutput(minified); + } catch (err) { + setError("Invalid YAML syntax."); + } + }; + + const handleClear = () => { + setInput(""); + setOutput(""); + setError(null); + }; + + return ( +
+

+ ๐Ÿงพ YAML Formatter +

+ +
+

+ Paste your YAML below to format or minify. +

+ +