@minimalcorp/meshi 0.2.1 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (34) hide show
  1. package/.next/standalone/apps/web/.next/BUILD_ID +1 -1
  2. package/.next/standalone/apps/web/.next/app-build-manifest.json +3 -3
  3. package/.next/standalone/apps/web/.next/build-manifest.json +2 -2
  4. package/.next/standalone/apps/web/.next/prerender-manifest.json +19 -19
  5. package/.next/standalone/apps/web/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  6. package/.next/standalone/apps/web/.next/server/app/_not-found.html +1 -1
  7. package/.next/standalone/apps/web/.next/server/app/_not-found.rsc +2 -2
  8. package/.next/standalone/apps/web/.next/server/app/dashboard/page.js +1 -1
  9. package/.next/standalone/apps/web/.next/server/app/dashboard/page_client-reference-manifest.js +1 -1
  10. package/.next/standalone/apps/web/.next/server/app/dashboard.html +1 -1
  11. package/.next/standalone/apps/web/.next/server/app/dashboard.rsc +3 -3
  12. package/.next/standalone/apps/web/.next/server/app/foods/page_client-reference-manifest.js +1 -1
  13. package/.next/standalone/apps/web/.next/server/app/foods.html +1 -1
  14. package/.next/standalone/apps/web/.next/server/app/foods.rsc +2 -2
  15. package/.next/standalone/apps/web/.next/server/app/goals/page_client-reference-manifest.js +1 -1
  16. package/.next/standalone/apps/web/.next/server/app/goals.html +1 -1
  17. package/.next/standalone/apps/web/.next/server/app/goals.rsc +2 -2
  18. package/.next/standalone/apps/web/.next/server/app/index.html +1 -1
  19. package/.next/standalone/apps/web/.next/server/app/index.rsc +3 -3
  20. package/.next/standalone/apps/web/.next/server/app/page.js +1 -1
  21. package/.next/standalone/apps/web/.next/server/app/page_client-reference-manifest.js +1 -1
  22. package/.next/standalone/apps/web/.next/server/pages/404.html +1 -1
  23. package/.next/standalone/apps/web/.next/server/pages/500.html +1 -1
  24. package/.next/standalone/apps/web/.next/server/server-reference-manifest.json +1 -1
  25. package/.next/standalone/apps/web/.next/static/chunks/app/dashboard/page-9a5eb095602175ec.js +1 -0
  26. package/.next/standalone/apps/web/.next/static/chunks/app/page-d1b424b60fbe8c18.js +1 -0
  27. package/.next/standalone/apps/web/.next/static/css/ac8e8f35825d92cd.css +1 -0
  28. package/.next/standalone/apps/web/package.json +1 -0
  29. package/package.json +1 -1
  30. package/.next/standalone/apps/web/.next/static/chunks/app/dashboard/page-887b35a12f9529d2.js +0 -1
  31. package/.next/standalone/apps/web/.next/static/chunks/app/page-88c5d1480f5849fe.js +0 -1
  32. package/.next/standalone/apps/web/.next/static/css/1affe5324d8176a9.css +0 -1
  33. /package/.next/standalone/apps/web/.next/static/{ZxT3BYruwHLcPbJZy9P5C → T9SmpQfgKTNd318PMZpYn}/_buildManifest.js +0 -0
  34. /package/.next/standalone/apps/web/.next/static/{ZxT3BYruwHLcPbJZy9P5C → T9SmpQfgKTNd318PMZpYn}/_ssgManifest.js +0 -0
@@ -1,2 +1,2 @@
1
- (()=>{var a={};a.id=974,a.ids=[974],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},967:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(5338),e=c(5530);function f(){return(0,d.jsx)(e.RecordEntry,{})}},1025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},1098:(a,b,c)=>{"use strict";c.d(b,{RecordEntry:()=>m});var d=c(1124),e=c(8301),f=c(5478);let g=["breakfast","lunch","dinner","snack"],h={breakfast:"朝食",lunch:"昼食",dinner:"夕食",snack:"間食"};var i=c(5668),j=c(2803);function k({record:a,onChanged:b}){let[c,k]=(0,e.useState)(!1),[l,m]=(0,e.useState)(a.name),[n,o]=(0,e.useState)(String(a.calories)),[p,q]=(0,e.useState)(a.mealType),[r,s]=(0,e.useState)((0,i.iI)(new Date(a.consumedAt))),[t,u]=(0,e.useState)(!1),[v,w]=(0,e.useState)(null);async function x(){u(!0),w(null);try{await f.Jp.update(a.id,{name:l,calories:Number(n),mealType:p,consumedAt:new Date(r).toISOString()}),k(!1),await b()}catch(a){w(String(a))}finally{u(!1)}}async function y(){u(!0);try{await f.Jp.remove(a.id),await b()}finally{u(!1)}}return c?(0,d.jsxs)("li",{className:"py-2 text-sm",children:[(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,d.jsx)(j.pd,{value:l,onChange:a=>m(a.target.value),placeholder:"食品名"}),(0,d.jsx)(j.pd,{type:"number",min:"0",value:n,onChange:a=>o(a.target.value),placeholder:"kcal"}),(0,d.jsx)(j.l6,{value:p,onChange:a=>q(a.target.value),children:g.map(a=>(0,d.jsx)("option",{value:a,children:h[a]},a))}),(0,d.jsx)(j.pd,{type:"datetime-local",value:r,onChange:a=>s(a.target.value)})]}),v&&(0,d.jsx)("p",{className:"mt-1 text-xs text-red-600",children:v}),(0,d.jsxs)("div",{className:"mt-2 flex gap-2",children:[(0,d.jsx)(j.$n,{onClick:x,disabled:t,children:t?"保存中…":"保存"}),(0,d.jsx)(j.$n,{variant:"ghost",onClick:()=>k(!1),disabled:t,children:"キャンセル"})]})]}):(0,d.jsxs)("li",{className:"flex items-center justify-between py-2 text-sm",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)("span",{className:"w-10 rounded bg-neutral-100 px-1 py-0.5 text-center text-xs text-neutral-600",children:h[a.mealType]}),(0,d.jsx)("span",{className:"text-neutral-400",children:(0,i.fU)(a.consumedAt)}),(0,d.jsx)("span",{className:"font-medium",children:a.name})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("span",{className:"tabular-nums",children:[a.calories," kcal"]}),(0,d.jsx)(j.$n,{variant:"ghost",onClick:function(){m(a.name),o(String(a.calories)),q(a.mealType),s((0,i.iI)(new Date(a.consumedAt))),w(null),k(!0)},disabled:t,children:"編集"}),(0,d.jsx)(j.$n,{variant:"danger",onClick:y,disabled:t,children:"削除"})]})]})}function l(a){return"master"===a.kind?Math.round(a.perServing*a.quantity):a.calories}function m(){let[a,b]=(0,e.useState)([]),[c,m]=(0,e.useState)([]),[n,o]=(0,e.useState)(null),[p,q]=(0,e.useState)(!0),[r,s]=(0,e.useState)(null),[t,u]=(0,e.useState)("master"),[v,w]=(0,e.useState)(""),[x,y]=(0,e.useState)("1"),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)(""),[D,E]=(0,e.useState)([]),[F,G]=(0,e.useState)("breakfast"),[H,I]=(0,e.useState)((0,i.iI)(new Date)),[J,K]=(0,e.useState)(!1),L=(0,e.useRef)(0),M=()=>String(++L.current);async function N(){let a=new Date,[c,d,e]=await Promise.all([f.Mu.list(),f.Jp.list({from:(0,i.ol)(a).toISOString(),to:(0,i.D0)(a).toISOString()}),f.Pb.current()]);b(c),m(d),o(e),!v&&c.length>0&&w(c[0].id)}let O=(0,e.useMemo)(()=>c.reduce((a,b)=>a+b.calories,0),[c]),P=n?.dailyTarget??null,Q=P?Math.min(100,Math.round(O/P*100)):null,R=a.find(a=>a.id===v),S="master"===t&&R?Math.round(R.caloriesPerServing*(Number(x)||0)):null,T=(0,e.useMemo)(()=>D.reduce((a,b)=>a+l(b),0),[D]);async function U(){if(0===D.length)return void s("食品を追加してください");K(!0),s(null);try{let a=new Date(H).toISOString();await f.Jp.createBatch(D.map(b=>"master"===b.kind?{foodId:b.foodId,quantity:b.quantity,mealType:F,consumedAt:a}:{name:b.name,calories:b.calories,mealType:F,consumedAt:a})),E([]),await N()}catch(a){s(String(a))}finally{K(!1)}}return p?(0,d.jsx)("p",{className:"text-sm text-neutral-500",children:"読み込み中…"}):(0,d.jsxs)("div",{className:"space-y-6",children:[r&&(0,d.jsx)("div",{className:"rounded-md bg-red-50 px-3 py-2 text-sm text-red-700",children:r}),(0,d.jsxs)(j.Zp,{children:[(0,d.jsx)(j._x,{children:"今日の摂取"}),(0,d.jsxs)("div",{className:"flex items-end gap-2",children:[(0,d.jsx)("span",{className:"text-3xl font-bold",children:O.toLocaleString()}),(0,d.jsxs)("span",{className:"text-sm text-neutral-500",children:["kcal",P?` / 目標 ${P.toLocaleString()} kcal`:"(目標未設定)"]})]}),null!==Q&&(0,d.jsx)("div",{className:"mt-3 h-2 w-full overflow-hidden rounded-full bg-neutral-200",children:(0,d.jsx)("div",{className:`h-full ${O>(P??0)?"bg-red-500":"bg-emerald-500"}`,style:{width:`${Q}%`}})})]}),(0,d.jsxs)(j.Zp,{children:[(0,d.jsx)(j._x,{children:"記録する"}),(0,d.jsx)("p",{className:"mb-3 text-xs text-neutral-500",children:"食品を追加してから「まとめて記録」。米とサバ缶のように複数をまとめて1つの食事として登録できます。"}),(0,d.jsxs)("div",{className:"mb-3 flex gap-1 text-sm",children:[(0,d.jsx)("button",{type:"button",onClick:()=>u("master"),className:`rounded-md px-3 py-1 ${"master"===t?"bg-neutral-900 text-white":"bg-neutral-100"}`,children:"マスタから"}),(0,d.jsx)("button",{type:"button",onClick:()=>u("adhoc"),className:`rounded-md px-3 py-1 ${"adhoc"===t?"bg-neutral-900 text-white":"bg-neutral-100"}`,children:"その場で入力"})]}),(0,d.jsxs)("form",{onSubmit:function(b){if(b.preventDefault(),s(null),"master"===t){let b=a.find(a=>a.id===v);if(!b)return void s("食品を選択してください");E(a=>[...a,{key:M(),kind:"master",foodId:b.id,name:b.name,perServing:b.caloriesPerServing,quantity:Number(x)||1}])}else{if(!z.trim()||""===B)return void s("食品名とカロリーを入力してください");E(a=>[...a,{key:M(),kind:"adhoc",name:z.trim(),calories:Number(B)}]),A(""),C("")}},className:"grid grid-cols-2 gap-3",children:["master"===t?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"col-span-2",children:(0,d.jsx)(j.D0,{label:"食品",children:0===a.length?(0,d.jsx)("p",{className:"text-sm text-neutral-500",children:"食品マスタが空です。「食品マスタ」から登録してください。"}):(0,d.jsx)(j.l6,{value:v,onChange:a=>w(a.target.value),children:a.map(a=>(0,d.jsxs)("option",{value:a.id,children:[a.name,"(",a.caloriesPerServing," kcal",a.unitLabel?` / ${a.unitLabel}`:"",")"]},a.id))})})}),(0,d.jsx)(j.D0,{label:"数量",children:(0,d.jsx)(j.pd,{type:"number",step:"0.1",min:"0",value:x,onChange:a=>y(a.target.value)})}),(0,d.jsx)("div",{className:"flex items-end pb-1",children:(0,d.jsx)("p",{className:"text-sm text-neutral-500",children:null!==S?`= ${S} kcal`:""})})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(j.D0,{label:"食品名",children:(0,d.jsx)(j.pd,{value:z,onChange:a=>A(a.target.value)})}),(0,d.jsx)(j.D0,{label:"カロリー (kcal)",children:(0,d.jsx)(j.pd,{type:"number",min:"0",value:B,onChange:a=>C(a.target.value)})})]}),(0,d.jsx)("div",{className:"col-span-2",children:(0,d.jsx)(j.$n,{type:"submit",variant:"ghost",disabled:"master"===t&&0===a.length,children:"+ 食品を追加"})})]}),D.length>0&&(0,d.jsxs)("div",{className:"mt-3 rounded-lg border border-neutral-200 bg-neutral-50 p-3",children:[(0,d.jsx)("ul",{className:"divide-y divide-neutral-200",children:D.map(a=>(0,d.jsxs)("li",{className:"flex items-center justify-between py-1.5 text-sm",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"font-medium",children:a.name}),"master"===a.kind&&1!==a.quantity&&(0,d.jsxs)("span",{className:"ml-1 text-neutral-500",children:["\xd7",a.quantity]})]}),(0,d.jsxs)("span",{className:"flex items-center gap-3",children:[(0,d.jsxs)("span",{className:"tabular-nums text-neutral-600",children:[l(a)," kcal"]}),(0,d.jsx)("button",{type:"button",onClick:()=>{var b;return b=a.key,void E(a=>a.filter(a=>a.key!==b))},className:"rounded px-1.5 text-red-600 hover:bg-red-50","aria-label":"削除",children:"\xd7"})]})]},a.key))}),(0,d.jsxs)("div",{className:"mt-2 flex justify-between border-t border-neutral-200 pt-2 text-sm font-medium",children:[(0,d.jsxs)("span",{children:["合計(",D.length,"件)"]}),(0,d.jsxs)("span",{className:"tabular-nums",children:[T.toLocaleString()," kcal"]})]})]}),(0,d.jsxs)("div",{className:"mt-3 grid grid-cols-2 gap-3",children:[(0,d.jsx)(j.D0,{label:"区分",children:(0,d.jsx)(j.l6,{value:F,onChange:a=>G(a.target.value),children:g.map(a=>(0,d.jsx)("option",{value:a,children:h[a]},a))})}),(0,d.jsx)(j.D0,{label:"摂取日時",children:(0,d.jsx)(j.pd,{type:"datetime-local",value:H,onChange:a=>I(a.target.value)})}),(0,d.jsx)("div",{className:"col-span-2",children:(0,d.jsx)(j.$n,{type:"button",onClick:U,disabled:J||0===D.length,children:J?"記録中…":`まとめて記録${D.length>0?`(${D.length}件・${T.toLocaleString()} kcal)`:""}`})})]})]}),(0,d.jsxs)(j.Zp,{children:[(0,d.jsx)(j._x,{children:"今日の記録"}),0===c.length?(0,d.jsx)("p",{className:"text-sm text-neutral-500",children:"まだ記録がありません。"}):(0,d.jsx)("ul",{className:"divide-y divide-neutral-100",children:c.map(a=>(0,d.jsx)(k,{record:a,onChanged:N},a.id))})]})]})}},1135:()=>{},1472:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i,metadata:()=>g});var d=c(5338),e=c(5169),f=c.n(e);c(1135);let g={title:"meshi — カロリー記録",description:"摂取カロリーを記録し、目標に対する進捗を可視化するツール"},h=[{href:"/",label:"ホーム"},{href:"/dashboard",label:"ダッシュボード"},{href:"/foods",label:"食品マスタ"},{href:"/goals",label:"目標"}];function i({children:a}){return(0,d.jsx)("html",{lang:"ja",children:(0,d.jsx)("body",{children:(0,d.jsxs)("div",{className:"mx-auto max-w-3xl px-4 pb-16",children:[(0,d.jsxs)("header",{className:"flex items-center justify-between py-5",children:[(0,d.jsx)(f(),{href:"/",className:"text-xl font-bold tracking-tight",children:"\uD83C\uDF5A meshi"}),(0,d.jsx)("nav",{className:"flex gap-1 text-sm",children:h.map(a=>(0,d.jsx)(f(),{href:a.href,className:"rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900",children:a.label},a.href))})]}),(0,d.jsx)("main",{children:a})]})})})}},1655:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,3991,23))},2803:(a,b,c)=>{"use strict";c.d(b,{$n:()=>g,D0:()=>j,Zp:()=>e,_x:()=>f,l6:()=>i,pd:()=>h});var d=c(1124);function e({children:a,className:b=""}){return(0,d.jsx)("div",{className:`rounded-xl border border-neutral-200 bg-white p-5 shadow-sm ${b}`,children:a})}function f({children:a}){return(0,d.jsx)("h2",{className:"mb-3 text-base font-semibold text-neutral-800",children:a})}function g({children:a,variant:b="primary",className:c="",...e}){return(0,d.jsx)("button",{className:`rounded-md px-3 py-1.5 text-sm font-medium transition disabled:cursor-not-allowed ${{primary:"bg-neutral-900 text-white hover:bg-neutral-700 disabled:bg-neutral-400",ghost:"bg-neutral-100 text-neutral-700 hover:bg-neutral-200",danger:"text-red-600 hover:bg-red-50"}[b]} ${c}`,...e,children:a})}function h(a){return(0,d.jsx)("input",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...a})}function i(a){return(0,d.jsx)("select",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...a})}function j({label:a,children:b}){return(0,d.jsxs)("label",{className:"block",children:[(0,d.jsx)("span",{className:"mb-1 block text-xs font-medium text-neutral-500",children:a}),b]})}},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3407:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,5169,23))},5478:(a,b,c)=>{"use strict";async function d(a,b){let c=await fetch(`${a}`,{cache:"no-store",...b,headers:{...b?.body!=null?{"content-type":"application/json"}:{},...b?.headers}});if(!c.ok){let b="";try{b=JSON.stringify(await c.json())}catch{}throw Error(`API ${c.status} ${a} ${b}`)}if(204!==c.status)return c.json()}c.d(b,{Jp:()=>f,Mu:()=>e,Pb:()=>g,XR:()=>h});let e={list:(a=!1)=>d(`/api/foods${a?"?includeArchived=true":""}`),create:a=>d("/api/foods",{method:"POST",body:JSON.stringify(a)}),update:(a,b)=>d(`/api/foods/${a}`,{method:"PATCH",body:JSON.stringify(b)})},f={list:a=>{let b=new URLSearchParams;a?.from&&b.set("from",a.from),a?.to&&b.set("to",a.to),a?.mealType&&b.set("mealType",a.mealType);let c=b.toString();return d(`/api/records${c?`?${c}`:""}`)},create:a=>d("/api/records",{method:"POST",body:JSON.stringify(a)}),createBatch:a=>d("/api/records/batch",{method:"POST",body:JSON.stringify({items:a})}),update:(a,b)=>d(`/api/records/${a}`,{method:"PATCH",body:JSON.stringify(b)}),remove:a=>d(`/api/records/${a}`,{method:"DELETE"})},g={list:()=>d("/api/goals"),current:()=>d("/api/goals/current"),create:a=>d("/api/goals",{method:"POST",body:JSON.stringify(a)}),remove:a=>d(`/api/goals/${a}`,{method:"DELETE"})},h={get:(a,b)=>{let c=new URLSearchParams({period:a});return b&&c.set("date",b),d(`/api/summary?${c.toString()}`)}}},5530:(a,b,c)=>{"use strict";c.d(b,{RecordEntry:()=>d});let d=(0,c(7954).registerClientReference)(function(){throw Error("Attempted to call RecordEntry() from the server but RecordEntry is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/meshi/meshi/apps/web/src/components/RecordEntry.tsx","RecordEntry")},5637:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,1170,23)),Promise.resolve().then(c.t.bind(c,3597,23)),Promise.resolve().then(c.t.bind(c,6893,23)),Promise.resolve().then(c.t.bind(c,9748,23)),Promise.resolve().then(c.t.bind(c,6060,23)),Promise.resolve().then(c.t.bind(c,7184,23)),Promise.resolve().then(c.t.bind(c,9576,23)),Promise.resolve().then(c.t.bind(c,3041,23)),Promise.resolve().then(c.t.bind(c,1384,23))},5668:(a,b,c)=>{"use strict";function d(a){let b=a.getFullYear(),c=String(a.getMonth()+1).padStart(2,"0"),d=String(a.getDate()).padStart(2,"0");return`${b}-${c}-${d}`}function e(a){let b=new Date(a);return b.setHours(0,0,0,0),b}function f(a){let b=e(a);return b.setDate(b.getDate()+1),b}function g(a){let b=a.getTimezoneOffset();return new Date(a.getTime()-6e4*b).toISOString().slice(0,16)}function h(a){let b=new Date(a);return`${String(b.getHours()).padStart(2,"0")}:${String(b.getMinutes()).padStart(2,"0")}`}c.d(b,{D0:()=>f,JN:()=>d,fU:()=>h,iI:()=>g,ol:()=>e})},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6703:(a,b,c)=>{Promise.resolve().then(c.bind(c,1098))},6713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},7493:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,4160,23)),Promise.resolve().then(c.t.bind(c,1603,23)),Promise.resolve().then(c.t.bind(c,8495,23)),Promise.resolve().then(c.t.bind(c,5170,23)),Promise.resolve().then(c.t.bind(c,7526,23)),Promise.resolve().then(c.t.bind(c,8922,23)),Promise.resolve().then(c.t.bind(c,9234,23)),Promise.resolve().then(c.t.bind(c,2263,23)),Promise.resolve().then(c.bind(c,2146))},8354:a=>{"use strict";a.exports=require("util")},8820:(a,b,c)=>{Promise.resolve().then(c.bind(c,5530))},9121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},9294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},9404:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>E.a,__next_app__:()=>K,handler:()=>M,pages:()=>J,routeModule:()=>L,tree:()=>I});var d=c(9754),e=c(9117),f=c(6595),g=c(2324),h=c(9326),i=c(8928),j=c(175),k=c(12),l=c(4290),m=c(2696),n=c(2574),o=c(2802),p=c(7533),q=c(5229),r=c(2822),s=c(261),t=c(6453),u=c(2474),v=c(6713),w=c(1356),x=c(2685),y=c(6225),z=c(3446),A=c(2762),B=c(5742),C=c(6439),D=c(1170),E=c.n(D),F=c(2506),G=c(1203),H={};for(let a in F)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(H[a]=()=>F[a]);c.d(b,H);let I=["",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,967)),"/home/runner/work/meshi/meshi/apps/web/src/app/page.tsx"]}]},{layout:[()=>Promise.resolve().then(c.bind(c,1472)),"/home/runner/work/meshi/meshi/apps/web/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,1170,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,7028,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,2768,23)),"next/dist/client/components/builtin/unauthorized.js"]}],J=["/home/runner/work/meshi/meshi/apps/web/src/app/page.tsx"],K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var D;let H="/page";"/index"===H&&(H="/");let N=(0,h.getRequestMeta)(a,"postponed"),O=(0,h.getRequestMeta)(a,"minimalMode"),P=await L.prepare(a,b,{srcPage:H,multiZoneDraftMode:!1});if(!P)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Q,query:R,params:S,parsedUrl:T,pageIsDynamic:U,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,serverActionsManifest:Y,clientReferenceManifest:Z,subresourceIntegrityManifest:$,prerenderManifest:_,isDraftMode:aa,resolvedPathname:ab,revalidateOnlyGenerated:ac,routerServerContext:ad,nextConfig:ae,interceptionRoutePatterns:af}=P,ag=T.pathname||"/",ah=(0,s.normalizeAppPath)(H),{isOnDemandRevalidate:ai}=P,aj=L.match(ag,_),ak=!!_.routes[ab],al=!!(aj||ak||_.routes[ah]),am=a.headers["user-agent"]||"",an=(0,v.getBotType)(am),ao=(0,q.isHtmlBotRequest)(a),ap=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[u.NEXT_ROUTER_PREFETCH_HEADER],aq=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[u.RSC_HEADER]),ar=(0,t.getIsPossibleServerAction)(a),as=(0,m.checkIsAppPPREnabled)(ae.experimental.ppr)&&(null==(D=_.routes[ah]??_.dynamicRoutes[ah])?void 0:D.renderingMode)==="PARTIALLY_STATIC",at=!1,au=!1,av=as?N:void 0,aw=as&&aq&&!ap,ax=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ay=!am||(0,q.shouldServeStreamingMetadata)(am,ae.htmlLimitedBots);ao&&as&&(al=!1,ay=!1);let az=!0===L.isDev||!al||"string"==typeof N||aw,aA=ao&&as,aB=null;aa||!al||az||ar||av||aw||(aB=ab);let aC=aB;!aC&&L.isDev&&(aC=ab),L.isDev||aa||!al||!aq||aw||(0,k.d)(a.headers);let aD={...F,tree:I,pages:J,GlobalError:E(),handler:M,routeModule:L,__next_app__:K};Y&&Z&&(0,p.setReferenceManifestsSingleton)({page:H,clientReferenceManifest:Z,serverActionsManifest:Y,serverModuleMap:(0,r.createServerModuleMap)({serverActionsManifest:Y})});let aE=a.method||"GET",aF=(0,g.getTracer)(),aG=aF.getActiveScopeSpan();try{let f=L.getVaryHeader(ab,af);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aF.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aE} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aE} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:R,params:S,page:ah,sharedContext:{buildId:Q},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aD,Component:(0,j.T)(aD),params:S,routeModule:L,page:H,postponed:f,shouldWaitOnAllReady:aA,serveStreamingMetadata:ay,supportsDynamicResponse:"string"==typeof f||az,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,subresourceIntegrityManifest:$,serverActionsManifest:Y,clientReferenceManifest:Z,setIsrStatus:null==ad?void 0:ad.setIsrStatus,dir:c(9902).join(process.cwd(),L.relativeProjectDir),isDraftMode:aa,isRevalidate:al&&!f&&!aw,botType:an,isOnDemandRevalidate:ai,isPossibleServerAction:ar,assetPrefix:ae.assetPrefix,nextConfigOutput:ae.output,crossOrigin:ae.crossOrigin,trailingSlash:ae.trailingSlash,previewProps:_.preview,deploymentId:ae.deploymentId,enableTainting:ae.experimental.taint,htmlLimitedBots:ae.htmlLimitedBots,devtoolSegmentExplorer:ae.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ae.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ae.experimental.cacheLife,basePath:ae.basePath,serverActions:ae.experimental.serverActions,...at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:at}:{},experimental:{isRoutePPREnabled:as,expireTime:ae.expireTime,staleTimes:ae.experimental.staleTimes,cacheComponents:!!ae.experimental.cacheComponents,clientSegmentCache:!!ae.experimental.clientSegmentCache,clientParamParsing:!!ae.experimental.clientParamParsing,dynamicOnHover:!!ae.experimental.dynamicOnHover,inlineCss:!!ae.experimental.inlineCss,authInterrupts:!!ae.experimental.authInterrupts,clientTraceMetadata:ae.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>L.onRequestError(a,b,d,ad),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[z.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,al&&(null==n?void 0:n.revalidate)===0&&!L.isDev&&!as){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ab}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
1
+ (()=>{var a={};a.id=974,a.ids=[974],a.modules={261:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/app-paths")},846:a=>{"use strict";a.exports=require("next/dist/compiled/next-server/app-page.runtime.prod.js")},967:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>f});var d=c(5338),e=c(5530);function f(){return(0,d.jsx)(e.RecordEntry,{})}},992:(a,b,c)=>{"use strict";c.d(b,{RecordEntry:()=>x});var d=c(1124),e=c(8301),f=c(5478);let g=["breakfast","lunch","dinner","snack"],h={breakfast:"朝食",lunch:"昼食",dinner:"夕食",snack:"間食"},i={breakfast:"bg-orange-100 text-orange-700",lunch:"bg-amber-100 text-amber-700",dinner:"bg-indigo-100 text-indigo-700",snack:"bg-emerald-100 text-emerald-700"};var j=c(5668),k=c(2803);let l=(...a)=>a.filter((a,b,c)=>!!a&&""!==a.trim()&&c.indexOf(a)===b).join(" ").trim(),m=a=>{let b=a.replace(/^([A-Z])|[\s-_]+(\w)/g,(a,b,c)=>c?c.toUpperCase():b.toLowerCase());return b.charAt(0).toUpperCase()+b.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let o=(0,e.createContext)({}),p=(0,e.forwardRef)(({color:a,size:b,strokeWidth:c,absoluteStrokeWidth:d,className:f="",children:g,iconNode:h,...i},j)=>{let{size:k=24,strokeWidth:m=2,absoluteStrokeWidth:p=!1,color:q="currentColor",className:r=""}=(0,e.useContext)(o)??{},s=d??p?24*Number(c??m)/Number(b??k):c??m;return(0,e.createElement)("svg",{ref:j,...n,width:b??k??n.width,height:b??k??n.height,stroke:a??q,strokeWidth:s,className:l("lucide",r,f),...!g&&!(a=>{for(let b in a)if(b.startsWith("aria-")||"role"===b||"title"===b)return!0;return!1})(i)&&{"aria-hidden":"true"},...i},[...h.map(([a,b])=>(0,e.createElement)(a,b)),...Array.isArray(g)?g:[g]])}),q=(a,b)=>{let c=(0,e.forwardRef)(({className:c,...d},f)=>(0,e.createElement)(p,{ref:f,iconNode:b,className:l(`lucide-${m(a).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${a}`,c),...d}));return c.displayName=m(a),c},r=q("sunrise",[["path",{d:"M12 2v8",key:"1q4o3n"}],["path",{d:"m4.93 10.93 1.41 1.41",key:"2a7f42"}],["path",{d:"M2 18h2",key:"j10viu"}],["path",{d:"M20 18h2",key:"wocana"}],["path",{d:"m19.07 10.93-1.41 1.41",key:"15zs5n"}],["path",{d:"M22 22H2",key:"19qnx5"}],["path",{d:"m8 6 4-4 4 4",key:"ybng9g"}],["path",{d:"M16 18a4 4 0 0 0-8 0",key:"1lzouq"}]]),s=q("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),t={breakfast:r,lunch:s,dinner:q("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),snack:q("soup",[["path",{d:"M12 21a9 9 0 0 0 9-9H3a9 9 0 0 0 9 9Z",key:"4rw317"}],["path",{d:"M7 21h10",key:"1b0cd5"}],["path",{d:"M19.5 12 22 6",key:"shfsr5"}],["path",{d:"M16.25 3c.27.1.8.53.75 1.36-.06.83-.93 1.2-1 2.02-.05.78.34 1.24.73 1.62",key:"rpc6vp"}],["path",{d:"M11.25 3c.27.1.8.53.74 1.36-.05.83-.93 1.2-.98 2.02-.06.78.33 1.24.72 1.62",key:"1lf63m"}],["path",{d:"M6.25 3c.27.1.8.53.75 1.36-.06.83-.93 1.2-1 2.02-.05.78.34 1.24.74 1.62",key:"97tijn"}]])};function u({mealType:a}){let b=t[a];return(0,d.jsxs)("span",{className:`inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs font-medium ${i[a]}`,children:[(0,d.jsx)(b,{size:12,"aria-hidden":!0}),h[a]]})}function v({record:a,onChanged:b}){let[c,i]=(0,e.useState)(!1),[l,m]=(0,e.useState)(a.name),[n,o]=(0,e.useState)(String(a.calories)),[p,q]=(0,e.useState)(a.mealType),[r,s]=(0,e.useState)((0,j.iI)(new Date(a.consumedAt))),[t,v]=(0,e.useState)(!1),[w,x]=(0,e.useState)(null);async function y(){v(!0),x(null);try{await f.Jp.update(a.id,{name:l,calories:Number(n),mealType:p,consumedAt:new Date(r).toISOString()}),i(!1),await b()}catch(a){x(String(a))}finally{v(!1)}}async function z(){v(!0);try{await f.Jp.remove(a.id),await b()}finally{v(!1)}}return c?(0,d.jsxs)("li",{className:"py-2 text-sm",children:[(0,d.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,d.jsx)(k.pd,{value:l,onChange:a=>m(a.target.value),placeholder:"食品名"}),(0,d.jsx)(k.pd,{type:"number",min:"0",value:n,onChange:a=>o(a.target.value),placeholder:"kcal"}),(0,d.jsx)(k.l6,{value:p,onChange:a=>q(a.target.value),children:g.map(a=>(0,d.jsx)("option",{value:a,children:h[a]},a))}),(0,d.jsx)(k.pd,{type:"datetime-local",value:r,onChange:a=>s(a.target.value)})]}),w&&(0,d.jsx)("p",{className:"mt-1 text-xs text-red-600",children:w}),(0,d.jsxs)("div",{className:"mt-2 flex gap-2",children:[(0,d.jsx)(k.$n,{onClick:y,disabled:t,children:t?"保存中…":"保存"}),(0,d.jsx)(k.$n,{variant:"ghost",onClick:()=>i(!1),disabled:t,children:"キャンセル"})]})]}):(0,d.jsxs)("li",{className:"flex items-center justify-between py-2 text-sm",children:[(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsx)(u,{mealType:a.mealType}),(0,d.jsx)("span",{className:"text-neutral-400",children:(0,j.fU)(a.consumedAt)}),(0,d.jsx)("span",{className:"font-medium",children:a.name})]}),(0,d.jsxs)("div",{className:"flex items-center gap-2",children:[(0,d.jsxs)("span",{className:"tabular-nums",children:[a.calories," kcal"]}),(0,d.jsx)(k.$n,{variant:"ghost",onClick:function(){m(a.name),o(String(a.calories)),q(a.mealType),s((0,j.iI)(new Date(a.consumedAt))),x(null),i(!0)},disabled:t,children:"編集"}),(0,d.jsx)(k.$n,{variant:"danger",onClick:z,disabled:t,children:"削除"})]})]})}function w(a){return"master"===a.kind?Math.round(a.perServing*a.quantity):a.calories}function x(){let[a,b]=(0,e.useState)([]),[c,i]=(0,e.useState)([]),[l,m]=(0,e.useState)(null),[n,o]=(0,e.useState)(!0),[p,q]=(0,e.useState)(null),[r,s]=(0,e.useState)("master"),[t,u]=(0,e.useState)(""),[x,y]=(0,e.useState)("1"),[z,A]=(0,e.useState)(""),[B,C]=(0,e.useState)(""),[D,E]=(0,e.useState)([]),[F,G]=(0,e.useState)("breakfast"),[H,I]=(0,e.useState)((0,j.iI)(new Date)),[J,K]=(0,e.useState)(!1),L=(0,e.useRef)(0),M=()=>String(++L.current);async function N(){let a=new Date,[c,d,e]=await Promise.all([f.Mu.list(),f.Jp.list({from:(0,j.ol)(a).toISOString(),to:(0,j.D0)(a).toISOString()}),f.Pb.current()]);b(c),i(d),m(e),!t&&c.length>0&&u(c[0].id)}let O=(0,e.useMemo)(()=>c.reduce((a,b)=>a+b.calories,0),[c]),P=l?.dailyTarget??null,Q=P?Math.min(100,Math.round(O/P*100)):null,R=a.find(a=>a.id===t),S="master"===r&&R?Math.round(R.caloriesPerServing*(Number(x)||0)):null,T=(0,e.useMemo)(()=>D.reduce((a,b)=>a+w(b),0),[D]);async function U(){if(0===D.length)return void q("食品を追加してください");K(!0),q(null);try{let a=new Date(H).toISOString();await f.Jp.createBatch(D.map(b=>"master"===b.kind?{foodId:b.foodId,quantity:b.quantity,mealType:F,consumedAt:a}:{name:b.name,calories:b.calories,mealType:F,consumedAt:a})),E([]),await N()}catch(a){q(String(a))}finally{K(!1)}}return n?(0,d.jsx)("p",{className:"text-sm text-neutral-500",children:"読み込み中…"}):(0,d.jsxs)("div",{className:"space-y-6",children:[p&&(0,d.jsx)("div",{className:"rounded-md bg-red-50 px-3 py-2 text-sm text-red-700",children:p}),(0,d.jsxs)(k.Zp,{children:[(0,d.jsx)(k._x,{children:"今日の摂取"}),(0,d.jsxs)("div",{className:"flex items-end gap-2",children:[(0,d.jsx)("span",{className:"text-3xl font-bold",children:O.toLocaleString()}),(0,d.jsxs)("span",{className:"text-sm text-neutral-500",children:["kcal",P?` / 目標 ${P.toLocaleString()} kcal`:"(目標未設定)"]})]}),null!==Q&&(0,d.jsx)("div",{className:"mt-3 h-2 w-full overflow-hidden rounded-full bg-neutral-200",children:(0,d.jsx)("div",{className:`h-full ${O>(P??0)?"bg-red-500":"bg-emerald-500"}`,style:{width:`${Q}%`}})})]}),(0,d.jsxs)(k.Zp,{children:[(0,d.jsx)(k._x,{children:"記録する"}),(0,d.jsx)("p",{className:"mb-3 text-xs text-neutral-500",children:"食品を追加してから「まとめて記録」。米とサバ缶のように複数をまとめて1つの食事として登録できます。"}),(0,d.jsxs)("div",{className:"mb-3 flex gap-1 text-sm",children:[(0,d.jsx)("button",{type:"button",onClick:()=>s("master"),className:`rounded-md px-3 py-1 ${"master"===r?"bg-neutral-900 text-white":"bg-neutral-100"}`,children:"マスタから"}),(0,d.jsx)("button",{type:"button",onClick:()=>s("adhoc"),className:`rounded-md px-3 py-1 ${"adhoc"===r?"bg-neutral-900 text-white":"bg-neutral-100"}`,children:"その場で入力"})]}),(0,d.jsxs)("form",{onSubmit:function(b){if(b.preventDefault(),q(null),"master"===r){let b=a.find(a=>a.id===t);if(!b)return void q("食品を選択してください");E(a=>[...a,{key:M(),kind:"master",foodId:b.id,name:b.name,perServing:b.caloriesPerServing,quantity:Number(x)||1}])}else{if(!z.trim()||""===B)return void q("食品名とカロリーを入力してください");E(a=>[...a,{key:M(),kind:"adhoc",name:z.trim(),calories:Number(B)}]),A(""),C("")}},className:"grid grid-cols-2 gap-3",children:["master"===r?(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)("div",{className:"col-span-2",children:(0,d.jsx)(k.D0,{label:"食品",children:0===a.length?(0,d.jsx)("p",{className:"text-sm text-neutral-500",children:"食品マスタが空です。「食品マスタ」から登録してください。"}):(0,d.jsx)(k.l6,{value:t,onChange:a=>u(a.target.value),children:a.map(a=>(0,d.jsxs)("option",{value:a.id,children:[a.name,"(",a.caloriesPerServing," kcal",a.unitLabel?` / ${a.unitLabel}`:"",")"]},a.id))})})}),(0,d.jsx)(k.D0,{label:"数量",children:(0,d.jsx)(k.pd,{type:"number",step:"0.1",min:"0",value:x,onChange:a=>y(a.target.value)})}),(0,d.jsx)("div",{className:"flex items-end pb-1",children:(0,d.jsx)("p",{className:"text-sm text-neutral-500",children:null!==S?`= ${S} kcal`:""})})]}):(0,d.jsxs)(d.Fragment,{children:[(0,d.jsx)(k.D0,{label:"食品名",children:(0,d.jsx)(k.pd,{value:z,onChange:a=>A(a.target.value)})}),(0,d.jsx)(k.D0,{label:"カロリー (kcal)",children:(0,d.jsx)(k.pd,{type:"number",min:"0",value:B,onChange:a=>C(a.target.value)})})]}),(0,d.jsx)("div",{className:"col-span-2",children:(0,d.jsx)(k.$n,{type:"submit",variant:"ghost",disabled:"master"===r&&0===a.length,children:"+ 食品を追加"})})]}),D.length>0&&(0,d.jsxs)("div",{className:"mt-3 rounded-lg border border-neutral-200 bg-neutral-50 p-3",children:[(0,d.jsx)("ul",{className:"divide-y divide-neutral-200",children:D.map(a=>(0,d.jsxs)("li",{className:"flex items-center justify-between py-1.5 text-sm",children:[(0,d.jsxs)("span",{children:[(0,d.jsx)("span",{className:"font-medium",children:a.name}),"master"===a.kind&&1!==a.quantity&&(0,d.jsxs)("span",{className:"ml-1 text-neutral-500",children:["\xd7",a.quantity]})]}),(0,d.jsxs)("span",{className:"flex items-center gap-3",children:[(0,d.jsxs)("span",{className:"tabular-nums text-neutral-600",children:[w(a)," kcal"]}),(0,d.jsx)("button",{type:"button",onClick:()=>{var b;return b=a.key,void E(a=>a.filter(a=>a.key!==b))},className:"rounded px-1.5 text-red-600 hover:bg-red-50","aria-label":"削除",children:"\xd7"})]})]},a.key))}),(0,d.jsxs)("div",{className:"mt-2 flex justify-between border-t border-neutral-200 pt-2 text-sm font-medium",children:[(0,d.jsxs)("span",{children:["合計(",D.length,"件)"]}),(0,d.jsxs)("span",{className:"tabular-nums",children:[T.toLocaleString()," kcal"]})]})]}),(0,d.jsxs)("div",{className:"mt-3 grid grid-cols-2 gap-3",children:[(0,d.jsx)(k.D0,{label:"区分",children:(0,d.jsx)(k.l6,{value:F,onChange:a=>G(a.target.value),children:g.map(a=>(0,d.jsx)("option",{value:a,children:h[a]},a))})}),(0,d.jsx)(k.D0,{label:"摂取日時",children:(0,d.jsx)(k.pd,{type:"datetime-local",value:H,onChange:a=>I(a.target.value)})}),(0,d.jsx)("div",{className:"col-span-2",children:(0,d.jsx)(k.$n,{type:"button",onClick:U,disabled:J||0===D.length,children:J?"記録中…":`まとめて記録${D.length>0?`(${D.length}件・${T.toLocaleString()} kcal)`:""}`})})]})]}),(0,d.jsxs)(k.Zp,{children:[(0,d.jsx)(k._x,{children:"今日の記録"}),0===c.length?(0,d.jsx)("p",{className:"text-sm text-neutral-500",children:"まだ記録がありません。"}):(0,d.jsx)("ul",{className:"divide-y divide-neutral-100",children:c.map(a=>(0,d.jsx)(v,{record:a,onChanged:N},a.id))})]})]})}},1025:a=>{"use strict";a.exports=require("next/dist/server/app-render/dynamic-access-async-storage.external.js")},1135:()=>{},1472:(a,b,c)=>{"use strict";c.r(b),c.d(b,{default:()=>i,metadata:()=>g});var d=c(5338),e=c(5169),f=c.n(e);c(1135);let g={title:"meshi — カロリー記録",description:"摂取カロリーを記録し、目標に対する進捗を可視化するツール"},h=[{href:"/",label:"ホーム"},{href:"/dashboard",label:"ダッシュボード"},{href:"/foods",label:"食品マスタ"},{href:"/goals",label:"目標"}];function i({children:a}){return(0,d.jsx)("html",{lang:"ja",children:(0,d.jsx)("body",{children:(0,d.jsxs)("div",{className:"mx-auto max-w-3xl px-4 pb-16",children:[(0,d.jsxs)("header",{className:"flex items-center justify-between py-5",children:[(0,d.jsx)(f(),{href:"/",className:"text-xl font-bold tracking-tight",children:"\uD83C\uDF5A meshi"}),(0,d.jsx)("nav",{className:"flex gap-1 text-sm",children:h.map(a=>(0,d.jsx)(f(),{href:a.href,className:"rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900",children:a.label},a.href))})]}),(0,d.jsx)("main",{children:a})]})})})}},1655:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,3991,23))},2803:(a,b,c)=>{"use strict";c.d(b,{$n:()=>g,D0:()=>j,Zp:()=>e,_x:()=>f,l6:()=>i,pd:()=>h});var d=c(1124);function e({children:a,className:b=""}){return(0,d.jsx)("div",{className:`rounded-xl border border-neutral-200 bg-white p-5 shadow-sm ${b}`,children:a})}function f({children:a}){return(0,d.jsx)("h2",{className:"mb-3 text-base font-semibold text-neutral-800",children:a})}function g({children:a,variant:b="primary",className:c="",...e}){return(0,d.jsx)("button",{className:`rounded-md px-3 py-1.5 text-sm font-medium transition disabled:cursor-not-allowed ${{primary:"bg-neutral-900 text-white hover:bg-neutral-700 disabled:bg-neutral-400",ghost:"bg-neutral-100 text-neutral-700 hover:bg-neutral-200",danger:"text-red-600 hover:bg-red-50"}[b]} ${c}`,...e,children:a})}function h(a){return(0,d.jsx)("input",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...a})}function i(a){return(0,d.jsx)("select",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...a})}function j({label:a,children:b}){return(0,d.jsxs)("label",{className:"block",children:[(0,d.jsx)("span",{className:"mb-1 block text-xs font-medium text-neutral-500",children:a}),b]})}},3033:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-unit-async-storage.external.js")},3295:a=>{"use strict";a.exports=require("next/dist/server/app-render/after-task-async-storage.external.js")},3407:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,5169,23))},5478:(a,b,c)=>{"use strict";async function d(a,b){let c=await fetch(`${a}`,{cache:"no-store",...b,headers:{...b?.body!=null?{"content-type":"application/json"}:{},...b?.headers}});if(!c.ok){let b="";try{b=JSON.stringify(await c.json())}catch{}throw Error(`API ${c.status} ${a} ${b}`)}if(204!==c.status)return c.json()}c.d(b,{Jp:()=>f,Mu:()=>e,Pb:()=>g,XR:()=>h});let e={list:(a=!1)=>d(`/api/foods${a?"?includeArchived=true":""}`),create:a=>d("/api/foods",{method:"POST",body:JSON.stringify(a)}),update:(a,b)=>d(`/api/foods/${a}`,{method:"PATCH",body:JSON.stringify(b)})},f={list:a=>{let b=new URLSearchParams;a?.from&&b.set("from",a.from),a?.to&&b.set("to",a.to),a?.mealType&&b.set("mealType",a.mealType);let c=b.toString();return d(`/api/records${c?`?${c}`:""}`)},create:a=>d("/api/records",{method:"POST",body:JSON.stringify(a)}),createBatch:a=>d("/api/records/batch",{method:"POST",body:JSON.stringify({items:a})}),update:(a,b)=>d(`/api/records/${a}`,{method:"PATCH",body:JSON.stringify(b)}),remove:a=>d(`/api/records/${a}`,{method:"DELETE"})},g={list:()=>d("/api/goals"),current:()=>d("/api/goals/current"),create:a=>d("/api/goals",{method:"POST",body:JSON.stringify(a)}),remove:a=>d(`/api/goals/${a}`,{method:"DELETE"})},h={get:(a,b)=>{let c=new URLSearchParams({period:a});return b&&c.set("date",b),d(`/api/summary?${c.toString()}`)}}},5530:(a,b,c)=>{"use strict";c.d(b,{RecordEntry:()=>d});let d=(0,c(7954).registerClientReference)(function(){throw Error("Attempted to call RecordEntry() from the server but RecordEntry is on the client. It's not possible to invoke a client function from the server, it can only be rendered as a Component or passed to props of a Client Component.")},"/home/runner/work/meshi/meshi/apps/web/src/components/RecordEntry.tsx","RecordEntry")},5637:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,1170,23)),Promise.resolve().then(c.t.bind(c,3597,23)),Promise.resolve().then(c.t.bind(c,6893,23)),Promise.resolve().then(c.t.bind(c,9748,23)),Promise.resolve().then(c.t.bind(c,6060,23)),Promise.resolve().then(c.t.bind(c,7184,23)),Promise.resolve().then(c.t.bind(c,9576,23)),Promise.resolve().then(c.t.bind(c,3041,23)),Promise.resolve().then(c.t.bind(c,1384,23))},5668:(a,b,c)=>{"use strict";function d(a){let b=a.getFullYear(),c=String(a.getMonth()+1).padStart(2,"0"),d=String(a.getDate()).padStart(2,"0");return`${b}-${c}-${d}`}function e(a){let b=new Date(a);return b.setHours(0,0,0,0),b}function f(a){let b=e(a);return b.setDate(b.getDate()+1),b}function g(a){let b=a.getTimezoneOffset();return new Date(a.getTime()-6e4*b).toISOString().slice(0,16)}function h(a){let b=new Date(a);return`${String(b.getHours()).padStart(2,"0")}:${String(b.getMinutes()).padStart(2,"0")}`}c.d(b,{D0:()=>f,JN:()=>d,fU:()=>h,iI:()=>g,ol:()=>e})},6439:a=>{"use strict";a.exports=require("next/dist/shared/lib/no-fallback-error.external")},6703:(a,b,c)=>{Promise.resolve().then(c.bind(c,992))},6713:a=>{"use strict";a.exports=require("next/dist/shared/lib/router/utils/is-bot")},7493:(a,b,c)=>{Promise.resolve().then(c.t.bind(c,4160,23)),Promise.resolve().then(c.t.bind(c,1603,23)),Promise.resolve().then(c.t.bind(c,8495,23)),Promise.resolve().then(c.t.bind(c,5170,23)),Promise.resolve().then(c.t.bind(c,7526,23)),Promise.resolve().then(c.t.bind(c,8922,23)),Promise.resolve().then(c.t.bind(c,9234,23)),Promise.resolve().then(c.t.bind(c,2263,23)),Promise.resolve().then(c.bind(c,2146))},8354:a=>{"use strict";a.exports=require("util")},8820:(a,b,c)=>{Promise.resolve().then(c.bind(c,5530))},9121:a=>{"use strict";a.exports=require("next/dist/server/app-render/action-async-storage.external.js")},9294:a=>{"use strict";a.exports=require("next/dist/server/app-render/work-async-storage.external.js")},9404:(a,b,c)=>{"use strict";c.r(b),c.d(b,{GlobalError:()=>E.a,__next_app__:()=>K,handler:()=>M,pages:()=>J,routeModule:()=>L,tree:()=>I});var d=c(9754),e=c(9117),f=c(6595),g=c(2324),h=c(9326),i=c(8928),j=c(175),k=c(12),l=c(4290),m=c(2696),n=c(2574),o=c(2802),p=c(7533),q=c(5229),r=c(2822),s=c(261),t=c(6453),u=c(2474),v=c(6713),w=c(1356),x=c(2685),y=c(6225),z=c(3446),A=c(2762),B=c(5742),C=c(6439),D=c(1170),E=c.n(D),F=c(2506),G=c(1203),H={};for(let a in F)0>["default","tree","pages","GlobalError","__next_app__","routeModule","handler"].indexOf(a)&&(H[a]=()=>F[a]);c.d(b,H);let I=["",{children:["__PAGE__",{},{page:[()=>Promise.resolve().then(c.bind(c,967)),"/home/runner/work/meshi/meshi/apps/web/src/app/page.tsx"]}]},{layout:[()=>Promise.resolve().then(c.bind(c,1472)),"/home/runner/work/meshi/meshi/apps/web/src/app/layout.tsx"],"global-error":[()=>Promise.resolve().then(c.t.bind(c,1170,23)),"next/dist/client/components/builtin/global-error.js"],"not-found":[()=>Promise.resolve().then(c.t.bind(c,7028,23)),"next/dist/client/components/builtin/not-found.js"],forbidden:[()=>Promise.resolve().then(c.t.bind(c,461,23)),"next/dist/client/components/builtin/forbidden.js"],unauthorized:[()=>Promise.resolve().then(c.t.bind(c,2768,23)),"next/dist/client/components/builtin/unauthorized.js"]}],J=["/home/runner/work/meshi/meshi/apps/web/src/app/page.tsx"],K={require:c,loadChunk:()=>Promise.resolve()},L=new d.AppPageRouteModule({definition:{kind:e.RouteKind.APP_PAGE,page:"/page",pathname:"/",bundlePath:"",filename:"",appPaths:[]},userland:{loaderTree:I},distDir:".next",relativeProjectDir:""});async function M(a,b,d){var D;let H="/page";"/index"===H&&(H="/");let N=(0,h.getRequestMeta)(a,"postponed"),O=(0,h.getRequestMeta)(a,"minimalMode"),P=await L.prepare(a,b,{srcPage:H,multiZoneDraftMode:!1});if(!P)return b.statusCode=400,b.end("Bad Request"),null==d.waitUntil||d.waitUntil.call(d,Promise.resolve()),null;let{buildId:Q,query:R,params:S,parsedUrl:T,pageIsDynamic:U,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,serverActionsManifest:Y,clientReferenceManifest:Z,subresourceIntegrityManifest:$,prerenderManifest:_,isDraftMode:aa,resolvedPathname:ab,revalidateOnlyGenerated:ac,routerServerContext:ad,nextConfig:ae,interceptionRoutePatterns:af}=P,ag=T.pathname||"/",ah=(0,s.normalizeAppPath)(H),{isOnDemandRevalidate:ai}=P,aj=L.match(ag,_),ak=!!_.routes[ab],al=!!(aj||ak||_.routes[ah]),am=a.headers["user-agent"]||"",an=(0,v.getBotType)(am),ao=(0,q.isHtmlBotRequest)(a),ap=(0,h.getRequestMeta)(a,"isPrefetchRSCRequest")??"1"===a.headers[u.NEXT_ROUTER_PREFETCH_HEADER],aq=(0,h.getRequestMeta)(a,"isRSCRequest")??(0,n.f)(a.headers[u.RSC_HEADER]),ar=(0,t.getIsPossibleServerAction)(a),as=(0,m.checkIsAppPPREnabled)(ae.experimental.ppr)&&(null==(D=_.routes[ah]??_.dynamicRoutes[ah])?void 0:D.renderingMode)==="PARTIALLY_STATIC",at=!1,au=!1,av=as?N:void 0,aw=as&&aq&&!ap,ax=(0,h.getRequestMeta)(a,"segmentPrefetchRSCRequest"),ay=!am||(0,q.shouldServeStreamingMetadata)(am,ae.htmlLimitedBots);ao&&as&&(al=!1,ay=!1);let az=!0===L.isDev||!al||"string"==typeof N||aw,aA=ao&&as,aB=null;aa||!al||az||ar||av||aw||(aB=ab);let aC=aB;!aC&&L.isDev&&(aC=ab),L.isDev||aa||!al||!aq||aw||(0,k.d)(a.headers);let aD={...F,tree:I,pages:J,GlobalError:E(),handler:M,routeModule:L,__next_app__:K};Y&&Z&&(0,p.setReferenceManifestsSingleton)({page:H,clientReferenceManifest:Z,serverActionsManifest:Y,serverModuleMap:(0,r.createServerModuleMap)({serverActionsManifest:Y})});let aE=a.method||"GET",aF=(0,g.getTracer)(),aG=aF.getActiveScopeSpan();try{let f=L.getVaryHeader(ab,af);b.setHeader("Vary",f);let k=async(c,d)=>{let e=new l.NodeNextRequest(a),f=new l.NodeNextResponse(b);return L.render(e,f,d).finally(()=>{if(!c)return;c.setAttributes({"http.status_code":b.statusCode,"next.rsc":!1});let d=aF.getRootSpanAttributes();if(!d)return;if(d.get("next.span_type")!==i.BaseServerSpan.handleRequest)return void console.warn(`Unexpected root span type '${d.get("next.span_type")}'. Please report this Next.js issue https://github.com/vercel/next.js`);let e=d.get("next.route");if(e){let a=`${aE} ${e}`;c.setAttributes({"next.route":e,"http.route":e,"next.span_name":a}),c.updateName(a)}else c.updateName(`${aE} ${a.url}`)})},m=async({span:e,postponed:f,fallbackRouteParams:g})=>{let i={query:R,params:S,page:ah,sharedContext:{buildId:Q},serverComponentsHmrCache:(0,h.getRequestMeta)(a,"serverComponentsHmrCache"),fallbackRouteParams:g,renderOpts:{App:()=>null,Document:()=>null,pageConfig:{},ComponentMod:aD,Component:(0,j.T)(aD),params:S,routeModule:L,page:H,postponed:f,shouldWaitOnAllReady:aA,serveStreamingMetadata:ay,supportsDynamicResponse:"string"==typeof f||az,buildManifest:V,nextFontManifest:W,reactLoadableManifest:X,subresourceIntegrityManifest:$,serverActionsManifest:Y,clientReferenceManifest:Z,setIsrStatus:null==ad?void 0:ad.setIsrStatus,dir:c(9902).join(process.cwd(),L.relativeProjectDir),isDraftMode:aa,isRevalidate:al&&!f&&!aw,botType:an,isOnDemandRevalidate:ai,isPossibleServerAction:ar,assetPrefix:ae.assetPrefix,nextConfigOutput:ae.output,crossOrigin:ae.crossOrigin,trailingSlash:ae.trailingSlash,previewProps:_.preview,deploymentId:ae.deploymentId,enableTainting:ae.experimental.taint,htmlLimitedBots:ae.htmlLimitedBots,devtoolSegmentExplorer:ae.experimental.devtoolSegmentExplorer,reactMaxHeadersLength:ae.reactMaxHeadersLength,multiZoneDraftMode:!1,incrementalCache:(0,h.getRequestMeta)(a,"incrementalCache"),cacheLifeProfiles:ae.experimental.cacheLife,basePath:ae.basePath,serverActions:ae.experimental.serverActions,...at?{nextExport:!0,supportsDynamicResponse:!1,isStaticGeneration:!0,isRevalidate:!0,isDebugDynamicAccesses:at}:{},experimental:{isRoutePPREnabled:as,expireTime:ae.expireTime,staleTimes:ae.experimental.staleTimes,cacheComponents:!!ae.experimental.cacheComponents,clientSegmentCache:!!ae.experimental.clientSegmentCache,clientParamParsing:!!ae.experimental.clientParamParsing,dynamicOnHover:!!ae.experimental.dynamicOnHover,inlineCss:!!ae.experimental.inlineCss,authInterrupts:!!ae.experimental.authInterrupts,clientTraceMetadata:ae.experimental.clientTraceMetadata||[]},waitUntil:d.waitUntil,onClose:a=>{b.on("close",a)},onAfterTaskError:()=>{},onInstrumentationRequestError:(b,c,d)=>L.onRequestError(a,b,d,ad),err:(0,h.getRequestMeta)(a,"invokeError"),dev:L.isDev}},l=await k(e,i),{metadata:m}=l,{cacheControl:n,headers:o={},fetchTags:p}=m;if(p&&(o[z.NEXT_CACHE_TAGS_HEADER]=p),a.fetchMetrics=m.fetchMetrics,al&&(null==n?void 0:n.revalidate)===0&&!L.isDev&&!as){let a=m.staticBailoutInfo,b=Object.defineProperty(Error(`Page changed from static to dynamic at runtime ${ab}${(null==a?void 0:a.description)?`, reason: ${a.description}`:""}
2
2
  see more here https://nextjs.org/docs/messages/app-static-to-dynamic-error`),"__NEXT_ERROR_CODE",{value:"E132",enumerable:!1,configurable:!0});if(null==a?void 0:a.stack){let c=a.stack;b.stack=b.message+c.substring(c.indexOf("\n"))}throw b}return{value:{kind:w.CachedRouteKind.APP_PAGE,html:l,headers:o,rscData:m.flightData,postponed:m.postponed,status:m.statusCode,segmentData:m.segmentData},cacheControl:n}},n=async({hasResolved:c,previousCacheEntry:f,isRevalidating:g,span:i})=>{let j,k=!1===L.isDev,l=c||b.writableEnded;if(ai&&ac&&!f&&!O)return(null==ad?void 0:ad.render404)?await ad.render404(a,b):(b.statusCode=404,b.end("This page could not be found")),null;if(aj&&(j=(0,x.parseFallbackField)(aj.fallback)),j===x.FallbackMode.PRERENDER&&(0,v.isBot)(am)&&(!as||ao)&&(j=x.FallbackMode.BLOCKING_STATIC_RENDER),(null==f?void 0:f.isStale)===-1&&(ai=!0),ai&&(j!==x.FallbackMode.NOT_FOUND||f)&&(j=x.FallbackMode.BLOCKING_STATIC_RENDER),!O&&j!==x.FallbackMode.BLOCKING_STATIC_RENDER&&aC&&!l&&!aa&&U&&(k||!ak)){let b;if((k||aj)&&j===x.FallbackMode.NOT_FOUND)throw new C.NoFallbackError;if(as&&!aq){let c="string"==typeof(null==aj?void 0:aj.fallback)?aj.fallback:k?ah:null;if(b=await L.handleResponse({cacheKey:c,req:a,nextConfig:ae,routeKind:e.RouteKind.APP_PAGE,isFallback:!0,prerenderManifest:_,isRoutePPREnabled:as,responseGenerator:async()=>m({span:i,postponed:void 0,fallbackRouteParams:k||au?(0,o.u)(ah):null}),waitUntil:d.waitUntil}),null===b)return null;if(b)return delete b.cacheControl,b}}let n=ai||g||!av?void 0:av;if(at&&void 0!==n)return{cacheControl:{revalidate:1,expire:void 0},value:{kind:w.CachedRouteKind.PAGES,html:y.default.EMPTY,pageData:{},headers:void 0,status:void 0}};let p=U&&as&&((0,h.getRequestMeta)(a,"renderFallbackShell")||au)?(0,o.u)(ag):null;return m({span:i,postponed:n,fallbackRouteParams:p})},p=async c=>{var f,g,i,j,k;let l,o=await L.handleResponse({cacheKey:aB,responseGenerator:a=>n({span:c,...a}),routeKind:e.RouteKind.APP_PAGE,isOnDemandRevalidate:ai,isRoutePPREnabled:as,req:a,nextConfig:ae,prerenderManifest:_,waitUntil:d.waitUntil});if(aa&&b.setHeader("Cache-Control","private, no-cache, no-store, max-age=0, must-revalidate"),L.isDev&&b.setHeader("Cache-Control","no-store, must-revalidate"),!o){if(aB)throw Object.defineProperty(Error("invariant: cache entry required but not generated"),"__NEXT_ERROR_CODE",{value:"E62",enumerable:!1,configurable:!0});return null}if((null==(f=o.value)?void 0:f.kind)!==w.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant app-page handler received invalid cache entry ${null==(i=o.value)?void 0:i.kind}`),"__NEXT_ERROR_CODE",{value:"E707",enumerable:!1,configurable:!0});let p="string"==typeof o.value.postponed;al&&!aw&&(!p||ap)&&(O||b.setHeader("x-nextjs-cache",ai?"REVALIDATED":o.isMiss?"MISS":o.isStale?"STALE":"HIT"),b.setHeader(u.NEXT_IS_PRERENDER_HEADER,"1"));let{value:q}=o;if(av)l={revalidate:0,expire:void 0};else if(O&&aq&&!ap&&as)l={revalidate:0,expire:void 0};else if(!L.isDev)if(aa)l={revalidate:0,expire:void 0};else if(al){if(o.cacheControl)if("number"==typeof o.cacheControl.revalidate){if(o.cacheControl.revalidate<1)throw Object.defineProperty(Error(`Invalid revalidate configuration provided: ${o.cacheControl.revalidate} < 1`),"__NEXT_ERROR_CODE",{value:"E22",enumerable:!1,configurable:!0});l={revalidate:o.cacheControl.revalidate,expire:(null==(j=o.cacheControl)?void 0:j.expire)??ae.expireTime}}else l={revalidate:z.CACHE_ONE_YEAR,expire:void 0}}else b.getHeader("Cache-Control")||(l={revalidate:0,expire:void 0});if(o.cacheControl=l,"string"==typeof ax&&(null==q?void 0:q.kind)===w.CachedRouteKind.APP_PAGE&&q.segmentData){b.setHeader(u.NEXT_DID_POSTPONE_HEADER,"2");let c=null==(k=q.headers)?void 0:k[z.NEXT_CACHE_TAGS_HEADER];O&&al&&c&&"string"==typeof c&&b.setHeader(z.NEXT_CACHE_TAGS_HEADER,c);let d=q.segmentData.get(ax);return void 0!==d?(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.fromStatic(d,u.RSC_CONTENT_TYPE_HEADER),cacheControl:o.cacheControl}):(b.statusCode=204,(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.EMPTY,cacheControl:o.cacheControl}))}let r=(0,h.getRequestMeta)(a,"onCacheEntry");if(r&&await r({...o,value:{...o.value,kind:"PAGE"}},{url:(0,h.getRequestMeta)(a,"initURL")}))return null;if(p&&av)throw Object.defineProperty(Error("Invariant: postponed state should not be present on a resume request"),"__NEXT_ERROR_CODE",{value:"E396",enumerable:!1,configurable:!0});if(q.headers){let a={...q.headers};for(let[c,d]of(O&&al||delete a[z.NEXT_CACHE_TAGS_HEADER],Object.entries(a)))if(void 0!==d)if(Array.isArray(d))for(let a of d)b.appendHeader(c,a);else"number"==typeof d&&(d=d.toString()),b.appendHeader(c,d)}let s=null==(g=q.headers)?void 0:g[z.NEXT_CACHE_TAGS_HEADER];if(O&&al&&s&&"string"==typeof s&&b.setHeader(z.NEXT_CACHE_TAGS_HEADER,s),!q.status||aq&&as||(b.statusCode=q.status),!O&&q.status&&G.RedirectStatusCode[q.status]&&aq&&(b.statusCode=200),p&&b.setHeader(u.NEXT_DID_POSTPONE_HEADER,"1"),aq&&!aa){if(void 0===q.rscData){if(q.postponed)throw Object.defineProperty(Error("Invariant: Expected postponed to be undefined"),"__NEXT_ERROR_CODE",{value:"E372",enumerable:!1,configurable:!0});return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:q.html,cacheControl:aw?{revalidate:0,expire:void 0}:o.cacheControl})}return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:y.default.fromStatic(q.rscData,u.RSC_CONTENT_TYPE_HEADER),cacheControl:o.cacheControl})}let t=q.html;if(!p||O||aq)return(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:o.cacheControl});if(at)return t.push(new ReadableStream({start(a){a.enqueue(A.ENCODED_TAGS.CLOSED.BODY_AND_HTML),a.close()}})),(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}});let v=new TransformStream;return t.push(v.readable),m({span:c,postponed:q.postponed,fallbackRouteParams:null}).then(async a=>{var b,c;if(!a)throw Object.defineProperty(Error("Invariant: expected a result to be returned"),"__NEXT_ERROR_CODE",{value:"E463",enumerable:!1,configurable:!0});if((null==(b=a.value)?void 0:b.kind)!==w.CachedRouteKind.APP_PAGE)throw Object.defineProperty(Error(`Invariant: expected a page response, got ${null==(c=a.value)?void 0:c.kind}`),"__NEXT_ERROR_CODE",{value:"E305",enumerable:!1,configurable:!0});await a.value.html.pipeTo(v.writable)}).catch(a=>{v.writable.abort(a).catch(a=>{console.error("couldn't abort transformer",a)})}),(0,B.sendRenderResult)({req:a,res:b,generateEtags:ae.generateEtags,poweredByHeader:ae.poweredByHeader,result:t,cacheControl:{revalidate:0,expire:void 0}})};if(!aG)return await aF.withPropagatedContext(a.headers,()=>aF.trace(i.BaseServerSpan.handleRequest,{spanName:`${aE} ${a.url}`,kind:g.SpanKind.SERVER,attributes:{"http.method":aE,"http.target":a.url}},p));await p(aG)}catch(b){throw b instanceof C.NoFallbackError||await L.onRequestError(a,b,{routerKind:"App Router",routePath:H,routeType:"render",revalidateReason:(0,f.c)({isRevalidate:al,isOnDemandRevalidate:ai})},ad),b}}},9902:a=>{"use strict";a.exports=require("path")}};var b=require("../webpack-runtime.js");b.C(a);var c=b.X(0,[102],()=>b(b.s=9404));module.exports=c})();
@@ -1 +1 @@
1
- globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"622":{"*":{"id":"2146","name":"*","chunks":[],"async":false}},"674":{"*":{"id":"1098","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"1603","name":"*","chunks":[],"async":false}},"2619":{"*":{"id":"3991","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"5170","name":"*","chunks":[],"async":false}},"3950":{"*":{"id":"8392","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"2263","name":"*","chunks":[],"async":false}},"4686":{"*":{"id":"6281","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"8922","name":"*","chunks":[],"async":false}},"5913":{"*":{"id":"2627","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"4160","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"8495","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9234","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"7526","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/app-dir/link.js":{"id":2619,"name":"*","chunks":["177","static/chunks/app/layout-c3fd07aa6dba82c3.js"],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/app-dir/link.js":{"id":2619,"name":"*","chunks":["177","static/chunks/app/layout-c3fd07aa6dba82c3.js"],"async":false},"/home/runner/work/meshi/meshi/apps/web/src/app/globals.css":{"id":3673,"name":"*","chunks":["177","static/chunks/app/layout-c3fd07aa6dba82c3.js"],"async":false},"/home/runner/work/meshi/meshi/apps/web/src/components/Dashboard.tsx":{"id":4686,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/src/components/FoodManager.tsx":{"id":3950,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/src/components/RecordEntry.tsx":{"id":674,"name":"*","chunks":["974","static/chunks/app/page-88c5d1480f5849fe.js"],"async":false},"/home/runner/work/meshi/meshi/apps/web/src/components/GoalManager.tsx":{"id":5913,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/meshi/meshi/apps/web/src/":[],"/home/runner/work/meshi/meshi/apps/web/src/app/layout":[{"inlined":false,"path":"static/css/1affe5324d8176a9.css"}],"/home/runner/work/meshi/meshi/apps/web/src/app/page":[]},"rscModuleMapping":{"622":{"*":{"id":"1384","name":"*","chunks":[],"async":false}},"674":{"*":{"id":"5530","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"3597","name":"*","chunks":[],"async":false}},"2619":{"*":{"id":"5169","name":"*","chunks":[],"async":false}},"3673":{"*":{"id":"1135","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"9748","name":"*","chunks":[],"async":false}},"3950":{"*":{"id":"4754","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"3041","name":"*","chunks":[],"async":false}},"4686":{"*":{"id":"4227","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"5913":{"*":{"id":"9193","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"1170","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"6893","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9576","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
1
+ globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/page"]={"moduleLoading":{"prefix":"/_next/"},"ssrModuleMapping":{"622":{"*":{"id":"2146","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"1603","name":"*","chunks":[],"async":false}},"2619":{"*":{"id":"3991","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"5170","name":"*","chunks":[],"async":false}},"3950":{"*":{"id":"8392","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"2263","name":"*","chunks":[],"async":false}},"4686":{"*":{"id":"6281","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"8922","name":"*","chunks":[],"async":false}},"5913":{"*":{"id":"2627","name":"*","chunks":[],"async":false}},"6305":{"*":{"id":"992","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"4160","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"8495","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9234","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"7526","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/builtin/global-error.js":{"id":7150,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/client-page.js":{"id":1959,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/client-segment.js":{"id":7989,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/http-access-fallback/error-boundary.js":{"id":3886,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/layout-router.js":{"id":9766,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/metadata/async-metadata.js":{"id":5278,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":8924,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/lib/framework/boundary-components.js":{"id":4431,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/lib/metadata/generate/icon-mark.js":{"id":622,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/client/app-dir/link.js":{"id":2619,"name":"*","chunks":["177","static/chunks/app/layout-c3fd07aa6dba82c3.js"],"async":false},"/home/runner/work/meshi/meshi/apps/web/node_modules/next/dist/esm/client/app-dir/link.js":{"id":2619,"name":"*","chunks":["177","static/chunks/app/layout-c3fd07aa6dba82c3.js"],"async":false},"/home/runner/work/meshi/meshi/apps/web/src/app/globals.css":{"id":3673,"name":"*","chunks":["177","static/chunks/app/layout-c3fd07aa6dba82c3.js"],"async":false},"/home/runner/work/meshi/meshi/apps/web/src/components/Dashboard.tsx":{"id":4686,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/src/components/FoodManager.tsx":{"id":3950,"name":"*","chunks":[],"async":false},"/home/runner/work/meshi/meshi/apps/web/src/components/RecordEntry.tsx":{"id":6305,"name":"*","chunks":["974","static/chunks/app/page-d1b424b60fbe8c18.js"],"async":false},"/home/runner/work/meshi/meshi/apps/web/src/components/GoalManager.tsx":{"id":5913,"name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/home/runner/work/meshi/meshi/apps/web/src/":[],"/home/runner/work/meshi/meshi/apps/web/src/app/layout":[{"inlined":false,"path":"static/css/ac8e8f35825d92cd.css"}],"/home/runner/work/meshi/meshi/apps/web/src/app/page":[]},"rscModuleMapping":{"622":{"*":{"id":"1384","name":"*","chunks":[],"async":false}},"1959":{"*":{"id":"3597","name":"*","chunks":[],"async":false}},"2619":{"*":{"id":"5169","name":"*","chunks":[],"async":false}},"3673":{"*":{"id":"1135","name":"*","chunks":[],"async":false}},"3886":{"*":{"id":"9748","name":"*","chunks":[],"async":false}},"3950":{"*":{"id":"4754","name":"*","chunks":[],"async":false}},"4431":{"*":{"id":"3041","name":"*","chunks":[],"async":false}},"4686":{"*":{"id":"4227","name":"*","chunks":[],"async":false}},"5278":{"*":{"id":"7184","name":"*","chunks":[],"async":false}},"5913":{"*":{"id":"9193","name":"*","chunks":[],"async":false}},"6305":{"*":{"id":"5530","name":"*","chunks":[],"async":false}},"7150":{"*":{"id":"1170","name":"*","chunks":[],"async":false}},"7989":{"*":{"id":"6893","name":"*","chunks":[],"async":false}},"8924":{"*":{"id":"9576","name":"*","chunks":[],"async":false}},"9766":{"*":{"id":"6060","name":"*","chunks":[],"async":false}}},"edgeRscModuleMapping":{}}
@@ -1 +1 @@
1
- <!DOCTYPE html><!--ZxT3BYruwHLcPbJZy9P5C--><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/1affe5324d8176a9.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-4e6bf084ac60582b.js"/><script src="/_next/static/chunks/4bd1b696-c023c6e3521b1417.js" async=""></script><script src="/_next/static/chunks/255-d1ba49e1e5028ea6.js" async=""></script><script src="/_next/static/chunks/main-app-c288eb82b72d6778.js" async=""></script><script src="/_next/static/chunks/app/layout-c3fd07aa6dba82c3.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>meshi — カロリー記録</title><meta name="description" content="摂取カロリーを記録し、目標に対する進捗を可視化するツール"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="mx-auto max-w-3xl px-4 pb-16"><header class="flex items-center justify-between py-5"><a class="text-xl font-bold tracking-tight" href="/">🍚 meshi</a><nav class="flex gap-1 text-sm"><a class="rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900" href="/">ホーム</a><a class="rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900" href="/dashboard">ダッシュボード</a><a class="rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900" href="/foods">食品マスタ</a><a class="rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900" href="/goals">目標</a></nav></header><main><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/webpack-4e6bf084ac60582b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[2619,[\"177\",\"static/chunks/app/layout-c3fd07aa6dba82c3.js\"],\"\"]\n3:I[9766,[],\"\"]\n4:I[8924,[],\"\"]\n5:I[4431,[],\"OutletBoundary\"]\n7:I[5278,[],\"AsyncMetadataOutlet\"]\n9:I[4431,[],\"ViewportBoundary\"]\nb:I[4431,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[7150,[],\"\"]\n:HL[\"/_next/static/css/1affe5324d8176a9.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"ZxT3BYruwHLcPbJZy9P5C\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/1affe5324d8176a9.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ja\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-3xl px-4 pb-16\",\"children\":[[\"$\",\"header\",null,{\"className\":\"flex items-center justify-between py-5\",\"children\":[[\"$\",\"$L2\",null,{\"href\":\"/\",\"className\":\"text-xl font-bold tracking-tight\",\"children\":\"🍚 meshi\"}],[\"$\",\"nav\",null,{\"className\":\"flex gap-1 text-sm\",\"children\":[[\"$\",\"$L2\",\"/\",{\"href\":\"/\",\"className\":\"rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900\",\"children\":\"ホーム\"}],[\"$\",\"$L2\",\"/dashboard\",{\"href\":\"/dashboard\",\"className\":\"rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900\",\"children\":\"ダッシュボード\"}],[\"$\",\"$L2\",\"/foods\",{\"href\":\"/foods\",\"className\":\"rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900\",\"children\":\"食品マスタ\"}],[\"$\",\"$L2\",\"/goals\",{\"href\":\"/goals\",\"className\":\"rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900\",\"children\":\"目標\"}]]}]]}],[\"$\",\"main\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"meshi — カロリー記録\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"摂取カロリーを記録し、目標に対する進捗を可視化するツール\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
1
+ <!DOCTYPE html><!--T9SmpQfgKTNd318PMZpYn--><html lang="ja"><head><meta charSet="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="/_next/static/css/ac8e8f35825d92cd.css" data-precedence="next"/><link rel="preload" as="script" fetchPriority="low" href="/_next/static/chunks/webpack-4e6bf084ac60582b.js"/><script src="/_next/static/chunks/4bd1b696-c023c6e3521b1417.js" async=""></script><script src="/_next/static/chunks/255-d1ba49e1e5028ea6.js" async=""></script><script src="/_next/static/chunks/main-app-c288eb82b72d6778.js" async=""></script><script src="/_next/static/chunks/app/layout-c3fd07aa6dba82c3.js" async=""></script><meta name="robots" content="noindex"/><title>404: This page could not be found.</title><title>meshi — カロリー記録</title><meta name="description" content="摂取カロリーを記録し、目標に対する進捗を可視化するツール"/><script src="/_next/static/chunks/polyfills-42372ed130431b0a.js" noModule=""></script></head><body><div hidden=""><!--$--><!--/$--></div><div class="mx-auto max-w-3xl px-4 pb-16"><header class="flex items-center justify-between py-5"><a class="text-xl font-bold tracking-tight" href="/">🍚 meshi</a><nav class="flex gap-1 text-sm"><a class="rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900" href="/">ホーム</a><a class="rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900" href="/dashboard">ダッシュボード</a><a class="rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900" href="/foods">食品マスタ</a><a class="rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900" href="/goals">目標</a></nav></header><main><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding:0 23px 0 0;font-size:24px;font-weight:500;vertical-align:top;line-height:49px">404</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:49px;margin:0">This page could not be found.</h2></div></div></div><!--$--><!--/$--></main></div><script src="/_next/static/chunks/webpack-4e6bf084ac60582b.js" id="_R_" async=""></script><script>(self.__next_f=self.__next_f||[]).push([0])</script><script>self.__next_f.push([1,"1:\"$Sreact.fragment\"\n2:I[2619,[\"177\",\"static/chunks/app/layout-c3fd07aa6dba82c3.js\"],\"\"]\n3:I[9766,[],\"\"]\n4:I[8924,[],\"\"]\n5:I[4431,[],\"OutletBoundary\"]\n7:I[5278,[],\"AsyncMetadataOutlet\"]\n9:I[4431,[],\"ViewportBoundary\"]\nb:I[4431,[],\"MetadataBoundary\"]\nc:\"$Sreact.suspense\"\ne:I[7150,[],\"\"]\n:HL[\"/_next/static/css/ac8e8f35825d92cd.css\",\"style\"]\n"])</script><script>self.__next_f.push([1,"0:{\"P\":null,\"b\":\"T9SmpQfgKTNd318PMZpYn\",\"p\":\"\",\"c\":[\"\",\"_not-found\"],\"i\":false,\"f\":[[[\"\",{\"children\":[\"/_not-found\",{\"children\":[\"__PAGE__\",{}]}]},\"$undefined\",\"$undefined\",true],[\"\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"link\",\"0\",{\"rel\":\"stylesheet\",\"href\":\"/_next/static/css/ac8e8f35825d92cd.css\",\"precedence\":\"next\",\"crossOrigin\":\"$undefined\",\"nonce\":\"$undefined\"}]],[\"$\",\"html\",null,{\"lang\":\"ja\",\"children\":[\"$\",\"body\",null,{\"children\":[\"$\",\"div\",null,{\"className\":\"mx-auto max-w-3xl px-4 pb-16\",\"children\":[[\"$\",\"header\",null,{\"className\":\"flex items-center justify-between py-5\",\"children\":[[\"$\",\"$L2\",null,{\"href\":\"/\",\"className\":\"text-xl font-bold tracking-tight\",\"children\":\"🍚 meshi\"}],[\"$\",\"nav\",null,{\"className\":\"flex gap-1 text-sm\",\"children\":[[\"$\",\"$L2\",\"/\",{\"href\":\"/\",\"className\":\"rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900\",\"children\":\"ホーム\"}],[\"$\",\"$L2\",\"/dashboard\",{\"href\":\"/dashboard\",\"className\":\"rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900\",\"children\":\"ダッシュボード\"}],[\"$\",\"$L2\",\"/foods\",{\"href\":\"/foods\",\"className\":\"rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900\",\"children\":\"食品マスタ\"}],[\"$\",\"$L2\",\"/goals\",{\"href\":\"/goals\",\"className\":\"rounded-md px-3 py-1.5 text-neutral-600 transition hover:bg-neutral-200 hover:text-neutral-900\",\"children\":\"目標\"}]]}]]}],[\"$\",\"main\",null,{\"children\":[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]}]]}]}]}]]}],{\"children\":[\"/_not-found\",[\"$\",\"$1\",\"c\",{\"children\":[null,[\"$\",\"$L3\",null,{\"parallelRouterKey\":\"children\",\"error\":\"$undefined\",\"errorStyles\":\"$undefined\",\"errorScripts\":\"$undefined\",\"template\":[\"$\",\"$L4\",null,{}],\"templateStyles\":\"$undefined\",\"templateScripts\":\"$undefined\",\"notFound\":\"$undefined\",\"forbidden\":\"$undefined\",\"unauthorized\":\"$undefined\"}]]}],{\"children\":[\"__PAGE__\",[\"$\",\"$1\",\"c\",{\"children\":[[[\"$\",\"title\",null,{\"children\":\"404: This page could not be found.\"}],[\"$\",\"div\",null,{\"style\":{\"fontFamily\":\"system-ui,\\\"Segoe UI\\\",Roboto,Helvetica,Arial,sans-serif,\\\"Apple Color Emoji\\\",\\\"Segoe UI Emoji\\\"\",\"height\":\"100vh\",\"textAlign\":\"center\",\"display\":\"flex\",\"flexDirection\":\"column\",\"alignItems\":\"center\",\"justifyContent\":\"center\"},\"children\":[\"$\",\"div\",null,{\"children\":[[\"$\",\"style\",null,{\"dangerouslySetInnerHTML\":{\"__html\":\"body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}\"}}],[\"$\",\"h1\",null,{\"className\":\"next-error-h1\",\"style\":{\"display\":\"inline-block\",\"margin\":\"0 20px 0 0\",\"padding\":\"0 23px 0 0\",\"fontSize\":24,\"fontWeight\":500,\"verticalAlign\":\"top\",\"lineHeight\":\"49px\"},\"children\":404}],[\"$\",\"div\",null,{\"style\":{\"display\":\"inline-block\"},\"children\":[\"$\",\"h2\",null,{\"style\":{\"fontSize\":14,\"fontWeight\":400,\"lineHeight\":\"49px\",\"margin\":0},\"children\":\"This page could not be found.\"}]}]]}]}]],null,[\"$\",\"$L5\",null,{\"children\":[\"$L6\",[\"$\",\"$L7\",null,{\"promise\":\"$@8\"}]]}]]}],{},null,false]},null,false]},null,false],[\"$\",\"$1\",\"h\",{\"children\":[[\"$\",\"meta\",null,{\"name\":\"robots\",\"content\":\"noindex\"}],[[\"$\",\"$L9\",null,{\"children\":\"$La\"}],null],[\"$\",\"$Lb\",null,{\"children\":[\"$\",\"div\",null,{\"hidden\":true,\"children\":[\"$\",\"$c\",null,{\"fallback\":null,\"children\":\"$Ld\"}]}]}]]}],false]],\"m\":\"$undefined\",\"G\":[\"$e\",[]],\"s\":false,\"S\":true}\n"])</script><script>self.__next_f.push([1,"a:[[\"$\",\"meta\",\"0\",{\"charSet\":\"utf-8\"}],[\"$\",\"meta\",\"1\",{\"name\":\"viewport\",\"content\":\"width=device-width, initial-scale=1\"}]]\n6:null\n"])</script><script>self.__next_f.push([1,"8:{\"metadata\":[[\"$\",\"title\",\"0\",{\"children\":\"meshi — カロリー記録\"}],[\"$\",\"meta\",\"1\",{\"name\":\"description\",\"content\":\"摂取カロリーを記録し、目標に対する進捗を可視化するツール\"}]],\"error\":null,\"digest\":\"$undefined\"}\n"])</script><script>self.__next_f.push([1,"d:\"$8:metadata\"\n"])</script></body></html>
@@ -1 +1 @@
1
- <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-4e6bf084ac60582b.js" defer=""></script><script src="/_next/static/chunks/framework-d02a023354d77eec.js" defer=""></script><script src="/_next/static/chunks/main-4920287c8da2dac9.js" defer=""></script><script src="/_next/static/chunks/pages/_app-7d307437aca18ad4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js" defer=""></script><script src="/_next/static/ZxT3BYruwHLcPbJZy9P5C/_buildManifest.js" defer=""></script><script src="/_next/static/ZxT3BYruwHLcPbJZy9P5C/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"ZxT3BYruwHLcPbJZy9P5C","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
1
+ <!DOCTYPE html><html><head><meta charSet="utf-8" data-next-head=""/><meta name="viewport" content="width=device-width" data-next-head=""/><title data-next-head="">500: Internal Server Error</title><noscript data-n-css=""></noscript><script defer="" noModule="" src="/_next/static/chunks/polyfills-42372ed130431b0a.js"></script><script src="/_next/static/chunks/webpack-4e6bf084ac60582b.js" defer=""></script><script src="/_next/static/chunks/framework-d02a023354d77eec.js" defer=""></script><script src="/_next/static/chunks/main-4920287c8da2dac9.js" defer=""></script><script src="/_next/static/chunks/pages/_app-7d307437aca18ad4.js" defer=""></script><script src="/_next/static/chunks/pages/_error-cb2a52f75f2162e2.js" defer=""></script><script src="/_next/static/T9SmpQfgKTNd318PMZpYn/_buildManifest.js" defer=""></script><script src="/_next/static/T9SmpQfgKTNd318PMZpYn/_ssgManifest.js" defer=""></script></head><body><div id="__next"><div style="font-family:system-ui,&quot;Segoe UI&quot;,Roboto,Helvetica,Arial,sans-serif,&quot;Apple Color Emoji&quot;,&quot;Segoe UI Emoji&quot;;height:100vh;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center"><div style="line-height:48px"><style>body{color:#000;background:#fff;margin:0}.next-error-h1{border-right:1px solid rgba(0,0,0,.3)}@media (prefers-color-scheme:dark){body{color:#fff;background:#000}.next-error-h1{border-right:1px solid rgba(255,255,255,.3)}}</style><h1 class="next-error-h1" style="display:inline-block;margin:0 20px 0 0;padding-right:23px;font-size:24px;font-weight:500;vertical-align:top">500</h1><div style="display:inline-block"><h2 style="font-size:14px;font-weight:400;line-height:28px">Internal Server Error<!-- -->.</h2></div></div></div></div><script id="__NEXT_DATA__" type="application/json">{"props":{"pageProps":{"statusCode":500}},"page":"/_error","query":{},"buildId":"T9SmpQfgKTNd318PMZpYn","nextExport":true,"isFallback":false,"gip":true,"scriptLoader":[]}</script></body></html>
@@ -1 +1 @@
1
- {"node":{},"edge":{},"encryptionKey":"c6aT3JLPw9KQFjy1y9X/kLavQp+uR3ExLsog8h9ubwk="}
1
+ {"node":{},"edge":{},"encryptionKey":"Pq+QLMyWs2Wl+iBhAsF6AMJCGN24XlAoWifhwVTqg0Y="}
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[105],{960:(e,t,a)=>{"use strict";a.d(t,{Jp:()=>r,Mu:()=>l,Pb:()=>s,XR:()=>c});async function n(e,t){let a=await fetch("".concat("").concat(e),{cache:"no-store",...t,headers:{...(null==t?void 0:t.body)!=null?{"content-type":"application/json"}:{},...null==t?void 0:t.headers}});if(!a.ok){let t="";try{t=JSON.stringify(await a.json())}catch(e){}throw Error("API ".concat(a.status," ").concat(e," ").concat(t))}if(204!==a.status)return a.json()}let l={list:function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return n("/api/foods".concat(e?"?includeArchived=true":""))},create:e=>n("/api/foods",{method:"POST",body:JSON.stringify(e)}),update:(e,t)=>n("/api/foods/".concat(e),{method:"PATCH",body:JSON.stringify(t)})},r={list:e=>{let t=new URLSearchParams;(null==e?void 0:e.from)&&t.set("from",e.from),(null==e?void 0:e.to)&&t.set("to",e.to),(null==e?void 0:e.mealType)&&t.set("mealType",e.mealType);let a=t.toString();return n("/api/records".concat(a?"?".concat(a):""))},create:e=>n("/api/records",{method:"POST",body:JSON.stringify(e)}),createBatch:e=>n("/api/records/batch",{method:"POST",body:JSON.stringify({items:e})}),update:(e,t)=>n("/api/records/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),remove:e=>n("/api/records/".concat(e),{method:"DELETE"})},s={list:()=>n("/api/goals"),current:()=>n("/api/goals/current"),create:e=>n("/api/goals",{method:"POST",body:JSON.stringify(e)}),remove:e=>n("/api/goals/".concat(e),{method:"DELETE"})},c={get:(e,t)=>{let a=new URLSearchParams({period:e});return t&&a.set("date",t),n("/api/summary?".concat(a.toString()))}}},3399:(e,t,a)=>{Promise.resolve().then(a.bind(a,4686))},4686:(e,t,a)=>{"use strict";a.d(t,{Dashboard:()=>y});var n=a(5155),l=a(2115),r=a(960),s=a(4804),c=a(5307),o=a(1594),i=a(4340),d=a(6449),u=a(4400),m=a(7882),h=a(251),x=a(6263);let g={top:12,right:12,bottom:28,left:44};function f(e){let t=new Date("".concat(e,"T00:00:00"));return"".concat(t.getMonth()+1,"/").concat(t.getDate())}function p(e){let{days:t}=e,[a,r]=function(){let e=(0,l.useRef)(null),[t,a]=(0,l.useState)(0);return(0,l.useEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(e=>{for(let t of e)a(t.contentRect.width)});return n.observe(t),()=>n.disconnect()},[]),[e,t]}(),{tooltipData:s,tooltipLeft:c,tooltipTop:p,tooltipOpen:b,showTooltip:j,hideTooltip:y}=(0,h.fS)(),v=Math.max(0,r-g.left-g.right),N=240-g.top-g.bottom,w=(0,l.useMemo)(()=>(0,u.WH)({domain:t.map(e=>e.date),range:[0,v],padding:.3}),[t,v]),S=(0,l.useMemo)(()=>100*Math.ceil(Math.max(1,...t.map(e=>{var t;return Math.max(e.total,null!=(t=e.target)?t:0)}))/100),[t]),k=(0,l.useMemo)(()=>(0,u.m4)({domain:[0,S],range:[N,0],nice:!0}),[S,N]),D=e=>{var t;return(null!=(t=w(e.date))?t:0)+w.bandwidth()/2},M=Math.max(1,Math.ceil(t.length/10));return(0,n.jsxs)("div",{ref:a,className:"relative w-full",children:[r>0&&(0,n.jsx)("svg",{width:r,height:240,children:(0,n.jsxs)(d.Y,{left:g.left,top:g.top,children:[(0,n.jsx)(i.YN,{scale:k,width:v,stroke:"#eee",numTicks:4}),(0,n.jsx)(m.Wi,{data:t,x:D,y:e=>k(e.total),stroke:"#10b981",strokeWidth:2}),t.map(e=>{let t=null!==e.target&&e.total>e.target;return(0,n.jsx)("circle",{cx:D(e),cy:k(e.total),r:3.5,fill:t?"#ef4444":"#10b981"},e.date)}),t.map(e=>{var t;let a=null!=(t=w(e.date))?t:0;return(0,n.jsx)(m.yP,{x:a,y:0,width:w.bandwidth(),height:N,fill:"transparent",onMouseMove:t=>{var a,n;let l=(0,x.w)(t);j({tooltipData:e,tooltipLeft:(null!=(a=null==l?void 0:l.x)?a:0)+8,tooltipTop:(null!=(n=null==l?void 0:l.y)?n:0)-8})},onMouseLeave:y},e.date)}),(0,n.jsx)(m.Wi,{data:t.filter(e=>null!==e.target),x:D,y:e=>{var t;return k(null!=(t=e.target)?t:0)},stroke:"#737373",strokeWidth:1.5,strokeDasharray:"4 3"}),(0,n.jsx)(o.DZ,{scale:k,numTicks:4,stroke:"#ccc",tickStroke:"#ccc",tickLabelProps:()=>({fill:"#888",fontSize:10,dx:-2,dy:3})}),(0,n.jsx)(o.XI,{top:N,scale:w,stroke:"#ccc",tickStroke:"#ccc",tickFormat:e=>f(String(e)),tickValues:t.filter((e,t)=>t%M==0).map(e=>e.date),tickLabelProps:()=>({fill:"#888",fontSize:10,textAnchor:"middle"})})]})}),b&&s&&(0,n.jsxs)(h.du,{left:c,top:p,style:{...h.k5,fontSize:12},children:[(0,n.jsx)("div",{className:"font-medium",children:f(s.date)}),(0,n.jsxs)("div",{children:["摂取: ",s.total.toLocaleString()," kcal"]}),(0,n.jsxs)("div",{children:["目標:"," ",null!==s.target?"".concat(s.target.toLocaleString()," kcal"):"—"]})]}),(0,n.jsxs)("div",{className:"mt-2 flex gap-4 text-xs text-neutral-500",children:[(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[(0,n.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-emerald-500"})," 目標内"]}),(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[(0,n.jsx)("span",{className:"inline-block h-2 w-2 rounded-full bg-red-500"})," 超過"]}),(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[(0,n.jsx)("span",{className:"inline-block h-0 w-3 border-t border-dashed border-neutral-500"})," ","目標ライン"]})]})]})}let b={day:"日次",week:"週次",month:"月次"};function j(e,t,a){let n=new Date(e);return"day"===t?n.setDate(n.getDate()+a):"week"===t?n.setDate(n.getDate()+7*a):n.setMonth(n.getMonth()+a),n}function y(){var e;let[t,a]=(0,l.useState)("day"),[o,i]=(0,l.useState)(new Date),[d,u]=(0,l.useState)(null),[m,h]=(0,l.useState)(null),x=(0,l.useCallback)(async()=>{try{u(await r.XR.get(t,(0,s.JN)(o)))}catch(e){h(String(e))}},[t,o]);(0,l.useEffect)(()=>{x()},[x]);let g=d&&d.target?Math.round(d.total/d.target*100):null,f=(null==d?void 0:d.diff)!==null&&(null==d?void 0:d.diff)!==void 0&&d.diff>0,y=d&&d.target?f?Math.round(d.target/d.total*100):Math.min(100,null!=g?g:0):0,v=f?100-y:0;return(0,n.jsxs)("div",{className:"space-y-6",children:[m&&(0,n.jsx)("div",{className:"rounded-md bg-red-50 px-3 py-2 text-sm text-red-700",children:m}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("div",{className:"flex gap-1",children:["day","week","month"].map(e=>(0,n.jsx)("button",{onClick:()=>a(e),className:"rounded-md px-3 py-1.5 text-sm ".concat(t===e?"bg-neutral-900 text-white":"bg-neutral-100 text-neutral-700"),children:b[e]},e))}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("button",{onClick:()=>i(e=>j(e,t,-1)),className:"rounded-md bg-neutral-100 px-2 py-1.5 text-sm hover:bg-neutral-200",children:"←"}),(0,n.jsx)("button",{onClick:()=>i(new Date),className:"rounded-md bg-neutral-100 px-3 py-1.5 text-sm hover:bg-neutral-200",children:"今"}),(0,n.jsx)("button",{onClick:()=>i(e=>j(e,t,1)),className:"rounded-md bg-neutral-100 px-2 py-1.5 text-sm hover:bg-neutral-200",children:"→"})]})]}),d?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(c.Zp,{children:[(0,n.jsx)("div",{className:"mb-1 text-sm text-neutral-500",children:function(e){let t=new Date(e.from),a=new Date(e.to);if(a.setDate(a.getDate()-1),"day"===e.period)return t.toLocaleDateString("ja-JP",{dateStyle:"long"});let n=e=>e.toLocaleDateString("ja-JP",{month:"short",day:"numeric"});return"month"===e.period?t.toLocaleDateString("ja-JP",{year:"numeric",month:"long"}):"".concat(n(t)," 〜 ").concat(n(a))}(d)}),(0,n.jsxs)("div",{className:"flex items-end gap-3",children:[(0,n.jsx)("span",{className:"text-4xl font-bold",children:d.total.toLocaleString()}),(0,n.jsxs)("span",{className:"pb-1 text-sm text-neutral-500",children:["kcal"," ",null!==d.target?"/ 目標 ".concat(d.target.toLocaleString()," kcal"):"(目標未設定)"]})]}),null!==g&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"mt-3 flex h-2.5 w-full overflow-hidden rounded-full bg-neutral-200",children:[(0,n.jsx)("div",{className:"h-full bg-emerald-500",style:{width:"".concat(y,"%")}}),v>0&&(0,n.jsx)("div",{className:"h-full bg-red-500",style:{width:"".concat(v,"%")}})]}),(0,n.jsxs)("div",{className:"mt-2 flex justify-between text-sm",children:[(0,n.jsxs)("span",{className:"text-neutral-500",children:["達成率 ",g,"%"]}),(0,n.jsxs)("span",{className:f?"text-red-600":"text-emerald-600",children:[f?"超過":"残り"," ",Math.abs(null!=(e=d.diff)?e:0).toLocaleString()," kcal"]})]})]})]}),"day"!==d.period&&(0,n.jsxs)(c.Zp,{children:[(0,n.jsx)(c._x,{children:"カロリー推移"}),(0,n.jsx)(p,{days:d.days})]}),(0,n.jsxs)(c.Zp,{children:[(0,n.jsx)(c._x,{children:"日別内訳"}),(0,n.jsx)("ul",{className:"divide-y divide-neutral-100 text-sm",children:d.days.map(e=>{let t=null!==e.target&&e.total>e.target;return(0,n.jsxs)("li",{className:"flex items-center justify-between py-1.5",children:[(0,n.jsx)("span",{className:"text-neutral-600",children:new Date("".concat(e.date,"T00:00:00")).toLocaleDateString("ja-JP",{month:"numeric",day:"numeric",weekday:"short"})}),(0,n.jsxs)("span",{className:"flex items-center gap-3 tabular-nums",children:[(0,n.jsxs)("span",{className:t?"font-medium text-red-600":"",children:[e.total.toLocaleString()," kcal"]}),(0,n.jsx)("span",{className:"w-24 text-right text-neutral-400",children:null!==e.target?"目標 ".concat(e.target.toLocaleString()):"—"})]})]},e.date)})})]})]}):(0,n.jsx)("p",{className:"text-sm text-neutral-500",children:"読み込み中…"})]})}},4804:(e,t,a)=>{"use strict";function n(e){let t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(a,"-").concat(n)}function l(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function r(e){let t=l(e);return t.setDate(t.getDate()+1),t}function s(e){let t=e.getTimezoneOffset();return new Date(e.getTime()-6e4*t).toISOString().slice(0,16)}function c(e){let t=new Date(e);return"".concat(String(t.getHours()).padStart(2,"0"),":").concat(String(t.getMinutes()).padStart(2,"0"))}a.d(t,{D0:()=>r,JN:()=>n,fU:()=>c,iI:()=>s,ol:()=>l})},5307:(e,t,a)=>{"use strict";a.d(t,{$n:()=>s,D0:()=>i,Zp:()=>l,_x:()=>r,l6:()=>o,pd:()=>c});var n=a(5155);function l(e){let{children:t,className:a=""}=e;return(0,n.jsx)("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 shadow-sm ".concat(a),children:t})}function r(e){let{children:t}=e;return(0,n.jsx)("h2",{className:"mb-3 text-base font-semibold text-neutral-800",children:t})}function s(e){let{children:t,variant:a="primary",className:l="",...r}=e;return(0,n.jsx)("button",{className:"rounded-md px-3 py-1.5 text-sm font-medium transition disabled:cursor-not-allowed ".concat({primary:"bg-neutral-900 text-white hover:bg-neutral-700 disabled:bg-neutral-400",ghost:"bg-neutral-100 text-neutral-700 hover:bg-neutral-200",danger:"text-red-600 hover:bg-red-50"}[a]," ").concat(l),...r,children:t})}function c(e){return(0,n.jsx)("input",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...e})}function o(e){return(0,n.jsx)("select",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...e})}function i(e){let{label:t,children:a}=e;return(0,n.jsxs)("label",{className:"block",children:[(0,n.jsx)("span",{className:"mb-1 block text-xs font-medium text-neutral-500",children:t}),a]})}}},e=>{e.O(0,[181,441,255,358],()=>e(e.s=3399)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{960:(e,t,a)=>{"use strict";a.d(t,{Jp:()=>l,Mu:()=>r,Pb:()=>s,XR:()=>i});async function n(e,t){let a=await fetch("".concat("").concat(e),{cache:"no-store",...t,headers:{...(null==t?void 0:t.body)!=null?{"content-type":"application/json"}:{},...null==t?void 0:t.headers}});if(!a.ok){let t="";try{t=JSON.stringify(await a.json())}catch(e){}throw Error("API ".concat(a.status," ").concat(e," ").concat(t))}if(204!==a.status)return a.json()}let r={list:function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return n("/api/foods".concat(e?"?includeArchived=true":""))},create:e=>n("/api/foods",{method:"POST",body:JSON.stringify(e)}),update:(e,t)=>n("/api/foods/".concat(e),{method:"PATCH",body:JSON.stringify(t)})},l={list:e=>{let t=new URLSearchParams;(null==e?void 0:e.from)&&t.set("from",e.from),(null==e?void 0:e.to)&&t.set("to",e.to),(null==e?void 0:e.mealType)&&t.set("mealType",e.mealType);let a=t.toString();return n("/api/records".concat(a?"?".concat(a):""))},create:e=>n("/api/records",{method:"POST",body:JSON.stringify(e)}),createBatch:e=>n("/api/records/batch",{method:"POST",body:JSON.stringify({items:e})}),update:(e,t)=>n("/api/records/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),remove:e=>n("/api/records/".concat(e),{method:"DELETE"})},s={list:()=>n("/api/goals"),current:()=>n("/api/goals/current"),create:e=>n("/api/goals",{method:"POST",body:JSON.stringify(e)}),remove:e=>n("/api/goals/".concat(e),{method:"DELETE"})},i={get:(e,t)=>{let a=new URLSearchParams({period:e});return t&&a.set("date",t),n("/api/summary?".concat(a.toString()))}}},3545:(e,t,a)=>{Promise.resolve().then(a.bind(a,6305))},4804:(e,t,a)=>{"use strict";function n(e){let t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(a,"-").concat(n)}function r(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function l(e){let t=r(e);return t.setDate(t.getDate()+1),t}function s(e){let t=e.getTimezoneOffset();return new Date(e.getTime()-6e4*t).toISOString().slice(0,16)}function i(e){let t=new Date(e);return"".concat(String(t.getHours()).padStart(2,"0"),":").concat(String(t.getMinutes()).padStart(2,"0"))}a.d(t,{D0:()=>l,JN:()=>n,fU:()=>i,iI:()=>s,ol:()=>r})},5307:(e,t,a)=>{"use strict";a.d(t,{$n:()=>s,D0:()=>d,Zp:()=>r,_x:()=>l,l6:()=>c,pd:()=>i});var n=a(5155);function r(e){let{children:t,className:a=""}=e;return(0,n.jsx)("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 shadow-sm ".concat(a),children:t})}function l(e){let{children:t}=e;return(0,n.jsx)("h2",{className:"mb-3 text-base font-semibold text-neutral-800",children:t})}function s(e){let{children:t,variant:a="primary",className:r="",...l}=e;return(0,n.jsx)("button",{className:"rounded-md px-3 py-1.5 text-sm font-medium transition disabled:cursor-not-allowed ".concat({primary:"bg-neutral-900 text-white hover:bg-neutral-700 disabled:bg-neutral-400",ghost:"bg-neutral-100 text-neutral-700 hover:bg-neutral-200",danger:"text-red-600 hover:bg-red-50"}[a]," ").concat(r),...l,children:t})}function i(e){return(0,n.jsx)("input",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...e})}function c(e){return(0,n.jsx)("select",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...e})}function d(e){let{label:t,children:a}=e;return(0,n.jsxs)("label",{className:"block",children:[(0,n.jsx)("span",{className:"mb-1 block text-xs font-medium text-neutral-500",children:t}),a]})}},6305:(e,t,a)=>{"use strict";a.d(t,{RecordEntry:()=>N});var n=a(5155),r=a(2115),l=a(960);let s=["breakfast","lunch","dinner","snack"],i={breakfast:"朝食",lunch:"昼食",dinner:"夕食",snack:"間食"},c={breakfast:"bg-orange-100 text-orange-700",lunch:"bg-amber-100 text-amber-700",dinner:"bg-indigo-100 text-indigo-700",snack:"bg-emerald-100 text-emerald-700"};var d=a(4804),o=a(5307);let u=function(){for(var e=arguments.length,t=Array(e),a=0;a<e;a++)t[a]=arguments[a];return t.filter((e,t,a)=>!!e&&""!==e.trim()&&a.indexOf(e)===t).join(" ").trim()},m=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,a)=>a?a.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var h={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let p=(0,r.createContext)({}),x=(0,r.forwardRef)((e,t)=>{var a,n,l;let{color:s,size:i,strokeWidth:c,absoluteStrokeWidth:d,className:o="",children:m,iconNode:x,...g}=e,{size:f=24,strokeWidth:b=2,absoluteStrokeWidth:y=!1,color:j="currentColor",className:v=""}=null!=(a=(0,r.useContext)(p))?a:{},k=(null!=d?d:y)?24*Number(null!=c?c:b)/Number(null!=i?i:f):null!=c?c:b;return(0,r.createElement)("svg",{ref:t,...h,width:null!=(n=null!=i?i:f)?n:h.width,height:null!=(l=null!=i?i:f)?l:h.height,stroke:null!=s?s:j,strokeWidth:k,className:u("lucide",v,o),...!m&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(g)&&{"aria-hidden":"true"},...g},[...x.map(e=>{let[t,a]=e;return(0,r.createElement)(t,a)}),...Array.isArray(m)?m:[m]])}),g=(e,t)=>{let a=(0,r.forwardRef)((a,n)=>{let{className:l,...s}=a;return(0,r.createElement)(x,{ref:n,iconNode:t,className:u("lucide-".concat(m(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()),"lucide-".concat(e),l),...s})});return a.displayName=m(e),a},f=g("sunrise",[["path",{d:"M12 2v8",key:"1q4o3n"}],["path",{d:"m4.93 10.93 1.41 1.41",key:"2a7f42"}],["path",{d:"M2 18h2",key:"j10viu"}],["path",{d:"M20 18h2",key:"wocana"}],["path",{d:"m19.07 10.93-1.41 1.41",key:"15zs5n"}],["path",{d:"M22 22H2",key:"19qnx5"}],["path",{d:"m8 6 4-4 4 4",key:"ybng9g"}],["path",{d:"M16 18a4 4 0 0 0-8 0",key:"1lzouq"}]]),b=g("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]),y={breakfast:f,lunch:b,dinner:g("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),snack:g("soup",[["path",{d:"M12 21a9 9 0 0 0 9-9H3a9 9 0 0 0 9 9Z",key:"4rw317"}],["path",{d:"M7 21h10",key:"1b0cd5"}],["path",{d:"M19.5 12 22 6",key:"shfsr5"}],["path",{d:"M16.25 3c.27.1.8.53.75 1.36-.06.83-.93 1.2-1 2.02-.05.78.34 1.24.73 1.62",key:"rpc6vp"}],["path",{d:"M11.25 3c.27.1.8.53.74 1.36-.05.83-.93 1.2-.98 2.02-.06.78.33 1.24.72 1.62",key:"1lf63m"}],["path",{d:"M6.25 3c.27.1.8.53.75 1.36-.06.83-.93 1.2-1 2.02-.05.78.34 1.24.74 1.62",key:"97tijn"}]])};function j(e){let{mealType:t}=e,a=y[t];return(0,n.jsxs)("span",{className:"inline-flex items-center gap-1 rounded px-1.5 py-0.5 text-xs font-medium ".concat(c[t]),children:[(0,n.jsx)(a,{size:12,"aria-hidden":!0}),i[t]]})}function v(e){let{record:t,onChanged:a}=e,[c,u]=(0,r.useState)(!1),[m,h]=(0,r.useState)(t.name),[p,x]=(0,r.useState)(String(t.calories)),[g,f]=(0,r.useState)(t.mealType),[b,y]=(0,r.useState)((0,d.iI)(new Date(t.consumedAt))),[v,k]=(0,r.useState)(!1),[N,S]=(0,r.useState)(null);async function w(){k(!0),S(null);try{await l.Jp.update(t.id,{name:m,calories:Number(p),mealType:g,consumedAt:new Date(b).toISOString()}),u(!1),await a()}catch(e){S(String(e))}finally{k(!1)}}async function C(){k(!0);try{await l.Jp.remove(t.id),await a()}finally{k(!1)}}return c?(0,n.jsxs)("li",{className:"py-2 text-sm",children:[(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,n.jsx)(o.pd,{value:m,onChange:e=>h(e.target.value),placeholder:"食品名"}),(0,n.jsx)(o.pd,{type:"number",min:"0",value:p,onChange:e=>x(e.target.value),placeholder:"kcal"}),(0,n.jsx)(o.l6,{value:g,onChange:e=>f(e.target.value),children:s.map(e=>(0,n.jsx)("option",{value:e,children:i[e]},e))}),(0,n.jsx)(o.pd,{type:"datetime-local",value:b,onChange:e=>y(e.target.value)})]}),N&&(0,n.jsx)("p",{className:"mt-1 text-xs text-red-600",children:N}),(0,n.jsxs)("div",{className:"mt-2 flex gap-2",children:[(0,n.jsx)(o.$n,{onClick:w,disabled:v,children:v?"保存中…":"保存"}),(0,n.jsx)(o.$n,{variant:"ghost",onClick:()=>u(!1),disabled:v,children:"キャンセル"})]})]}):(0,n.jsxs)("li",{className:"flex items-center justify-between py-2 text-sm",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)(j,{mealType:t.mealType}),(0,n.jsx)("span",{className:"text-neutral-400",children:(0,d.fU)(t.consumedAt)}),(0,n.jsx)("span",{className:"font-medium",children:t.name})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)("span",{className:"tabular-nums",children:[t.calories," kcal"]}),(0,n.jsx)(o.$n,{variant:"ghost",onClick:function(){h(t.name),x(String(t.calories)),f(t.mealType),y((0,d.iI)(new Date(t.consumedAt))),S(null),u(!0)},disabled:v,children:"編集"}),(0,n.jsx)(o.$n,{variant:"danger",onClick:C,disabled:v,children:"削除"})]})]})}function k(e){return"master"===e.kind?Math.round(e.perServing*e.quantity):e.calories}function N(){var e;let[t,a]=(0,r.useState)([]),[c,u]=(0,r.useState)([]),[m,h]=(0,r.useState)(null),[p,x]=(0,r.useState)(!0),[g,f]=(0,r.useState)(null),[b,y]=(0,r.useState)("master"),[j,N]=(0,r.useState)(""),[S,w]=(0,r.useState)("1"),[C,M]=(0,r.useState)(""),[D,O]=(0,r.useState)(""),[T,A]=(0,r.useState)([]),[P,E]=(0,r.useState)("breakfast"),[L,I]=(0,r.useState)((0,d.iI)(new Date)),[J,_]=(0,r.useState)(!1),q=(0,r.useRef)(0),$=()=>String(++q.current);async function z(){let e=new Date,[t,n,r]=await Promise.all([l.Mu.list(),l.Jp.list({from:(0,d.ol)(e).toISOString(),to:(0,d.D0)(e).toISOString()}),l.Pb.current()]);a(t),u(n),h(r),!j&&t.length>0&&N(t[0].id)}(0,r.useEffect)(()=>{z().catch(e=>f(String(e))).finally(()=>x(!1))},[]);let R=(0,r.useMemo)(()=>c.reduce((e,t)=>e+t.calories,0),[c]),Z=null!=(e=null==m?void 0:m.dailyTarget)?e:null,H=Z?Math.min(100,Math.round(R/Z*100)):null,U=t.find(e=>e.id===j),W="master"===b&&U?Math.round(U.caloriesPerServing*(Number(S)||0)):null,B=(0,r.useMemo)(()=>T.reduce((e,t)=>e+k(t),0),[T]);async function F(){if(0===T.length)return void f("食品を追加してください");_(!0),f(null);try{let e=new Date(L).toISOString();await l.Jp.createBatch(T.map(t=>"master"===t.kind?{foodId:t.foodId,quantity:t.quantity,mealType:P,consumedAt:e}:{name:t.name,calories:t.calories,mealType:P,consumedAt:e})),A([]),await z()}catch(e){f(String(e))}finally{_(!1)}}return p?(0,n.jsx)("p",{className:"text-sm text-neutral-500",children:"読み込み中…"}):(0,n.jsxs)("div",{className:"space-y-6",children:[g&&(0,n.jsx)("div",{className:"rounded-md bg-red-50 px-3 py-2 text-sm text-red-700",children:g}),(0,n.jsxs)(o.Zp,{children:[(0,n.jsx)(o._x,{children:"今日の摂取"}),(0,n.jsxs)("div",{className:"flex items-end gap-2",children:[(0,n.jsx)("span",{className:"text-3xl font-bold",children:R.toLocaleString()}),(0,n.jsxs)("span",{className:"text-sm text-neutral-500",children:["kcal",Z?" / 目標 ".concat(Z.toLocaleString()," kcal"):"(目標未設定)"]})]}),null!==H&&(0,n.jsx)("div",{className:"mt-3 h-2 w-full overflow-hidden rounded-full bg-neutral-200",children:(0,n.jsx)("div",{className:"h-full ".concat(R>(null!=Z?Z:0)?"bg-red-500":"bg-emerald-500"),style:{width:"".concat(H,"%")}})})]}),(0,n.jsxs)(o.Zp,{children:[(0,n.jsx)(o._x,{children:"記録する"}),(0,n.jsx)("p",{className:"mb-3 text-xs text-neutral-500",children:"食品を追加してから「まとめて記録」。米とサバ缶のように複数をまとめて1つの食事として登録できます。"}),(0,n.jsxs)("div",{className:"mb-3 flex gap-1 text-sm",children:[(0,n.jsx)("button",{type:"button",onClick:()=>y("master"),className:"rounded-md px-3 py-1 ".concat("master"===b?"bg-neutral-900 text-white":"bg-neutral-100"),children:"マスタから"}),(0,n.jsx)("button",{type:"button",onClick:()=>y("adhoc"),className:"rounded-md px-3 py-1 ".concat("adhoc"===b?"bg-neutral-900 text-white":"bg-neutral-100"),children:"その場で入力"})]}),(0,n.jsxs)("form",{onSubmit:function(e){if(e.preventDefault(),f(null),"master"===b){let e=t.find(e=>e.id===j);if(!e)return void f("食品を選択してください");A(t=>[...t,{key:$(),kind:"master",foodId:e.id,name:e.name,perServing:e.caloriesPerServing,quantity:Number(S)||1}])}else{if(!C.trim()||""===D)return void f("食品名とカロリーを入力してください");A(e=>[...e,{key:$(),kind:"adhoc",name:C.trim(),calories:Number(D)}]),M(""),O("")}},className:"grid grid-cols-2 gap-3",children:["master"===b?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"col-span-2",children:(0,n.jsx)(o.D0,{label:"食品",children:0===t.length?(0,n.jsx)("p",{className:"text-sm text-neutral-500",children:"食品マスタが空です。「食品マスタ」から登録してください。"}):(0,n.jsx)(o.l6,{value:j,onChange:e=>N(e.target.value),children:t.map(e=>(0,n.jsxs)("option",{value:e.id,children:[e.name,"(",e.caloriesPerServing," kcal",e.unitLabel?" / ".concat(e.unitLabel):"",")"]},e.id))})})}),(0,n.jsx)(o.D0,{label:"数量",children:(0,n.jsx)(o.pd,{type:"number",step:"0.1",min:"0",value:S,onChange:e=>w(e.target.value)})}),(0,n.jsx)("div",{className:"flex items-end pb-1",children:(0,n.jsx)("p",{className:"text-sm text-neutral-500",children:null!==W?"= ".concat(W," kcal"):""})})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(o.D0,{label:"食品名",children:(0,n.jsx)(o.pd,{value:C,onChange:e=>M(e.target.value)})}),(0,n.jsx)(o.D0,{label:"カロリー (kcal)",children:(0,n.jsx)(o.pd,{type:"number",min:"0",value:D,onChange:e=>O(e.target.value)})})]}),(0,n.jsx)("div",{className:"col-span-2",children:(0,n.jsx)(o.$n,{type:"submit",variant:"ghost",disabled:"master"===b&&0===t.length,children:"+ 食品を追加"})})]}),T.length>0&&(0,n.jsxs)("div",{className:"mt-3 rounded-lg border border-neutral-200 bg-neutral-50 p-3",children:[(0,n.jsx)("ul",{className:"divide-y divide-neutral-200",children:T.map(e=>(0,n.jsxs)("li",{className:"flex items-center justify-between py-1.5 text-sm",children:[(0,n.jsxs)("span",{children:[(0,n.jsx)("span",{className:"font-medium",children:e.name}),"master"===e.kind&&1!==e.quantity&&(0,n.jsxs)("span",{className:"ml-1 text-neutral-500",children:["\xd7",e.quantity]})]}),(0,n.jsxs)("span",{className:"flex items-center gap-3",children:[(0,n.jsxs)("span",{className:"tabular-nums text-neutral-600",children:[k(e)," kcal"]}),(0,n.jsx)("button",{type:"button",onClick:()=>{var t;return t=e.key,void A(e=>e.filter(e=>e.key!==t))},className:"rounded px-1.5 text-red-600 hover:bg-red-50","aria-label":"削除",children:"\xd7"})]})]},e.key))}),(0,n.jsxs)("div",{className:"mt-2 flex justify-between border-t border-neutral-200 pt-2 text-sm font-medium",children:[(0,n.jsxs)("span",{children:["合計(",T.length,"件)"]}),(0,n.jsxs)("span",{className:"tabular-nums",children:[B.toLocaleString()," kcal"]})]})]}),(0,n.jsxs)("div",{className:"mt-3 grid grid-cols-2 gap-3",children:[(0,n.jsx)(o.D0,{label:"区分",children:(0,n.jsx)(o.l6,{value:P,onChange:e=>E(e.target.value),children:s.map(e=>(0,n.jsx)("option",{value:e,children:i[e]},e))})}),(0,n.jsx)(o.D0,{label:"摂取日時",children:(0,n.jsx)(o.pd,{type:"datetime-local",value:L,onChange:e=>I(e.target.value)})}),(0,n.jsx)("div",{className:"col-span-2",children:(0,n.jsx)(o.$n,{type:"button",onClick:F,disabled:J||0===T.length,children:J?"記録中…":"まとめて記録".concat(T.length>0?"(".concat(T.length,"件・").concat(B.toLocaleString()," kcal)"):"")})})]})]}),(0,n.jsxs)(o.Zp,{children:[(0,n.jsx)(o._x,{children:"今日の記録"}),0===c.length?(0,n.jsx)("p",{className:"text-sm text-neutral-500",children:"まだ記録がありません。"}):(0,n.jsx)("ul",{className:"divide-y divide-neutral-100",children:c.map(e=>(0,n.jsx)(v,{record:e,onChanged:z},e.id))})]})]})}}},e=>{e.O(0,[441,255,358],()=>e(e.s=3545)),_N_E=e.O()}]);
@@ -0,0 +1 @@
1
+ /*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-orange-100:oklch(95.4% .038 75.164);--color-orange-700:oklch(55.3% .195 38.402);--color-amber-100:oklch(96.2% .059 95.617);--color-amber-700:oklch(55.5% .163 48.998);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-indigo-100:oklch(93% .034 272.788);--color-indigo-700:oklch(45.7% .24 277.023);--color-neutral-50:oklch(98.5% 0 0);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.col-span-2{grid-column:span 2/span 2}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mb-1{margin-bottom:var(--spacing)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.h-0{height:0}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-full{height:100%}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-24{width:calc(var(--spacing) * 24)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-neutral-100>:not(:last-child)){border-color:var(--color-neutral-100)}:where(.divide-neutral-200>:not(:last-child)){border-color:var(--color-neutral-200)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-neutral-200{border-color:var(--color-neutral-200)}.border-neutral-300{border-color:var(--color-neutral-300)}.border-neutral-500{border-color:var(--color-neutral-500)}.bg-amber-100{background-color:var(--color-amber-100)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-indigo-100{background-color:var(--color-indigo-100)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-200{background-color:var(--color-neutral-200)}.bg-neutral-900{background-color:var(--color-neutral-900)}.bg-orange-100{background-color:var(--color-orange-100)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-500{background-color:var(--color-red-500)}.bg-white{background-color:var(--color-white)}.p-3{padding:calc(var(--spacing) * 3)}.p-5{padding:calc(var(--spacing) * 5)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-5{padding-block:calc(var(--spacing) * 5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pb-1{padding-bottom:var(--spacing)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.text-right{text-align:right}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-amber-700{color:var(--color-amber-700)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-indigo-700{color:var(--color-indigo-700)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-700{color:var(--color-neutral-700)}.text-neutral-800{color:var(--color-neutral-800)}.text-orange-700{color:var(--color-orange-700)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-white{color:var(--color-white)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:bg-neutral-200:hover{background-color:var(--color-neutral-200)}.hover\:bg-neutral-700:hover{background-color:var(--color-neutral-700)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:text-neutral-900:hover{color:var(--color-neutral-900)}}.focus\:border-neutral-500:focus{border-color:var(--color-neutral-500)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-neutral-400:disabled{background-color:var(--color-neutral-400)}}:root{--background:#f7f7f5;--foreground:#1f1f1f}body,html{background:var(--background);color:var(--foreground)}body{font-family:system-ui,-apple-system,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}
@@ -19,6 +19,7 @@
19
19
  "@visx/scale": "^4.0.0",
20
20
  "@visx/shape": "^4.0.0",
21
21
  "@visx/tooltip": "^4.0.0",
22
+ "lucide-react": "^1.22.0",
22
23
  "next": "^15.2.0",
23
24
  "react": "^19.0.0",
24
25
  "react-dom": "^19.0.0"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minimalcorp/meshi",
3
- "version": "0.2.1",
3
+ "version": "0.2.2",
4
4
  "description": "摂取カロリーを記録し、目標に対する進捗を可視化するローカルツール。npx 一発で web + server を起動する。",
5
5
  "keywords": [
6
6
  "meshi",
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[105],{960:(e,t,a)=>{"use strict";a.d(t,{Jp:()=>l,Mu:()=>r,Pb:()=>s,XR:()=>c});async function n(e,t){let a=await fetch("".concat("").concat(e),{cache:"no-store",...t,headers:{...(null==t?void 0:t.body)!=null?{"content-type":"application/json"}:{},...null==t?void 0:t.headers}});if(!a.ok){let t="";try{t=JSON.stringify(await a.json())}catch(e){}throw Error("API ".concat(a.status," ").concat(e," ").concat(t))}if(204!==a.status)return a.json()}let r={list:function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return n("/api/foods".concat(e?"?includeArchived=true":""))},create:e=>n("/api/foods",{method:"POST",body:JSON.stringify(e)}),update:(e,t)=>n("/api/foods/".concat(e),{method:"PATCH",body:JSON.stringify(t)})},l={list:e=>{let t=new URLSearchParams;(null==e?void 0:e.from)&&t.set("from",e.from),(null==e?void 0:e.to)&&t.set("to",e.to),(null==e?void 0:e.mealType)&&t.set("mealType",e.mealType);let a=t.toString();return n("/api/records".concat(a?"?".concat(a):""))},create:e=>n("/api/records",{method:"POST",body:JSON.stringify(e)}),createBatch:e=>n("/api/records/batch",{method:"POST",body:JSON.stringify({items:e})}),update:(e,t)=>n("/api/records/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),remove:e=>n("/api/records/".concat(e),{method:"DELETE"})},s={list:()=>n("/api/goals"),current:()=>n("/api/goals/current"),create:e=>n("/api/goals",{method:"POST",body:JSON.stringify(e)}),remove:e=>n("/api/goals/".concat(e),{method:"DELETE"})},c={get:(e,t)=>{let a=new URLSearchParams({period:e});return t&&a.set("date",t),n("/api/summary?".concat(a.toString()))}}},3399:(e,t,a)=>{Promise.resolve().then(a.bind(a,4686))},4686:(e,t,a)=>{"use strict";a.d(t,{Dashboard:()=>y});var n=a(5155),r=a(2115),l=a(960),s=a(4804),c=a(5307),o=a(1594),i=a(4340),d=a(6449),u=a(4400),m=a(7882),h=a(251),x=a(6263);let g={top:12,right:12,bottom:28,left:44};function f(e){let t=new Date("".concat(e,"T00:00:00"));return"".concat(t.getMonth()+1,"/").concat(t.getDate())}function p(e){let{days:t}=e,[a,l]=function(){let e=(0,r.useRef)(null),[t,a]=(0,r.useState)(0);return(0,r.useEffect)(()=>{let t=e.current;if(!t)return;let n=new ResizeObserver(e=>{for(let t of e)a(t.contentRect.width)});return n.observe(t),()=>n.disconnect()},[]),[e,t]}(),{tooltipData:s,tooltipLeft:c,tooltipTop:p,tooltipOpen:b,showTooltip:j,hideTooltip:y}=(0,h.fS)(),v=Math.max(0,l-g.left-g.right),N=240-g.top-g.bottom,w=(0,r.useMemo)(()=>(0,u.WH)({domain:t.map(e=>e.date),range:[0,v],padding:.3}),[t,v]),S=(0,r.useMemo)(()=>100*Math.ceil(Math.max(1,...t.map(e=>{var t;return Math.max(e.total,null!=(t=e.target)?t:0)}))/100),[t]),k=(0,r.useMemo)(()=>(0,u.m4)({domain:[0,S],range:[N,0],nice:!0}),[S,N]),D=Math.max(1,Math.ceil(t.length/10));return(0,n.jsxs)("div",{ref:a,className:"relative w-full",children:[l>0&&(0,n.jsx)("svg",{width:l,height:240,children:(0,n.jsxs)(d.Y,{left:g.left,top:g.top,children:[(0,n.jsx)(i.YN,{scale:k,width:v,stroke:"#eee",numTicks:4}),t.map(e=>{var t;let a=null!=(t=w(e.date))?t:0,r=N-k(e.total),l=null!==e.target&&e.total>e.target;return(0,n.jsx)(m.yP,{x:a,y:k(e.total),width:w.bandwidth(),height:Math.max(0,r),rx:2,fill:l?"#ef4444":"#10b981",onMouseMove:t=>{var a,n;let r=(0,x.w)(t);j({tooltipData:e,tooltipLeft:(null!=(a=null==r?void 0:r.x)?a:0)+8,tooltipTop:(null!=(n=null==r?void 0:r.y)?n:0)-8})},onMouseLeave:y},e.date)}),(0,n.jsx)(m.Wi,{data:t.filter(e=>null!==e.target),x:e=>{var t;return(null!=(t=w(e.date))?t:0)+w.bandwidth()/2},y:e=>{var t;return k(null!=(t=e.target)?t:0)},stroke:"#737373",strokeWidth:1.5,strokeDasharray:"4 3"}),(0,n.jsx)(o.DZ,{scale:k,numTicks:4,stroke:"#ccc",tickStroke:"#ccc",tickLabelProps:()=>({fill:"#888",fontSize:10,dx:-2,dy:3})}),(0,n.jsx)(o.XI,{top:N,scale:w,stroke:"#ccc",tickStroke:"#ccc",tickFormat:e=>f(String(e)),tickValues:t.filter((e,t)=>t%D==0).map(e=>e.date),tickLabelProps:()=>({fill:"#888",fontSize:10,textAnchor:"middle"})})]})}),b&&s&&(0,n.jsxs)(h.du,{left:c,top:p,style:{...h.k5,fontSize:12},children:[(0,n.jsx)("div",{className:"font-medium",children:f(s.date)}),(0,n.jsxs)("div",{children:["摂取: ",s.total.toLocaleString()," kcal"]}),(0,n.jsxs)("div",{children:["目標:"," ",null!==s.target?"".concat(s.target.toLocaleString()," kcal"):"—"]})]}),(0,n.jsxs)("div",{className:"mt-2 flex gap-4 text-xs text-neutral-500",children:[(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[(0,n.jsx)("span",{className:"inline-block h-2 w-2 rounded-sm bg-emerald-500"})," 目標内"]}),(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[(0,n.jsx)("span",{className:"inline-block h-2 w-2 rounded-sm bg-red-500"})," 超過"]}),(0,n.jsxs)("span",{className:"flex items-center gap-1",children:[(0,n.jsx)("span",{className:"inline-block h-0 w-3 border-t border-dashed border-neutral-500"})," ","目標ライン"]})]})]})}let b={day:"日次",week:"週次",month:"月次"};function j(e,t,a){let n=new Date(e);return"day"===t?n.setDate(n.getDate()+a):"week"===t?n.setDate(n.getDate()+7*a):n.setMonth(n.getMonth()+a),n}function y(){var e;let[t,a]=(0,r.useState)("day"),[o,i]=(0,r.useState)(new Date),[d,u]=(0,r.useState)(null),[m,h]=(0,r.useState)(null),x=(0,r.useCallback)(async()=>{try{u(await l.XR.get(t,(0,s.JN)(o)))}catch(e){h(String(e))}},[t,o]);(0,r.useEffect)(()=>{x()},[x]);let g=d&&d.target?Math.round(d.total/d.target*100):null,f=(null==d?void 0:d.diff)!==null&&(null==d?void 0:d.diff)!==void 0&&d.diff>0,y=d&&d.target?f?Math.round(d.target/d.total*100):Math.min(100,null!=g?g:0):0,v=f?100-y:0;return(0,n.jsxs)("div",{className:"space-y-6",children:[m&&(0,n.jsx)("div",{className:"rounded-md bg-red-50 px-3 py-2 text-sm text-red-700",children:m}),(0,n.jsxs)("div",{className:"flex items-center justify-between",children:[(0,n.jsx)("div",{className:"flex gap-1",children:["day","week","month"].map(e=>(0,n.jsx)("button",{onClick:()=>a(e),className:"rounded-md px-3 py-1.5 text-sm ".concat(t===e?"bg-neutral-900 text-white":"bg-neutral-100 text-neutral-700"),children:b[e]},e))}),(0,n.jsxs)("div",{className:"flex items-center gap-1",children:[(0,n.jsx)("button",{onClick:()=>i(e=>j(e,t,-1)),className:"rounded-md bg-neutral-100 px-2 py-1.5 text-sm hover:bg-neutral-200",children:"←"}),(0,n.jsx)("button",{onClick:()=>i(new Date),className:"rounded-md bg-neutral-100 px-3 py-1.5 text-sm hover:bg-neutral-200",children:"今"}),(0,n.jsx)("button",{onClick:()=>i(e=>j(e,t,1)),className:"rounded-md bg-neutral-100 px-2 py-1.5 text-sm hover:bg-neutral-200",children:"→"})]})]}),d?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)(c.Zp,{children:[(0,n.jsx)("div",{className:"mb-1 text-sm text-neutral-500",children:function(e){let t=new Date(e.from),a=new Date(e.to);if(a.setDate(a.getDate()-1),"day"===e.period)return t.toLocaleDateString("ja-JP",{dateStyle:"long"});let n=e=>e.toLocaleDateString("ja-JP",{month:"short",day:"numeric"});return"month"===e.period?t.toLocaleDateString("ja-JP",{year:"numeric",month:"long"}):"".concat(n(t)," 〜 ").concat(n(a))}(d)}),(0,n.jsxs)("div",{className:"flex items-end gap-3",children:[(0,n.jsx)("span",{className:"text-4xl font-bold",children:d.total.toLocaleString()}),(0,n.jsxs)("span",{className:"pb-1 text-sm text-neutral-500",children:["kcal"," ",null!==d.target?"/ 目標 ".concat(d.target.toLocaleString()," kcal"):"(目標未設定)"]})]}),null!==g&&(0,n.jsxs)(n.Fragment,{children:[(0,n.jsxs)("div",{className:"mt-3 flex h-2.5 w-full overflow-hidden rounded-full bg-neutral-200",children:[(0,n.jsx)("div",{className:"h-full bg-emerald-500",style:{width:"".concat(y,"%")}}),v>0&&(0,n.jsx)("div",{className:"h-full bg-red-500",style:{width:"".concat(v,"%")}})]}),(0,n.jsxs)("div",{className:"mt-2 flex justify-between text-sm",children:[(0,n.jsxs)("span",{className:"text-neutral-500",children:["達成率 ",g,"%"]}),(0,n.jsxs)("span",{className:f?"text-red-600":"text-emerald-600",children:[f?"超過":"残り"," ",Math.abs(null!=(e=d.diff)?e:0).toLocaleString()," kcal"]})]})]})]}),"day"!==d.period&&(0,n.jsxs)(c.Zp,{children:[(0,n.jsx)(c._x,{children:"カロリー推移"}),(0,n.jsx)(p,{days:d.days})]}),(0,n.jsxs)(c.Zp,{children:[(0,n.jsx)(c._x,{children:"日別内訳"}),(0,n.jsx)("ul",{className:"divide-y divide-neutral-100 text-sm",children:d.days.map(e=>{let t=null!==e.target&&e.total>e.target;return(0,n.jsxs)("li",{className:"flex items-center justify-between py-1.5",children:[(0,n.jsx)("span",{className:"text-neutral-600",children:new Date("".concat(e.date,"T00:00:00")).toLocaleDateString("ja-JP",{month:"numeric",day:"numeric",weekday:"short"})}),(0,n.jsxs)("span",{className:"flex items-center gap-3 tabular-nums",children:[(0,n.jsxs)("span",{className:t?"font-medium text-red-600":"",children:[e.total.toLocaleString()," kcal"]}),(0,n.jsx)("span",{className:"w-24 text-right text-neutral-400",children:null!==e.target?"目標 ".concat(e.target.toLocaleString()):"—"})]})]},e.date)})})]})]}):(0,n.jsx)("p",{className:"text-sm text-neutral-500",children:"読み込み中…"})]})}},4804:(e,t,a)=>{"use strict";function n(e){let t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(a,"-").concat(n)}function r(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function l(e){let t=r(e);return t.setDate(t.getDate()+1),t}function s(e){let t=e.getTimezoneOffset();return new Date(e.getTime()-6e4*t).toISOString().slice(0,16)}function c(e){let t=new Date(e);return"".concat(String(t.getHours()).padStart(2,"0"),":").concat(String(t.getMinutes()).padStart(2,"0"))}a.d(t,{D0:()=>l,JN:()=>n,fU:()=>c,iI:()=>s,ol:()=>r})},5307:(e,t,a)=>{"use strict";a.d(t,{$n:()=>s,D0:()=>i,Zp:()=>r,_x:()=>l,l6:()=>o,pd:()=>c});var n=a(5155);function r(e){let{children:t,className:a=""}=e;return(0,n.jsx)("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 shadow-sm ".concat(a),children:t})}function l(e){let{children:t}=e;return(0,n.jsx)("h2",{className:"mb-3 text-base font-semibold text-neutral-800",children:t})}function s(e){let{children:t,variant:a="primary",className:r="",...l}=e;return(0,n.jsx)("button",{className:"rounded-md px-3 py-1.5 text-sm font-medium transition disabled:cursor-not-allowed ".concat({primary:"bg-neutral-900 text-white hover:bg-neutral-700 disabled:bg-neutral-400",ghost:"bg-neutral-100 text-neutral-700 hover:bg-neutral-200",danger:"text-red-600 hover:bg-red-50"}[a]," ").concat(r),...l,children:t})}function c(e){return(0,n.jsx)("input",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...e})}function o(e){return(0,n.jsx)("select",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...e})}function i(e){let{label:t,children:a}=e;return(0,n.jsxs)("label",{className:"block",children:[(0,n.jsx)("span",{className:"mb-1 block text-xs font-medium text-neutral-500",children:t}),a]})}}},e=>{e.O(0,[181,441,255,358],()=>e(e.s=3399)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- (self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[974],{674:(e,t,a)=>{"use strict";a.d(t,{RecordEntry:()=>m});var n=a(5155),l=a(2115),s=a(960);let r=["breakfast","lunch","dinner","snack"],i={breakfast:"朝食",lunch:"昼食",dinner:"夕食",snack:"間食"};var c=a(4804),d=a(5307);function o(e){let{record:t,onChanged:a}=e,[o,u]=(0,l.useState)(!1),[m,h]=(0,l.useState)(t.name),[x,p]=(0,l.useState)(String(t.calories)),[g,b]=(0,l.useState)(t.mealType),[f,j]=(0,l.useState)((0,c.iI)(new Date(t.consumedAt))),[v,y]=(0,l.useState)(!1),[S,N]=(0,l.useState)(null);async function k(){y(!0),N(null);try{await s.Jp.update(t.id,{name:m,calories:Number(x),mealType:g,consumedAt:new Date(f).toISOString()}),u(!1),await a()}catch(e){N(String(e))}finally{y(!1)}}async function w(){y(!0);try{await s.Jp.remove(t.id),await a()}finally{y(!1)}}return o?(0,n.jsxs)("li",{className:"py-2 text-sm",children:[(0,n.jsxs)("div",{className:"grid grid-cols-2 gap-2",children:[(0,n.jsx)(d.pd,{value:m,onChange:e=>h(e.target.value),placeholder:"食品名"}),(0,n.jsx)(d.pd,{type:"number",min:"0",value:x,onChange:e=>p(e.target.value),placeholder:"kcal"}),(0,n.jsx)(d.l6,{value:g,onChange:e=>b(e.target.value),children:r.map(e=>(0,n.jsx)("option",{value:e,children:i[e]},e))}),(0,n.jsx)(d.pd,{type:"datetime-local",value:f,onChange:e=>j(e.target.value)})]}),S&&(0,n.jsx)("p",{className:"mt-1 text-xs text-red-600",children:S}),(0,n.jsxs)("div",{className:"mt-2 flex gap-2",children:[(0,n.jsx)(d.$n,{onClick:k,disabled:v,children:v?"保存中…":"保存"}),(0,n.jsx)(d.$n,{variant:"ghost",onClick:()=>u(!1),disabled:v,children:"キャンセル"})]})]}):(0,n.jsxs)("li",{className:"flex items-center justify-between py-2 text-sm",children:[(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsx)("span",{className:"w-10 rounded bg-neutral-100 px-1 py-0.5 text-center text-xs text-neutral-600",children:i[t.mealType]}),(0,n.jsx)("span",{className:"text-neutral-400",children:(0,c.fU)(t.consumedAt)}),(0,n.jsx)("span",{className:"font-medium",children:t.name})]}),(0,n.jsxs)("div",{className:"flex items-center gap-2",children:[(0,n.jsxs)("span",{className:"tabular-nums",children:[t.calories," kcal"]}),(0,n.jsx)(d.$n,{variant:"ghost",onClick:function(){h(t.name),p(String(t.calories)),b(t.mealType),j((0,c.iI)(new Date(t.consumedAt))),N(null),u(!0)},disabled:v,children:"編集"}),(0,n.jsx)(d.$n,{variant:"danger",onClick:w,disabled:v,children:"削除"})]})]})}function u(e){return"master"===e.kind?Math.round(e.perServing*e.quantity):e.calories}function m(){var e;let[t,a]=(0,l.useState)([]),[m,h]=(0,l.useState)([]),[x,p]=(0,l.useState)(null),[g,b]=(0,l.useState)(!0),[f,j]=(0,l.useState)(null),[v,y]=(0,l.useState)("master"),[S,N]=(0,l.useState)(""),[k,w]=(0,l.useState)("1"),[D,C]=(0,l.useState)(""),[O,T]=(0,l.useState)(""),[P,I]=(0,l.useState)([]),[J,E]=(0,l.useState)("breakfast"),[A,L]=(0,l.useState)((0,c.iI)(new Date)),[M,_]=(0,l.useState)(!1),$=(0,l.useRef)(0),q=()=>String(++$.current);async function R(){let e=new Date,[t,n,l]=await Promise.all([s.Mu.list(),s.Jp.list({from:(0,c.ol)(e).toISOString(),to:(0,c.D0)(e).toISOString()}),s.Pb.current()]);a(t),h(n),p(l),!S&&t.length>0&&N(t[0].id)}(0,l.useEffect)(()=>{R().catch(e=>j(String(e))).finally(()=>b(!1))},[]);let H=(0,l.useMemo)(()=>m.reduce((e,t)=>e+t.calories,0),[m]),U=null!=(e=null==x?void 0:x.dailyTarget)?e:null,Z=U?Math.min(100,Math.round(H/U*100)):null,F=t.find(e=>e.id===S),B="master"===v&&F?Math.round(F.caloriesPerServing*(Number(k)||0)):null,z=(0,l.useMemo)(()=>P.reduce((e,t)=>e+u(t),0),[P]);async function X(){if(0===P.length)return void j("食品を追加してください");_(!0),j(null);try{let e=new Date(A).toISOString();await s.Jp.createBatch(P.map(t=>"master"===t.kind?{foodId:t.foodId,quantity:t.quantity,mealType:J,consumedAt:e}:{name:t.name,calories:t.calories,mealType:J,consumedAt:e})),I([]),await R()}catch(e){j(String(e))}finally{_(!1)}}return g?(0,n.jsx)("p",{className:"text-sm text-neutral-500",children:"読み込み中…"}):(0,n.jsxs)("div",{className:"space-y-6",children:[f&&(0,n.jsx)("div",{className:"rounded-md bg-red-50 px-3 py-2 text-sm text-red-700",children:f}),(0,n.jsxs)(d.Zp,{children:[(0,n.jsx)(d._x,{children:"今日の摂取"}),(0,n.jsxs)("div",{className:"flex items-end gap-2",children:[(0,n.jsx)("span",{className:"text-3xl font-bold",children:H.toLocaleString()}),(0,n.jsxs)("span",{className:"text-sm text-neutral-500",children:["kcal",U?" / 目標 ".concat(U.toLocaleString()," kcal"):"(目標未設定)"]})]}),null!==Z&&(0,n.jsx)("div",{className:"mt-3 h-2 w-full overflow-hidden rounded-full bg-neutral-200",children:(0,n.jsx)("div",{className:"h-full ".concat(H>(null!=U?U:0)?"bg-red-500":"bg-emerald-500"),style:{width:"".concat(Z,"%")}})})]}),(0,n.jsxs)(d.Zp,{children:[(0,n.jsx)(d._x,{children:"記録する"}),(0,n.jsx)("p",{className:"mb-3 text-xs text-neutral-500",children:"食品を追加してから「まとめて記録」。米とサバ缶のように複数をまとめて1つの食事として登録できます。"}),(0,n.jsxs)("div",{className:"mb-3 flex gap-1 text-sm",children:[(0,n.jsx)("button",{type:"button",onClick:()=>y("master"),className:"rounded-md px-3 py-1 ".concat("master"===v?"bg-neutral-900 text-white":"bg-neutral-100"),children:"マスタから"}),(0,n.jsx)("button",{type:"button",onClick:()=>y("adhoc"),className:"rounded-md px-3 py-1 ".concat("adhoc"===v?"bg-neutral-900 text-white":"bg-neutral-100"),children:"その場で入力"})]}),(0,n.jsxs)("form",{onSubmit:function(e){if(e.preventDefault(),j(null),"master"===v){let e=t.find(e=>e.id===S);if(!e)return void j("食品を選択してください");I(t=>[...t,{key:q(),kind:"master",foodId:e.id,name:e.name,perServing:e.caloriesPerServing,quantity:Number(k)||1}])}else{if(!D.trim()||""===O)return void j("食品名とカロリーを入力してください");I(e=>[...e,{key:q(),kind:"adhoc",name:D.trim(),calories:Number(O)}]),C(""),T("")}},className:"grid grid-cols-2 gap-3",children:["master"===v?(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)("div",{className:"col-span-2",children:(0,n.jsx)(d.D0,{label:"食品",children:0===t.length?(0,n.jsx)("p",{className:"text-sm text-neutral-500",children:"食品マスタが空です。「食品マスタ」から登録してください。"}):(0,n.jsx)(d.l6,{value:S,onChange:e=>N(e.target.value),children:t.map(e=>(0,n.jsxs)("option",{value:e.id,children:[e.name,"(",e.caloriesPerServing," kcal",e.unitLabel?" / ".concat(e.unitLabel):"",")"]},e.id))})})}),(0,n.jsx)(d.D0,{label:"数量",children:(0,n.jsx)(d.pd,{type:"number",step:"0.1",min:"0",value:k,onChange:e=>w(e.target.value)})}),(0,n.jsx)("div",{className:"flex items-end pb-1",children:(0,n.jsx)("p",{className:"text-sm text-neutral-500",children:null!==B?"= ".concat(B," kcal"):""})})]}):(0,n.jsxs)(n.Fragment,{children:[(0,n.jsx)(d.D0,{label:"食品名",children:(0,n.jsx)(d.pd,{value:D,onChange:e=>C(e.target.value)})}),(0,n.jsx)(d.D0,{label:"カロリー (kcal)",children:(0,n.jsx)(d.pd,{type:"number",min:"0",value:O,onChange:e=>T(e.target.value)})})]}),(0,n.jsx)("div",{className:"col-span-2",children:(0,n.jsx)(d.$n,{type:"submit",variant:"ghost",disabled:"master"===v&&0===t.length,children:"+ 食品を追加"})})]}),P.length>0&&(0,n.jsxs)("div",{className:"mt-3 rounded-lg border border-neutral-200 bg-neutral-50 p-3",children:[(0,n.jsx)("ul",{className:"divide-y divide-neutral-200",children:P.map(e=>(0,n.jsxs)("li",{className:"flex items-center justify-between py-1.5 text-sm",children:[(0,n.jsxs)("span",{children:[(0,n.jsx)("span",{className:"font-medium",children:e.name}),"master"===e.kind&&1!==e.quantity&&(0,n.jsxs)("span",{className:"ml-1 text-neutral-500",children:["\xd7",e.quantity]})]}),(0,n.jsxs)("span",{className:"flex items-center gap-3",children:[(0,n.jsxs)("span",{className:"tabular-nums text-neutral-600",children:[u(e)," kcal"]}),(0,n.jsx)("button",{type:"button",onClick:()=>{var t;return t=e.key,void I(e=>e.filter(e=>e.key!==t))},className:"rounded px-1.5 text-red-600 hover:bg-red-50","aria-label":"削除",children:"\xd7"})]})]},e.key))}),(0,n.jsxs)("div",{className:"mt-2 flex justify-between border-t border-neutral-200 pt-2 text-sm font-medium",children:[(0,n.jsxs)("span",{children:["合計(",P.length,"件)"]}),(0,n.jsxs)("span",{className:"tabular-nums",children:[z.toLocaleString()," kcal"]})]})]}),(0,n.jsxs)("div",{className:"mt-3 grid grid-cols-2 gap-3",children:[(0,n.jsx)(d.D0,{label:"区分",children:(0,n.jsx)(d.l6,{value:J,onChange:e=>E(e.target.value),children:r.map(e=>(0,n.jsx)("option",{value:e,children:i[e]},e))})}),(0,n.jsx)(d.D0,{label:"摂取日時",children:(0,n.jsx)(d.pd,{type:"datetime-local",value:A,onChange:e=>L(e.target.value)})}),(0,n.jsx)("div",{className:"col-span-2",children:(0,n.jsx)(d.$n,{type:"button",onClick:X,disabled:M||0===P.length,children:M?"記録中…":"まとめて記録".concat(P.length>0?"(".concat(P.length,"件・").concat(z.toLocaleString()," kcal)"):"")})})]})]}),(0,n.jsxs)(d.Zp,{children:[(0,n.jsx)(d._x,{children:"今日の記録"}),0===m.length?(0,n.jsx)("p",{className:"text-sm text-neutral-500",children:"まだ記録がありません。"}):(0,n.jsx)("ul",{className:"divide-y divide-neutral-100",children:m.map(e=>(0,n.jsx)(o,{record:e,onChanged:R},e.id))})]})]})}},960:(e,t,a)=>{"use strict";a.d(t,{Jp:()=>s,Mu:()=>l,Pb:()=>r,XR:()=>i});async function n(e,t){let a=await fetch("".concat("").concat(e),{cache:"no-store",...t,headers:{...(null==t?void 0:t.body)!=null?{"content-type":"application/json"}:{},...null==t?void 0:t.headers}});if(!a.ok){let t="";try{t=JSON.stringify(await a.json())}catch(e){}throw Error("API ".concat(a.status," ").concat(e," ").concat(t))}if(204!==a.status)return a.json()}let l={list:function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return n("/api/foods".concat(e?"?includeArchived=true":""))},create:e=>n("/api/foods",{method:"POST",body:JSON.stringify(e)}),update:(e,t)=>n("/api/foods/".concat(e),{method:"PATCH",body:JSON.stringify(t)})},s={list:e=>{let t=new URLSearchParams;(null==e?void 0:e.from)&&t.set("from",e.from),(null==e?void 0:e.to)&&t.set("to",e.to),(null==e?void 0:e.mealType)&&t.set("mealType",e.mealType);let a=t.toString();return n("/api/records".concat(a?"?".concat(a):""))},create:e=>n("/api/records",{method:"POST",body:JSON.stringify(e)}),createBatch:e=>n("/api/records/batch",{method:"POST",body:JSON.stringify({items:e})}),update:(e,t)=>n("/api/records/".concat(e),{method:"PATCH",body:JSON.stringify(t)}),remove:e=>n("/api/records/".concat(e),{method:"DELETE"})},r={list:()=>n("/api/goals"),current:()=>n("/api/goals/current"),create:e=>n("/api/goals",{method:"POST",body:JSON.stringify(e)}),remove:e=>n("/api/goals/".concat(e),{method:"DELETE"})},i={get:(e,t)=>{let a=new URLSearchParams({period:e});return t&&a.set("date",t),n("/api/summary?".concat(a.toString()))}}},3545:(e,t,a)=>{Promise.resolve().then(a.bind(a,674))},4804:(e,t,a)=>{"use strict";function n(e){let t=e.getFullYear(),a=String(e.getMonth()+1).padStart(2,"0"),n=String(e.getDate()).padStart(2,"0");return"".concat(t,"-").concat(a,"-").concat(n)}function l(e){let t=new Date(e);return t.setHours(0,0,0,0),t}function s(e){let t=l(e);return t.setDate(t.getDate()+1),t}function r(e){let t=e.getTimezoneOffset();return new Date(e.getTime()-6e4*t).toISOString().slice(0,16)}function i(e){let t=new Date(e);return"".concat(String(t.getHours()).padStart(2,"0"),":").concat(String(t.getMinutes()).padStart(2,"0"))}a.d(t,{D0:()=>s,JN:()=>n,fU:()=>i,iI:()=>r,ol:()=>l})},5307:(e,t,a)=>{"use strict";a.d(t,{$n:()=>r,D0:()=>d,Zp:()=>l,_x:()=>s,l6:()=>c,pd:()=>i});var n=a(5155);function l(e){let{children:t,className:a=""}=e;return(0,n.jsx)("div",{className:"rounded-xl border border-neutral-200 bg-white p-5 shadow-sm ".concat(a),children:t})}function s(e){let{children:t}=e;return(0,n.jsx)("h2",{className:"mb-3 text-base font-semibold text-neutral-800",children:t})}function r(e){let{children:t,variant:a="primary",className:l="",...s}=e;return(0,n.jsx)("button",{className:"rounded-md px-3 py-1.5 text-sm font-medium transition disabled:cursor-not-allowed ".concat({primary:"bg-neutral-900 text-white hover:bg-neutral-700 disabled:bg-neutral-400",ghost:"bg-neutral-100 text-neutral-700 hover:bg-neutral-200",danger:"text-red-600 hover:bg-red-50"}[a]," ").concat(l),...s,children:t})}function i(e){return(0,n.jsx)("input",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...e})}function c(e){return(0,n.jsx)("select",{className:"w-full rounded-md border border-neutral-300 bg-white px-3 py-1.5 text-sm outline-none focus:border-neutral-500",...e})}function d(e){let{label:t,children:a}=e;return(0,n.jsxs)("label",{className:"block",children:[(0,n.jsx)("span",{className:"mb-1 block text-xs font-medium text-neutral-500",children:t}),a]})}}},e=>{e.O(0,[441,255,358],()=>e(e.s=3545)),_N_E=e.O()}]);
@@ -1 +0,0 @@
1
- /*! tailwindcss v4.3.1 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-space-y-reverse:0;--tw-divide-y-reverse:0;--tw-border-style:solid;--tw-font-weight:initial;--tw-tracking:initial;--tw-ordinal:initial;--tw-slashed-zero:initial;--tw-numeric-figure:initial;--tw-numeric-spacing:initial;--tw-numeric-fraction:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}@layer theme{:host,:root{--font-sans:ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";--font-mono:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;--color-red-50:oklch(97.1% .013 17.38);--color-red-500:oklch(63.7% .237 25.331);--color-red-600:oklch(57.7% .245 27.325);--color-red-700:oklch(50.5% .213 27.518);--color-emerald-100:oklch(95% .052 163.051);--color-emerald-500:oklch(69.6% .17 162.48);--color-emerald-600:oklch(59.6% .145 163.225);--color-emerald-700:oklch(50.8% .118 165.612);--color-neutral-50:oklch(98.5% 0 0);--color-neutral-100:oklch(97% 0 0);--color-neutral-200:oklch(92.2% 0 0);--color-neutral-300:oklch(87% 0 0);--color-neutral-400:oklch(70.8% 0 0);--color-neutral-500:oklch(55.6% 0 0);--color-neutral-600:oklch(43.9% 0 0);--color-neutral-700:oklch(37.1% 0 0);--color-neutral-800:oklch(26.9% 0 0);--color-neutral-900:oklch(20.5% 0 0);--color-white:#fff;--spacing:.25rem;--container-3xl:48rem;--text-xs:.75rem;--text-xs--line-height:calc(1 / .75);--text-sm:.875rem;--text-sm--line-height:calc(1.25 / .875);--text-base:1rem;--text-base--line-height:calc(1.5 / 1);--text-xl:1.25rem;--text-xl--line-height:calc(1.75 / 1.25);--text-3xl:1.875rem;--text-3xl--line-height:calc(2.25 / 1.875);--text-4xl:2.25rem;--text-4xl--line-height:calc(2.5 / 2.25);--font-weight-medium:500;--font-weight-semibold:600;--font-weight-bold:700;--tracking-tight:-.025em;--radius-sm:.25rem;--radius-md:.375rem;--radius-lg:.5rem;--radius-xl:.75rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4,0,.2,1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,::backdrop,:after,:before{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}:host,html{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:var(--default-mono-font-family,ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}menu,ol,ul{list-style:none}audio,canvas,embed,iframe,img,object,svg,video{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,optgroup,select,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.col-span-2{grid-column:span 2/span 2}.mx-auto{margin-inline:auto}.mt-1{margin-top:var(--spacing)}.mt-2{margin-top:calc(var(--spacing) * 2)}.mt-3{margin-top:calc(var(--spacing) * 3)}.mb-1{margin-bottom:var(--spacing)}.mb-3{margin-bottom:calc(var(--spacing) * 3)}.ml-1{margin-left:var(--spacing)}.ml-2{margin-left:calc(var(--spacing) * 2)}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.h-0{height:0}.h-2{height:calc(var(--spacing) * 2)}.h-2\.5{height:calc(var(--spacing) * 2.5)}.h-full{height:100%}.w-2{width:calc(var(--spacing) * 2)}.w-3{width:calc(var(--spacing) * 3)}.w-10{width:calc(var(--spacing) * 10)}.w-24{width:calc(var(--spacing) * 24)}.w-full{width:100%}.max-w-3xl{max-width:var(--container-3xl)}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.items-center{align-items:center}.items-end{align-items:flex-end}.justify-between{justify-content:space-between}.gap-1{gap:var(--spacing)}.gap-2{gap:calc(var(--spacing) * 2)}.gap-3{gap:calc(var(--spacing) * 3)}.gap-4{gap:calc(var(--spacing) * 4)}:where(.space-y-6>:not(:last-child)){--tw-space-y-reverse:0;margin-block-start:calc(calc(var(--spacing) * 6) * var(--tw-space-y-reverse));margin-block-end:calc(calc(var(--spacing) * 6) * calc(1 - var(--tw-space-y-reverse)))}:where(.divide-y>:not(:last-child)){--tw-divide-y-reverse:0;border-bottom-style:var(--tw-border-style);border-top-style:var(--tw-border-style);border-top-width:calc(1px * var(--tw-divide-y-reverse));border-bottom-width:calc(1px * calc(1 - var(--tw-divide-y-reverse)))}:where(.divide-neutral-100>:not(:last-child)){border-color:var(--color-neutral-100)}:where(.divide-neutral-200>:not(:last-child)){border-color:var(--color-neutral-200)}.overflow-hidden{overflow:hidden}.rounded{border-radius:.25rem}.rounded-full{border-radius:3.40282e+38px}.rounded-lg{border-radius:var(--radius-lg)}.rounded-md{border-radius:var(--radius-md)}.rounded-sm{border-radius:var(--radius-sm)}.rounded-xl{border-radius:var(--radius-xl)}.border{border-style:var(--tw-border-style);border-width:1px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-dashed{--tw-border-style:dashed;border-style:dashed}.border-neutral-200{border-color:var(--color-neutral-200)}.border-neutral-300{border-color:var(--color-neutral-300)}.border-neutral-500{border-color:var(--color-neutral-500)}.bg-emerald-100{background-color:var(--color-emerald-100)}.bg-emerald-500{background-color:var(--color-emerald-500)}.bg-neutral-50{background-color:var(--color-neutral-50)}.bg-neutral-100{background-color:var(--color-neutral-100)}.bg-neutral-200{background-color:var(--color-neutral-200)}.bg-neutral-900{background-color:var(--color-neutral-900)}.bg-red-50{background-color:var(--color-red-50)}.bg-red-500{background-color:var(--color-red-500)}.bg-white{background-color:var(--color-white)}.p-3{padding:calc(var(--spacing) * 3)}.p-5{padding:calc(var(--spacing) * 5)}.px-1{padding-inline:var(--spacing)}.px-1\.5{padding-inline:calc(var(--spacing) * 1.5)}.px-2{padding-inline:calc(var(--spacing) * 2)}.px-3{padding-inline:calc(var(--spacing) * 3)}.px-4{padding-inline:calc(var(--spacing) * 4)}.py-0\.5{padding-block:calc(var(--spacing) * .5)}.py-1{padding-block:var(--spacing)}.py-1\.5{padding-block:calc(var(--spacing) * 1.5)}.py-2{padding-block:calc(var(--spacing) * 2)}.py-5{padding-block:calc(var(--spacing) * 5)}.pt-2{padding-top:calc(var(--spacing) * 2)}.pb-1{padding-bottom:var(--spacing)}.pb-16{padding-bottom:calc(var(--spacing) * 16)}.text-center{text-align:center}.text-right{text-align:right}.text-3xl{font-size:var(--text-3xl);line-height:var(--tw-leading,var(--text-3xl--line-height))}.text-4xl{font-size:var(--text-4xl);line-height:var(--tw-leading,var(--text-4xl--line-height))}.text-base{font-size:var(--text-base);line-height:var(--tw-leading,var(--text-base--line-height))}.text-sm{font-size:var(--text-sm);line-height:var(--tw-leading,var(--text-sm--line-height))}.text-xl{font-size:var(--text-xl);line-height:var(--tw-leading,var(--text-xl--line-height))}.text-xs{font-size:var(--text-xs);line-height:var(--tw-leading,var(--text-xs--line-height))}.font-bold{--tw-font-weight:var(--font-weight-bold);font-weight:var(--font-weight-bold)}.font-medium{--tw-font-weight:var(--font-weight-medium);font-weight:var(--font-weight-medium)}.font-semibold{--tw-font-weight:var(--font-weight-semibold);font-weight:var(--font-weight-semibold)}.tracking-tight{--tw-tracking:var(--tracking-tight);letter-spacing:var(--tracking-tight)}.text-emerald-600{color:var(--color-emerald-600)}.text-emerald-700{color:var(--color-emerald-700)}.text-neutral-400{color:var(--color-neutral-400)}.text-neutral-500{color:var(--color-neutral-500)}.text-neutral-600{color:var(--color-neutral-600)}.text-neutral-700{color:var(--color-neutral-700)}.text-neutral-800{color:var(--color-neutral-800)}.text-red-600{color:var(--color-red-600)}.text-red-700{color:var(--color-red-700)}.text-white{color:var(--color-white)}.tabular-nums{--tw-numeric-spacing:tabular-nums;font-variant-numeric:var(--tw-ordinal,) var(--tw-slashed-zero,) var(--tw-numeric-figure,) var(--tw-numeric-spacing,) var(--tw-numeric-fraction,)}.line-through{text-decoration-line:line-through}.shadow-sm{--tw-shadow:0 1px 3px 0 var(--tw-shadow-color,#0000001a),0 1px 2px -1px var(--tw-shadow-color,#0000001a);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}.outline-none{--tw-outline-style:none;outline-style:none}@media (hover:hover){.hover\:bg-neutral-200:hover{background-color:var(--color-neutral-200)}.hover\:bg-neutral-700:hover{background-color:var(--color-neutral-700)}.hover\:bg-red-50:hover{background-color:var(--color-red-50)}.hover\:text-neutral-900:hover{color:var(--color-neutral-900)}}.focus\:border-neutral-500:focus{border-color:var(--color-neutral-500)}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:bg-neutral-400:disabled{background-color:var(--color-neutral-400)}}:root{--background:#f7f7f5;--foreground:#1f1f1f}body,html{background:var(--background);color:var(--foreground)}body{font-family:system-ui,-apple-system,Hiragino Kaku Gothic ProN,Noto Sans JP,sans-serif}@property --tw-space-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-divide-y-reverse{syntax:"*";inherits:false;initial-value:0}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-font-weight{syntax:"*";inherits:false}@property --tw-tracking{syntax:"*";inherits:false}@property --tw-ordinal{syntax:"*";inherits:false}@property --tw-slashed-zero{syntax:"*";inherits:false}@property --tw-numeric-figure{syntax:"*";inherits:false}@property --tw-numeric-spacing{syntax:"*";inherits:false}@property --tw-numeric-fraction{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}