Free shipping on orders over $79

Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
1 / 3
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
Frank Hardy Hawaiian Beach Shirt
1 / 3

Frank Hardy Hawaiian Beach Shirt

$45.99
$0.00 0% Off
Red
Size

Whether you're exploring the beach or enjoying a night out with friends, the Frank Hardy Hawaiian Beach Shirt is the perfect choice for the fashion-forward man. This meticulously crafted shirt is designed to keep you comfortable and effortlessly stylish during your summer escapades. Its timeless striped print, attention to detail, and a fusion of retro charm and modern fashion add a nostalgic touch to your wardrobe.

Product Information

  • Material: Polyester
  • Lapel Collar
  • Button Closure
  • Short Sleeves
Size Chart in Centimeters (cm)
Size Bust Shoulder Length Sleeve
S 105 45 71 22.5
M 110 46 73 23
L 115 47 75 23.5
XL 120 48 76 24
XXL 125 49 77 24.5
3XL 130 51 79 25
4XL 135 52 81 25.5
5XL 140 53 83 26
Size Chart in Inches (In)
Size Bust Shoulder Length Sleeve
S 41.3 17.7 27.9 8.9
M 43.3 18.1 28.7 9.1
L 45.3 18.5 29.5 9.3
XL 47.2 18.9 29.9 9.4
XXL 49.2 19.3 30.3 9.6
3XL 51.2 20.1 31.1 9.8
4XL 53.1 20.5 31.9 10.0
5XL 55.1 20.9 32.7 10.2
Customer Reviews

Here are what our customers say.

Write a Review
Customer Reviews
Wow you reached the bottom
Newest
Most liked
Highest ratings
Lowest ratings
×
class SpzCustomFileUpload extends SPZ.BaseElement { constructor(element) { super(element); this.uploadCount_ = 0; this.fileList_ = []; } buildCallback() { this.action = SPZServices.actionServiceForDoc(this.element); this.registerAction('upload', (data) => { this.handleFileUpload_(data.event?.detail?.data || []); }); this.registerAction('delete', (data) => { this.handleFileDelete_(data?.args?.data); }); this.registerAction('preview', (data) => { this.handleFilePreview_(data?.args?.data); }); this.registerAction('limit', (data) => { this.handleFileLimit_(); }); this.registerAction('sizeLimit', (data) => { this.handleFileSizeLimit_(); }); } isLayoutSupported(layout) { return layout == SPZCore.Layout.LOGIC; } setData_(count, file) { this.uploadCount_ = count; this.fileList_ = file; } handleFileUpload_(data) { data.forEach(i => { if(this.fileList_.some(j => j.url === i.url)) return; this.fileList_.push(i); }) this.uploadCount_++; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileUpload", { count: this.uploadCount_, files: this.fileList_}); if(this.fileList_.length >= 5){ document.querySelector('#review_upload').style.display = 'none'; } if(this.fileList_.length > 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '8px'; } } handleFileDelete_(index) { this.fileList_.splice(index, 1); this.uploadCount_--; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleFileDelete", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; if(this.fileList_?.length === 0){ document.querySelector('.apps-reviews-write-anonymous-box').style.marginTop = '132px'; } } handleFilePreview_(index) { const finalPreviewData = this.fileList_[index]; const filePreviewModal = document.getElementById('filePreviewModal'); const fullScreenVideo = document.getElementById('fullScreenVideo'); const fullScreenImage = document.getElementById('fullScreenImage'); const previewModalClose = document.getElementById('previewModalClose'); const previewLoading = document.getElementById('previewLoading'); filePreviewModal.style.display = 'block'; previewLoading.style.display = 'flex'; if(finalPreviewData?.type === 'video'){ const media = this.mediaParse_(this.fileList_[index]?.url); fullScreenVideo.addEventListener('canplaythrough', function() { previewLoading.style.display = 'none'; }); fullScreenImage.src = ''; fullScreenImage.style.display = 'none'; fullScreenVideo.style.display = 'block'; fullScreenVideo.src = media.mp4 || ''; } else { fullScreenImage.onload = function() { previewLoading.style.display = 'none'; }; fullScreenVideo.src = ''; fullScreenVideo.style.display = 'none'; fullScreenImage.style.display = 'block'; fullScreenImage.src = finalPreviewData.url; } previewModalClose.addEventListener('click', function() { filePreviewModal.style.display = 'none'; }); } handleFileLimit_() { alert(window.AppReviewsLocale.comment_file_limit || 'please do not upload files more than 5'); this.triggerEvent_("handleFileLimit"); } handleFileSizeLimit_() { alert(window.AppReviewsLocale.comment_file_size_limit || 'File size does not exceed 10M'); } clear(){ this.fileList_ = []; this.uploadCount_ = 0; sessionStorage.setItem('fileList', JSON.stringify(this.fileList_)); this.triggerEvent_("handleClear", { count: this.uploadCount_, files: this.fileList_}); document.querySelector('#review_upload').style.display = 'block'; } mediaParse_(url) { var result = {}; try { url.replace(/[?&]+([^=&]+)=([^&]*)/gi, function (str, key, value) { try { result[key] = decodeURIComponent(value); } catch (e) { result[key] = value; } }); result.preview_image = url.split('?')[0]; } catch (e) {}; return result; } triggerEvent_(name, data) { const event = SPZUtils.Event.create(this.win, name, data); this.action.trigger(this.element, name, event); } } SPZ.defineElement('spz-custom-file-upload', SpzCustomFileUpload);
The review would not show in product details on storefront since it does not support to.