{
  "version": 3,
  "sources": ["/cdn/shop/t/56/assets/data.js?cb=1"],
  "sourcesContent": ["/* ==========================================================================\n   Aura Smart: store data\n   Products, prices, specs, reviews and FAQs are taken from aurasmart.ie.\n   Copy has been edited for tone and consistency; facts are unchanged.\n   ========================================================================== */\nwindow.AURA = (() => {\n  // Shopify supplies these maps before this classic script; the static prototype has neither.\n  const asset = path => window.AURA_ASSETS && /^(?:\\/)?assets\\//.test(path)\n    ? window.AURA_ASSETS + path.split('/').pop() : path;\n  const img = n => /^https?:\\/\\//i.test(n) ? n : asset(`assets/img/${n}`);\n  const route = href => {\n    if (!window.AURA_ROUTES || !href || !/^(?:\\.\\/)?[^/:#]+\\.html(?:[?#]|$)/.test(href)) return href;\n    const url = new URL(href, location.href), key = url.pathname.split('/').pop().replace('.html', '');\n    const params = url.searchParams, map = window.AURA_ROUTES;\n    let target = map[key];\n    if (key === 'shop') {\n      if (params.has('q')) target = map.search;\n      else if (params.get('c') === 'doorbells') target = (map.collections || '/collections/') + 'video-doorbells';\n      else if (params.has('c')) target = (map.collections || '/collections/') + encodeURIComponent(params.get('c'));\n      params.delete('c');\n    } else if (key === 'product') { target = (map.products || '/products/') + encodeURIComponent(params.get('p') || ''); params.delete('p'); }\n    else if (key === 'article') { target = (map.articles || '/blogs/journal/') + encodeURIComponent(params.get('a') || ''); params.delete('a'); }\n    else if (key === 'policy') { target = map.policies?.[params.get('p') || 'refund']; params.delete('p'); }\n    if (!target) return href;\n    return target + (params.size ? (target.includes('?') ? '&' : '?') + params : '') + url.hash;\n  };\n  // Page scripts can reuse their prototype HTML and resolve its links/assets at the boundary.\n  const html = markup => window.AURA_ASSETS || window.AURA_ROUTES ? markup\n    .replace(/\\b(href|action)=\"([^\"<>]+)\"/g, (_, attr, value) => `${attr}=\"${route(value)}\"`)\n    .replace(/(?:\\/)?assets\\/(?:img|video|fonts)\\/(?:[\\w.-]+\\/)*[\\w.-]+/g, asset) : markup;\n  // Parts of the site switched off for now: Guard 2 and the smart blinds are moving to websites of\n  // their own, and nobody writes journal articles. Set one to true to bring it back; on Shopify the\n  // theme settings decide (window.AURA_FEATURES, from the layout). `shown` is false for a link to a\n  // page that's off.\n  const features = { blackoutBlinds: false, smartBlinds: false, journal: false, ...window.AURA_FEATURES };\n  const featureOf = { 'blackout-blinds': 'blackoutBlinds', 'smart-blinds': 'smartBlinds', journal: 'journal', article: 'journal' };\n  const shown = href => features[featureOf[String(href).split(/[?#]/)[0].replace(/\\.html$/, '')]] !== false;\n\n  const site = {\n    name: 'Aura Smart',\n    email: 'info@aurasmart.ie',\n    phone: '01 592 4235',\n    phoneHref: 'tel:+35315924235',\n    whatsapp: '087 690 5805',\n    whatsappHref: 'https://wa.me/353876905805',\n    facebook: 'https://www.facebook.com/aurasmart.ie',\n    instagram: 'https://www.instagram.com/aurasmart.ie',\n    address: '24A Baggot Street Upper, Dublin, D04 N528, Ireland',\n    showroom: {\n    name: 'Aura Smart showroom at Loghouse.ie',\n      town: 'Bray',   // its Eircode, A98, is Bray's\n      lines: ['Garden Centre, Kilruddery South', 'Glen of the Downs, Co. Wicklow', 'A98 W3V8, Ireland'],\n      maps: 'https://www.google.com/maps/search/?api=1&query=Loghouse.ie+Kilruddery+South+Glen+of+the+Downs+A98+W3V8',\n    },\n    homes: '8,000+',\n    reviewCount: 90,\n    rating: '4.9',\n    warranty: '18-month',\n    areas: ['Dublin', 'Cork', 'Galway', 'County Meath'],\n    nearby: [],\n  };\n\n  const collections = [\n    { handle: 'all', title: 'Shop All', blurb: 'Security cameras, video doorbells, floodlight cameras, smart locks, house alarms, smart control panels, smart sockets and light switches. Choose DIY or professional installation. No required subscription.', seoTitle: 'Shop home security devices in Ireland | Aura Smart', metaDescription: 'Shop security cameras, video doorbells, smart locks and house alarms without a required subscription. Compare DIY and fitted prices, with an 18-month warranty.', image: img('shop-all.webp') },\n    { handle: 'cameras', title: 'Security Cameras', blurb: 'Indoor and outdoor security cameras, including solar, wired and floodlight models. Video doorbells have their own category. Compare resolution, power and DIY or fitted prices.', seoTitle: 'Security cameras and home CCTV in Ireland | Aura Smart', metaDescription: 'Compare indoor and outdoor security cameras, from solar models to wired home CCTV. View DIY and fitted prices, with no required monthly subscription.', image: img('cat-security-camera.webp') },\n    { handle: 'doorbells', title: 'Video Doorbells', blurb: 'See and speak to visitors with a video doorbell and indoor monitor. Choose DIY or professional installation.', seoTitle: 'Video Doorbells Ireland | Installed or DIY | Aura Smart', metaDescription: 'Aura Smart video doorbells, installed or DIY. No monthly subscription, free An Post delivery and an 18-month warranty.', image: img('aura-category-video-doorbell-1x1.webp') },\n    { handle: 'floodlights', title: 'Floodlight Cameras', blurb: 'An outdoor camera and motion-activated light in one. Choose a 5MP floodlight camera, or a solar wall light camera for an entrance without a power socket.', seoTitle: 'Floodlight cameras with no subscription | Aura Smart', metaDescription: 'Compare a 5MP floodlight camera and a solar wall light camera, each a light and camera in one. View DIY and fitted prices without a required subscription.', image: img('cat-floodlight.webp') },\n    { handle: 'locks', title: 'Smart Locks', blurb: 'Open your door with a fingerprint, code or mobile. Choose the smart lock for most standard doors, or the slim smart lock for narrow aluminium doors. Ask us to check your door before ordering.', seoTitle: 'Smart locks with fingerprint access in Ireland | Aura Smart', metaDescription: 'Smart locks with fingerprint, code and mobile access, for standard doors or narrow aluminium doors. Ask us to check the fit. Compare DIY and fitted prices.', image: img('silver-lock-cream-landscape.jpg') },\n    { handle: 'alarms', title: 'House Alarms', blurb: 'A wireless house alarm with named zones and GSM call and text alerts. Ask us about the sensors and SIM requirements for your home.', seoTitle: 'Wireless house alarms with GSM alerts | Aura Smart', metaDescription: 'View our wireless house alarm with GSM call and text alerts, named zones and DIY or fitted prices. Ask us about sensors and SIM requirements before buying.', image: img('p-alarm-system.webp') },\n    { handle: 'panels', title: 'Smart Control Panels', blurb: 'Touchscreens for compatible lights, devices and scenes. Choose a 3.5\u2033 wall panel with infrared control, a 5\u2033 desktop panel you can move between rooms, or a 7\u2033 or 8\u2033 panel with built-in Alexa.', seoTitle: 'Smart control panels for lights and devices | Aura Smart', metaDescription: 'Compare 3.5\u2033, 7\u2033 and 8\u2033 wall control panels and a 5\u2033 desktop panel for compatible lights, devices and scenes. View DIY and fitted prices.', image: img('aura-category-smart-panel-1x1.webp') },\n    { handle: 'power', title: 'Smart Sockets & Switches', blurb: 'A wall socket with USB-C charging and light switches with one, two or three keys, all switched from the app through an Aura hub. Glass or aluminium, in white, grey, gold or black. Ask us to check your hub and wiring.', seoTitle: 'Smart sockets and light switches in glass or aluminium | Aura Smart', metaDescription: 'Smart wall sockets with USB-C and smart light switches in glass or aluminium, in white, grey, gold or black. They work through an Aura hub. Compare DIY and fitted prices.', image: img('aura-category-switch-socket-1x1.webp') },\n  ];\n\n  // Quantity prices for the smart sockets and switches, counted together in the cart: from `min` of\n  // them, each costs `off` euro less than its own price (pro = fitted, diy = supply only, each way of\n  // buying counted on its own), and from `quote` on we quote. They're left out of the bundle\n  // discount. Shopify charges them with the automatic discounts scripts/shopify/bundles.mjs makes\n  // from these numbers, so run its setup after changing them.\n  const volume = {\n    handles: ['smart-socket', 'smart-switch-1-gang', 'smart-switch-2-gang', 'smart-switch-3-gang'],\n    tiers: [{ min: 5, off: { pro: 4, diy: 4 } }, { min: 10, off: { pro: 10, diy: 7 } }],\n    quote: 20,\n  };\n\n  // every product's photos sit on the same light blue, so the shop reads as one set\n  const TINT = '#E8E5DF';\n\n  // The smart light switch, one product per gang count (1, 2, 3): a gang picker in the buy box moves\n  // between them (family), and only the 2-gang is listed in the shop, menus and counts (listed: false).\n  const switchFamily = [1, 2, 3].map(n => ({ label: `${n} gang`, handle: `smart-switch-${n}-gang` }));\n  const lightSwitch = n => {\n    const keys = ['', 'one key', 'two keys', 'three keys'][n], Keys = keys.replace(/^./, m => m.toUpperCase());\n    const finishes = [['White', 'Glass', '#ECE9E1'], ['Grey', 'Glass', '#59595B'], ['Gold', 'Glass', '#DCC3A0'], ['Black', 'Glass', '#1F2022'],\n      ['White', 'Aluminium', '#F1F1EF'], ['Grey', 'Aluminium', '#5C5E5F'], ['Gold', 'Aluminium', '#C4A07F'], ['Black', 'Aluminium', '#2E2F31']];\n    const colors = finishes.map(([tone, material, hex]) => ({ name: `${tone} ${material.toLowerCase()}`, material, hex, image: `p-smart-switch-${n}-${tone.toLowerCase()}-${material.toLowerCase()}.webp` }));\n    return {\n      handle: `smart-switch-${n}-gang`, name: n === 2 ? 'Smart Switch' : `Smart light switch ${n}-gang`, family: switchFamily, listed: n === 2, hoverShot: 2,\n      seoTitle: `${n}-gang smart light switch in glass or aluminium | Aura Smart`,\n      metaDescription: `A ${n}-gang smart light switch with ${keys}, in glass or aluminium and white, grey, gold or black. Press a key or use the app. Pro installation available.`,\n      type: 'Smart switch', collections: ['power'],\n      badge: 'New', price: [89, 59], compare: 0,  // every gang the same, per Grant\n      tagline: n === 2 ? 'Smart switch in glass or aluminium, with app and voice control.' : `${Keys} in glass or aluminium, pressed or switched from the app.`,\n      colors,\n      images: colors.map(c => c.image),\n      overview: [\n        { photo: `pdp-smart-switch-${n}-white`, alt: `A white glass ${n}-gang smart light switch beside a bed, above an oak bedside table`, finish: 'White glass' },\n        { photo: `pdp-smart-switch-${n}-grey`, alt: `A grey glass ${n}-gang smart light switch beside the door in an entrance hall`, finish: 'Grey glass' },\n        { photo: `pdp-smart-switch-${n}-gold`, alt: `A gold aluminium ${n}-gang smart light switch on a deep green plaster wall beside a walnut door frame`, finish: 'Gold aluminium' },\n        { photo: `pdp-smart-switch-${n}-black`, alt: `A black aluminium ${n}-gang smart light switch beside a black steel glazed door`, finish: 'Black aluminium' },\n        { photo: `pdp-smart-switch-${n}-white-aluminium`, alt: `A white aluminium ${n}-gang smart light switch beside a bed, above an oak bedside table`, finish: 'White aluminium' },\n        { photo: `pdp-smart-switch-${n}-grey-aluminium`, alt: `A grey aluminium ${n}-gang smart light switch beside the door in an entrance hall`, finish: 'Grey aluminium' },\n        { photo: `pdp-smart-switch-${n}-gold-glass`, alt: `A gold glass ${n}-gang smart light switch on a deep green plaster wall beside a walnut door frame`, finish: 'Gold glass' },\n        { photo: `pdp-smart-switch-${n}-black-glass`, alt: `A black glass ${n}-gang smart light switch beside a black steel glazed door`, finish: 'Black glass' },\n      ],\n      tint: TINT,\n      highlights: [['toggle', n === 1 ? 'One push key' : `${n} push keys`], ['phone', 'Aura app control'], ['signal', 'Works with an Aura hub'], ['moon', 'A light in each key']],\n      intro: `A smart light switch with ${keys}, in glass or aluminium, that goes in place of your old switch. Press a key to switch a light, or switch it from the Aura app when you\u2019re away or already in bed. A small light in each key helps you find it in the dark. It needs an Aura hub, such as the 7\u2033 smart control panel: ask us to check your hub and switch wiring before ordering.`,\n      features: [\n        ['Glass or aluminium', 'Choose smooth keys of anti-glare satin glass or solid anodised aluminium, each in white, grey, gold or black. Every finish matches the smart wall socket.'],\n        [n === 1 ? 'One key, one light' : `${Keys}, ${n} lights`, 'Each key switches its own light circuit. Choose 1, 2 or 3 gang to match the lights your switch controls now.'],\n        ['Press it or use the app', 'The keys work like any light switch. In the Aura app you can switch the lights from anywhere and set schedules and scenes through your Aura hub. Ask us what your hub supports.'],\n        ['A light in each key', 'A small indicator in each key shows where it is in the dark.'],\n        ['Works with an Aura hub', 'The switch connects through an Aura hub rather than straight to your Wi-Fi. The 7\u2033 smart control panel has the hub built in. Ask us to check the hub you have.'],\n        ['Replaces your old switch', 'It fits a standard single switch box. Some smart switches need a neutral wire at the switch, so send us a photo of your current switch and its wiring and we\u2019ll check.'],\n        ['Fitting is electrical work', 'Choose Pro installation and a licensed partner fits it for you. To fit it yourself, you need to be qualified for mains wiring, with the power off at the fuse board.'],\n      ],\n      specs: [\n        ['Keys', `${n} push key${n > 1 ? 's' : ''}, ${n} light circuit${n > 1 ? 's' : ''}`], ['Indicator', 'A small light in each key'],\n        ['Control', 'Aura app (through an Aura hub), keys on the plate'], ['Works with', 'An Aura hub, such as the 7\u2033 smart control panel'],\n        ['Plate', '86 \u00D7 86 mm'], ['Finishes', 'Anti-glare glass or anodised aluminium, in white, grey, gold or black'],\n        ['Fitting', 'Single switch box; ask us to check the wiring'], ['Warranty', '18 months'],\n      ],\n      idealFor: ['', 'Bedrooms, landings and any room with one light.', 'Bedsides, living rooms and rooms with a main light and lamps.', 'Kitchens, open-plan rooms and hallways with several lights.'][n],\n    };\n  };\n\n  // price: [pro, diy], compare: was price\n  // images: the gallery, packshots only (the product on its own, never fitted or in use).\n  // hoverShot: which of the overview's photos is the product card's second photo, shown on hover\n  // (the first, if not given).\n  // overview: the overview's shots of the product at home, at most two. The first is the wide one, with\n  // box: [x, y, w, h], where the product is in it (% of the photo); the second, the close one, if any\n  // (else the overview moves in on the first). finish: the finish a shot shows, when it's a choice.\n  // video: the product's clip. photo: assets/img/<photo>-<width>.{avif,webp}, scenes 3:2 at\n  // 640/960/1440/1536, moments and details 4:5 at 640/960/1122.\n  const products = [\n    {\n      handle: 'smart-lock', name: 'Smart lock with fingerprint access',\n      seoTitle: 'Smart lock with fingerprint access in Ireland | Aura Smart',\n      metaDescription: 'Open your door with a fingerprint, code or mobile. Choose black or silver, share timed access and get an 18-month warranty. Ask us to check the fit.',\n      type: 'Smart lock', collections: ['locks'],\n      badge: null, price: [349, 299], compare: 440,\n      colors: [{ name: 'Black', hex: '#1b1c1e', image: 'p-smart-lock-black.webp' }, { name: 'Silver', hex: '#c9ccd1', image: 'p-smart-lock-silver.webp' }],\n      tagline: 'Open with a fingerprint, code or mobile.',\n      images: ['p-smart-lock.webp', 'p-smart-lock-black.webp', 'p-smart-lock-silver.webp'],\n      overview: [{ photo: 'pdp-smart-lock-moment', alt: 'A fingertip on the reader of a black smart lock on a dark grey front door', finish: 'Black' }, { photo: 'pdp-smart-lock-detail', alt: 'A silver smart lock and keypad on a cream panelled door', finish: 'Silver' }],\n      tint: TINT,\n      highlights: [['fingerprint', 'Fingerprint & code'], ['key', '7 access methods'], ['share', 'Timed access sharing'], ['droplet', 'Weatherproof exterior']],\n      intro: 'A smart lock for most standard doors, available in black or silver. Open it with a fingerprint, code, mobile, smartwatch, NFC or mechanical key. Share timed access with family and guests. Ask us to check your door before ordering.',\n      features: [\n        ['Seven access methods', 'Use a fingerprint, passcode, app, Bluetooth, smartwatch, NFC or mechanical key. Alexa and Google Home voice control require a Wi-Fi bridge.'],\n        ['Check your door first', 'Fits most standard doors. Send us a photo if you need help checking compatibility.'],\n        ['Timed access sharing', 'Set access for a few minutes or several days, with one-time or recurring codes for guests and cleaners.'],\n        ['Weatherproof outer panel', 'The exterior panel is weatherproof. Keep the interior panel dry.'],\n        ['18-month warranty', 'Covered by our 18-month warranty, with support from our Irish team.'],\n      ],\n      specs: [\n        ['Unlock methods', 'Fingerprint, passcode, app, Bluetooth, smartwatch, NFC, mechanical key'], ['Voice control', 'Alexa & Google Home (Wi-Fi bridge required)'],\n        ['Finishes', 'Black, Silver'], ['Access sharing', 'Timed, one-time or recurring e-keys'], ['Outer panel', 'Weatherproof'], ['Fitting', 'Retrofits most standard doors'], ['Warranty', '18 months'],\n      ],\n      idealFor: 'Family homes, short-term lets, rentals and small offices.',\n    },\n    {\n      handle: 'smart-lock-slim', name: 'Slim smart lock for aluminium doors',\n      seoTitle: 'Slim smart lock for aluminium doors in Ireland | Aura Smart',\n      metaDescription: 'A slim smart lock for narrow aluminium doors. Open it with a fingerprint, code, card, key or the app. IP65 rated, with screws that slide to match old holes.',\n      type: 'Smart lock', collections: ['locks'],\n      badge: 'New', price: [349, 299], compare: 0,  // same as the smart lock (Grant, 26 Oct)\n      tagline: 'A slim lock for narrow aluminium doors.',\n      colors: [\n        { name: 'Black', hex: '#1b1c1e', image: 'https://cdn.shopify.com/s/files/1/0613/5260/7918/files/smart-lock-anthracite-v2-square-1200.jpg?v=1793971419' },\n        { name: 'Silver', hex: '#c9ccd1', image: 'https://cdn.shopify.com/s/files/1/0613/5260/7918/files/silver-lock-logo-square-1200_df04971e-2ed3-4dab-8c7a-d129b66d130e.jpg?v=1793981719' },\n      ],\n      images: ['p-smart-lock-slim.webp'],\n      overview: [{ photo: 'pdp-smart-lock-slim-scene', alt: 'Slim smart lock on the narrow frame of a grey aluminium garden door after rain', box: [38.41, 39.26, 3.71, 11.82] }, { photo: 'pdp-smart-lock-slim-moment', alt: 'A fingertip on the reader of the slim smart lock in the rain' }],\n      tint: TINT,\n      highlights: [['fingerprint', 'Fingerprint, code & card'], ['key', '5 ways to open'], ['droplet', 'IP65 \u00B7 sealed both sides'], ['tools', 'Fits existing holes']],\n      intro: 'A slim, one-piece smart lock in black for narrow-profile aluminium doors. Open it with a fingerprint, keypad code, card, mechanical key or the app over Bluetooth. Add the smart gateway to use it from the app when you\u2019re away. Send us a photo of your door and lock to check the fit.',\n      features: [\n        ['Five ways to open', 'Use a fingerprint, keypad code, card, mechanical key or the app. The app connects to the lock over Bluetooth when you\u2019re near the door.'],\n        ['Remote access with the gateway', 'Add the smart gateway to unlock from the app, add access codes and use the lock\u2019s other supported features while you\u2019re away.'],\n        ['Made for narrow aluminium doors', 'The slim plate suits narrow door frames. It fits many mortise lock bodies, including 85 series thermal-break aluminium, 6068, 6072 and 4592. Check your lock body with us before ordering.'],\n        ['Usually no drilling', 'The fixing screws slide to line up with the holes left by your old lock, so most doors need no new holes. The plate must cover the old holes and the spindle must suit your lock body.'],\n        ['Sealed on both sides', 'Rated IP65, with weather sealing on the outside and inside panels. Salt-spray tested for more than 200 hours to resist corrosion.'],\n        ['Normally open mode and alarm', 'Normally open mode leaves the door free to open until you switch it off. Repeated failed attempts set off an alarm.'],\n        ['18-month warranty', 'Covered by our 18-month warranty, with support from our Irish team.'],\n      ],\n      specs: [\n        ['Unlock methods', 'Fingerprint, keypad code, card, app (Bluetooth), mechanical key'], ['Remote access', 'With the smart gateway (sold separately)'], ['Finish', 'Black'],\n        ['Weatherproofing', 'IP65, sealed both sides'], ['Corrosion testing', 'Salt spray, 200+ hours'], ['Lock bodies', '85 series thermal-break aluminium, 6068, 6072, 4592, large and small 50, single latch'],\n        ['Fitting', 'Sliding screw positions to match existing holes'], ['Modes', 'Normally open mode'], ['Alarm', 'After repeated failed attempts'], ['Warranty', '18 months'],\n      ],\n      idealFor: 'Aluminium front and back doors, side entrances, home offices and small shops.',\n    },    {\n      handle: 'smart-cylinder-lock', name: \"Smart Cylinder Lock\",\n      seoTitle: \"Smart Cylinder Lock in Ireland | Aura Smart\",\n      metaDescription: \"Keep your handles. Lose the keys. A fingerprint smart euro cylinder with Wi\u2011Fi + Bluetooth, 99 fingerprints, 50 codes and 250 cards. IP65. Fitted in Dublin and around Ireland, or DIY.\",\n      type: 'Smart lock', collections: ['locks'],\n      badge: 'New', price: [249, 195], compare: 0,  // David, 6 Nov 2026\n      tagline: \"Keep your handles. Lose the keys.\",\n      colors: [\n        { name: \"Black\", hex: \"#1b1c1e\", image: \"https://cdn.shopify.com/s/files/1/0613/5260/7918/files/05-fingerprint-use.jpg?v=1793998105\" },\n        { name: \"Silver\", hex: \"#c9ccd1\", image: \"https://cdn.shopify.com/s/files/1/0613/5260/7918/files/04-silver-installed.jpg?v=1794002030\" },\n      ],\n      images: [\n        'https://cdn.shopify.com/s/files/1/0613/5260/7918/files/01-black-studio.jpg?v=1794054890',\n        'https://cdn.shopify.com/s/files/1/0613/5260/7918/files/02-silver-studio.jpg?v=1794005316',\n        'https://cdn.shopify.com/s/files/1/0613/5260/7918/files/04-silver-installed.jpg?v=1794002030',\n        'https://cdn.shopify.com/s/files/1/0613/5260/7918/files/05-fingerprint-use.jpg?v=1793998105',\n      ],\n      tint: TINT,\n            overview: [{\"photo\":\"pdp-smart-cylinder-lock-scene\",\"alt\":\"Aura Smart Cylinder Lock fitted to a navy Georgian front door in Dublin after rain\",\"src\":\"assets/img/pdp-smart-cylinder-lock-scene-960.webp\",\"webp\":\"assets/img/pdp-smart-cylinder-lock-scene-640.webp 640w, assets/img/pdp-smart-cylinder-lock-scene-960.webp 960w, assets/img/pdp-smart-cylinder-lock-scene-1440.webp 1440w, assets/img/pdp-smart-cylinder-lock-scene-1536.webp 1536w\",\"avif\":\"assets/img/pdp-smart-cylinder-lock-scene-640.avif 640w, assets/img/pdp-smart-cylinder-lock-scene-960.avif 960w, assets/img/pdp-smart-cylinder-lock-scene-1440.avif 1440w, assets/img/pdp-smart-cylinder-lock-scene-1536.avif 1536w\",\"ratio\":1.5,\"box\":[58.3465,53.7146,2.057,3.125]},{\"photo\":\"pdp-smart-cylinder-lock-moment\",\"alt\":\"A fingertip on the fingerprint reader of the Aura Smart Cylinder Lock\",\"src\":\"assets/img/pdp-smart-cylinder-lock-moment-960.webp\",\"webp\":\"assets/img/pdp-smart-cylinder-lock-moment-640.webp 640w, assets/img/pdp-smart-cylinder-lock-moment-960.webp 960w, assets/img/pdp-smart-cylinder-lock-moment-1122.webp 1122w\",\"avif\":\"assets/img/pdp-smart-cylinder-lock-moment-640.avif 640w, assets/img/pdp-smart-cylinder-lock-moment-960.avif 960w, assets/img/pdp-smart-cylinder-lock-moment-1122.avif 1122w\",\"ratio\":0.8}],\nhighlights: [[\"fingerprint\", \"5 ways to unlock\"], [\"tools\", \"Euro profile \u00B7 70\u2013106 mm\"], [\"wifi\", \"Wi\u2011Fi + Bluetooth app\"], [\"user\", \"99 prints \u00B7 50 codes \u00B7 250 cards\"], [\"bolt\", \"Up to 12 months \u00B7 USB\u2011C backup\"], [\"droplet\", \"IP65 \u00B7 \u221220 to 65 \u00B0C\"]],\n      intro: \"A fingerprint smart cylinder that replaces a standard euro-profile cylinder \u2014 so you keep your existing handles. Open it with a fingerprint, keypad code, card, the Tuya app over Wi\u2011Fi or Bluetooth, or a mechanical key. Adjustable from 70 to 106 mm. Free delivery with An Post. Send us a photo of your door and cylinder to check the fit.\",\n      features: [\n        [\"Five ways to unlock\", \"Use a fingerprint, keypad code, RFID card, the Tuya app or a mechanical key. Unlock from your phone when you\u2019re near the door over Bluetooth, or from anywhere over Wi\u2011Fi.\"],\n        [\"Keep your handles\", \"The smart cylinder replaces a standard euro-profile cylinder. Your existing handle set stays on the door \u2014 you upgrade the cylinder, not the whole lock.\"],\n        [\"Fits standard euro cylinders\", \"Adjustable length from 70 to 106 mm. Suits wood, steel, stainless steel, aluminium and brass doors with a euro-profile mortise lock. Send us a photo to confirm the fit before you order.\"],\n        [\"Shared access made simple\", \"Store up to 99 fingerprints, 50 passcodes and 250 cards \u2014 useful for family, guests, staff and short-term lets.\"],\n        [\"Long battery life\", \"Runs on three AAA alkaline batteries for up to 12 months in typical use. A USB\u2011C emergency power port keeps you in if the batteries run flat.\"],\n        [\"Built for Irish weather\", \"Zinc alloy body in black or silver, weather-sealed to IP65 and rated from \u221220 \u00B0C to 65 \u00B0C.\"],\n        [\"18-month warranty\", \"Covered by our 18-month warranty, with support from our Irish team. Free delivery with An Post on DIY orders.\"],\n      ],\n      specs: [\n        [\"Unlock methods\", \"Fingerprint, passcode, RFID card, Tuya app, mechanical key\"],\n        [\"Users\", \"Up to 99 fingerprints, 50 passcodes and 250 cards\"],\n        [\"Connectivity\", \"Wi\u2011Fi and Bluetooth, Tuya app\"],\n        [\"Data storage\", \"Local memory and cloud\"],\n        [\"Security\", \"Grade C lock cylinder, indicator LED\"],\n        [\"Power\", \"3 \u00D7 AAA 1.5V alkaline batteries, up to 12 months; USB\u2011C emergency power port\"],\n        [\"Material and finish\", \"Zinc alloy, Black or Silver\"],\n        [\"Dimensions\", \"Front knob 59 \u00D7 41 \u00D7 40 mm \u00B7 Cylinder 70\u2013106 mm, adjustable \u00B7 Back knob 40 \u00D7 36 \u00D7 18 mm\"],\n        [\"Lock body\", \"Fits euro profile mortise locks\"],\n        [\"Suitable doors\", \"Wood, steel, stainless steel, aluminium and brass\"],\n        [\"Environment\", \"IP65 \u00B7 \u221220 \u00B0C to 65 \u00B0C \u00B7 5\u201393% humidity\"],\n        [\"Warranty\", \"18 months\"],\n        [\"Delivery\", \"Free An Post delivery on DIY orders\"],\n      ],\n      idealFor: \"Homes, apartments, offices, shops and short-term lets across Dublin and around Ireland.\",\n    },\n\n    {\n      handle: 'smart-gateway', name: 'Smart Gateway Wi-Fi + Bluetooth',\n      seoTitle: 'Smart gateway for remote smart lock access | Aura Smart',\n      metaDescription: 'Connect the slim smart lock and compatible Bluetooth devices to your Wi-Fi, so you can unlock and manage access from the app while you\u2019re away from home.',\n      type: 'Smart gateway', collections: ['locks'],\n      badge: null, price: [75, 49], compare: 0,\n      tagline: 'Connects Bluetooth devices to your Wi-Fi.',\n      images: ['p-smart-gateway.webp'],\n      overview: [{ photo: 'pdp-smart-gateway-scene', alt: 'The smart gateway on a hall console, plugged in beside the front door', box: [56.25, 58.69, 13.35, 12.21] }, { photo: 'pdp-smart-gateway-moment', alt: 'A hand sets the smart gateway down on the console, its USB-C cable running to the socket' }],\n      tint: TINT,\n      highlights: [['wifi', 'Wi-Fi 2.4GHz'], ['signal', 'Bluetooth mesh'], ['unlock', 'Remote lock control'], ['bolt', 'USB-C powered']],\n      intro: 'A small gateway that connects Bluetooth devices, such as the slim smart lock for aluminium doors, to your Wi-Fi. With it, you can unlock the door and add access codes from the app while you\u2019re away. It needs a 2.4GHz Wi-Fi network and a USB-C power supply.',\n      features: [\n        ['From Bluetooth range to anywhere', 'Bluetooth only reaches a short distance. The gateway links compatible Bluetooth devices to your Wi-Fi, so the app can reach them when you\u2019re away from home.'],\n        ['Made for the slim smart lock', 'Unlock from the app, add access codes and use the lock\u2019s other supported features remotely. Ask us before pairing it with other devices.'],\n        ['Placed between lock and router', 'Put the gateway within Bluetooth range of the lock and in reach of your Wi-Fi. Ask us about positioning if your router is far from the door.'],\n        ['2.4GHz Wi-Fi', 'Connects to 2.4GHz Wi-Fi (802.11 b/g/n). It doesn\u2019t use 5GHz networks.'],\n        ['USB-C power', 'Runs from a 5V 1A USB-C supply. Keep it plugged in: remote access stops when the gateway has no power.'],\n        ['Small and discreet', 'A white box of 64 \u00D7 64 \u00D7 15 mm that sits on a shelf or table.'],\n      ],\n      specs: [\n        ['Wireless', 'Wi-Fi 2.4GHz (802.11 b/g/n), Bluetooth mesh'], ['Works with', 'Slim smart lock for aluminium doors, compatible Bluetooth devices'], ['Power', 'USB-C, 5V 1A'],\n        ['Size', '64 \u00D7 64 \u00D7 15 mm'], ['Colour', 'White'], ['Operating temperature', '\u221210\u00B0C to 55\u00B0C'], ['Humidity', '10\u201390% RH'],\n      ],\n      idealFor: 'Homes with the slim smart lock where you want to open the door or manage access while away.',\n    },\n    {\n      handle: 'solar-camera-pro', name: 'Solar security camera Pro 2K',\n      seoTitle: 'Solar security camera Pro 2K, wire-free | Aura Smart',\n      metaDescription: 'A wire-free 2K outdoor camera with solar charging, a removable 10,000mAh battery and human detection. Choose DIY or professional installation.',\n      type: 'Solar security camera', collections: ['cameras'],\n      badge: 'Wire-free', price: [175, 149], compare: 211,\n      tagline: 'Solar charging for places without a power socket.',\n      images: ['p-solar-camera-pro.webp'],\n      overview: [{ photo: 'pdp-solar-camera-pro-moment', alt: 'Solar security camera Pro 2K on a garden wall, looking along the side path', box: [57, 27, 10.5, 5.5] }, { video: true, alt: 'Solar security camera Pro 2K under the eaves of a stone house (video)' }],\n      video: { src: 'assets/video/solar-camera-pro.mp4', poster: 'assets/video/solar-camera-pro-poster.webp' },\n      tint: TINT,\n      highlights: [['sun', 'Solar + 10,000mAh'], ['video', '2K QHD \u00B7 153\u00B0 lens'], ['user', 'AI human detection'], ['droplet', 'IP65 weatherproof']],\n      intro: 'A wire-free outdoor camera with 2K video, a 153\u00B0 lens and human detection. A solar panel charges the removable 10,000mAh battery. Check that your chosen position gets the 3\u20134 hours of daylight a day listed in the charging specification.',\n      features: [\n        ['Solar panel and removable battery', 'The 10,000mAh battery charges from the solar panel. The charging specification lists 3\u20134 hours of daylight a day.'],\n        ['2K video and a 153\u00B0 lens', 'A wide-angle f/1.8 lens and infrared LEDs provide daytime video and night vision.'],\n        ['Human detection', 'PIR and human detection help reduce unwanted alerts. The camera can also flash a light or sound an alarm.'],\n        ['Up to four detection zones', 'Choose the areas that trigger motion detection in the app.'],\n        ['Wire-free fitting', 'No power cable is needed. The outdoor housing is rated IP65.'],\n      ],\n      specs: [\n        ['Resolution', '2K QHD'], ['Lens', '153\u00B0 wide-angle, f/1.8'], ['Night vision', 'Infrared LEDs'], ['Detection', 'PIR + AI human detection'],\n        ['Detection zones', 'Up to 4 custom zones'], ['Battery', 'Removable 10,000mAh'], ['Charging', 'Solar panel (3\u20134 h daylight per day)'], ['Weatherproofing', 'IP65'], ['Installation', 'Wire-free'],\n      ],\n      idealFor: 'Gardens, sheds, side passages and anywhere without a power socket.',\n    },\n    {\n      handle: 'alarm-system-1', name: 'Wireless house alarm GSM',\n      seoTitle: 'Wireless house alarm with GSM calls and texts | Aura Smart',\n      metaDescription: 'A wireless house alarm with GSM calls, SMS alerts and named zones. Choose DIY or fitted. Ask us about the sensors and SIM requirements for your home.',\n      type: 'Wireless house alarm', collections: ['alarms'],\n      badge: null, price: [489, 440], compare: 766,\n      tagline: 'Calls and texts your chosen contacts when triggered.',\n      images: ['p-alarm-system.webp'],\n      overview: [{ photo: 'pdp-alarm-system-1-scene', alt: 'A hallway with the alarm keypad on the wall beside the front door', box: [55, 23, 3, 6] }, { photo: 'pdp-alarm-system-1-moment', alt: 'Pressing the keypad by the front door on the way out' }],\n      tint: TINT,\n      highlights: [['signal', 'GSM calls & SMS'], ['wifi', 'Wireless sensors'], ['tag', 'Named zones'], ['shield', 'Saves settings in outages']],\n      intro: 'A wireless house alarm that sends calls and texts over GSM when a zone is triggered. Name your zones and store up to five phone numbers and three SMS numbers. Contact us to check the sensors and SIM requirements for your home.',\n      features: [\n        ['GSM calls and texts', 'Cellular communication sends alarm alerts without relying on home Wi-Fi. Ask us about SIM requirements before ordering.'],\n        ['Wireless sensors', 'Most sensors need no wiring. Choose DIY or professional installation.'],\n        ['Named zones', 'Give each zone a name so you can tell where an alert came from.'],\n        ['Two wired zones', 'Connect compatible smoke, gas, vibration or infrared beam sensors.'],\n        ['Chosen alert contacts', 'Store up to five phone numbers and three SMS numbers for automatic alerts.'],\n        ['Alarm output control', 'Use the alarm output to trigger compatible connected devices.'],\n        ['Settings retained during power loss', 'Solid-state memory keeps your settings. This does not confirm how long the alarm can operate without power.'],\n      ],\n      specs: [\n        ['Communication', 'GSM cellular: calls & SMS'], ['Alert contacts', 'Up to 5 phone numbers + 3 SMS numbers'], ['Sensors', 'Wireless (no wiring for most sensors)'],\n        ['Wired zones', '2: smoke, gas, vibration, IR beam'], ['Zone naming', 'Custom name per zone'], ['Alarm output', 'Triggers connected devices'], ['Memory', 'Solid-state, retains settings in power loss'],\n      ],\n      idealFor: 'Homes and holiday properties needing call and text alerts.',\n    },\n    {\n      handle: 'solar-wall-light-camera', name: 'Solar wall light camera 2K',\n      seoTitle: 'Solar wall light camera 2K, 300 lumens | Aura Smart',\n      metaDescription: 'A solar wall light with a 2K camera, 300-lumen LED and colour night vision. Local event storage without a required subscription. Choose DIY or fitted.',\n      type: 'Solar light camera', collections: ['cameras', 'floodlights'],\n      badge: null, price: [125, 95], compare: 160,\n      tagline: 'A solar wall light with a built-in 2K camera.',\n      images: ['p-wall-light-camera.webp'],\n      overview: [{ photo: 'pdp-solar-wall-light-camera-scene', alt: 'Solar wall light camera on a rendered wall beside the front door', box: [52.5, 11, 4, 5.5] }],\n      tint: TINT,\n      highlights: [['sun', 'Solar powered'], ['video', '2K HD \u00B7 colour night'], ['lamp', '300-lumen light'], ['euro', 'No monthly fees']],\n      intro: 'A 300-lumen motion-activated wall light and 2K camera in one, with an integrated solar panel. See colour night video, speak through the app and store event recordings locally without a required subscription.',\n      features: [\n        ['300-lumen light and camera', 'The motion-activated LED lights an entrance, porch or path while the camera records activity.'],\n        ['Solar charging', 'The listed charging requirement is two hours of sunlight for a day of use. Battery life is up to 60 days in energy-saving mode.'],\n        ['2K video and colour night vision', 'View live video and recordings through the app.'],\n        ['Motion alerts and two-way audio', 'PIR detection reaches up to 7.6 metres. The camera also has a 105 dB siren and light activation.'],\n        ['Local event storage', 'Store up to 60 days of event footage locally without a required subscription.'],\n      ],\n      specs: [\n        ['Resolution', '2K HD'], ['Light', '300-lumen motion-activated LED'], ['Night vision', 'Colour'], ['Detection', 'PIR + AI, up to 25 ft (7.6 m)'], ['Siren', '105 dB'],\n        ['Audio', 'Two-way'], ['Power', 'Integrated solar panel + built-in battery'], ['Battery life', 'Up to 60 days (energy-saving mode)'], ['Storage', 'Local: up to 60 days of events'],\n      ],\n      idealFor: 'Entrances, porches, driveways, patios, back gardens and garages.',\n    },\n    {\n      handle: 'video-door-phone', name: 'Video Doorbell with Monitor (8)',\n      seoTitle: 'Video doorbell with 8\u2033 monitor and dual cameras | Aura Smart',\n      metaDescription: 'A video doorbell with two 1080p cameras, one looking down for parcels, and an 8\u2033 indoor touchscreen. Two-way audio, motion alerts and microSD recording.',\n      type: 'Video door phone', collections: ['cameras'],\n      badge: 'New', price: [249, 199], compare: 0,\n      tagline: 'Two cameras at the door, an 8\u2033 screen inside.',\n      images: ['p-video-door-phone.webp', 'p-video-door-phone-2.webp'],\n      overview: [{ photo: 'pdp-video-door-phone-scene', alt: 'The video doorbell beside a sage green front door of a rendered Irish house', box: [49.6, 33.5, 1.4, 4.8] }, { photo: 'pdp-video-door-phone-moment', alt: 'The 8\u2033 monitor on a kitchen worktop shows a courier with a parcel at the door' }],\n      tint: TINT,\n      highlights: [['video', 'Dual 1080p cameras'], ['tablet', '8\u2033 indoor touchscreen'], ['mic', 'Two-way audio'], ['sd', 'microSD up to 128GB']],\n      intro: 'A Wi-Fi video doorbell with two 1080p cameras and an 8\u2033 indoor touchscreen monitor. The main camera shows your visitor; the second looks down at the doorstep, where parcels are left. Answer from the monitor or your mobile. Ask us how the doorbell is powered and check the Wi-Fi at your door before ordering.',\n      features: [\n        ['Two cameras', 'A 160\u00B0 main camera shows the visitor and the path. A 130\u00B0 camera underneath looks down at the doorstep.'],\n        ['8\u2033 indoor monitor', 'See the doorbell\u2019s view and answer calls on a 1280 \u00D7 800 touchscreen.'],\n        ['Two-way audio', 'Talk to visitors through the monitor, or through the app on your mobile.'],\n        ['Motion alerts', 'PIR motion detection sends an alert to the monitor and to your mobile.'],\n        ['Night vision', 'Black-and-white night vision shows the doorstep after dark.'],\n        ['Recordings on a microSD card', 'Save recordings to a microSD card up to 128GB and play them back on the monitor. The card is sold separately.'],\n        ['Rain hood', 'A hood over the doorbell shelters the cameras from rain. Ask us about its weather rating before fitting it in an exposed spot.'],\n      ],\n      specs: [\n        ['Cameras', '2 \u00D7 1080p'], ['Field of view', '160\u00B0 main \u00B7 130\u00B0 downward'], ['Monitor', '8\u2033 touchscreen \u00B7 1280 \u00D7 800'], ['Audio', 'Two-way, via monitor or app'],\n        ['Detection', 'PIR motion'], ['Alerts', 'Monitor and mobile'], ['Night vision', 'Black-and-white'], ['Storage', 'microSD up to 128GB (card sold separately)'],\n        ['Connectivity', 'Wi-Fi'], ['Finish', 'Grey doorbell with rain hood, white monitor'],\n      ],\n      idealFor: 'Front doors, porches and homes that get regular deliveries.',\n    },\n    {\n      handle: 'smart-panel-3-5', name: 'Smart control panel 3.5\u2033',\n      seoTitle: 'Smart control panel 3.5\u2033 with infrared control | Aura Smart',\n      metaDescription: 'Control compatible lights and devices from a 3.5\u2033 touchscreen with three buttons, relay channels and infrared control. Check the wiring before fitting.',\n      type: 'Smart control panel', collections: ['panels'],\n      badge: null, price: [195, 158], compare: 244,\n      tagline: 'Touchscreen, three buttons and infrared control.',\n      images: ['p-smart-panel-3-5.webp'],\n      overview: [{ photo: 'pdp-smart-panel-3-5-scene', alt: 'A living room with the 3.5\u2033 panel on the wall by the door', box: [35.6, 35.8, 2.7, 3.8] }, { photo: 'pdp-smart-panel-3-5-moment', alt: 'A finger on the 3.5\u2033 smart control panel' }],\n      tint: TINT,\n      highlights: [['tablet', '3.5\u2033 touchscreen'], ['toggle', '3 relay channels'], ['remote', 'IR \u00B7 110+ device types'], ['wifi', 'Wi-Fi + SigMesh']],\n      intro: 'A 3.5\u2033 wall control panel with a touchscreen, three backlit buttons and three relay channels. Use its built-in infrared control for compatible devices such as a TV or air conditioning unit. Check the wiring and load requirements before fitting.',\n      features: [\n        ['Touchscreen and buttons', 'Use the 3.5\u2033 display, three physical buttons and three relay channels in one wall panel.'],\n        ['Compact display', 'A touchscreen with narrow bezels fits into the wall switch format.'],\n        ['Capacitive touch', 'The screen supports multi-touch controls.'],\n        ['Backlit buttons', 'Button lighting helps you find the controls in the dark.'],\n        ['Built-in infrared', 'Three infrared LEDs support more than 110 device types across 12 categories. Check your device is compatible.'],\n      ],\n      specs: [\n        ['Display', '3.5\u2033 capacitive touchscreen'], ['Controls', '3 buttons, 3 relay channels, IR'], ['Wireless', 'Wi-Fi, SigMesh, IR'], ['Input voltage', '100\u2013240V~ 50/60Hz'],\n        ['Max load', '600W total \u00B7 200W per channel'], ['Frequency', '2400\u20132483.5 MHz'], ['Size', '86 \u00D7 86 \u00D7 11.5 mm (35.5 mm with base)'], ['Weight', '192 g'],\n        ['Operating temperature', '0\u00B0C \u2013 40\u00B0C'], ['Humidity', '5\u201390% RH, non-condensing'],\n      ],\n      idealFor: 'Living rooms, bedrooms and anywhere you want one switch to do more.',\n    },\n    {\n      handle: 'floodlight-camera', name: 'Floodlight camera 5MP',\n      seoTitle: 'Floodlight camera 5MP with 2,600-lumen light | Aura Smart',\n      metaDescription: 'See your driveway with a 5MP Wi-Fi floodlight camera. A 2,600-lumen light, motion alerts, two-way audio and a siren. Choose DIY or professional fitting.',\n      type: 'Floodlight camera', collections: ['cameras', 'floodlights'],\n      badge: null, price: [249, 199], compare: 298, rating: { value: 5.0, count: 8 },\n      tagline: '5MP ultra-clear video with a 2,600-lumen floodlight.',\n      images: ['p-floodlight-camera.webp', 'p-floodlight-camera-2.webp'],\n      overview: [{ photo: 'pdp-floodlight-camera-moment', alt: 'Floodlight camera 5MP above the back door of a brick house at dusk', box: [64.5, 10, 10.5, 7] }],\n      tint: TINT,\n      highlights: [['lamp', '2600 lumens'], ['video', '5MP video'], ['user', 'PIR human detection'], ['siren', 'Siren alarm']],\n      intro: 'A Wi-Fi floodlight camera with 5MP video, two-way audio and a siren. Set the 2,600-lumen light to switch on with motion, follow a schedule or respond to manual control. Share access with up to five users.',\n      features: [\n        ['2,600-lumen floodlight', 'Light an outdoor area when you need to see it after dark.'],\n        ['Three light controls', 'Choose motion activation, a schedule or manual control.'],\n        ['5MP Wi-Fi camera', 'View live, ultra-clear video from your mobile.'],\n        ['Motion detection zones', 'Choose the areas that trigger PIR motion alerts.'],\n        ['Two-way audio', 'Speak to visitors through the built-in microphone and speaker.'],\n        ['Built-in siren', 'Activate the siren from the app.'],\n        ['Share with five users', 'WebRTC video streaming supports shared access for up to five users.'],\n      ],\n      specs: [\n        ['Brightness', '2600 lumens'], ['Video', '5MP'], ['Detection', 'PIR human detection, motion zones'], ['Night visibility', 'Up to 10 m'],\n        ['Audio', 'Two-way (half-duplex), built-in mic & speaker'], ['Alarm', 'Siren'], ['Light control', 'Manual, PIR or schedule'], ['Connectivity', 'Wi-Fi, WebRTC'], ['Users', 'Up to 5'],\n      ],\n      idealFor: 'Driveways, back gardens, yards and side entrances.',\n    },\n    {\n      handle: 'indoorcam-p1', name: 'Indoor Pan-Tilt Camera',\n      seoTitle: 'Indoor security camera P1 2K, 360\u00B0 pan | Aura Smart',\n      metaDescription: 'A 2K indoor camera with 360\u00B0 pan, motion tracking and infrared night vision. The built-in call button lets someone at home contact you with one touch.',\n      type: 'Indoor camera', collections: ['cameras'],\n      badge: null, price: [70, 49], compare: 85,\n      tagline: 'A 2K indoor camera that pans through 360\u00B0.',\n      images: ['p-indoorcam-p1.webp'],\n      overview: [{ photo: 'pdp-indoorcam-p1-scene', alt: 'Indoor camera P1 2K on a bookshelf, looking over a living room with a dog asleep on the rug', box: [27.4, 37, 4.4, 10] }, { photo: 'pdp-indoorcam-p1-moment', alt: 'A finger pressing the call button on the indoor camera P1 2K' }],\n      tint: TINT,\n      highlights: [['video', '2K video'], ['rotate', '360\u00B0 pan'], ['phone', 'One-touch calling'], ['speaker', 'Alexa and Google Assistant']],\n      intro: 'A 2K pan-and-tilt indoor camera with motion tracking and infrared night vision. Move the view around the room in the app. A built-in call button lets someone at home contact you with one touch.',\n      features: [\n        ['2K video', 'View indoor footage in 2K resolution.'],\n        ['360\u00B0 pan', 'Move the camera view around the room. Furniture and walls can still block the view.'],\n        ['Wi-Fi and Bluetooth pairing', 'Follow the pairing steps in the app to connect the camera.'],\n        ['One-touch calling', 'A built-in button lets someone at home start a call.'],\n        ['Motion tracking', 'The camera follows moving objects automatically.'],\n        ['Infrared night vision', 'View black-and-white footage in low light and darkness.'],\n        ['Voice assistant support', 'Works with Amazon Alexa and Google Assistant.'],\n      ],\n      specs: [\n        ['Resolution', 'True 2K'], ['Coverage', '360\u00B0 panoramic'], ['Tracking', 'AI motion tracking'], ['Night vision', 'Infrared'],\n        ['Calling', 'One-touch call button'], ['Setup', 'Wi-Fi + Bluetooth'], ['Works with', 'Amazon Alexa, Google Assistant'],\n      ],\n      idealFor: 'Living rooms, home offices and checking on pets indoors.',\n    },\n    {\n      handle: 'wired-camera-pro', name: 'Wired security camera Pro 8MP',\n      seoTitle: 'Wired security camera Pro 8MP, pan and tilt | Aura Smart',\n      metaDescription: 'An 8MP outdoor camera with 360\u00B0 pan, 90\u00B0 tilt, 600-lumen LEDs and an IP66 housing. Supports microSD cards up to 128GB. Choose DIY or professional fitting.',\n      type: 'PTZ security camera', collections: ['cameras'],\n      badge: null, price: [210, 179], compare: 234,\n      tagline: '8MP video, 360\u00B0 pan and 90\u00B0 tilt.',\n      images: ['p-wired-camera-pro.webp'],\n      overview: [{ photo: 'pdp-wired-camera-pro-scene', alt: 'Wired security camera Pro 8MP at the corner of a rendered garage, under the eaves', box: [45.3, 22, 6.2, 9] }],\n      tint: TINT,\n      highlights: [['video', '8MP video'], ['rotate', '360\u00B0 pan \u00B7 90\u00B0 tilt'], ['siren', 'Sound & light alarm'], ['droplet', 'IP66 outdoor rating']],\n      intro: 'An outdoor pan-and-tilt camera with an 8MP sensor, 600-lumen LEDs and a sound alarm. Connect it to a compatible power supply using the included 3-metre cable. Store recordings on a microSD card up to 128GB, or use optional cloud storage.',\n      features: [\n        ['8MP sensor', 'An 8-megapixel CMOS sensor records outdoor detail.'],\n        ['Automatic pan and tilt', '360\u00B0 horizontal and 90\u00B0 vertical movement can scan the area automatically.'],\n        ['Driveway monitoring', 'Use the camera to view a driveway or entrance.'],\n        ['Boundary monitoring', 'Human and motion detection can alert you to activity near a wall or perimeter.'],\n        ['Sound and light alarm', 'The built-in speaker and 600-lumen LEDs provide an audible and visible alert.'],\n        ['IP66 outdoor rating', 'The operating temperature range is \u221220\u00B0C to 55\u00B0C.'],\n      ],\n      specs: [\n        ['Image sensor', '8MP CMOS'], ['Night vision', 'Up to 15 m'], ['Field of view', '83\u00B0 H \u00B7 45\u00B0 V \u00B7 100\u00B0 D'], ['Pan & tilt', '360\u00B0 / 90\u00B0'],\n        ['LED brightness', '600 lumens'], ['Wi-Fi', '2.4GHz & 5GHz'], ['Frame rate', '20 FPS'], ['Audio', 'Built-in mic & speaker'], ['Alarm trigger', 'Human & motion detection'],\n        ['Weatherproofing', 'IP66'], ['Power', 'DC 12V / 1A (3 m cable included)'], ['Storage', 'microSD up to 128GB + cloud'], ['Operating temperature', '\u221220\u00B0C to 55\u00B0C'],\n      ],\n      idealFor: 'Driveways, yards, farm buildings and commercial frontages.',\n    },\n    {\n      handle: 'smart-panel-8', name: 'Smart control panel 8\u2033',\n      seoTitle: 'Smart control panel 8\u2033 with built-in Alexa | Aura Smart',\n      metaDescription: 'An 8\u2033 wall touchscreen with built-in Alexa, Wi-Fi, Zigbee 3.0 and Bluetooth. Control compatible devices and scenes by touch, voice, app or button.',\n      type: 'Smart home hub', collections: ['panels'],\n      badge: null, price: [325, 299], compare: 390,\n      tagline: 'An 8\u2033 touchscreen with built-in Alexa.',\n      images: ['p-smart-panel-8.webp'],\n      overview: [{ photo: 'pdp-smart-panel-8-scene', alt: 'A kitchen with the 8\u2033 panel on the wall by the doorway', box: [41.6, 30, 7.8, 6] }, { photo: 'pdp-smart-panel-8-moment', alt: 'A hand with a mug of coffee taps the 8\u2033 smart control panel' }],\n      tint: TINT,\n      highlights: [['tablet', '8\u2033 HD touchscreen'], ['mic', 'Alexa voice control'], ['wifi', 'Wi-Fi \u00B7 Zigbee \u00B7 BLE'], ['speaker', 'Speakers & mics']],\n      intro: 'An 8\u2033 smart control panel with built-in Alexa and Wi-Fi, Zigbee 3.0 and Bluetooth connectivity. Use touch, voice, app or button controls for compatible devices and scenes. Check your devices and wall box before ordering.',\n      features: [\n        ['8\u2033 touchscreen', 'A 1280 \u00D7 800 display for device and scene controls.'],\n        ['Four control methods', 'Use touch, Alexa voice control, the app or a physical button.'],\n        ['Wi-Fi, Zigbee and Bluetooth', 'Supports Zigbee 3.0, Bluetooth 4.2 and BLE Mesh. Check compatibility with your devices.'],\n        ['Android 11', 'The panel runs Android 11 with 2GB RAM and 16GB storage.'],\n        ['Speakers and microphones', 'Two speakers and two microphones support audio and voice commands.'],\n        ['Monitoring and schedules', 'Set schedules for compatible lighting and climate controls.'],\n        ['Scene and relay control', 'Set up controls for compatible lights, security devices and scenes.'],\n      ],\n      specs: [\n        ['Screen', '8\u2033 \u00B7 1280 \u00D7 800'], ['Memory', '2GB RAM / 16GB ROM'], ['System', 'Android 11'], ['Audio', '2 speakers, 2 microphones'],\n        ['Control', 'Touch, button, voice, app'], ['Wireless', 'Wi-Fi, Zigbee 3.0, Bluetooth 4.2 / BLE Mesh'], ['Input power', '100\u2013240V~ 50/60Hz'],\n        ['Size', '127.5 \u00D7 233.5 \u00D7 38 mm (with base)'], ['Mounting', 'Standard 86-type wall box'], ['Operating temperature', '0\u00B0C \u2013 40\u00B0C'],\n      ],\n      idealFor: 'Living rooms, kitchens, home offices, salons, restaurants and pubs.',\n    },\n    {\n      handle: 'smart-panel-7', name: 'Smart Panel (7)',\n      seoTitle: 'Smart control panel 7\u2033 with Alexa and infrared | Aura Smart',\n      metaDescription: 'A 7\u2033 touchscreen with built-in Alexa, infrared control and a Zigbee gateway. Fit it to the wall, or stand it on a desk with the optional stand.',\n      type: 'Smart home hub', collections: ['panels'],\n      badge: 'New', price: [328, 295], compare: 0,  // Grant, 26 Oct (\"big monitor\")\n      tagline: 'On the wall or on a desk, with built-in Alexa.',\n      images: ['p-smart-panel-7.webp', 'p-smart-panel-7-2.webp'],\n      overview: [{ photo: 'pdp-smart-panel-7-scene', alt: 'A hallway into the kitchen with the 7\u2033 panel on the wall by the door', box: [49.61, 25.59, 5.08, 3.81] }, { photo: 'pdp-smart-panel-7-moment', alt: 'A hand taps the 7\u2033 panel on its desk stand on a kitchen worktop' }],\n      tint: TINT,\n      highlights: [['tablet', '7\u2033 \u00B7 wall or desk'], ['mic', 'Built-in Alexa'], ['remote', 'Built-in infrared'], ['wifi', 'Wi-Fi \u00B7 Zigbee \u00B7 BLE']],\n      intro: 'A 7\u2033 smart control panel with built-in Alexa, an infrared blaster and a Zigbee gateway. Like the 8\u2033 panel, it controls the compatible devices and scenes you set up in the app. Fit it to the wall, horizontally or vertically, or stand it on a desk with the optional stand. Check your devices and wall box before ordering.',\n      features: [\n        ['Wall or desk', 'Fit it over a wall box, or stand it on a desk or table with the desk stand, available separately. Ask us about the stand.'],\n        ['Horizontal or vertical', 'Mount it either way round. It fits over 86-type, 120-type and 147-type wall boxes. Send us a photo of your wall box to check.'],\n        ['Controls what the app controls', 'Use compatible lights, curtains, climate controls and security devices, and switch scenes, from the panel as you would from your mobile.'],\n        ['Built-in Alexa', 'Speak to Alexa through the panel, without a separate Echo speaker.'],\n        ['Built-in infrared', 'Control TVs, air conditioning units and other appliances that use an infrared remote. More than 10,000 appliance brands are supported. Check your device is compatible.'],\n        ['Zigbee and Bluetooth mesh gateway', 'Connect up to 128 Zigbee and 64 Bluetooth mesh (SigMesh) devices to the panel. Check compatibility with your devices.'],\n      ],\n      specs: [\n        ['Screen', '7\u2033 touchscreen'], ['Voice control', 'Alexa built in'], ['Infrared', 'Built-in IR blaster, 10,000+ brands'], ['Wireless', 'Wi-Fi, Zigbee, Bluetooth mesh (SigMesh)'],\n        ['Connected devices', 'Up to 128 Zigbee + 64 SigMesh'], ['Orientation', 'Horizontal or vertical'], ['Mounting', '86-, 120- or 147-type wall box'], ['Desk use', 'Optional stand, sold separately'],\n      ],\n      idealFor: 'Kitchens, living rooms, home offices, and desks or worktops away from a wall box.',\n    },\n    {\n      handle: 'smart-panel-5', name: 'Smart Panel (5)',\n      seoTitle: 'Desktop smart control panel 5\u2033 with intercom | Aura Smart',\n      metaDescription: 'A free-standing 5\u2033 touchscreen you can move from room to room. Control compatible devices, call other panels or a mobile, and keep a clock on screen.',\n      type: 'Desktop smart display', collections: ['panels'],\n      badge: 'New', price: [195, 165], compare: 0,  // Grant, 26 Oct (\"small monitor\")\n      tagline: 'A 5\u2033 control panel for the desk or bedside.',\n      images: ['p-smart-panel-5.webp', 'p-smart-panel-5-2.webp'],\n      overview: [{ photo: 'pdp-smart-panel-5-scene', alt: 'The 5\u2033 desktop panel on a bedside table beside a lamp', box: [47.33, 36.82, 8.01, 5.76] }, { photo: 'pdp-smart-panel-5-moment', alt: 'A hand reaches for the 5\u2033 desktop panel on a kitchen worktop as its screen wakes' }],\n      tint: TINT,\n      highlights: [['tablet', '5\u2033 desktop touchscreen'], ['chat', 'Room-to-room intercom'], ['eye', 'Wakes as you reach'], ['wifi', 'Wi-Fi \u00B7 Zigbee']],\n      intro: 'A free-standing 5\u2033 touchscreen for a desk, worktop or bedside table. It isn\u2019t designed for wall mounting: move it from room to room, with a power supply where you place it. Control compatible devices and scenes, call other panels or a mobile, and keep a clock on screen while it\u2019s idle.',\n      features: [\n        ['Free-standing and movable', 'The rounded white display stands on any flat surface. Carry it to another room and connect it to power there.'],\n        ['Control compatible devices', 'Use the touchscreen for compatible lights, curtains, climate controls and scenes set up in the app.'],\n        ['Intercom between rooms', 'Make voice calls between panels in different rooms, or to family members through the app on their mobiles.'],\n        ['Wakes as you reach for it', 'The screen can stay dark until your hand comes within about 20 cm.'],\n        ['Clock screensaver', 'Show a large clock over a photo while it\u2019s idle. Choose the font style and colour.'],\n        ['Works with Alexa', 'Listed as working with Amazon Alexa, but Alexa is not built in as it is on the 7\u2033 and 8\u2033 panels. Ask us how it fits your Alexa setup.'],\n      ],\n      specs: [\n        ['Screen', '5\u2033 HD touchscreen'], ['Placement', 'Free-standing (not for wall mounting)'], ['Wireless', 'Wi-Fi, Zigbee'], ['Voice assistant', 'Works with Amazon Alexa'],\n        ['Intercom', 'Voice calls panel to panel and panel to mobile'], ['Screen wake', 'Proximity sensing, about 20 cm'], ['Languages', '23+, including English'], ['Colour', 'White'],\n      ],\n      idealFor: 'Bedside tables, home office desks, kitchen worktops and rooms without a wall panel.',\n    },\n    {\n      handle: 'smart-socket', name: 'Smart Socket', hoverShot: 2,\n      seoTitle: 'Smart wall socket with USB-C and USB-A | Aura Smart',\n      metaDescription: 'A smart wall socket with USB-C and USB-A, in glass or aluminium and white, grey, gold or black. Switch it from the app or its button. Pro installation available.',\n      type: 'Smart socket', collections: ['power'],\n      badge: 'New', price: [95, 45], compare: 0,  // price to confirm with Grant\n      tagline: 'UK socket with USB-A and USB-C, controlled from the app.',\n      // material: finishes are grouped by it in the buy box; ring: an aluminium frame's black centre\n      colors: [\n        { name: 'White glass', material: 'Glass', hex: '#ECE9E1', image: 'p-smart-socket-white-glass.webp' },\n        { name: 'Grey glass', material: 'Glass', hex: '#59595B', image: 'p-smart-socket-grey-glass.webp' },\n        { name: 'Gold glass', material: 'Glass', hex: '#DCC3A0', image: 'p-smart-socket-gold-glass.webp' },\n        { name: 'Black glass', material: 'Glass', hex: '#1F2022', image: 'p-smart-socket-black-glass.webp' },\n        { name: 'White aluminium', material: 'Aluminium', hex: '#F1F1EF', ring: '#1F2022', image: 'p-smart-socket-white-aluminium.webp' },\n        { name: 'Grey aluminium', material: 'Aluminium', hex: '#5C5E5F', ring: '#1F2022', image: 'p-smart-socket-grey-aluminium.webp' },\n        { name: 'Gold aluminium', material: 'Aluminium', hex: '#C4A07F', ring: '#1F2022', image: 'p-smart-socket-gold-aluminium.webp' },\n        { name: 'Black aluminium', material: 'Aluminium', hex: '#2E2F31', ring: '#161718', image: 'p-smart-socket-black-aluminium.webp' },\n      ],\n      images: ['p-smart-socket-white-glass.webp', 'p-smart-socket-white-glass-side.webp', 'p-smart-socket-grey-glass.webp', 'p-smart-socket-gold-glass.webp', 'p-smart-socket-black-glass.webp', 'p-smart-socket-white-aluminium.webp', 'p-smart-socket-grey-aluminium.webp', 'p-smart-socket-gold-aluminium.webp', 'p-smart-socket-gold-aluminium-side.webp', 'p-smart-socket-black-aluminium.webp'],\n      overview: [\n        { photo: 'pdp-smart-socket-white', alt: 'A white glass smart socket above an oak bedside table in morning light', finish: 'White glass' },\n        { photo: 'pdp-smart-socket-grey', alt: 'A grey glass smart socket set into a travertine kitchen splashback', finish: 'Grey glass' },\n        { photo: 'pdp-smart-socket-gold', alt: 'A gold aluminium smart socket on a deep green plaster wall above a walnut dressing table', finish: 'Gold aluminium' },\n        { photo: 'pdp-smart-socket-black', alt: 'A black aluminium smart socket above a walnut desk, lit by a brass lamp', finish: 'Black aluminium' },\n        // each room again with its colour's other material, so the two can be compared in place\n        { photo: 'pdp-smart-socket-white-aluminium', alt: 'A white aluminium smart socket above an oak bedside table in morning light', finish: 'White aluminium' },\n        { photo: 'pdp-smart-socket-grey-aluminium', alt: 'A grey aluminium smart socket set into a travertine kitchen splashback', finish: 'Grey aluminium' },\n        { photo: 'pdp-smart-socket-gold-glass', alt: 'A gold glass smart socket on a deep green plaster wall above a walnut dressing table', finish: 'Gold glass' },\n        { photo: 'pdp-smart-socket-black-glass', alt: 'A black glass smart socket above a walnut desk, lit by a brass lamp', finish: 'Black glass' },\n      ],\n      tint: TINT,\n      highlights: [['toggle', 'App & button on/off'], ['bolt', 'USB-C & USB-A charging'], ['signal', 'Works with an Aura hub'], ['socket', 'Replaces a single socket']],\n      intro: 'A smart socket that fits in the wall like any other, in glass or aluminium, with USB-C and USB-A charging. Switch whatever\u2019s plugged in from the app or the button on the plate: turn a lamp on before you get home, or switch off a heater you left on. Charge a mobile from either USB port, without a plug-in charger. It needs an Aura hub, such as the 7\u2033 smart control panel: ask us to check your hub and back box before ordering.',\n      features: [\n        ['Glass or aluminium', 'Choose one smooth sheet of anti-glare satin glass, edge to edge, or a solid anodised aluminium frame around a black centre. Each comes in white, grey, gold or black.'],\n        ['No adapter on the wall', 'It goes in place of your old socket. The smart part sits in the back box, so there\u2019s no plug-in smart plug sticking out of the wall.'],\n        ['Switch it from the app', 'Turn a lamp, fan or heater on or off from the app. Schedules and scenes are set up in the Aura app through your Aura hub. Ask us what your hub supports.'],\n        ['Or press the button', 'The button on the plate switches the socket on or off without the app. A small indicator light is set into the button.'],\n        ['USB-C and USB-A charging', 'Charge a mobile or earbuds from the USB-C or USB-A port and keep the socket free for something else. Ask us about charging speeds.'],\n        ['Works with an Aura hub', 'The socket connects through an Aura hub rather than straight to your Wi-Fi. The 7\u2033 smart control panel has the hub built in. Ask us to check the hub you have.'],\n        ['Replaces a single socket', 'It goes in place of an existing single socket, on a single back box, wired to live, neutral and earth. The smart module sits behind the plate, so check your back box depth with us.'],\n        ['Fitting is electrical work', 'Choose Pro installation and a licensed partner fits it for you. To fit it yourself, you need to be qualified for mains wiring, with the power off at the fuse board.'],\n      ],\n      specs: [\n        ['Socket', '1 \u00D7 3-pin (Irish/UK type)'], ['USB', '1 \u00D7 USB-C, 1 \u00D7 USB-A'], ['Control', 'Aura app (through an Aura hub), button on the plate'],\n        ['Wireless', '2.4GHz'], ['Works with', 'An Aura hub, such as the 7\u2033 smart control panel'], ['Input voltage', '100\u2013250V~ 50\u201360Hz'],\n        ['Standby power', '0.2W or less'], ['Fitting', 'Single back box, live, neutral and earth'], ['Finishes', 'Anti-glare glass or anodised aluminium, in white, grey, gold or black'],\n        ['Operating temperature', '\u221220\u00B0C to 70\u00B0C'], ['Humidity', 'Up to 95%'], ['Warranty', '18 months'],\n      ],\n      idealFor: 'Bedsides, desks and living rooms, and any socket with a lamp, fan or heater you\u2019d like to switch from the app.',\n    },\n    lightSwitch(2), lightSwitch(1), lightSwitch(3),\n  ];\n\n  // a shot with its sizes: AVIF and WebP widths for a photo, the clip and its poster for the video\n  const widths = n => (/-scene$/.test(n) ? [640, 960, 1440, 1536] : [640, 960, 1122]);\n  const srcset = (n, ext) => widths(n).map(w => `${img(`${n}-${w}.${ext}`)} ${w}w`).join(', ');\n  const shot = (s, p) => s.video\n    ? { ...s, src: p.video.src, poster: p.video.poster, ratio: 1 }\n    : { ...s, src: img(`${s.photo}-960.webp`), webp: srcset(s.photo, 'webp'), avif: srcset(s.photo, 'avif'), ratio: /-scene$/.test(s.photo) ? 1.5 : 0.8 };\n\n  // a card is square: where a shot marks the product (box), its crop is centred on it as far as the\n  // photo allows\n  const cropAt = (s, ratio) => {\n    if (!s.box) return '50% 50%';\n    const [x, y, w, h] = s.box, v = ratio > 1 ? 1 / ratio : ratio, at = f => Math.min(100, Math.max(0, ((f / 100 - v / 2) / (1 - v)) * 100));\n    return ratio > 1 ? `${at(x + w / 2).toFixed(1)}% 50%` : `50% ${at(y + h / 2).toFixed(1)}%`;\n  };\n\n  products.forEach(p => {\n    p.images = p.images.map(img);\n    p.overview = (p.overview || []).map(s => shot(s, p));\n    // the card's second photo: one of the product at home, from its overview\n    const home = p.overview.filter(s => s.photo)[p.hoverShot ?? 0];\n    if (home) { p.hover = img(`${home.photo}-640.webp`); p.hoverAt = cropAt(home, home.ratio); }\n    if (p.colors) p.colors.forEach(c => (c.image = img(c.image)));\n    p.from = p.price[1] ?? p.price[0];   // the DIY price: what the menu and cards show and the product page opens on\n    p.saveMax = p.compare - p.from;\n  });\n  // a family's unlisted members (listed: false) have full product pages but stay out of the shop,\n  // menus, counts and search: they move to extras, which byHandle still finds\n  const unlisted = p => p.listed === false;\n\n  // Testimonials from aurasmart.ie (Pro Installation page)\n  const reviews = [\n    { name: 'Elena M.', tag: 'Installation', text: 'Very responsive to all our queries and on time during installation. David explains everything during installation and answers all our questions clearly. Apps and devices are easy to use too! Definitely recommend.' },\n    { name: 'Jerry A.', tag: 'Floodlight', text: 'We got our additional floodlight from them and are still very happy with the service and the after-support. We highly recommend their products and excellent service.' },\n    { name: 'Genny S.', tag: 'Support', text: 'Amazing service \u2014 no problem to call out and adjust or rectify anything. If I could give 109 stars I would.' },\n    { name: 'Tony S.', tag: 'Camera', text: 'Can\u2019t recommend David enough \u2014 very polite and friendly. Very happy with my new camera, works a treat and the picture quality is amazing.' },\n    { name: 'Rebeca A.', tag: 'Support', text: 'Great products. If I ever had questions, David was so quick to answer.' },\n    { name: 'Jennifer F.', tag: 'Installation', text: 'David, lovely chap, installed ours today. Good service. Happy customers here \u2014 thank you!' },\n    { name: 'Wendy B.', tag: 'Installation', text: 'He is so helpful, nothing is a problem, and his products and service are amazing. If you are looking for home security, David is the man!' },\n    { name: 'Fatima G.', tag: 'App', text: 'Apps and devices are easy to use too! Definitely I will recommend them!' },\n  ];\n\n  // Product reviews (Judge.me) as shown on aurasmart.ie product pages \u2014 5 of 8 visible per product\n  const productReviews = {\n    'floodlight-camera': [\n      { name: 'James T.', date: '2024-11-22', title: 'A complete game changer', text: 'This floodlight camera is a complete game changer for home security. The AI motion detection works flawlessly, and the siren is a great feature. Thank you, Aura Smart!' },\n      { name: 'Emma L.', date: '2024-11-22', title: 'Crystal clear day & night', text: 'This camera provides crystal-clear video both during the day and at night. The built-in floodlight is bright enough to light up my entire backyard. Excellent service from Aura Smart.' },\n      { name: 'John P.', date: '2024-11-22', title: 'Professional installation made it easy', text: 'I opted for the pro installation, and the team did a fantastic job. The camera works perfectly, and I\u2019m so impressed with how easy the app is to use.' },\n      { name: 'Lisa M.', date: '2024-11-22', title: 'Highly reliable camera', text: 'I\u2019ve been using the Aura Smart floodlight camera for months, and it\u2019s been super reliable. The motion alerts are always accurate, and the free installation made the setup stress-free.' },\n      { name: 'Michael W.', date: '2024-11-22', title: 'Worth every penny', text: 'This camera is worth every penny! The free installation and amazing video quality make it a perfect addition to my home security system.' },\n    ],\n  };\n\n  // FAQ \u2014 from aurasmart.ie/pages/faq\n  const faqs = [\n    { cat: 'General', items: [\n      ['What products and services do you offer?', 'We sell security cameras, smart locks, smart control panels and house alarms. We also offer smart blinds, professional installation, troubleshooting and support.'],\n      ['Where are you located, and what areas do you cover?', 'We\u2019re based in Dublin. Our licensed installation partners cover Dublin, Cork, Galway and County Meath. Contact us with your location to check availability.'],\n      ['Do you provide free consultations before installation?', 'Yes. We offer a free online consultation to discuss your home and recommend devices. Installers also bring the product range on installation day so you can see the options.'],\n      ['How can I contact your team?', 'By phone on 01 592 4235, WhatsApp on 087 690 5805, email at info@aurasmart.ie, or through the contact form on this website.'],\n    ] },\n    { cat: 'Products', items: [\n      ['Do your cameras record 24/7?', 'Recording mode depends on the model and power supply. Battery models record events to conserve power. If you need continuous recording, ask us to confirm a suitable wired model and storage setup before ordering.'],\n      ['Do your devices require a monthly subscription?', 'You can use our devices without a required subscription. Our cameras offer local recording storage, with optional cloud storage on some models. Ask us to confirm which storage is included and any optional costs for your chosen device.'],\n      ['Can I add multiple devices to the same app?', 'Yes. Manage compatible cameras, locks and alarms in the Aura app and share access with family members.'],\n      ['Are your cameras weatherproof?', 'Choose an outdoor model for outdoor use. The solar security camera Pro is rated IP65; the wired security camera Pro is rated IP66. Check each product page for its operating limits.'],\n      ['How do I know which cameras are best for my home?', 'Book a free online consultation. Tell us what you want to see, where you have power and what your Wi-Fi is like. We\u2019ll recommend devices for your layout.'],\n      ['Do your products work with Alexa, Google Home, Apple HomeKit or SmartThings?', 'Yes. Compatible Aura devices work with Amazon Alexa, Google Home, Apple HomeKit and Samsung SmartThings, so if you already use one of them, everything can come together in that one app. Ask us how to set it up for your devices. Smart lock voice control needs a Wi-Fi bridge.'],\n      ['Do I need the smart gateway for the slim smart lock?', 'No. The lock works on its own with a fingerprint, code, card or key, and the app opens it over Bluetooth when you\u2019re near the door. Add the smart gateway if you want to unlock, add access codes or use its other supported features while you\u2019re away.'],\n      ['Which smart lock suits my door?', 'The slim smart lock for aluminium doors is made for narrow-profile aluminium doors and fits many mortise lock bodies. The smart lock with fingerprint access suits most standard doors. Send us a photo of your door and lock, with measurements, and we\u2019ll check the fit.'],\n      ['Can the 7\u2033 smart control panel stand on a desk?', 'Yes, with the desk stand, which is sold separately. Without it, the panel fits over a wall box, horizontally or vertically. Ask us about the stand when you order.'],\n      ['How is the 5\u2033 desktop panel different from the wall panels?', 'The 5\u2033 panel is free-standing: put it on a desk or bedside table and move it between rooms. It needs power where you place it, and Alexa isn\u2019t built in. The 3.5\u2033, 7\u2033 and 8\u2033 panels fit to the wall, and the 7\u2033 can also stand on a desk with its optional stand.'],\n      ['Does the video doorbell with 8\u2033 monitor need a memory card?', 'To save recordings, yes. Use a microSD card up to 128GB, sold separately, and play recordings back on the monitor. Ask us about a card when you order.'],\n      ['Do I need a hub for the smart wall socket?', 'Yes. The socket connects through an Aura hub rather than straight to your Wi-Fi. The 7\u2033 smart control panel has the hub built in. The smart gateway Wi-Fi + Bluetooth won\u2019t run the socket: it\u2019s for Bluetooth devices such as the slim smart lock. Ask us to check the hub you have.'],\n      ['Can I fit the smart wall socket myself?', 'Only if you\u2019re qualified for mains electrical work. It replaces an existing single socket and is wired to live, neutral and earth, with the power off at the fuse board. Choose Pro installation and a licensed partner fits it for you.'],\n      ['Do I need a hub for the smart light switches?', 'Yes. The switches connect through an Aura hub rather than straight to your Wi-Fi. The 7\u2033 smart control panel has the hub built in. Ask us to check the hub you have.'],\n      ['Will a smart light switch work with my wiring?', 'It fits a standard single switch box. Some smart switches need a neutral wire at the switch, which older homes don\u2019t always have there. Send us a photo of your current switch and its wiring and we\u2019ll check before you order.'],\n      ['Which gang do I need?', 'Count the lights your current switch controls: one light is 1-gang, two separate lights are 2-gang, three are 3-gang. Each key switches its own light.'],\n      ['Will the smart wall socket fit my back box?', 'It replaces a single socket on a single back box. The smart module behind the plate takes up more room than an ordinary socket, so send us a photo of your socket and we\u2019ll check the depth before you order.'],\n    \n      [\"Will the smart cylinder lock fit my door?\", \"It replaces a standard euro-profile cylinder and adjusts from 70 to 106 mm. It suits wood, steel, stainless steel, aluminium and brass doors with a euro-profile mortise lock. Send us a photo of your door and existing cylinder and we\u2019ll confirm the fit before you order.\"],\n      [\"Do I keep my existing handles?\", \"Yes. The smart cylinder swaps into the euro cylinder slot \u2014 your handle set stays on the door. You upgrade the cylinder, not the whole lock furniture.\"],\n      [\"What happens if the battery dies?\", \"The lock runs on three AAA batteries for up to 12 months in typical use. If they run flat, use the USB\u2011C emergency power port on the outside to power the lock and open the door, then replace the batteries.\"],\n] },\n    { cat: 'Installation', items: [\n      ['Is installation included?', 'Choose \u201CPro installation\u201D and fitting by an independent licensed partner is included in that price. The DIY price covers the device for you to fit. Check your location with us before ordering professional installation.'],\n      ['How long does installation take?', 'Typically between 40 minutes and 2 hours, depending on the number of devices and the complexity of the setup.'],\n      ['Do I need to prepare anything?', 'For a wired device, check there is a compatible power supply near the fitting point. For Wi-Fi devices, check the signal where you plan to fit them. Ask us about mounting and preparation for your chosen model.'],\n      ['What if I need to reschedule?', 'Let us know at least 24 hours in advance and we\u2019ll arrange another date and time.'],\n      ['Can you remove my old system?', 'Yes. Tell us in advance if you need an old alarm or camera removed during installation.'],\n      ['Can I add devices after installation?', 'Yes. Contact us to arrange fitting and setup for additional devices.'],\n      ['Do you provide support after installation?', 'Yes. Our team helps with troubleshooting by phone or WhatsApp and can arrange a call-out if needed. A call-out for work outside the warranty costs \u20AC50.'],\n    ] },\n    { cat: 'Pricing & warranty', items: [\n      ['Are there any monthly fees?', 'No subscription is required to use our devices with local recording storage. Some models offer optional cloud storage. Ask us about any optional storage costs and the house alarm\u2019s SIM requirements before choosing your setup.'],\n      ['What warranty do I get?', 'All products come with an 18-month warranty covering manufacturing defects and hardware malfunctions.'],\n      ['What is your refund policy?', 'Unused DIY orders can be returned within 14 days of delivery in their original packaging. Completed installation services are non-refundable. Read the returns and refunds policy for the full terms.'],\n      ['Do you offer bundle deals?', 'Yes. We offer bundle discounts when you buy several products. Contact us with the devices you want for a quote.'],\n      ['Can I upgrade my existing device with a discount?', 'Yes. The Aura Smart upgrade programme offers 10% off installation when you replace an old Aura device or a device from another brand. Send us a photo and we\u2019ll explain the quote.'],\n      ['How much does a call-out cost?', 'A call-out is \u20AC50. It covers reconnection, troubleshooting or adjustments not covered under warranty.'],\n      ['How can I pay?', 'By card online, by card or cash on installation day, or via a secure payment link.'],\n    ] },\n    { cat: 'Troubleshooting', items: [\n      ['My device isn\u2019t connecting to Wi-Fi. What should I do?', 'Reset the device using the reset button (usually on the back or bottom), then re-add it in the app following the on-screen steps. Make sure your network is 2.4GHz, as some devices don\u2019t support 5GHz.'],\n      ['My camera records too many false alerts.', 'Lower the motion sensitivity, use \u201CAlarm Zones\u201D to avoid roads and busy areas, and switch on the \u201CHuman Body Filter\u201D where available.'],\n      ['My device keeps going offline.', 'Check the Wi-Fi signal at the device and restart your router. If it still disconnects, contact us with the model name and a description of the problem.'],\n      ['My solar camera isn\u2019t charging.', 'Check the panel\u2019s position and the charging guidance for your model. Contact us before changing settings if you need help, so we can check the battery and panel together.'],\n      ['I\u2019ve forgotten my app password.', 'Tap \u201CForgot Password\u201D on the app\u2019s login screen and follow the steps sent to your registered email address.'],\n      ['What if nothing works?', 'Contact our support team with your model name and a description or photo of the issue. A call-out for reconnection, troubleshooting or adjustments outside the warranty costs \u20AC50.'],\n    ] },\n  ];\n\n  const nav = [\n    { label: 'Shop', href: 'shop.html', mega: true },\n    { label: 'Pro installation', href: 'pro-installation.html' },\n    { label: 'App', href: 'index.html#app' },\n    { label: 'Smart blinds', href: 'smart-blinds.html' },\n    { label: 'Blackout blinds', href: 'blackout-blinds.html' },\n    { label: 'Showroom', href: 'showroom.html' },\n    { label: 'About', href: 'about.html' },\n    { label: 'Support', href: 'faq.html' },\n  ].filter(n => shown(n.href));\n\n  // Products sold from their own landing page rather than the catalogue: the cart knows them\n  // (byHandle), the shop, menus and tabs don't (products). `page` is where a cart line links.\n  const extras = [\n    {\n      handle: 'guard-2', name: 'Guard 2 total blackout blind', page: 'blackout-blinds.html',\n      type: 'Blackout blind', collections: [],\n      // placeholders until Grant sets them: [measured and fitted by Aura, delivered]\n      price: [238, 189], compare: 0,\n      images: [img('guard-2-pack.webp')], tint: TINT,\n    },\n    ...products.filter(unlisted).map(p => ({ ...p, page: `product.html?p=${p.handle}` })),\n  ];\n  products.splice(0, products.length, ...products.filter(p => !unlisted(p)));\n  // The bridge is authoritative even when the store is empty. Rich copy remains in aura.data;\n  // Shopify owns identity, prices, variants, publication, stock and product media.\n  const seedProducts = products.slice();\n  window.__AURA_SEED = seedProducts;\n  if (window.AURA_CATALOGUE) {\n    const remap = value => Array.isArray(value) ? value.map(remap) : value && typeof value === 'object'\n      ? Object.fromEntries(Object.entries(value).map(([key, val]) => [key, remap(val)]))\n      : typeof value === 'string' ? asset(value) : value;\n    const live = window.AURA_CATALOGUE.map(record => {\n      const base = products.find(p => p.handle === record.handle) || extras.find(p => p.handle === record.handle) || {};\n      const p = { ...remap(base), ...remap(record.data || {}), ...record };\n      delete p.data;\n      p.price = ['pro', 'diy'].map(mode => p.variants.find(v => v.mode === mode)?.price ?? p.variants[0]?.price ?? 0);\n      p.variantIds = Object.fromEntries(['pro', 'diy'].map(mode => [mode,\n        Object.fromEntries(p.variants.filter(v => v.mode === mode).map(v => [v.color || '', v.id]))]));\n      p.from = p.price[1];\n      p.compare = Math.max(0, ...p.variants.map(v => v.compare || 0));\n      p.saveMax = Math.max(0, p.compare - p.from);\n      p.collections ||= []; p.highlights ||= []; p.features ||= []; p.tagline ||= p.type || '';\n      const fallbackImages = remap(record.data?.images || base.images || []);\n      p.images = record.images?.length ? record.images : fallbackImages.length ? fallbackImages : [img('shop-all.webp')];\n      if (p.colors) p.colors = p.colors.map(c => ({ ...c, image: c.image || p.variants.find(v => v.color === c.name && v.image)?.image }));\n      return p;\n    });\n    const order = products.map(p => p.handle);\n    live.sort((a, b) => (order.indexOf(a.handle) < 0 ? 999 : order.indexOf(a.handle)) - (order.indexOf(b.handle) < 0 ? 999 : order.indexOf(b.handle)));\n    const extra = p => p.handle === 'guard-2' || unlisted(p);\n    products.splice(0, products.length, ...live.filter(p => !extra(p)));\n    // Draft / unpublished products are absent from AURA_CATALOGUE but still need a\n    // PDP when previewed. Re-attach the seed entry and fill Shopify variant ids from\n    // the analytics product payload when present.\n    if (window.AURA_PRODUCT && !products.some(p => p.handle === window.AURA_PRODUCT)) {\n      const seed = seedProducts.find(p => p.handle === window.AURA_PRODUCT);\n      const meta = window.ShopifyAnalytics?.meta?.product;\n      if (seed && meta && String(meta.handle || '') === window.AURA_PRODUCT) {\n        const variants = (meta.variants || []).map(v => {\n          const title = v.public_title || v.name || '';\n          const mode = /diy/i.test(title) ? 'diy' : 'pro';\n          const colorMatch = title.match(/\\/\\s*([^\\/]+)\\s*$/);\n          const color = colorMatch ? colorMatch[1].trim() : null;\n          return {\n            id: v.id,\n            mode,\n            installation: mode === 'diy' ? 'DIY' : 'Pro installation',\n            color,\n            price: typeof v.price === 'number' ? (v.price > 999 ? v.price / 100 : v.price) : Number(v.price) || 0,\n            compare: 0,\n            available: true,\n            image: null,\n          };\n        });\n        if (variants.length) {\n          const p = { ...seed, id: meta.id, handle: meta.handle, name: meta.name || seed.name, variants };\n          p.price = ['pro', 'diy'].map(mode => p.variants.find(v => v.mode === mode)?.price ?? p.variants[0]?.price ?? 0);\n          p.variantIds = Object.fromEntries(['pro', 'diy'].map(mode => [mode,\n            Object.fromEntries(p.variants.filter(v => v.mode === mode).map(v => [v.color || '', v.id]))]));\n          p.from = p.price[1] ?? p.price[0];\n          p.compare = 0;\n          p.saveMax = 0;\n          products.push(p);\n        }\n      }\n    }\n\n    extras.splice(0, extras.length, ...live.filter(extra));\n  }\n  // Theme-only curation: no Shopify collection or product data is changed.\n  const isDoorbell = p => /doorbell|door-phone/i.test(`${p.handle} ${p.name}`);\n  const curated = {\n    cameras: products.filter(p => p.collections.includes('cameras') && !isDoorbell(p)).map(p => p.handle),\n    doorbells: products.filter(p => p.collections.includes('video-doorbells') || isDoorbell(p)).map(p => p.handle),\n    floodlights: ['solar-wall-light-camera', 'floodlight-camera'],\n    locks: ['smart-cylinder-lock', 'smart-lock-slim', 'smart-gateway'],\n    alarms: ['alarm-system-1'],\n    power: ['smart-socket', 'smart-switch-2-gang'],\n  };\n  products.forEach(p => {\n    p.collections = p.collections.filter(c => !(c in curated));\n    Object.entries(curated).forEach(([category, handles]) => { if (handles.includes(p.handle)) p.collections.push(category); });\n  });\n  nav.forEach(n => { n.href = route(n.href); });\n  extras.forEach(p => { p.page = p.url || route(p.page); });\n  // Cart-only snapshots keep unpublished/deleted lines usable without adding them to search/shop.\n  const cartProducts = new Map();\n  const rememberCartProduct = product => cartProducts.set(product.handle, product);\n  const byHandle = h => products.find(p => p.handle === h) || extras.find(p => p.handle === h) || cartProducts.get(h);\n  const inCollection = c => (c === 'all' || !c ? products : products.filter(p => p.collections.includes(c)));\n  const imageAlt = (src, p) => {\n    const file = src.split('/').pop();\n    const known = {\n      'cat-security-camera.webp': 'Solar security camera Pro 2K fitted to a stone wall beneath the eaves',\n      'silver-lock-cream-landscape.jpg': 'Aura Smart silver smart lock on cream composite front door',\n      'silver-lock-cream-square.jpg': 'Aura Smart silver smart lock on cream composite front door',\n      'cat-smart-lock.webp': 'A woman using the fingerprint reader on a black smart lock',\n      'cat-floodlight.webp': 'Floodlight camera Pro 5MP fitted to an exterior wall with its lights on at dusk',\n      'pdp-smart-socket-scene-1440.webp': 'The smart socket beside a bed, with the bedside lamp plugged into it',\n      'coll-power-set.webp': 'A gold aluminium smart light switch with two keys beside a gold aluminium smart wall socket',\n      'coll-lock.webp': 'Hands holding a mobile showing alarm arm and disarm controls',\n      'p-smart-lock-black.webp': 'Smart lock with fingerprint access in black',\n      'p-smart-lock-silver.webp': 'Smart lock with fingerprint access in silver',\n      'p-smart-socket-white-glass-side.webp': 'The white glass smart socket at an angle, showing the depth of its plate and the module behind it',\n      'p-smart-socket-gold-aluminium-side.webp': 'The gold aluminium smart socket at an angle, showing its solid metal frame',\n      'p-smart-panel-7-2.webp': 'Smart control panel 7\u2033 on its optional desk stand',\n      'p-smart-panel-5-2.webp': 'Desktop smart control panel 5\u2033 from the side',\n      'p-video-door-phone-2.webp': 'The video doorbell on its own, under its rain hood',\n      'shop-all.webp': 'Aura Smart lock, indoor camera, solar camera and floodlight camera on a stone shelf',\n    };\n    // a finish's own packshot: \"<product> in <finish>\"\n    const finish = p?.colors?.find(c => c.image.split('/').pop() === file);\n    return known[file] || (finish && `${p.name} in ${finish.name.toLowerCase()}`) || p?.name || 'Aura Smart home security devices';\n  };\n\n  return { site, collections, volume, products, reviews, productReviews, faqs, nav, features, shown, byHandle, inCollection, imageAlt, route, asset, html, rememberCartProduct };\n})();\n"],
  "mappings": "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",
  "names": ["p"]
}
