PageSourceSearch

https://ruokaboksi.fi/_next/static/chunks/1954.f5b575562bfa643a.js

js ruokaboksi.fi collected 2026-10-03 20:43:27 UTC 102,273 bytes, 33 lines download raw bytes

1!function(){try{var e="undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof globalThis?globalThis:"undefined"!=typeof self?self:{},n=(new e.Error).stack;n&&(e._posthogChunkIds=e._posthogChunkIds||{},e._posthogChunkIds[n]="01a0f74a-a0e1-7b00-bba8-19bc6f3f8564")}catch(e){}}();(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[1954,4902],{14058:()=>{},18642:(e,t,i)=>{"use strict";i.r(t),i.d(t,{default:()=>t6});var n=i(88679),o=i(48871),a=i(16512),l=i(49346),r=i(6449);i(84967);var s=i(10575),c=i(15978),p=i(78918),d=i(5999),m=i(81954),u=i(97768),g=i(11565),h=i(62570),y=i(48320);function f(e){return"object"==typeof e&&null!==e&&!Array.isArray(e)}function v(e){return null!=e&&("string"==typeof e?e.trim().length>0:"boolean"==typeof e||"number"==typeof e||(Array.isArray(e)?e.length>0:!!f(e)&&Object.entries(e).some(([e,t])=>!e.startsWith("_")&&v(t))))}let b={missing:"Missing",partial:"Partial",translated:"Translated"},I={missing:"critical",partial:"caution",translated:"positive"},w=(0,c.mgq)({name:"translationStatus",component:function({documentId:e,documentType:t,onClose:i}){let o=(0,c.zX2)(e,t),a=function(e,{locales:t=y.YR,sourceLocale:i=y.nq}={}){let n=[];!function e(t,i){if(f(t)&&"string"==typeof t._type&&t._type.startsWith("locale"))return void i.push(t);if(Array.isArray(t)){for(let n of t)e(n,i);return}if(f(t))for(let[n,o]of Object.entries(t))n.startsWith("_")||e(o,i)}(e,n);let o=n.filter(e=>v(e[i]));return{total:o.length,locales:t.map(({id:e,title:t})=>{var i,n;let a=o.filter(t=>v(t[e])).length;return{id:e,title:t,translated:a,total:o.length,status:(i=a,0===(n=o.length)||i===n?"translated":0===i?"missing":"partial")}})}}(o.version??o.draft??o.published),l=a.locales.filter(e=>"translated"===e.status).length,r=a.locales.length?Math.round(l/a.locales.length*100):0;return(0,n.jsxs)(g.O,{space:4,padding:3,children:[(0,n.jsxs)(g.at,{align:"center",gap:2,children:[(0,n.jsx)(g.et,{size:1,weight:"semibold",children:(0,n.jsx)(u.TranslateIcon,{})}),(0,n.jsx)(g.lt,{flex:1,children:(0,n.jsx)(g.et,{size:1,weight:"semibold",children:"Translations"})}),(0,n.jsx)(g.Y,{"aria-label":"Close translations",icon:m.CloseIcon,mode:"bleed",onClick:i})]}),(0,n.jsx)(g.W,{border:!0,padding:3,radius:2,children:(0,n.jsxs)(g.O,{space:3,children:[(0,n.jsxs)(g.at,{align:"center",gap:2,children:[(0,n.jsx)(g.lt,{flex:1,children:(0,n.jsxs)(g.et,{muted:!0,size:1,children:[l," of ",a.locales.length," languages translated"]})}),(0,n.jsxs)(g.et,{muted:!0,size:1,children:[r,"%"]})]}),(0,n.jsx)(g.W,{radius:2,tone:"transparent",children:(0,n.jsx)(g.W,{radius:2,style:{height:6,width:`${r}%`},tone:100===r?"positive":"caution"})}),(0,n.jsxs)(g.et,{muted:!0,size:1,children:[a.total," translatable field",1===a.total?"":"s"," with"," ",(0,y.Y4)(y.nq)," content"]})]})}),0===a.total?(0,n.jsxs)(g.et,{muted:!0,size:1,children:["Add ",(0,y.Y4)(y.nq)," content first, then run “Translate fields…” to fill the other languages."]}):(0,n.jsx)(g.O,{space:1,children:a.locales.map(e=>(0,n.jsx)(g.W,{padding:2,radius:2,children:(0,n.jsxs)(g.at,{align:"center",gap:3,children:[(0,n.jsxs)(g.O,{flex:1,space:2,children:[(0,n.jsx)(g.et,{size:1,weight:"medium",children:e.title}),(0,n.jsxs)(g.et,{muted:!0,size:0,children:[e.translated," of ",e.total," fields \xb7 ",e.id]})]}),(0,n.jsx)(h.Ex,{mode:"outline",tone:I[e.status],children:b[e.status]})]})},e.id))})]})},useMenuItem:()=>({icon:u.TranslateIcon,title:"Translations",showAsAction:!0})}),k=y.Ub.map(({id:e})=>e),S=e=>"string"==typeof e&&k.includes(e),M=e=>"object"==typeof e&&null!==e&&!Array.isArray(e),C=(e,t,i)=>({path:e,instruction:`Write alternative text for this image on a meal kit website, for readers who cannot see it. Write it in ${(0,y.Y4)(i)} and in no other language. One sentence of at most 100 characters. Describe only what is visible. Do not start with "image of" or "photo of". Answer with the sentence alone.`,operation:{type:"image-description",sourcePath:t}});function T(e,t){let i=e.at(-1),n=e.slice(0,-1);if("alt"===i&&"localeString"===t)return k.map(t=>C([...e,t],n,t));if("string"!==t)return[];let o=[...e].reverse().find(S)??y.nq;return"alt"===i?[C(e,n,o)]:S(i)&&"alt"===e.at(-2)?[C(e,e.slice(0,-2),o)]:"altText"===i?[C(e,[...n,"logo"],o)]:[]}function B(e,t){return e.agent.action.transform({schemaId:t.schemaId,documentId:t.documentId,instruction:"Describe the image for readers who cannot see it.",target:t.targets,noWrite:t.noWrite})}var x=i(71863),A=i(94290),O=i(37938),j=i(48857),L=i(65135),P=i(90402);i(90504),i(58669);var R=i(50969);R.Ikc({success:R.zMY().optional(),message:R.YjP().optional()}),Object.fromEntries(L.IB.map(e=>{let{country:t,language:i}=(0,L.JJ)(e);return[e,"en"===i?`en-${t}`:P.i[i]]}));let U=e=>e.replace("-","_"),q=L.C5.map(e=>{let{country:t,countryProperties:i}=(0,L.JJ)(e.defaultLocale);return{countryCode:t,name:i.name,localeIds:e.locales.map(U)}}),z=e=>e.map(e=>`defined(slug.${e}.current)`).join(" || ");function _(e,t){let i=z(e.localeIds);if("not-live"===t)return`_type == "page" && !(${i})`;if("only-live"===t){let t=z(q.filter(t=>t.countryCode!==e.countryCode).flatMap(e=>e.localeIds));return`_type == "page" && (${i}) && !(${t})`}return`_type == "page" && (${i})`}function D(e,t){if("object"!=typeof e||null===e)return null;let i=e.slug;if("object"!=typeof i||null===i)return null;let n=i[t];if("object"!=typeof n||null===n)return null;let o=n.current;return"string"==typeof o&&o.trim().length>0?o:null}function $(e,t=e){let i=function(e,t=e){return q.map(i=>{var n,o;let a=i.localeIds.map(i=>({id:i,title:(0,y.Y4)(i),urlPath:D(e,i),editedUrlPath:D(t,i)})),l=a.filter(e=>e.urlPath);return{countryCode:i.countryCode,name:i.name,status:(n=l.length,o=a.length,0===n?"offline":n===o?"live":"partial"),hasUnpublishedChanges:a.some(e=>e.urlPath!==e.editedUrlPath),locales:a}})}(e,t),n=i.filter(e=>"live"===e.status).map(e=>e.countryCode),o=i.filter(e=>"partial"===e.status).map(e=>e.countryCode),a=[n.length?`live in ${n.join(", ")}`:null,o.length?`partly live in ${o.join(", ")}
1`:null].filter(Boolean).join(", ")||"not live yet";return i.some(e=>e.hasUnpublishedChanges)?`${a}, unpublished URL path changes`:a}let E=L.C5.find(e=>e.domain===window.location.hostname),W=E?E.locales:L.IB,N=(e,t,i)=>(0,j.Hm)({locale:e,...E&&{domain:E.domain},href:i?.pageSlug==="/"?"/":i?{pathname:t,params:i}:t}),V=(e,t,i)=>W.flatMap(n=>{let o,a,l,r,s=(o=e,a=n,o.slug?.[a.replace("-","_")]?.current);return s?[{title:`${(l=e,r=n,l.title?.[r.replace("-","_")]??l.title?.fi??"Untitled")} (${n})`,href:N(n,t,{[i]:s})}]:[]}),F=(e,t,i)=>V(e,t,i).slice(0,1),G=()=>W.map(e=>({title:`Blog (${e})`,href:N(e,"/blog")}));var H=i(24752),Y=i(86116),X=i(75227),K=i(94959),Z=i(53429),Q=i(42822);let J=(0,c.bzQ)(e=>({name:"singletonPlugin",document:{newDocumentOptions:(t,{creationContext:i})=>"global"===i.type?t.filter(t=>!e.includes(t.templateId)):t,actions:(t,{schemaType:i})=>e.includes(i)?t.filter(({action:e})=>"duplicate"!==e):t}}));var ee=i(55950);let et=(0,c.U85)({name:"agentContext",title:"Agent context",description:"What an AI agent may read from this dataset, and how it should work with the content.",icon:ee.RobotIcon,type:"document",fields:[(0,c.MIB)({name:"name",title:"Name",description:'The name of this context, e.g. "Shopping assistant".',type:"string",validation:e=>e.required()}),(0,c.MIB)({name:"slug",title:"Slug",description:"Identifies the context in the agent URL.",type:"slug",options:{source:"name",maxLength:64},validation:e=>e.required()}),(0,c.MIB)({name:"contentFilter",title:"Content filter",type:"agentContentFilter"}),(0,c.MIB)({name:"instructions",title:"Instructions",description:"How the agent should work with this content.",type:"text",rows:6}),(0,c.MIB)({name:"active",title:"Active",description:"Turn off to stop serving this context.",type:"boolean",initialValue:!0})],preview:{select:{name:"name",slug:"slug.current",types:"contentFilter.documentTypes",active:"active"},prepare:({name:e,slug:t,types:i,active:n})=>({title:e??"No name",subtitle:[t??"No slug",i?.length?`${i.length} types`:"All content",!1===n?"Inactive":"Active"].join(" \xb7 ")})}});var ei=i(76815);let en=(0,c.U85)({name:"agentConversation",title:"Agent conversation",description:"A logged conversation between a visitor and an agent. Agents write these, so they are read-only here.",icon:ei.CommentIcon,type:"document",readOnly:!0,fields:[(0,c.MIB)({name:"title",title:"Title",type:"string"}),(0,c.MIB)({name:"context",title:"Context",description:"The agent context that answered.",type:"reference",to:[{type:"agentContext"}]}),(0,c.MIB)({name:"locale",title:"Language",description:"The website locale the visitor used.",type:"string"}),(0,c.MIB)({name:"startedAt",title:"Started at",type:"datetime"}),(0,c.MIB)({name:"messages",title:"Messages",type:"array",of:[(0,c.dOf)({type:"agentMessage"})]})],orderings:[{name:"startedAtDesc",title:"Newest first",by:[{field:"startedAt",direction:"desc"}]}],preview:{select:{title:"title",locale:"locale",startedAt:"startedAt",messageCount:"messages.length",contextName:"context.name"},prepare:({title:e,locale:t,startedAt:i,messageCount:n,contextName:o})=>({title:e??"Conversation",subtitle:[o,t,i?new Date(i).toLocaleDateString("fi-FI"):null,`${n??0} message${1===n?"":"s"}`].filter(Boolean).join(" \xb7 ")})}});var eo=i(63665);let ea=(0,c.U85)({name:"author",title:"Author",description:"A blog post author, shown with their name and picture.",icon:eo.UserIcon,type:"document",fields:[(0,c.MIB)({name:"name",title:"Name",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"picture",title:"Picture",description:"Recommended aspect ratio: 16:9.",type:"imageWithAlt"})],preview:{select:{title:"name.fi",media:"picture"}}});var el=i(58132),er=i(19871);let es={original:"Original (no crop)","16:9":"16:9","4:3":"4:3","1:1":"1:1","9:16":"9:16"},ec=er.Il.map(e=>({title:es[e],value:e})),ep=(...e)=>[...e,"Open the image and use the crop tool to set the hotspot: crops keep the hotspot in view."].join(" "),ed=(...e)=>["Original shows the upload uncropped at its own shape. The other ratios crop around the image hotspot. Upload at least 1600 px wide: 1600\xd7900 for 16:9, 1600\xd71200 for 4:3, 1200\xd71200 for 1:1, 900\xd71600 for 9:16.",...e].join(" ");var em=i(64902);let eu=[{title:"Category",value:"category"},{title:"Search Result 1",value:"search-result-1"},{title:"Search Result 2",value:"search-result-2"},{title:"Search Result 3",value:"search-result-3"},{title:"Recipe End Banner",value:"recipe-end-banner"}],eg=(0,c.U85)({name:"conversionItem",title:"Conversion item",description:"A promotional card shown at a fixed slot on the site (e.g. category pages, search results, recipe pages) to drive conversions.",icon:Y.DocumentTextIcon,type:"document",groups:[{default:!0,name:"general",title:"General",icon:el.InfoOutlineIcon},{name:"callToAction",title:"Call to action",icon:Q.RocketIcon}],fields:[(0,c.MIB)({name:"title",group:"general",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"description",group:"general",title:"Description",type:"localeString"}),(0,c.MIB)({name:"ctaText",group:"callToAction",title:"CTA Text",description:"Write {PROMO}, {PROMO_CTA} or {PROMO_DISCOUNT} anywhere in the text and it is replaced by the current promo code, promo offer text or promo discount from Settings.",type:"localeString"}),(0,c.MIB)({name:"image",group:"general",title:"Image",description:ep("Cropped to a square around the hotspot. Upload at least 600\xd7600 px."),type:"localeImage"}),(0,c.MIB)({name:"ctaLink",group:"callToAction",title:"CTA Link",description:"Write {PROMO} anywhere in the link and it is replaced by the current promo code from Settings.",type:"object",fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"url",title:e.title,fieldset:e.isDefault?void 0:"translations",validation:e=>e.uri({scheme:["http","https"]}).error("Insert link beginning with http:// or https://")}))}),(0,c.MIB)({name:"slot",group:"general",title:"Slot",description:"Where on the site this conversion item appears.",type:"string",options:{list:eu},validation:e=>e.required()})],preview:{select:{localeTitle:"title",image:"image",slot:"slot"},prepare(e){let t=eu.find(t=>t.value===e.slot);return{title:(0,em.jn)(e),subtitle:t?.title??e.slot,media:(0,em.d$)(e.image)}}}});var eh=i(53690);let ey=new Set(["bannerComponent","categoryScrollComponent","checksComponent","contactDetails","deliveryAreasSearchComponent","doubleCTAComponent","faqComponent","featuresComponent","freeformText","fullPageImageComponent","heroComponent","heroOverlapComponent","howItWorksComponent","imageBannerComponent","mentionedInComponent","pricingComponent","rouletteGameComponent","tallyComponent","testimonialsComponent","trustmaryComponent"]),ef=e=>ey.has(e)?`/sanity/page-components/${e}.svg`:void 0,ev={groups:[{name:"hero",title:"Hero",of:["heroComponent","heroOverlapComponent"]},{name:"content",title:"Content",of:["freeformText","contactDetails","featuresComponent","howItWorksComponent","checksComponent","faqComponent","bannerComponent","imageBannerComponent","fullPageImageComponent","doubleCTAComponent"]},{name:"socialProof",title:"Social proof",of:["testimonialsComponent","mentionedInComponent","trustmaryComponent"]},{name:"recipes",title:"Recipes",of:["categoryScrollComponent"]},{name:"interactive",title:"Interactive",of:["deliveryAreasSearchComponent","pricingComponent","tallyComponent","rouletteGameComponent"]}],views:[{name:"grid",previewImageUrl:ef},{name:"list"}]};var eb=i(49200);let eI=(e,t)=>i=>i.custom(i=>(function(e,{tooShort:t,tooLong:i},{min:n,max:o}){let a=[];return t.length>0&&a.push(`${e} is shorter than the recommended ${n} characters for: ${t.join(", ")}`),i.length>0&&a.push(`${e} exceeds the recommended ${o} characters for: ${i.join(", ")}`),!(a.length>0)||a.join(". ")})(e,function(e,{min:t,max:i}){let n={tooShort:[],tooLong:[]};if(!e)return n;
1for(let[o,a]of Object.entries(e)){if("_type"===o||"string"!=typeof a)continue;let e=a.length;0!==e&&(void 0!==t&&e<t?n.tooShort.push(o):e>i&&n.tooLong.push(o))}return n}(i,t),t)).warning(),ew=eI("SEO title",{max:eb.HU}),ek=eI("SEO description",{min:eb.d8,max:eb.F3}),eS=[{type:"bannerComponent"},{type:"contactDetails"},{type:"checksComponent"},{type:"faqComponent"},{type:"featuresComponent"},{type:"heroComponent"},{type:"heroOverlapComponent"},{type:"howItWorksComponent"},{type:"testimonialsComponent"},{type:"trustmaryComponent"},{type:"tallyComponent"},{type:"freeformText"},{type:"categoryScrollComponent"},{type:"deliveryAreasSearchComponent"},{type:"rouletteGameComponent"},{type:"mentionedInComponent"},{type:"imageBannerComponent"},{type:"fullPageImageComponent"},{type:"doubleCTAComponent"},{type:"pricingComponent"}],eM=(0,c.U85)({name:"page",title:"Page",description:"A standalone page built from a flexible list of components.",icon:Y.DocumentTextIcon,type:"document",groups:[{default:!0,name:"general",title:"General",icon:el.InfoOutlineIcon},{name:"seo",title:"SEO",icon:eh.SearchIcon}],preview:{select:{localeTitle:"title",slug:"slug",ogImage:"ogImage",components:"components"},prepare(e){let t,i=(0,em.jn)(e);return{title:(0,em.jn)(e,void 0,"slug")+" - "+i,subtitle:(t=$(e)).charAt(0).toUpperCase()+t.slice(1),media:(0,em.d$)(e.ogImage)??(0,em.Kr)(e.components)}}},fields:[(0,c.MIB)({name:"title",group:"general",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"eyebrow",group:"general",title:"Eyebrow",description:"Optional short label above the title, such as the section this page belongs to.",type:"localeString"}),(0,c.MIB)({name:"lead",group:"general",title:"Lead paragraph",description:"Optional intro sentence under the title, in the page header band.",type:"localeText"}),(0,c.MIB)({name:"aside",group:"general",title:"Aside card",description:"Optional card beside the page content. Leave empty and no card is shown.",type:"object",options:{collapsible:!0,collapsed:!0},fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString"}),(0,c.MIB)({name:"body",title:"Body",type:"localeText"}),(0,c.MIB)({name:"linkLabel",title:"Link label",type:"localeString"}),(0,c.MIB)({name:"linkHref",title:"Link",type:"localeUrl"})]}),(0,c.MIB)({name:"slug",group:"general",title:"URL path",type:"localeSlug",description:"The URL path of the page. This will be used to generate the URL for the page. Each page needs its own URL path, and the page is only live in a country that has one."}),(0,c.MIB)({name:"landingPage",group:"general",title:"Landing Page",type:"boolean",initialValue:!1,description:"Hides top navigation bar CTA"}),(0,c.MIB)({name:"stickyBanner",group:"general",title:"Sticky banner",description:"Optional sticky banner shown at the bottom of this page.",type:"reference",to:[{type:"stickyBanner"}]}),(0,c.MIB)({name:"components",group:"general",title:"Components",type:"array",validation:e=>e.required().min(1).error("A page must have at least one component"),description:"Add, remove or reorder components to build the page.",options:{insertMenu:ev},of:eS}),(0,c.MIB)({name:"seoTitle",type:"localeString",title:"SEO Title",description:"Shown as the page title in search results. Aim for 60 characters or fewer so it is not truncated by Google.",group:"seo",validation:ew}),(0,c.MIB)({name:"seoDescription",type:"localeString",title:"SEO description",description:"Shown as the page summary in search results. Aim for 110-155 characters so it reads as a full sentence and is not truncated by Google.",group:"seo",validation:ek}),(0,c.MIB)({name:"ogImage",type:"localeImage",title:"Open Graph Image",description:"Recommended aspect ratio: 16:9.",group:"seo"})]});var eC=i(63096),eT=i(16220),eB=i(10899);let ex=(0,c.U85)({name:"post",title:"Blog post",description:"A blog post shown on the blog, built from a flexible list of components.",icon:Y.DocumentTextIcon,type:"document",groups:[{default:!0,name:"general",title:"General",icon:el.InfoOutlineIcon},{name:"content",title:"Content",icon:eC.BlockContentIcon}],fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",group:"general",validation:e=>e.required()}),(0,c.MIB)({name:"slug",title:"Slug",type:"localeSlug",group:"general",description:"A slug is required for the post to show up in the preview"}),(0,c.MIB)({name:"excerpt",title:"Excerpt",group:"content",description:"Short summary shown in blog listings and link previews.",type:"localeString",validation:ek}),(0,c.MIB)({name:"coverImage",title:"Cover Image",group:"content",description:"Recommended aspect ratio: 16:9.",type:"imageWithAlt"}),(0,c.MIB)({name:"date",title:"Date",type:"datetime",group:"general",initialValue:()=>new Date().toISOString()}),(0,c.MIB)({name:"author",title:"Author",type:"reference",group:"general",to:[{type:ea.name}]}),(0,c.MIB)({name:"components",title:"Components",type:"array",group:"content",validation:e=>e.required().min(1).error("A post must have at least one component"),description:"Add, remove or reorder 
1components to build the post.",options:{insertMenu:ev},of:eS,initialValue:[{_type:"freeformText",_key:Math.random().toString(36).substring(2,11)}]})],orderings:[{title:"Date, newest first",name:"dateDesc",by:[{field:"date",direction:"desc"}]},{title:"Date, oldest first",name:"dateAsc",by:[{field:"date",direction:"asc"}]}],preview:{select:{title:"title",author:"author",date:"date",media:"coverImage"},prepare({title:e,media:t,date:i}){let n=[i&&`on ${(0,eT.GP)((0,eB.H)(i),"LLL d, yyyy")}`].filter(Boolean);return{title:e.fi,media:t,subtitle:n.join(" ")}}}});var eA=i(46315);let eO=(e,t)=>e.custom(e=>{let i=Object.entries(e??{}).filter(([,e])=>"string"==typeof e&&e.length>t);return!i.length||`Keep under ${t} characters so it fits on one line on mobile (${i.map(([e])=>e).join(", ")}).`}).warning(),ej=(0,c.U85)({name:"stickyBanner",title:"Sticky banner",description:"A banner that sticks to the bottom of the screen, optionally with a popup that opens automatically after a delay.",icon:Y.DocumentTextIcon,type:"document",groups:[{default:!0,name:"general",title:"General",icon:el.InfoOutlineIcon},{name:"popup",title:"Popup",icon:eA.BellIcon}],fields:[(0,c.MIB)({name:"title",group:"general",title:"Title",description:"Max ~25 characters to fit on one line on mobile.",type:"localeString",validation:e=>[e.required(),eO(e,25)]}),(0,c.MIB)({name:"description",group:"general",title:"Description",description:"Max ~35 characters to fit on one line on mobile.",type:"localeString",validation:e=>eO(e,35)}),(0,c.MIB)({name:"ctaLink",group:"general",title:"CTA Link",description:"Write {PROMO} anywhere in the link and it is replaced by the current promo code from Settings.",type:"localeUrl"}),(0,c.MIB)({name:"ctaText",group:"general",title:"CTA Text",description:"Max ~16 characters. Write {PROMO}, {PROMO_CTA} or {PROMO_DISCOUNT} anywhere in the text and it is replaced by the current promo code, promo offer text or promo discount from Settings.",type:"localeString",validation:e=>eO(e,16)}),(0,c.MIB)({name:"buttonType",group:"general",title:"Button Type",type:"string",options:{list:["primary","secondary"]},initialValue:"primary",validation:e=>e.required()}),(0,c.MIB)({name:"showPopup",group:"popup",title:"Show popup",description:"When enabled, a popup with more details opens automatically 4 seconds after page load (once per visitor every 14 days).",type:"localeBoolean"}),(0,c.MIB)({name:"popupDescription",group:"popup",title:"Popup Description",type:"localeString"}),(0,c.MIB)({name:"popupImage",group:"popup",title:"Popup Image",description:ep("Shown uncropped inside the popup, up to half the screen height. Upload at least 1060 px wide."),type:"localeImage"}),(0,c.MIB)({name:"popupCTALink",group:"popup",title:"Popup CTA Link",description:"Write {PROMO} anywhere in the link and it is replaced by the current promo code from Settings.",type:"localeUrl"})],preview:{select:{localeTitle:"title",ctaText:"ctaText",popupImage:"popupImage"},prepare(e){let t=(0,em.jn)(e,void 0,"ctaText");return{title:(0,em.jn)(e),subtitle:"draft"===t?void 0:t,media:(0,em.d$)(e.popupImage)}}}});var eL=i(97615);let eP=(0,c.U85)({name:"translationGlossary",title:"Glossary",description:"Terms the AI translations must always render the same way. Approved terms are sent to the model with every translation.",icon:eL.BookIcon,type:"document",fields:[(0,c.MIB)({name:"title",title:"Title",description:'Name for this glossary, e.g. "Meal box terminology".',type:"string",validation:e=>e.required()}),(0,c.MIB)({name:"sourceLocale",title:"Source language",description:"The language the terms are written in.",type:"string",options:{list:y.A9},initialValue:y.nq,validation:e=>e.required()}),(0,c.MIB)({name:"description",title:"Description",description:"What this glossary covers, for other editors.",type:"text",rows:2}),(0,c.MIB)({name:"terms",title:"Terms",type:"array",of:[(0,c.dOf)({type:"glossaryTerm"})],validation:e=>e.required().min(1)})],preview:{select:{title:"title",sourceLocale:"sourceLocale",termCount:"terms.length"},prepare:({title:e,sourceLocale:t,termCount:i})=>
1({title:e??"No title",subtitle:`${(0,y.Y4)(t??y.nq)} \xb7 ${i??0} term${1===i?"":"s"}`})}});var eR=i(17658);let eU=`Brand naming:
2- The brand is "Ruokaboksi" in Finnish and "Yummy" in all other languages.
3- Out of Finnish: replace every form of "Ruokaboksi", inflected ones included, with "Yummy".
4- Into Finnish: replace "Yummy" with "Ruokaboksi", inflected to fit the sentence.
5- Never translate the word "Yummy" itself.
6- Keep "Yummybox" and "MobilePay" exactly as they are.
7
8Languages:
9- Language ids are website locales from country codes, not ISO 639-1: "fi" Finnish, "ee" Estonian (never Ewe), "cz" Czech, "sk" Slovak; "_en" ids are English for that country.
10
11Formatting:
12- Keep formatting, line breaks, emojis, numbers and prices exactly.
13- Do not translate URLs or email addresses.`,eq=`{
14  "glossaries": *[_type == "translationGlossary"] | order(title asc) {
15    title,
16    sourceLocale,
17    "terms": terms[status == "approved"] {
18      term,
19      usage,
20      keepAsIs,
21      translations[] { locale, value }
22    }
23  },
24  "styleGuides": *[_type == "translationStyleGuide" && active != false] | order(title asc) {
25    title,
26    locales,
27    tone,
28    rules
29  }
30}`;function ez(e){if(!e.term)return null;let t=e.usage?` (${e.usage})`:"";if(e.keepAsIs)return`- "${e.term}"${t}: keep as is.`;let i=(e.translations??[]).filter(e=>e.locale&&e.value).map(e=>`${e.locale}: ${e.value}`);return i.length?`- "${e.term}"${t} → ${i.join("; ")}`:null}async function e_(e){let t=await e.withConfig({apiVersion:x.XV,perspective:"published",useCdn:!1}).fetch(eq);return{glossaries:t?.glossaries??[],styleGuides:t?.styleGuides??[]}}let eD=(0,c.U85)({name:"translationStyleGuide",title:"Style guide",description:"Tone and wording rules the AI translations follow, either for every language or for a set of languages.",icon:eR.CaseIcon,type:"document",validation:e=>e.custom(e=>{let t=(e.tone?.length??0)+(e.rules??[]).reduce((e,t)=>e+t.length,0);return!(t>500)||`This guide uses ${t} characters. All guides and glossaries share a 2000 character budget, and the ones that no longer fit are left out of translations.`}).warning(),fields:[(0,c.MIB)({name:"title",title:"Title",type:"string",validation:e=>e.required()}),(0,c.MIB)({name:"locales",title:"Languages",description:"The languages these rules apply to. Leave empty to apply them to every language.",type:"array",of:[(0,c.dOf)({type:"string"})],options:{list:y.A9},validation:e=>e.unique()}),(0,c.MIB)({name:"tone",title:"Tone",description:"How the copy should sound, in one or two sentences.",type:"text",rows:3}),(0,c.MIB)({name:"rules",title:"Rules",description:"One short rule per line. Keep them concrete.",type:"array",of:[(0,c.dOf)({type:"string"})]}),(0,c.MIB)({name:"active",title:"Active",description:"Turn off to leave the guide out of translations.",type:"boolean",initialValue:!0})],preview:{select:{title:"title",locales:"locales",active:"active"},prepare:({title:e,locales:t,active:i})=>({title:e??"No title",subtitle:[t?.length?t.map(y.Y4).join(", "):"All languages",!1===i?"Inactive":"Active"].join(" \xb7 ")})}}),e$=["page","post","author","stickyBanner","conversionItem","settings","navigation","translations"].map(e=>({title:e,value:e})),eE=(0,c.U85)({name:"agentContentFilter",title:"Content filter",description:"What content the agent can read. Leave both fields empty for full access.",type:"object",fields:[(0,c.MIB)({name:"documentTypes",title:"Document types",description:"Pick the types the agent may read.",type:"array",of:[(0,c.dOf)({type:"string"})],options:{list:e$},validation:e=>e.unique()}),(0,c.MIB)({name:"groq",title:"GROQ filter",description:'Advanced: a GROQ filter applied on top of the types, e.g. `market == "fi"`.',type:"text",rows:2})]}),eW=(0,c.U85)({name:"agentMessage",title:"Message",type:"object",fields:[(0,c.MIB)({name:"role",title:"Role",type:"string",options:{list:[{title:"Visitor",value:"user"},{title:"Agent",value:"assistant"}]}}),(0,c.MIB)({name:"content",title:"Content",type:"text",rows:4}),(0,c.MIB)({name:"sentAt",title:"Sent at",type:"datetime"})],preview:{select:{role:"role",content:"content",sentAt:"sentAt"},prepare:({role:e,content:t,sentAt:i}
30)=>({title:t??"No content",subtitle:["assistant"===e?"Agent":"Visitor",i?new Date(i).toLocaleString("fi-FI"):null].filter(Boolean).join(" \xb7 ")})}});var eN=i(7464),eV=i(69610),eF=i(17118);let eG=(0,c.U85)({name:"defaultPortableText",type:"array",title:"Default PortableText",of:[{name:"block",type:"block",title:"Block",lists:[{title:"Bullet list",value:"bullet"},{title:"Number list",value:"number"}],marks:{decorators:[{title:"Emphasis",value:"em"},{title:"Strong",value:"strong"},{title:"Underline",value:"underline"},{title:"Code",value:"code"},{title:"Align Left",value:"alignLeft",icon:eN.EnterIcon,component:e=>(0,n.jsx)("span",{className:"text-left",children:e.children})},{title:"Align Center",value:"alignCenter",icon:eF.EqualIcon,component:e=>(0,n.jsx)("span",{className:"text-center",children:e.children})},{title:"Align Right",value:"alignRight",icon:eV.EnterRightIcon,component:e=>(0,n.jsx)("span",{className:"text-right",children:e.children})}]},styles:[{title:"Normal",value:"normal"},{title:"H1",value:"h1"},{title:"H2",value:"h2"},{title:"H3",value:"h3"},{title:"H4",value:"h4"},{title:"Quote",value:"blockquote"}]}]}),eH=(0,c.U85)({name:"glossaryTerm",title:"Term",type:"object",fields:[(0,c.MIB)({name:"term",title:"Term",description:"The term as it is written in the source language.",type:"string",validation:e=>e.required()}),(0,c.MIB)({name:"usage",title:"Usage",description:"What the term means here, so the model picks the right sense of the word.",type:"string"}),(0,c.MIB)({name:"keepAsIs",title:"Keep as is",description:"Leave the term untranslated in every language.",type:"boolean",initialValue:!1}),(0,c.MIB)({name:"translations",title:"Translations",description:"Only add the languages that need a fixed wording. Other languages are translated freely.",type:"array",hidden:({parent:e})=>!!e?.keepAsIs,of:[(0,c.dOf)({type:"glossaryTranslation"})],validation:e=>e.custom(e=>{let t=(e??[]).map(({locale:e})=>e).filter(e=>!!e),i=t.filter((e,i)=>t.indexOf(e)!==i);return!i.length||`A term can only have one translation per language. Repeated: ${[...new Set(i)].join(", ")}`})}),(0,c.MIB)({name:"status",title:"Status",description:"Only approved terms are sent to the translation model.",type:"string",options:{list:[{title:"Draft",value:"draft"},{title:"Approved",value:"approved"}],layout:"radio",direction:"horizontal"},initialValue:"draft",validation:e=>e.required()})],preview:{select:{term:"term",status:"status",keepAsIs:"keepAsIs",translationCount:"translations.length"},prepare:({term:e,status:t,keepAsIs:i,translationCount:n})=>({title:e??"No term",subtitle:["approved"===t?"Approved":"Draft",i?"Keep as is":`${n??0} fixed translation${1===n?"":"s"}`].join(" \xb7 ")})}}),eY=(0,c.U85)({name:"glossaryTranslation",title:"Translation",type:"object",fields:[(0,c.MIB)({name:"locale",title:"Language",type:"string",options:{list:y.A9},validation:e=>e.required()}),(0,c.MIB)({name:"value",title:"Translation",description:"The exact wording the translation must use.",type:"string",validation:e=>e.required()})],preview:{select:{locale:"locale",value:"value"},prepare:({locale:e,value:t})=>({title:t??"No translation",subtitle:e?(0,y.Y4)(e):"No language"})}}),eX=(0,c.U85)({name:"imageAspectRatio",title:"Aspect ratio",type:"string",options:{list:ec,layout:"radio",direction:"horizontal"}});function eK(e){let t=(0,c.tH7)({apiVersion:"vX"}),i=(0,c.fmx)(),n=(0,c.FlV)(["_id"]),o=(0,h.dj)(),a=e.schemaType.fields.find(({name:e})=>"alt"===e),l=a?[...e.path,"alt"]:[...e.path.slice(0,-1),"altText"],r=(0,c.FlV)(l),p=e.value?.asset?._ref,d=(0,s.useRef)(p),m=(0,s.useRef)({altPath:l,altValue:r,altField:a});return m.current={altPath:l,altValue:r,altField:a},(0,s.useEffect)(()=>{let e=d.current;if(d.current=p,!p||p===e||!n)return;let a=setTimeout(()=>{var e,a;let{altPath:l,altValue:r,altField:s}=m.current,c=(e=l.filter(e=>
30"string"==typeof e||"object"==typeof e&&"_key"in e),a=s?.type.name??"string",T(e,a).filter(t=>{let i=t.path.slice(e.length).reduce((e,t)=>"string"==typeof t?M(e)?e[t]:void 0:Array.isArray(e)?e.find(e=>M(e)&&e._key===t._key):void 0,r);return"string"!=typeof i||!i.trim()}));c.length&&B(t,{schemaId:i,documentId:n,targets:c}).catch(e=>o.push({status:"error",title:"Alt text generation failed",description:e instanceof Error?e.message:"Try again from ✨."}))},1500);return()=>clearTimeout(a)},[p,t,n,i,o]),e.renderDefault(e)}let eZ=(0,c.U85)({name:"imageWithAlt",title:"Image",type:"image",components:{input:eK},options:{hotspot:!0},fields:[{name:"alt",type:"localeString",title:"Alternative text",description:"A short (max ~100 character) description of the image content. Used for website accessibility and SEO. Written for you when the image is added; edit it or regenerate it from ✨.",validation:e=>e.custom((e,t)=>!t.parent?.asset?._ref||!!e||"Required")}],validation:e=>e.required()}),eQ=(0,c.U85)({name:"localeBoolean",type:"object",title:"Localized boolean",fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"boolean",title:e.title,fieldset:e.isDefault?void 0:"translations"}))}),eJ=["https","mailto","tel"],e0=(0,c.U85)({name:"localeContactUrl",type:"object",title:"Localized contact link",fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"url",title:e.title,fieldset:e.isDefault?void 0:"translations",validation:e=>e.uri({allowRelative:!0,scheme:eJ}).custom(e=>!e||!!eJ.some(t=>e.startsWith(`${t}:`))||!!e.startsWith("/")||'Use https://, mailto:, tel: or a relative URL starting with "/"')}))}),e1=(0,c.U85)({name:"localeImage",type:"object",options:y.zc,fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"image",title:e.title,fieldset:e.isDefault?void 0:"translations",components:{input:eK},options:{hotspot:!0,collapsed:!1},fields:[{name:"alt",type:"string",title:"Alternative text",description:"A short (max ~100 character) description of the image content. Used for website accessibility and SEO. Written for you when the image is added; edit it or regenerate it from ✨.",validation:e=>e.custom((e,t)=>!t.parent?.asset?._ref||!!e||"Required")}]}))}),e5=(0,c.U85)({name:"localeLogos",type:"object",title:"Locale-specific Logos",options:y.zc,fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"array",title:e.title,fieldset:e.isDefault?void 0:"translations",of:[{type:"object",name:"mentionedInLogo",fields:[(0,c.MIB)({name:"logo",title:"Logo Image",description:"Recommended aspect ratio: 16:9.",type:"image",components:{input:eK},options:{hotspot:!0},validation:e=>e.required()}),(0,c.MIB)({name:"url",title:"Article URL",type:"url",description:"Link to the article or publication",validation:e=>e.uri({scheme:["http","https"]})}),(0,c.MIB)({name:"altText",title:"Alt Text",type:"string",description:"Accessibility description for the logo"})],preview:{select:{altText:"altText",media:"logo",url:"url"},prepare:({media:e,url:t,altText:i})=>({title:i||"Publication Logo",subtitle:t,media:e})}}],validation:e=>e.min(1).max(8)}))}),e2=(0,c.U85)({name:"localePortableText",type:"object",title:"Localized string",options:y.zc,fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"defaultPortableText",title:e.title,fieldset:e.isDefault?void 0:"translations"}))}),e4=(0,c.U85)({name:"localeSlug",type:"object",title:"Localized Slug",description:"A slug is required for the post to show up in the preview",options:y.zc,fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"slug",title:e.title,fieldset:e.isDefault?void 0:"translations",options:{source:t=>t.title[e.id],maxLength:96,slugify:e=>e.replace(/ä/g,"a").replace(/ö/g,"o").toLowerCase().replace(/\s+/g,"-").substring(0,96).replace(/-(ja-?)?$/,"")},validation:t=>{let i=t.custom(em.F4);return e.isDefault?[t.required().error("Required field"),i]:[i]}}))}),e8=(0,c.U85)({name:"localeString",type:"object",title:"Localized string",options:y.zc,fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"string",title:e.title,fieldset:e.isDefault?void 0:"translations"}))}),e9=(0,c.U85)({name:"localeText",type:"object",title:"Localized text",options:y.zc,fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"text",rows:3,title:e.title,fieldset:e.isDefault?void 0:"translations"}))}),e3=(0,c.U85)({name:"localeUrl",type:"object",title:"Localized URL",fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"url",title:e.title,fieldset:e.isDefault?void 0:"translations",validation:e=>e.uri({allowRelative:!0}).custom(e=>!e||(e.split("#")[0].split("?").length>2?'Query parameters should be separated by "&", not "?"':!!e.startsWith("https://")||!!e.startsWith("/")||'Relative URLs must start with a "/"'))}))}),e6=(0,c.U85)({name:"localeVideo",type:"object",fieldsets:[{name:"translations",title:"Translations",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.map(e=>(0,c.MIB)({name:e.id,type:"file",title:e.title,fieldset:e.isDefault?void 0:"translations",options:{collapsed:!1}}))}),e7=(0,c.U85)({name:"navigationItem",title:"Navigation item",type:"object",fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"url",title:"URL",type:"localeUrl",validation:e=>e.required()}),(0,c.MIB)({name:"items",title:"Items",description:"Sub-items shown in a dropdown menu under this navigation item.",type:"array",of:[{type:"navigationItem"}]})],preview:{select:{localeTitle:"title"},prepare(e){let t=(0,em.jn)(e);return{...e,title:t}}}});var te=i(3425);let tt=e=>e?(0,n.jsx)("img",{alt:"",src:e,style:{height:"100%",objectFit:"contain",width:"100%"}}):void 0,ti=["black","white","#2F5143","#548E74","#E2F5DF","#FFDE00","#C4C4C4"],tn=(0,c.U85)({name:"bannerComponent",icon:te.BlockElementIcon,title:"Banner",description:"A colored banner section with a title and description, and customizable text/background colors.",type:"object",fields:[(0,c.MIB)({name:"layout",title:"Layout",description:"Side by side puts the text next to the image. Stacked centres a large quote, the description, a wide image and the CTA in one column, and shows the title as the quote. Do not type quote marks in the title; the website adds them.",type:"string",options:{list:[{title:"Side by side",value:"sideBySide"},{title:"Stacked quote",value:"stacked"}],layout:"radio"},initialValue:"sideBySide"}),(0,c.MIB)({name:"title",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"titleColor",title:"Title color",type:"color",options:{colorList:ti}}),(0,c.MIB)({name:"description",title:"Description",type:"localePortableText",validation:e=>e.required()}),(0,c.MIB)({name:"textColor",title:"Text color",type:"color",options:{colorList:ti}}
30),(0,c.MIB)({name:"backgroundColor",title:"Background color",description:"The dark green #2F5143 is the call-to-action banner. On it, set the title to white and the text to #E2F5DF.",type:"color",options:{colorList:ti}}),(0,c.MIB)({name:"image",title:"Image",description:"Optional. Side by side: with an image the banner is a two column band; without one the text stays in a single centered column. Recommended aspect ratio: 4:3. Stacked: a wide image below the text, cropped to 16:9 on desktop and 4:5 on phones.",type:"localeImage"}),(0,c.MIB)({name:"caption",title:"Image caption",description:"Optional. A short line that describes the image. Stacked layout only; shown centred under the image.",type:"localeString",hidden:({parent:e})=>e?.layout!=="stacked"}),(0,c.MIB)({name:"ctaLink",title:"CTA Link",description:"Write {PROMO} anywhere in the link and it is replaced by the current promo code from Settings.",type:"localeUrl"}),(0,c.MIB)({name:"ctaText",title:"CTA Text",description:"Write {PROMO}, {PROMO_CTA} or {PROMO_DISCOUNT} anywhere in the text and it is replaced by the current promo code, promo offer text or promo discount from Settings.",type:"localeString"})],preview:{select:{image:"image",localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"Banner"),media:(0,em.d$)(e.image)??tt(ef("bannerComponent"))})}});var to=i(23234);let ta=()=>(0,c.MIB)({name:"background",title:"Background color",description:"The background of this section only. Other sections of the same type keep their own color. White if none is chosen.",type:"string",options:{list:[{title:"White",value:"white"},{title:"Muted",value:"muted"},{title:"Light green",value:"lightGreen"}],layout:"radio",direction:"horizontal"},initialValue:"white"}),tl=(0,c.U85)({name:"categoryScrollComponent",icon:to.ThListIcon,title:"Category scroll component",description:"A component which displays a scrollable list of recipes in a category",type:"object",fields:[(0,c.MIB)({name:"slug",title:"Category slug",description:"The slug of the category.",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"disableLinks",title:"Disable links",description:'When enabled, recipe cards, the category title and the "see all recipes" link will not be clickable links.',type:"boolean",initialValue:!1}),ta()],preview:{select:{localeTitle:"slug"},prepare:e=>({title:(0,em.jn)(e,"Category scroll"),media:tt(ef("categoryScrollComponent"))})}});var tr=i(60295);let ts=(0,c.U85)({name:"checksComponent",icon:tr.CheckmarkCircleIcon,title:"Checks",description:"A section with an image next to a list of checkmarks (e.g. selling points or features).",type:"object",fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"image",title:"Image",description:ep("Shown at the aspect ratio chosen below, up to 650 px wide. With no image the checks show as a row of icon cards instead of a tick list."),type:"localeImage"}),(0,c.MIB)({name:"aspectRatio",title:"Image aspect ratio",description:ed("Older components without a value use 16:9."),type:"imageAspectRatio",initialValue:"16:9"}),(0,c.MIB)({name:"imagePosition",title:"Image position",description:"Which side the image sits on from the tablet width up. Stacked layouts always show the image under the title.",type:"string",options:{list:[{title:"Left",value:"left"},{title:"Right",value:"right"}],layout:"radio"},initialValue:"left"}),(0,c.MIB)({name:"ctaLink",title:"CTA Link",type:"localeUrl"}),(0,c.MIB)({name:"ctaText",title:"CTA Text",type:"localeString"}),(0,c.MIB)({name:"checks",title:"Checkmarks",type:"array",of:[{type:"object",name:"check",fields:[{type:"localeString",name:"title"},{type:"localeString",name:"description"}],preview:{select:{localeTitle:"title"},prepare(e){let t=(0,em.jn)(e);return{...e,title:t}}}}]}),ta()],preview:{select:{image:"image",localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"Checks"),media:(0,em.d$)(e.image)??tt(ef("checksComponent"))})}});var tc=i(41082);let tp=(0,c.U85)({name:"contactDetails",icon:tc.EnvelopeIcon,title:"Contact details",description:"Label and value rows for c
30ontact info, opening hours or an address.",type:"object",fields:[(0,c.MIB)({name:"rows",title:"Rows",type:"array",validation:e=>e.required().min(1),of:[(0,c.dOf)({name:"row",type:"object",fields:[(0,c.MIB)({name:"icon",title:"Icon",type:"string",initialValue:"mail",options:{list:[{title:"Email",value:"mail"},{title:"Phone",value:"phone"},{title:"Opening hours",value:"clock"},{title:"Address",value:"address"},{title:"Chat",value:"chat"}]},validation:e=>e.required()}),(0,c.MIB)({name:"label",title:"Label",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"value",title:"Value",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"href",title:"Link",description:"Optional. Use mailto: for an email and tel: for a phone number.",type:"localeContactUrl"})],preview:{select:{icon:"icon",label:"label",value:"value"},prepare({icon:e,label:t,value:i}){let n=e=>e?Object.values(e).find(Boolean):void 0;return{title:n(t)??e,subtitle:n(i)}}}})]}),ta()],preview:{select:{rows:"rows"},prepare({rows:e}){let t=Array.isArray(e)?e.length:0;return{title:"Contact details",subtitle:`${t} row${1===t?"":"s"}`,media:tt(ef("contactDetails"))}}}}),td=(0,c.U85)({name:"deliveryAreasSearchComponent",icon:eh.SearchIcon,title:"Delivery areas component",description:"A component which displays a list of delivery areas for the current country",type:"object",fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"description",title:"Description",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"image",title:"Image",description:ep("Optional. Shown as a wide strip under the description, cropped to about 4:1 around the hotspot. Upload at least 1400 px wide."),type:"localeImage"}),(0,c.MIB)({name:"placeHolder",title:"Placeholder",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"placeholderExample",title:"Placeholder example",description:'Shown inside the field as a format hint, so it must differ from the label. Write it as an example, for example "Esim. 00100" or "Napr. 110 00".',type:"localeString"}),(0,c.MIB)({name:"reassurance",title:"Reassurance line",description:"One short line under the field that answers what happens when someone checks their postal code.",type:"localeString"}),(0,c.MIB)({name:"submitButton",title:"Submit button text",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"successMessage",title:"Form success message",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"failureMessage",title:"Form error message",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"ctaText",title:"CTA text",type:"localeString"}),(0,c.MIB)({name:"ctaLink",title:"CTA link",type:"localeUrl"}),(0,c.MIB)({name:"notInDeliveryAreaCTAMessage",title:"Not in delivery area CTA message",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"notInDeliveryAreaCTALink",title:"Not in delivery area CTA link",type:"localeUrl",validation:e=>e.required()}),ta()],preview:{select:{localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"Delivery areas"),media:tt(ef("deliveryAreasSearchComponent"))})}});var tm=i(10166);let tu=(0,c.U85)({name:"doubleCTAComponent",icon:tm.LinkIcon,title:"Double CTA",description:"A section with two separate call-to-action buttons side by side.",type:"object",fields:[{name:"title",title:"Title",type:"localeString"},{name:"description",title:"Description",type:"localePortableText"},{name:"ctaText1",title:"First CTA Text",description:"Write {PROMO}, {PROMO_CTA} or {PROMO_DISCOUNT} anywhere in the text and it is replaced by the current promo code, promo offer text or promo discount from Settings.",type:"localeString"},{name:"ctaLink1",title:"First CTA link",description:"Write {PROMO} anywhere in the link and it is replaced by the current promo code from Settings.",type:"localeUrl"},{name:"ctaText2",title:"Second CTA Text",description:"Write {PROMO}, {PROMO_CTA} or {PROMO_DISCOUNT} anywhere in the text and it is replaced by the current promo code, promo offer text or promo discount from Settings.",type:"localeString"},{name:"ctaLink2",title:"Second CTA link",description:"Write {PROMO} anywhere in the link and it is replaced by the current promo code from Settings.",type:"localeUrl"}],preview:{select:{localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"Double CTA"),media:tt(ef("doubleCTAComponent"))})}});var tg=i(34633);let th=(0,c.U85)({name:"faqComponent",icon:tg.HelpCircleIcon,title:"FAQ",description:"An accordion list of frequently asked questions and answers.",type:"object",fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",validation:e=>e.required()}
30),(0,c.MIB)({name:"faqs",title:"FAQs",type:"array",of:[{name:"faq",type:"object",fields:[{type:"localeString",name:"question"},{type:"localePortableText",name:"answer"}],preview:{select:{localeTitle:"question"},prepare(e){let t=(0,em.jn)(e);return{...e,title:t}}}}]}),ta()],preview:{select:{localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"FAQ"),media:tt(ef("faqComponent"))})}});var ty=i(99209);let tf=(0,c.U85)({name:"featuresComponent",icon:ty.ThLargeIcon,title:"Features",description:"A list of features, each with its own title, description and image.",type:"object",fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"subtitle",title:"Subtitle",description:"Optional single line under the title.",type:"localeString"}),(0,c.MIB)({name:"ctaLink",title:"CTA Link",type:"localeUrl"}),(0,c.MIB)({name:"ctaText",title:"CTA Text",type:"localeString"}),(0,c.MIB)({name:"ctaTitle",title:"CTA Title",description:"Heading on the CTA tile. Steps layout only.",type:"localeString"}),(0,c.MIB)({name:"ctaDescription",title:"CTA Description",description:"One line under the CTA heading. Steps layout only.",type:"localeString"}),(0,c.MIB)({name:"ctaTag",title:"CTA Tag",description:'Short offer tag in the corner of the CTA tile, for example "-50 %". Leave empty to hide it. Steps layout only.',type:"localeString"}),(0,c.MIB)({name:"layout",title:"Layout",description:"Grid shows the features side by side in a card grid. Rows shows them as full-width alternating rows with numbered steps. Steps shows two columns of image-only tiles for artwork that already carries its own number and caption, and turns the CTA into the last tile. Overlap shows 4:3 images with their titles in a white card over the image corner, in one zig-zag column on phones and two per row on desktop.",type:"string",options:{list:[{title:"Grid",value:"grid"},{title:"Rows",value:"rows"},{title:"Steps",value:"steps"},{title:"Overlap",value:"overlap"}],layout:"radio"},initialValue:"grid"}),(0,c.MIB)({name:"aspectRatio",title:"Image aspect ratio",description:ed("Applies to every feature image in the Rows layout. The Grid layout crops to a fixed height so headings line up across a row. The Steps layout ignores it and fits each image whole into a 409:229 tile. The Overlap layout ignores it and crops every image to 4:3. Older components without a value use 16:9."),type:"imageAspectRatio",initialValue:"16:9"}),(0,c.MIB)({name:"textsBeforeImages",title:"Texts Before Images",description:"When enabled, each feature shows its text before its image instead of after. Has no effect with the Rows layout.",type:"boolean",initialValue:!1}),(0,c.MIB)({name:"features",title:"Features",type:"array",of:[{type:"object",name:"feature",fields:[{type:"localeString",name:"title"},{type:"localeString",name:"label",description:'Optional short tag shown on the image, for example "20-40 min".'},{type:"localePortableText",name:"description"},{type:"localeImage",name:"image",description:ep("Shown at the aspect ratio set on the component in the Rows layout, cropped to a fixed height in the Grid layout (unless the feature has no label or description, then shown whole), fitted whole into a 409:229 tile in the Steps layout, and cropped to 4:3 in the Overlap layout. In the Steps layout the alt text is the only machine-readable copy for the step, so write out the full caption from the image, starting with the step number.")}],preview:{select:{localeTitle:"title"},prepare(e){let t=(0,em.jn)(e);return{...e,title:t}}}}]}),ta()],preview:{select:{localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"Features"),media:tt(ef("featuresComponent"))})}});var tv=i(27549);let tb=(0,c.U85)({name:"freeformText",icon:tv.TextIcon,title:"Freeform text",description:"A free-form rich text content block for the page.",type:"object",fields:[(0,c.MIB)({name:"description",title:"Content",type:"localePortableText",validation:e=>e.required()}),ta()],preview:{select:{description:"description"},prepare:({description:e})=>({title:"Freeform text",subtitle:(0,em.IA)(e),media:tt(ef("freeformText"))})}});var tI=i(40583);let tw=(0,c.U85)({name:"fullPageImageComponent",icon:tI.ImageIcon,title:"Full Page Image Component",description:"One image that fills the whole screen on every device.",type:"object",fields:[(0,c.MIB)({name:"image",title:"Image",description:ep("Fills the screen, so the image is cropped to the shape of each screen: wide on a computer, tall on a phone. Use a landscape image at least 2400 px wide."),type:"localeImage"}),(0,c.MIB)({name:"portraitImage",title:"Portrait image",description:ep("Optional. Shown instead of the image above on screens that are taller than they are wide, such as phones and tablets held upright. Use a portrait image at least 1600 px wide."),type:"localeImage"})],preview:{select:{image:"image"},prepare:e=>({title:"Full page image",media:(0,em.d$)(e.image)??tt(ef("fullPageImageComponent"))})}});var tk=i(37702);let tS=(0,c.U85)({name:"heroComponent",icon:tk.SplitHorizontalIcon,title:"Hero",de
30scription:"The main hero section at the top of a page, with a title, description, CTA, and image or video.",type:"object",fields:[(0,c.MIB)({name:"tag",title:"Tag",description:"Small label above the title, for example an offer deadline. Write it in sentence case, without all-caps or emoji.",type:"localeString"}),(0,c.MIB)({name:"title",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"description",title:"Description",type:"localePortableText"}),(0,c.MIB)({name:"ctaLink",title:"CTA Link",description:"Write {PROMO} anywhere in the link and it is replaced by the current promo code from Settings.",type:"localeUrl"}),(0,c.MIB)({name:"ctaText",title:"CTA Text",description:"Write {PROMO}, {PROMO_CTA} or {PROMO_DISCOUNT} anywhere in the text and it is replaced by the current promo code, promo offer text or promo discount from Settings.",type:"localeString"}),(0,c.MIB)({name:"ctaEyebrow",title:"CTA Eyebrow",description:"Small line above the CTA label. Leave empty for a label-only button.",type:"localeString"}),(0,c.MIB)({name:"placeContentBeforeText",title:"Place content before text",description:"When enabled, the image/video is shown before the text content instead of after.",type:"boolean"}),(0,c.MIB)({name:"aspectRatio",title:"Aspect ratio",description:ed("Applies to the image and the video. 9:16 puts the content in a narrow column beside the text. Older heroes without a value use 16:9."),type:"imageAspectRatio",initialValue:"16:9"}),(0,c.MIB)({name:"image",description:ep("Shown at the aspect ratio chosen above. If a video is set, the video is shown instead at the same ratio."),type:"localeImage"}),(0,c.MIB)({name:"video",description:'Supported formats: mp4, webm, ogg. Both vertical and horizontal video. Recommended aspect ratio: 16:9 (or 9:16 if "Vertical content" is enabled).',type:"localeVideo"}),ta()],preview:{select:{image:"image",localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"Hero"),media:(0,em.d$)(e.image)??tt(ef("heroComponent"))})}});var tM=i(95142);let tC=(0,c.U85)({name:"heroOverlapComponent",icon:tM.PresentationIcon,title:"Hero overlap",description:"A hero section where the image overlaps the text content.",type:"object",fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"description",title:"Description",type:"localePortableText"}),(0,c.MIB)({name:"ctaLink",title:"CTA Link",description:"Write {PROMO} anywhere in the link and it is replaced by the current promo code from Settings.",type:"localeUrl"}),(0,c.MIB)({name:"ctaText",title:"CTA Text",description:"Write {PROMO}, {PROMO_CTA} or {PROMO_DISCOUNT} anywhere in the text and it is replaced by the current promo code, promo offer text or promo discount from Settings.",type:"localeString"}),(0,c.MIB)({name:"placeImageFirst",title:"Place image first",description:"When enabled, the image is shown before the text content instead of after.",type:"boolean"}),(0,c.MIB)({name:"image",description:ep("Cropped to fill the layout: a square beside the text on desktop, a 5:3 background behind the text on mobile. Upload at least 1600\xd71600 px."),type:"localeImage"})],preview:{select:{image:"image",localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"Hero overlap"),media:(0,em.d$)(e.image)??tt(ef("heroOverlapComponent"))})}});var tT=i(41899);let tB=(0,c.U85)({name:"howItWorksComponent",icon:tT.OlistIcon,title:"How It Works",description:"Numbered step cards on a dark green band that explain how the service works and what the customer gets, as real text search engines can read.",type:"object",fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"subtitle",title:"Subtitle",description:"Optional single line under the title.",type:"localeString"}),(0,c.MIB)({name:"note",title:"Note",description:'Optional short handwritten-style aside next to the title, for example "No commitment, choose per delivery".',type:"localeString"}),(0,c.MIB)({name:"ctaLink",title:"CTA Link",type:"localeUrl"}),(0,c.MIB)({name:"ctaText",title:"CTA Text",type:"localeString"}),(0,c.MIB)({name:"steps",title:"Steps",description:"Shown in order as numbered cards. An even number of steps gives the alternating narrow and wide card layout; an odd number gives equal cards.",type:"array",validation:e=>e.required().min(2).max(6),of:[{type:"object",name:"step",fields:[{type:"localeString",name:"title",validation:e=>e.required()},{type:"localeString",name:"description",description:"One or two sentences. Keep it easy to scan."},{type:"localeImage",name:"image",title:"Illustration",description:ep("Optional illustration shown above the text. Use a transparent or cream background.")},{type:"imageAspectRatio",name:"aspectRatio",title:"Illustration aspect ratio",description:ed("Every illustration in the row gets the same height. Original keeps the upload at its own shape; a cropped ratio gives it that shape."),initialValue:"original"}],preview:{select:{localeTitle:"title"},prepare(e){let t=(0,em.jn)(e);return{...e,title:t}}}}]})],preview:{select:{localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"How it works"),media:tt(ef("howItWorksComponent"))})}});var tx=i(43012);let tA=(0,c.U85)({name:"imageBannerComponent",icon:tx.ImagesIcon,title:"Image Banner Component",description:"A banner with one or tw
30o images side by side and a CTA.",type:"object",fields:[(0,c.MIB)({name:"aspectRatio",title:"Aspect ratio",description:ed("Both images use the same ratio. Landscape banners show up to 800 px wide, 1:1 up to 600 px and 9:16 up to 450 px, so text in a portrait image must stay readable at that size. Older banners without a value show the original shape."),type:"imageAspectRatio",initialValue:"16:9"}),(0,c.MIB)({name:"image1",title:"Image 1",description:ep("Shown at the aspect ratio chosen above."),type:"localeImage"}),(0,c.MIB)({name:"image2",title:"Image 2",description:ep("Shown at the aspect ratio chosen above."),type:"localeImage"}),(0,c.MIB)({name:"ctaLink",title:"CTA Link",description:"Write {PROMO} anywhere in the link and it is replaced by the current promo code from Settings.",type:"localeUrl"}),(0,c.MIB)({name:"ctaText",title:"CTA Text",description:"Write {PROMO}, {PROMO_CTA} or {PROMO_DISCOUNT} anywhere in the text and it is replaced by the current promo code, promo offer text or promo discount from Settings.",type:"localeString"}),ta()],preview:{select:{image:"image1",localeTitle:"ctaText"},prepare:e=>({title:(0,em.jn)(e,"Image banner"),media:(0,em.d$)(e.image)??tt(ef("imageBannerComponent"))})}});var tO=i(31323);let tj=(0,c.U85)({name:"mentionedInComponent",icon:tO.TagsIcon,type:"object",title:"Mentioned In",fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",description:'e.g., "As Mentioned In" or "Featured In"',initialValue:{fi:"Mainittu mediassa",fi_en:"Mentioned in",cz:"Zm\xedněno v",cz_en:"Mentioned in",sk:"Spom\xednan\xe9 v",sk_en:"Mentioned in",ee:"Mainitud",ee_en:"Mentioned in"}}),(0,c.MIB)({name:"subtitle",title:"Subtitle",type:"localeString",description:"Optional subtitle text"}),(0,c.MIB)({name:"logos",title:"Logos",type:"localeLogos",description:"Different logos for each locale"}),(0,c.MIB)({name:"backgroundColor",title:"Background Color",description:"Background color for the section.",type:"string",options:{list:[{title:"White",value:"white"},{title:"Light Gray",value:"gray"},{title:"Primary",value:"primary"},{title:"Secondary",value:"secondary"}]},initialValue:"white"}),(0,c.MIB)({name:"layout",title:"Layout",description:"How the logos are arranged: a single row or a carousel.",type:"string",options:{list:[{title:"Single Row",value:"row"},{title:"Carousel",value:"carousel"}]},initialValue:"row"})],preview:{select:{localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"Mentioned In"),media:tt(ef("mentionedInComponent"))})}});var tL=i(91798);let tP=e=>({fi:e.fi,fi_en:e.en,cz:e.cs,cz_en:e.en,sk:e.sk,sk_en:e.en,ee:e.et,ee_en:e.en}),tR=(e,t,i,n)=>(0,c.MIB)({name:e,title:t,description:n,type:"localeString",fieldset:"title"===e||"ctaText"===e?void 0:"labels",initialValue:i,validation:e=>e.required()}),tU=(0,c.U85)({name:"pricingComponent",icon:tL.TagIcon,title:"Pricing",description:"Lets visitors pick the number of people and recipes and shows the price with the promo code discount.",type:"object",fieldsets:[{name:"labels",title:"Labels",options:{collapsible:!0,collapsed:!0}}],fields:[tR("title","Title",tP({fi:"Valitse boksin koko",cs:"Vyberte velikost boxu",sk:"Vyberte veľkosť boxu",et:"Vali kasti suurus",en:"Choose your box size"})),(0,c.MIB)({name:"showPricePerPortion",title:"Show price per portion",description:"On: the big number is the price per portion and the box price is under it. Off: the big number is the price for the week.",type:"boolean",initialValue:!0}),(0,c.MIB)({name:"promoCode",title:"Promo code",description:"The prices include the first-week discount of this code. Leave empty to use the promo code from Settings.",type:"localeString"}),tR("ctaText","CTA text",tP({fi:"Aloita t\xe4st\xe4",cs:"Zač\xedt",sk:"Začať",et:"Alusta siit",en:"Get started"})),(0,c.MIB)({name:"ctaLink",title:"CTA link",description:"Leave empty to link to the members planner with the promo code. Write {PROMO} anywhere in the link and it is replaced by the current promo code from Settings.",type:"localeUrl"}),tR("peopleLabel","People label",tP({fi:"Henkil\xf6lle",cs:"Počet osob",sk:"Počet os\xf4b",et:"Inimesele",en:"People"})),tR("smallBoxPeople","Small box people",tP({fi:"1–2",cs:"1–2",sk:"1–2",et:"1–2",en:"1–2"}),"The number of people on the small box button."),tR("largeBoxPeople","Large box people",{fi:"3–5",fi_en:"3–5",cz:"3–4",cz_en:"3–4",sk:"3–4",sk_en:"3–4",ee:"3–5",ee_en:"3–5"},"The number of people on the large box button."),tR("recipesLabel","Recipes label",tP({fi:"Reseptej\xe4 viikossa",cs:"Receptů t\xfddně",sk:"Receptov t\xfdždenne",et:"Retsepti n\xe4dalas",en:"Recipes per week"})),tR("pricePerPortionLabel","Price per portion label",tP({fi:"Hinta / annos",cs:"Cena / porce",sk:"Cena / porcia",et:"Hind / portsjon",en:"Price / serving"})),tR("pricePerWeekLabel","Price per week label",tP({fi:"Hinta / viikko",cs:"Cena / t\xfdden",sk:"Cena / t\xfdždeň",et:"Hind / n\xe4dal",en:"Price / week"})),tR("normalPriceLabel","Normal price label",tP({fi:"norm.",cs:"běžně",sk:"bežne",et:"tavahind",en:"reg."}),"Shown before the crossed-out normal price when there is a discount."),ta()],preview:{select:{localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"Pricing"),media:tt(ef("pricingComponent"))})}});var tq=i(38130);
30let tz=(0,c.U85)({name:"rouletteGameComponent",icon:tq.CircleIcon,title:"Roulette Game",type:"object",fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",description:"Main heading for the roulette game section",initialValue:{fi:"Py\xf6r\xe4yt\xe4 ja voita",fi_en:"Spin to Win",cz:"Roztočte a vyhrajte",cz_en:"Spin to Win",sk:"Roztočte a vyhrajte",sk_en:"Spin to Win",ee:"Keeruta ja v\xf5ida",ee_en:"Spin to Win"}}),(0,c.MIB)({name:"subtitle",title:"Subtitle",type:"localeString",description:"Optional subtitle or description text",initialValue:{fi:"Kokeile onneasi ja voita upea alennus!",fi_en:"Try your luck and win an amazing discount!",cz:"Vyzkoušejte sv\xe9 štěst\xed a vyhrajte \xfažasnou slevu!",cz_en:"Try your luck and win an amazing discount!",sk:"Vysk\xfašajte svoje šťastie a vyhrajte \xfažasn\xfa zľavu!",sk_en:"Try your luck and win an amazing discount!",ee:"Proovi \xf5nne ja v\xf5ida suurep\xe4rane allahindlus!",ee_en:"Try your luck and win an amazing discount!"}}),(0,c.MIB)({name:"centerImage",title:"Center Image",description:ep("Shown in the center of the wheel, cropped to a circle around the hotspot. Upload a square of at least 400\xd7400 px."),type:"localeImage"}),(0,c.MIB)({name:"segments",title:"Wheel Segments",description:"Configure the prizes on the wheel",type:"array",validation:e=>e.required().min(3).max(12).custom(e=>{if(!e||0===e.length)return!0;let t=e.reduce((e,t)=>e+(t.percentage||0),0);return!(Math.abs(t-100)>.01)||`Total percentage must equal 100% (currently ${t.toFixed(1)}%)`}),of:[{type:"object",name:"segment",fields:[(0,c.MIB)({name:"text",title:"Display Text",description:"Text shown on the wheel segment",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"color",title:"Segment Color",description:"Background color for this segment",type:"color"}),(0,c.MIB)({name:"textColor",title:"Text Color",description:"Text color for this segment",type:"color"}),(0,c.MIB)({name:"reward",title:"Reward Type",type:"string",options:{list:[{title:"No Prize",value:"NO_PRIZE"},{title:"Discount",value:"DISCOUNT_CODE"}]},validation:e=>e.required()}),(0,c.MIB)({name:"redeemCode",title:"Promo Code",description:"Discount code given to winner (leave empty for no prize)",type:"string",validation:e=>e.custom((e,t)=>"NO_PRIZE"===t.parent?.reward||!!e||"Promo code is required for prize segments")}),(0,c.MIB)({name:"percentage",title:"Winning Probability (%)",description:"Chance of landing on this segment (higher means more likely)",type:"number",validation:e=>e.required().min(0).max(100)})],preview:{select:{text:"text",redeemCode:"redeemCode",color:"color"},prepare({text:e,redeemCode:t,color:i}){let o;return{title:(0,em.jn)({localeTitle:e})||"Untitled Segment",subtitle:`Code ${t||""}`,media:(o=i?.hex)?(0,n.jsx)("div",{style:{backgroundColor:o,borderRadius:"50%",boxShadow:"inset 0 0 0 1px rgb(0 0 0 / 0.2)",height:"100%",width:"100%"}}):void 0}}}}]}),(0,c.MIB)({name:"emailPlaceholder",title:"Email Input Placeholder",type:"localeString",initialValue:{cz_en:"Enter your email to spin",fi:"Sy\xf6t\xe4 s\xe4hk\xf6postisi py\xf6r\xe4ytt\xe4\xe4ksesi"}}),(0,c.MIB)({name:"phonePlaceholder",title:"Phone Number Input Placeholder",type:"localeString",initialValue:{cz_en:"Enter your phone number",fi:"Sy\xf6t\xe4 puhelinnumerosi py\xf6r\xe4ytt\xe4\xe4ksesi"}}),(0,c.MIB)({name:"zipCodePlaceholder",title:"Zip Code Input Placeholder",type:"localeString",initialValue:{cz_en:"Enter your zip code",fi:"Sy\xf6t\xe4 postinumerosi py\xf6r\xe4ytt\xe4\xe4ksesi"}}),(0,c.MIB)({name:"spinButtonText",title:"Spin Button Text",type:"localeString",initialValue:{cz_en:"SPIN THE WHEEL!",fi:"PY\xd6R\xc4YT\xc4!"}}),(0,c.MIB)({name:"spinningText",title:"Spinning Text",type:"localeString",initialValue:{cz_en:"SPINNING...",fi:"PY\xd6RII..."}}),(0,c.MIB)({name:"congratulationsText",title:"Congratulations Message",type:"localeString",initialValue:{cz_en:"Congratulations!",fi:"Onnittelut!"}}),(0,c.MIB)({name:"congratulationsDescription",title:"Congratulations Description",type:"localeString",initialValue:{cz_en:"You have won",fi:"Voitit"}}),(0,c.MIB)({name:"noPrizeTitle",title:"No Prize Title",type:"localeString",initialValue:{cz_en:"Sorry, No Prize This Time",fi:"Valitettavasti ei palkintoa t\xe4ll\xe4 kertaa"}}),(0,c.MIB)({name:"noPrizeDescription",title:"No Prize Description",type:"localeString",initialValue:{cz_en:"But don't worry! Check out our amazing meal kits anyway!",fi:"Mutta ei h\xe4t\xe4\xe4! Tutustu upeisiin ateriasetteihimme!"}}),(0,c.MIB)({name:"copyButtonText",title:"Copy Button Text",type:"localeString",initialValue:{cz_en:"Copy",fi:"Kopioi"}}),(0,c.MIB)({name:"copiedButtonText",title:"Copied Button Text",type:"localeString",initialValue:{cz_en:"✓ Copied!",fi:"✓ Kopioitu!"}}),(0,c.MIB)({name:"shopButtonTextWin",description:"Leads will be created to custobar with tags roulette_leads and email_leads",title:"Shop Button Text (Winner)",type:"localeString",initialValue:{cz_en:"Shop Now & Use Code",fi:"Osta nyt ja k\xe4
30yt\xe4 koodia"}}),(0,c.MIB)({name:"shopButtonTextNoWin",title:"Shop Button Text (No Prize)",type:"localeString",initialValue:{cz_en:"Browse Meal Kits",fi:"Selaa ateriasetej\xe4"}}),(0,c.MIB)({name:"consentText",title:"Consent Text",description:"Marketing consent text shown to user below the spin button (supports rich text formatting)",type:"localePortableText"})],preview:{select:{image:"centerImage",localeTitle:"title",segments:"segments"},prepare(e){let t=(0,em.jn)(e,"Roulette Game"),i=e.segments?.length||0;return{title:t,media:(0,em.d$)(e.image)??tt(ef("rouletteGameComponent")),subtitle:`${i} segments`}}}});var t_=i(6976);let tD=(0,c.U85)({name:"tallyComponent",icon:t_.ClipboardIcon,title:"Tally form",description:"Embeds a Tally form by its form ID.",type:"object",fields:[(0,c.MIB)({name:"tallyId",title:"Tally id",description:"The ID from the Tally form URL, e.g. https://tally.so/r/XXXXXX → XXXXXX.",type:"localeString",validation:e=>e.required()}),ta()],preview:{select:{localeTitle:"tallyId"},prepare:e=>({title:(0,em.jn)(e,"Tally form"),media:tt(ef("tallyComponent"))})}});var t$=i(50030);let tE=(0,c.U85)({name:"testimonialsComponent",icon:t$.StarFilledIcon,title:"Google reviews",description:"Customer reviews picked from Google, with the average rating and review count of the market.",type:"object",fields:[(0,c.MIB)({name:"title",title:"Title",type:"localeString",initialValue:{fi:"Asiakkaamme kertovat",fi_en:"What our customers say",cz:"Co o n\xe1s ř\xedkaj\xed z\xe1kazn\xedci",cz_en:"What our customers say",sk:"Čo o n\xe1s hovoria z\xe1kazn\xedci",sk_en:"What our customers say",ee:"Mida kliendid meist arvavad",ee_en:"What our customers say"}}),(0,c.MIB)({name:"layout",title:"Layout",description:"Carousel shows a scrollable row for a few highlighted reviews and cuts each review at six lines, so pick short ones. Grid shows every review in full, e.g. on a reviews page.",type:"string",options:{list:[{title:"Carousel",value:"carousel"},{title:"Grid",value:"grid"}],layout:"radio"},initialValue:"carousel"}),(0,c.MIB)({name:"markets",title:"Reviews",description:"Each market has its own Google Business Profile. Both languages of a market show the same reviews.",type:"testimonialMarkets"}),ta()],preview:{select:{localeTitle:"title"},prepare:e=>({title:(0,em.jn)(e,"Google reviews"),media:tt(ef("testimonialsComponent"))})}});var tW=i(22086);let tN=(0,c.U85)({name:"trustmaryComponent",icon:tW.StarIcon,title:"Trustmary widget",description:"Embeds a Trustmary review widget by its widget ID.",deprecated:{reason:"Use the Google reviews component instead. Trustmary is removed once no page uses it."},type:"object",fields:[(0,c.MIB)({name:"title",title:"Title",description:"Heading shown above the widget.",type:"localeString"}),(0,c.MIB)({name:"ratingSummary",title:"Rating summary",description:"Short rating line shown beside the heading.",type:"localeString"}),(0,c.MIB)({name:"widgetId",title:"Widget id",description:"The widget ID from the Trustmary embed snippet.",type:"localeString",validation:e=>e.required()}),ta()],preview:{select:{localeTitle:"widgetId"},prepare:e=>({title:(0,em.jn)(e,"Trustmary"),media:tt(ef("trustmaryComponent"))})}}),tV=(0,c.U85)({name:"testimonial",title:"Google review",description:"One review copied as-is from the Google Business Profile.",type:"object",icon:tW.StarIcon,fields:[(0,c.MIB)({name:"name",title:"Reviewer name",description:"The name exactly as it shows on Google.",type:"string",validation:e=>e.required()}),(0,c.MIB)({name:"rating",title:"Stars",type:"number",options:{list:[5,4,3,2,1],layout:"radio",direction:"horizontal"},initialValue:5,validation:e=>e.required().integer().min(1).max(5)}),(0,c.MIB)({name:"text",title:"Review text",description:"Copy the text word for word. Do not translate or shorten it.",type:"text",rows:5,validation:e=>e.required()}),(0,c.MIB)({name:"image",title:"Profile picture",description:"The reviewer’s Google profile picture. Leave empty to show their initial.",type:"image",options:{hotspot:!0}}),(0,c.MIB)({name:"date",title:"Review date",description:"The date the review was posted on Google.",type:"date"})],preview:{select:{name:"name",rating:"rating",text:"text",media:"image"},prepare:({name:e,rating:t,text:i,media:n})=>({title:e||"Unnamed reviewer",subtitle:["★".repeat(t??0),i].filter(
30Boolean).join(" \xb7 "),media:n??tW.StarIcon})}}),tF=(e,t)=>!t?.testimonials?.length||null!=e||"Required when the market has reviews.",tG=(0,c.U85)({name:"testimonialMarket",title:"Market reviews",type:"object",fields:[(0,c.MIB)({name:"averageRating",title:"Average rating",description:"The average star rating on the Google Business Profile, e.g. 4.6.",type:"number",validation:e=>e.min(1).max(5).precision(1).custom((e,t)=>tF(e,t.parent))}),(0,c.MIB)({name:"reviewCount",title:"Review count",description:"The total number of reviews on the Google Business Profile.",type:"number",validation:e=>e.integer().min(1).custom((e,t)=>tF(e,t.parent))}),(0,c.MIB)({name:"profileUrl",title:"Google Business Profile link",description:"Link to all reviews of this market on Google.",type:"url",validation:e=>e.uri({scheme:["https"]})}),(0,c.MIB)({name:"testimonials",title:"Reviews",description:"Pick reviews from Google and copy them here.",type:"array",of:[{type:"testimonial"}],validation:e=>e.max(24)})]}),tH=(0,c.U85)({name:"testimonialMarkets",title:"Reviews per market",type:"object",fieldsets:[{name:"otherMarkets",title:"Other markets",options:{collapsible:!0,collapsed:!0}}],fields:y.O4.filter(e=>!e.id.includes("_")).map(e=>(0,c.MIB)({name:e.id,title:e.title,type:"testimonialMarket",fieldset:e.isDefault?void 0:"otherMarkets"}))});var tY=i(12712),tX=i(81597);let tK=(0,c.U85)({name:"navigation",title:"Navigation",description:"The site header: main menu items, a CTA, and the login link.",icon:tY.JoystickIcon,type:"document",groups:[{default:!0,name:"menu",title:"Menu",icon:tX.MenuIcon},{name:"links",title:"Header links",icon:tm.LinkIcon}],fields:[(0,c.MIB)({name:"items",group:"menu",title:"Items",description:"The main navigation menu items shown in the header.",type:"array",of:[{type:"navigationItem"}],validation:e=>e.required()}),(0,c.MIB)({name:"promoTag",group:"menu",title:"Promo tag",description:"Short offer shown as a yellow tag above the links in the mobile menu. Leave empty to hide it.",type:"localeString"}),(0,c.MIB)({name:"trustLine",group:"menu",title:"Trust line",description:"One short line of reassurance under the mobile menu login link. Leave empty to hide it.",type:"localeString"}),(0,c.MIB)({name:"cta",group:"links",title:"CTA",description:"Call-to-action button shown in the header.",type:"object",fields:[(0,c.MIB)({name:"ctaTitle",title:"Title",type:"localeString"}),(0,c.MIB)({name:"ctaUrl",title:"URL",type:"localeUrl"})]}),(0,c.MIB)({name:"login",group:"links",title:"Login",description:"Login link shown in the header.",type:"object",fields:[(0,c.MIB)({name:"loginTitle",title:"Title",type:"localeString"}),(0,c.MIB)({name:"loginUrl",title:"URL",type:"localeUrl"})]})],preview:{prepare:()=>({title:"Navigation"})}});var tZ=i(97909);let tQ=(0,c.U85)({name:"settings",title:"Settings",type:"document",icon:tZ.CogIcon,groups:[{default:!0,name:"general",title:"General",icon:el.InfoOutlineIcon},{name:"branding",title:"Branding and media",icon:tx.ImagesIcon},{name:"promotion",title:"Promotion",icon:tL.TagIcon},{name:"footer",title:"Footer",icon:tm.LinkIcon},{name:"seo",title:"SEO",icon:eh.SearchIcon}],fields:[(0,c.MIB)({name:"title",group:"general",description:"This field is the title of your website.",title:"Title",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"description",group:"general",description:"Used both for the <meta> description tag for SEO, and the blog subheader.",title:"Description",type:"localePortableText"}),(0,c.MIB)({name:"logo",group:"branding",title:"Logo",type:"localeImage",description:"Website logo shown on main navigation. Recommended aspect ratio: 16:9."}),(0,c.MIB)({name:"contrastLogo",group:"branding",title:"Contrast Logo",type:"localeImage",description:"Website logo but for contrast color background. Recommended aspect ratio: 16:9."}),(0,c.MIB)({name:"promoCode",group:"promotion",title:"Promo code",description:"The current promo code of the market, for example BOKSI30. Write {PROMO} in any link or text on the site and it is replaced by this code. A link that carries {PROMO} but no utm_content tag gets one automatically.",type:"localeString"}),(0,c.MIB)({name:"promoCtaText",group:"promotion",title:"Promo CTA text",description:'The offer in words, for example "Get 30% off your first box". Write {PROMO_CTA} in any text on the site and it is replaced by this text.',type:"localeString"}),(0,c.MIB)({name:"promoDiscount",group:"promotion",title:"Promo discount",description:'Only the discount number and sign, for example "-20 %". Write {PROMO_DISCOUNT} in any text on the site and it is replaced by this value, so you can write your own sentence, for example "Kokeile {PROMO_DISCOUNT} alennuksella".',type:"localeString"}),(0,c.MIB)({name:"footer",group:"footer",description:"This is a block of text that will be displayed at the bottom of the page.",title:"Footer Info",type:"localePortableText"}),(0,c.MIB)({name:"socialMediaLinks",group:"footer",title:"Social media links",de
30scription:"Social media icons and links shown in the footer.",type:"array",of:[{type:"object",name:"socialMediaLink",fields:[{type:"localeUrl",name:"url"},{type:"imageWithAlt",name:"logo",description:"Recommended aspect ratio: 1:1."}],preview:{select:{localeTitle:"url",media:"logo"},prepare:e=>({title:(0,em.jn)(e),media:e.media})}}]}),(0,c.MIB)({name:"policyLinks",group:"footer",title:"Policy links",description:"Legal/policy page links (e.g. terms, privacy) shown in the footer.",type:"array",of:[{type:"object",name:"policyLink",fields:[{type:"localeString",name:"title"},{type:"localeUrl",name:"url"}],preview:{select:{localeTitle:"title",url:"url"},prepare:e=>({title:(0,em.jn)(e),subtitle:(0,em.jn)(e,void 0,"url")})}}]}),(0,c.MIB)({name:"certificates",group:"footer",title:"Certificates etc",description:"Trust badges and certificate logos shown in the footer, each linking to its source.",type:"array",of:[{type:"object",name:"certificate",fields:[{type:"localeUrl",name:"url"},{name:"image",type:"localeImage",description:"Recommended aspect ratio: 16:9."}],preview:{select:{localeTitle:"url",image:"image"},prepare:e=>({title:(0,em.jn)(e),media:(0,em.d$)(e.image)})}}]}),(0,c.MIB)({name:"ogImage",group:"seo",title:"Open Graph Image",type:"image",description:"Displayed on social cards and search engine results. Recommended aspect ratio: 16:9.",components:{input:eK},options:{hotspot:!0},fields:[(0,c.MIB)({name:"alt",description:"A short (max ~100 character) description of the image content. Used for website accessibility and SEO.",title:"Alternative text",type:"localeString",validation:e=>e.custom((e,t)=>!t.document?.ogImage?.asset?._ref||!!e||"Required")}),(0,c.MIB)({name:"metadataBase",type:"url",description:(0,n.jsx)("a",{href:"https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadatabase",rel:"noreferrer noopener",children:"More information"})})]}),(0,c.MIB)({name:"video",group:"branding",title:"Video for the website",type:"image",description:"Displayed on social cards and search engine results. Recommended aspect ratio: 16:9.",components:{input:eK},options:{hotspot:!0},fields:[(0,c.MIB)({name:"alt",description:"A short (max ~100 character) description of the image content. Used for website accessibility and SEO.",title:"Alternative text",type:"localeString",validation:e=>e.custom((e,t)=>!t.document?.video?.asset?._ref||!!e||"Required")}),(0,c.MIB)({name:"metadataBase",type:"url",description:(0,n.jsx)("a",{href:"https://nextjs.org/docs/app/api-reference/functions/generate-metadata#metadatabase",rel:"noreferrer noopener",children:"More information"})})]})],preview:{prepare:()=>({title:"Settings"})}});var tJ=i(77348);let t0=(0,c.U85)({name:"translations",title:"Translations",type:"document",icon:u.TranslateIcon,groups:[{default:!0,name:"recipe",title:"Recipe page",icon:tJ.BasketIcon},{name:"nutrition",title:"Nutrition",icon:t_.ClipboardIcon},{name:"search",title:"Search and filters",icon:eh.SearchIcon},{name:"navigation",title:"Navigation and buttons",icon:tX.MenuIcon},{name:"content",title:"Blog and footer",icon:eC.BlockContentIcon},{name:"reviews",title:"Google reviews",icon:tW.StarIcon}],fields:[(0,c.MIB)({name:"similarRecipesText",group:"recipe",description:"Similar recipes shown on the recipe page",title:"Similar recipes text",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"ingredients",group:"recipe",description:"Ingredients accordion",title:"Ingredients",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"recipe",group:"recipe",description:"Recipe accordion",title:"Recipe",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"tips",group:"recipe",description:"Tips heading",title:"Tips",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"energyValue",group:"nutrition",description:"Energy value description",title:"Energy Value",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"fatValue",group:"nutrition",description:"Fat value description",title:"Fat Value",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"carbonHydratesValue",group:"nutrition",description:"Carbohydrates value description",title:"Carbohydrates Value",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"proteinValue",group:"nutrition",description:"Protein value description",title:"Protein Value",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"nutritionValue",group:"nutrition",description:"Nutrition Value accordion",title:"Nutrition Value",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"similarCategoriesPrefix",group:"recipe",description:"It is used as a prefix for the similar categories",t
30itle:"Similar categories prefix",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"findRecipesPlaceholder",group:"search",description:"Placeholder search component for finding recipes",title:"Find Recipes Placeholder",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"searchResults",group:"search",description:"Recipe search results text",title:"Search results",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"noSearchResults",group:"search",description:"Recipe search no results text",title:"No search results",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"showMore",group:"search",description:"Recipe search show more results text",title:"Show more (results)",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"backToBlog",group:"content",description:"Link text on a blog post page to go back to the blog listing",title:"Back to blog",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"allergiesFilter",group:"search",description:"Filter for allergies",title:"Allergies Filter",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"dietsFilter",group:"search",description:"Filter for diets",title:"Diets Filter",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"dishTypesFilter",group:"search",description:"Filter for dish types",title:"Dish Types Filter",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"toggleSubmenu",group:"navigation",description:"Toggle submenu button",title:"Toggle submenu button",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"skipToContent",group:"navigation",description:"Skip to content button",title:"Skip to content button",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"openMobileMenu",group:"navigation",description:"Open mobile menu button",title:"Open mobile menu button",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"closeMobileMenu",group:"navigation",description:"Close mobile menu button",title:"Close mobile menu button",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"seeAllRecipes",group:"navigation",description:"Link above a recipe list that opens the whole category",title:"See all recipes link",type:"localeString"}),(0,c.MIB)({name:"scrollLeft",group:"navigation",description:"Scroll left button",title:"Scroll left button",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"scrollRight",group:"navigation",description:"Scroll right button",title:"Scroll right button",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"servingSize",group:"recipe",description:"Serving size label",title:"Serving size label",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"preparationTime",group:"recipe",description:"Preparation time label",title:"Preparation time label",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"customerRating",group:"recipe",description:"Customer rating label",title:"Customer rating label",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"recipeRatingText",group:"recipe",description:'Recipe rating text with placeholders. Use {percentage} for the rating percentage and {count} for review count. Example: "{percentage}% loved this recipe ({count} reviews)"',title:"Recipe Rating Text",type:"localeString"}),(0,c.MIB)({name:"noCategoryRecipes",group:"recipe",description:"Message shown when a category has no recipes attached",title:"No Category Recipes",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"shareRecipe",group:"recipe",description:"Share recipe button label",title:"Share recipe label",type:"localeString",validation:e=>e.required()}),(0,c.MIB)({name:"relatedPostsHeading",group:"content",description:'Heading above the related articles listed at the end of a blog post, e.g. "Read next". Leave empty to hide the heading.',title:"Related posts heading",type:"localeString"}),(0,c.MIB)({name:"sisterSitesHeading",group:"content",description:'Heading above the links to our other market sites in the footer, e.g. "Yummy Group". Leave empty to hide the links.',title:"Sister sites heading",type:"localeString"}),(0,c.MIB)({name:"reviewCountText",group:"reviews",description:'Shown under the average rating in the Google reviews section. Use {count} for the number of reviews. Example: "{count} reviews on Google"',title:"Review count text",type:"localeString"}),(0,c.MIB)({name:"allReviewsLink",group:"reviews",description:'Link to the Google Business Profile in the Google reviews section, e.g. "See all reviews"',title:"All reviews link",type:"localeString"}),(0,c.MIB)({name:"starRatingLabel",group:"reviews",description:'Read out by screen readers for a star rating. Use {rating} for the number of stars. Example: "{rating} out of 5 stars"',title:"Star rating label",type:"localeString"})],preview:{prepare:()=>({title:"Translations"})}}),t1=[ea,ex,eM,ej,eg],t5=[tQ,tK,t0],t2=[et,en,eP,eD];var t4=i(38347);let t8=(0,n.jsx)(t4.default,{alt:"",src:"/android-chrome-512x512.png",width:"25",height:"22"}),t9=[...t1,...t5].map(e=>e.name),t3=(0,c.C8j)({icon:()=>t8,title:"production"===x.RT?"Website":`${x.RT} website`,basePath:x.EL,projectId:x.Lg,dataset:x.RT,schema:{types:[...t5,...t1,...t2,eG,eX,eZ,e8,e9,e1,e5,eQ,e6,e0,e3,e4,e2,e7,eH,eY,eE,eW,tV,tG,tH,tn,tp,tA,tw,ts,th,tf,tS,tC,tB,tE,t
30N,tz,tD,tl,td,tb,tu,tj,tU]},document:{inspectors:(e,{documentType:t})=>t9.some(e=>e===t)?[w,...e]:e},autoUpdates:!0,tools:[{component:()=>{let e=(0,c.iZK)(),[t,i]=(0,s.useState)(null);return((0,s.useEffect)(()=>{let e=(0,y.Ay)("country"),t=L.Fg.find(t=>t===e)??L.Fg[0];i(t),e||(document.cookie=`country=${t};path=/;max-age=31536000`)},[]),t)?(0,n.jsx)(h.mc,{width:3,children:(0,n.jsxs)(g.W,{margin:3,padding:5,children:[(0,n.jsx)(h.DZ,{size:5,as:"h1",children:"Change market"}),(0,n.jsx)("span",{style:{display:"inline-block",height:"2rem",width:"100%"}}),(0,n.jsxs)("p",{children:["Hi ",e?.name,"! Your role is: ",e?.roles[0].title]}),(0,n.jsx)("span",{style:{display:"inline-block",height:"1rem",width:"100%"}}),(0,n.jsxs)("p",{children:[" Your selected country is ",t," "]}),(0,n.jsx)("span",{style:{display:"inline-block",height:"2rem",width:"100%"}}),(0,n.jsx)(h.DZ,{size:3,as:"h2",children:"Select your country"}),(0,n.jsx)("span",{style:{display:"inline-block",height:"1rem",width:"100%"}}),(0,n.jsx)(h.l6,{fontSize:[2,2,3,4],onChange:e=>{let t=L.Fg.find(t=>t===e.target.value);t&&(i(t),document.cookie=`country=${t};path=/;max-age=31536000`,window.location.reload())},padding:[3,3,4],space:[3,3,4],value:t,children:L.Fg.map(e=>(0,n.jsx)("option",{value:e,children:e},e))})]})}):null},name:"settings",title:"Country selector"}],plugins:[(0,a.Cn)({translate:{styleguide:function({ttlMs:e=3e5,fetchGuidance:t=e_}={}){let i=null;return async({client:n})=>{let o=Date.now();(!i||i.expiresAt<=o)&&(i={expiresAt:o+e,guidance:t(n)});try{return function(e,t=2e3){let i,n=[...(e.glossaries??[]).flatMap(e=>{let t=(e.terms??[]).map(ez).filter(e=>null!==e);if(!t.length)return[];let i=e.sourceLocale??y.nq;return[[`Glossary "${e.title??"Untitled"}" (${i}, use exactly):`,...t]]}),...[...(i=(e.styleGuides??[]).flatMap(e=>{let t=(e.rules??[]).filter(Boolean);if(!e.tone&&!t.length)return[];let i=!e.locales?.length,n=i?"all languages":(e.locales??[]).join(", ");return[{isGlobal:i,lines:[`Style guide (${n}):`,...e.tone?[`- ${e.tone.trim()}`]:[],...t.map(e=>`- ${e}`)]}]})).filter(({isGlobal:e})=>e),...i.filter(({isGlobal:e})=>!e)].map(({lines:e})=>e)],o=eU.slice(0,t);for(let e of n){let i=`
31
32${e.join("\n")}`;o.length+i.length>t||(o+=i)}return o}(await i.guidance)}catch{return i=null,eU}}}(),field:{documentTypes:t9,languages:y.Ub,maxPathDepth:12}},fieldActions:{title:"Alt text",useFieldActions:({actionType:e,documentIdForAction:t,path:i,schemaId:n,schemaType:o})=>{let l=(0,c.tH7)({apiVersion:"vX"});return(0,s.useMemo)(()=>{let s="field"===e?T(i,o.name):[];return s.length?[(0,a.hK)({title:"Generate alt text",icon:r.SparklesIcon,onAction:async()=>{await B(l,{schemaId:n,documentId:t,targets:s})}})]:[]},[e,l,t,i,n,o])}}}),(0,l.EX)(),(0,p.BP)({resolve:{locations:(e,t)=>{if("page"===e.type){let i=t.documentStore.listenQuery("*[_id == $id][0]{title, slug}",{id:e.id},{perspective:"drafts"}),n=t.documentStore.listenQuery("*[_id == $id][0]{slug}",{id:e.id},{perspective:"published"});return(0,A.z)([i,n]).pipe((0,O.T)(([e,t])=>{let i,n=e?V(e,"/[pageSlug]","pageSlug"):[];return n.length?{locations:n,message:`${1===(i=n.length)?"Used on one page":`Used on ${i} pages`}, ${$(t,e)}`}:{locations:[],message:"Add a URL path to preview this page",tone:"caution"}}))}return"settings"===e.type||"navigation"===e.type||"translations"===e.type?t.documentStore.listenQuery('*[_type == "post"]{title, slug}',{},{perspective:"drafts"}).pipe((0,O.T)(e=>({message:"This document is used on all pages",tone:"caution",locations:[...G(),...(e??[]).flatMap(e=>F(e,"/blog/[postSlug]","postSlug"))]}))):"post"===e.type||"author"===e.type?t.documentStore.listenQuery('*[_type == "post" && (_id == $id || references($id))]{title, slug}',{id:e.id},{perspective:"drafts"}).pipe((0,O.T)(t=>{let i=(t??[]).flatMap(t=>"post"===e.type?V(t,"/blog/[postSlug]","postSlug"):F(t,"/blog/[postSlug]","postSlug"));return{locations:[...G(),...i]}})):null}},previewUrl:{previewMode:{enable:"/draft"}}}),(0,d.Cw)({structure:((e,t=[])=>i=>{let n=e.map(e=>i.listItem().title(e.title).icon(e.icon).child(i.editor().id(e.name).schemaType(e.n
32ame).documentId(e.name))),o=t.length?[i.divider(),i.listItem().id("ai").title("AI").icon(r.SparklesIcon).child(i.list().title("AI").items(t.map(e=>{let t=i.documentTypeListItem(e.name);return e.title?t.title(e.title):t})))]:[],a=[...e,...t],l=i.documentTypeListItems().filter(e=>!a.find(t=>t.name===e.getId())).map(e=>{var t;let n,o,a;return"post"===e.getId()?e.child(i.documentTypeList("post").defaultOrdering([{field:"date",direction:"desc"}])):"page"===e.getId()?e.child((t=(0,y.Ay)("country"),n=e=>t=>t.countryCode.toLowerCase()===e,o=q.find(n((t??"").slice(0,2).toLowerCase()))??q.find(n(L.Fg[0]))??q[0],a=(e,t,n,o)=>i.listItem().id(e).title(t).icon(n).child(i.documentTypeList("page").id(e).title(t).filter(o)),i.list().title("Pages").items([a("all-pages","All pages",H.DocumentsIcon,'_type == "page"'),a("landing-pages","Landing pages",Q.RocketIcon,'_type == "page" && landingPage == true'),a("other-pages","Other pages",Y.DocumentTextIcon,'_type == "page" && landingPage != true'),i.divider(),a("live-pages",`Live in ${o.name}`,X.EarthGlobeIcon,_(o,"live")),a("only-live-pages",`Only live in ${o.name}`,Z.PinIcon,_(o,"only-live")),a("not-live-pages",`Not live in ${o.name}`,K.EyeClosedIcon,_(o,"not-live"))]))):e});return i.list().title("Content").items([...n,i.divider(),...l,...o])})([tQ,t0,tK],[{name:a.uv},...t2])}),J([tQ.name,t0.name,tK.name]),!1].filter(Boolean)});function t6(){return(0,n.jsx)(o.EQ,{config:t3})}},19871:(e,t,i)=>{"use strict";i.d(t,{Fh:()=>o,Il:()=>n});let n=["original","16:9","4:3","1:1","9:16"],o=(e,t)=>{if("original"===e)return;let[i,n]=e.split(":").map(Number);return{width:t,height:Math.round(t*n/i)}}},25996:(e,t,i)=>{"use strict";function n({src:e,width:t,quality:i}){if(!e.startsWith("https://cdn.sanity.io/"))return e;let o=new URL(e),a=Number(o.searchParams.get("w")),l=Number(o.searchParams.get("h"));return a>0&&l>0&&o.searchParams.set("h",String(Math.round(l*t/a))),o.searchParams.set("w",String(t)),o.searchParams.set("q",String(i??75)),o.searchParams.delete("fm"),o.searchParams.set("auto","format"),o.searchParams.has("fit")||o.searchParams.set("fit","max"),o.toString()}i.r(t),i.d(t,{default:()=>n})},38721:(e,t,i)=>{"use strict";i.d(t,{Q0:()=>n.m,mn:()=>n.a,ou:()=>n.r,tG:()=>n.n});var n=i(90402)},48320:(e,t,i)=>{"use strict";let n;i.d(t,{A9:()=>c,Ay:()=>u,O4:()=>l,Ub:()=>r,Y4:()=>d,YR:()=>p,nq:()=>s,zc:()=>m});var o=i(38721),a=i(65135);let l="u"<typeof document?[]:(n=u("country")||a.q,o.mn.flatMap(e=>[{id:e.countryCode.toLowerCase(),title:e.name,isDefault:e.countryCode.toLowerCase()===n.toLowerCase()},{id:`${e.countryCode.toLowerCase()}_en`,title:`${e.countryCode} - English`,isDefault:e.countryCode.toLowerCase()===n.toLowerCase()}]).sort(e=>e.isDefault?-1:1)),r=o.mn.flatMap(e=>{let t=e.countryCode.toLowerCase(),i=e.defaultLanguage.name;return[{id:t,title:`${i.charAt(0).toUpperCase()}${i.slice(1)} (${e.name})`},{id:`${t}_en`,title:`English (${e.name})`}]}),s="fi",c=r.map(({id:e,title:t})=>({title:t,value:e})),p=r.filter(({id:e})=>e!==s);function d(e){return r.find(({id:t})=>t===e)?.title??e}let m={aiAssist:{translateAction:!0}};function u(e){if("u"<typeof document)return null;let t=document.cookie.match(`(^|;)\\s*${e}=([^;]+)`);return t?t[2]:null}},48857:(e,t,i)=>{"use strict";i.d(t,{Hm:()=>c,N_:()=>a,rd:()=>s});var n=i(82838),o=i(65135);let{Link:a,redirect:l,usePathname:r,useRouter:s,getPathname:c}=(0,n.A)(o.DT)},64902:(e,t,i)=>{"use strict";i.d(t,{F4:()=>m,IA:()=>I,Kr:()=>b,d$:()=>f,ij:()=>d,jn:()=>w});var n=i(76332),o=i(25133),a=i(90982),l=i(65135),r=i(71863),s=i(48320);let c={projectId:r.Lg||"",dataset:r.RT||""},p=(0,a.OX)({...c}),d=e=>{if(e?.asset?._ref)return p?.image(e).auto("format").fit("max")};async function m(e,t){let i=e?.current?.trim(),n=t.document;if(!i||!n)return!0;let a=(t.path??[]).filter(e=>"string"==typeof e);if(2!==a.length)return!0;let l=t.getClient({apiVersion:r.XV}),s=await l.fetch(`*[_type == $type && ${a.join(".")}.current == $slug]._id`,{type:n._type,slug:i},{perspective:"raw"}),c=(0,o.IM)(n._id);return!s.some(e=>(0,o.IM)(e)!==c)||`Another ${n._type} already uses this URL path.`}let u=(0,s.Ay)("country")??l.q,g=l.q,h=e=>"object"==typeof e&&null!==e,y=e=>{if(!h(e)||!h(e.asset))return;let t=e.asset._ref;return"string"==typeof t&&t.startsWith("image-")?e:void 0},f=e=>y(e?.[u])??y(e?.[g]),v=(e,t)=>
32{if(!h(e))return;let i=f(e);if(i||0===t)return i;for(let i of Object.values(e)){let e=v(i,t-1);if(e)return e}},b=e=>Array.isArray(e)?v(e,4):void 0,I=(e,t=8)=>{let i=e?.[u]??e?.[g];if(!i?.length)return;let o=(0,n.bo)(i).split(/\s+/).filter(Boolean);if(o.length)return o.length>t?`${o.slice(0,t).join(" ")}…`:o.join(" ")},w=(e,t,i="localeTitle")=>{let n=t?`${t} - `:"";if(!e.localeTitle)return n+"draft";let o=e?.[i]?.[u]||e?.[i]?.[g]||"draft";return"object"==typeof o&&"current"in o?n+o.current:n+o}},65135:(e,t,i)=>{"use strict";i.d(t,{C5:()=>h,DT:()=>I,Fg:()=>a,IB:()=>l,JJ:()=>g,QU:()=>b,Zd:()=>s,q:()=>r,vj:()=>c,zC:()=>v});var n=i(38721),o=i(23378);let a=["fi","cz","sk","ee"],l=["fi","fi-en","cz","cz-en","sk","sk-en","ee","ee-en"],r="cz",s=e=>l.includes(e),c={cz:"cs","cz-en":"en",sk:"sk","sk-en":"en",fi:"fi","fi-en":"en",ee:"et","ee-en":"en"},p="https://lstracker.ruokaboksi.fi",d="https://tralut.ruokaboksi.fi",m="LS-31563842-5",u="LS-42780797-8",g=e=>{let t=e.slice(0,2).toUpperCase(),i=n.mn.find(e=>e.countryCode===t),o=n.Q0.find(e=>e.id===i?.market);if(!i||!o)throw Error(`Unsupported country for locale: ${e}`);return{country:t,countryProperties:i,marketProperties:o,language:c[e]}},h=[{domain:"ruokaboksi.fi",defaultLocale:"fi",locales:["fi","fi-en"],tracklutionContainerId:[m,u],tracklutionContainerDomain:[p,d]},{domain:"yummybox.cz",defaultLocale:"cz",locales:["cz","cz-en"],tracklutionContainerId:["LS-34494794-8"],tracklutionContainerDomain:["https://tralut.yummybox.cz"]},{domain:"yummybox.ee",defaultLocale:"ee",locales:["ee","ee-en"],tracklutionContainerId:["LS-82899778-4"],tracklutionContainerDomain:["https://tralut.yummybox.ee"]},{domain:"yummybox.sk",defaultLocale:"sk",locales:["sk","sk-en"],tracklutionContainerId:["LS-59573727-0"],tracklutionContainerDomain:["https://tralut.yummybox.sk"]}],y=new Set(Object.values({"ruokaboksi-local":"local","ruokaboksi-staging":"staging","ruokaboksi-e2e":"e2e","ruokaboksi-dev":"dev","ruokaboksi-production":"production"})),f=(e=>{for(let{domain:t}of h){if(e===t)return"production";if(e.endsWith(`.${t}`)){let i=e.slice(0,-t.length-1);return y.has(i)?i:"production"}}return"local"})(window.location.hostname);"local"!==f&&"production"!==f&&h.forEach(e=>{e.domain=`${f}.${e.domain}`});let v=e=>{let t=h.find(t=>t.domain===e);return t?.tracklutionContainerId??[m,u]},b=e=>{let t=h.find(t=>t.domain===e);return t?.tracklutionContainerDomain??[p,d]},I=(0,o.A)({locales:l,defaultLocale:r,localePrefix:"as-needed",pathnames:{"/":"/","/[pageSlug]":"/[pageSlug]","/blog":{fi:"/blogi","fi-en":"/blog",cz:"/blog","cz-en":"/blog",sk:"/blog","sk-en":"/blog",ee:"/blog","ee-en":"/blog"},"/blog/[postSlug]":{fi:"/blogi/[postSlug]","fi-en":"/blog/[postSlug]",cz:"/blog/[postSlug]","cz-en":"/blog/[postSlug]",sk:"/blog/[postSlug]","sk-en":"/blog/[postSlug]",ee:"/blog/[postSlug]","ee-en":"/blog/[postSlug]"},"/categories":{fi:"/kategoriat","fi-en":"/categories",cz:"/kategorie","cz-en":"/categories",sk:"/kategorie","sk-en":"/categories",ee:"/kategooriad","ee-en":"/categories"},"/categories/[slug]":{fi:"/kategoriat/[slug]","fi-en":"/categories/[slug]",cz:"/kategorie/[slug]","cz-en":"/categories/[slug]",sk:"/kategorie/[slug]","sk-en":"/categories/[slug]",ee:"/kategooriad/[slug]","ee-en":"/categories/[slug]"},"/recipes":{fi:"/reseptit","fi-en":"/recipes",cz:"/recepty","cz-en":"/recipes",sk:"/recepty","sk-en":"/recipes",ee:"/retseptid","ee-en":"/recipes"},"/recipes/[recipeSku]":{fi:"/reseptit/[recipeSku]","fi-en":"/recipes/[recipeSku]",cz:"/recepty/[recipeSku]","cz-en":"/recipes/[recipeSku]",sk:"/recepty/[recipeSku]","sk-en":"/recipes/[recipeSku]",ee:"/retseptid/[recipeSku]","ee-en":"/recipes/[recipeSku]"}},..."local"===f?{}:{domains:h},localeDetection:!1,localeCookie:!1})},71863:(e,t,i)=>{"use strict";i.d(t,{EL:()=>s,Lg:()=>l,RT:()=>a,XV:()=>r});var n=i(332);function o(e,t){if(void 0===e)throw Error(t);return e}let a=o("production","Missing environment variable: NEXT_PUBLIC_WEBSITE_SANITY_DATASET"),l=o("nmd0pjan","Missing environment variable: NEXT_PUBLIC_WEBSITE_SANITY_PROJECT_ID"),r=n.env.NEXT_PUBLIC_SANITY_API_VERSION||"2024-02-28",s="/studio"},90402:(e,t,i)=>{"use strict";let n;i.d(t,{a:()=>a,c:()=>l,f:()=>r,i:()=>c,m:()=>o,n:()=>p,r:()=>d,s:()=>s});let o=[{id:"FIN",title:"Suomi",countries:[{name:"Finland",countryCode:"FI",market:"FIN",defaultLanguage:{name:"finnish",languageCode:"fi"},languages:[{name:"finnish",languageCode:"fi",websiteLocalePath:"",giftCardRedeemLink:"https://edut.ruokaboksi.fi/w8JNMO"}],email:"[email protected]",website:"ruokaboksi.fi",phone:"09 425 77899",currency:"EUR",phoneCountryCode:"+358",loyaltyProgramName:"Kokkiklubi"}],defaultCountry:"FI",brandName:"Ruokaboksi"},{id:"CZE",title:"Czechia",countries:[{name:"Czechia",countryCode:"CZ",market:"CZE",defaultLanguage:{name:"czech",languageCode:"cs"},languages:[{name:"czech",languageCode:"cs",websiteLocalePath:"",giftCardRedeemLink:""},{name:"english",languageCode:"en",websiteLocalePath:"/cz-en",giftCardRedeemLink:""}],email:"[email protected]",website:"yummybox.cz",phone:"+420 910 920 120",currency:"CZK",phoneCountryCode:"+420",loyaltyProgramName:""},{name:"Slovakia",countryCode:"SK",market:"CZE",defaultLanguage:{name:"slovak",languageCode:"sk"},languages:[{name:"slovak",languageCode:"sk",websiteLocalePath:"",giftCardRedeemLink:""},{name:"english",languageCode:"en",websiteLocalePath:"/sk-en",giftCardRedeemLink:""}],email:"[email protected]",website:"yummybox.sk",phone:"+420 910 920 120",currency:"EUR",phoneCountryCode:"+421",loyaltyProgramName:""}],defaultCountry:"CZ",brandName:"Yummy"},{id:"EST",title:"Estonia",countries:[{name:"Estonia",countryCode:"EE",market:"EST",defaultLanguage:{name:"estonian",languageCode:"et"},languages:[{name:"estonian",languageCode:"et",websiteLocalePath:"",giftCardRedeemLink:""},{name:"english",languageCode:"en",websiteLocalePath:"/ee-en",giftCardRedeemLink:""}],email:"[email protected]",website:"yummybox.ee",phone:"",currency:"EUR",phoneCountryCode:"+372",loyaltyProgramName:""}],defaultCountry:"EE",brandName:"Yummy"}],a=o.flatMap(e=>e.countries.map(e=>e)),l=a.map(e=>e.countryCode),r=a.flatMap(e=>e.languages.map(e=>e)).map(e=>e.languageCode),s=o.map(e=>e.id),c={fi:"fi-FI",en:"en-GB",cs:"cs-CZ",et:"et-EE",sk:"sk-SK"};a.filter(e=>!!e.loyaltyProgramName).map(e=>e.countryCode);let p=(n=[...new Set(a.map(e=>e.phoneCountryCode)),"+436"].map(e=>e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&")).join("|"),RegExp(`^(?=.{7,16}$)(?:${n})[0-9 ]+$`)),d=/^(?:\d{5}|\d{3}\s\d{2})$/}}]);
33//# chunkId=01a0f74a-a0e1-7b00-bba8-19bc6f3f8564

Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.