Skip to content
Fancy anything else before you check out?
We think these products pair nicely with your selection
No items
Have you seen our Brownies
View All
Carousel
{ const baseSide = $data.placement; // 'top' | 'bottom' | ... const { x, y, placement: placed, middlewareData } = await computePosition(reference, floating, { placement: baseSide, // start/end will be chosen automatically strategy: 'fixed', middleware: [ offset(8), flip({ fallbackPlacements: ['top','bottom','right','left'] }), shift({ padding: 8 }), arrowEl ? arrowMw({ element: arrowEl, padding: 6 }) : null, ].filter(Boolean), });$data._placed = placed; Object.assign(floating.style, { left: x + 'px', top: y + 'px' });// Arrow positioning if (arrowEl && middlewareData.arrow) { const { x: ax = null, y: ay = null } = middlewareData.arrow; const side = placed.split('-')[0];// Reset all sides first Object.assign(arrowEl.style, { left: '', top: '', right: '', bottom: '' });if (ax != null) arrowEl.style.left = ax + 'px'; if (ay != null) arrowEl.style.top = ay + 'px';// Pull arrow out on the opposite side const OFFSET = 5; // px if (side === 'top') arrowEl.style.bottom = (-OFFSET) + 'px'; if (side === 'bottom') arrowEl.style.top = (-OFFSET) + 'px'; if (side === 'left') arrowEl.style.right = (-OFFSET) + 'px'; if (side === 'right') arrowEl.style.left = (-OFFSET) + 'px'; } };// Start/stop reactive autoUpdate $watch('open', (o) => { if (o) { $nextTick(() => { cleanup = autoUpdate(reference, floating, update, { ancestorScroll: true, ancestorResize: true, elementResize: true, }); update(); }); } else { cleanup && cleanup(); cleanup = null; } });// React to prop changes $watch('placement', () => { if (open) requestAnimationFrame(update) });// Recompute on content changes you already react to (optional hooks) // Example: $watch some Alpine data here if content size changes while open " > Vegan
Vegan Mixed Brownies
Mixed Brownies
£
15.99
{ const baseSide = $data.placement; // 'top' | 'bottom' | ... const { x, y, placement: placed, middlewareData } = await computePosition(reference, floating, { placement: baseSide, // start/end will be chosen automatically strategy: 'fixed', middleware: [ offset(8), flip({ fallbackPlacements: ['top','bottom','right','left'] }), shift({ padding: 8 }), arrowEl ? arrowMw({ element: arrowEl, padding: 6 }) : null, ].filter(Boolean), });$data._placed = placed; Object.assign(floating.style, { left: x + 'px', top: y + 'px' });// Arrow positioning if (arrowEl && middlewareData.arrow) { const { x: ax = null, y: ay = null } = middlewareData.arrow; const side = placed.split('-')[0];// Reset all sides first Object.assign(arrowEl.style, { left: '', top: '', right: '', bottom: '' });if (ax != null) arrowEl.style.left = ax + 'px'; if (ay != null) arrowEl.style.top = ay + 'px';// Pull arrow out on the opposite side const OFFSET = 5; // px if (side === 'top') arrowEl.style.bottom = (-OFFSET) + 'px'; if (side === 'bottom') arrowEl.style.top = (-OFFSET) + 'px'; if (side === 'left') arrowEl.style.right = (-OFFSET) + 'px'; if (side === 'right') arrowEl.style.left = (-OFFSET) + 'px'; } };// Start/stop reactive autoUpdate $watch('open', (o) => { if (o) { $nextTick(() => { cleanup = autoUpdate(reference, floating, update, { ancestorScroll: true, ancestorResize: true, elementResize: true, }); update(); }); } else { cleanup && cleanup(); cleanup = null; } });// React to prop changes $watch('placement', () => { if (open) requestAnimationFrame(update) });// Recompute on content changes you already react to (optional hooks) // Example: $watch some Alpine data here if content size changes while open " > Gluten Free
Gluten Free Mixed Brownies
£
15.99
Have you seen our Cookies
View All
Carousel
12 Square Branded Cookie
£
24.00
12 Round Branded Cookie
£
24.00
Personalised Photo Cookies
£
19.99
Birthday Cookies
£
19.99
Have you seen our Cupcakes
View All
Carousel
{ const baseSide = $data.placement; // 'top' | 'bottom' | ... const { x, y, placement: placed, middlewareData } = await computePosition(reference, floating, { placement: baseSide, // start/end will be chosen automatically strategy: 'fixed', middleware: [ offset(8), flip({ fallbackPlacements: ['top','bottom','right','left'] }), shift({ padding: 8 }), arrowEl ? arrowMw({ element: arrowEl, padding: 6 }) : null, ].filter(Boolean), });$data._placed = placed; Object.assign(floating.style, { left: x + 'px', top: y + 'px' });// Arrow positioning if (arrowEl && middlewareData.arrow) { const { x: ax = null, y: ay = null } = middlewareData.arrow; const side = placed.split('-')[0];// Reset all sides first Object.assign(arrowEl.style, { left: '', top: '', right: '', bottom: '' });if (ax != null) arrowEl.style.left = ax + 'px'; if (ay != null) arrowEl.style.top = ay + 'px';// Pull arrow out on the opposite side const OFFSET = 5; // px if (side === 'top') arrowEl.style.bottom = (-OFFSET) + 'px'; if (side === 'bottom') arrowEl.style.top = (-OFFSET) + 'px'; if (side === 'left') arrowEl.style.right = (-OFFSET) + 'px'; if (side === 'right') arrowEl.style.left = (-OFFSET) + 'px'; } };// Start/stop reactive autoUpdate $watch('open', (o) => { if (o) { $nextTick(() => { cleanup = autoUpdate(reference, floating, update, { ancestorScroll: true, ancestorResize: true, elementResize: true, }); update(); }); } else { cleanup && cleanup(); cleanup = null; } });// React to prop changes $watch('placement', () => { if (open) requestAnimationFrame(update) });// Recompute on content changes you already react to (optional hooks) // Example: $watch some Alpine data here if content size changes while open " > Vegan
Vegan Corporate Logo Cupcakes
£
2.25
Branded Cupcakes
£
2.10
Box of 15 Festive Cupcakes
£
28.00
Box of 15 The Snowman Cupcakes
£
28.00
Box of 15 Scary Eyes Cupcakes
£
28.00
Box of 15 Pirate Cupcakes
£
28.00
Box of 15 Farm Cupcakes
£
28.00
Box of 15 Nutcracker Ballet Cupcakes
£
28.00
Previous slide
Next slide
Have you seen our Doughnuts
View All
Carousel
Box of 9 Branded Doughnuts
£
25.00
Personalised Photo Doughnuts
£
21.99
Ghostbusters Doughnuts
£
21.99
Mario Doughnuts
£
21.99
Winnie the Pooh Doughnuts
£
21.99
Wedding Doughnuts
£
21.99
Roblox Doughnuts
£
21.99
Paw Patrol Doughnuts
£
21.99
Previous slide
Next slide
Have you seen our Mini Cakes
View All
Carousel
Cake Jars
£
12.00
Personaliesd Photo Gift Cake
£
21.00
Have you seen our Sweets
View All
Carousel
30 Packs of Personalised Sweets
£
28.00
Continue shopping
Continue to checkout