Files
aicyclingcoach-go/frontend/.next/static/chunks/pages/PlanGeneration-ccc0a861f54ea5ea.js
2025-09-11 13:17:45 -07:00

1 line
15 KiB
JavaScript

(self.webpackChunk_N_E=self.webpackChunk_N_E||[]).push([[641],{263:function(e,t,n){"use strict";n.d(t,{a:function(){return a}}),n(4687);var r=n(7294);n(5678),n(3454);var i=(0,r.createContext)(),a=function(){var e=(0,r.useContext)(i);if(!e)throw Error("useAuth must be used within an AuthProvider");return e}},2292:function(e,t,n){"use strict";n.r(t),n.d(t,{default:function(){return Z}});var r,i=n(8307),a=n(29),o=n(4687),l=n.n(o),c=n(7294),s=n(1163),u=n(263),d=n(7812),f=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,i=(0,c.useState)(""),a=i[0],o=i[1],l=(0,c.useState)(!1),s=l[0],u=l[1],p=function(e){n(t.includes(e)?t.filter(function(t){return t!==e}):[].concat((0,d.Z)(t),[e]))};return(0,f.BX)("div",{className:"bg-white p-6 rounded-lg shadow-md",children:[(0,f.tZ)("h2",{className:"text-2xl font-bold mb-6",children:"Select Training Goals"}),(0,f.tZ)("div",{className:"grid grid-cols-1 md:grid-cols-2 gap-4 mb-8",children:m.map(function(e){return(0,f.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,f.tZ)("h3",{className:"font-semibold mb-2",children:e.label}),(0,f.tZ)("p",{className:"text-sm text-gray-600",children:e.description})]},e.id)})}),(0,f.tZ)("div",{className:"mb-6",children:s?(0,f.BX)("div",{className:"flex gap-2",children:[(0,f.tZ)("input",{type:"text",value:a,onChange:function(e){return o(e.target.value)},placeholder:"Enter custom goal",className:"flex-1 p-2 border rounded-md"}),(0,f.tZ)("button",{onClick:function(){a.trim()&&(n([].concat((0,d.Z)(t),[a.trim()])),o(""),u(!1))},className:"bg-blue-600 text-white px-4 py-2 rounded-md hover:bg-blue-700",children:"Add"})]}):(0,f.BX)("button",{onClick:function(){return u(!0)},className:"text-blue-600 hover:text-blue-700 flex items-center",children:[(0,f.tZ)("span",{className:"mr-2",children:"+"})," Add Custom Goal"]})}),(0,f.tZ)("div",{className:"flex justify-end",children:(0,f.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 b(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 h(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?b(Object(n),!0).forEach(function(t){(0,i.Z)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):b(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,a=e.onNext,o=(0,c.useState)(t),l=o[0],s=o[1];(0,c.useEffect)(function(){s(t)},[t]);var u=function(e,t){var r=h(h({},l),{},(0,i.Z)({},e,t));s(r),n(r)},m=function(e){u("availableDays",l.availableDays.includes(e)?l.availableDays.filter(function(t){return t!==e}):[].concat((0,d.Z)(l.availableDays),[e]))};return(0,f.BX)("div",{className:"bg-white p-6 rounded-lg shadow-md",children:[(0,f.tZ)("h2",{className:"text-2xl font-bold mb-6",children:"Set Plan Parameters"}),(0,f.BX)("div",{className:"space-y-6",children:[(0,f.BX)("div",{children:[(0,f.BX)("label",{className:"block text-sm font-medium mb-2",children:["Duration: ",l.duration," weeks"]}),(0,f.tZ)("input",{type:"range",min:"4",max:"20",value:l.duration,onChange:function(e){return u("duration",parseInt(e.target.value))},className:"w-full range-slider"}),(0,f.BX)("div",{className:"flex justify-between text-sm text-gray-600",children:[(0,f.tZ)("span",{children:"4"}),(0,f.tZ)("span",{children:"20"})]})]}),(0,f.BX)("div",{children:[(0,f.BX)("label",{className:"block text-sm font-medium mb-2",children:["Weekly Hours: ",l.weeklyHours,"h"]}),(0,f.tZ)("input",{type:"range",min:"5",max:"15",value:l.weeklyHours,onChange:function(e){return u("weeklyHours",parseInt(e.target.value))},className:"w-full range-slider"}),(0,f.BX)("div",{className:"flex justify-between text-sm text-gray-600",children:[(0,f.tZ)("span",{children:"5"}),(0,f.tZ)("span",{children:"15"})]})]}),(0,f.BX)("div",{children:[(0,f.tZ)("label",{className:"block text-sm font-medium mb-2",children:"Difficulty Level"}),(0,f.BX)("select",{value:l.difficulty||"intermediate",onChange:function(e){return u("difficulty",e.target.value)},className:"w-full p-2 border rounded-md",children:[(0,f.tZ)("option",{value:"beginner",children:"Beginner"}),(0,f.tZ)("option",{value:"intermediate",children:"Intermediate"}),(0,f.tZ)("option",{value:"advanced",children:"Advanced"})]})]}),(0,f.BX)("div",{children:[(0,f.tZ)("label",{className:"block text-sm font-medium mb-2",children:"Available Days"}),(0,f.tZ)("div",{className:"grid grid-cols-2 md:grid-cols-4 gap-2",children:g.map(function(e){return(0,f.BX)("label",{className:"flex items-center space-x-2",children:[(0,f.tZ)("input",{type:"checkbox",checked:l.availableDays.includes(e),onChange:function(){return m(e)},className:"form-checkbox h-4 w-4 text-blue-600"}),(0,f.tZ)("span",{className:"text-sm",children:e})]},e)})})]})]}),(0,f.BX)("div",{className:"flex justify-between mt-8",children:[(0,f.tZ)("button",{onClick:r,className:"bg-gray-200 text-gray-700 px-6 py-2 rounded-md hover:bg-gray-300",children:"Back"}),(0,f.tZ)("button",{onClick:a,disabled:0===l.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,a.Z)(l().mark(function e(t,n){var r,i;return l().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===(i=e.t0.response)||void 0===i||null===(i=i.data)||void 0===i?void 0:i.error)||"Failed to generate plan");case 10:case"end":return e.stop()}},e,null,[[0,7]])})),function(e,t){return r.apply(this,arguments)}),w=function(e){var t=e.currentStep,n=e.totalSteps;return(0,f.BX)("div",{className:"mb-8",children:[(0,f.tZ)("div",{className:"flex justify-between items-center mb-2",children:(0,d.Z)(Array(n)).map(function(e,r){return(0,f.BX)("div",{className:"flex items-center",children:[(0,f.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,f.tZ)("div",{className:"w-16 h-1 ".concat(r+1<t?"bg-blue-600":"bg-gray-200")})]},r)})}),(0,f.BX)("div",{className:"text-sm text-gray-600 text-center",children:["Step ",t," of ",n]})]})};function N(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,u.a)().apiKey,n=(0,s.useRouter)(),r=(0,c.useState)(1),o=r[0],d=r[1],m=(0,c.useState)([]),b=m[0],h=m[1],g=(0,c.useState)([]),y=g[0];g[1];var Z=(0,c.useState)({duration:4,weeklyHours:8,availableDays:[]}),O=Z[0],S=Z[1],k=(0,c.useState)(!1),E=k[0],j=k[1],P=(0,c.useState)(""),B=P[0],I=P[1],C=(e=(0,a.Z)(l().mark(function e(){var r;return l().wrap(function(e){for(;;)switch(e.prev=e.next){case 0:return e.prev=0,j(!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?N(Object(n),!0).forEach(function(t){(0,i.Z)(e,t,n[t])}):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):N(Object(n)).forEach(function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))})}return e}({goals:b,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),I("Failed to generate plan. Please try again.");case 11:return e.prev=11,j(!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,f.BX)("div",{className:"max-w-4xl mx-auto p-6",children:[(0,f.tZ)(w,{currentStep:o,totalSteps:3}),1===o&&(0,f.tZ)(p,{goals:b,onSelect:h,onNext:function(){return d(2)}}),2===o&&(0,f.tZ)(v,{values:O,onChange:S,onBack:function(){return d(1)},onNext:function(){return d(3)}}),3===o&&(0,f.BX)("div",{className:"bg-white p-6 rounded-lg shadow-md",children:[(0,f.tZ)("h2",{className:"text-2xl font-bold mb-4",children:"Review and Generate"}),(0,f.BX)("div",{className:"mb-6",children:[(0,f.tZ)("h3",{className:"font-semibold mb-2",children:"Selected Goals:"}),(0,f.tZ)("ul",{className:"list-disc pl-5",children:b.map(function(e,t){return(0,f.tZ)("li",{children:e},t)})})]}),(0,f.tZ)("button",{onClick:C,disabled:E,className:"bg-blue-600 text-white px-6 py-2 rounded-md hover:bg-blue-700 disabled:bg-gray-400",children:E?"Generating...":"Generate Plan"}),B&&(0,f.tZ)("p",{className:"text-red-500 mt-2",children:B})]})]})}},9553:function(e,t,n){(window.__NEXT_P=window.__NEXT_P||[]).push(["/PlanGeneration",function(){return n(2292)}])},1163:function(e,t,n){e.exports=n(8194)},2587:function(e,t,n){"use strict";function r(e,t){(null==t||t>e.length)&&(t=e.length);for(var n=0,r=Array(t);n<t;n++)r[n]=e[n];return r}n.d(t,{Z:function(){return r}})},8307:function(e,t,n){"use strict";function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function i(e,t,n){var i;return i=function(e,t){if("object"!==r(e)||null===e)return e;var n=e[Symbol.toPrimitive];if(void 0!==n){var i=n.call(e,t||"default");if("object"!==r(i))return i;throw TypeError("@@toPrimitive must return a primitive value.")}return("string"===t?String:Number)(e)}(t,"string"),(t="symbol"===r(i)?i:String(i))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}n.d(t,{Z:function(){return i}})},7812:function(e,t,n){"use strict";n.d(t,{Z:function(){return a}});var r=n(2587),i=n(2937);function a(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,i.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.")}()}},2937:function(e,t,n){"use strict";n.d(t,{Z:function(){return i}});var r=n(2587);function i(e,t){if(e){if("string"==typeof e)return(0,r.Z)(e,t);var n=Object.prototype.toString.call(e).slice(8,-1);if("Object"===n&&e.constructor&&(n=e.constructor.name),"Map"===n||"Set"===n)return Array.from(e);if("Arguments"===n||/^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n))return(0,r.Z)(e,t)}}},5678:function(e,t,n){"use strict";var r=n(7294);let i=e=>"number"==typeof e&&!isNaN(e),a=e=>"string"==typeof e,o=e=>"function"==typeof e,l=e=>(0,r.isValidElement)(e)||a(e)||o(e)||i(e);function c(e){let{enter:t,exit:n,appendPosition:i=!1,collapse:a=!0,collapseDuration:o=300}=e;return function(e){let{children:l,position:c,preventExitTransition:s,done:u,nodeRef:d,isIn:f,playToast:m}=e,p=i?`${t}--${c}`:t,b=i?`${n}--${c}`:n,h=(0,r.useRef)(0);return(0,r.useLayoutEffect)(()=>{let e=d.current,t=p.split(" "),n=r=>{r.target===d.current&&(m(),e.removeEventListener("animationend",n),e.removeEventListener("animationcancel",n),0===h.current&&"animationcancel"!==r.type&&e.classList.remove(...t))};e.classList.add(...t),e.addEventListener("animationend",n),e.addEventListener("animationcancel",n)},[]),(0,r.useEffect)(()=>{let e=d.current,t=()=>{e.removeEventListener("animationend",t),a?function(e,t,n){void 0===n&&(n=300);let{scrollHeight:r,style:i}=e;requestAnimationFrame(()=>{i.minHeight="initial",i.height=r+"px",i.transition=`all ${n}ms`,requestAnimationFrame(()=>{i.height="0",i.padding="0",i.margin="0",setTimeout(t,n)})})}(e,u,o):u()};f||(s?t():(h.current=1,e.className+=` ${b}`,e.addEventListener("animationend",t)))},[f]),r.createElement(r.Fragment,null,l)}}let s=new Map,u=[],d=new Set,f=()=>s.size>0;function m(e,t){s.forEach(n=>{null!=t&&null!=t&&t.containerId?(null==t?void 0:t.containerId)===n.id&&n.toggle(e,null==t?void 0:t.id):n.toggle(e,null==t?void 0:t.id)})}let p=1,b=()=>""+p++;function h(e,t){return l(e)&&(f()||u.push({content:e,options:t}),s.forEach(n=>{n.buildToast(e,t)})),t.toastId}function g(e,t){return{...t,type:t&&t.type||e,toastId:t&&(a(t.toastId)||i(t.toastId))?t.toastId:b()}}function v(e){return(t,n)=>h(t,g(e,n))}function y(e,t){return h(e,g("default",t))}y.loading=(e,t)=>h(e,g("default",{isLoading:!0,autoClose:!1,closeOnClick:!1,closeButton:!1,draggable:!1,...t})),y.promise=function(e,t,n){let r,{pending:i,error:l,success:c}=t;i&&(r=a(i)?y.loading(i,n):y.loading(i.render,{...n,...i}));let s={isLoading:null,autoClose:null,closeOnClick:null,closeButton:null,draggable:null},u=(e,t,i)=>{if(null==t)return void y.dismiss(r);let o={type:e,...s,...n,data:i},l=a(t)?{render:t}:t;return r?y.update(r,{...o,...l}):y(l.render,{...o,...l}),i},d=o(e)?e():e;return d.then(e=>u("success",c,e)).catch(e=>u("error",l,e)),d},y.success=v("success"),y.info=v("info"),y.error=v("error"),y.warning=v("warning"),y.warn=y.warning,y.dark=(e,t)=>h(e,g("default",{theme:"dark",...t})),y.dismiss=function(e){!function(e){var t;if(f()){if(null==e||a(t=e)||i(t))s.forEach(t=>{t.removeToast(e)});else if(e&&("containerId"in e||"id"in e)){let t=s.get(e.containerId);t?t.removeToast(e.id):s.forEach(t=>{t.removeToast(e.id)})}}else u=u.filter(t=>null!=e&&t.options.toastId!==e)}(e)},y.clearWaitingQueue=function(e){void 0===e&&(e={}),s.forEach(t=>{!t.props.limit||e.containerId&&t.id!==e.containerId||t.clearQueue()})},y.isActive=function(e,t){var n;if(t)return!(null==(n=s.get(t))||!n.isToastActive(e));let r=!1;return s.forEach(t=>{t.isToastActive(e)&&(r=!0)}),r},y.update=function(e,t){void 0===t&&(t={});let n=((e,t)=>{var n;let{containerId:r}=t;return null==(n=s.get(r||1))?void 0:n.toasts.get(e)})(e,t);if(n){let{props:r,content:i}=n,a={delay:100,...r,...t,toastId:t.toastId||e,updateId:b()};a.toastId!==e&&(a.staleId=e);let o=a.render||i;delete a.render,h(o,a)}},y.done=e=>{y.update(e,{progress:1})},y.onChange=function(e){return d.add(e),()=>{d.delete(e)}},y.play=e=>m(!0,e),y.pause=e=>m(!1,e),"undefined"!=typeof window?r.useLayoutEffect:r.useEffect;let x=function(e,t){return void 0===t&&(t=!1),{enter:`Toastify--animate Toastify__${e}-enter`,exit:`Toastify--animate Toastify__${e}-exit`,appendPosition:t}};c(x("bounce",!0)),c(x("slide",!0)),c(x("zoom")),c(x("flip"))}},function(e){e.O(0,[290,66,888,774,179],function(){return e(e.s=9553)}),_N_E=e.O()}]);