1<!doctype html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <link rel="icon" href="/favicon.ico" sizes="32x32" /> 6 <link rel="icon" type="image/png" sizes="48x48" href="/favicon-48x48.png" /> 7 <link rel="apple-touch-icon" href="/apple-touch-icon.png" /> 8 <meta name="viewport" content="width=device-width, initial-scale=1.0" /> 9 <link rel="manifest" href="/manifest.json" /> 10 <title>Thai Nexus | Parcel Forwarding & Freight from Thailand</title> 11 <meta name="description" content="Thai Nexus is a registered Thai forwarder in Hua Hin and Bangkok. Parcel forwarding, proxy buying, air and sea freight to 200+ countries with published rates." /> 12 <meta property="og:site_name" content="Thai Nexus" /> 13 <meta property="og:type" content="website" /> 14 <meta property="og:title" content="Thai Nexus | Parcel Forwarding & Freight from Thailand" /> 15 <meta property="og:description" content="Parcel forwarding, proxy buying and air & sea freight from Thailand, with published rates and customs thresholds." /> 16 <meta property="og:locale" content="en_US" /> 17 <meta property="og:url" content="https://thainexus.co.th/" /> 18 <meta property="og:image" content="https://media.thainexus.co.th/uploads/site/hero-desktop-1920.webp" /> 19 <meta name="twitter:card" content="summary_large_image" /> 20 <meta name="twitter:title" content="Thai Nexus | Parcel Forwarding & Freight from Thailand" /> 21 <meta name="twitter:description" content="Ship from Thailand to 200+ countries with published rates, measured transit times and customs thresholds." /> 22 <meta name="twitter:image" content="https://media.thainexus.co.th/uploads/site/hero-desktop-1920.webp" /> 23 <link rel="preload" as="image" type="image/png" href="/media/loader-mark-circle-32.png" /> 24 <style> 25 body { margin: 0; background: hsl(210 20% 98%); } 26 html:not(.tn-app-ready) #root { visibility: hidden; } 27 #root { min-height: 100vh; } 28 footer.bg-primary { min-height: 22rem; } 29 #tn-boot-loader { 30 position: fixed; 31 inset: 0; 32 z-index: 9999; 33 display: flex; 34 align-items: center; 35 justify-content: center; 36 background: hsl(210 20% 98%); 37 transition: opacity 0.18s ease; 38 } 39 #tn-boot-loader img { 40 width: 32px; 41 height: 32px; 42 border-radius: 50%; 43 overflow: hidden; 44 -o-object-fit: cover; 45 object-fit: cover; 46 display: block; 47 animation: tn-boot-spin 0.85s linear infinite; 48 } 49 @keyframes tn-boot-spin { 50 to { transform: rotate(360deg); } 51 } 52 html.tn-app-ready #tn-boot-loader { 53 opacity: 0; 54 pointer-events: none; 55 } 56 </style> 57 <!-- Fonts self-hosted via @fontsource in src/main.jsx (CWV: no render-blocking Google Fonts). --> 58
58<script type="module" crossorigin src="/assets/index-Dr-C1Rfi.js"></script>
58 59 <link rel="preload" as="style" href="/assets/index-9_6UtfEy.css" onload="this.onload=null;this.rel='stylesheet'"><noscript><link rel="stylesheet" href="/assets/index-9_6UtfEy.css"></noscript> 60 </head> 61 <body> 62 <div id="tn-boot-loader" role="status" aria-live="polite" aria-label="Loading"> 63 <img src="/media/loader-mark-circle-32.png" width="32" height="32" alt="" decoding="sync" fetchpriority="high" /> 64 </div> 65 <div id="root"></div> 66
66<script> 67 (function () { 68 try { 69 var raw = localStorage.getItem("tn_a11y_prefs"); 70 if (!raw) return; 71 var prefs = JSON.parse(raw); 72 var html = document.documentElement; 73 if (prefs.textScale === "large" || prefs.textScale === "xlarge") { 74 html.setAttribute("data-tn-a11y-text", prefs.textScale); 75 } 76 if (prefs.highContrast) { 77 html.setAttribute("data-tn-a11y-contrast", "high"); 78 } 79 } catch (e) {} 80 })(); 81 </script>
81 82
82<script> 83 (function () { 84 function done() { 85 document.documentElement.classList.add("tn-app-ready"); 86 window.setTimeout(function () { 87 var el = document.getElementById("tn-boot-loader"); 88 if (el) el.remove(); 89 }, 180); 90 } 91 var preload = document.querySelector('link[rel="preload"][as="style"]'); 92 var sheet = document.querySelector('link[rel="stylesheet"][href*="/assets/index-"]'); 93 if (sheet) { 94 done(); 95 return; 96 } 97 if (!preload) return; 98 preload.addEventListener("load", done, { once: true }); 99 preload.addEventListener("error", done, { once: true }); 100 window.setTimeout(done, 8000); 101 })(); 102 </script>
102 103
103<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"9cb7a102209b477385d7e3c39e94b20e","r":1,"spa":2}' crossorigin="anonymous"></script>
103 104</body> 105</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.