shop.luxonis.com
Open in
urlscan Pro
2620:127:f00f:e::
Public Scan
Submitted URL: http://shop.luxonis.com/
Effective URL: https://shop.luxonis.com/
Submission: On October 30 via manual from DE — Scanned from CA
Effective URL: https://shop.luxonis.com/
Submission: On October 30 via manual from DE — Scanned from CA
Form analysis
9 forms found in the DOMPOST /localization
<form action="/localization" method="POST"><input name="_method" type="hidden" value="PUT"><input name="source" type="hidden" value="geolocation_recommendation"><input name="return_to" type="hidden" value="/"><input name="country_code" type="hidden"
value="CA"><button class="recommendation-modal__close-button" type="submit"><svg aria-label="Dismiss" viewBox="0 0 20 20" xmlns="http://www.w3.org/2000/svg" style="height: 1em; width: 1em;">
<path d="M11.414 10l6.293-6.293a.999.999 0 1 0-1.414-1.414L10 8.586 3.707 2.293a.999.999 0 1 0-1.414 1.414L8.586 10l-6.293 6.293a.999.999 0 1 0 1.414 1.414L10 11.414l6.293 6.293a.997.997 0 0 0 1.414 0 .999.999 0 0 0 0-1.414L11.414 10z"
fill="rgba(53, 49, 49, 1)"></path>
</svg></button></form>
POST /localization
<form action="/localization" method="POST" class="recommendation-modal__form"><input name="_method" type="hidden" value="PUT"><input name="source" type="hidden" value="geolocation_recommendation"><input name="return_to" type="hidden" value="/"><input
name="country_code" type="hidden" value="CA"><button class="recommendation-modal__button" type="submit" style="background-color: rgb(87, 36, 232); color: rgb(255, 255, 255);">Continue</button></form>
#
<form class="newsletter-sendy-form pr z_100" action="#">
<div>
<div class="signup-newsletter-form row no-gutters pr oh ">
<div class="col-md col-12 col_email"><input type="email" name="email" placeholder="Your email address" value="" class="tc tl_md class_ip input-text" required="required"></div>
<div class="col-md-auto col-12"><button type="submit" class="css_add_ld btn_new_icon_false w__100 submit-btn truncate"><span>Subscribe</span></button></div>
</div>
</div>
<div class="newsletter-sendy-form-response">
<div class="shopify-message success_message dn"><i class="las la-check"></i>Thanks for subscribing</div>
<div class="shopify-warning dn"><i class="las la-exclamation-triangle"></i><span class="error_message"></span></div>
</div>
</form>
POST /cart
<form id="site-cart-form-widget" action="/cart" method="post" novalidate="" class="nt_mini_cart nt_js_cart flex column h__100 btns_cart_1">
<input type="hidden" data-cart-attr-rm="" name="attributes[cat_mb_items_per_row]" value=""><input type="hidden" data-cart-attr-rm="" name="attributes[cat_tb_items_per_row]" value=""><input type="hidden" data-cart-attr-rm=""
name="attributes[cat_dk_items_per_row]" value="">
<input type="hidden" data-cart-attr-rm="" name="attributes[auto_hide_ofsock]" value=""><input type="hidden" data-cart-attr-rm="" name="attributes[paginate_ntt4]" value=""><input type="hidden" data-cart-attr-rm="" name="attributes[limit_ntt4]"
value=""><input type="hidden" data-cart-attr-rm="" name="attributes[use_bar_lmntt4]" value="">
<div class="mini_cart_header flex fl_between al_center">
<div class="h3 widget-title tu fs__16 mg__0">Shopping cart</div><i class="close_pp pegk pe-7s-close ts__03 cd"></i>
</div>
<div class="mini_cart_wrap">
<div class="mini_cart_content fixcl-scroll">
<div class="fixcl-scroll-content">
<div class="empty tc mt__40"><i class="las la-shopping-bag pr mb__10"></i>
<p>Your cart is empty.</p>
<p class="return-to-shop mb__15"><a class="button button_primary tu js_add_ld" href="/collections/all"><span class="truncate">Return To Shop</span></a></p>
</div>
<div class="cookie-message dn">Enable cookies to use the shopping cart</div>
<div id="cart-items-id" class="mini_cart_items js_cat_items lazyloadt4sed" data-rendert4s="/cart/?view=viewjs" data-currentrendert4s=""></div>
<div class="mini_cart_tool js_cart_tool tc dn"></div>
<div data-cart-upsell-js="" data-baseurl="/recommendations/products" data-limit="10" data-id=""></div>
</div>
</div>
<div class="mini_cart_footer js_cart_footer dn" style="">
<div class="js_cat_dics"></div>
<div class="total row fl_between al_center">
<div class="col-auto"><strong>Subtotal:</strong></div>
<div id="cart-price-wrapper-id" class="col-auto tr js_cat_ttprice fwb">
<div id="cart_tot_price_id" class="cart_tot_price">$0.00</div>
</div>
</div>
<p class="txt_tax_ship mb__5 fs__12">Taxes and shipping calculated at checkout </p>
<style>
.js_cat_free_shipping .free-shipping-wrapper {
display: block;
background-color: #ebf4ff;
color: #033c5b;
padding: 6px 12px;
margin: 6px 0px;
border-radius: 5px;
}
.js_cat_free_shipping span {
color: #033c5b;
font-weight: 600;
text-decoration: underline;
}
</style>
<div class="js_cat_free_shipping">
</div>
<style data-shopify="">
.vat__form {
width: 30rem;
}
.vat_div {
margin-bottom: 10px;
width: 100%;
}
.vat-id-label {
color: red;
font-size: smaller;
}
.dualPrice {
display: inline-block;
}
.price-varies-custom {
display: none;
}
@media screen and (max-width: 749px) {
.vat__field {
display: flex;
align-items: center;
justify-content: center;
}
.vat__form {
width: unset;
flex: 1;
max-width: 360px;
}
}
</style>
<div class="contact__fields vat__field" id="vat-id-main-div" hidden="">
<div class="field vat_div">
<label id="vat-id-label" for="vat-id" class="vat-id-label"></label>
<input class="field__input" type="text" name="vat" form="cart" id="vat-id" placeholder="VAT ID (Optional)" onblur="checkVat(this.value)" minlength="10">
</div>
<div hidden="" class="field vat_div">
<input class="field__input" type="email" name="vat-email" form="cart" id="vat-email" placeholder="Email (Required for VAT)">
</div>
<div hidden="">
<input type="hidden" id="customer-vat" name="customer-vat-response" form="site-cart-form-widget" value="">
<div hidden="" id="vat-id-form-id">site-cart-form-widget</div>
<div hidden="" id="div-local-code">US</div>
</div>
</div>
<script>
const euCountries = {
'BE': 21,
'BG': 20,
'CZ': 21,
'DK': 25,
'DE': 19,
'EE': 20,
'IE': 23,
'EL': 24,
'ES': 21,
'FR': 20,
'HR': 25,
'IT': 22,
'CY': 19,
'LV': 21,
'LT': 21,
'LU': 16,
'HU': 27,
'MT': 18,
'NL': 21,
'AT': 20,
'PL': 23,
'PT': 23,
'RO': 19,
'SI': 22,
'SK': 20,
'FI': 24,
'SE': 25,
'GR': 24
};
/*
const euCountriesArray = [
'BE', 'BG', 'CZ', 'DK', 'DE', 'EE', 'GR', 'IE', 'EL', 'ES', 'FR',
'HR', 'IT', 'CY', 'LV', 'LT', 'LU', 'HU', 'MT', 'NL', 'AT',
'PL', 'PT', 'RO', 'SI', 'SK', 'FI', 'SE'
]
*/
const eftaCountries = ['IS', 'LI', 'NO', 'CH']
const formId = document.getElementById("vat-id-form-id").textContent;
const cart = document.getElementById(formId);
let selected = document.getElementById("div-local-code").textContent;
let divCartNote = document.getElementById("vat-id-main-div");
if (euCountries[selected]) {
divCartNote.hidden = false;
} else {
divCartNote.hidden = true;
}
function isValidVat(viesResponse) {
return viesResponse.isValid || viesResponse.userError === 'TIMEOUT' || viesResponse.userError === 'MS_MAX_CONCURRENT_REQ';
}
window.onload = function() {
const localVatId = localStorage.getItem("vatId");
if (localVatId) {
document.getElementById("vat-id").value = localVatId;
}
document.getElementById(formId.trim()).addEventListener("submit", async function(e) {
const checkoutBtn = document.getElementById("button-checkout");
e.preventDefault();
checkoutBtn.classList.add("loading");
const veis = await checkVat(document.getElementById("vat-id").value);
checkoutBtn.classList.remove("loading");
if (!isValidVat(veis)) {
invalidVat(veis.userError);
} else {
document.getElementById("vat-id-label").innerHTML = '';
const checkoutHiddenInput = document.createElement("input");
checkoutHiddenInput.setAttribute("type", "hidden");
checkoutHiddenInput.setAttribute("name", "checkout");
checkoutHiddenInput.setAttribute("value", "");
cart.appendChild(checkoutHiddenInput);
let vatId = '';
if (veis.userError !== '') {
const vatIdInput = document.getElementById("vat-id").value.replaceAll(" ", "");
const vatCountry = vatIdInput.slice(0, 2).toUpperCase();
vatId = euCountries[vatCountry] ? vatIdInput : selected + vatIdInput;
/*
const providedEmail = document.getElementById("vat-email").value;
var action = cart.getAttribute('action');
cart.setAttribute('action', action + (action.indexOf('?') >= 0 ? '&' : '?') + 'checkout[email]=' + encodeURIComponent(providedEmail));
*/
}
const checkoutHiddenInput2 = document.createElement("input");
checkoutHiddenInput2.setAttribute("type", "hidden");
checkoutHiddenInput2.setAttribute("name", "attributes[VAT-ID]");
checkoutHiddenInput2.setAttribute("value", vatId);
cart.appendChild(checkoutHiddenInput2);
cart.submit();
}
}, true);
}
function invalidVat(error) {
const vatLabel = document.getElementById("vat-id-label");
switch (error) {
case 'INVALID_INPUT':
vatLabel.innerHTML = 'Invalid VAT ID was provided.';
break;
case 'INVALID':
vatLabel.innerHTML = 'Invalid VAT ID was provided.';
break;
case 'EMPTY_EMAIL':
vatLabel.innerHTML = 'Missing email.';
break;
case 'VAT_SHORT':
vatLabel.innerHTML = 'Provided VAT is too short';
break;
default:
vatLabel.innerHTML = 'VAT could not be validated, VIES validation service currently unavailable. Try again later.';
break;
}
}
async function validateVat() {
const providedVatId = document.getElementById("vat-id").value.replaceAll(" ", "");
const vatCountry = providedVatId.slice(0, 2).toUpperCase();
const vatId = euCountriesArray.some(it => it === vatCountry) ? providedVatId : selected + providedVatId;
const providedEmail = document.getElementById("vat-email").value;
if (!providedVatId) return {
isValid: true,
userError: ''
};
if (providedVatId.length > 0 && providedVatId.length < 8) return {
isValid: false,
userError: 'VAT_SHORT'
}
if (providedVatId && !providedEmail) return {
isValid: false,
userError: 'EMPTY_EMAIL'
};
let options = {
method: 'POST',
headers: {
'Content-Type': 'application/json;charset=utf-8',
'Access-Control-Allow-Origin': '*',
},
body: JSON.stringify({
'email': providedEmail,
'vatId': vatId,
}),
}
try {
let response = await fetch("https://store-api.luxonis.com/tax-exemption/", options);
if (!response.ok) return {
isValid: false,
userError: ''
};
document.getElementById("customer-vat").value = providedVatId;
return response.json();
} catch (e) {
console.log(e);
return {
isValid: false,
userError: ''
};
}
return {
isValid: false,
userError: ''
};
}
async function checkVat(value) {
if (value === "") {
document.getElementById("vat-id-label").innerHTML = '';
return {
isValid: true,
userError: ''
};
}
value = value.replaceAll(" ", "");
let result;
if (value.length > 0 && value.length < 8) result = {
isValid: false,
userError: 'VAT_SHORT'
};
if (!result) {
try {
const checkoutBtn = document.getElementById("button-checkout");
checkoutBtn.classList.add("loading");
let response = await fetch("https://store-api.luxonis.com/validate-vat/" + value);
checkoutBtn.classList.remove("loading");
if (!response.ok) result = {
isValid: false,
userError: ''
};
result = await response.json();
localStorage.setItem("vatId", value);
} catch (e) {
console.log(e);
result = {
isValid: false,
userError: ''
};
}
}
if (!isValidVat(result)) {
invalidVat(result.userError);
} else {
document.getElementById("vat-id-label").innerHTML = '';
}
return result;
}
</script>
<textarea name="note" id="CartSpecialInstructions" placeholder="Add order note (Optional)"></textarea>
<div class="payment-icon-wrapper">
<img class="payment-icon" src="//shop.luxonis.com/cdn/shop/t/44/assets/payment-card.svg?v=157582869446763438241716560034" alt="Payment Card" width="24" height="24">
<img class="payment-icon" src="//shop.luxonis.com/cdn/shop/t/44/assets/payment-apple.svg?v=121271476123843558351716560035" alt="Payment Apple Pay" width="24" height="24">
<img class="payment-icon" src="//shop.luxonis.com/cdn/shop/t/44/assets/payment-google.svg?v=2382670462411005171716560034" alt="Payment Google Pay" width="24" height="24">
</div>
<button type="submit" data-confirm="ck_lumise" name="checkout" id="button-checkout" class="button btn-checkout mt__10 mb__10 js_add_ld truncate"><span class="btn-checkout-text">Check Out</span></button>
</div>
</div>
</form>
POST /account/login
<form method="post" action="/account/login" id="customer_login" accept-charset="UTF-8" data-login-with-shop-sign-in="true" novalidate="novalidate" class="nt_mini_cart flex column h__100 is_selected"><input type="hidden" name="form_type"
value="customer_login"><input type="hidden" name="utf8" value="✓">
<div class="mini_cart_header flex fl_between al_center">
<div class="h3 widget-title tu fs__16 mg__0">Login</div><i class="close_pp pegk pe-7s-close ts__03 cd"></i>
</div>
<div class="mini_cart_wrap">
<div class="mini_cart_content fixcl-scroll">
<div class="fixcl-scroll-content">
<p class="form-row">
<label for="CustomerEmail">Email <span class="required">*</span></label>
<input type="email" name="customer[email]" id="CustomerEmail" autocomplete="email" autocorrect="off" autocapitalize="off">
</p>
<p class="form-row">
<label for="CustomerPassword">Password <span class="required">*</span></label>
<input type="password" value="" name="customer[password]" id="CustomerPassword">
</p><input type="submit" class="button button_primary w__100 tu js_add_ld" value="Sign In">
<br>
<p class="mb__10 mt__20">New customer? <a data-no-instant="" rel="nofollow" href="/" data-id="#RegisterForm" class="link_acc">Create your account</a></p>
<p>Lost password? <a data-no-instant="" rel="nofollow" href="#recover" data-id="#RecoverForm" class="link_acc">Recover password</a></p>
</div>
</div>
</div>
</form>
POST /account/recover
<form method="post" action="/account/recover" id="RecoverForm" accept-charset="UTF-8" class="nt_mini_cart flex column h__100"><input type="hidden" name="form_type" value="recover_customer_password"><input type="hidden" name="utf8" value="✓">
<div class="mini_cart_header flex fl_between al_center">
<div class="h3 widget-title tu fs__16 mg__0">Recover password</div><i class="close_pp pegk pe-7s-close ts__03 cd"></i>
</div>
<div class="mini_cart_wrap">
<div class="mini_cart_content fixcl-scroll">
<div class="fixcl-scroll-content">
<p class="form-row">
<label for="RecoverEmail">Email address</label>
<input type="email" value="" name="email" id="RecoverEmail" class="input-full" autocorrect="off" autocapitalize="off">
</p>
<input type="submit" class="button button_primary w__100 tu js_add_ld" value="Reset Password">
<br>
<p class="mb__10 mt__20">Remembered your password? <a data-no-instant="" rel="nofollow" href="/" data-id="#customer_login" class="link_acc">Back to login</a></p>
</div>
</div>
</div>
</form>
POST /account
<form method="post" action="/account" id="RegisterForm" accept-charset="UTF-8" data-login-with-shop-sign-up="true" novalidate="novalidate" class="nt_mini_cart flex column h__100"><input type="hidden" name="form_type" value="create_customer"><input
type="hidden" name="utf8" value="✓">
<div class="mini_cart_header flex fl_between al_center">
<div class="h3 widget-title tu fs__16 mg__0">Register</div><i class="close_pp pegk pe-7s-close ts__03 cd"></i>
</div>
<div class="mini_cart_wrap">
<div class="mini_cart_content fixcl-scroll">
<div class="fixcl-scroll-content">
<p class="form-row">
<label for="-FirstName">First Name</label>
<input type="text" name="customer[first_name]" id="-FirstName" autocomplete="given-name">
</p>
<p class="form-row">
<label for="-LastName">Last Name</label>
<input type="text" name="customer[last_name]" id="-LastName" autocomplete="family-name">
</p>
<p class="form-row">
<label for="-email">Email <span class="required">*</span></label>
<input type="email" name="customer[email]" id="-email" class="" autocorrect="off" autocapitalize="off" autocomplete="email" aria-required="true">
</p>
<p class="form-row">
<label for="-password">Password <span class="required">*</span></label>
<input type="password" name="customer[password]" id="-password" class="" aria-required="true">
</p><input type="submit" value="Register" class="button button_primary w__100 tu js_add_ld">
<br>
<p class="mb__10 mt__20">Already have an account? <a data-no-instant="" rel="nofollow" href="/" data-id="#customer_login" class="link_acc">Login here</a></p>
</div>
</div>
</div>
</form>
GET /search
<form action="/search" method="get" class="search_header mini_search_frm pr js_frm_search" role="search">
<input type="hidden" name="type" value="product">
<input type="hidden" name="options[unavailable_products]" value="last">
<input type="hidden" name="options[prefix]" value="none">
<div class="frm_search_input pr oh">
<input class="search_header__input js_iput_search" autocomplete="off" type="text" name="q" placeholder="Search for products">
<button class="search_header__submit js_btn_search pe_none" type="submit"><i class="iccl iccl-search"></i></button>
</div>
<div class="ld_bar_search"></div>
</form>
POST /localization
<form method="post" action="/localization" id="localization_form" accept-charset="UTF-8" class="shopify-localization-form" enctype="multipart/form-data"><input type="hidden" name="form_type" value="localization"><input type="hidden" name="utf8"
value="✓"><input type="hidden" name="_method" value="put"><input type="hidden" name="return_to" value="/?_s=_s-l-f">
<input type="hidden" name="country_code" value="US">
<input type="hidden" name="language_code" value="en">
</form>
Text Content
YOUR LOCATION IS SET TO CANADA * Shop in USD $ * Get shipping options for Canada Continue Change country/region Skip to content LUXONIS * OAK Cameras * OAK Modules * Accessories * Early Access * Guide 0 NEW PRODUCTS OAK 4 S $699 $699.00 VAT incl. $699.00 69900 US PREORDER OAK 4 PRO $899 $899.00 VAT incl. $899.00 89900 US PREORDER OAK THERMAL $599 $599.00 VAT incl. $599.00 59900 US PREORDER OAK TIME OF FLIGHT $399 $399.00 VAT incl. $399.00 39900 US NEW In stock 1. support@luxonis.com Follow on TwitterFollow on LinkedinFollow on YouTube * Luxonis Homepage * Hardware Documentation * DepthAI’s Documentation * GitHub Repository * FAQ * Shipping Info * Return and Refund Policy * Terms and Conditions * Privacy Policy * Certificates * Other Devices * Distributors NEWSLETTER SIGNUP Be the first to learn about our new products and updates Subscribe Thanks for subscribing COUNTRY Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday January,February,March,April,May,June,July,August,September,October,November,December Not enough items available. Only [max] left. Shopping cart Your cart is empty. Return To Shop Enable cookies to use the shopping cart Subtotal: $0.00 Taxes and shipping calculated at checkout site-cart-form-widget US Check Out Login Email * Password * New customer? Create your account Lost password? Recover password Recover password Email address Remembered your password? Back to login Register First Name Last Name Email * Password * Already have an account? Login here SEARCH OUR SITE Search Result:Search Results: