diff --git a/ops/demo/image-prompts-v2.json b/ops/demo/image-prompts-v2.json new file mode 100644 index 0000000..36d1a00 --- /dev/null +++ b/ops/demo/image-prompts-v2.json @@ -0,0 +1,39 @@ +{ + "note": "Photos for the 34 training-catalog items that previously had none (banquet-v1 dishes, extras-v1 sets/supplies/delivery). Sourced from Pexels (free license, no attribution required) by search + manual visual review; two items (banquet-caprese, banquet-roastbeef) were AI-generated instead. Files live in public/demo/images/.webp, 1024x1024, resized/converted with sharp. Regenerate the catalog JSON with ops/demo/build-trial-banquet.mjs and ops/demo/build-trial-extras.mjs after editing the *-data.mjs sources.", + "items": [ + {"itemId": "demo-banquet-v1-caprese", "file": "banquet-caprese", "source": "ai-generated"}, + {"itemId": "demo-banquet-v1-roastbeef", "file": "banquet-roastbeef", "source": "ai-generated"}, + {"itemId": "demo-banquet-v1-salmon-roll", "file": "banquet-salmon-roll", "source": "pexels"}, + {"itemId": "demo-banquet-v1-hummus", "file": "banquet-hummus", "source": "pexels"}, + {"itemId": "demo-banquet-v1-caesar", "file": "banquet-caesar", "source": "pexels"}, + {"itemId": "demo-banquet-v1-olivier", "file": "banquet-olivier", "source": "pexels"}, + {"itemId": "demo-banquet-v1-greek", "file": "banquet-greek", "source": "pexels"}, + {"itemId": "demo-banquet-v1-julienne", "file": "banquet-julienne", "source": "pexels"}, + {"itemId": "demo-banquet-v1-stuffed-mushrooms", "file": "banquet-stuffed-mushrooms", "source": "pexels"}, + {"itemId": "demo-banquet-v1-chicken", "file": "banquet-chicken", "source": "pexels"}, + {"itemId": "demo-banquet-v1-cod", "file": "banquet-cod", "source": "pexels"}, + {"itemId": "demo-banquet-v1-beef-hot", "file": "banquet-beef-hot", "source": "pexels"}, + {"itemId": "demo-banquet-v1-mash", "file": "banquet-mash", "source": "pexels"}, + {"itemId": "demo-banquet-v1-rice", "file": "banquet-rice", "source": "pexels"}, + {"itemId": "demo-banquet-v1-berry-cream", "file": "banquet-berry-cream", "source": "pexels"}, + {"itemId": "demo-banquet-v1-cheese-honey", "file": "banquet-cheese-honey", "source": "pexels"}, + {"itemId": "demo-banquet-v1-fruit", "file": "banquet-fruit", "source": "pexels"}, + {"itemId": "demo-banquet-v1-bread", "file": "banquet-bread", "source": "pexels"}, + {"itemId": "demo-extras-v1-salmon-caprese", "file": "extras-salmon-caprese", "source": "pexels"}, + {"itemId": "demo-extras-v1-meat-cheese", "file": "extras-meat-cheese", "source": "pexels"}, + {"itemId": "demo-extras-v1-mini-buffet", "file": "extras-mini-buffet", "source": "pexels"}, + {"itemId": "demo-extras-v1-water", "file": "extras-water", "source": "pexels"}, + {"itemId": "demo-extras-v1-sparkling", "file": "extras-sparkling", "source": "pexels"}, + {"itemId": "demo-extras-v1-juice", "file": "extras-juice", "source": "pexels"}, + {"itemId": "demo-extras-v1-mors", "file": "extras-mors", "source": "pexels"}, + {"itemId": "demo-extras-v1-plate", "file": "extras-plate", "source": "pexels"}, + {"itemId": "demo-extras-v1-fork", "file": "extras-fork", "source": "pexels"}, + {"itemId": "demo-extras-v1-glass", "file": "extras-glass", "source": "pexels"}, + {"itemId": "demo-extras-v1-napkin", "file": "extras-napkin", "source": "pexels"}, + {"itemId": "demo-extras-v1-ice", "file": "extras-ice", "source": "pexels"}, + {"itemId": "demo-extras-v1-tablecloth", "file": "extras-tablecloth", "source": "pexels"}, + {"itemId": "demo-extras-v1-serving-kit", "file": "extras-serving-kit", "source": "pexels"}, + {"itemId": "demo-extras-v1-delivery-city", "file": "extras-delivery-city", "source": "pexels"}, + {"itemId": "demo-extras-v1-delivery-outer", "file": "extras-delivery-outer", "source": "pexels"} + ] +} diff --git a/ops/demo/trial-banquet-data.mjs b/ops/demo/trial-banquet-data.mjs index ed6432b..953870e 100644 --- a/ops/demo/trial-banquet-data.mjs +++ b/ops/demo/trial-banquet-data.mjs @@ -68,7 +68,7 @@ const recipes=[ export const banquet=recipes.map(([key,name,catalogSection,price,quantities,allergens,steps,waterGrams=0],index)=>{ const rows=quantities.map(([key,gross,net])=>{const p=products.get(key);return {productId:p.id,name:p.name,unit:p.unit,gross:gross/1000,net:net/1000,unitCost:p.cost}}); const outputGrams=Math.round(rows.reduce((sum,r)=>sum+r.net*1000,waterGrams)); - return {id:`demo-banquet-v1-${key}`,name,category:6,catalogSection,price,weight:`${outputGrams} г`,pieces:1,photo:'',demo:true, + return {id:`demo-banquet-v1-${key}`,name,category:6,catalogSection,price,weight:`${outputGrams} г`,pieces:1,photo:`demo/images/banquet-${key}.webp`,demo:true, composition:[rows.map(r=>r.name).join(', ')],ingredients:rows.map(r=>[r.name,r.gross,r.unit]), ttk:{number:`ДЕМО-Б${String(index+1).padStart(2,'0')}`,basis:'На 1 порцию / 1 гостя',outputGrams,waterGrams,pieces:1,rows,steps,allergens, ingredientCost:Math.round(rows.reduce((sum,r)=>sum+r.gross*r.unitCost,0)*100)/100, diff --git a/ops/demo/trial-extras-data.mjs b/ops/demo/trial-extras-data.mjs index b030fb6..db36806 100644 --- a/ops/demo/trial-extras-data.mjs +++ b/ops/demo/trial-extras-data.mjs @@ -10,7 +10,7 @@ const premium=mixes.map(([key,name,price,pieces,sourceIds],index)=>{ const sources=sourceIds.map(id=>boxes.find(b=>b.id===`demo-v1-${id}`)),map=new Map(); for(const b of sources)for(const r of b.ttk.rows){const old=map.get(r.productId)||{...r,gross:0,net:0};old.gross=round(old.gross+r.gross/2);old.net=round(old.net+r.net/2);map.set(r.productId,old)} const rows=[...map.values()],outputGrams=Math.round(rows.filter(r=>r.unit==='кг').reduce((s,r)=>s+r.net*1000,0)); - return {id:`demo-extras-v1-${key}`,name,category:5,catalogSection:'Демонстрационные премиум-сеты',price,pieces,weight:`${outputGrams} г`,photo:'',demo:true, + return {id:`demo-extras-v1-${key}`,name,category:5,catalogSection:'Демонстрационные премиум-сеты',price,pieces,weight:`${outputGrams} г`,photo:`demo/images/extras-${key}.webp`,demo:true, composition:sources.map(b=>'Половина стандартного бокса: '+b.name),ingredients:rows.map(r=>[r.name,r.gross,r.unit]), ttk:{number:`ДЕМО-П${index+1}`,basis:'На 1 готовый премиум-сет',outputGrams,pieces,rows, steps:['Приготовить две мини-подборки в половинном объёме по указанным нормам.',...sources.flatMap(b=>b.ttk.steps.map(s=>b.name+': '+s)),'Уложить обе подборки в одну общую коробку.'], @@ -31,6 +31,6 @@ const specs=[ ['serving-kit',2,'Набор для подачи: щипцы и лопатка',190,'Демо: набор щипцы и лопатка',85,'шт.','pack','Один комплект одноразовых приборов для подачи'] ]; const stock=specs.map(([key,category,name,price,productName,cost,unit,supplier])=>({id:`demo-extras-v1-stock-${key}`,name:productName,cost,unit,qty:0,min:unit==='кг'?1:10,supplierId:`demo-v1-supplier-${supplier}`,lastPurchaseDate:'',lastPurchasePrice:0})); -const packaged=specs.map(([key,category,name,price,productName,cost,unit,supplier,description])=>({id:`demo-extras-v1-${key}`,name,category,catalogSection:({1:'Одноразовая посуда',2:'Для сервировки',3:'Безалкогольные напитки'})[category],price,pieces:1,weight:key==='ice'?'1 кг':'',photo:'',composition:[description],ingredients:[[productName,1,unit]],demo:true})); -const delivery=[['city','Доставка по городу',600,'Учебный тариф за один адрес в пределах города.'],['outer','Доставка за город',1200,'Учебный тариф за один адрес в ближайшем пригороде.']].map(([key,name,price,note])=>({id:`demo-extras-v1-delivery-${key}`,name,category:4,catalogSection:'Учебные тарифы доставки',price,pieces:0,weight:'',photo:'',composition:[note],ingredients:[],demo:true})); +const packaged=specs.map(([key,category,name,price,productName,cost,unit,supplier,description])=>({id:`demo-extras-v1-${key}`,name,category,catalogSection:({1:'Одноразовая посуда',2:'Для сервировки',3:'Безалкогольные напитки'})[category],price,pieces:1,weight:key==='ice'?'1 кг':'',photo:`demo/images/extras-${key}.webp`,composition:[description],ingredients:[[productName,1,unit]],demo:true})); +const delivery=[['city','Доставка по городу',600,'Учебный тариф за один адрес в пределах города.'],['outer','Доставка за город',1200,'Учебный тариф за один адрес в ближайшем пригороде.']].map(([key,name,price,note])=>({id:`demo-extras-v1-delivery-${key}`,name,category:4,catalogSection:'Учебные тарифы доставки',price,pieces:0,weight:'',photo:`demo/images/extras-delivery-${key}.webp`,composition:[note],ingredients:[],demo:true})); export const extrasDemo={version:1,items:[...premium,...packaged,...delivery],stock}; diff --git a/public/core/training-catalog.js b/public/core/training-catalog.js index 9cdeb73..cf141c8 100644 --- a/public/core/training-catalog.js +++ b/public/core/training-catalog.js @@ -33,7 +33,7 @@ const controller=new AbortController(),timeout=setTimeout(()=>controller.abort(),15000); try{ const [base,banquet,extras]=await Promise.all(['catalog-v1','banquet-v1','extras-v1'].map(async name=>{ - const r=await fetch(`demo/${name}.json?v=20260920-training`,{signal:controller.signal,credentials:'same-origin'}); + const r=await fetch(`demo/${name}.json?v=20260922-training-photos`,{signal:controller.signal,credentials:'same-origin'}); if(!r.ok)throw new Error('Не удалось загрузить учебный каталог. Проверьте интернет и повторите.'); const value=await r.json();if(value?.version!==1)throw new Error('Неизвестная версия учебного каталога.');return value; })); diff --git a/public/demo/banquet-v1.json b/public/demo/banquet-v1.json index 6089894..f6029c9 100644 --- a/public/demo/banquet-v1.json +++ b/public/demo/banquet-v1.json @@ -9,7 +9,7 @@ "price": 290, "weight": "120 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-caprese.webp", "demo": true, "composition": [ "Моцарелла мини, Томаты, Базилик, Масло оливковое" @@ -95,7 +95,7 @@ "price": 390, "weight": "100 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-roastbeef.webp", "demo": true, "composition": [ "Ростбиф готовый, Корнишоны, Горчица, Сливки" @@ -182,7 +182,7 @@ "price": 350, "weight": "90 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-salmon-roll.webp", "demo": true, "composition": [ "Лосось слабосолёный, Сыр сливочный, Огурцы, Укроп" @@ -269,7 +269,7 @@ "price": 230, "weight": "160 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-hummus.webp", "demo": true, "composition": [ "Морковь, Огурцы, Перец сладкий, Хумус готовый" @@ -355,7 +355,7 @@ "price": 340, "weight": "180 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-caesar.webp", "demo": true, "composition": [ "Филе курицы готовое, Салат листовой, Томаты черри, Хлеб тостовый, Сыр гауда, Сливки, Горчица" @@ -483,7 +483,7 @@ "price": 280, "weight": "180 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-olivier.webp", "demo": true, "composition": [ "Картофель, Морковь, Ветчина из индейки, Яйцо куриное без скорлупы, Горошек зелёный консервированный, Корнишоны, Сливки, Горчица" @@ -624,7 +624,7 @@ "price": 290, "weight": "180 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-greek.webp", "demo": true, "composition": [ "Томаты, Огурцы, Перец сладкий, Моцарелла мини, Маслины без косточек, Масло оливковое" @@ -736,7 +736,7 @@ "price": 310, "weight": "130 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-julienne.webp", "demo": true, "composition": [ "Филе курицы готовое, Шампиньоны, Лук репчатый, Сливки, Сыр гауда, Масло оливковое" @@ -849,7 +849,7 @@ "price": 270, "weight": "120 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-stuffed-mushrooms.webp", "demo": true, "composition": [ "Шампиньоны, Сыр сливочный, Сыр гауда, Укроп, Масло оливковое" @@ -949,7 +949,7 @@ "price": 490, "weight": "220 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-chicken.webp", "demo": true, "composition": [ "Филе куриное сырое, Перец сладкий, Морковь, Сливки, Масло оливковое" @@ -1049,7 +1049,7 @@ "price": 590, "weight": "200 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-cod.webp", "demo": true, "composition": [ "Филе трески, Томаты, Перец сладкий, Лимон, Масло оливковое" @@ -1148,7 +1148,7 @@ "price": 690, "weight": "220 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-beef-hot.webp", "demo": true, "composition": [ "Ростбиф готовый, Шампиньоны, Лук репчатый, Сливки, Масло оливковое" @@ -1247,7 +1247,7 @@ "price": 160, "weight": "150 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-mash.webp", "demo": true, "composition": [ "Картофель, Молоко, Масло сливочное" @@ -1320,7 +1320,7 @@ "price": 170, "weight": "150 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-rice.webp", "demo": true, "composition": [ "Рис сухой, Морковь, Перец сладкий, Горошек зелёный консервированный, Масло оливковое" @@ -1417,7 +1417,7 @@ "price": 240, "weight": "110 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-berry-cream.webp", "demo": true, "composition": [ "Сыр сливочный, Сливки, Крошка бисквитная, Клубника, Голубика, Пудра сахарная" @@ -1531,7 +1531,7 @@ "price": 310, "weight": "100 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-cheese-honey.webp", "demo": true, "composition": [ "Сыр бри, Виноград, Орех грецкий очищенный, Мёд" @@ -1618,7 +1618,7 @@ "price": 290, "weight": "180 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-fruit.webp", "demo": true, "composition": [ "Виноград, Клубника, Голубика" @@ -1689,7 +1689,7 @@ "price": 120, "weight": "60 г", "pieces": 1, - "photo": "", + "photo": "demo/images/banquet-bread.webp", "demo": true, "composition": [ "Багет, Хлеб ржаной, Масло сливочное, Укроп" diff --git a/public/demo/extras-v1.json b/public/demo/extras-v1.json index 79896fe..c7b2270 100644 --- a/public/demo/extras-v1.json +++ b/public/demo/extras-v1.json @@ -9,7 +9,7 @@ "price": 3500, "pieces": 18, "weight": "710 г", - "photo": "", + "photo": "demo/images/extras-salmon-caprese.webp", "demo": true, "composition": [ "Половина стандартного бокса: Канапе с лососем и сливочным сыром", @@ -194,7 +194,7 @@ "price": 3900, "pieces": 0, "weight": "750 г", - "photo": "", + "photo": "demo/images/extras-meat-cheese.webp", "demo": true, "composition": [ "Половина стандартного бокса: Мясное ассорти с корнишонами", @@ -432,7 +432,7 @@ "price": 2900, "pieces": 22, "weight": "820 г", - "photo": "", + "photo": "demo/images/extras-mini-buffet.webp", "demo": true, "composition": [ "Половина стандартного бокса: Брускетты с томатами и базиликом", @@ -603,7 +603,7 @@ "price": 90, "pieces": 1, "weight": "", - "photo": "", + "photo": "demo/images/extras-water.webp", "composition": [ "Одна бутылка 0,5 л" ], @@ -624,7 +624,7 @@ "price": 100, "pieces": 1, "weight": "", - "photo": "", + "photo": "demo/images/extras-sparkling.webp", "composition": [ "Одна бутылка 0,5 л" ], @@ -645,7 +645,7 @@ "price": 220, "pieces": 1, "weight": "", - "photo": "", + "photo": "demo/images/extras-juice.webp", "composition": [ "Одна упаковка 1 л" ], @@ -666,7 +666,7 @@ "price": 280, "pieces": 1, "weight": "", - "photo": "", + "photo": "demo/images/extras-mors.webp", "composition": [ "Одна бутылка готового морса 1 л" ], @@ -687,7 +687,7 @@ "price": 25, "pieces": 1, "weight": "", - "photo": "", + "photo": "demo/images/extras-plate.webp", "composition": [ "Одна сервировочная тарелка" ], @@ -708,7 +708,7 @@ "price": 10, "pieces": 1, "weight": "", - "photo": "", + "photo": "demo/images/extras-fork.webp", "composition": [ "Одна вилка" ], @@ -729,7 +729,7 @@ "price": 15, "pieces": 1, "weight": "", - "photo": "", + "photo": "demo/images/extras-glass.webp", "composition": [ "Один стакан" ], @@ -750,7 +750,7 @@ "price": 10, "pieces": 1, "weight": "", - "photo": "", + "photo": "demo/images/extras-napkin.webp", "composition": [ "Одна бумажная салфетка" ], @@ -771,7 +771,7 @@ "price": 180, "pieces": 1, "weight": "1 кг", - "photo": "", + "photo": "demo/images/extras-ice.webp", "composition": [ "Один пакет пищевого льда, 1 кг" ], @@ -792,7 +792,7 @@ "price": 250, "pieces": 1, "weight": "", - "photo": "", + "photo": "demo/images/extras-tablecloth.webp", "composition": [ "Одна одноразовая скатерть 120 × 180 см" ], @@ -813,7 +813,7 @@ "price": 190, "pieces": 1, "weight": "", - "photo": "", + "photo": "demo/images/extras-serving-kit.webp", "composition": [ "Один комплект одноразовых приборов для подачи" ], @@ -834,7 +834,7 @@ "price": 600, "pieces": 0, "weight": "", - "photo": "", + "photo": "demo/images/extras-delivery-city.webp", "composition": [ "Учебный тариф за один адрес в пределах города." ], @@ -849,7 +849,7 @@ "price": 1200, "pieces": 0, "weight": "", - "photo": "", + "photo": "demo/images/extras-delivery-outer.webp", "composition": [ "Учебный тариф за один адрес в ближайшем пригороде." ], diff --git a/public/demo/images/banquet-beef-hot.webp b/public/demo/images/banquet-beef-hot.webp new file mode 100644 index 0000000..2905a98 Binary files /dev/null and b/public/demo/images/banquet-beef-hot.webp differ diff --git a/public/demo/images/banquet-berry-cream.webp b/public/demo/images/banquet-berry-cream.webp new file mode 100644 index 0000000..ed6f984 Binary files /dev/null and b/public/demo/images/banquet-berry-cream.webp differ diff --git a/public/demo/images/banquet-bread.webp b/public/demo/images/banquet-bread.webp new file mode 100644 index 0000000..53b6bb3 Binary files /dev/null and b/public/demo/images/banquet-bread.webp differ diff --git a/public/demo/images/banquet-caesar.webp b/public/demo/images/banquet-caesar.webp new file mode 100644 index 0000000..2957f2d Binary files /dev/null and b/public/demo/images/banquet-caesar.webp differ diff --git a/public/demo/images/banquet-caprese.webp b/public/demo/images/banquet-caprese.webp new file mode 100644 index 0000000..db174d4 Binary files /dev/null and b/public/demo/images/banquet-caprese.webp differ diff --git a/public/demo/images/banquet-cheese-honey.webp b/public/demo/images/banquet-cheese-honey.webp new file mode 100644 index 0000000..114c850 Binary files /dev/null and b/public/demo/images/banquet-cheese-honey.webp differ diff --git a/public/demo/images/banquet-chicken.webp b/public/demo/images/banquet-chicken.webp new file mode 100644 index 0000000..ed28b43 Binary files /dev/null and b/public/demo/images/banquet-chicken.webp differ diff --git a/public/demo/images/banquet-cod.webp b/public/demo/images/banquet-cod.webp new file mode 100644 index 0000000..b9d6e0e Binary files /dev/null and b/public/demo/images/banquet-cod.webp differ diff --git a/public/demo/images/banquet-fruit.webp b/public/demo/images/banquet-fruit.webp new file mode 100644 index 0000000..2515fce Binary files /dev/null and b/public/demo/images/banquet-fruit.webp differ diff --git a/public/demo/images/banquet-greek.webp b/public/demo/images/banquet-greek.webp new file mode 100644 index 0000000..f0a1d7b Binary files /dev/null and b/public/demo/images/banquet-greek.webp differ diff --git a/public/demo/images/banquet-hummus.webp b/public/demo/images/banquet-hummus.webp new file mode 100644 index 0000000..9e6ca68 Binary files /dev/null and b/public/demo/images/banquet-hummus.webp differ diff --git a/public/demo/images/banquet-julienne.webp b/public/demo/images/banquet-julienne.webp new file mode 100644 index 0000000..546c97b Binary files /dev/null and b/public/demo/images/banquet-julienne.webp differ diff --git a/public/demo/images/banquet-mash.webp b/public/demo/images/banquet-mash.webp new file mode 100644 index 0000000..e24f822 Binary files /dev/null and b/public/demo/images/banquet-mash.webp differ diff --git a/public/demo/images/banquet-olivier.webp b/public/demo/images/banquet-olivier.webp new file mode 100644 index 0000000..af7955c Binary files /dev/null and b/public/demo/images/banquet-olivier.webp differ diff --git a/public/demo/images/banquet-rice.webp b/public/demo/images/banquet-rice.webp new file mode 100644 index 0000000..55e5754 Binary files /dev/null and b/public/demo/images/banquet-rice.webp differ diff --git a/public/demo/images/banquet-roastbeef.webp b/public/demo/images/banquet-roastbeef.webp new file mode 100644 index 0000000..15728d2 Binary files /dev/null and b/public/demo/images/banquet-roastbeef.webp differ diff --git a/public/demo/images/banquet-salmon-roll.webp b/public/demo/images/banquet-salmon-roll.webp new file mode 100644 index 0000000..2b4ab30 Binary files /dev/null and b/public/demo/images/banquet-salmon-roll.webp differ diff --git a/public/demo/images/banquet-stuffed-mushrooms.webp b/public/demo/images/banquet-stuffed-mushrooms.webp new file mode 100644 index 0000000..4659c11 Binary files /dev/null and b/public/demo/images/banquet-stuffed-mushrooms.webp differ diff --git a/public/demo/images/extras-delivery-city.webp b/public/demo/images/extras-delivery-city.webp new file mode 100644 index 0000000..f7927e8 Binary files /dev/null and b/public/demo/images/extras-delivery-city.webp differ diff --git a/public/demo/images/extras-delivery-outer.webp b/public/demo/images/extras-delivery-outer.webp new file mode 100644 index 0000000..648deb0 Binary files /dev/null and b/public/demo/images/extras-delivery-outer.webp differ diff --git a/public/demo/images/extras-fork.webp b/public/demo/images/extras-fork.webp new file mode 100644 index 0000000..3ac9594 Binary files /dev/null and b/public/demo/images/extras-fork.webp differ diff --git a/public/demo/images/extras-glass.webp b/public/demo/images/extras-glass.webp new file mode 100644 index 0000000..c8ad6cd Binary files /dev/null and b/public/demo/images/extras-glass.webp differ diff --git a/public/demo/images/extras-ice.webp b/public/demo/images/extras-ice.webp new file mode 100644 index 0000000..94a3060 Binary files /dev/null and b/public/demo/images/extras-ice.webp differ diff --git a/public/demo/images/extras-juice.webp b/public/demo/images/extras-juice.webp new file mode 100644 index 0000000..0b96a9d Binary files /dev/null and b/public/demo/images/extras-juice.webp differ diff --git a/public/demo/images/extras-meat-cheese.webp b/public/demo/images/extras-meat-cheese.webp new file mode 100644 index 0000000..54ec053 Binary files /dev/null and b/public/demo/images/extras-meat-cheese.webp differ diff --git a/public/demo/images/extras-mini-buffet.webp b/public/demo/images/extras-mini-buffet.webp new file mode 100644 index 0000000..1d96e19 Binary files /dev/null and b/public/demo/images/extras-mini-buffet.webp differ diff --git a/public/demo/images/extras-mors.webp b/public/demo/images/extras-mors.webp new file mode 100644 index 0000000..622318b Binary files /dev/null and b/public/demo/images/extras-mors.webp differ diff --git a/public/demo/images/extras-napkin.webp b/public/demo/images/extras-napkin.webp new file mode 100644 index 0000000..a5e9677 Binary files /dev/null and b/public/demo/images/extras-napkin.webp differ diff --git a/public/demo/images/extras-plate.webp b/public/demo/images/extras-plate.webp new file mode 100644 index 0000000..37f8200 Binary files /dev/null and b/public/demo/images/extras-plate.webp differ diff --git a/public/demo/images/extras-salmon-caprese.webp b/public/demo/images/extras-salmon-caprese.webp new file mode 100644 index 0000000..3b0b921 Binary files /dev/null and b/public/demo/images/extras-salmon-caprese.webp differ diff --git a/public/demo/images/extras-serving-kit.webp b/public/demo/images/extras-serving-kit.webp new file mode 100644 index 0000000..9168ed9 Binary files /dev/null and b/public/demo/images/extras-serving-kit.webp differ diff --git a/public/demo/images/extras-sparkling.webp b/public/demo/images/extras-sparkling.webp new file mode 100644 index 0000000..611dc7c Binary files /dev/null and b/public/demo/images/extras-sparkling.webp differ diff --git a/public/demo/images/extras-tablecloth.webp b/public/demo/images/extras-tablecloth.webp new file mode 100644 index 0000000..ce5da97 Binary files /dev/null and b/public/demo/images/extras-tablecloth.webp differ diff --git a/public/demo/images/extras-water.webp b/public/demo/images/extras-water.webp new file mode 100644 index 0000000..6f25f60 Binary files /dev/null and b/public/demo/images/extras-water.webp differ diff --git a/public/index.html b/public/index.html index 358c7db..22ec061 100644 --- a/public/index.html +++ b/public/index.html @@ -1,4 +1,4 @@ -