{"id":267,"date":"2026-09-16T10:03:41","date_gmt":"2026-09-16T10:03:41","guid":{"rendered":"https:\/\/manutukutuku.co.nz\/?page_id=267"},"modified":"2026-09-19T05:24:27","modified_gmt":"2026-09-19T05:24:27","slug":"coming-up","status":"publish","type":"page","link":"https:\/\/manutukutuku.co.nz\/?page_id=267","title":{"rendered":"Coming Up"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"267\" class=\"elementor elementor-267\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-0cee52b e-con-full e-flex e-con e-parent\" data-id=\"0cee52b\" data-element_type=\"container\" data-settings=\"{&quot;content_width&quot;:&quot;full&quot;}\" data-core-v316-plus=\"true\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5d2d3a1 elementor-widget elementor-widget-heading\" data-id=\"5d2d3a1\" data-element_type=\"widget\" data-widget_type=\"heading.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<style>\/*! elementor - v3.19.0 - 05-02-2024 *\/\n.elementor-heading-title{padding:0;margin:0;line-height:1}.elementor-widget-heading .elementor-heading-title[class*=elementor-size-]>a{color:inherit;font-size:inherit;line-height:inherit}.elementor-widget-heading .elementor-heading-title.elementor-size-small{font-size:15px}.elementor-widget-heading .elementor-heading-title.elementor-size-medium{font-size:19px}.elementor-widget-heading .elementor-heading-title.elementor-size-large{font-size:29px}.elementor-widget-heading .elementor-heading-title.elementor-size-xl{font-size:39px}.elementor-widget-heading .elementor-heading-title.elementor-size-xxl{font-size:59px}<\/style><h2 class=\"elementor-heading-title elementor-size-default\">Coming Up<\/h2>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-4d96d4a elementor-widget elementor-widget-html\" data-id=\"4d96d4a\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t<!-- VenueIQ Coming Events - full page listing with month breakers (Manu Tukutuku brand) -->\n<!-- Paste into an HTML \/ Custom Code widget on the events page. -->\n\n<div id=\"venueiq-list\" class=\"viq-list\">\n  <div class=\"viq-loading\">Loading events...<\/div>\n<\/div>\n\n<script>\n(function () {\n\n  \/* ============ SETTINGS ============ *\/\n  var FEED_URL   = 'https:\/\/manu.venueiq.co.nz\/api\/public-events?token=419531227e5149c1903e4998113014274ba44884a6134a99a75fd1797486ac6e';\n  var LOGO_URL   = 'https:\/\/manutukutuku.co.nz\/wp-content\/uploads\/2024\/02\/Long-Logo-500x83y.png'; \/\/ used when a booking has no image\n  var LOGO_BG    = '#000000'; \/\/ panel behind the fallback logo, so it reads on a light page\n  var WIDTH_PCT  = 100;    \/\/ width of the block as a % of its container\n  var MAX_WIDTH  = 0;      \/\/ px cap on that width, 0 for no cap\n  var THEME      = 'light'; \/\/ 'dark' or 'light'\n  var SHOW_DESC  = true;   \/\/ show the booking description when the feed supplies one\n  var DESC_LINES = 3;      \/\/ lines of description before it clips\n  var PAGE_SIZE  = 15;     \/\/ events shown before the Show more button\n  var SHOW_PAST  = false;  \/\/ true to include events that have already been\n  \/* ================================== *\/\n\n  var ORANGE = '#e97300';\n  var GREY   = '#a8a8aa';\n  var BLACK  = '#000000';\n\n  var dark = (THEME === 'dark');\n  var C = dark ? {\n    text: '#ffffff', dim: '#b5b5b7', faint: '#5c5c5e',\n    card: 'rgba(255,255,255,0.05)', shadow: '0 2px 10px rgba(0,0,0,0.35)', shadowHov: '0 8px 22px rgba(0,0,0,0.5)',\n    rule: 'rgba(255,255,255,0.14)', ph: '#2a2a2c', logoBg: 'rgba(255,255,255,0.06)',\n    btnBd: 'rgba(255,255,255,0.28)'\n  } : {\n    text: BLACK, dim: '#5a5a5c', faint: '#9a9a9c',\n    card: '#ffffff', shadow: '0 2px 10px rgba(0,0,0,0.08)', shadowHov: '0 8px 22px rgba(0,0,0,0.14)',\n    rule: '#e4e4e6', ph: GREY, logoBg: '#f4f4f5',\n    btnBd: GREY\n  };\n\n  var MONTHS = ['January','February','March','April','May','June','July','August','September','October','November','December'];\n\n  var root  = document.getElementById('venueiq-list');\n  var state = { events: [], shown: PAGE_SIZE };\n\n  \/* ---------- styles ---------- *\/\n  var css = ''\n    + '.viq-list{font-family:Arial,Helvetica,sans-serif;color:' + C.text + ';width:' + WIDTH_PCT + '%;'\n      + 'max-width:' + (MAX_WIDTH ? MAX_WIDTH + 'px' : '100%') + ';margin:0 auto;box-sizing:border-box;}'\n    + '.viq-list *,.viq-list *:before,.viq-list *:after{box-sizing:border-box;}'\n    + '.viq-loading,.viq-error{padding:32px 0;color:' + C.dim + ';font-size:15px;}'\n    + '.viq-mb{display:flex;align-items:center;gap:14px;margin:48px 0 14px;padding-bottom:12px;border-bottom:4px solid ' + ORANGE + ';}'\n    + '.viq-mb:first-child{margin-top:0;}'\n    + '.viq-mb h2{font-size:30px;font-weight:700;letter-spacing:0.5px;margin:0;color:' + C.text + ';}'\n    + '.viq-mb span{font-size:12px;font-weight:700;color:#fff;background:' + ORANGE + ';border-radius:20px;padding:5px 13px;}'\n    + '.viq-row{display:flex;align-items:center;gap:20px;padding:16px 20px 16px 16px;background:' + C.card + ';border:1px solid ' + C.rule + ';border-left:5px solid ' + ORANGE + ';border-radius:5px;margin-top:12px;box-shadow:' + C.shadow + ';transition:transform .15s ease,box-shadow .15s ease;}'\n    + '.viq-row:hover{transform:translateY(-2px);box-shadow:' + C.shadowHov + ';}'\n    + '.viq-date{flex:0 0 auto;width:66px;padding:12px 0;text-align:center;line-height:1;background:' + ORANGE + ';border-radius:5px;}'\n    + '.viq-date b{display:block;font-size:28px;font-weight:700;color:#fff;}'\n    + '.viq-date i{display:block;font-style:normal;font-size:11px;font-weight:700;color:rgba(255,255,255,0.85);margin-top:6px;letter-spacing:0.6px;}'\n    + '.viq-thumb{flex:0 0 auto;width:168px;height:104px;overflow:hidden;background:' + C.ph + ';border-radius:5px;}'\n    + '.viq-thumb.is-logo{background:' + LOGO_BG + ';}'\n    + '.viq-thumb.is-logo img{object-fit:contain;object-position:center;padding:12px;}'\n    + '.viq-thumb img{width:100%;height:100%;object-fit:cover;object-position:top;display:block;border:0;margin:0;padding:0;max-width:none;border-radius:5px;}'\n    + '.viq-text{flex:1 1 240px;min-width:0;}'\n    + '.viq-title{font-size:20px;font-weight:700;margin:0;line-height:1.22;color:' + C.text + ';}'\n    + '.viq-time{font-size:12px;font-weight:700;color:' + ORANGE + ';margin:4px 0 0;letter-spacing:0.4px;}'\n    + '.viq-meta{font-size:12px;color:' + C.dim + ';margin:4px 0 0;}'\n    + '.viq-descbox{flex:1 1 300px;min-width:0;align-self:stretch;display:flex;align-items:center;padding-left:22px;border-left:1px solid ' + C.rule + ';}'\n    + '.viq-desc{font-size:13.5px;line-height:1.5;color:' + C.dim + ';margin:0;display:-webkit-box;-webkit-line-clamp:' + DESC_LINES + ';-webkit-box-orient:vertical;overflow:hidden;}'\n    + '.viq-btn{flex:0 0 auto;display:inline-block;padding:11px 24px;background:' + ORANGE + ';color:#fff;border-radius:5px;text-decoration:none;font-size:13px;font-weight:700;white-space:nowrap;box-shadow:0 2px 8px rgba(233,115,0,0.35);}'\n    + '.viq-btn:hover{background:#c96100;color:#fff;box-shadow:0 4px 14px rgba(233,115,0,0.45);}'\n    + '.viq-more{display:block;margin:30px auto 0;padding:12px 30px;background:transparent;border:1px solid ' + C.btnBd + ';color:' + C.text + ';border-radius:5px;font:inherit;font-size:13px;font-weight:700;cursor:pointer;-webkit-appearance:none;appearance:none;}'\n    + '.viq-more:hover{border-color:' + ORANGE + ';color:' + ORANGE + ';}'\n    + '.viq-more:focus-visible{outline:2px solid ' + ORANGE + ';outline-offset:2px;}'\n    + '.viq-empty{font-size:15px;color:' + C.dim + ';padding:28px 0;}'\n    + '.viq-list h2{color:' + C.text + ';}'\n    + '.viq-list h3.viq-title{color:' + C.text + ';margin:0;}'\n    + '.viq-list p.viq-time{color:' + ORANGE + ';}'\n    + '.viq-list p.viq-meta,.viq-list p.viq-desc{color:' + C.dim + ';}'\n    + '.viq-list .viq-row{align-items:stretch;}'\n    + '.viq-list .viq-text{align-self:center;}'\n    + '.viq-list .viq-date,.viq-list .viq-thumb,.viq-list .viq-btn{align-self:center;}'\n    + '.viq-list .viq-descbox{align-items:center;}'\n    + '@media(max-width:700px){'\n      + '.viq-row{flex-wrap:wrap;gap:12px;padding:14px 12px;}'\n      + '.viq-date{width:auto;display:flex;align-items:baseline;gap:7px;padding:7px 12px;}'\n      + '.viq-date b{font-size:20px;}.viq-date i{margin-top:0;}'\n      + '.viq-thumb{width:110px;height:70px;}'\n      + '.viq-text{flex:1 1 100%;order:3;}'\n      + '.viq-btn{order:4;}'\n      + '.viq-descbox{flex:1 1 100%;order:5;padding-left:0;border-left:0;border-top:1px solid ' + C.rule + ';padding-top:10px;}'\n      + '.viq-mb h2{font-size:21px;}'\n    + '}';\n\n  var styleEl = document.getElementById('viq-list-style');\n  if (!styleEl) { styleEl = document.createElement('style'); styleEl.id = 'viq-list-style'; document.head.appendChild(styleEl); }\n  styleEl.textContent = css;\n\n  \/* ---------- helpers ---------- *\/\n  function esc(s) {\n    return String(s == null ? '' : s).replace(\/[&<>\"']\/g, function (c) {\n      return { '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;', \"'\": '&#39;' }[c];\n    });\n  }\n  function startOfDay(d) { return new Date(d.getFullYear(), d.getMonth(), d.getDate()); }\n  function fmtTime(d) {\n    return d.toLocaleTimeString('en-NZ', { hour: 'numeric', minute: '2-digit' }).replace(\/\\s?([ap])\\.?m\\.?\/i, function (m, p) { return ' ' + p.toLowerCase() + 'm'; });\n  }\n  function weekday(d) { return d.toLocaleDateString('en-NZ', { weekday: 'short' }).toUpperCase(); }\n  function monthKey(d) { return d.getFullYear() + '-' + ('0' + (d.getMonth() + 1)).slice(-2); }\n  function sameDay(a, b) { return a && b && +startOfDay(a) === +startOfDay(b); }\n\n  function descFor(ev) {\n    if (!SHOW_DESC) return '';\n    var raw = ev.description || ev.summary || ev.blurb || ev.details || ev.publicDescription || ev.eventDescription || ev.notes || '';\n    return String(raw).replace(\/<[^>]*>\/g, ' ').replace(\/\\s+\/g, ' ').trim();\n  }\n\n  function thumbFor(ev) {\n    if (ev.imageUrl) return { src: ev.imageUrl, logo: false };\n    if (ev.videoUrl) {\n      var m = ev.videoUrl.match(\/(?:youtu\\.be\\\/|v=)([^&]+)\/);\n      if (m) return { src: 'https:\/\/img.youtube.com\/vi\/' + m[1] + '\/hqdefault.jpg', logo: false };\n    }\n    if (LOGO_URL) return { src: LOGO_URL, logo: true };\n    return null;\n  }\n\n  \/* ---------- render ---------- *\/\n  function render() {\n    if (!state.events.length) {\n      root.innerHTML = '<p class=\"viq-empty\">No events are listed at the moment. Check back soon.<\/p>';\n      return;\n    }\n\n    var slice = state.events.slice(0, state.shown);\n    var html = '', openMonth = null;\n\n    slice.forEach(function (e) {\n      var mk = monthKey(e.start);\n      if (mk !== openMonth) {\n        openMonth = mk;\n        var count = state.events.filter(function (x) { return monthKey(x.start) === mk; }).length;\n        html += '<div class=\"viq-mb\"><h2>' + MONTHS[e.start.getMonth()] + ' ' + e.start.getFullYear() + '<\/h2>'\n             +  '<span>' + count + (count === 1 ? ' event' : ' events') + '<\/span><\/div>';\n      }\n\n      var ev = e.ev, img = thumbFor(ev);\n      var time = fmtTime(e.start)\n        + (e.end && sameDay(e.end, e.start) && +e.end !== +e.start ? ' to ' + fmtTime(e.end) : '')\n        + (e.end && !sameDay(e.end, e.start) ? ' until ' + e.end.toLocaleDateString('en-NZ', { day: 'numeric', month: 'short' }) : '');\n      var meta = [ev.venue, ev.room, ev.space].filter(Boolean).join(', ');\n      var desc = descFor(ev);\n\n      html += '<article class=\"viq-row\">'\n        + '<div class=\"viq-date\"><b>' + e.start.getDate() + '<\/b><i>' + weekday(e.start) + '<\/i><\/div>'\n        + '<div class=\"viq-thumb' + (img && img.logo ? ' is-logo' : '') + '\">'\n        + (img ? '<img decoding=\"async\" src=\"' + esc(img.src) + '\" alt=\"' + (img.logo ? 'Manu Tukutuku' : esc(ev.title)) + '\" loading=\"lazy\">' : '')\n        + '<\/div>'\n        + '<div class=\"viq-text\">'\n        + '<h3 class=\"viq-title\">' + esc(ev.title) + '<\/h3>'\n        + '<p class=\"viq-time\">' + esc(time) + '<\/p>'\n        + (meta ? '<p class=\"viq-meta\">' + esc(meta) + '<\/p>' : '')\n        + '<\/div>'\n        + (desc ? '<div class=\"viq-descbox\"><p class=\"viq-desc\">' + esc(desc) + '<\/p><\/div>' : '')\n        + (ev.ticketsUrl ? '<a class=\"viq-btn\" href=\"' + esc(ev.ticketsUrl) + '\" target=\"_blank\" rel=\"noopener\">Buy tickets<\/a>' : '')\n        + '<\/article>';\n    });\n\n    if (state.shown < state.events.length) {\n      var left = state.events.length - state.shown;\n      html += '<button type=\"button\" class=\"viq-more\">Show ' + Math.min(PAGE_SIZE, left) + ' more<\/button>';\n    }\n\n    root.innerHTML = html;\n  }\n\n  root.addEventListener('click', function (e) {\n    if (e.target && e.target.closest && e.target.closest('.viq-more')) {\n      e.preventDefault();\n      state.shown += PAGE_SIZE;\n      render();\n    }\n  });\n\n  \/* ---------- load ---------- *\/\n  fetch(FEED_URL)\n    .then(function (r) { if (!r.ok) throw new Error('VenueIQ feed returned HTTP ' + r.status); return r.json(); })\n    .then(function (data) {\n      if (!data || !Array.isArray(data.events)) throw new Error('VenueIQ feed returned an invalid response');\n      var today = startOfDay(new Date());\n\n      state.events = data.events.map(function (ev) {\n        if (!ev || !ev.start) return null;\n        var s = new Date(ev.start);\n        if (isNaN(s)) return null;\n        var en = ev.end ? new Date(ev.end) : null;\n        if (en && isNaN(en)) en = null;\n        return { ev: ev, start: s, end: en };\n      }).filter(function (e) {\n        if (!e) return false;\n        if (SHOW_PAST) return true;\n        return startOfDay(e.end && e.end > e.start ? e.end : e.start) >= today;\n      }).sort(function (a, b) { return a.start - b.start; });\n\n      if (state.events.length) {\n        console.log('[VenueIQ list] fields available on the first event:', Object.keys(state.events[0].ev).join(', '));\n      }\n      render();\n    })\n    .catch(function (err) {\n      console.error('[VenueIQ list]', err);\n      root.innerHTML = '<p class=\"viq-error\">Events are not loading right now. Check the feed URL, token, and Allowed Website setting in VenueIQ.<\/p>';\n    });\n})();\n<\/script>\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Coming Up Loading events&#8230;<\/p>\n","protected":false},"author":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_kad_post_transparent":"","_kad_post_title":"hide","_kad_post_layout":"fullwidth","_kad_post_sidebar_id":"","_kad_post_content_style":"unboxed","_kad_post_vertical_padding":"hide","_kad_post_feature":"hide","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"footnotes":""},"class_list":["post-267","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/pages\/267","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=267"}],"version-history":[{"count":5,"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/pages\/267\/revisions"}],"predecessor-version":[{"id":349,"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=\/wp\/v2\/pages\/267\/revisions\/349"}],"wp:attachment":[{"href":"https:\/\/manutukutuku.co.nz\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=267"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}