{"product_id":"transit-packing-cube-10l-ultra","title":"Transit Packing Cube 10L - Ultra","description":"\u003cdiv class=\"product-description\"\u003e\n\u003ch3\u003eTHE MOST ADVANCED VERSION OF OUR COMPRESSION GEAR CUBE\u003c\/h3\u003e\n\u003cp\u003eBuilt for the 2026 ULTRA Travel System, this limited edition TPC10 pairs our compression packing cube platform with ULTRA TX50, creating an exceptionally lightweight packing cube with a waterproof textile and impressive durability. Refined for travel with a simplified feature set, it's the most performance-forward version of TPC10 we've ever produced.\u003cbr\u003e\u003c\/p\u003e\n\u003cul\u003e\n\u003cli\u003eThe lightest performance textile we've ever used saves weight without compromising durability\u003c\/li\u003e\n\u003cli\u003eOverstuff, cinch and compress your load to save space\u003c\/li\u003e\n\u003cli\u003eWaterproof yet nearly translucent fabric is thin and supple\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003cbr\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"feat\"\u003e\n\u003cul\u003e\n\u003cli\u003eContainment collar for easier packing when overstuffing.\u003c\/li\u003e\n\u003cli\u003eIntegrated two-way cinch cord for containment of load.\u003c\/li\u003e\n\u003cli\u003eMain zipper line mechanically compresses load.\u003c\/li\u003e\n\u003cli\u003eSized for maximum packing options within all of our bags.\u003c\/li\u003e\n\u003cli\u003eEmbossed velcro square loop accepts our patches for customization\u003c\/li\u003e\n\u003c\/ul\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"spec\"\u003eMATERIALS \u0026amp; SPECS\n\u003cdiv class=\"disclosure__panel has-motion\"\u003e\n\u003cdiv class=\"disclosure__content rte cf\"\u003e\n\u003cdiv class=\"metafield-rich_text_field\"\u003e\n\u003cp\u003e\u003cstrong\u003eTextile\u003c\/strong\u003e\u003cbr\u003eULTRA TX50\u003cbr\u003e\u003cbr\u003e\u003cstrong\u003eMaterial Details\u003c\/strong\u003e\u003cbr\u003e- External Handle: 20mm nylon webbing\u003cbr\u003e- Cinch Cord: 10mm nylon webbing\u003cbr\u003e- Zipper: YKK #8RC with DWR finish\u003cbr\u003e\u003cbr\u003e\u003cstrong\u003eDimensions (Fully Packed)\u003c\/strong\u003e\u003cbr\u003e12.8\"L x 5.3\"W x 10\"H | 32.5L x 13.5W x 25.5H cm\u003c\/p\u003e\n\u003cp\u003e\u003cstrong\u003eWeight\u003c\/strong\u003e\u003cbr\u003e4.2oz | 117g\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003cdiv id=\"war\"\u003eLifetime Warranty\u003c\/div\u003e\n\u003cstyle\u003e\n  .ctb-feature-carousel,\n  .ctb-feature-carousel * {\n    box-sizing: border-box;\n  }\n\n  .ctb-feature-carousel {\n    position: relative;\n    width: 100%;\n    max-width: 1440px;\n    margin: 40px auto;\n    padding-inline: 16px;\n    font-family: inherit;\n  }\n\n  .ctb-feature-carousel__track {\n    display: flex;\n    gap: 30px;\n    width: 100%;\n    margin: 0;\n    padding: 0;\n    overflow-x: auto;\n    overflow-y: hidden;\n    scroll-snap-type: x mandatory;\n    overscroll-behavior-x: contain;\n    scrollbar-width: none;\n    touch-action: pan-x pan-y pinch-zoom;\n    -webkit-overflow-scrolling: touch;\n  }\n\n  .ctb-feature-carousel__track::-webkit-scrollbar {\n    display: none;\n  }\n\n  .ctb-feature-carousel__card {\n    flex: 0 0 86%;\n    min-width: 0;\n    margin: 0;\n    scroll-snap-align: start;\n    scroll-snap-stop: always;\n  }\n\n  .ctb-feature-carousel__image {\n    width: 100%;\n    overflow: hidden;\n    aspect-ratio: 4 \/ 5;\n    background: #f2f2f2;\n  }\n\n  .ctb-feature-carousel__image img {\n    display: block;\n    width: 100%;\n    height: 100%;\n    object-fit: cover;\n    transition: transform 500ms ease;\n  }\n\n  .ctb-feature-carousel__card:hover img {\n    transform: scale(1.02);\n  }\n\n  .ctb-feature-carousel__title {\n    margin: 20px 0 10px;\n    color: inherit;\n    font: inherit;\n    font-size: 20px;\n    font-weight: 700;\n    line-height: 1.2;\n    letter-spacing: 0.01em;\n    text-transform: uppercase;\n  }\n\n  .ctb-feature-carousel__text {\n    margin: 0;\n    color: inherit;\n    font: inherit;\n    font-size: 15px;\n    line-height: 1.55;\n  }\n\n  .ctb-feature-carousel__arrow {\n    position: absolute;\n    top: 34%;\n    z-index: 3;\n    display: grid;\n    width: 46px;\n    height: 46px;\n    padding: 0;\n    border: 1px solid rgba(0, 0, 0, 0.15);\n    border-radius: 50%;\n    background: rgba(255, 255, 255, 0.94);\n    color: #111;\n    font: inherit;\n    font-size: 28px;\n    line-height: 1;\n    cursor: pointer;\n    place-items: center;\n    transform: translateY(-50%);\n    box-shadow: 0 3px 14px rgba(0, 0, 0, 0.14);\n  }\n\n  .ctb-feature-carousel__arrow--previous {\n    left: 24px;\n  }\n\n  .ctb-feature-carousel__arrow--next {\n    right: 24px;\n  }\n\n  .ctb-feature-carousel__arrow:disabled {\n    visibility: hidden;\n    opacity: 0;\n    pointer-events: none;\n  }\n\n  .ctb-feature-carousel__arrow:focus-visible,\n  .ctb-feature-carousel__dot:focus-visible {\n    outline: 3px solid #3578e5;\n    outline-offset: 3px;\n  }\n\n  .ctb-feature-carousel__navigation {\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 9px;\n    margin-top: 24px;\n  }\n\n  .ctb-feature-carousel__dot {\n    width: 9px;\n    height: 9px;\n    margin: 0;\n    padding: 0;\n    border: 0;\n    border-radius: 50%;\n    background: #b5b5b5;\n    cursor: pointer;\n    transition:\n      width 180ms ease,\n      border-radius 180ms ease,\n      background-color 180ms ease;\n  }\n\n  .ctb-feature-carousel__dot.is-active {\n    width: 26px;\n    border-radius: 999px;\n    background: #111;\n  }\n\n  @media (min-width: 900px) {\n    .ctb-feature-carousel {\n      padding-inline: 50px;\n    }\n\n    .ctb-feature-carousel__card {\n      flex-basis: calc((100% - 60px) \/ 3);\n    }\n\n    .ctb-feature-carousel__arrow {\n      top: 31%;\n      width: 52px;\n      height: 52px;\n      font-size: 31px;\n    }\n\n    .ctb-feature-carousel__arrow--previous {\n      left: 64px;\n    }\n\n    .ctb-feature-carousel__arrow--next {\n      right: 64px;\n    }\n\n    .ctb-feature-carousel__title {\n      font-size: 22px;\n    }\n\n    .ctb-feature-carousel__text {\n      font-size: 16px;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    .ctb-feature-carousel__track {\n      scroll-behavior: auto !important;\n    }\n\n    .ctb-feature-carousel__image img {\n      transition: none;\n    }\n  }\n\u003c\/style\u003e\n\n\u003csection class=\"ctb-feature-carousel\" data-ctb-feature-carousel role=\"region\" aria-roledescription=\"carousel\" aria-label=\"transit packing cube 10l Ultra features\" tabindex=\"0\"\u003e\n  \u003cdiv class=\"ctb-feature-carousel__track\" data-feature-track\u003e\n    \u003carticle class=\"ctb-feature-carousel__card\"\u003e\n      \u003cdiv class=\"ctb-feature-carousel__image\"\u003e\n        \u003cimg src=\"https:\/\/evergoods.us\/cdn\/shop\/files\/TRANSIT-PACKING-CUBE-10L-TPC10-TX50-WHITE-textile_1.jpg?v=1787796020\u0026amp;width=1600\" alt=\"transit packing cube 10l ULTRA tx50 Shell\" loading=\"eager\" fetchpriority=\"high\"\u003e\n      \u003c\/div\u003e\n\n      \u003ch3 class=\"ctb-feature-carousel__title\"\u003eREMARKABLY LIGHT\u003c\/h3\u003e\n\n      \u003cp class=\"ctb-feature-carousel__text\"\u003e\n        ULTRA TX50 is the lightest textile ever used in an EVERGOODS product. Its waterproof laminated construction and UHMWPE reinforcement create a remarkably thin shell that's durable enough for repeated travel while keeping unnecessary weight to a minimum.\n      \u003c\/p\u003e\n    \u003c\/article\u003e\n\n    \u003carticle class=\"ctb-feature-carousel__card\"\u003e\n      \u003cdiv class=\"ctb-feature-carousel__image\"\u003e\n        \u003cimg src=\"https:\/\/evergoods.us\/cdn\/shop\/files\/TRANSIT-PACKING-CUBE-10L-TPC10-TX50-WHITE-compression_1.jpg?v=1787796020\u0026amp;width=1600\" alt=\"transit packing cube 10l ULTRA Bright White Interior\" loading=\"lazy\"\u003e\n      \u003c\/div\u003e\n\n      \u003ch3 class=\"ctb-feature-carousel__title\"\u003eCOMPRESSION IN A CINCH\u003c\/h3\u003e\n\n      \u003cp class=\"ctb-feature-carousel__text\"\u003e\n       The integrated two-way cinch cord gathers the containment collar around your load, allowing TPC10 to accommodate overpacked clothing with ease. Once zipped, the cube's construction mechanically compresses the contents to reduce overall volume.\n      \u003c\/p\u003e\n    \u003c\/article\u003e\n\n    \u003carticle class=\"ctb-feature-carousel__card\"\u003e\n      \u003cdiv class=\"ctb-feature-carousel__image\"\u003e\n        \u003cimg src=\"https:\/\/evergoods.us\/cdn\/shop\/files\/TRANSIT-PACKING-CUBE-10L-TPC10-TX50-WHITE-size-and-fit_1.jpg?v=1787796020\u0026amp;width=1200\" alt=\"transit packing cube 10l ULTRA Textile and Zippers\" loading=\"lazy\"\u003e\n      \u003c\/div\u003e\n\n      \u003ch3 class=\"ctb-feature-carousel__title\"\u003eSIZED FOR VERSATILITY\u003c\/h3\u003e\n\n      \u003cp class=\"ctb-feature-carousel__text\"\u003e\n     TPC10 is sized for everything from everyday basics to bulkier travel layers, making it equally suited for weekend trips and extended travel.\n      \u003c\/p\u003e\n    \u003c\/article\u003e\n\n    \u003carticle class=\"ctb-feature-carousel__card\"\u003e\n      \u003cdiv class=\"ctb-feature-carousel__image\"\u003e\n        \u003cimg src=\"https:\/\/evergoods.us\/cdn\/shop\/files\/TRANSIT-PACKING-CUBE-10L-TPC10-TX50-WHITE-side-handles_1.jpg?v=1787796020\u0026amp;width=1200\" alt=\"transit packing cube 10l ULTRA Signature Panel Loading\" loading=\"lazy\"\u003e\n      \u003c\/div\u003e\n\n      \u003ch3 class=\"ctb-feature-carousel__title\"\u003eHANDLE WITH EASE\u003c\/h3\u003e\n\n      \u003cp class=\"ctb-feature-carousel__text\"\u003e\n       For quick plucking out of a bag or repositioning your packing station, TPC10 comes with dual handles made from a sturdy 20mm nylon webbing.\n      \u003c\/p\u003e\n    \u003c\/article\u003e\n\n    \u003carticle class=\"ctb-feature-carousel__card\"\u003e\n      \u003cdiv class=\"ctb-feature-carousel__image\"\u003e\n        \u003cimg src=\"https:\/\/evergoods.us\/cdn\/shop\/files\/TRANSIT-PACKING-CUBE-10L-TPC10-TX50-WHITE-fit-in-backpacks_1.jpg?v=1787796020\u0026amp;width=1200\" alt=\"transit packing cube 10l ULTRA Laptop Compartment\" loading=\"lazy\"\u003e\n      \u003c\/div\u003e\n\n      \u003ch3 class=\"ctb-feature-carousel__title\"\u003eSMART DIMENSION\u003c\/h3\u003e\n\n      \u003cp class=\"ctb-feature-carousel__text\"\u003e\n      TPC10 was designed to work throughout the EVERGOODS lineup. Whether you're packing CTB26, a Transit Duffel, or one of our everyday backpacks, its dimensions maximize usable space.\n      \u003c\/p\u003e\n    \u003c\/article\u003e\n\n    \u003carticle class=\"ctb-feature-carousel__card\"\u003e\n      \u003cdiv class=\"ctb-feature-carousel__image\"\u003e\n        \u003cimg src=\"https:\/\/evergoods.us\/cdn\/shop\/files\/TRANSIT-PACKING-CUBE-10L-TPC10-TX50-WHITE-multi-packouts_1.jpg?v=1787796020\u0026amp;width=1200\" alt=\"transit packing cube 10l ULTRA Water Bottle Pockets\" loading=\"lazy\"\u003e\n      \u003c\/div\u003e\n\n      \u003ch3 class=\"ctb-feature-carousel__title\"\u003e\nMULTI PURPOSE LOAD OUT\n      \u003c\/h3\u003e\n\n      \u003cp class=\"ctb-feature-carousel__text\"\u003e\n       Waterproof and lightweight ULTRA fabric suits the TPC10 for mountain, city and travel gear loads.\n      \u003c\/p\u003e\n    \u003c\/article\u003e\n  \u003c\/div\u003e\n\n  \u003cbutton class=\"ctb-feature-carousel__arrow ctb-feature-carousel__arrow--previous\" type=\"button\" data-feature-previous aria-label=\"Previous features\"\u003e‹\u003c\/button\u003e\n\n  \u003cbutton class=\"ctb-feature-carousel__arrow ctb-feature-carousel__arrow--next\" type=\"button\" data-feature-next aria-label=\"Next features\"\u003e›\u003c\/button\u003e\n\n  \u003cdiv class=\"ctb-feature-carousel__navigation\" data-feature-navigation aria-label=\"Feature carousel navigation\"\u003e\u003c\/div\u003e\n\u003c\/section\u003e\n\n\u003cscript\u003e\n(function () {\n  function initializeFeatureCarousel(root) {\n    if (root.dataset.featureCarouselReady === 'true') return;\n    root.dataset.featureCarouselReady = 'true';\n\n    var track = root.querySelector('[data-feature-track]');\n    var cards = Array.prototype.slice.call(\n      root.querySelectorAll('.ctb-feature-carousel__card')\n    );\n    var previousButton = root.querySelector('[data-feature-previous]');\n    var nextButton = root.querySelector('[data-feature-next]');\n    var navigation = root.querySelector('[data-feature-navigation]');\n    var positions = [];\n    var dots = [];\n    var currentPage = 0;\n    var scrollFrame;\n\n    cards.forEach(function (card, index) {\n      card.setAttribute('role', 'group');\n      card.setAttribute('aria-roledescription', 'slide');\n      card.setAttribute(\n        'aria-label',\n        String(index + 1) + ' of ' + String(cards.length)\n      );\n    });\n\n    function reducedMotion() {\n      return window.matchMedia(\n        '(prefers-reduced-motion: reduce)'\n      ).matches;\n    }\n\n    function calculatePositions() {\n      var maximumScroll = Math.max(\n        0,\n        track.scrollWidth - track.clientWidth\n      );\n      var nextPositions = [];\n\n      cards.forEach(function (card) {\n        var position = Math.min(\n          card.offsetLeft - track.offsetLeft,\n          maximumScroll\n        );\n\n        if (\n          !nextPositions.length ||\n          Math.abs(position - nextPositions[nextPositions.length - 1]) \u003e 2\n        ) {\n          nextPositions.push(position);\n        }\n      });\n\n      positions = nextPositions.length ? nextPositions : [0];\n      currentPage = Math.max(\n        0,\n        Math.min(currentPage, positions.length - 1)\n      );\n\n      buildNavigation();\n      updateControls();\n    }\n\n    function buildNavigation() {\n      navigation.innerHTML = '';\n      dots = [];\n\n      positions.forEach(function (_position, index) {\n        var dot = document.createElement('button');\n\n        dot.type = 'button';\n        dot.className = 'ctb-feature-carousel__dot';\n        dot.setAttribute(\n          'aria-label',\n          'Go to feature group ' +\n            String(index + 1) +\n            ' of ' +\n            String(positions.length)\n        );\n\n        dot.addEventListener('click', function () {\n          goToPage(index);\n        });\n\n        navigation.appendChild(dot);\n        dots.push(dot);\n      });\n    }\n\n    function updateControls() {\n      previousButton.disabled = currentPage === 0;\n      nextButton.disabled = currentPage === positions.length - 1;\n\n      dots.forEach(function (dot, index) {\n        var active = index === currentPage;\n        dot.classList.toggle('is-active', active);\n        dot.setAttribute('aria-current', active ? 'true' : 'false');\n      });\n    }\n\n    function goToPage(index, behavior) {\n      currentPage = Math.max(\n        0,\n        Math.min(index, positions.length - 1)\n      );\n\n      track.scrollTo({\n        left: positions[currentPage],\n        behavior: behavior || (reducedMotion() ? 'auto' : 'smooth')\n      });\n\n      updateControls();\n    }\n\n    function findNearestPage() {\n      var nearestIndex = 0;\n      var nearestDistance = Infinity;\n\n      positions.forEach(function (position, index) {\n        var distance = Math.abs(track.scrollLeft - position);\n\n        if (distance \u003c nearestDistance) {\n          nearestDistance = distance;\n          nearestIndex = index;\n        }\n      });\n\n      return nearestIndex;\n    }\n\n    previousButton.addEventListener('click', function () {\n      goToPage(currentPage - 1);\n    });\n\n    nextButton.addEventListener('click', function () {\n      goToPage(currentPage + 1);\n    });\n\n    track.addEventListener(\n      'scroll',\n      function () {\n        window.cancelAnimationFrame(scrollFrame);\n\n        scrollFrame = window.requestAnimationFrame(function () {\n          var nextPage = findNearestPage();\n\n          if (nextPage !== currentPage) {\n            currentPage = nextPage;\n            updateControls();\n          }\n        });\n      },\n      { passive: true }\n    );\n\n    root.addEventListener('keydown', function (event) {\n      if (event.key === 'ArrowLeft') {\n        event.preventDefault();\n        goToPage(currentPage - 1);\n      }\n\n      if (event.key === 'ArrowRight') {\n        event.preventDefault();\n        goToPage(currentPage + 1);\n      }\n\n      if (event.key === 'Home') {\n        event.preventDefault();\n        goToPage(0);\n      }\n\n      if (event.key === 'End') {\n        event.preventDefault();\n        goToPage(positions.length - 1);\n      }\n    });\n\n    if ('ResizeObserver' in window) {\n      new ResizeObserver(function () {\n        calculatePositions();\n        goToPage(currentPage, 'auto');\n      }).observe(track);\n    }\n\n    calculatePositions();\n  }\n\n  function initializeAllFeatureCarousels(container) {\n    (container || document)\n      .querySelectorAll('[data-ctb-feature-carousel]')\n      .forEach(initializeFeatureCarousel);\n  }\n\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', function () {\n      initializeAllFeatureCarousels(document);\n    });\n  } else {\n    initializeAllFeatureCarousels(document);\n  }\n\n  document.addEventListener('shopify:section:load', function (event) {\n    initializeAllFeatureCarousels(event.target);\n  });\n})();\n\u003c\/script\u003e\n\u003chr\u003e\n\u003cdiv class=\"content-tab-info-section-container-left\"\u003e\n\u003cdiv class=\"content-tab-info-section-img\"\u003e\n\u003cimg src=\"https:\/\/evergoods.us\/cdn\/shop\/files\/Ultra-Section-Textile-Teaser-LP_4_1.jpg?v=1787793652\u0026amp;width=1024\"\u003e\n\u003c\/div\u003e\n\u003cdiv class=\"content-tab-info-section-txt prose\"\u003e\n\u003ch3 class=\"h3\"\u003eULTRA WHITE TX50\n\n\u003c\/h3\u003e\n\u003cp\u003eULTRA TX50 is the lightest performance textile ever used in an EVERGOODS product. Built with a waterproof laminate and UHMWPE cross-ply reinforcement, it delivers an impressive balance of weight savings and durability. The result is a thin, supple fabric with a nearly translucent appearance that allows our Transit Packing Cubes to pack down smaller while adding minimal weight to your travel kit.\n\u003c\/p\u003e\n\u003c\/div\u003e\n\u003c\/div\u003e\n\u003chr\u003e","brand":"EVERGOODS","offers":[{"title":"White ULTRA TX50","offer_id":46483412385862,"sku":"EVGOTPC10-UW","price":349.0,"currency_code":"MYR","in_stock":true}],"thumbnail_url":"\/\/cdn.shopify.com\/s\/files\/1\/1112\/3836\/files\/tpc10-ultra-tx50-white-front.png?v=1788275475","url":"https:\/\/storminggravity.com\/products\/transit-packing-cube-10l-ultra","provider":"Storming Gravity","version":"1.0","type":"link"}