UNPKG

num2text

Version:

Convert numbers into words in multiple languages

278 lines (240 loc) β€’ 8.39 kB
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Number to Words Converter</title> <style> * { margin: 0; padding: 0; box-sizing: border-box; } body { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; background: linear-gradient(135deg, #667eea 0%, #764ba2 100%); min-height: 100vh; padding: 20px; } .container { max-width: 800px; margin: 0 auto; background: white; border-radius: 20px; padding: 40px; box-shadow: 0 20px 60px rgba(0,0,0,0.1); } h1 { text-align: center; color: #333; margin-bottom: 40px; font-size: 2.5rem; background: linear-gradient(45deg, #667eea, #764ba2); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .input-group { display: flex; gap: 15px; margin-bottom: 30px; align-items: center; flex-wrap: wrap; } input[type="number"] { flex: 1; min-width: 200px; padding: 15px 20px; border: 2px solid #e1e5e9; border-radius: 12px; font-size: 18px; transition: all 0.3s ease; } input[type="number"]:focus { outline: none; border-color: #667eea; box-shadow: 0 0 0 4px rgba(102, 126, 234, 0.1); } button { padding: 15px 30px; background: linear-gradient(45deg, #667eea, #764ba2); color: white; border: none; border-radius: 12px; font-size: 16px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; text-transform: uppercase; letter-spacing: 0.5px; } button:hover { transform: translateY(-2px); box-shadow: 0 10px 30px rgba(102, 126, 234, 0.3); } .results { display: grid; gap: 20px; margin-top: 30px; } .result-card { background: #f8faff; border: 1px solid #e8ecf7; border-radius: 15px; padding: 25px; transition: all 0.3s ease; border-left: 5px solid; } .result-card:nth-child(1) { border-left-color: #ff6b6b; } .result-card:nth-child(2) { border-left-color: #4ecdc4; } .result-card:nth-child(3) { border-left-color: #45b7d1; } .result-card:nth-child(4) { border-left-color: #96ceb4; } .result-card:nth-child(5) { border-left-color: #feca57; } .result-card:nth-child(6) { border-left-color: #ff9ff3; } .result-card:hover { transform: translateY(-3px); box-shadow: 0 15px 40px rgba(0,0,0,0.1); } .lang-name { font-weight: 700; color: #333; margin-bottom: 10px; font-size: 16px; text-transform: uppercase; letter-spacing: 1px; } .result-text { font-size: 24px; color: #555; font-weight: 500; line-height: 1.4; font-family: 'Georgia', serif; } .example-numbers { margin-top: 30px; text-align: center; } .example-numbers h3 { color: #666; margin-bottom: 15px; font-size: 18px; } .example-buttons { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; } .example-btn { padding: 8px 16px; background: white; border: 2px solid #e1e5e9; border-radius: 25px; color: #666; cursor: pointer; transition: all 0.2s ease; font-size: 14px; } .example-btn:hover { border-color: #667eea; color: #667eea; transform: translateY(-1px); } @media (max-width: 600px) { .container { padding: 20px; } h1 { font-size: 2rem; } .input-group { flex-direction: column; } input[type="number"] { min-width: 100%; } .result-text { font-size: 20px; } } </style> </head> <body> <div class="container"> <h1>πŸ”’ Number to Words</h1> <div class="input-group"> <input type="number" id="numberInput" placeholder="Enter a number..." value="12345"> <button onclick="convert()">Convert</button> </div> <div class="example-numbers"> <h3>Try these examples:</h3> <div class="example-buttons"> <span class="example-btn" onclick="setNumber(0)">0</span> <span class="example-btn" onclick="setNumber(1)">1</span> <span class="example-btn" onclick="setNumber(101)">101</span> <span class="example-btn" onclick="setNumber(1001)">1,001</span> <span class="example-btn" onclick="setNumber(10001)">10,001</span> <span class="example-btn" onclick="setNumber(123456)">123,456</span> <span class="example-btn" onclick="setNumber(1000000)">1,000,000</span> </div> </div> <div id="results" class="results"></div> </div> <script src="dist/index.global.js"></script> <script> window.numberToWords = window.num2text?.numberToWords; if (!window.numberToWords) { console.error('Failed to import numberToWords function from dist/index.global.js'); } function convert() { const input = document.getElementById('numberInput'); const num = parseInt(input.value); if (isNaN(num)) { alert('Please enter a valid number'); return; } const languages = [ { code: 'en', name: 'English', flag: 'πŸ‡ΊπŸ‡Έ' }, { code: 'th', name: 'Thai (ΰΉ„ΰΈ—ΰΈ’)', flag: 'πŸ‡ΉπŸ‡­' }, { code: 'zh', name: 'Chinese (δΈ­ζ–‡)', flag: 'πŸ‡¨πŸ‡³' }, { code: 'zh-TW', name: 'Traditional Chinese (繁體中文)', flag: 'πŸ‡ΉπŸ‡Ό' }, { code: 'ja', name: 'Japanese (ζ—₯本θͺž)', flag: 'πŸ‡―πŸ‡΅' }, { code: 'ko', name: 'Korean (ν•œκ΅­μ–΄)', flag: 'πŸ‡°πŸ‡·' } ]; let html = ''; languages.forEach(lang => { try { // Access the numberToWords function from the global reference const result = window.numberToWords(lang.code, num); html += ` <div class="result-card"> <div class="lang-name">${lang.flag} ${lang.name}</div> <div class="result-text">${result}</div> </div> `; } catch (error) { html += ` <div class="result-card"> <div class="lang-name">${lang.flag} ${lang.name}</div> <div class="result-text" style="color: #e74c3c;">Error: ${error.message}</div> </div> `; } }); document.getElementById('results').innerHTML = html; } function setNumber(num) { document.getElementById('numberInput').value = num; convert(); } // Auto convert on page load convert(); // Convert on Enter key document.getElementById('numberInput').addEventListener('keyup', function(event) { if (event.key === 'Enter') { convert(); } }); </script> </body> </html>