Files
aicyclingcoach-go/frontend/.next/static/chunks/pages/PlanGeneration-415cc51c6e777964.js
2025-09-12 07:32:32 -07:00

1 line
9.7 KiB
JavaScript

(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[641],{471:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return Z}});var r,a=n(8307),i=n(29),l=n(4687),c=n.n(l),s=n(7294),o=n(1163),d=n(5792),u=n(7812),b=n(2364),m=[{id:"endurance",label:"Build Endurance",description:"Focus on longer rides at moderate intensity"},{id:"power",label:"Increase Power",description:"High-intensity intervals and strength training"},{id:"weight-loss",label:"Weight Management",description:"Calorie-burning rides with nutrition planning"},{id:"event-prep",label:"Event Preparation",description:"Targeted training for specific competitions"}],p=function(e){var t=e.goals,n=e.onSelect,r=e.onNext,a=(0,s.useState)(""),i=a[0],l=a[1],c=(0,s.useState)(!1),o=c[0],d=c[1],p=function(e){n(t.includes(e)?t.filter(function(t){return t!==e}):[].concat((0,u.Z)(t),[e]))};return(0,b.BX)("div",{className:"bg-white p-6 rounded-lg shadow-md",children:[(0,b.tZ)("h2",{className:"text-2xl font-bold mb-6",children:"Select Training Goals"}),(0,b.tZ)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-8",children:m.map(function(e){return(0,b.BX)("button",{onClick:function(){return p(e.id)},className:"p-4 text-left rounded-lg border-2 transition-colors ".concat(t.includes(e.id)?"border-blue-500 bg-blue-50":"border-gray-200 hover:border-blue-200"),children:[(0,b.tZ)("h3",{className:"font-semibold mb-2",children:e.label}),(0,b.tZ)("p",{className:"text-sm text-gray-600",children:e.description})]},e.id)})}),(0,b.tZ)("div",{className:"mb-6",children:o?(0,b.BX)("div",{className:"flex gap-2",children:[(0,b.tZ)("input",{type:"text",value:i,onChange:function(e){return l(e.target.value)},placeholder:"Enter custom goal",className:"flex-1 p-2 border rounded-md"}),(0,b.tZ)("button",{onClick:function(){i.trim()&&(n([].concat((0,u.Z)(t),[i.trim()])),l(""),d(!1))},className:"bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700",children:"Add"})]}):(0,b.BX)("button",{onClick:function(){return d(!0)},className:"text-blue-600 hover:text-blue-700 flex items-center",children:[(0,b.tZ)("span",{className:"mr-2",children:"+"})," Add Custom Goal"]})}),(0,b.tZ)("div",{className:"flex justify-end",children:(0,b.tZ)("button",{onClick:r,disabled:0===t.length,className:"bg-blue-600 text-white px-6 py-2 rounded-md hover:bg-blue-700 disabled:bg-gray-400",children:"Next"})})]})};function h(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}function f(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?h(Object(n),!0).forEach(function(t){(0,a.Z)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):h(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}var g=["Monday","Tuesday","Wednesday","Thursday","Friday","Saturday","Sunday"],v=function(e){var t=e.values,n=e.onChange,r=e.onBack,i=e.onNext,l=(0,s.useState)(t),c=l[0],o=l[1];(0,s.useEffect)(function(){o(t)},[t]);var d=function(e,t){var r=f(f({},c),{},(0,a.Z)({},e,t));o(r),n(r)},m=function(e){d("availableDays",c.availableDays.includes(e)?c.availableDays.filter(function(t){return t!==e}):[].concat((0,u.Z)(c.availableDays),[e]))};return(0,b.BX)("div",{className:"bg-white p-6 rounded-lg shadow-md",children:[(0,b.tZ)("h2",{className:"text-2xl font-bold mb-6",children:"Set Plan Parameters"}),(0,b.BX)("div",{className:"space-y-6",children:[(0,b.BX)("div",{children:[(0,b.BX)("label",{className:"block text-sm font-medium mb-2",children:["Duration: ",c.duration," weeks"]}),(0,b.tZ)("input",{type:"range",min:"4",max:"20",value:c.duration,onChange:function(e){return d("duration",parseInt(e.target.value))},className:"w-full range-slider"}),(0,b.BX)("div",{className:"flex justify-between text-sm text-gray-600",children:[(0,b.tZ)("span",{children:"4"}),(0,b.tZ)("span",{children:"20"})]})]}),(0,b.BX)("div",{children:[(0,b.BX)("label",{className:"block text-sm font-medium mb-2",children:["Weekly Hours: ",c.weeklyHours,"h"]}),(0,b.tZ)("input",{type:"range",min:"5",max:"15",value:c.weeklyHours,onChange:function(e){return d("weeklyHours",parseInt(e.target.value))},className:"w-full range-slider"}),(0,b.BX)("div",{className:"flex justify-between text-sm text-gray-600",children:[(0,b.tZ)("span",{children:"5"}),(0,b.tZ)("span",{children:"15"})]})]}),(0,b.BX)("div",{children:[(0,b.tZ)("label",{className:"block text-sm font-medium mb-2",children:"Difficulty Level"}),(0,b.BX)("select",{value:c.difficulty||"intermediate",onChange:function(e){return d("difficulty",e.target.value)},className:"w-full p-2 border rounded-md",children:[(0,b.tZ)("option",{value:"beginner",children:"Beginner"}),(0,b.tZ)("option",{value:"intermediate",children:"Intermediate"}),(0,b.tZ)("option",{value:"advanced",children:"Advanced"})]})]}),(0,b.BX)("div",{children:[(0,b.tZ)("label",{className:"block text-sm font-medium mb-2",children:"Available Days"}),(0,b.tZ)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-2",children:g.map(function(e){return(0,b.BX)("label",{className:"flex items-center space-x-2",children:[(0,b.tZ)("input",{type:"checkbox",checked:c.availableDays.includes(e),onChange:function(){return m(e)},className:"form-checkbox h-4 w-4 text-blue-600"}),(0,b.tZ)("span",{className:"text-sm",children:e})]},e)})})]})]}),(0,b.BX)("div",{className:"flex justify-between mt-8",children:[(0,b.tZ)("button",{onClick:r,className:"bg-gray-200 text-gray-700 px-6 py-2 rounded-md hover:bg-gray-300",children:"Back"}),(0,b.tZ)("button",{onClick:i,disabled:0===c.availableDays.length,className:"bg-blue-600 text-white px-6 py-2 rounded-md hover:bg-blue-700 disabled:bg-gray-400",children:"Next"})]})]})},y=n(7066),x=(r=(0,i.Z)(c().mark(function e(t,n){var r,a;return c().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,y.Z.post("/api/plans/generate",n,{headers:{"X-API-Key":t}});case 3:return r=e.sent,e.abrupt("return",r.data);case 7:throw e.prev=7,e.t0=e.catch(0),Error((null===(a=e.t0.response)||void 0===a||null===(a=a.data)||void 0===a?void 0:a.error)||"Failed to generate plan");case 10:case"end":return e.stop()}},e,null,[[0,7]])})),function(e,t){return r.apply(this,arguments)}),N=function(e){var t=e.currentStep,n=e.totalSteps;return(0,b.BX)("div",{className:"mb-8",children:[(0,b.tZ)("div",{className:"flex justify-between items-center mb-2",children:(0,u.Z)(Array(n)).map(function(e,r){return(0,b.BX)("div",{className:"flex items-center",children:[(0,b.tZ)("div",{className:"w-8 h-8 rounded-full flex items-center justify-center ".concat(r+1<=t?"bg-blue-600 text-white":"bg-gray-200 text-gray-600"),children:r+1}),r<n-1&&(0,b.tZ)("div",{className:"w-16 h-1 ".concat(r+1<t?"bg-blue-600":"bg-gray-200")})]},r)})}),(0,b.BX)("div",{className:"text-sm text-gray-600 text-center",children:["Step ",t," of ",n]})]})};function w(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var r=Object.getOwnPropertySymbols(e);t&&(r=r.filter(function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable})),n.push.apply(n,r)}return n}var Z=function(){var e,t=(0,d.a)().apiKey,n=(0,o.useRouter)(),r=(0,s.useState)(1),l=r[0],u=r[1],m=(0,s.useState)([]),h=m[0],f=m[1],g=(0,s.useState)([]),y=g[0];g[1];var Z=(0,s.useState)({duration:4,weeklyHours:8,availableDays:[]}),O=Z[0],k=Z[1],j=(0,s.useState)(!1),B=j[0],S=j[1],P=(0,s.useState)(""),X=P[0],C=P[1],D=(e=(0,i.Z)(c().mark(function e(){var r;return c().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,S(!0),e.next=4,x(t,function(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?w(Object(n),!0).forEach(function(t){(0,a.Z)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):w(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({goals:h,ruleIds:y},O));case 4:r=e.sent,n.push("/plans/".concat(r.id,"/preview")),e.next=11;break;case 8:e.prev=8,e.t0=e.catch(0),C("Failed to generate plan. Please try again.");case 11:return e.prev=11,S(!1),e.finish(11);case 14:case"end":return e.stop()}},e,null,[[0,8,11,14]])})),function(){return e.apply(this,arguments)});return(0,b.BX)("div",{className:"max-w-4xl mx-auto p-6",children:[(0,b.tZ)(N,{currentStep:l,totalSteps:3}),1===l&&(0,b.tZ)(p,{goals:h,onSelect:f,onNext:function(){return u(2)}}),2===l&&(0,b.tZ)(v,{values:O,onChange:k,onBack:function(){return u(1)},onNext:function(){return u(3)}}),3===l&&(0,b.BX)("div",{className:"bg-white p-6 rounded-lg shadow-md",children:[(0,b.tZ)("h2",{className:"text-2xl font-bold mb-4",children:"Review and Generate"}),(0,b.BX)("div",{className:"mb-6",children:[(0,b.tZ)("h3",{className:"font-semibold mb-2",children:"Selected Goals:"}),(0,b.tZ)("ul",{className:"list-disc pl-5",children:h.map(function(e,t){return(0,b.tZ)("li",{children:e},t)})})]}),(0,b.tZ)("button",{onClick:D,disabled:B,className:"bg-blue-600 text-white px-6 py-2 rounded-md hover:bg-blue-700 disabled:bg-gray-400",children:B?"Generating...":"Generate Plan"}),X&&(0,b.tZ)("p",{className:"text-red-500 mt-2",children:X})]})]})}},9553:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/PlanGeneration",function(){return n(471)}])},1163:function(e,t,n){e.exports=n(8194)},7812:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(2587),a=n(2937);function i(e){return function(e){if(Array.isArray(e))return(0,r.Z)(e)}(e)||function(e){if("undefined"!=typeof Symbol&&null!=e[Symbol.iterator]||null!=e["@@iterator"])return Array.from(e)}(e)||(0,a.Z)(e)||function(){throw TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.")}()}}},function(e){e.O(0,[650,888,774,179],function(){return e(e.s=9553)}),_N_E=e.O()}]);