{"product_id":"bundle-288-artwork-file-conversion-and-288-custom-screen-printed-graphic-tees","title":"BUNDLE 288 - Artwork File Conversion and 288 Custom Screen Printed Graphic Tees","description":"\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003eBUNDLE 288 - Artwork File Conversion and 288 Custom Screen Printed Graphic Tees.\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cmeta charset=\"utf-8\"\u003e \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003e$9.07 per \u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\u003cmeta charset=\"utf-8\"\u003e \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003eClassic Short Sleeve Tee. Sizes Small thru X-Large. \u003cmeta charset=\"utf-8\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch4 style=\"margin-top: 1.5rem; font-size: 1.5rem; text-align: center;\"\u003e\n\u003cstrong\u003eNote:\u003c\/strong\u003e 2XL add $2.00  |  3XL add $3.00  |  \u003cmeta charset=\"utf-8\"\u003e4XL add $4.00  |  5XL add 5.00 \u003c\/h4\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003eT-Shirt Pricing Includes Custom Screen Print on Front (ex: Left Chest) and Standard Full Back.\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003e$185.00 \u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003efor Artwork File Conversion \u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003eprofessionally prepared \u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003eartwork ready \u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\u003cstrong style=\"font-size: 1.75rem; font-family: -apple-system, BlinkMacSystemFont, 'San Francisco', 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;\"\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003efor production.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003ch2 style=\"color: #0057b8; font-size: 1.75rem; font-weight: bold; margin-bottom: 1rem; border-left: 4px solid #0057b8; padding-left: 0.75rem;\"\u003e✅ \u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003eArtwork File Conversion. \u003cmeta charset=\"utf-8\"\u003eAll artwork not generated using p\u003cmeta charset=\"utf-8\"\u003e\u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\u003cstrong\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003e\u003cspan\u003erofessional design software \u003c\/span\u003e\u003c\/span\u003e\u003c\/strong\u003e\u003cstrong style=\"font-size: 1.75rem; font-family: -apple-system, BlinkMacSystemFont, 'San Francisco', 'Segoe UI', Roboto, 'Helvetica Neue', sans-serif;\"\u003e\u003cspan style=\"color: rgb(0, 0, 0);\"\u003eis professionally recreated, vectorized, and prepared using industry-standard design software so it can be used in a production environment. Professional design software is required for production-ready artwork. Please see our \u003ca rel=\"noopener\" title=\"ARTWORK GUIDELINES\" href=\"https:\/\/colortechsp.com\/pages\/artwork-requirements\" target=\"_blank\"\u003e\u003cspan style=\"color: rgb(43, 0, 255);\"\u003eArtwork Guidelines\u003c\/span\u003e\u003c\/a\u003e for more information.\u003c\/span\u003e\u003c\/strong\u003e\n\u003c\/h2\u003e\n\u003cdiv style=\"margin: 16px 0;\" data-server-epoch=\"{{ server_epoch }}\" id=\"sched-widget\"\u003e\n\u003cdiv style=\"color: #b00020; margin-top: 8px; display: none;\" role=\"alert\" id=\"sched-error\"\u003e\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cp\u003e\u003cscript\u003e\n(function(){\n  var DAYS_OUT = 15;\n  var widget = document.getElementById('sched-widget');\n  if (!widget) return;\n\n  var input = document.getElementById('scheduled_date');\n  var err = document.getElementById('sched-error');\n\n  var serverEpoch = parseInt(widget.getAttribute('data-server-epoch') || \"0\", 10);\n  var base = new Date(serverEpoch * 1000);\n  if (isNaN(base.getTime())) base = new Date();\n  base.setHours(0,0,0,0);\n\n  function nextWeekday(d){\n    var c = new Date(d.getTime());\n    while (c.getDay() === 0 || c.getDay() === 6) { \/\/ 0 Sun, 6 Sat\n      c.setDate(c.getDate() + 1);\n    }\n    return c;\n  }\n\n  function isoDate(d){\n    var mm = String(d.getMonth()+1).padStart(2,'0');\n    var dd = String(d.getDate()).padStart(2,'0');\n    return d.getFullYear() + '-' + mm + '-' + dd;\n  }\n\n  \/\/ compute min (server time) + DAYS_OUT, bump to next weekday if needed\n  var minDate = new Date(base);\n  minDate.setDate(minDate.getDate() + DAYS_OUT);\n  minDate = nextWeekday(minDate);\n\n  input.min = isoDate(minDate);\n  input.value = isoDate(minDate);\n\n  function validate(dateStr){\n    if(!dateStr) return { ok:false, msg: 'Please select a Scheduled In-Hands Date.' };\n    var sel = new Date(dateStr + 'T00:00:00');\n    if(isNaN(sel.getTime())) return { ok:false, msg: 'Selected date is invalid.' };\n    sel.setHours(0,0,0,0);\n    if(sel \u003c minDate) return { ok:false, msg: 'Selected date is earlier than the earliest available: ' + isoDate(minDate) + '.' , corrected: minDate };\n    if(sel.getDay() === 0 || sel.getDay() === 6) return { ok:false, msg: 'Weekends not allowed. Next business day: ' + isoDate(nextWeekday(sel)) + '.', corrected: nextWeekday(sel) };\n    return { ok:true };\n  }\n\n  function showError(message){\n    err.textContent = message;\n    err.style.display = 'block';\n  }\n  function hideError(){\n    err.textContent = '';\n    err.style.display = 'none';\n  }\n\n  function handleChange(){\n    var res = validate(input.value);\n    if(!res.ok){\n      showError(res.msg);\n      if(res.corrected) input.value = isoDate(res.corrected);\n    } else {\n      hideError();\n    }\n  }\n\n  input.addEventListener('change', handleChange);\n  input.addEventListener('blur', handleChange);\n\n  \/\/ Ensure validation blocks form submit (works with your existing Add to Cart)\n  var parentForm = input.closest('form');\n  if(parentForm){\n    parentForm.addEventListener('submit', function(e){\n      var res = validate(input.value);\n      if(!res.ok){\n        e.preventDefault();\n        showError(res.msg);\n        if(res.corrected) input.value = isoDate(res.corrected);\n        input.focus();\n        return false;\n      }\n    }, { capture:true });\n  }\n\n})();\n\u003c\/script\u003e \u003cscript\u003e\ndocument.addEventListener('DOMContentLoaded', function() {\n\n  const dateInput = document.getElementById('scheduled_date');\n  if (!dateInput) return;\n\n  \/\/ Detect any AJAX add-to-cart click\n  document.querySelectorAll('.product-form__submit, [data-add-to-cart], button[type=\"submit\"]').forEach(btn =\u003e {\n    btn.addEventListener('click', function(e) {\n\n      const selected = dateInput.value;\n      if (!selected) {\n        e.preventDefault();\n        alert(\"Please select your REQUIRED Scheduled In-Hands Date before continuing.\");\n        dateInput.focus();\n        return false;\n      }\n\n      \/\/ Intercept Shopify AJAX\n      document.addEventListener('cart:request-start', function(ev) {\n        if (!ev.detail || !ev.detail.body) return;\n\n        try {\n          let data = ev.detail.body;\n\n          \/\/ Inject the line item property\n          data.set(\"properties[Scheduled Date In-Hand]\", selected);\n\n        } catch (err) {\n          console.warn(\"Unable to inject Scheduled Date:\", err);\n        }\n      }, { once: true });\n\n    });\n  });\n\n});\n\u003c\/script\u003e\u003c\/p\u003e","brand":"Color Tech","offers":[{"title":"Artwork File Conversion Professionally Prepared Artwork Ready for Production.","offer_id":43550821220558,"sku":null,"price":185.0,"currency_code":"USD","in_stock":true},{"title":"Black Small","offer_id":43550821253326,"sku":null,"price":9.07,"currency_code":"USD","in_stock":true},{"title":"Black Medium","offer_id":43550821286094,"sku":null,"price":9.07,"currency_code":"USD","in_stock":true},{"title":"Black Large $10.37","offer_id":43550821318862,"sku":null,"price":9.07,"currency_code":"USD","in_stock":true},{"title":"Black XLarge","offer_id":43550821351630,"sku":null,"price":9.07,"currency_code":"USD","in_stock":true},{"title":"Black 2XL","offer_id":43550821384398,"sku":null,"price":11.07,"currency_code":"USD","in_stock":true},{"title":"Black 3XL","offer_id":43550821417166,"sku":null,"price":12.37,"currency_code":"USD","in_stock":true},{"title":"Black 4XL","offer_id":43550821449934,"sku":null,"price":13.37,"currency_code":"USD","in_stock":true},{"title":"Black 5XL","offer_id":43550821482702,"sku":null,"price":14.37,"currency_code":"USD","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/0618\/5562\/9518\/files\/AL1301_BLACK_FRONT_95161e0d-dc1e-432e-9daf-f02782c6e2bd.jpg?v=1780595367","url":"https:\/\/colortechsp.com\/products\/bundle-288-artwork-file-conversion-and-288-custom-screen-printed-graphic-tees","provider":"Color Tech","version":"1.0","type":"link"}