tag of the document. This will help to improve the load of the images
// during color swatches interaction on PLP
const preloadBackground = (entries, observer) => {
entries.forEach(async (entry) => {
if (entry.isIntersecting) {
const swatch = entry.target;
const images = swatch.dataset.varimg.split(',');
images.forEach((img, index) => {
// preload image
const link = document.createElement('link');
link.href = buildSrc(img);
link.imagesrcset = getSrcset(img);
link.imagesizes = cssImageMediaCondition;
link.rel = 'preload';
link.as = 'image';
document.getElementsByTagName('head')[0].appendChild(link);
});
swatch.removeAttribute('data-varimg');
switchObserver.unobserve(swatch);
}
});
};
const switchObserver = new IntersectionObserver(preloadBackground, {
root: null, // Default is the viewport
rootMargin: '30px',
threshold: 0.05, // Load image when 10% of the div is visible
});
// Sort options
function getPageParam() {
const urlParams = new URLSearchParams(window.location.search);
const pageParam = urlParams.get('page');
return pageParam ? parseInt(pageParam, 10) : 1;
}
domLoadedPage = getPageParam();
setupSortDropdown('.fs_sort_by_wrap_desktop', '.fs_sort_by_options_desktop', '.fs_sort_by_select_desktop');
const sortBySelect = document.getElementById('sortByDesktop');
let sortByValue = getSortBy(); // call the function and store the returned value
sortBySelect.value = sortByValue; // update the desktop dropdown value on page load
// update sort mobile dropdown value on page load
const validSortOptions = ['price_min_to_max', 'price_max_to_min', 'creation_date', 'relevency'];
sortByValue = validSortOptions.includes(sortByValue) ? sortByValue : 'relevency';
const inputField = document.querySelector(`form [data-value="${sortByValue}"]`);
if (inputField) {
inputField.checked = true; // update the value of the option
} else {
console.error(`No radio button found with data-value="${sortByValue}"`);
}
const form = document.getElementById('sortForm');
if (form) {
form.addEventListener('change', (event) => {
if (event.target.name === 'sort') {
const selectedValue = event.target.getAttribute('data-value');
if (selectedValue && validSortOptions.includes(selectedValue)) {
setUrlParam('sortBy', selectedValue, true);
resetPageAndScroll();
updateOtherDropdown(selectedValue);
}
}
});
}
updateOtherDropdown(getSortBy());
if (sortBySelect) {
sortBySelect.addEventListener('change', function () {
if (sortBySelect.value && validSortOptions.includes(sortBySelect.value)) {
setUrlParam('sortBy', sortBySelect.value, true);
}
});
}
// Description 'read more'
function toggleReadMore(button) {
const container = button.parentNode;
const isExpanded = container.getAttribute('aria-expanded') === 'true';
container.setAttribute('aria-expanded', !isExpanded);
if (isExpanded) {
button.querySelector('.button-text').textContent = 'more';
} else {
button.querySelector('.button-text').textContent = 'Show less';
}
}
function visibleReadMore() {
const toggleButtons = document.querySelectorAll('.fs_collection_top_toggle');
toggleButtons.forEach(button => {
const description_children = button.previousElementSibling.children;
let description_scroll_width = 0;
let description_client_width = 0;
for(const child of description_children) {
description_scroll_width += child.scrollWidth;
description_client_width += child.clientWidth;
};
button.style.display = (description_scroll_width > description_client_width) ? 'block' : 'none';
});
}
window.addEventListener('DOMContentLoaded', visibleReadMore);
// category pills GTM
const categories = document.querySelectorAll('.category-pills__pill');
let category;
let categoryHandle;
let categoryId;
const pushCategoryPills = (category, categoryHandle, categoryId, typeCategory) => {
if (category && categoryHandle && categoryId && typeCategory) {
const categoryPills = {
event: `categoryPills`,
category: category,
categoryHandle: categoryHandle,
categoryId: categoryId,
typeCategory: typeCategory
};
window.dataLayer.push(categoryPills);
}
}
categories?.forEach(category => {
category.addEventListener('click', function(e) {
try {
category = e.currentTarget.getAttribute('data-category');
categoryHandle = e.currentTarget.getAttribute('data-collection-handle');
categoryId = e.currentTarget.getAttribute('data-collection-id');
typeCategory = e.currentTarget.getAttribute('data-type-category');
pushCategoryPills(category, categoryHandle, categoryId, typeCategory);
} catch (error) {
console.error('Error in category click event:', error);
}
})
})
Score Big with These Trendy Game Day Outfits!
Get ready to stand out in the crowd with these must-have game day outfits, perfect for any college or professional sporting event! Whether you're tailgating or cheering from the bleachers, your style should be as on point as your team spirit. Game day outfits combine comfort with sporty-chic flair, and we've got just the pieces you need to get that effortless yet trendy look.
Start with a classic crop tee or crop jersey in your team's colors—perfect for showing your support while keeping it cool and casual. Pair it with high-waisted denim shorts or your favorite skinny jeans for a laid-back yet polished vibe. If you're all about adding a bit of feminine flair, try teaming your crop top with a pleated mini skirt or a trendy skort. Skorts are the perfect mix of fashion and function, giving you the freedom to move around while maintaining a cute, sporty aesthetic.
For those chillier game days, layer your look with an oversized varsity jacket or a sleek bomber, both of which pair perfectly with athleisure leggings or joggers. Want to take it up a notch? Accessorize with statement sneakers or combat boots, and throw on a chic crossbody bag to keep your essentials close at hand.
From tailgate to post-game celebrations, our collection of women's game day outfits has everything you need to look and feel amazing. So, grab your gear and get ready to support your team in style!
-
Cool Season Varsity 24 Sweater
Sporty meets street. This varsity-inspired cropped sweater keeps it casual with a bold number graphic and cozy knit feel—made for styling with your favorite bottoms and boots!
Fit & Features
- Soft knit fabric
- Crew neck
- Long sleeves
- Front '24'
- Crop-length hem
- Runs true to size
Style Number/Barcode: 06005-000144
Category Name: Game Day Outfits
Price: $32.90
Availability: In Stock
Available Color: IVORY
Available Size: XS, S, M, L
-
Ultra Game NBA Boston Celtics Off-The-Shoulder Top
For the girl who brings courtside style to every outfit. This off-shoulder Celtics crop top adds a flirty twist to game day vibes with its fitted stretch design and bold team graphic—perfect for pairing with denim, cargos, or a little leather.
Fit & Features
- Cotton-blend knit stretchy fabric
- Off-the-shoulder neckline
- Fitted long sleeves
- Boston Celtics graphic
- Fitted crop hem
- Runs true to size
Style Number/Barcode: 06002-000332
Category Name: Game Day Outfits
Price: $29.90
Availability: In Stock
Available Color: WHITE
Available Size: XS, S, M, L