diff --git a/index.html b/index.html
new file mode 100644
index 0000000..172ca1d
--- /dev/null
+++ b/index.html
@@ -0,0 +1,72 @@
+
+
+
+
+
+ Convertisseur de Base
+
+
+
+
+
+
+
+
Convertisseur de Base
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/main.js b/main.js
new file mode 100644
index 0000000..3c5d8f6
--- /dev/null
+++ b/main.js
@@ -0,0 +1,38 @@
+const convertButton = document.getElementById('convertButton');
+const baseSource = document.getElementById('baseSource');
+const baseDestination = document.getElementById('baseDestination');
+const numberInput = document.getElementById('numberInput');
+const resultOutput = document.getElementById('resultOutput');
+const toggleThemeButton = document.getElementById('toggleTheme');
+
+for (let i = 2; i <= 36; i++) {
+ let option = new Option(i, i);
+ baseSource.add(option.cloneNode(true));
+ baseDestination.add(option);
+}
+
+// Convert and display result with error handling
+convertButton.addEventListener('click', () => {
+ const sourceBase = parseInt(baseSource.value);
+ const destinationBase = parseInt(baseDestination.value);
+ const number = numberInput.value.trim();
+
+ try {
+ if (!number.match(/^[0-9A-F]+$/i)) {
+ throw new Error('Nombre invalide pour la base donnée');
+ }
+ const result = parseInt(number, sourceBase).toString(destinationBase);
+ if (isNaN(result)) {
+ throw new Error('Conversion impossible');
+ }
+ resultOutput.value = result.toUpperCase();
+ } catch (error) {
+ resultOutput.value = 'Erreur';
+ }
+});
+
+// Toggle dark theme
+toggleThemeButton.addEventListener('click', () => {
+ document.body.classList.toggle('dark');
+ toggleThemeButton.textContent = document.body.classList.contains('dark') ? 'Thème Clair' : 'Thème Sombre';
+});
\ No newline at end of file