Skip to content
Accessories
Add to wishlist
BN Meal Planner
ALL IN ONE WEEKLY PLANNER
It helps you be organised on meals and groceries
CONTAINS HEALTHY SNACK IDEAS
Keep those cravings at bay
SAVES YOU TIME & MONEY
Note down your grocery needs on the notepad
Product Description
Plan your weekly meals and save yourself the stress of working out what's for dinner every night. BN Meal Planner also features a shopping list, which is handy to note items down during the week as you need them. Planning out your meals will save you time and assist you in minimising food and waste and grocery expenses.
Choosing a selection results in a full page refresh.
:host{display:block;font:inherit;color:var(--ad-text,#1a1a1a);--ad-a:var(--ad-accent,#2c6ecb);--ad-t:var(--ad-track,#e6e8eb)}
:host([hidden]){display:none}
:host([data-ad-injected]){margin:0 var(--ad-ir,0) 0 var(--ad-il,0)}
.card{background:var(--ad-surface,#fff);border:1px solid var(--ad-border,rgba(0,0,0,.08));border-radius:var(--ad-radius,12px);padding:14px 16px}
:host([variant=floating]) .card{position:fixed;left:50%;bottom:var(--ad-offset,16px);transform:translateX(-50%);width:min(480px,calc(100vw - 32px));box-sizing:border-box;border:0;box-shadow:0 10px 30px rgba(0,0,0,.12),0 2px 8px rgba(0,0,0,.06);z-index:2147483000;max-height:calc(100vh - 2 * var(--ad-offset,16px));max-height:calc(100dvh - 2 * var(--ad-offset,16px));overflow-y:auto;overscroll-behavior:contain}
:host([data-pos=bottom-left]) .card{left:16px;transform:none}
:host([data-pos=bottom-right]) .card{left:auto;right:16px;transform:none}
:host([data-pos=top]) .card{bottom:auto;top:var(--ad-offset,16px)}
.hd{font-size:13px;font-weight:600;line-height:1.4;margin:0 0 4px;opacity:.75;letter-spacing:.01em}
.msg{font-size:14px;line-height:1.45;margin:0}
.msg strong{font-weight:700;color:var(--ad-a)}
.done .msg{font-weight:600}
.track{position:relative;height:10px;margin:12px 11px 6px 0;border-radius:999px;background:var(--ad-t)}
.fill{height:100%;border-radius:inherit;background:var(--ad-a);background:linear-gradient(90deg,color-mix(in srgb,var(--ad-a) 55%,#fff),var(--ad-a))}
.fill.grow{animation:ad-grow .6s cubic-bezier(.2,.8,.2,1)}
@keyframes ad-grow{from{width:var(--from)}}
.done .fill{background:var(--ad-a)}
.dot{position:absolute;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border-radius:50%;background:var(--ad-surface,#fff);border:2px solid var(--ad-t);box-sizing:border-box;box-shadow:0 0 0 2px var(--ad-surface,#fff)}
.dot.on,li.on::before{border-color:var(--ad-a);background:var(--ad-a) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.5l2.2 2.2L11.5 6' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat}
.dot[data-i]:not(.on){width:22px;height:22px;margin:-11px 0 0 -11px}
.dot[data-i=gift]:not(.on){background:var(--ad-surface,#fff) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23858b93' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='8' width='18' height='4' rx='1'/%3E%3Cpath d='M12 8v13M19 12v9H5v-9M7.5 8a2.5 2.5 0 0 1 0-5C11 3 12 8 12 8s1-5 4.5-5a2.5 2.5 0 0 1 0 5'/%3E%3C/svg%3E") center/15px no-repeat}
.dot[data-i=ship]:not(.on){background:var(--ad-surface,#fff) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23858b93' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3 6h11v10H3zM14 9h4l3 3v4h-7'/%3E%3Ccircle cx='7' cy='17' r='2'/%3E%3Ccircle cx='17' cy='17' r='2'/%3E%3C/svg%3E") center/15px no-repeat}
.dot[data-i=off]:not(.on){background:var(--ad-surface,#fff) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23858b93' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M19 5L5 19'/%3E%3Ccircle cx='7' cy='7' r='2'/%3E%3Ccircle cx='17' cy='17' r='2'/%3E%3C/svg%3E") center/14px no-repeat}
.ms{display:grid;margin:6px 11px 0 0;font-size:12px;font-weight:600;line-height:1.35}
.m{grid-area:1/1;box-sizing:border-box;padding:0 2px;text-align:center;white-space:nowrap;opacity:.65}
.m.start{text-align:left}
.m.end{text-align:right}
.m.on{opacity:1}
.m.on{color:var(--ad-a)}
.m.old{opacity:.45}
.m.old{text-decoration:line-through}
.wins{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px}
.wins em{padding:3px 8px;border-radius:999px;background:var(--ad-a);color:#fff;font-size:10px;font-style:normal;font-weight:700;letter-spacing:.05em;line-height:1.4;text-transform:uppercase}
.wins span{display:inline-flex;align-items:center;gap:5px;padding:3px 10px 3px 4px;border-radius:999px;background:color-mix(in srgb,var(--ad-a) 10%,var(--ad-surface,#fff));font-size:12px;font-weight:600;line-height:1.4}
.wins span::before{content:'';flex:none;width:14px;height:14px;border-radius:50%;background:var(--ad-a) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.5l2.2 2.2L11.5 6' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat}
ul{list-style:none;display:flex;flex-wrap:wrap;gap:4px 14px;margin:8px 0 0;padding:0;font-size:13px}
li{display:flex;align-items:center;gap:5px;line-height:1.4;opacity:.65}
li::before{content:'';flex:none;width:14px;height:14px;border-radius:50%;border:1.5px solid var(--ad-t);box-sizing:border-box}
li.on{opacity:1;font-weight:600}
li.old{opacity:.45;text-decoration:line-through}
li.old::before{border-color:var(--ad-t);background:var(--ad-t)}
.msg .scope{padding:0;border-radius:0;font-size:inherit;line-height:inherit;color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;cursor:pointer}
.scope-list{display:block;margin:8px 0 0;padding:8px 12px;border-radius:8px;background:var(--ad-t);font-size:13px}
.scope-list[hidden]{display:none}
.scope-list li{display:list-item;padding:2px 0;opacity:1}
.scope-list li::before{content:none}
.scope-list a{color:inherit}
.views>*+*{margin-top:14px;padding-top:14px;border-top:1px solid var(--ad-border,rgba(0,0,0,.08))}
button{all:unset;cursor:pointer;line-height:1;padding:4px;border-radius:6px;font-size:16px}
button:focus-visible{outline:2px solid var(--ad-a);outline-offset:2px}
.claim{background:var(--ad-a);color:#fff;padding:9px 16px;font-size:14px;font-weight:600;border-radius:calc(var(--ad-radius,12px) * .66);text-align:center;transition:filter .15s,transform .15s}
.claim:hover{filter:brightness(1.08)}
.claim:active{transform:scale(.98)}
.claim[disabled]{opacity:.5;cursor:default;filter:none;transform:none}
.claims{margin-top:12px;font-size:14px}
.claims>*+*{margin-top:8px}
.claims .msg{margin-bottom:8px}
.opt{display:flex;align-items:center;gap:10px}
.opt img{width:44px;height:44px;object-fit:cover;border-radius:8px;flex:none}
.opt span{flex:1}
.opt .claim{padding:7px 12px;font-size:13px}
ad-choice{display:block}
.pos{display:grid;grid-template-columns:repeat(auto-fill,minmax(96px,1fr));gap:8px;max-height:min(252px,40vh);overflow-y:auto;overscroll-behavior:contain;padding:3px;margin:-3px}
.po{position:relative;display:flex;flex-direction:column;align-items:center;gap:6px;padding:8px;box-sizing:border-box;border:1.5px solid var(--ad-t);border-radius:calc(var(--ad-radius,12px) * .66);font-size:12px;line-height:1.3;text-align:center}
.po img{width:56px;height:56px;border-radius:8px;object-fit:cover}
.po span{max-height:2.6em;overflow:hidden}
.po.sel{border-color:var(--ad-a);background:color-mix(in srgb,var(--ad-a) 8%,var(--ad-surface,#fff))}
.po.sel::after{content:'';position:absolute;top:6px;right:6px;width:16px;height:16px;border-radius:50%;background:var(--ad-a) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3E%3Cpath d='M4.5 8.5l2.2 2.2L11.5 6' fill='none' stroke='white' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") center/100% no-repeat}
.po[disabled]{opacity:.45;cursor:default}
.pp{font-weight:600}
.pp s,.claim s{margin-left:2px;font-weight:400;opacity:.7}
.pos~.claim{display:block;width:100%;margin-top:10px;box-sizing:border-box}
.pv{display:grid;gap:8px;margin-top:10px;padding:10px;border-radius:calc(var(--ad-radius,12px) * .66);background:color-mix(in srgb,var(--ad-t) 45%,transparent)}
.pr{display:flex;align-items:baseline;gap:10px;font-size:12px}
.pr>span{flex:0 0 56px;opacity:.7;overflow:hidden;text-overflow:ellipsis}
.pr>div{display:flex;flex-wrap:wrap;gap:6px;min-width:0}
.pill{padding:4px 11px;border:1.5px solid var(--ad-t);border-radius:99px;background:var(--ad-surface,#fff);font-size:12px;line-height:1.3}
.pill.sel{border-color:var(--ad-a);color:var(--ad-a);font-weight:600}
.pill.x{opacity:.5;border-style:dashed}
.pr select{max-width:100%;padding:4px 8px;border:1.5px solid var(--ad-t);border-radius:8px;background:var(--ad-surface,#fff);color:inherit;font:inherit}
.min{position:absolute;top:8px;right:8px;z-index:1;width:24px;height:24px;padding:0;display:grid;place-items:center;font-size:18px;opacity:.55}
.min:hover{opacity:1;background:rgba(0,0,0,.05)}
.slides{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}
.slides::-webkit-scrollbar{display:none}
.slide{flex:0 0 100%;min-width:0;scroll-snap-align:start}
.slide>:first-child{padding-right:28px}
.slide>.claims:first-child{margin-top:0}
.nav{display:flex;justify-content:center;align-items:center;gap:6px;margin-top:10px}
.pg{width:6px;height:6px;padding:0;border-radius:999px;background:var(--ad-t);transition:width .2s,background .2s}
.pg.on{width:16px;background:var(--ad-a)}
.arrow{display:none;padding:0 8px;font-size:18px;opacity:.55}
.arrow:hover{opacity:1}
@media (hover:hover){.arrow{display:block}}
:host([data-covered]){display:none}
.fab{position:fixed;left:50%;bottom:var(--ad-offset,16px);transform:translateX(-50%);z-index:2147483000;width:52px;height:52px;padding:0;border-radius:50%;background:conic-gradient(var(--ad-a) calc(var(--p,0) * 1%),var(--ad-t) 0);box-shadow:0 6px 20px rgba(0,0,0,.2);touch-action:none;cursor:grab}
.fab:active{cursor:grabbing}
.fab::before{content:'';position:absolute;inset:4px;border-radius:50%;background:var(--ad-surface,#fff)}
.fab i{position:absolute;inset:14px;background:var(--ad-a);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 7h-2.2A3 3 0 0 0 12 3.8 3 3 0 0 0 6.2 7H4a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-8h1a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1Zm-7-1a1 1 0 1 1 1 1h-1V6Zm-3-1a1 1 0 0 1 1 1v1h-1a1 1 0 0 1 0-2Zm1 15H7v-8h4v8Zm0-10H5V9h6v2Zm6 10h-4v-8h4v8Zm2-10h-6V9h6v2Z'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M20 7h-2.2A3 3 0 0 0 12 3.8 3 3 0 0 0 6.2 7H4a1 1 0 0 0-1 1v3a1 1 0 0 0 1 1h1v8a1 1 0 0 0 1 1h12a1 1 0 0 0 1-1v-8h1a1 1 0 0 0 1-1V8a1 1 0 0 0-1-1Zm-7-1a1 1 0 1 1 1 1h-1V6Zm-3-1a1 1 0 0 1 1 1v1h-1a1 1 0 0 1 0-2Zm1 15H7v-8h4v8Zm0-10H5V9h6v2Zm6 10h-4v-8h4v8Zm2-10h-6V9h6v2Z'/%3E%3C/svg%3E") center/contain no-repeat}
.badge{position:absolute;top:-4px;right:-4px;min-width:18px;height:18px;padding:0 5px;box-sizing:border-box;border-radius:9px;background:#d72c0d;color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center}
.grip{position:absolute;left:50%;bottom:-9px;width:18px;height:4px;margin-left:-9px;border-radius:2px;background:var(--ad-t);box-shadow:0 1px 2px rgba(0,0,0,.2)}
.hint{position:absolute;bottom:calc(100% + 10px);left:50%;transform:translateX(-50%);white-space:nowrap;background:#1a1a1a;color:#fff;font-size:12px;line-height:1.3;padding:6px 10px;border-radius:6px;pointer-events:none;animation:ad-hint 5s forwards}
@keyframes ad-hint{0%,85%{opacity:1}100%{opacity:0;visibility:hidden}}
.nudge{animation:ad-nudge .5s ease-in-out .4s 2}
@keyframes ad-nudge{25%{translate:-5px 0}75%{translate:5px 0}}
:host([data-pos=bottom-left]) .fab{left:16px;transform:none}
:host([data-pos=bottom-right]) .fab{left:auto;right:16px;transform:none}
:host([data-pos=top]) .fab{bottom:auto;top:var(--ad-offset,16px)}
:host([data-pos=bottom-left]) .hint{left:0;transform:none}
:host([data-pos=bottom-right]) .hint{left:auto;right:0;transform:none}
:host([data-pos=top]) .hint{bottom:auto;top:calc(100% + 14px)}
@media (prefers-reduced-motion:reduce){.fill.grow,.nudge{animation:none}.claim,.pg{transition:none}}