At Ultimate Glass Etching, we combine traditional craftsmanship with modern technology. Based in Las Vegas, we offer a comprehensive suite of custom glass etching and sandblasting services for both residential and commercial clients. We transform plain glass, stone, and wood into bespoke works of art.
0+
Years Experience
TOP
Luxury Brands Trusted
+2
Bespoke Designs Created
USA
Nationwide Reach
Architectural & Decorative Glass
From elegant etched glass doors that balance privacy and light, to decorative custom calligraphy mirrors for luxury spaces like spas and hotel lobbies. We specialize in both subtle frosted glass patterns and bold, multi-dimensional deep-carved motifs.
Personalized Art & Digital Designs
We craft personalized engraved gifts and pet memorials capturing heartfelt moments on premium stone and glass. For DIY artists, we also offer our exclusive vector files and SVG designs to bring our patterns to your own projects.
TRUSTED BY LUXURY BRANDS
Our premium work adorns top Las Vegas hotels such as The Cosmopolitan and Bellagio. We use high-quality glass, crystal, marble, granite, and wood to guarantee lasting luxury. From design to fabrication, your project is in expert hands.
OUR ARTISAN PROCESS
Consultation
Discussing the project scale, materials, and your unique vision.
Design Sketches
Creating custom vector files, typography, and conceptual sketches.
Proof Approvals
Reviewing mock-ups together to ensure every detail is perfectly aligned.
Precise Sandblasting
Applying deep carving and surface etching to bring the concept to life.
/**
* Ultimate Glass Etching — Header v4
* File: uge-header-v4.js
*
* Enqueue via child theme functions.php (load in footer):
*
* wp_enqueue_script(
* 'uge-header-v4',
* get_stylesheet_directory_uri() . '/js/uge-header-v4.js',
* [], '4.0.0', true
* );
*
* What this does
* ──────────────
* A. Marks non-homepage with .uge-not-home → CSS keeps header solid.
* B. Toggles .uge-scrolled on .uge-header after scroll threshold.
* C. Builds a slide-in mobile panel with:
* – Close button + dark overlay
* – Nav items (live DOM clone → hardcoded fallback)
* – Expandable Services + Shop sub-menus
* – Search, My Account (/my-account/), Request a Quote (/contact/)
* – Closes on: X button, overlay, Escape key, normal link click
* D. Intercepts the Elementor hamburger click to open the custom panel.
*
* Duplicate-listener guard: dataset flag on + event delegation.
* No inline event attributes, no per-element re-attachment.
*/
(function () {
'use strict';
/* ── Single-init guard ─────────────────────────────────── */
if (document.documentElement.dataset.ugeV4) return;
document.documentElement.dataset.ugeV4 = '1';
var SCROLL_PX = 70;
var MOBILE_PX = 1024;
/* ══════════════════════════════════════════════════════
A. NON-HOME BODY CLASS
══════════════════════════════════════════════════════ */
if (!document.body.classList.contains('home')) {
document.body.classList.add('uge-not-home');
}
/* ══════════════════════════════════════════════════════
B. SCROLL → SOLID
══════════════════════════════════════════════════════ */
var header = document.querySelector('.uge-header');
function syncScroll() {
if (!header) return;
header.classList.toggle('uge-scrolled', window.scrollY > SCROLL_PX);
}
if (header) {
window.addEventListener('scroll', syncScroll, { passive: true });
syncScroll();
}
/* ══════════════════════════════════════════════════════
C. BUILD MOBILE PANEL
══════════════════════════════════════════════════════ */
/* Nav data: try to clone from rendered Elementor menu, else use spec */
function getNavItems() {
var menuEl = document.querySelector(
'.uge-header .elementor-nav-menu--main .elementor-nav-menu'
);
if (menuEl) {
var items = [];
menuEl.querySelectorAll(':scope > li').forEach(function (li) {
var a = li.querySelector(':scope > a');
var sub = li.querySelector(':scope > ul.sub-menu');
var children = [];
if (sub) {
sub.querySelectorAll(':scope > li > a').forEach(function (ca) {
children.push({ label: ca.textContent.trim(), href: ca.getAttribute('href') });
});
}
if (a) items.push({ label: a.textContent.trim(), href: a.getAttribute('href'), children: children });
});
if (items.length) return items;
}
/* Hard-coded fallback matching the approved nav spec */
return [
{ label: 'Home', href: '/', children: [] },
{ label: 'Services', href: '#', children: [
{ label: 'Deep Glass Etching', href: '/services/deep-glass-etching/' },
{ label: 'Glass Sandblasting', href: '/services/glass-sandblasting/' },
{ label: 'Architectural Glass', href: '/services/architectural-glass/' },
{ label: 'Mirror Etching', href: '/services/mirror-etching/' },
{ label: 'Gold Leaf', href: '/services/gold-leaf/' },
{ label: 'Trade & White Label Fabrication', href: '/services/trade-fabrication/' },
]},
{ label: 'Shop', href: '#', children: [
{ label: 'Shop All', href: '/shop/' },
{ label: 'Zodiac Glass Art', href: '/shop/zodiac/' },
{ label: 'Memorial Glass', href: '/shop/memorial/' },
{ label: 'Etched Drinkware', href: '/shop/drinkware/' },
{ label: 'Persian & Calligraphy Art', href: '/shop/persian-calligraphy/' },
{ label: 'Custom Glass Gifts', href: '/shop/custom-gifts/' },
]},
{ label: 'Portfolio', href: '/portfolio/', children: [] },
{ label: 'About', href: '/about/', children: [] },
{ label: 'Resources', href: '/resources/', children: [] },
{ label: 'Contact', href: '/contact/', children: [] },
];
}
function buildPanel() {
/* overlay */
var overlay = document.createElement('div');
overlay.id = 'uge-mob-overlay';
overlay.setAttribute('aria-hidden', 'true');
/* panel */
var panel = document.createElement('nav');
panel.id = 'uge-mobile-panel';
panel.setAttribute('role', 'dialog');
panel.setAttribute('aria-modal', 'true');
panel.setAttribute('aria-label', 'Mobile navigation');
panel.setAttribute('aria-hidden', 'true');
/* close button */
var closeBtn = document.createElement('button');
closeBtn.id = 'uge-mob-close';
closeBtn.setAttribute('aria-label', 'Close menu');
closeBtn.innerHTML = 'Close ';
panel.appendChild(closeBtn);
/* nav list */
var ul = document.createElement('ul');
ul.className = 'uge-mob-nav';
getNavItems().forEach(function (item) {
var li = document.createElement('li');
var hasKids = item.children && item.children.length > 0;
if (hasKids) li.classList.add('has-children');
var a = document.createElement('a');
a.href = item.href;
a.textContent = item.label;
li.appendChild(a);
if (hasKids) {
var subUl = document.createElement('ul');
subUl.className = 'uge-sub-menu';
item.children.forEach(function (c) {
var sli = document.createElement('li');
var sa = document.createElement('a');
sa.href = c.href;
sa.textContent = c.label;
sli.appendChild(sa);
subUl.appendChild(sli);
});
li.appendChild(subUl);
}
ul.appendChild(li);
});
panel.appendChild(ul);
/* utility section: search + account + CTA */
var util = document.createElement('div');
util.className = 'uge-mob-utility';
/* Try to clone from the hidden HTML widget seed in the header */
var seed = document.getElementById('uge-mobile-extras');
if (seed) {
var clone = seed.cloneNode(true);
clone.removeAttribute('id');
clone.removeAttribute('aria-hidden');
clone.style.display = '';
clone.className = 'uge-mob-utility';
panel.appendChild(clone);
} else {
util.innerHTML =
'
' +
'' +
'
' +
'' +
' My Account' +
'' +
'Request a Quote';
panel.appendChild(util);
}
document.body.appendChild(overlay);
document.body.appendChild(panel);
return { panel: panel, overlay: overlay, closeBtn: closeBtn, ul: ul };
}
/* ── Open / close ── */
var refs = null;
function openPanel() {
if (!refs) return;
refs.panel.classList.add('uge-panel-open');
refs.panel.setAttribute('aria-hidden', 'false');
refs.overlay.classList.add('uge-overlay-visible');
document.body.classList.add('uge-panel-active');
setTimeout(function () { refs.closeBtn.focus(); }, 40);
}
function closePanel() {
if (!refs) return;
refs.panel.classList.remove('uge-panel-open');
refs.panel.setAttribute('aria-hidden', 'true');
refs.overlay.classList.remove('uge-overlay-visible');
document.body.classList.remove('uge-panel-active');
var tog = document.querySelector('.uge-header .elementor-menu-toggle');
if (tog) tog.focus();
}
/* ══════════════════════════════════════════════════════
D. WIRE UP (event delegation — no per-element listeners)
══════════════════════════════════════════════════════ */
function init() {
if (!header) return;
refs = buildPanel();
/* close button */
refs.closeBtn.addEventListener('click', closePanel);
/* overlay */
refs.overlay.addEventListener('click', closePanel);
/* Escape */
document.addEventListener('keydown', function (e) {
if (e.key === 'Escape' && refs.panel.classList.contains('uge-panel-open')) {
closePanel();
}
});
/* Link clicks inside panel — close on real nav, expand on parents */
refs.panel.addEventListener('click', function (e) {
/* Expand toggle for parent items */
var parentLink = e.target.closest('li.has-children > a');
if (parentLink) {
e.preventDefault();
var li = parentLink.parentElement;
var wasOpen = li.classList.contains('open');
refs.ul.querySelectorAll('li.has-children.open').forEach(function (s) {
if (s !== li) s.classList.remove('open');
});
li.classList.toggle('open', !wasOpen);
return;
}
/* Close panel on normal link */
var link = e.target.closest('a');
if (link) {
var href = link.getAttribute('href');
if (href && href !== '#') closePanel();
}
});
/* Hamburger intercept — open our panel on mobile */
header.addEventListener('click', function (e) {
if (window.innerWidth > MOBILE_PX) return;
if (e.target.closest('.elementor-menu-toggle')) {
setTimeout(openPanel, 0);
}
});
}
/* ── DOM ready ── */
if (document.readyState === 'loading') {
document.addEventListener('DOMContentLoaded', init);
} else {
init();
}
/* ── Re-init only if panel was removed (SPA transitions) ── */
window.addEventListener('elementor/frontend/init', function () {
if (!document.getElementById('uge-mobile-panel')) {
refs = null;
init();
}
});
})();