+ {/* Top Options Bar */}
+
+
+
+
+ Samples:
+
+
+
+
+
+
+ {/* Grid Layout of Input Fields */}
+
+ {bases.map(({ base, name, label, placeholder }) => {
+ const displayVal = getDisplayValue(base);
+ const errorMsg = getValidationError(base);
+ const hasVal = displayVal.length > 0 && displayVal !== "-";
+
+ return (
+
+
+
+ handleInputChange(e.target.value, base)}
+ className={`w-full rounded-xl border bg-surface p-4 pr-20 font-mono text-sm text-primary outline-none transition-all ${
+ errorMsg
+ ? "border-danger focus:border-danger/80 focus:ring-1 focus:ring-danger/20"
+ : "border-border focus:border-accent/50 focus:ring-1 focus:ring-accent/10"
+ }`}
+ />
+ {hasVal && !errorMsg && (
+
+ )}
+
+ {errorMsg && (
+
+ {errorMsg}
+
+ )}
+
+ );
+ })}
+
+
+ {/* Action Buttons & Note */}
+
+
+
+
+
+
Features & Conversions:
+
+ - Supports base prefixes (e.g. typing
0x in hexadecimal, 0b in binary, or 0o in octal).
+ - Arbitrary-precision integers using
BigInt (handles very large numbers without overflow).
+ - Supports negative values.
+ - Local-only real-time conversion in your browser. No data is sent to external servers.
+
+
+
+ );
+}
diff --git a/src/pages/tools/number-base-converter.astro b/src/pages/tools/number-base-converter.astro
new file mode 100644
index 0000000..01248c1
--- /dev/null
+++ b/src/pages/tools/number-base-converter.astro
@@ -0,0 +1,20 @@
+---
+import BaseLayout from "../../layouts/BaseLayout.astro";
+import NumberBaseConverter from "../../features/number-base-converter/NumberBaseConverter";
+---
+
+