- Scan ID:
- 4343ae4d-1f06-4d31-9fb8-868b6521de5aFinished
- Submitted URL:
- https://typecard.com/q/db0c8c83/Redirected
- Report Finished:
Links ยท 2 found
The outgoing links identified from the page
Link | Text |
---|---|
https://www.facebook.com/hassaangulofficial | |
https://www.instagram.com/hassaangul_official |
JavaScript Variables ยท 13 found
Global JavaScript variables loaded on the window object of a page, are variables declared outside of functions and accessible from anywhere in the code within the current scope
Name | Type |
---|---|
onbeforetoggle | object |
documentPictureInPicture | object |
onscrollend | object |
contactButton | object |
notContact | object |
shareContact | object |
shareContactClose | object |
originalText | string |
shareContactDetailsInner | object |
shareContactDetailsSuccess | object |
Console log messages ยท 0 found
Messages logged to the web console
HTML
The raw HTML body of the page
<!DOCTYPE html><html lang="en" class="antialiased"><head>
<title>Hassaan Gul's digital business card</title>
<!-- Schema.org for Google -->
<meta itemprop="name" content="Connect with Hassaan Gul">
<meta itemprop="description" content="Hassaan Gul's digital business card">
<!-- Twitter -->
<meta name="twitter:card" content="summary">
<meta name="twitter:title" content="Connect with Hassaan Gul">
<meta name="twitter:description" content="Hassaan Gul's digital business card">
<meta name="twitter:site" content="@typecard">
<meta name="twitter:creator" content="@typecard">
<meta name="twitter:image:src" content="https://typecard.comhttps://media.typecard.com/media/ugc/WhatsApp_Image_2024-07-13_at_4.41.14_PM.jpeg">
<!-- Open Graph general (Facebook, Pinterest & Google+) -->
<meta property="og:image" content="https://typecard.comhttps://media.typecard.com/media/ugc/WhatsApp_Image_2024-07-13_at_4.41.14_PM.jpeg">
<meta name="og:title" content="Connect with Hassaan Gul">
<meta name="og:description" content="Hassaan Gul's digital business card">
<meta name="og:url" content="https://typecard.com/c3566082">
<meta name="og:site_name" content="Typecard">
<meta name="og:locale" content="en_US">
<meta name="og:type" content="website">
<!-- Google Tag Manager -->
<!-- End Google Tag Manager -->
<meta name="theme-color" content="#6e0000">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<link rel="apple-touch-icon" sizes="57x57" href="/static/website/images/icons/apple-icon-57x57.png">
<link rel="apple-touch-icon" sizes="60x60" href="/static/website/images/icons/apple-icon-60x60.png">
<link rel="apple-touch-icon" sizes="72x72" href="/static/website/images/icons/apple-icon-72x72.png">
<link rel="apple-touch-icon" sizes="76x76" href="/static/website/images/icons/apple-icon-76x76.png">
<link rel="apple-touch-icon" sizes="114x114" href="/static/website/images/icons/apple-icon-114x114.png">
<link rel="apple-touch-icon" sizes="120x120" href="/static/website/images/icons/apple-icon-120x120.png">
<link rel="apple-touch-icon" sizes="144x144" href="/static/website/images/icons/apple-icon-144x144.png">
<link rel="apple-touch-icon" sizes="152x152" href="/static/website/images/icons/apple-icon-152x152.png">
<link rel="apple-touch-icon" sizes="180x180" href="/static/website/images/icons/apple-icon-180x180.png">
<link rel="icon" type="image/png" sizes="192x192" href="/static/website/images/icons/android-icon-192x192.png">
<link rel="icon" type="image/png" sizes="32x32" href="/static/website/images/icons/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="96x96" href="/static/website/images/icons/favicon-96x96.png">
<link rel="icon" type="image/png" sizes="16x16" href="/static/website/images/icons/favicon-16x16.png">
<link rel="shortcut icon" type="image/png" href="/static/website/images/logo.png">
<link rel="stylesheet" type="text/css" href="/static/css/styles.css?q=23">
<script src="https://cdnjs.cloudflare.com/polyfill/v3/polyfill.min.js?version=3.52.1&features=fetch"></script>
<script>
if (typeof window.queueMicrotask !== "function") {
window.queueMicrotask = function (callback) {
Promise.resolve()
.then(callback)
.catch(e => setTimeout(() => { throw e; }));
};
}
</script>
</head>
<body class="text-slate-900 antialiased ">
<div class="xs:max-w-sm mx-auto xs:my-12 xs:p-2">
<div class="overflow-hidden relative xs:rounded-lg xs:shadow xs:border">
<div class="col-span-1 flex flex-col text-white text-center min-h-screen xs:min-h-0" style="color: #FFFFFF;
background-color: #6e0000;
">
<div class="flex flex-1 flex-col p-8">
<div>
<div class="pb-4">
<img class="ml-auto h-8 rounded-xl" src="https://media.typecard.com/media/ugc/FB__Insta_Post.png" alt="">
</div>
<div class="mx-auto h-32 w-32 flex-shrink-0 rounded-lg" style="background-color: rgba(255,255,255,0.4); background-image: url('https://media.typecard.com/media/ugc/WhatsApp_Image_2024-07-13_at_4.41.14_PM.jpeg'); background-repeat:no-repeat; background-position: center; background-size: cover;"></div>
<h3 class="mt-4 font-semibold text-lg">Hassaan Gul</h3>
<dl class="mt-1 flex flex-col justify-between">
<dt class="sr-only">Role</dt>
<dd class="text-sm">Council Candidate (Fawkner & Coburg North) at Merri-Bek City Council - Bababi Djinanang Ward</dd>
</dl>
<dl class="mt-4 pb-1 flex text-left">
<dt class="sr-only">Bio</dt>
<dd>Your Hardworking Local - Candidate for Council</dd>
</dl>
<dl class="not-contact mt-4 space-y-6" style="color: #FFFFFF">
<a href="mailto:[email protected]" class="flex items-top space-x-2 hover:underline">
<div class="w-6">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6 flex-shrink-0">
<path stroke-linecap="round" stroke-linejoin="round" d="M21.75 6.75v10.5a2.25 2.25 0 0 1-2.25 2.25h-15a2.25 2.25 0 0 1-2.25-2.25V6.75m19.5 0A2.25 2.25 0 0 0 19.5 4.5h-15a2.25 2.25 0 0 0-2.25 2.25m19.5 0v.243a2.25 2.25 0 0 1-1.07 1.916l-7.5 4.615a2.25 2.25 0 0 1-2.36 0L3.32 8.91a2.25 2.25 0 0 1-1.07-1.916V6.75"></path>
</svg>
</div>
<div class="text-left">
<p class="truncate">[email protected]</p>
</div>
</a>
<a href="tel:+61425229420" class="flex items-top space-x-2 hover:underline">
<div class="w-6">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1.5" stroke="currentColor" class="w-6 h-6">
<path stroke-linecap="round" stroke-linejoin="round" d="M2.25 6.75c0 8.284 6.716 15 15 15h2.25a2.25 2.25 0 0 0 2.25-2.25v-1.372c0-.516-.351-.966-.852-1.091l-4.423-1.106c-.44-.11-.902.055-1.173.417l-.97 1.293c-.282.376-.769.542-1.21.38a12.035 12.035 0 0 1-7.143-7.143c-.162-.441.004-.928.38-1.21l1.293-.97c.363-.271.527-.734.417-1.173L6.963 3.102a1.125 1.125 0 0 0-1.091-.852H4.5A2.25 2.25 0 0 0 2.25 4.5v2.25Z"></path>
</svg>
</div>
<div class="text-left">
<div class="truncate">+61425 229 420</div>
</div>
</a>
</dl>
<dl class="not-contact mt-6 space-y-6" style="color: #FFFFFF">
<a href="https://www.facebook.com/hassaangulofficial" target="_blank" rel="nofollow" class="flex items-center space-x-2 hover:underline">
<div class="w-6">
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="w-5 h-5 block m-auto" viewBox="0 0 16 16">
<path d="M16 8.049c0-4.446-3.582-8.05-8-8.05C3.58 0-.002 3.603-.002 8.05c0 4.017 2.926 7.347 6.75 7.951v-5.625h-2.03V8.05H6.75V6.275c0-2.017 1.195-3.131 3.022-3.131.876 0 1.791.157 1.791.157v1.98h-1.009c-.993 0-1.303.621-1.303 1.258v1.51h2.218l-.354 2.326H9.25V16c3.824-.604 6.75-3.934 6.75-7.951"></path>
</svg>
</div>
<span>Facebook</span>
</a>
<a href="https://www.instagram.com/hassaangul_official" target="_blank" rel="nofollow" class="flex items-center space-x-2 hover:underline">
<div class="w-6">
<svg xmlns="http://www.w3.org/2000/svg" fill="currentColor" class="w-5 h-5 block m-auto" viewBox="0 0 16 16">
<path d="M8 0C5.829 0 5.556.01 4.703.048 3.85.088 3.269.222 2.76.42a3.9 3.9 0 0 0-1.417.923A3.9 3.9 0 0 0 .42 2.76C.222 3.268.087 3.85.048 4.7.01 5.555 0 5.827 0 8.001c0 2.172.01 2.444.048 3.297.04.852.174 1.433.372 1.942.205.526.478.972.923 1.417.444.445.89.719 1.416.923.51.198 1.09.333 1.942.372C5.555 15.99 5.827 16 8 16s2.444-.01 3.298-.048c.851-.04 1.434-.174 1.943-.372a3.9 3.9 0 0 0 1.416-.923c.445-.445.718-.891.923-1.417.197-.509.332-1.09.372-1.942C15.99 10.445 16 10.173 16 8s-.01-2.445-.048-3.299c-.04-.851-.175-1.433-.372-1.941a3.9 3.9 0 0 0-.923-1.417A3.9 3.9 0 0 0 13.24.42c-.51-.198-1.092-.333-1.943-.372C10.443.01 10.172 0 7.998 0zm-.717 1.442h.718c2.136 0 2.389.007 3.232.046.78.035 1.204.166 1.486.275.373.145.64.319.92.599s.453.546.598.92c.11.281.24.705.275 1.485.039.843.047 1.096.047 3.231s-.008 2.389-.047 3.232c-.035.78-.166 1.203-.275 1.485a2.5 2.5 0 0 1-.599.919c-.28.28-.546.453-.92.598-.28.11-.704.24-1.485.276-.843.038-1.096.047-3.232.047s-2.39-.009-3.233-.047c-.78-.036-1.203-.166-1.485-.276a2.5 2.5 0 0 1-.92-.598 2.5 2.5 0 0 1-.6-.92c-.109-.281-.24-.705-.275-1.485-.038-.843-.046-1.096-.046-3.233s.008-2.388.046-3.231c.036-.78.166-1.204.276-1.486.145-.373.319-.64.599-.92s.546-.453.92-.598c.282-.11.705-.24 1.485-.276.738-.034 1.024-.044 2.515-.045zm4.988 1.328a.96.96 0 1 0 0 1.92.96.96 0 0 0 0-1.92m-4.27 1.122a4.109 4.109 0 1 0 0 8.217 4.109 4.109 0 0 0 0-8.217m0 1.441a2.667 2.667 0 1 1 0 5.334 2.667 2.667 0 0 1 0-5.334"></path>
</svg>
</div>
<span>Instagram</span>
</a>
</dl>
<a id="addToContacts" hdata-url="/vcard/c3566082/" class="hover:scale-105 px-4 py-2 block transition rounded mt-6 font-semibold rounded-lg" style="background: #edf3fe; color: #222222" href="/vcard/c3566082/">+ Save contact</a>
</div>
</div>
<div class="bg-white p-4 rounded text-left text-slate-800 transition-transform duration-200 bottom-0 w-full translate-y-full absolute border-t" id="shareContact">
<div class="text-right">
<button class="inline-block" id="closeShareContact">
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="1" stroke="currentColor" class="h-8 w-8">
<path stroke-linecap="round" stroke-linejoin="round" d="m9.75 9.75 4.5 4.5m0-4.5-4.5 4.5M21 12a9 9 0 1 1-18 0 9 9 0 0 1 18 0Z"></path>
</svg>
<span class="sr-only">Close contact share modal</span>
</button>
</div>
<div id="shareContactDetailsInner">
<h2 class="text-lg mb-4">Share your contact details with <span class="font-semibold">Hassaan Gul</span></h2>
<form action="/c3566082/">
<input type="hidden" name="csrfmiddlewaretoken" value="ZnG19LjCQAJvUWACnxAsJDXDhDBsVA40AHD0JiPGCBeNsthfuql5NsI6LlwuUgtt">
<div class="mb-6" id="id_name_group">
<label for="id_name" class="block text-sm font-medium text-slate-900">Name</label>
<div class="mt-1">
<input maxlength="400" required="" type="text" name="name" id="id_name" class="h-10 shadow-sm focus:ring-sky-500 focus:border-sky-500 block w-full sm:text-sm border-slate-300 rounded-md" placeholder="">
</div>
</div>
<div class="mb-6" id="id_email_address_group">
<label for="id_email_address" class="block text-sm font-medium text-slate-900">Email address</label>
<div class="mt-1">
<input maxlength="254" type="email" name="email_address" id="id_email_address" class="h-10 shadow-sm focus:ring-sky-500 focus:border-sky-500 block w-full sm:text-sm border-slate-300 rounded-md" placeholder="">
</div>
</div>
<button type="submit" class="button-primary w-full block">Send</button>
</form>
</div>
<div id="shareContactDetailsSuccess" class="hidden text-slate-800">
<h2 class="text-lg mb-4">Your contact details have been sent to <span class="font-semibold">Hassaan Gul</span></h2>
<p>Create your own digital business card with Typecard for free</p>
<a href="/select-theme/?ref=contact-c3566082" target="_blank" rel="nofollow" class="button-primary block mt-4 text-center">Create your Typecard</a>
</div>
</div>
</div>
</div>
</div>
<script>
var contactButton = document.querySelector('#addToContacts');
var notContact = document.querySelectorAll('.not-contact');
var shareContact = document.querySelector('#shareContact');
var shareContactClose = shareContact.querySelector("#closeShareContact");
var originalText = contactButton.textContent;
var shareContactDetailsInner = shareContact.querySelector("#shareContactDetailsInner");
var shareContactDetailsSuccess = shareContact.querySelector("#shareContactDetailsSuccess");
var shareContactForm = shareContact.querySelector("form");
function showContactModal(){
contactButton.textContent = "Loading...";
contactButton.disabled = true;
// Wait for 1.5 seconds
setTimeout(function() {
// Perform the original actions
notContact.forEach(function(element) {
element.classList.add('hidden');
});
contactButton.classList.add('hidden');
shareContact.classList.remove('translate-y-full');
shareContact.classList.remove('absolute');
// Change button text back to original
contactButton.textContent = originalText;
contactButton.disabled = false; // Re-enable the button if you disabled it
}, 1000); // 1500 milliseconds = 1.5 seconds
};
function hideContactModal(){
notContact.forEach(function(element) {
element.classList.remove('hidden');
});
contactButton.classList.remove('hidden');
shareContact.classList.add('translate-y-full');
shareContact.classList.add('absolute');
shareContactDetailsInner.classList.remove('hidden');
shareContactDetailsSuccess.classList.add('hidden');
};
contactButton.addEventListener('click', function() {
showContactModal();
});
shareContactClose.addEventListener('click', function(e){
hideContactModal();
});
// shareContactForm.addEventListener('submit', function(e){
// e.preventDefault();
// shareContactDetailsInner.classList.add('hidden');
// shareContactDetailsSuccess.classList.remove('hidden');
// });
shareContactForm.addEventListener('submit', function (event) {
event.preventDefault();
const formData = new FormData(shareContactForm);
const csrfToken = document.querySelector('[name=csrfmiddlewaretoken]').value;
fetch(shareContactForm.action, {
method: 'POST',
headers: {
'X-Requested-With': 'XMLHttpRequest',
'X-CSRFToken': csrfToken,
},
body: formData
})
.then(response => response.json())
.then(data => {
if (data.success) {
shareContactDetailsInner.classList.add('hidden');
shareContactDetailsSuccess.classList.remove('hidden');
} else {
// Handle errors
const errors = data.errors;
for (const [field, messages] of Object.entries(errors)) {
const input = document.querySelector(`[name="${field}"]`);
if (input) {
// Remove previous error messages if any
const existingError = input.parentElement.querySelector('.error');
if (existingError) {
existingError.remove();
}
// Add new error message
const errorDiv = document.createElement('div');
errorDiv.className = 'error';
errorDiv.textContent = messages.join(', ');
input.parentElement.appendChild(errorDiv);
}
}
}
})
.catch(error => {
console.error('Network error:', error);
});
});
</script>
<div class="flex justify-center fixed bottom-0 right-10 hidden xs:block">
<a target="_blank" rel="nofollow" href="https://typecard.com/?ref=c3566082" class="flex items-center space-x-2 text-xs font-semibold hover:py-2 hover:px-4 transition-all border-t border-l border-r border-slate-400 text-slate-600 py-1 rounded-t-lg bg-white px-3">
<span>Create your Typecard</span>
<svg xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 24 24" stroke-width="3" stroke="currentColor" class="w-3 h-3">
<path stroke-linecap="round" stroke-linejoin="round" d="m4.5 19.5 15-15m0 0H8.25m11.25 0v11.25"></path>
</svg>
</a>
</div>
</body></html>