tlc-claude-code 2.0.1 → 2.1.0
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.
- package/.claude/commands/tlc/deploy.md +194 -2
- package/.claude/commands/tlc/e2e-verify.md +214 -0
- package/.claude/commands/tlc/guard.md +191 -0
- package/.claude/commands/tlc/help.md +32 -0
- package/.claude/commands/tlc/init.md +73 -37
- package/.claude/commands/tlc/llm.md +19 -4
- package/.claude/commands/tlc/preflight.md +134 -0
- package/.claude/commands/tlc/review.md +17 -4
- package/.claude/commands/tlc/watchci.md +159 -0
- package/.claude/hooks/tlc-block-tools.sh +41 -0
- package/.claude/hooks/tlc-capture-exchange.sh +50 -0
- package/.claude/hooks/tlc-post-build.sh +38 -0
- package/.claude/hooks/tlc-post-push.sh +22 -0
- package/.claude/hooks/tlc-prompt-guard.sh +69 -0
- package/.claude/hooks/tlc-session-init.sh +123 -0
- package/CLAUDE.md +12 -0
- package/bin/install.js +171 -2
- package/bin/postinstall.js +45 -26
- package/dashboard-web/dist/assets/index-CdS5CHqu.css +1 -0
- package/dashboard-web/dist/assets/index-CwNPPVpg.js +483 -0
- package/dashboard-web/dist/assets/index-CwNPPVpg.js.map +1 -0
- package/dashboard-web/dist/index.html +2 -2
- package/docker-compose.dev.yml +18 -12
- package/package.json +3 -1
- package/server/index.js +228 -2
- package/server/lib/capture-bridge.js +242 -0
- package/server/lib/capture-bridge.test.js +363 -0
- package/server/lib/capture-guard.js +140 -0
- package/server/lib/capture-guard.test.js +182 -0
- package/server/lib/command-runner.js +159 -0
- package/server/lib/command-runner.test.js +92 -0
- package/server/lib/deploy/runners/dependency-runner.js +106 -0
- package/server/lib/deploy/runners/dependency-runner.test.js +148 -0
- package/server/lib/deploy/runners/secrets-runner.js +174 -0
- package/server/lib/deploy/runners/secrets-runner.test.js +127 -0
- package/server/lib/deploy/security-gates.js +11 -24
- package/server/lib/deploy/security-gates.test.js +9 -2
- package/server/lib/deploy-engine.js +182 -0
- package/server/lib/deploy-engine.test.js +147 -0
- package/server/lib/docker-api.js +137 -0
- package/server/lib/docker-api.test.js +202 -0
- package/server/lib/docker-client.js +297 -0
- package/server/lib/docker-client.test.js +308 -0
- package/server/lib/input-sanitizer.js +86 -0
- package/server/lib/input-sanitizer.test.js +117 -0
- package/server/lib/launchd-agent.js +225 -0
- package/server/lib/launchd-agent.test.js +185 -0
- package/server/lib/memory-api.js +3 -1
- package/server/lib/memory-api.test.js +3 -5
- package/server/lib/memory-bridge-e2e.test.js +160 -0
- package/server/lib/memory-committer.js +18 -4
- package/server/lib/memory-committer.test.js +21 -0
- package/server/lib/memory-hooks-capture.test.js +69 -4
- package/server/lib/memory-hooks-integration.test.js +98 -0
- package/server/lib/memory-hooks.js +42 -4
- package/server/lib/memory-store-adapter.js +105 -0
- package/server/lib/memory-store-adapter.test.js +141 -0
- package/server/lib/memory-wiring-e2e.test.js +93 -0
- package/server/lib/nginx-config.js +114 -0
- package/server/lib/nginx-config.test.js +82 -0
- package/server/lib/ollama-health.js +91 -0
- package/server/lib/ollama-health.test.js +74 -0
- package/server/lib/port-guard.js +44 -0
- package/server/lib/port-guard.test.js +65 -0
- package/server/lib/project-scanner.js +37 -2
- package/server/lib/project-scanner.test.js +152 -0
- package/server/lib/remember-command.js +2 -0
- package/server/lib/remember-command.test.js +23 -0
- package/server/lib/security/crypto-utils.test.js +2 -2
- package/server/lib/semantic-recall.js +1 -1
- package/server/lib/semantic-recall.test.js +17 -0
- package/server/lib/ssh-client.js +184 -0
- package/server/lib/ssh-client.test.js +127 -0
- package/server/lib/vps-api.js +184 -0
- package/server/lib/vps-api.test.js +208 -0
- package/server/lib/vps-bootstrap.js +124 -0
- package/server/lib/vps-bootstrap.test.js +79 -0
- package/server/lib/vps-monitor.js +126 -0
- package/server/lib/vps-monitor.test.js +98 -0
- package/server/lib/workspace-api.js +182 -1
- package/server/lib/workspace-api.test.js +474 -0
- package/server/package-lock.json +737 -0
- package/server/package.json +3 -0
- package/dashboard-web/dist/assets/index-Uhc49PE-.css +0 -1
- package/dashboard-web/dist/assets/index-W36XHPC5.js +0 -431
- package/dashboard-web/dist/assets/index-W36XHPC5.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index-CwNPPVpg.js","sources":["../../node_modules/react/cjs/react.production.min.js","../../node_modules/react/index.js","../../node_modules/react/cjs/react-jsx-runtime.production.min.js","../../node_modules/react/jsx-runtime.js","../../node_modules/scheduler/cjs/scheduler.production.min.js","../../node_modules/scheduler/index.js","../../node_modules/react-dom/cjs/react-dom.production.min.js","../../node_modules/react-dom/index.js","../../node_modules/react-dom/client.js","../../node_modules/react-router/dist/development/chunk-JZWAC4HX.mjs","../../node_modules/lucide-react/dist/esm/shared/src/utils.js","../../node_modules/lucide-react/dist/esm/defaultAttributes.js","../../node_modules/lucide-react/dist/esm/Icon.js","../../node_modules/lucide-react/dist/esm/createLucideIcon.js","../../node_modules/lucide-react/dist/esm/icons/activity.js","../../node_modules/lucide-react/dist/esm/icons/arrow-down.js","../../node_modules/lucide-react/dist/esm/icons/arrow-left.js","../../node_modules/lucide-react/dist/esm/icons/arrow-right.js","../../node_modules/lucide-react/dist/esm/icons/box.js","../../node_modules/lucide-react/dist/esm/icons/brain.js","../../node_modules/lucide-react/dist/esm/icons/bug.js","../../node_modules/lucide-react/dist/esm/icons/chevron-down.js","../../node_modules/lucide-react/dist/esm/icons/chevron-left.js","../../node_modules/lucide-react/dist/esm/icons/chevron-right.js","../../node_modules/lucide-react/dist/esm/icons/chevron-up.js","../../node_modules/lucide-react/dist/esm/icons/circle-check-big.js","../../node_modules/lucide-react/dist/esm/icons/circle-check.js","../../node_modules/lucide-react/dist/esm/icons/circle-x.js","../../node_modules/lucide-react/dist/esm/icons/circle.js","../../node_modules/lucide-react/dist/esm/icons/clock.js","../../node_modules/lucide-react/dist/esm/icons/database.js","../../node_modules/lucide-react/dist/esm/icons/external-link.js","../../node_modules/lucide-react/dist/esm/icons/eye.js","../../node_modules/lucide-react/dist/esm/icons/file-text.js","../../node_modules/lucide-react/dist/esm/icons/filter.js","../../node_modules/lucide-react/dist/esm/icons/folder-kanban.js","../../node_modules/lucide-react/dist/esm/icons/folder-open.js","../../node_modules/lucide-react/dist/esm/icons/git-branch.js","../../node_modules/lucide-react/dist/esm/icons/git-commit-horizontal.js","../../node_modules/lucide-react/dist/esm/icons/hard-drive.js","../../node_modules/lucide-react/dist/esm/icons/layers.js","../../node_modules/lucide-react/dist/esm/icons/layout-dashboard.js","../../node_modules/lucide-react/dist/esm/icons/lightbulb.js","../../node_modules/lucide-react/dist/esm/icons/list-todo.js","../../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../../node_modules/lucide-react/dist/esm/icons/map.js","../../node_modules/lucide-react/dist/esm/icons/menu.js","../../node_modules/lucide-react/dist/esm/icons/message-square.js","../../node_modules/lucide-react/dist/esm/icons/monitor.js","../../node_modules/lucide-react/dist/esm/icons/moon.js","../../node_modules/lucide-react/dist/esm/icons/play.js","../../node_modules/lucide-react/dist/esm/icons/plus.js","../../node_modules/lucide-react/dist/esm/icons/refresh-cw.js","../../node_modules/lucide-react/dist/esm/icons/rotate-cw.js","../../node_modules/lucide-react/dist/esm/icons/scroll-text.js","../../node_modules/lucide-react/dist/esm/icons/search.js","../../node_modules/lucide-react/dist/esm/icons/server.js","../../node_modules/lucide-react/dist/esm/icons/settings.js","../../node_modules/lucide-react/dist/esm/icons/shield.js","../../node_modules/lucide-react/dist/esm/icons/smartphone.js","../../node_modules/lucide-react/dist/esm/icons/square-check-big.js","../../node_modules/lucide-react/dist/esm/icons/square.js","../../node_modules/lucide-react/dist/esm/icons/sun.js","../../node_modules/lucide-react/dist/esm/icons/tablet.js","../../node_modules/lucide-react/dist/esm/icons/test-tube.js","../../node_modules/lucide-react/dist/esm/icons/trash-2.js","../../node_modules/lucide-react/dist/esm/icons/triangle-alert.js","../../node_modules/lucide-react/dist/esm/icons/user.js","../../node_modules/lucide-react/dist/esm/icons/users.js","../../node_modules/lucide-react/dist/esm/icons/wifi.js","../../node_modules/lucide-react/dist/esm/icons/x.js","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/zustand/esm/react.mjs","../../src/stores/workspace.store.ts","../../src/components/layout/Sidebar.tsx","../../src/components/ui/Button.tsx","../../src/components/layout/Header.tsx","../../src/stores/ui.store.ts","../../src/stores/project.store.ts","../../node_modules/zustand/esm/middleware.mjs","../../src/stores/task.store.ts","../../src/stores/log.store.ts","../../src/stores/websocket.store.ts","../../src/components/layout/Shell.tsx","../../src/components/ErrorBoundary.tsx","../../src/components/settings/CommandPalette.tsx","../../src/components/ui/Card.tsx","../../src/components/ui/Badge.tsx","../../src/components/ui/Skeleton.tsx","../../src/hooks/useWebSocket.ts","../../src/api/client.ts","../../src/api/endpoints.ts","../../src/api/index.ts","../../src/hooks/useProject.ts","../../src/hooks/useTasks.ts","../../src/hooks/useSettings.ts","../../src/hooks/useRoadmap.ts","../../src/hooks/useTestSuite.ts","../../src/pages/DashboardPage.tsx","../../src/components/task/TaskCard.tsx","../../src/components/task/TaskBoard.tsx","../../src/components/task/TaskFilter.tsx","../../src/components/task/TaskDetail.tsx","../../src/pages/TasksPage.tsx","../../src/components/logs/LogStream.tsx","../../src/components/logs/LogSearch.tsx","../../src/pages/LogsPage.tsx","../../src/components/ui/Input.tsx","../../src/components/settings/SettingsPanel.tsx","../../src/components/settings/ThemeToggle.tsx","../../src/pages/SettingsPage.tsx","../../src/hooks/useWorkspaceGroups.ts","../../src/pages/ProjectsPage.tsx","../../src/components/team/TeamPresence.tsx","../../src/components/ui/Dropdown.tsx","../../src/components/team/ActivityFeed.tsx","../../src/components/team/EnvironmentBadge.tsx","../../src/components/team/TeamPanel.tsx","../../src/pages/TeamPage.tsx","../../src/components/HealthDiagnosticsPanel.tsx","../../src/pages/HealthPage.tsx","../../src/pages/PreviewPage.tsx","../../src/pages/TestSuitePage.tsx","../../src/hooks/useBugs.ts","../../src/pages/BugsPage.tsx","../../src/pages/RoadmapPage.tsx","../../src/components/layout/TabBar.tsx","../../src/pages/ProjectDetailPage.tsx","../../src/pages/ClientDashboard.tsx","../../src/hooks/useMemory.ts","../../src/hooks/useMemorySearch.ts","../../src/pages/MemoryPage.tsx","../../src/hooks/useProjectFiles.ts","../../src/pages/ProjectInfoPage.tsx","../../src/pages/PhaseDetailPage.tsx","../../src/pages/DockerPage.tsx","../../src/pages/VpsPage.tsx","../../src/hooks/useWorkspace.ts","../../src/components/workspace/SetupScreen.tsx","../../src/components/workspace/WorkspaceToolbar.tsx","../../src/components/workspace/ProjectSelector.tsx","../../src/App.tsx","../../src/main.tsx"],"sourcesContent":["/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1<g){for(var f=Array(g),m=0;m<g;m++)f[m]=arguments[m+2];c.children=f}if(a&&a.defaultProps)for(d in g=a.defaultProps,g)void 0===c[d]&&(c[d]=g[d]);return{$$typeof:l,type:a,key:k,ref:h,props:c,_owner:K.current}}\nfunction N(a,b){return{$$typeof:l,type:a.type,key:b,ref:a.ref,props:a.props,_owner:a._owner}}function O(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===l}function escape(a){var b={\"=\":\"=0\",\":\":\"=2\"};return\"$\"+a.replace(/[=:]/g,function(a){return b[a]})}var P=/\\/+/g;function Q(a,b){return\"object\"===typeof a&&null!==a&&null!=a.key?escape(\"\"+a.key):b.toString(36)}\nfunction R(a,b,e,d,c){var k=typeof a;if(\"undefined\"===k||\"boolean\"===k)a=null;var h=!1;if(null===a)h=!0;else switch(k){case \"string\":case \"number\":h=!0;break;case \"object\":switch(a.$$typeof){case l:case n:h=!0}}if(h)return h=a,c=c(h),a=\"\"===d?\".\"+Q(h,0):d,I(c)?(e=\"\",null!=a&&(e=a.replace(P,\"$&/\")+\"/\"),R(c,b,e,\"\",function(a){return a})):null!=c&&(O(c)&&(c=N(c,e+(!c.key||h&&h.key===c.key?\"\":(\"\"+c.key).replace(P,\"$&/\")+\"/\")+a)),b.push(c)),1;h=0;d=\"\"===d?\".\":d+\":\";if(I(a))for(var g=0;g<a.length;g++){k=\na[g];var f=d+Q(k,g);h+=R(k,b,e,f,c)}else if(f=A(a),\"function\"===typeof f)for(a=f.call(a),g=0;!(k=a.next()).done;)k=k.value,f=d+Q(k,g++),h+=R(k,b,e,f,c);else if(\"object\"===k)throw b=String(a),Error(\"Objects are not valid as a React child (found: \"+(\"[object Object]\"===b?\"object with keys {\"+Object.keys(a).join(\", \")+\"}\":b)+\"). If you meant to render a collection of children, use an array instead.\");return h}\nfunction S(a,b,e){if(null==a)return a;var d=[],c=0;R(a,d,\"\",\"\",function(a){return b.call(e,a,c++)});return d}function T(a){if(-1===a._status){var b=a._result;b=b();b.then(function(b){if(0===a._status||-1===a._status)a._status=1,a._result=b},function(b){if(0===a._status||-1===a._status)a._status=2,a._result=b});-1===a._status&&(a._status=0,a._result=b)}if(1===a._status)return a._result.default;throw a._result;}\nvar U={current:null},V={transition:null},W={ReactCurrentDispatcher:U,ReactCurrentBatchConfig:V,ReactCurrentOwner:K};function X(){throw Error(\"act(...) is not supported in production builds of React.\");}\nexports.Children={map:S,forEach:function(a,b,e){S(a,function(){b.apply(this,arguments)},e)},count:function(a){var b=0;S(a,function(){b++});return b},toArray:function(a){return S(a,function(a){return a})||[]},only:function(a){if(!O(a))throw Error(\"React.Children.only expected to receive a single React element child.\");return a}};exports.Component=E;exports.Fragment=p;exports.Profiler=r;exports.PureComponent=G;exports.StrictMode=q;exports.Suspense=w;\nexports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=W;exports.act=X;\nexports.cloneElement=function(a,b,e){if(null===a||void 0===a)throw Error(\"React.cloneElement(...): The argument must be a React element, but you passed \"+a+\".\");var d=C({},a.props),c=a.key,k=a.ref,h=a._owner;if(null!=b){void 0!==b.ref&&(k=b.ref,h=K.current);void 0!==b.key&&(c=\"\"+b.key);if(a.type&&a.type.defaultProps)var g=a.type.defaultProps;for(f in b)J.call(b,f)&&!L.hasOwnProperty(f)&&(d[f]=void 0===b[f]&&void 0!==g?g[f]:b[f])}var f=arguments.length-2;if(1===f)d.children=e;else if(1<f){g=Array(f);\nfor(var m=0;m<f;m++)g[m]=arguments[m+2];d.children=g}return{$$typeof:l,type:a.type,key:c,ref:k,props:d,_owner:h}};exports.createContext=function(a){a={$$typeof:u,_currentValue:a,_currentValue2:a,_threadCount:0,Provider:null,Consumer:null,_defaultValue:null,_globalName:null};a.Provider={$$typeof:t,_context:a};return a.Consumer=a};exports.createElement=M;exports.createFactory=function(a){var b=M.bind(null,a);b.type=a;return b};exports.createRef=function(){return{current:null}};\nexports.forwardRef=function(a){return{$$typeof:v,render:a}};exports.isValidElement=O;exports.lazy=function(a){return{$$typeof:y,_payload:{_status:-1,_result:a},_init:T}};exports.memo=function(a,b){return{$$typeof:x,type:a,compare:void 0===b?null:b}};exports.startTransition=function(a){var b=V.transition;V.transition={};try{a()}finally{V.transition=b}};exports.unstable_act=X;exports.useCallback=function(a,b){return U.current.useCallback(a,b)};exports.useContext=function(a){return U.current.useContext(a)};\nexports.useDebugValue=function(){};exports.useDeferredValue=function(a){return U.current.useDeferredValue(a)};exports.useEffect=function(a,b){return U.current.useEffect(a,b)};exports.useId=function(){return U.current.useId()};exports.useImperativeHandle=function(a,b,e){return U.current.useImperativeHandle(a,b,e)};exports.useInsertionEffect=function(a,b){return U.current.useInsertionEffect(a,b)};exports.useLayoutEffect=function(a,b){return U.current.useLayoutEffect(a,b)};\nexports.useMemo=function(a,b){return U.current.useMemo(a,b)};exports.useReducer=function(a,b,e){return U.current.useReducer(a,b,e)};exports.useRef=function(a){return U.current.useRef(a)};exports.useState=function(a){return U.current.useState(a)};exports.useSyncExternalStore=function(a,b,e){return U.current.useSyncExternalStore(a,b,e)};exports.useTransition=function(){return U.current.useTransition()};exports.version=\"18.3.1\";\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react.production.min.js');\n} else {\n module.exports = require('./cjs/react.development.js');\n}\n","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-jsx-runtime.production.min.js');\n} else {\n module.exports = require('./cjs/react-jsx-runtime.development.js');\n}\n","/**\n * @license React\n * scheduler.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';function f(a,b){var c=a.length;a.push(b);a:for(;0<c;){var d=c-1>>>1,e=a[d];if(0<g(e,b))a[d]=b,a[c]=e,c=d;else break a}}function h(a){return 0===a.length?null:a[0]}function k(a){if(0===a.length)return null;var b=a[0],c=a.pop();if(c!==b){a[0]=c;a:for(var d=0,e=a.length,w=e>>>1;d<w;){var m=2*(d+1)-1,C=a[m],n=m+1,x=a[n];if(0>g(C,c))n<e&&0>g(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(n<e&&0>g(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Q<P?!1:!0}function R(){if(null!==O){var a=exports.unstable_now();Q=a;var b=!0;try{b=O(!0,a)}finally{b?S():(N=!1,O=null)}}else N=!1}var S;if(\"function\"===typeof F)S=function(){F(R)};else if(\"undefined\"!==typeof MessageChannel){var T=new MessageChannel,U=T.port2;T.port1.onmessage=R;S=function(){U.postMessage(null)}}else S=function(){D(R,0)};function I(a){O=a;N||(N=!0,S())}function K(a,b){L=D(function(){a(exports.unstable_now())},b)}\nexports.unstable_IdlePriority=5;exports.unstable_ImmediatePriority=1;exports.unstable_LowPriority=4;exports.unstable_NormalPriority=3;exports.unstable_Profiling=null;exports.unstable_UserBlockingPriority=2;exports.unstable_cancelCallback=function(a){a.callback=null};exports.unstable_continueExecution=function(){A||z||(A=!0,I(J))};\nexports.unstable_forceFrameRate=function(a){0>a||125<a?console.error(\"forceFrameRate takes a positive int between 0 and 125, forcing frame rates higher than 125 fps is not supported\"):P=0<a?Math.floor(1E3/a):5};exports.unstable_getCurrentPriorityLevel=function(){return y};exports.unstable_getFirstCallbackNode=function(){return h(r)};exports.unstable_next=function(a){switch(y){case 1:case 2:case 3:var b=3;break;default:b=y}var c=y;y=b;try{return a()}finally{y=c}};exports.unstable_pauseExecution=function(){};\nexports.unstable_requestPaint=function(){};exports.unstable_runWithPriority=function(a,b){switch(a){case 1:case 2:case 3:case 4:case 5:break;default:a=3}var c=y;y=a;try{return b()}finally{y=c}};\nexports.unstable_scheduleCallback=function(a,b,c){var d=exports.unstable_now();\"object\"===typeof c&&null!==c?(c=c.delay,c=\"number\"===typeof c&&0<c?d+c:d):c=d;switch(a){case 1:var e=-1;break;case 2:e=250;break;case 5:e=1073741823;break;case 4:e=1E4;break;default:e=5E3}e=c+e;a={id:u++,callback:b,priorityLevel:a,startTime:c,expirationTime:e,sortIndex:-1};c>d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;c<arguments.length;c++)b+=\"&args[]=\"+encodeURIComponent(arguments[c]);return\"Minified React error #\"+a+\"; visit \"+b+\" for the full message or use the non-minified dev environment for full errors and additional helpful warnings.\"}var da=new Set,ea={};function fa(a,b){ha(a,b);ha(a+\"Capture\",b)}\nfunction ha(a,b){ea[a]=b;for(a=0;a<b.length;a++)da.add(b[a])}\nvar ia=!(\"undefined\"===typeof window||\"undefined\"===typeof window.document||\"undefined\"===typeof window.document.createElement),ja=Object.prototype.hasOwnProperty,ka=/^[:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD][:A-Z_a-z\\u00C0-\\u00D6\\u00D8-\\u00F6\\u00F8-\\u02FF\\u0370-\\u037D\\u037F-\\u1FFF\\u200C-\\u200D\\u2070-\\u218F\\u2C00-\\u2FEF\\u3001-\\uD7FF\\uF900-\\uFDCF\\uFDF0-\\uFFFD\\-.0-9\\u00B7\\u0300-\\u036F\\u203F-\\u2040]*$/,la=\n{},ma={};function oa(a){if(ja.call(ma,a))return!0;if(ja.call(la,a))return!1;if(ka.test(a))return ma[a]=!0;la[a]=!0;return!1}function pa(a,b,c,d){if(null!==c&&0===c.type)return!1;switch(typeof b){case \"function\":case \"symbol\":return!0;case \"boolean\":if(d)return!1;if(null!==c)return!c.acceptsBooleans;a=a.toLowerCase().slice(0,5);return\"data-\"!==a&&\"aria-\"!==a;default:return!1}}\nfunction qa(a,b,c,d){if(null===b||\"undefined\"===typeof b||pa(a,b,c,d))return!0;if(d)return!1;if(null!==c)switch(c.type){case 3:return!b;case 4:return!1===b;case 5:return isNaN(b);case 6:return isNaN(b)||1>b}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2<b.length)||\"o\"!==b[0]&&\"O\"!==b[0]||\"n\"!==b[1]&&\"N\"!==b[1])qa(b,c,e,d)&&(c=null),d||null===e?oa(b)&&(null===c?a.removeAttribute(b):a.setAttribute(b,\"\"+c)):e.mustUseProperty?a[e.propertyName]=null===c?3===e.type?!1:\"\":c:(b=e.attributeName,d=e.attributeNamespace,null===c?a.removeAttribute(b):(e=e.type,c=3===e||4===e&&!0===c?\"\":\"\"+c,d?a.setAttributeNS(d,b,c):a.setAttribute(b,c)))}\nvar ua=aa.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED,va=Symbol.for(\"react.element\"),wa=Symbol.for(\"react.portal\"),ya=Symbol.for(\"react.fragment\"),za=Symbol.for(\"react.strict_mode\"),Aa=Symbol.for(\"react.profiler\"),Ba=Symbol.for(\"react.provider\"),Ca=Symbol.for(\"react.context\"),Da=Symbol.for(\"react.forward_ref\"),Ea=Symbol.for(\"react.suspense\"),Fa=Symbol.for(\"react.suspense_list\"),Ga=Symbol.for(\"react.memo\"),Ha=Symbol.for(\"react.lazy\");Symbol.for(\"react.scope\");Symbol.for(\"react.debug_trace_mode\");\nvar Ia=Symbol.for(\"react.offscreen\");Symbol.for(\"react.legacy_hidden\");Symbol.for(\"react.cache\");Symbol.for(\"react.tracing_marker\");var Ja=Symbol.iterator;function Ka(a){if(null===a||\"object\"!==typeof a)return null;a=Ja&&a[Ja]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}var A=Object.assign,La;function Ma(a){if(void 0===La)try{throw Error();}catch(c){var b=c.stack.trim().match(/\\n( *(at )?)/);La=b&&b[1]||\"\"}return\"\\n\"+La+a}var Na=!1;\nfunction Oa(a,b){if(!a||Na)return\"\";Na=!0;var c=Error.prepareStackTrace;Error.prepareStackTrace=void 0;try{if(b)if(b=function(){throw Error();},Object.defineProperty(b.prototype,\"props\",{set:function(){throw Error();}}),\"object\"===typeof Reflect&&Reflect.construct){try{Reflect.construct(b,[])}catch(l){var d=l}Reflect.construct(a,[],b)}else{try{b.call()}catch(l){d=l}a.call(b.prototype)}else{try{throw Error();}catch(l){d=l}a()}}catch(l){if(l&&d&&\"string\"===typeof l.stack){for(var e=l.stack.split(\"\\n\"),\nf=d.stack.split(\"\\n\"),g=e.length-1,h=f.length-1;1<=g&&0<=h&&e[g]!==f[h];)h--;for(;1<=g&&0<=h;g--,h--)if(e[g]!==f[h]){if(1!==g||1!==h){do if(g--,h--,0>h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"<anonymous>\")&&(k=k.replace(\"<anonymous>\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e<c.length;e++)b[\"$\"+c[e]]=!0;for(c=0;c<a.length;c++)e=b.hasOwnProperty(\"$\"+a[c].value),a[c].selected!==e&&(a[c].selected=e),e&&d&&(a[c].defaultSelected=!0)}else{c=\"\"+Sa(c);b=null;for(e=0;e<a.length;e++){if(a[e].value===c){a[e].selected=!0;d&&(a[e].defaultSelected=!0);return}null!==b||a[e].disabled||(b=a[e])}null!==b&&(b.selected=!0)}}\nfunction gb(a,b){if(null!=b.dangerouslySetInnerHTML)throw Error(p(91));return A({},b,{value:void 0,defaultValue:void 0,children:\"\"+a._wrapperState.initialValue})}function hb(a,b){var c=b.value;if(null==c){c=b.children;b=b.defaultValue;if(null!=c){if(null!=b)throw Error(p(92));if(eb(c)){if(1<c.length)throw Error(p(93));c=c[0]}b=c}null==b&&(b=\"\");c=b}a._wrapperState={initialValue:Sa(c)}}\nfunction ib(a,b){var c=Sa(b.value),d=Sa(b.defaultValue);null!=c&&(c=\"\"+c,c!==a.value&&(a.value=c),null==b.defaultValue&&a.defaultValue!==c&&(a.defaultValue=c));null!=d&&(a.defaultValue=\"\"+d)}function jb(a){var b=a.textContent;b===a._wrapperState.initialValue&&\"\"!==b&&null!==b&&(a.value=b)}function kb(a){switch(a){case \"svg\":return\"http://www.w3.org/2000/svg\";case \"math\":return\"http://www.w3.org/1998/Math/MathML\";default:return\"http://www.w3.org/1999/xhtml\"}}\nfunction lb(a,b){return null==a||\"http://www.w3.org/1999/xhtml\"===a?kb(b):\"http://www.w3.org/2000/svg\"===a&&\"foreignObject\"===b?\"http://www.w3.org/1999/xhtml\":a}\nvar mb,nb=function(a){return\"undefined\"!==typeof MSApp&&MSApp.execUnsafeLocalFunction?function(b,c,d,e){MSApp.execUnsafeLocalFunction(function(){return a(b,c,d,e)})}:a}(function(a,b){if(\"http://www.w3.org/2000/svg\"!==a.namespaceURI||\"innerHTML\"in a)a.innerHTML=b;else{mb=mb||document.createElement(\"div\");mb.innerHTML=\"<svg>\"+b.valueOf().toString()+\"</svg>\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a<b.length;a++)Bb(b[a])}}function Gb(a,b){return a(b)}function Hb(){}var Ib=!1;function Jb(a,b,c){if(Ib)return a(b,c);Ib=!0;try{return Gb(a,b,c)}finally{if(Ib=!1,null!==zb||null!==Ab)Hb(),Fb()}}\nfunction Kb(a,b){var c=a.stateNode;if(null===c)return null;var d=Db(c);if(null===d)return null;c=d[b];a:switch(b){case \"onClick\":case \"onClickCapture\":case \"onDoubleClick\":case \"onDoubleClickCapture\":case \"onMouseDown\":case \"onMouseDownCapture\":case \"onMouseMove\":case \"onMouseMoveCapture\":case \"onMouseUp\":case \"onMouseUpCapture\":case \"onMouseEnter\":(d=!d.disabled)||(a=a.type,d=!(\"button\"===a||\"input\"===a||\"select\"===a||\"textarea\"===a));a=!d;break a;default:a=!1}if(a)return null;if(c&&\"function\"!==\ntypeof c)throw Error(p(231,b,typeof c));return c}var Lb=!1;if(ia)try{var Mb={};Object.defineProperty(Mb,\"passive\",{get:function(){Lb=!0}});window.addEventListener(\"test\",Mb,Mb);window.removeEventListener(\"test\",Mb,Mb)}catch(a){Lb=!1}function Nb(a,b,c,d,e,f,g,h,k){var l=Array.prototype.slice.call(arguments,3);try{b.apply(c,l)}catch(m){this.onError(m)}}var Ob=!1,Pb=null,Qb=!1,Rb=null,Sb={onError:function(a){Ob=!0;Pb=a}};function Tb(a,b,c,d,e,f,g,h,k){Ob=!1;Pb=null;Nb.apply(Sb,arguments)}\nfunction Ub(a,b,c,d,e,f,g,h,k){Tb.apply(this,arguments);if(Ob){if(Ob){var l=Pb;Ob=!1;Pb=null}else throw Error(p(198));Qb||(Qb=!0,Rb=l)}}function Vb(a){var b=a,c=a;if(a.alternate)for(;b.return;)b=b.return;else{a=b;do b=a,0!==(b.flags&4098)&&(c=b.return),a=b.return;while(a)}return 3===b.tag?c:null}function Wb(a){if(13===a.tag){var b=a.memoizedState;null===b&&(a=a.alternate,null!==a&&(b=a.memoizedState));if(null!==b)return b.dehydrated}return null}function Xb(a){if(Vb(a)!==a)throw Error(p(188));}\nfunction Yb(a){var b=a.alternate;if(!b){b=Vb(a);if(null===b)throw Error(p(188));return b!==a?null:a}for(var c=a,d=b;;){var e=c.return;if(null===e)break;var f=e.alternate;if(null===f){d=e.return;if(null!==d){c=d;continue}break}if(e.child===f.child){for(f=e.child;f;){if(f===c)return Xb(e),a;if(f===d)return Xb(e),b;f=f.sibling}throw Error(p(188));}if(c.return!==d.return)c=e,d=f;else{for(var g=!1,h=e.child;h;){if(h===c){g=!0;c=e;d=f;break}if(h===d){g=!0;d=e;c=f;break}h=h.sibling}if(!g){for(h=f.child;h;){if(h===\nc){g=!0;c=f;d=e;break}if(h===d){g=!0;d=f;c=e;break}h=h.sibling}if(!g)throw Error(p(189));}}if(c.alternate!==d)throw Error(p(190));}if(3!==c.tag)throw Error(p(188));return c.stateNode.current===c?a:b}function Zb(a){a=Yb(a);return null!==a?$b(a):null}function $b(a){if(5===a.tag||6===a.tag)return a;for(a=a.child;null!==a;){var b=$b(a);if(null!==b)return b;a=a.sibling}return null}\nvar ac=ca.unstable_scheduleCallback,bc=ca.unstable_cancelCallback,cc=ca.unstable_shouldYield,dc=ca.unstable_requestPaint,B=ca.unstable_now,ec=ca.unstable_getCurrentPriorityLevel,fc=ca.unstable_ImmediatePriority,gc=ca.unstable_UserBlockingPriority,hc=ca.unstable_NormalPriority,ic=ca.unstable_LowPriority,jc=ca.unstable_IdlePriority,kc=null,lc=null;function mc(a){if(lc&&\"function\"===typeof lc.onCommitFiberRoot)try{lc.onCommitFiberRoot(kc,a,void 0,128===(a.current.flags&128))}catch(b){}}\nvar oc=Math.clz32?Math.clz32:nc,pc=Math.log,qc=Math.LN2;function nc(a){a>>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0<b;)c=31-oc(b),e=1<<c,d|=a[c],b&=~e;return d}\nfunction vc(a,b){switch(a){case 1:case 2:case 4:return b+250;case 8:case 16:case 32:case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return b+5E3;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return-1;case 134217728:case 268435456:case 536870912:case 1073741824:return-1;default:return-1}}\nfunction wc(a,b){for(var c=a.suspendedLanes,d=a.pingedLanes,e=a.expirationTimes,f=a.pendingLanes;0<f;){var g=31-oc(f),h=1<<g,k=e[g];if(-1===k){if(0===(h&c)||0!==(h&d))e[g]=vc(h,b)}else k<=b&&(a.expiredLanes|=h);f&=~h}}function xc(a){a=a.pendingLanes&-1073741825;return 0!==a?a:a&1073741824?1073741824:0}function yc(){var a=rc;rc<<=1;0===(rc&4194240)&&(rc=64);return a}function zc(a){for(var b=[],c=0;31>c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0<c;){var e=31-oc(c),f=1<<e;b[e]=0;d[e]=-1;a[e]=-1;c&=~f}}\nfunction Cc(a,b){var c=a.entangledLanes|=b;for(a=a.entanglements;c;){var d=31-oc(c),e=1<<d;e&b|a[d]&b&&(a[d]|=b);c&=~e}}var C=0;function Dc(a){a&=-a;return 1<a?4<a?0!==(a&268435455)?16:536870912:4:1}var Ec,Fc,Gc,Hc,Ic,Jc=!1,Kc=[],Lc=null,Mc=null,Nc=null,Oc=new Map,Pc=new Map,Qc=[],Rc=\"mousedown mouseup touchcancel touchend touchstart auxclick dblclick pointercancel pointerdown pointerup dragend dragstart drop compositionend compositionstart keydown keypress keyup input textInput copy cut paste click change contextmenu reset submit\".split(\" \");\nfunction Sc(a,b){switch(a){case \"focusin\":case \"focusout\":Lc=null;break;case \"dragenter\":case \"dragleave\":Mc=null;break;case \"mouseover\":case \"mouseout\":Nc=null;break;case \"pointerover\":case \"pointerout\":Oc.delete(b.pointerId);break;case \"gotpointercapture\":case \"lostpointercapture\":Pc.delete(b.pointerId)}}\nfunction Tc(a,b,c,d,e,f){if(null===a||a.nativeEvent!==f)return a={blockedOn:b,domEventName:c,eventSystemFlags:d,nativeEvent:f,targetContainers:[e]},null!==b&&(b=Cb(b),null!==b&&Fc(b)),a;a.eventSystemFlags|=d;b=a.targetContainers;null!==e&&-1===b.indexOf(e)&&b.push(e);return a}\nfunction Uc(a,b,c,d,e){switch(b){case \"focusin\":return Lc=Tc(Lc,a,b,c,d,e),!0;case \"dragenter\":return Mc=Tc(Mc,a,b,c,d,e),!0;case \"mouseover\":return Nc=Tc(Nc,a,b,c,d,e),!0;case \"pointerover\":var f=e.pointerId;Oc.set(f,Tc(Oc.get(f)||null,a,b,c,d,e));return!0;case \"gotpointercapture\":return f=e.pointerId,Pc.set(f,Tc(Pc.get(f)||null,a,b,c,d,e)),!0}return!1}\nfunction Vc(a){var b=Wc(a.target);if(null!==b){var c=Vb(b);if(null!==c)if(b=c.tag,13===b){if(b=Wb(c),null!==b){a.blockedOn=b;Ic(a.priority,function(){Gc(c)});return}}else if(3===b&&c.stateNode.current.memoizedState.isDehydrated){a.blockedOn=3===c.tag?c.stateNode.containerInfo:null;return}}a.blockedOn=null}\nfunction Xc(a){if(null!==a.blockedOn)return!1;for(var b=a.targetContainers;0<b.length;){var c=Yc(a.domEventName,a.eventSystemFlags,b[0],a.nativeEvent);if(null===c){c=a.nativeEvent;var d=new c.constructor(c.type,c);wb=d;c.target.dispatchEvent(d);wb=null}else return b=Cb(c),null!==b&&Fc(b),a.blockedOn=c,!1;b.shift()}return!0}function Zc(a,b,c){Xc(a)&&c.delete(b)}function $c(){Jc=!1;null!==Lc&&Xc(Lc)&&(Lc=null);null!==Mc&&Xc(Mc)&&(Mc=null);null!==Nc&&Xc(Nc)&&(Nc=null);Oc.forEach(Zc);Pc.forEach(Zc)}\nfunction ad(a,b){a.blockedOn===b&&(a.blockedOn=null,Jc||(Jc=!0,ca.unstable_scheduleCallback(ca.unstable_NormalPriority,$c)))}\nfunction bd(a){function b(b){return ad(b,a)}if(0<Kc.length){ad(Kc[0],a);for(var c=1;c<Kc.length;c++){var d=Kc[c];d.blockedOn===a&&(d.blockedOn=null)}}null!==Lc&&ad(Lc,a);null!==Mc&&ad(Mc,a);null!==Nc&&ad(Nc,a);Oc.forEach(b);Pc.forEach(b);for(c=0;c<Qc.length;c++)d=Qc[c],d.blockedOn===a&&(d.blockedOn=null);for(;0<Qc.length&&(c=Qc[0],null===c.blockedOn);)Vc(c),null===c.blockedOn&&Qc.shift()}var cd=ua.ReactCurrentBatchConfig,dd=!0;\nfunction ed(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=1,fd(a,b,c,d)}finally{C=e,cd.transition=f}}function gd(a,b,c,d){var e=C,f=cd.transition;cd.transition=null;try{C=4,fd(a,b,c,d)}finally{C=e,cd.transition=f}}\nfunction fd(a,b,c,d){if(dd){var e=Yc(a,b,c,d);if(null===e)hd(a,b,d,id,c),Sc(a,d);else if(Uc(e,a,b,c,d))d.stopPropagation();else if(Sc(a,d),b&4&&-1<Rc.indexOf(a)){for(;null!==e;){var f=Cb(e);null!==f&&Ec(f);f=Yc(a,b,c,d);null===f&&hd(a,b,d,id,c);if(f===e)break;e=f}null!==e&&d.stopPropagation()}else hd(a,b,d,null,c)}}var id=null;\nfunction Yc(a,b,c,d){id=null;a=xb(d);a=Wc(a);if(null!==a)if(b=Vb(a),null===b)a=null;else if(c=b.tag,13===c){a=Wb(b);if(null!==a)return a;a=null}else if(3===c){if(b.stateNode.current.memoizedState.isDehydrated)return 3===b.tag?b.stateNode.containerInfo:null;a=null}else b!==a&&(a=null);id=a;return null}\nfunction jd(a){switch(a){case \"cancel\":case \"click\":case \"close\":case \"contextmenu\":case \"copy\":case \"cut\":case \"auxclick\":case \"dblclick\":case \"dragend\":case \"dragstart\":case \"drop\":case \"focusin\":case \"focusout\":case \"input\":case \"invalid\":case \"keydown\":case \"keypress\":case \"keyup\":case \"mousedown\":case \"mouseup\":case \"paste\":case \"pause\":case \"play\":case \"pointercancel\":case \"pointerdown\":case \"pointerup\":case \"ratechange\":case \"reset\":case \"resize\":case \"seeked\":case \"submit\":case \"touchcancel\":case \"touchend\":case \"touchstart\":case \"volumechange\":case \"change\":case \"selectionchange\":case \"textInput\":case \"compositionstart\":case \"compositionend\":case \"compositionupdate\":case \"beforeblur\":case \"afterblur\":case \"beforeinput\":case \"blur\":case \"fullscreenchange\":case \"focus\":case \"hashchange\":case \"popstate\":case \"select\":case \"selectstart\":return 1;case \"drag\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"mousemove\":case \"mouseout\":case \"mouseover\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"scroll\":case \"toggle\":case \"touchmove\":case \"wheel\":case \"mouseenter\":case \"mouseleave\":case \"pointerenter\":case \"pointerleave\":return 4;\ncase \"message\":switch(ec()){case fc:return 1;case gc:return 4;case hc:case ic:return 16;case jc:return 536870912;default:return 16}default:return 16}}var kd=null,ld=null,md=null;function nd(){if(md)return md;var a,b=ld,c=b.length,d,e=\"value\"in kd?kd.value:kd.textContent,f=e.length;for(a=0;a<c&&b[a]===e[a];a++);var g=c-a;for(d=1;d<=g&&b[c-d]===e[f-d];d++);return md=e.slice(a,1<d?1-d:void 0)}\nfunction od(a){var b=a.keyCode;\"charCode\"in a?(a=a.charCode,0===a&&13===b&&(a=13)):a=b;10===a&&(a=13);return 32<=a||13===a?a:0}function pd(){return!0}function qd(){return!1}\nfunction rd(a){function b(b,d,e,f,g){this._reactName=b;this._targetInst=e;this.type=d;this.nativeEvent=f;this.target=g;this.currentTarget=null;for(var c in a)a.hasOwnProperty(c)&&(b=a[c],this[c]=b?b(f):f[c]);this.isDefaultPrevented=(null!=f.defaultPrevented?f.defaultPrevented:!1===f.returnValue)?pd:qd;this.isPropagationStopped=qd;return this}A(b.prototype,{preventDefault:function(){this.defaultPrevented=!0;var a=this.nativeEvent;a&&(a.preventDefault?a.preventDefault():\"unknown\"!==typeof a.returnValue&&\n(a.returnValue=!1),this.isDefaultPrevented=pd)},stopPropagation:function(){var a=this.nativeEvent;a&&(a.stopPropagation?a.stopPropagation():\"unknown\"!==typeof a.cancelBubble&&(a.cancelBubble=!0),this.isPropagationStopped=pd)},persist:function(){},isPersistent:pd});return b}\nvar sd={eventPhase:0,bubbles:0,cancelable:0,timeStamp:function(a){return a.timeStamp||Date.now()},defaultPrevented:0,isTrusted:0},td=rd(sd),ud=A({},sd,{view:0,detail:0}),vd=rd(ud),wd,xd,yd,Ad=A({},ud,{screenX:0,screenY:0,clientX:0,clientY:0,pageX:0,pageY:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,getModifierState:zd,button:0,buttons:0,relatedTarget:function(a){return void 0===a.relatedTarget?a.fromElement===a.srcElement?a.toElement:a.fromElement:a.relatedTarget},movementX:function(a){if(\"movementX\"in\na)return a.movementX;a!==yd&&(yd&&\"mousemove\"===a.type?(wd=a.screenX-yd.screenX,xd=a.screenY-yd.screenY):xd=wd=0,yd=a);return wd},movementY:function(a){return\"movementY\"in a?a.movementY:xd}}),Bd=rd(Ad),Cd=A({},Ad,{dataTransfer:0}),Dd=rd(Cd),Ed=A({},ud,{relatedTarget:0}),Fd=rd(Ed),Gd=A({},sd,{animationName:0,elapsedTime:0,pseudoElement:0}),Hd=rd(Gd),Id=A({},sd,{clipboardData:function(a){return\"clipboardData\"in a?a.clipboardData:window.clipboardData}}),Jd=rd(Id),Kd=A({},sd,{data:0}),Ld=rd(Kd),Md={Esc:\"Escape\",\nSpacebar:\" \",Left:\"ArrowLeft\",Up:\"ArrowUp\",Right:\"ArrowRight\",Down:\"ArrowDown\",Del:\"Delete\",Win:\"OS\",Menu:\"ContextMenu\",Apps:\"ContextMenu\",Scroll:\"ScrollLock\",MozPrintableKey:\"Unidentified\"},Nd={8:\"Backspace\",9:\"Tab\",12:\"Clear\",13:\"Enter\",16:\"Shift\",17:\"Control\",18:\"Alt\",19:\"Pause\",20:\"CapsLock\",27:\"Escape\",32:\" \",33:\"PageUp\",34:\"PageDown\",35:\"End\",36:\"Home\",37:\"ArrowLeft\",38:\"ArrowUp\",39:\"ArrowRight\",40:\"ArrowDown\",45:\"Insert\",46:\"Delete\",112:\"F1\",113:\"F2\",114:\"F3\",115:\"F4\",116:\"F5\",117:\"F6\",118:\"F7\",\n119:\"F8\",120:\"F9\",121:\"F10\",122:\"F11\",123:\"F12\",144:\"NumLock\",145:\"ScrollLock\",224:\"Meta\"},Od={Alt:\"altKey\",Control:\"ctrlKey\",Meta:\"metaKey\",Shift:\"shiftKey\"};function Pd(a){var b=this.nativeEvent;return b.getModifierState?b.getModifierState(a):(a=Od[a])?!!b[a]:!1}function zd(){return Pd}\nvar Qd=A({},ud,{key:function(a){if(a.key){var b=Md[a.key]||a.key;if(\"Unidentified\"!==b)return b}return\"keypress\"===a.type?(a=od(a),13===a?\"Enter\":String.fromCharCode(a)):\"keydown\"===a.type||\"keyup\"===a.type?Nd[a.keyCode]||\"Unidentified\":\"\"},code:0,location:0,ctrlKey:0,shiftKey:0,altKey:0,metaKey:0,repeat:0,locale:0,getModifierState:zd,charCode:function(a){return\"keypress\"===a.type?od(a):0},keyCode:function(a){return\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0},which:function(a){return\"keypress\"===\na.type?od(a):\"keydown\"===a.type||\"keyup\"===a.type?a.keyCode:0}}),Rd=rd(Qd),Sd=A({},Ad,{pointerId:0,width:0,height:0,pressure:0,tangentialPressure:0,tiltX:0,tiltY:0,twist:0,pointerType:0,isPrimary:0}),Td=rd(Sd),Ud=A({},ud,{touches:0,targetTouches:0,changedTouches:0,altKey:0,metaKey:0,ctrlKey:0,shiftKey:0,getModifierState:zd}),Vd=rd(Ud),Wd=A({},sd,{propertyName:0,elapsedTime:0,pseudoElement:0}),Xd=rd(Wd),Yd=A({},Ad,{deltaX:function(a){return\"deltaX\"in a?a.deltaX:\"wheelDeltaX\"in a?-a.wheelDeltaX:0},\ndeltaY:function(a){return\"deltaY\"in a?a.deltaY:\"wheelDeltaY\"in a?-a.wheelDeltaY:\"wheelDelta\"in a?-a.wheelDelta:0},deltaZ:0,deltaMode:0}),Zd=rd(Yd),$d=[9,13,27,32],ae=ia&&\"CompositionEvent\"in window,be=null;ia&&\"documentMode\"in document&&(be=document.documentMode);var ce=ia&&\"TextEvent\"in window&&!be,de=ia&&(!ae||be&&8<be&&11>=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1<b.char.length)return b.char;if(b.which)return String.fromCharCode(b.which)}return null;case \"compositionend\":return de&&\"ko\"!==b.locale?null:b.data;default:return null}}\nvar le={color:!0,date:!0,datetime:!0,\"datetime-local\":!0,email:!0,month:!0,number:!0,password:!0,range:!0,search:!0,tel:!0,text:!0,time:!0,url:!0,week:!0};function me(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return\"input\"===b?!!le[a.type]:\"textarea\"===b?!0:!1}function ne(a,b,c,d){Eb(d);b=oe(b,\"onChange\");0<b.length&&(c=new td(\"onChange\",\"change\",null,c,d),a.push({event:c,listeners:b}))}var pe=null,qe=null;function re(a){se(a,0)}function te(a){var b=ue(a);if(Wa(b))return a}\nfunction ve(a,b){if(\"change\"===a)return b}var we=!1;if(ia){var xe;if(ia){var ye=\"oninput\"in document;if(!ye){var ze=document.createElement(\"div\");ze.setAttribute(\"oninput\",\"return;\");ye=\"function\"===typeof ze.oninput}xe=ye}else xe=!1;we=xe&&(!document.documentMode||9<document.documentMode)}function Ae(){pe&&(pe.detachEvent(\"onpropertychange\",Be),qe=pe=null)}function Be(a){if(\"value\"===a.propertyName&&te(qe)){var b=[];ne(b,qe,a,xb(a));Jb(re,b)}}\nfunction Ce(a,b,c){\"focusin\"===a?(Ae(),pe=b,qe=c,pe.attachEvent(\"onpropertychange\",Be)):\"focusout\"===a&&Ae()}function De(a){if(\"selectionchange\"===a||\"keyup\"===a||\"keydown\"===a)return te(qe)}function Ee(a,b){if(\"click\"===a)return te(b)}function Fe(a,b){if(\"input\"===a||\"change\"===a)return te(b)}function Ge(a,b){return a===b&&(0!==a||1/a===1/b)||a!==a&&b!==b}var He=\"function\"===typeof Object.is?Object.is:Ge;\nfunction Ie(a,b){if(He(a,b))return!0;if(\"object\"!==typeof a||null===a||\"object\"!==typeof b||null===b)return!1;var c=Object.keys(a),d=Object.keys(b);if(c.length!==d.length)return!1;for(d=0;d<c.length;d++){var e=c[d];if(!ja.call(b,e)||!He(a[e],b[e]))return!1}return!0}function Je(a){for(;a&&a.firstChild;)a=a.firstChild;return a}\nfunction Ke(a,b){var c=Je(a);a=0;for(var d;c;){if(3===c.nodeType){d=a+c.textContent.length;if(a<=b&&d>=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c<b.length;c++)a=b[c],a.element.scrollLeft=a.left,a.element.scrollTop=a.top}}\nvar Pe=ia&&\"documentMode\"in document&&11>=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0<d.length&&(b=new td(\"onSelect\",\"select\",null,b,c),a.push({event:b,listeners:d}),b.target=Qe)))}\nfunction Ve(a,b){var c={};c[a.toLowerCase()]=b.toLowerCase();c[\"Webkit\"+a]=\"webkit\"+b;c[\"Moz\"+a]=\"moz\"+b;return c}var We={animationend:Ve(\"Animation\",\"AnimationEnd\"),animationiteration:Ve(\"Animation\",\"AnimationIteration\"),animationstart:Ve(\"Animation\",\"AnimationStart\"),transitionend:Ve(\"Transition\",\"TransitionEnd\")},Xe={},Ye={};\nia&&(Ye=document.createElement(\"div\").style,\"AnimationEvent\"in window||(delete We.animationend.animation,delete We.animationiteration.animation,delete We.animationstart.animation),\"TransitionEvent\"in window||delete We.transitionend.transition);function Ze(a){if(Xe[a])return Xe[a];if(!We[a])return a;var b=We[a],c;for(c in b)if(b.hasOwnProperty(c)&&c in Ye)return Xe[a]=b[c];return a}var $e=Ze(\"animationend\"),af=Ze(\"animationiteration\"),bf=Ze(\"animationstart\"),cf=Ze(\"transitionend\"),df=new Map,ef=\"abort auxClick cancel canPlay canPlayThrough click close contextMenu copy cut drag dragEnd dragEnter dragExit dragLeave dragOver dragStart drop durationChange emptied encrypted ended error gotPointerCapture input invalid keyDown keyPress keyUp load loadedData loadedMetadata loadStart lostPointerCapture mouseDown mouseMove mouseOut mouseOver mouseUp paste pause play playing pointerCancel pointerDown pointerMove pointerOut pointerOver pointerUp progress rateChange reset resize seeked seeking stalled submit suspend timeUpdate touchCancel touchEnd touchStart volumeChange scroll toggle touchMove waiting wheel\".split(\" \");\nfunction ff(a,b){df.set(a,b);fa(b,[a])}for(var gf=0;gf<ef.length;gf++){var hf=ef[gf],jf=hf.toLowerCase(),kf=hf[0].toUpperCase()+hf.slice(1);ff(jf,\"on\"+kf)}ff($e,\"onAnimationEnd\");ff(af,\"onAnimationIteration\");ff(bf,\"onAnimationStart\");ff(\"dblclick\",\"onDoubleClick\");ff(\"focusin\",\"onFocus\");ff(\"focusout\",\"onBlur\");ff(cf,\"onTransitionEnd\");ha(\"onMouseEnter\",[\"mouseout\",\"mouseover\"]);ha(\"onMouseLeave\",[\"mouseout\",\"mouseover\"]);ha(\"onPointerEnter\",[\"pointerout\",\"pointerover\"]);\nha(\"onPointerLeave\",[\"pointerout\",\"pointerover\"]);fa(\"onChange\",\"change click focusin focusout input keydown keyup selectionchange\".split(\" \"));fa(\"onSelect\",\"focusout contextmenu dragend focusin keydown keyup mousedown mouseup selectionchange\".split(\" \"));fa(\"onBeforeInput\",[\"compositionend\",\"keypress\",\"textInput\",\"paste\"]);fa(\"onCompositionEnd\",\"compositionend focusout keydown keypress keyup mousedown\".split(\" \"));fa(\"onCompositionStart\",\"compositionstart focusout keydown keypress keyup mousedown\".split(\" \"));\nfa(\"onCompositionUpdate\",\"compositionupdate focusout keydown keypress keyup mousedown\".split(\" \"));var lf=\"abort canplay canplaythrough durationchange emptied encrypted ended error loadeddata loadedmetadata loadstart pause play playing progress ratechange resize seeked seeking stalled suspend timeupdate volumechange waiting\".split(\" \"),mf=new Set(\"cancel close invalid load scroll toggle\".split(\" \").concat(lf));\nfunction nf(a,b,c){var d=a.type||\"unknown-event\";a.currentTarget=c;Ub(d,b,void 0,a);a.currentTarget=null}\nfunction se(a,b){b=0!==(b&4);for(var c=0;c<a.length;c++){var d=a[c],e=d.event;d=d.listeners;a:{var f=void 0;if(b)for(var g=d.length-1;0<=g;g--){var h=d[g],k=h.instance,l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}else for(g=0;g<d.length;g++){h=d[g];k=h.instance;l=h.currentTarget;h=h.listener;if(k!==f&&e.isPropagationStopped())break a;nf(e,h,l);f=k}}}if(Qb)throw a=Rb,Qb=!1,Rb=null,a;}\nfunction D(a,b){var c=b[of];void 0===c&&(c=b[of]=new Set);var d=a+\"__bubble\";c.has(d)||(pf(b,a,2,!1),c.add(d))}function qf(a,b,c){var d=0;b&&(d|=4);pf(c,a,d,b)}var rf=\"_reactListening\"+Math.random().toString(36).slice(2);function sf(a){if(!a[rf]){a[rf]=!0;da.forEach(function(b){\"selectionchange\"!==b&&(mf.has(b)||qf(b,!1,a),qf(b,!0,a))});var b=9===a.nodeType?a:a.ownerDocument;null===b||b[rf]||(b[rf]=!0,qf(\"selectionchange\",!1,b))}}\nfunction pf(a,b,c,d){switch(jd(b)){case 1:var e=ed;break;case 4:e=gd;break;default:e=fd}c=e.bind(null,b,c,a);e=void 0;!Lb||\"touchstart\"!==b&&\"touchmove\"!==b&&\"wheel\"!==b||(e=!0);d?void 0!==e?a.addEventListener(b,c,{capture:!0,passive:e}):a.addEventListener(b,c,!0):void 0!==e?a.addEventListener(b,c,{passive:e}):a.addEventListener(b,c,!1)}\nfunction hd(a,b,c,d,e){var f=d;if(0===(b&1)&&0===(b&2)&&null!==d)a:for(;;){if(null===d)return;var g=d.tag;if(3===g||4===g){var h=d.stateNode.containerInfo;if(h===e||8===h.nodeType&&h.parentNode===e)break;if(4===g)for(g=d.return;null!==g;){var k=g.tag;if(3===k||4===k)if(k=g.stateNode.containerInfo,k===e||8===k.nodeType&&k.parentNode===e)return;g=g.return}for(;null!==h;){g=Wc(h);if(null===g)return;k=g.tag;if(5===k||6===k){d=f=g;continue a}h=h.parentNode}}d=d.return}Jb(function(){var d=f,e=xb(c),g=[];\na:{var h=df.get(a);if(void 0!==h){var k=td,n=a;switch(a){case \"keypress\":if(0===od(c))break a;case \"keydown\":case \"keyup\":k=Rd;break;case \"focusin\":n=\"focus\";k=Fd;break;case \"focusout\":n=\"blur\";k=Fd;break;case \"beforeblur\":case \"afterblur\":k=Fd;break;case \"click\":if(2===c.button)break a;case \"auxclick\":case \"dblclick\":case \"mousedown\":case \"mousemove\":case \"mouseup\":case \"mouseout\":case \"mouseover\":case \"contextmenu\":k=Bd;break;case \"drag\":case \"dragend\":case \"dragenter\":case \"dragexit\":case \"dragleave\":case \"dragover\":case \"dragstart\":case \"drop\":k=\nDd;break;case \"touchcancel\":case \"touchend\":case \"touchmove\":case \"touchstart\":k=Vd;break;case $e:case af:case bf:k=Hd;break;case cf:k=Xd;break;case \"scroll\":k=vd;break;case \"wheel\":k=Zd;break;case \"copy\":case \"cut\":case \"paste\":k=Jd;break;case \"gotpointercapture\":case \"lostpointercapture\":case \"pointercancel\":case \"pointerdown\":case \"pointermove\":case \"pointerout\":case \"pointerover\":case \"pointerup\":k=Td}var t=0!==(b&4),J=!t&&\"scroll\"===a,x=t?null!==h?h+\"Capture\":null:h;t=[];for(var w=d,u;null!==\nw;){u=w;var F=u.stateNode;5===u.tag&&null!==F&&(u=F,null!==x&&(F=Kb(w,x),null!=F&&t.push(tf(w,F,u))));if(J)break;w=w.return}0<t.length&&(h=new k(h,n,null,c,e),g.push({event:h,listeners:t}))}}if(0===(b&7)){a:{h=\"mouseover\"===a||\"pointerover\"===a;k=\"mouseout\"===a||\"pointerout\"===a;if(h&&c!==wb&&(n=c.relatedTarget||c.fromElement)&&(Wc(n)||n[uf]))break a;if(k||h){h=e.window===e?e:(h=e.ownerDocument)?h.defaultView||h.parentWindow:window;if(k){if(n=c.relatedTarget||c.toElement,k=d,n=n?Wc(n):null,null!==\nn&&(J=Vb(n),n!==J||5!==n.tag&&6!==n.tag))n=null}else k=null,n=d;if(k!==n){t=Bd;F=\"onMouseLeave\";x=\"onMouseEnter\";w=\"mouse\";if(\"pointerout\"===a||\"pointerover\"===a)t=Td,F=\"onPointerLeave\",x=\"onPointerEnter\",w=\"pointer\";J=null==k?h:ue(k);u=null==n?h:ue(n);h=new t(F,w+\"leave\",k,c,e);h.target=J;h.relatedTarget=u;F=null;Wc(e)===d&&(t=new t(x,w+\"enter\",n,c,e),t.target=u,t.relatedTarget=J,F=t);J=F;if(k&&n)b:{t=k;x=n;w=0;for(u=t;u;u=vf(u))w++;u=0;for(F=x;F;F=vf(F))u++;for(;0<w-u;)t=vf(t),w--;for(;0<u-w;)x=\nvf(x),u--;for(;w--;){if(t===x||null!==x&&t===x.alternate)break b;t=vf(t);x=vf(x)}t=null}else t=null;null!==k&&wf(g,h,k,t,!1);null!==n&&null!==J&&wf(g,J,n,t,!0)}}}a:{h=d?ue(d):window;k=h.nodeName&&h.nodeName.toLowerCase();if(\"select\"===k||\"input\"===k&&\"file\"===h.type)var na=ve;else if(me(h))if(we)na=Fe;else{na=De;var xa=Ce}else(k=h.nodeName)&&\"input\"===k.toLowerCase()&&(\"checkbox\"===h.type||\"radio\"===h.type)&&(na=Ee);if(na&&(na=na(a,d))){ne(g,na,c,e);break a}xa&&xa(a,h,d);\"focusout\"===a&&(xa=h._wrapperState)&&\nxa.controlled&&\"number\"===h.type&&cb(h,\"number\",h.value)}xa=d?ue(d):window;switch(a){case \"focusin\":if(me(xa)||\"true\"===xa.contentEditable)Qe=xa,Re=d,Se=null;break;case \"focusout\":Se=Re=Qe=null;break;case \"mousedown\":Te=!0;break;case \"contextmenu\":case \"mouseup\":case \"dragend\":Te=!1;Ue(g,c,e);break;case \"selectionchange\":if(Pe)break;case \"keydown\":case \"keyup\":Ue(g,c,e)}var $a;if(ae)b:{switch(a){case \"compositionstart\":var ba=\"onCompositionStart\";break b;case \"compositionend\":ba=\"onCompositionEnd\";\nbreak b;case \"compositionupdate\":ba=\"onCompositionUpdate\";break b}ba=void 0}else ie?ge(a,c)&&(ba=\"onCompositionEnd\"):\"keydown\"===a&&229===c.keyCode&&(ba=\"onCompositionStart\");ba&&(de&&\"ko\"!==c.locale&&(ie||\"onCompositionStart\"!==ba?\"onCompositionEnd\"===ba&&ie&&($a=nd()):(kd=e,ld=\"value\"in kd?kd.value:kd.textContent,ie=!0)),xa=oe(d,ba),0<xa.length&&(ba=new Ld(ba,a,null,c,e),g.push({event:ba,listeners:xa}),$a?ba.data=$a:($a=he(c),null!==$a&&(ba.data=$a))));if($a=ce?je(a,c):ke(a,c))d=oe(d,\"onBeforeInput\"),\n0<d.length&&(e=new Ld(\"onBeforeInput\",\"beforeinput\",null,c,e),g.push({event:e,listeners:d}),e.data=$a)}se(g,b)})}function tf(a,b,c){return{instance:a,listener:b,currentTarget:c}}function oe(a,b){for(var c=b+\"Capture\",d=[];null!==a;){var e=a,f=e.stateNode;5===e.tag&&null!==f&&(e=f,f=Kb(a,c),null!=f&&d.unshift(tf(a,f,e)),f=Kb(a,b),null!=f&&d.push(tf(a,f,e)));a=a.return}return d}function vf(a){if(null===a)return null;do a=a.return;while(a&&5!==a.tag);return a?a:null}\nfunction wf(a,b,c,d,e){for(var f=b._reactName,g=[];null!==c&&c!==d;){var h=c,k=h.alternate,l=h.stateNode;if(null!==k&&k===d)break;5===h.tag&&null!==l&&(h=l,e?(k=Kb(c,f),null!=k&&g.unshift(tf(c,k,h))):e||(k=Kb(c,f),null!=k&&g.push(tf(c,k,h))));c=c.return}0!==g.length&&a.push({event:b,listeners:g})}var xf=/\\r\\n?/g,yf=/\\u0000|\\uFFFD/g;function zf(a){return(\"string\"===typeof a?a:\"\"+a).replace(xf,\"\\n\").replace(yf,\"\")}function Af(a,b,c){b=zf(b);if(zf(a)!==b&&c)throw Error(p(425));}function Bf(){}\nvar Cf=null,Df=null;function Ef(a,b){return\"textarea\"===a||\"noscript\"===a||\"string\"===typeof b.children||\"number\"===typeof b.children||\"object\"===typeof b.dangerouslySetInnerHTML&&null!==b.dangerouslySetInnerHTML&&null!=b.dangerouslySetInnerHTML.__html}\nvar Ff=\"function\"===typeof setTimeout?setTimeout:void 0,Gf=\"function\"===typeof clearTimeout?clearTimeout:void 0,Hf=\"function\"===typeof Promise?Promise:void 0,Jf=\"function\"===typeof queueMicrotask?queueMicrotask:\"undefined\"!==typeof Hf?function(a){return Hf.resolve(null).then(a).catch(If)}:Ff;function If(a){setTimeout(function(){throw a;})}\nfunction Kf(a,b){var c=b,d=0;do{var e=c.nextSibling;a.removeChild(c);if(e&&8===e.nodeType)if(c=e.data,\"/$\"===c){if(0===d){a.removeChild(e);bd(b);return}d--}else\"$\"!==c&&\"$?\"!==c&&\"$!\"!==c||d++;c=e}while(c);bd(b)}function Lf(a){for(;null!=a;a=a.nextSibling){var b=a.nodeType;if(1===b||3===b)break;if(8===b){b=a.data;if(\"$\"===b||\"$!\"===b||\"$?\"===b)break;if(\"/$\"===b)return null}}return a}\nfunction Mf(a){a=a.previousSibling;for(var b=0;a;){if(8===a.nodeType){var c=a.data;if(\"$\"===c||\"$!\"===c||\"$?\"===c){if(0===b)return a;b--}else\"/$\"===c&&b++}a=a.previousSibling}return null}var Nf=Math.random().toString(36).slice(2),Of=\"__reactFiber$\"+Nf,Pf=\"__reactProps$\"+Nf,uf=\"__reactContainer$\"+Nf,of=\"__reactEvents$\"+Nf,Qf=\"__reactListeners$\"+Nf,Rf=\"__reactHandles$\"+Nf;\nfunction Wc(a){var b=a[Of];if(b)return b;for(var c=a.parentNode;c;){if(b=c[uf]||c[Of]){c=b.alternate;if(null!==b.child||null!==c&&null!==c.child)for(a=Mf(a);null!==a;){if(c=a[Of])return c;a=Mf(a)}return b}a=c;c=a.parentNode}return null}function Cb(a){a=a[Of]||a[uf];return!a||5!==a.tag&&6!==a.tag&&13!==a.tag&&3!==a.tag?null:a}function ue(a){if(5===a.tag||6===a.tag)return a.stateNode;throw Error(p(33));}function Db(a){return a[Pf]||null}var Sf=[],Tf=-1;function Uf(a){return{current:a}}\nfunction E(a){0>Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a<c.length;a++){var d=c[a];do d=d(!0);while(null!==d)}eg=null;fg=!1}catch(e){throw null!==eg&&(eg=eg.slice(a+1)),ac(fc,jg),e;}finally{C=b,gg=!1}}return null}var kg=[],lg=0,mg=null,ng=0,og=[],pg=0,qg=null,rg=1,sg=\"\";function tg(a,b){kg[lg++]=ng;kg[lg++]=mg;mg=a;ng=b}\nfunction ug(a,b,c){og[pg++]=rg;og[pg++]=sg;og[pg++]=qg;qg=a;var d=rg;a=sg;var e=32-oc(d)-1;d&=~(1<<e);c+=1;var f=32-oc(b)+e;if(30<f){var g=e-e%5;f=(d&(1<<g)-1).toString(32);d>>=g;e-=g;rg=1<<32-oc(b)+e|c<<e|d;sg=f+a}else rg=1<<f|c<<e|d,sg=a}function vg(a){null!==a.return&&(tg(a,1),ug(a,1,0))}function wg(a){for(;a===mg;)mg=kg[--lg],kg[lg]=null,ng=kg[--lg],kg[lg]=null;for(;a===qg;)qg=og[--pg],og[pg]=null,sg=og[--pg],og[pg]=null,rg=og[--pg],og[pg]=null}var xg=null,yg=null,I=!1,zg=null;\nfunction Ag(a,b){var c=Bg(5,null,null,0);c.elementType=\"DELETED\";c.stateNode=b;c.return=a;b=a.deletions;null===b?(a.deletions=[c],a.flags|=16):b.push(c)}\nfunction Cg(a,b){switch(a.tag){case 5:var c=a.type;b=1!==b.nodeType||c.toLowerCase()!==b.nodeName.toLowerCase()?null:b;return null!==b?(a.stateNode=b,xg=a,yg=Lf(b.firstChild),!0):!1;case 6:return b=\"\"===a.pendingProps||3!==b.nodeType?null:b,null!==b?(a.stateNode=b,xg=a,yg=null,!0):!1;case 13:return b=8!==b.nodeType?null:b,null!==b?(c=null!==qg?{id:rg,overflow:sg}:null,a.memoizedState={dehydrated:b,treeContext:c,retryLane:1073741824},c=Bg(18,null,null,0),c.stateNode=b,c.return=a,a.child=c,xg=a,yg=\nnull,!0):!1;default:return!1}}function Dg(a){return 0!==(a.mode&1)&&0===(a.flags&128)}function Eg(a){if(I){var b=yg;if(b){var c=b;if(!Cg(a,b)){if(Dg(a))throw Error(p(418));b=Lf(c.nextSibling);var d=xg;b&&Cg(a,b)?Ag(d,c):(a.flags=a.flags&-4097|2,I=!1,xg=a)}}else{if(Dg(a))throw Error(p(418));a.flags=a.flags&-4097|2;I=!1;xg=a}}}function Fg(a){for(a=a.return;null!==a&&5!==a.tag&&3!==a.tag&&13!==a.tag;)a=a.return;xg=a}\nfunction Gg(a){if(a!==xg)return!1;if(!I)return Fg(a),I=!0,!1;var b;(b=3!==a.tag)&&!(b=5!==a.tag)&&(b=a.type,b=\"head\"!==b&&\"body\"!==b&&!Ef(a.type,a.memoizedProps));if(b&&(b=yg)){if(Dg(a))throw Hg(),Error(p(418));for(;b;)Ag(a,b),b=Lf(b.nextSibling)}Fg(a);if(13===a.tag){a=a.memoizedState;a=null!==a?a.dehydrated:null;if(!a)throw Error(p(317));a:{a=a.nextSibling;for(b=0;a;){if(8===a.nodeType){var c=a.data;if(\"/$\"===c){if(0===b){yg=Lf(a.nextSibling);break a}b--}else\"$\"!==c&&\"$!\"!==c&&\"$?\"!==c||b++}a=a.nextSibling}yg=\nnull}}else yg=xg?Lf(a.stateNode.nextSibling):null;return!0}function Hg(){for(var a=yg;a;)a=Lf(a.nextSibling)}function Ig(){yg=xg=null;I=!1}function Jg(a){null===zg?zg=[a]:zg.push(a)}var Kg=ua.ReactCurrentBatchConfig;\nfunction Lg(a,b,c){a=c.ref;if(null!==a&&\"function\"!==typeof a&&\"object\"!==typeof a){if(c._owner){c=c._owner;if(c){if(1!==c.tag)throw Error(p(309));var d=c.stateNode}if(!d)throw Error(p(147,a));var e=d,f=\"\"+a;if(null!==b&&null!==b.ref&&\"function\"===typeof b.ref&&b.ref._stringRef===f)return b.ref;b=function(a){var b=e.refs;null===a?delete b[f]:b[f]=a};b._stringRef=f;return b}if(\"string\"!==typeof a)throw Error(p(284));if(!c._owner)throw Error(p(290,a));}return a}\nfunction Mg(a,b){a=Object.prototype.toString.call(b);throw Error(p(31,\"[object Object]\"===a?\"object with keys {\"+Object.keys(b).join(\", \")+\"}\":a));}function Ng(a){var b=a._init;return b(a._payload)}\nfunction Og(a){function b(b,c){if(a){var d=b.deletions;null===d?(b.deletions=[c],b.flags|=16):d.push(c)}}function c(c,d){if(!a)return null;for(;null!==d;)b(c,d),d=d.sibling;return null}function d(a,b){for(a=new Map;null!==b;)null!==b.key?a.set(b.key,b):a.set(b.index,b),b=b.sibling;return a}function e(a,b){a=Pg(a,b);a.index=0;a.sibling=null;return a}function f(b,c,d){b.index=d;if(!a)return b.flags|=1048576,c;d=b.alternate;if(null!==d)return d=d.index,d<c?(b.flags|=2,c):d;b.flags|=2;return c}function g(b){a&&\nnull===b.alternate&&(b.flags|=2);return b}function h(a,b,c,d){if(null===b||6!==b.tag)return b=Qg(c,a.mode,d),b.return=a,b;b=e(b,c);b.return=a;return b}function k(a,b,c,d){var f=c.type;if(f===ya)return m(a,b,c.props.children,d,c.key);if(null!==b&&(b.elementType===f||\"object\"===typeof f&&null!==f&&f.$$typeof===Ha&&Ng(f)===b.type))return d=e(b,c.props),d.ref=Lg(a,b,c),d.return=a,d;d=Rg(c.type,c.key,c.props,null,a.mode,d);d.ref=Lg(a,b,c);d.return=a;return d}function l(a,b,c,d){if(null===b||4!==b.tag||\nb.stateNode.containerInfo!==c.containerInfo||b.stateNode.implementation!==c.implementation)return b=Sg(c,a.mode,d),b.return=a,b;b=e(b,c.children||[]);b.return=a;return b}function m(a,b,c,d,f){if(null===b||7!==b.tag)return b=Tg(c,a.mode,d,f),b.return=a,b;b=e(b,c);b.return=a;return b}function q(a,b,c){if(\"string\"===typeof b&&\"\"!==b||\"number\"===typeof b)return b=Qg(\"\"+b,a.mode,c),b.return=a,b;if(\"object\"===typeof b&&null!==b){switch(b.$$typeof){case va:return c=Rg(b.type,b.key,b.props,null,a.mode,c),\nc.ref=Lg(a,null,b),c.return=a,c;case wa:return b=Sg(b,a.mode,c),b.return=a,b;case Ha:var d=b._init;return q(a,d(b._payload),c)}if(eb(b)||Ka(b))return b=Tg(b,a.mode,c,null),b.return=a,b;Mg(a,b)}return null}function r(a,b,c,d){var e=null!==b?b.key:null;if(\"string\"===typeof c&&\"\"!==c||\"number\"===typeof c)return null!==e?null:h(a,b,\"\"+c,d);if(\"object\"===typeof c&&null!==c){switch(c.$$typeof){case va:return c.key===e?k(a,b,c,d):null;case wa:return c.key===e?l(a,b,c,d):null;case Ha:return e=c._init,r(a,\nb,e(c._payload),d)}if(eb(c)||Ka(c))return null!==e?null:m(a,b,c,d,null);Mg(a,c)}return null}function y(a,b,c,d,e){if(\"string\"===typeof d&&\"\"!==d||\"number\"===typeof d)return a=a.get(c)||null,h(b,a,\"\"+d,e);if(\"object\"===typeof d&&null!==d){switch(d.$$typeof){case va:return a=a.get(null===d.key?c:d.key)||null,k(b,a,d,e);case wa:return a=a.get(null===d.key?c:d.key)||null,l(b,a,d,e);case Ha:var f=d._init;return y(a,b,c,f(d._payload),e)}if(eb(d)||Ka(d))return a=a.get(c)||null,m(b,a,d,e,null);Mg(b,d)}return null}\nfunction n(e,g,h,k){for(var l=null,m=null,u=g,w=g=0,x=null;null!==u&&w<h.length;w++){u.index>w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;w<h.length;w++)u=q(e,h[w],k),null!==u&&(g=f(u,g,w),null===m?l=u:m.sibling=u,m=u);I&&tg(e,w);return l}for(u=d(e,u);w<h.length;w++)x=y(u,e,w,h[w],k),null!==x&&(a&&null!==x.alternate&&u.delete(null===\nx.key?w:x.key),g=f(x,g,w),null===m?l=x:m.sibling=x,m=x);a&&u.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function t(e,g,h,k){var l=Ka(h);if(\"function\"!==typeof l)throw Error(p(150));h=l.call(h);if(null==h)throw Error(p(151));for(var u=l=null,m=g,w=g=0,x=null,n=h.next();null!==m&&!n.done;w++,n=h.next()){m.index>w?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&Ng(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=Lg(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Tg(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=Rg(f.type,f.key,f.props,null,a.mode,h),h.ref=Lg(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=Sg(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);Mg(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=Qg(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Ug=Og(!0),Vg=Og(!1),Wg=Uf(null),Xg=null,Yg=null,Zg=null;function $g(){Zg=Yg=Xg=null}function ah(a){var b=Wg.current;E(Wg);a._currentValue=b}function bh(a,b,c){for(;null!==a;){var d=a.alternate;(a.childLanes&b)!==b?(a.childLanes|=b,null!==d&&(d.childLanes|=b)):null!==d&&(d.childLanes&b)!==b&&(d.childLanes|=b);if(a===c)break;a=a.return}}\nfunction ch(a,b){Xg=a;Zg=Yg=null;a=a.dependencies;null!==a&&null!==a.firstContext&&(0!==(a.lanes&b)&&(dh=!0),a.firstContext=null)}function eh(a){var b=a._currentValue;if(Zg!==a)if(a={context:a,memoizedValue:b,next:null},null===Yg){if(null===Xg)throw Error(p(308));Yg=a;Xg.dependencies={lanes:0,firstContext:a}}else Yg=Yg.next=a;return b}var fh=null;function gh(a){null===fh?fh=[a]:fh.push(a)}\nfunction hh(a,b,c,d){var e=b.interleaved;null===e?(c.next=c,gh(b)):(c.next=e.next,e.next=c);b.interleaved=c;return ih(a,d)}function ih(a,b){a.lanes|=b;var c=a.alternate;null!==c&&(c.lanes|=b);c=a;for(a=a.return;null!==a;)a.childLanes|=b,c=a.alternate,null!==c&&(c.childLanes|=b),c=a,a=a.return;return 3===c.tag?c.stateNode:null}var jh=!1;function kh(a){a.updateQueue={baseState:a.memoizedState,firstBaseUpdate:null,lastBaseUpdate:null,shared:{pending:null,interleaved:null,lanes:0},effects:null}}\nfunction lh(a,b){a=a.updateQueue;b.updateQueue===a&&(b.updateQueue={baseState:a.baseState,firstBaseUpdate:a.firstBaseUpdate,lastBaseUpdate:a.lastBaseUpdate,shared:a.shared,effects:a.effects})}function mh(a,b){return{eventTime:a,lane:b,tag:0,payload:null,callback:null,next:null}}\nfunction nh(a,b,c){var d=a.updateQueue;if(null===d)return null;d=d.shared;if(0!==(K&2)){var e=d.pending;null===e?b.next=b:(b.next=e.next,e.next=b);d.pending=b;return ih(a,c)}e=d.interleaved;null===e?(b.next=b,gh(d)):(b.next=e.next,e.next=b);d.interleaved=b;return ih(a,c)}function oh(a,b,c){b=b.updateQueue;if(null!==b&&(b=b.shared,0!==(c&4194240))){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nfunction ph(a,b){var c=a.updateQueue,d=a.alternate;if(null!==d&&(d=d.updateQueue,c===d)){var e=null,f=null;c=c.firstBaseUpdate;if(null!==c){do{var g={eventTime:c.eventTime,lane:c.lane,tag:c.tag,payload:c.payload,callback:c.callback,next:null};null===f?e=f=g:f=f.next=g;c=c.next}while(null!==c);null===f?e=f=b:f=f.next=b}else e=f=b;c={baseState:d.baseState,firstBaseUpdate:e,lastBaseUpdate:f,shared:d.shared,effects:d.effects};a.updateQueue=c;return}a=c.lastBaseUpdate;null===a?c.firstBaseUpdate=b:a.next=\nb;c.lastBaseUpdate=b}\nfunction qh(a,b,c,d){var e=a.updateQueue;jh=!1;var f=e.firstBaseUpdate,g=e.lastBaseUpdate,h=e.shared.pending;if(null!==h){e.shared.pending=null;var k=h,l=k.next;k.next=null;null===g?f=l:g.next=l;g=k;var m=a.alternate;null!==m&&(m=m.updateQueue,h=m.lastBaseUpdate,h!==g&&(null===h?m.firstBaseUpdate=l:h.next=l,m.lastBaseUpdate=k))}if(null!==f){var q=e.baseState;g=0;m=l=k=null;h=f;do{var r=h.lane,y=h.eventTime;if((d&r)===r){null!==m&&(m=m.next={eventTime:y,lane:0,tag:h.tag,payload:h.payload,callback:h.callback,\nnext:null});a:{var n=a,t=h;r=b;y=c;switch(t.tag){case 1:n=t.payload;if(\"function\"===typeof n){q=n.call(y,q,r);break a}q=n;break a;case 3:n.flags=n.flags&-65537|128;case 0:n=t.payload;r=\"function\"===typeof n?n.call(y,q,r):n;if(null===r||void 0===r)break a;q=A({},q,r);break a;case 2:jh=!0}}null!==h.callback&&0!==h.lane&&(a.flags|=64,r=e.effects,null===r?e.effects=[h]:r.push(h))}else y={eventTime:y,lane:r,tag:h.tag,payload:h.payload,callback:h.callback,next:null},null===m?(l=m=y,k=q):m=m.next=y,g|=r;\nh=h.next;if(null===h)if(h=e.shared.pending,null===h)break;else r=h,h=r.next,r.next=null,e.lastBaseUpdate=r,e.shared.pending=null}while(1);null===m&&(k=q);e.baseState=k;e.firstBaseUpdate=l;e.lastBaseUpdate=m;b=e.shared.interleaved;if(null!==b){e=b;do g|=e.lane,e=e.next;while(e!==b)}else null===f&&(e.shared.lanes=0);rh|=g;a.lanes=g;a.memoizedState=q}}\nfunction sh(a,b,c){a=b.effects;b.effects=null;if(null!==a)for(b=0;b<a.length;b++){var d=a[b],e=d.callback;if(null!==e){d.callback=null;d=c;if(\"function\"!==typeof e)throw Error(p(191,e));e.call(d)}}}var th={},uh=Uf(th),vh=Uf(th),wh=Uf(th);function xh(a){if(a===th)throw Error(p(174));return a}\nfunction yh(a,b){G(wh,b);G(vh,a);G(uh,th);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(uh);G(uh,b)}function zh(){E(uh);E(vh);E(wh)}function Ah(a){xh(wh.current);var b=xh(uh.current);var c=lb(b,a.type);b!==c&&(G(vh,a),G(uh,c))}function Bh(a){vh.current===a&&(E(uh),E(vh))}var L=Uf(0);\nfunction Ch(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Dh=[];\nfunction Eh(){for(var a=0;a<Dh.length;a++)Dh[a]._workInProgressVersionPrimary=null;Dh.length=0}var Fh=ua.ReactCurrentDispatcher,Gh=ua.ReactCurrentBatchConfig,Hh=0,M=null,N=null,O=null,Ih=!1,Jh=!1,Kh=0,Lh=0;function P(){throw Error(p(321));}function Mh(a,b){if(null===b)return!1;for(var c=0;c<b.length&&c<a.length;c++)if(!He(a[c],b[c]))return!1;return!0}\nfunction Nh(a,b,c,d,e,f){Hh=f;M=b;b.memoizedState=null;b.updateQueue=null;b.lanes=0;Fh.current=null===a||null===a.memoizedState?Oh:Ph;a=c(d,e);if(Jh){f=0;do{Jh=!1;Kh=0;if(25<=f)throw Error(p(301));f+=1;O=N=null;b.updateQueue=null;Fh.current=Qh;a=c(d,e)}while(Jh)}Fh.current=Rh;b=null!==N&&null!==N.next;Hh=0;O=N=M=null;Ih=!1;if(b)throw Error(p(300));return a}function Sh(){var a=0!==Kh;Kh=0;return a}\nfunction Th(){var a={memoizedState:null,baseState:null,baseQueue:null,queue:null,next:null};null===O?M.memoizedState=O=a:O=O.next=a;return O}function Uh(){if(null===N){var a=M.alternate;a=null!==a?a.memoizedState:null}else a=N.next;var b=null===O?M.memoizedState:O.next;if(null!==b)O=b,N=a;else{if(null===a)throw Error(p(310));N=a;a={memoizedState:N.memoizedState,baseState:N.baseState,baseQueue:N.baseQueue,queue:N.queue,next:null};null===O?M.memoizedState=O=a:O=O.next=a}return O}\nfunction Vh(a,b){return\"function\"===typeof b?b(a):b}\nfunction Wh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=N,e=d.baseQueue,f=c.pending;if(null!==f){if(null!==e){var g=e.next;e.next=f.next;f.next=g}d.baseQueue=e=f;c.pending=null}if(null!==e){f=e.next;d=d.baseState;var h=g=null,k=null,l=f;do{var m=l.lane;if((Hh&m)===m)null!==k&&(k=k.next={lane:0,action:l.action,hasEagerState:l.hasEagerState,eagerState:l.eagerState,next:null}),d=l.hasEagerState?l.eagerState:a(d,l.action);else{var q={lane:m,action:l.action,hasEagerState:l.hasEagerState,\neagerState:l.eagerState,next:null};null===k?(h=k=q,g=d):k=k.next=q;M.lanes|=m;rh|=m}l=l.next}while(null!==l&&l!==f);null===k?g=d:k.next=h;He(d,b.memoizedState)||(dh=!0);b.memoizedState=d;b.baseState=g;b.baseQueue=k;c.lastRenderedState=d}a=c.interleaved;if(null!==a){e=a;do f=e.lane,M.lanes|=f,rh|=f,e=e.next;while(e!==a)}else null===e&&(c.lanes=0);return[b.memoizedState,c.dispatch]}\nfunction Xh(a){var b=Uh(),c=b.queue;if(null===c)throw Error(p(311));c.lastRenderedReducer=a;var d=c.dispatch,e=c.pending,f=b.memoizedState;if(null!==e){c.pending=null;var g=e=e.next;do f=a(f,g.action),g=g.next;while(g!==e);He(f,b.memoizedState)||(dh=!0);b.memoizedState=f;null===b.baseQueue&&(b.baseState=f);c.lastRenderedState=f}return[f,d]}function Yh(){}\nfunction Zh(a,b){var c=M,d=Uh(),e=b(),f=!He(d.memoizedState,e);f&&(d.memoizedState=e,dh=!0);d=d.queue;$h(ai.bind(null,c,d,a),[a]);if(d.getSnapshot!==b||f||null!==O&&O.memoizedState.tag&1){c.flags|=2048;bi(9,ci.bind(null,c,d,e,b),void 0,null);if(null===Q)throw Error(p(349));0!==(Hh&30)||di(c,b,e)}return e}function di(a,b,c){a.flags|=16384;a={getSnapshot:b,value:c};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.stores=[a]):(c=b.stores,null===c?b.stores=[a]:c.push(a))}\nfunction ci(a,b,c,d){b.value=c;b.getSnapshot=d;ei(b)&&fi(a)}function ai(a,b,c){return c(function(){ei(b)&&fi(a)})}function ei(a){var b=a.getSnapshot;a=a.value;try{var c=b();return!He(a,c)}catch(d){return!0}}function fi(a){var b=ih(a,1);null!==b&&gi(b,a,1,-1)}\nfunction hi(a){var b=Th();\"function\"===typeof a&&(a=a());b.memoizedState=b.baseState=a;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:Vh,lastRenderedState:a};b.queue=a;a=a.dispatch=ii.bind(null,M,a);return[b.memoizedState,a]}\nfunction bi(a,b,c,d){a={tag:a,create:b,destroy:c,deps:d,next:null};b=M.updateQueue;null===b?(b={lastEffect:null,stores:null},M.updateQueue=b,b.lastEffect=a.next=a):(c=b.lastEffect,null===c?b.lastEffect=a.next=a:(d=c.next,c.next=a,a.next=d,b.lastEffect=a));return a}function ji(){return Uh().memoizedState}function ki(a,b,c,d){var e=Th();M.flags|=a;e.memoizedState=bi(1|b,c,void 0,void 0===d?null:d)}\nfunction li(a,b,c,d){var e=Uh();d=void 0===d?null:d;var f=void 0;if(null!==N){var g=N.memoizedState;f=g.destroy;if(null!==d&&Mh(d,g.deps)){e.memoizedState=bi(b,c,f,d);return}}M.flags|=a;e.memoizedState=bi(1|b,c,f,d)}function mi(a,b){return ki(8390656,8,a,b)}function $h(a,b){return li(2048,8,a,b)}function ni(a,b){return li(4,2,a,b)}function oi(a,b){return li(4,4,a,b)}\nfunction pi(a,b){if(\"function\"===typeof b)return a=a(),b(a),function(){b(null)};if(null!==b&&void 0!==b)return a=a(),b.current=a,function(){b.current=null}}function qi(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return li(4,4,pi.bind(null,b,a),c)}function ri(){}function si(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];c.memoizedState=[a,b];return a}\nfunction ti(a,b){var c=Uh();b=void 0===b?null:b;var d=c.memoizedState;if(null!==d&&null!==b&&Mh(b,d[1]))return d[0];a=a();c.memoizedState=[a,b];return a}function ui(a,b,c){if(0===(Hh&21))return a.baseState&&(a.baseState=!1,dh=!0),a.memoizedState=c;He(c,b)||(c=yc(),M.lanes|=c,rh|=c,a.baseState=!0);return b}function vi(a,b){var c=C;C=0!==c&&4>c?c:4;a(!0);var d=Gh.transition;Gh.transition={};try{a(!1),b()}finally{C=c,Gh.transition=d}}function wi(){return Uh().memoizedState}\nfunction xi(a,b,c){var d=yi(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,c);else if(c=hh(a,b,c,d),null!==c){var e=R();gi(c,a,d,e);Bi(c,b,d)}}\nfunction ii(a,b,c){var d=yi(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(zi(a))Ai(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,gh(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=hh(a,b,e,d);null!==c&&(e=R(),gi(c,a,d,e),Bi(c,b,d))}}\nfunction zi(a){var b=a.alternate;return a===M||null!==b&&b===M}function Ai(a,b){Jh=Ih=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Bi(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar Rh={readContext:eh,useCallback:P,useContext:P,useEffect:P,useImperativeHandle:P,useInsertionEffect:P,useLayoutEffect:P,useMemo:P,useReducer:P,useRef:P,useState:P,useDebugValue:P,useDeferredValue:P,useTransition:P,useMutableSource:P,useSyncExternalStore:P,useId:P,unstable_isNewReconciler:!1},Oh={readContext:eh,useCallback:function(a,b){Th().memoizedState=[a,void 0===b?null:b];return a},useContext:eh,useEffect:mi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ki(4194308,\n4,pi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ki(4194308,4,a,b)},useInsertionEffect:function(a,b){return ki(4,2,a,b)},useMemo:function(a,b){var c=Th();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=Th();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=xi.bind(null,M,a);return[d.memoizedState,a]},useRef:function(a){var b=\nTh();a={current:a};return b.memoizedState=a},useState:hi,useDebugValue:ri,useDeferredValue:function(a){return Th().memoizedState=a},useTransition:function(){var a=hi(!1),b=a[0];a=vi.bind(null,a[1]);Th().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=M,e=Th();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===Q)throw Error(p(349));0!==(Hh&30)||di(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;mi(ai.bind(null,d,\nf,a),[a]);d.flags|=2048;bi(9,ci.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=Th(),b=Q.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Kh++;0<c&&(b+=\"H\"+c.toString(32));b+=\":\"}else c=Lh++,b=\":\"+b+\"r\"+c.toString(32)+\":\";return a.memoizedState=b},unstable_isNewReconciler:!1},Ph={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Wh,useRef:ji,useState:function(){return Wh(Vh)},\nuseDebugValue:ri,useDeferredValue:function(a){var b=Uh();return ui(b,N.memoizedState,a)},useTransition:function(){var a=Wh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1},Qh={readContext:eh,useCallback:si,useContext:eh,useEffect:$h,useImperativeHandle:qi,useInsertionEffect:ni,useLayoutEffect:oi,useMemo:ti,useReducer:Xh,useRef:ji,useState:function(){return Xh(Vh)},useDebugValue:ri,useDeferredValue:function(a){var b=Uh();return null===\nN?b.memoizedState=a:ui(b,N.memoizedState,a)},useTransition:function(){var a=Xh(Vh)[0],b=Uh().memoizedState;return[a,b]},useMutableSource:Yh,useSyncExternalStore:Zh,useId:wi,unstable_isNewReconciler:!1};function Ci(a,b){if(a&&a.defaultProps){b=A({},b);a=a.defaultProps;for(var c in a)void 0===b[c]&&(b[c]=a[c]);return b}return b}function Di(a,b,c,d){b=a.memoizedState;c=c(d,b);c=null===c||void 0===c?b:A({},b,c);a.memoizedState=c;0===a.lanes&&(a.updateQueue.baseState=c)}\nvar Ei={isMounted:function(a){return(a=a._reactInternals)?Vb(a)===a:!1},enqueueSetState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueReplaceState:function(a,b,c){a=a._reactInternals;var d=R(),e=yi(a),f=mh(d,e);f.tag=1;f.payload=b;void 0!==c&&null!==c&&(f.callback=c);b=nh(a,f,e);null!==b&&(gi(b,a,e,d),oh(b,a,e))},enqueueForceUpdate:function(a,b){a=a._reactInternals;var c=R(),d=\nyi(a),e=mh(c,d);e.tag=2;void 0!==b&&null!==b&&(e.callback=b);b=nh(a,e,d);null!==b&&(gi(b,a,d,c),oh(b,a,d))}};function Fi(a,b,c,d,e,f,g){a=a.stateNode;return\"function\"===typeof a.shouldComponentUpdate?a.shouldComponentUpdate(d,f,g):b.prototype&&b.prototype.isPureReactComponent?!Ie(c,d)||!Ie(e,f):!0}\nfunction Gi(a,b,c){var d=!1,e=Vf;var f=b.contextType;\"object\"===typeof f&&null!==f?f=eh(f):(e=Zf(b)?Xf:H.current,d=b.contextTypes,f=(d=null!==d&&void 0!==d)?Yf(a,e):Vf);b=new b(c,f);a.memoizedState=null!==b.state&&void 0!==b.state?b.state:null;b.updater=Ei;a.stateNode=b;b._reactInternals=a;d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=e,a.__reactInternalMemoizedMaskedChildContext=f);return b}\nfunction Hi(a,b,c,d){a=b.state;\"function\"===typeof b.componentWillReceiveProps&&b.componentWillReceiveProps(c,d);\"function\"===typeof b.UNSAFE_componentWillReceiveProps&&b.UNSAFE_componentWillReceiveProps(c,d);b.state!==a&&Ei.enqueueReplaceState(b,b.state,null)}\nfunction Ii(a,b,c,d){var e=a.stateNode;e.props=c;e.state=a.memoizedState;e.refs={};kh(a);var f=b.contextType;\"object\"===typeof f&&null!==f?e.context=eh(f):(f=Zf(b)?Xf:H.current,e.context=Yf(a,f));e.state=a.memoizedState;f=b.getDerivedStateFromProps;\"function\"===typeof f&&(Di(a,b,f,c),e.state=a.memoizedState);\"function\"===typeof b.getDerivedStateFromProps||\"function\"===typeof e.getSnapshotBeforeUpdate||\"function\"!==typeof e.UNSAFE_componentWillMount&&\"function\"!==typeof e.componentWillMount||(b=e.state,\n\"function\"===typeof e.componentWillMount&&e.componentWillMount(),\"function\"===typeof e.UNSAFE_componentWillMount&&e.UNSAFE_componentWillMount(),b!==e.state&&Ei.enqueueReplaceState(e,e.state,null),qh(a,c,e,d),e.state=a.memoizedState);\"function\"===typeof e.componentDidMount&&(a.flags|=4194308)}function Ji(a,b){try{var c=\"\",d=b;do c+=Pa(d),d=d.return;while(d);var e=c}catch(f){e=\"\\nError generating stack: \"+f.message+\"\\n\"+f.stack}return{value:a,source:b,stack:e,digest:null}}\nfunction Ki(a,b,c){return{value:a,source:null,stack:null!=c?c:null,digest:null!=b?b:null}}function Li(a,b){try{console.error(b.value)}catch(c){setTimeout(function(){throw c;})}}var Mi=\"function\"===typeof WeakMap?WeakMap:Map;function Ni(a,b,c){c=mh(-1,c);c.tag=3;c.payload={element:null};var d=b.value;c.callback=function(){Oi||(Oi=!0,Pi=d);Li(a,b)};return c}\nfunction Qi(a,b,c){c=mh(-1,c);c.tag=3;var d=a.type.getDerivedStateFromError;if(\"function\"===typeof d){var e=b.value;c.payload=function(){return d(e)};c.callback=function(){Li(a,b)}}var f=a.stateNode;null!==f&&\"function\"===typeof f.componentDidCatch&&(c.callback=function(){Li(a,b);\"function\"!==typeof d&&(null===Ri?Ri=new Set([this]):Ri.add(this));var c=b.stack;this.componentDidCatch(b.value,{componentStack:null!==c?c:\"\"})});return c}\nfunction Si(a,b,c){var d=a.pingCache;if(null===d){d=a.pingCache=new Mi;var e=new Set;d.set(b,e)}else e=d.get(b),void 0===e&&(e=new Set,d.set(b,e));e.has(c)||(e.add(c),a=Ti.bind(null,a,b,c),b.then(a,a))}function Ui(a){do{var b;if(b=13===a.tag)b=a.memoizedState,b=null!==b?null!==b.dehydrated?!0:!1:!0;if(b)return a;a=a.return}while(null!==a);return null}\nfunction Vi(a,b,c,d,e){if(0===(a.mode&1))return a===b?a.flags|=65536:(a.flags|=128,c.flags|=131072,c.flags&=-52805,1===c.tag&&(null===c.alternate?c.tag=17:(b=mh(-1,1),b.tag=2,nh(c,b,1))),c.lanes|=1),a;a.flags|=65536;a.lanes=e;return a}var Wi=ua.ReactCurrentOwner,dh=!1;function Xi(a,b,c,d){b.child=null===a?Vg(b,null,c,d):Ug(b,a.child,c,d)}\nfunction Yi(a,b,c,d,e){c=c.render;var f=b.ref;ch(b,e);d=Nh(a,b,c,d,f,e);c=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&c&&vg(b);b.flags|=1;Xi(a,b,d,e);return b.child}\nfunction $i(a,b,c,d,e){if(null===a){var f=c.type;if(\"function\"===typeof f&&!aj(f)&&void 0===f.defaultProps&&null===c.compare&&void 0===c.defaultProps)return b.tag=15,b.type=f,bj(a,b,f,d,e);a=Rg(c.type,null,d,b,b.mode,e);a.ref=b.ref;a.return=b;return b.child=a}f=a.child;if(0===(a.lanes&e)){var g=f.memoizedProps;c=c.compare;c=null!==c?c:Ie;if(c(g,d)&&a.ref===b.ref)return Zi(a,b,e)}b.flags|=1;a=Pg(f,d);a.ref=b.ref;a.return=b;return b.child=a}\nfunction bj(a,b,c,d,e){if(null!==a){var f=a.memoizedProps;if(Ie(f,d)&&a.ref===b.ref)if(dh=!1,b.pendingProps=d=f,0!==(a.lanes&e))0!==(a.flags&131072)&&(dh=!0);else return b.lanes=a.lanes,Zi(a,b,e)}return cj(a,b,c,d,e)}\nfunction dj(a,b,c){var d=b.pendingProps,e=d.children,f=null!==a?a.memoizedState:null;if(\"hidden\"===d.mode)if(0===(b.mode&1))b.memoizedState={baseLanes:0,cachePool:null,transitions:null},G(ej,fj),fj|=c;else{if(0===(c&1073741824))return a=null!==f?f.baseLanes|c:c,b.lanes=b.childLanes=1073741824,b.memoizedState={baseLanes:a,cachePool:null,transitions:null},b.updateQueue=null,G(ej,fj),fj|=a,null;b.memoizedState={baseLanes:0,cachePool:null,transitions:null};d=null!==f?f.baseLanes:c;G(ej,fj);fj|=d}else null!==\nf?(d=f.baseLanes|c,b.memoizedState=null):d=c,G(ej,fj),fj|=d;Xi(a,b,e,c);return b.child}function gj(a,b){var c=b.ref;if(null===a&&null!==c||null!==a&&a.ref!==c)b.flags|=512,b.flags|=2097152}function cj(a,b,c,d,e){var f=Zf(c)?Xf:H.current;f=Yf(b,f);ch(b,e);c=Nh(a,b,c,d,f,e);d=Sh();if(null!==a&&!dh)return b.updateQueue=a.updateQueue,b.flags&=-2053,a.lanes&=~e,Zi(a,b,e);I&&d&&vg(b);b.flags|=1;Xi(a,b,c,e);return b.child}\nfunction hj(a,b,c,d,e){if(Zf(c)){var f=!0;cg(b)}else f=!1;ch(b,e);if(null===b.stateNode)ij(a,b),Gi(b,c,d),Ii(b,c,d,e),d=!0;else if(null===a){var g=b.stateNode,h=b.memoizedProps;g.props=h;var k=g.context,l=c.contextType;\"object\"===typeof l&&null!==l?l=eh(l):(l=Zf(c)?Xf:H.current,l=Yf(b,l));var m=c.getDerivedStateFromProps,q=\"function\"===typeof m||\"function\"===typeof g.getSnapshotBeforeUpdate;q||\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||\n(h!==d||k!==l)&&Hi(b,g,d,l);jh=!1;var r=b.memoizedState;g.state=r;qh(b,d,g,e);k=b.memoizedState;h!==d||r!==k||Wf.current||jh?(\"function\"===typeof m&&(Di(b,c,m,d),k=b.memoizedState),(h=jh||Fi(b,c,h,d,r,k,l))?(q||\"function\"!==typeof g.UNSAFE_componentWillMount&&\"function\"!==typeof g.componentWillMount||(\"function\"===typeof g.componentWillMount&&g.componentWillMount(),\"function\"===typeof g.UNSAFE_componentWillMount&&g.UNSAFE_componentWillMount()),\"function\"===typeof g.componentDidMount&&(b.flags|=4194308)):\n(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),b.memoizedProps=d,b.memoizedState=k),g.props=d,g.state=k,g.context=l,d=h):(\"function\"===typeof g.componentDidMount&&(b.flags|=4194308),d=!1)}else{g=b.stateNode;lh(a,b);h=b.memoizedProps;l=b.type===b.elementType?h:Ci(b.type,h);g.props=l;q=b.pendingProps;r=g.context;k=c.contextType;\"object\"===typeof k&&null!==k?k=eh(k):(k=Zf(c)?Xf:H.current,k=Yf(b,k));var y=c.getDerivedStateFromProps;(m=\"function\"===typeof y||\"function\"===typeof g.getSnapshotBeforeUpdate)||\n\"function\"!==typeof g.UNSAFE_componentWillReceiveProps&&\"function\"!==typeof g.componentWillReceiveProps||(h!==q||r!==k)&&Hi(b,g,d,k);jh=!1;r=b.memoizedState;g.state=r;qh(b,d,g,e);var n=b.memoizedState;h!==q||r!==n||Wf.current||jh?(\"function\"===typeof y&&(Di(b,c,y,d),n=b.memoizedState),(l=jh||Fi(b,c,l,d,r,n,k)||!1)?(m||\"function\"!==typeof g.UNSAFE_componentWillUpdate&&\"function\"!==typeof g.componentWillUpdate||(\"function\"===typeof g.componentWillUpdate&&g.componentWillUpdate(d,n,k),\"function\"===typeof g.UNSAFE_componentWillUpdate&&\ng.UNSAFE_componentWillUpdate(d,n,k)),\"function\"===typeof g.componentDidUpdate&&(b.flags|=4),\"function\"===typeof g.getSnapshotBeforeUpdate&&(b.flags|=1024)):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),b.memoizedProps=d,b.memoizedState=n),g.props=d,g.state=n,g.context=k,d=l):(\"function\"!==typeof g.componentDidUpdate||h===a.memoizedProps&&r===\na.memoizedState||(b.flags|=4),\"function\"!==typeof g.getSnapshotBeforeUpdate||h===a.memoizedProps&&r===a.memoizedState||(b.flags|=1024),d=!1)}return jj(a,b,c,d,f,e)}\nfunction jj(a,b,c,d,e,f){gj(a,b);var g=0!==(b.flags&128);if(!d&&!g)return e&&dg(b,c,!1),Zi(a,b,f);d=b.stateNode;Wi.current=b;var h=g&&\"function\"!==typeof c.getDerivedStateFromError?null:d.render();b.flags|=1;null!==a&&g?(b.child=Ug(b,a.child,null,f),b.child=Ug(b,null,h,f)):Xi(a,b,h,f);b.memoizedState=d.state;e&&dg(b,c,!0);return b.child}function kj(a){var b=a.stateNode;b.pendingContext?ag(a,b.pendingContext,b.pendingContext!==b.context):b.context&&ag(a,b.context,!1);yh(a,b.containerInfo)}\nfunction lj(a,b,c,d,e){Ig();Jg(e);b.flags|=256;Xi(a,b,c,d);return b.child}var mj={dehydrated:null,treeContext:null,retryLane:0};function nj(a){return{baseLanes:a,cachePool:null,transitions:null}}\nfunction oj(a,b,c){var d=b.pendingProps,e=L.current,f=!1,g=0!==(b.flags&128),h;(h=g)||(h=null!==a&&null===a.memoizedState?!1:0!==(e&2));if(h)f=!0,b.flags&=-129;else if(null===a||null!==a.memoizedState)e|=1;G(L,e&1);if(null===a){Eg(b);a=b.memoizedState;if(null!==a&&(a=a.dehydrated,null!==a))return 0===(b.mode&1)?b.lanes=1:\"$!\"===a.data?b.lanes=8:b.lanes=1073741824,null;g=d.children;a=d.fallback;return f?(d=b.mode,f=b.child,g={mode:\"hidden\",children:g},0===(d&1)&&null!==f?(f.childLanes=0,f.pendingProps=\ng):f=pj(g,d,0,null),a=Tg(a,d,c,null),f.return=b,a.return=b,f.sibling=a,b.child=f,b.child.memoizedState=nj(c),b.memoizedState=mj,a):qj(b,g)}e=a.memoizedState;if(null!==e&&(h=e.dehydrated,null!==h))return rj(a,b,g,d,h,e,c);if(f){f=d.fallback;g=b.mode;e=a.child;h=e.sibling;var k={mode:\"hidden\",children:d.children};0===(g&1)&&b.child!==e?(d=b.child,d.childLanes=0,d.pendingProps=k,b.deletions=null):(d=Pg(e,k),d.subtreeFlags=e.subtreeFlags&14680064);null!==h?f=Pg(h,f):(f=Tg(f,g,c,null),f.flags|=2);f.return=\nb;d.return=b;d.sibling=f;b.child=d;d=f;f=b.child;g=a.child.memoizedState;g=null===g?nj(c):{baseLanes:g.baseLanes|c,cachePool:null,transitions:g.transitions};f.memoizedState=g;f.childLanes=a.childLanes&~c;b.memoizedState=mj;return d}f=a.child;a=f.sibling;d=Pg(f,{mode:\"visible\",children:d.children});0===(b.mode&1)&&(d.lanes=c);d.return=b;d.sibling=null;null!==a&&(c=b.deletions,null===c?(b.deletions=[a],b.flags|=16):c.push(a));b.child=d;b.memoizedState=null;return d}\nfunction qj(a,b){b=pj({mode:\"visible\",children:b},a.mode,0,null);b.return=a;return a.child=b}function sj(a,b,c,d){null!==d&&Jg(d);Ug(b,a.child,null,c);a=qj(b,b.pendingProps.children);a.flags|=2;b.memoizedState=null;return a}\nfunction rj(a,b,c,d,e,f,g){if(c){if(b.flags&256)return b.flags&=-257,d=Ki(Error(p(422))),sj(a,b,g,d);if(null!==b.memoizedState)return b.child=a.child,b.flags|=128,null;f=d.fallback;e=b.mode;d=pj({mode:\"visible\",children:d.children},e,0,null);f=Tg(f,e,g,null);f.flags|=2;d.return=b;f.return=b;d.sibling=f;b.child=d;0!==(b.mode&1)&&Ug(b,a.child,null,g);b.child.memoizedState=nj(g);b.memoizedState=mj;return f}if(0===(b.mode&1))return sj(a,b,g,null);if(\"$!\"===e.data){d=e.nextSibling&&e.nextSibling.dataset;\nif(d)var h=d.dgst;d=h;f=Error(p(419));d=Ki(f,d,void 0);return sj(a,b,g,d)}h=0!==(g&a.childLanes);if(dh||h){d=Q;if(null!==d){switch(g&-g){case 4:e=2;break;case 16:e=8;break;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:e=32;break;case 536870912:e=268435456;break;default:e=0}e=0!==(e&(d.suspendedLanes|g))?0:e;\n0!==e&&e!==f.retryLane&&(f.retryLane=e,ih(a,e),gi(d,a,e,-1))}tj();d=Ki(Error(p(421)));return sj(a,b,g,d)}if(\"$?\"===e.data)return b.flags|=128,b.child=a.child,b=uj.bind(null,a),e._reactRetry=b,null;a=f.treeContext;yg=Lf(e.nextSibling);xg=b;I=!0;zg=null;null!==a&&(og[pg++]=rg,og[pg++]=sg,og[pg++]=qg,rg=a.id,sg=a.overflow,qg=b);b=qj(b,d.children);b.flags|=4096;return b}function vj(a,b,c){a.lanes|=b;var d=a.alternate;null!==d&&(d.lanes|=b);bh(a.return,b,c)}\nfunction wj(a,b,c,d,e){var f=a.memoizedState;null===f?a.memoizedState={isBackwards:b,rendering:null,renderingStartTime:0,last:d,tail:c,tailMode:e}:(f.isBackwards=b,f.rendering=null,f.renderingStartTime=0,f.last=d,f.tail=c,f.tailMode=e)}\nfunction xj(a,b,c){var d=b.pendingProps,e=d.revealOrder,f=d.tail;Xi(a,b,d.children,c);d=L.current;if(0!==(d&2))d=d&1|2,b.flags|=128;else{if(null!==a&&0!==(a.flags&128))a:for(a=b.child;null!==a;){if(13===a.tag)null!==a.memoizedState&&vj(a,c,b);else if(19===a.tag)vj(a,c,b);else if(null!==a.child){a.child.return=a;a=a.child;continue}if(a===b)break a;for(;null===a.sibling;){if(null===a.return||a.return===b)break a;a=a.return}a.sibling.return=a.return;a=a.sibling}d&=1}G(L,d);if(0===(b.mode&1))b.memoizedState=\nnull;else switch(e){case \"forwards\":c=b.child;for(e=null;null!==c;)a=c.alternate,null!==a&&null===Ch(a)&&(e=c),c=c.sibling;c=e;null===c?(e=b.child,b.child=null):(e=c.sibling,c.sibling=null);wj(b,!1,e,c,f);break;case \"backwards\":c=null;e=b.child;for(b.child=null;null!==e;){a=e.alternate;if(null!==a&&null===Ch(a)){b.child=e;break}a=e.sibling;e.sibling=c;c=e;e=a}wj(b,!0,c,null,f);break;case \"together\":wj(b,!1,null,null,void 0);break;default:b.memoizedState=null}return b.child}\nfunction ij(a,b){0===(b.mode&1)&&null!==a&&(a.alternate=null,b.alternate=null,b.flags|=2)}function Zi(a,b,c){null!==a&&(b.dependencies=a.dependencies);rh|=b.lanes;if(0===(c&b.childLanes))return null;if(null!==a&&b.child!==a.child)throw Error(p(153));if(null!==b.child){a=b.child;c=Pg(a,a.pendingProps);b.child=c;for(c.return=b;null!==a.sibling;)a=a.sibling,c=c.sibling=Pg(a,a.pendingProps),c.return=b;c.sibling=null}return b.child}\nfunction yj(a,b,c){switch(b.tag){case 3:kj(b);Ig();break;case 5:Ah(b);break;case 1:Zf(b.type)&&cg(b);break;case 4:yh(b,b.stateNode.containerInfo);break;case 10:var d=b.type._context,e=b.memoizedProps.value;G(Wg,d._currentValue);d._currentValue=e;break;case 13:d=b.memoizedState;if(null!==d){if(null!==d.dehydrated)return G(L,L.current&1),b.flags|=128,null;if(0!==(c&b.child.childLanes))return oj(a,b,c);G(L,L.current&1);a=Zi(a,b,c);return null!==a?a.sibling:null}G(L,L.current&1);break;case 19:d=0!==(c&\nb.childLanes);if(0!==(a.flags&128)){if(d)return xj(a,b,c);b.flags|=128}e=b.memoizedState;null!==e&&(e.rendering=null,e.tail=null,e.lastEffect=null);G(L,L.current);if(d)break;else return null;case 22:case 23:return b.lanes=0,dj(a,b,c)}return Zi(a,b,c)}var zj,Aj,Bj,Cj;\nzj=function(a,b){for(var c=b.child;null!==c;){if(5===c.tag||6===c.tag)a.appendChild(c.stateNode);else if(4!==c.tag&&null!==c.child){c.child.return=c;c=c.child;continue}if(c===b)break;for(;null===c.sibling;){if(null===c.return||c.return===b)return;c=c.return}c.sibling.return=c.return;c=c.sibling}};Aj=function(){};\nBj=function(a,b,c,d){var e=a.memoizedProps;if(e!==d){a=b.stateNode;xh(uh.current);var f=null;switch(c){case \"input\":e=Ya(a,e);d=Ya(a,d);f=[];break;case \"select\":e=A({},e,{value:void 0});d=A({},d,{value:void 0});f=[];break;case \"textarea\":e=gb(a,e);d=gb(a,d);f=[];break;default:\"function\"!==typeof e.onClick&&\"function\"===typeof d.onClick&&(a.onclick=Bf)}ub(c,d);var g;c=null;for(l in e)if(!d.hasOwnProperty(l)&&e.hasOwnProperty(l)&&null!=e[l])if(\"style\"===l){var h=e[l];for(g in h)h.hasOwnProperty(g)&&\n(c||(c={}),c[g]=\"\")}else\"dangerouslySetInnerHTML\"!==l&&\"children\"!==l&&\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&\"autoFocus\"!==l&&(ea.hasOwnProperty(l)?f||(f=[]):(f=f||[]).push(l,null));for(l in d){var k=d[l];h=null!=e?e[l]:void 0;if(d.hasOwnProperty(l)&&k!==h&&(null!=k||null!=h))if(\"style\"===l)if(h){for(g in h)!h.hasOwnProperty(g)||k&&k.hasOwnProperty(g)||(c||(c={}),c[g]=\"\");for(g in k)k.hasOwnProperty(g)&&h[g]!==k[g]&&(c||(c={}),c[g]=k[g])}else c||(f||(f=[]),f.push(l,\nc)),c=k;else\"dangerouslySetInnerHTML\"===l?(k=k?k.__html:void 0,h=h?h.__html:void 0,null!=k&&h!==k&&(f=f||[]).push(l,k)):\"children\"===l?\"string\"!==typeof k&&\"number\"!==typeof k||(f=f||[]).push(l,\"\"+k):\"suppressContentEditableWarning\"!==l&&\"suppressHydrationWarning\"!==l&&(ea.hasOwnProperty(l)?(null!=k&&\"onScroll\"===l&&D(\"scroll\",a),f||h===k||(f=[])):(f=f||[]).push(l,k))}c&&(f=f||[]).push(\"style\",c);var l=f;if(b.updateQueue=l)b.flags|=4}};Cj=function(a,b,c,d){c!==d&&(b.flags|=4)};\nfunction Dj(a,b){if(!I)switch(a.tailMode){case \"hidden\":b=a.tail;for(var c=null;null!==b;)null!==b.alternate&&(c=b),b=b.sibling;null===c?a.tail=null:c.sibling=null;break;case \"collapsed\":c=a.tail;for(var d=null;null!==c;)null!==c.alternate&&(d=c),c=c.sibling;null===d?b||null===a.tail?a.tail=null:a.tail.sibling=null:d.sibling=null}}\nfunction S(a){var b=null!==a.alternate&&a.alternate.child===a.child,c=0,d=0;if(b)for(var e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags&14680064,d|=e.flags&14680064,e.return=a,e=e.sibling;else for(e=a.child;null!==e;)c|=e.lanes|e.childLanes,d|=e.subtreeFlags,d|=e.flags,e.return=a,e=e.sibling;a.subtreeFlags|=d;a.childLanes=c;return b}\nfunction Ej(a,b,c){var d=b.pendingProps;wg(b);switch(b.tag){case 2:case 16:case 15:case 0:case 11:case 7:case 8:case 12:case 9:case 14:return S(b),null;case 1:return Zf(b.type)&&$f(),S(b),null;case 3:d=b.stateNode;zh();E(Wf);E(H);Eh();d.pendingContext&&(d.context=d.pendingContext,d.pendingContext=null);if(null===a||null===a.child)Gg(b)?b.flags|=4:null===a||a.memoizedState.isDehydrated&&0===(b.flags&256)||(b.flags|=1024,null!==zg&&(Fj(zg),zg=null));Aj(a,b);S(b);return null;case 5:Bh(b);var e=xh(wh.current);\nc=b.type;if(null!==a&&null!=b.stateNode)Bj(a,b,c,d,e),a.ref!==b.ref&&(b.flags|=512,b.flags|=2097152);else{if(!d){if(null===b.stateNode)throw Error(p(166));S(b);return null}a=xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.type;var f=b.memoizedProps;d[Of]=b;d[Pf]=f;a=0!==(b.mode&1);switch(c){case \"dialog\":D(\"cancel\",d);D(\"close\",d);break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",d);break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],d);break;case \"source\":D(\"error\",d);break;case \"img\":case \"image\":case \"link\":D(\"error\",\nd);D(\"load\",d);break;case \"details\":D(\"toggle\",d);break;case \"input\":Za(d,f);D(\"invalid\",d);break;case \"select\":d._wrapperState={wasMultiple:!!f.multiple};D(\"invalid\",d);break;case \"textarea\":hb(d,f),D(\"invalid\",d)}ub(c,f);e=null;for(var g in f)if(f.hasOwnProperty(g)){var h=f[g];\"children\"===g?\"string\"===typeof h?d.textContent!==h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,h,a),e=[\"children\",h]):\"number\"===typeof h&&d.textContent!==\"\"+h&&(!0!==f.suppressHydrationWarning&&Af(d.textContent,\nh,a),e=[\"children\",\"\"+h]):ea.hasOwnProperty(g)&&null!=h&&\"onScroll\"===g&&D(\"scroll\",d)}switch(c){case \"input\":Va(d);db(d,f,!0);break;case \"textarea\":Va(d);jb(d);break;case \"select\":case \"option\":break;default:\"function\"===typeof f.onClick&&(d.onclick=Bf)}d=e;b.updateQueue=d;null!==d&&(b.flags|=4)}else{g=9===e.nodeType?e:e.ownerDocument;\"http://www.w3.org/1999/xhtml\"===a&&(a=kb(c));\"http://www.w3.org/1999/xhtml\"===a?\"script\"===c?(a=g.createElement(\"div\"),a.innerHTML=\"<script>\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;zj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;e<lf.length;e++)D(lf[e],a);e=d;break;case \"source\":D(\"error\",a);e=d;break;case \"img\":case \"image\":case \"link\":D(\"error\",\na);D(\"load\",a);e=d;break;case \"details\":D(\"toggle\",a);e=d;break;case \"input\":Za(a,d);e=Ya(a,d);D(\"invalid\",a);break;case \"option\":e=d;break;case \"select\":a._wrapperState={wasMultiple:!!d.multiple};e=A({},d,{value:void 0});D(\"invalid\",a);break;case \"textarea\":hb(a,d);e=gb(a,d);D(\"invalid\",a);break;default:e=d}ub(c,e);h=e;for(f in h)if(h.hasOwnProperty(f)){var k=h[f];\"style\"===f?sb(a,k):\"dangerouslySetInnerHTML\"===f?(k=k?k.__html:void 0,null!=k&&nb(a,k)):\"children\"===f?\"string\"===typeof k?(\"textarea\"!==\nc||\"\"!==k)&&ob(a,k):\"number\"===typeof k&&ob(a,\"\"+k):\"suppressContentEditableWarning\"!==f&&\"suppressHydrationWarning\"!==f&&\"autoFocus\"!==f&&(ea.hasOwnProperty(f)?null!=k&&\"onScroll\"===f&&D(\"scroll\",a):null!=k&&ta(a,f,k,g))}switch(c){case \"input\":Va(a);db(a,d,!1);break;case \"textarea\":Va(a);jb(a);break;case \"option\":null!=d.value&&a.setAttribute(\"value\",\"\"+Sa(d.value));break;case \"select\":a.multiple=!!d.multiple;f=d.value;null!=f?fb(a,!!d.multiple,f,!1):null!=d.defaultValue&&fb(a,!!d.multiple,d.defaultValue,\n!0);break;default:\"function\"===typeof e.onClick&&(a.onclick=Bf)}switch(c){case \"button\":case \"input\":case \"select\":case \"textarea\":d=!!d.autoFocus;break a;case \"img\":d=!0;break a;default:d=!1}}d&&(b.flags|=4)}null!==b.ref&&(b.flags|=512,b.flags|=2097152)}S(b);return null;case 6:if(a&&null!=b.stateNode)Cj(a,b,a.memoizedProps,d);else{if(\"string\"!==typeof d&&null===b.stateNode)throw Error(p(166));c=xh(wh.current);xh(uh.current);if(Gg(b)){d=b.stateNode;c=b.memoizedProps;d[Of]=b;if(f=d.nodeValue!==c)if(a=\nxg,null!==a)switch(a.tag){case 3:Af(d.nodeValue,c,0!==(a.mode&1));break;case 5:!0!==a.memoizedProps.suppressHydrationWarning&&Af(d.nodeValue,c,0!==(a.mode&1))}f&&(b.flags|=4)}else d=(9===c.nodeType?c:c.ownerDocument).createTextNode(d),d[Of]=b,b.stateNode=d}S(b);return null;case 13:E(L);d=b.memoizedState;if(null===a||null!==a.memoizedState&&null!==a.memoizedState.dehydrated){if(I&&null!==yg&&0!==(b.mode&1)&&0===(b.flags&128))Hg(),Ig(),b.flags|=98560,f=!1;else if(f=Gg(b),null!==d&&null!==d.dehydrated){if(null===\na){if(!f)throw Error(p(318));f=b.memoizedState;f=null!==f?f.dehydrated:null;if(!f)throw Error(p(317));f[Of]=b}else Ig(),0===(b.flags&128)&&(b.memoizedState=null),b.flags|=4;S(b);f=!1}else null!==zg&&(Fj(zg),zg=null),f=!0;if(!f)return b.flags&65536?b:null}if(0!==(b.flags&128))return b.lanes=c,b;d=null!==d;d!==(null!==a&&null!==a.memoizedState)&&d&&(b.child.flags|=8192,0!==(b.mode&1)&&(null===a||0!==(L.current&1)?0===T&&(T=3):tj()));null!==b.updateQueue&&(b.flags|=4);S(b);return null;case 4:return zh(),\nAj(a,b),null===a&&sf(b.stateNode.containerInfo),S(b),null;case 10:return ah(b.type._context),S(b),null;case 17:return Zf(b.type)&&$f(),S(b),null;case 19:E(L);f=b.memoizedState;if(null===f)return S(b),null;d=0!==(b.flags&128);g=f.rendering;if(null===g)if(d)Dj(f,!1);else{if(0!==T||null!==a&&0!==(a.flags&128))for(a=b.child;null!==a;){g=Ch(a);if(null!==g){b.flags|=128;Dj(f,!1);d=g.updateQueue;null!==d&&(b.updateQueue=d,b.flags|=4);b.subtreeFlags=0;d=c;for(c=b.child;null!==c;)f=c,a=d,f.flags&=14680066,\ng=f.alternate,null===g?(f.childLanes=0,f.lanes=a,f.child=null,f.subtreeFlags=0,f.memoizedProps=null,f.memoizedState=null,f.updateQueue=null,f.dependencies=null,f.stateNode=null):(f.childLanes=g.childLanes,f.lanes=g.lanes,f.child=g.child,f.subtreeFlags=0,f.deletions=null,f.memoizedProps=g.memoizedProps,f.memoizedState=g.memoizedState,f.updateQueue=g.updateQueue,f.type=g.type,a=g.dependencies,f.dependencies=null===a?null:{lanes:a.lanes,firstContext:a.firstContext}),c=c.sibling;G(L,L.current&1|2);return b.child}a=\na.sibling}null!==f.tail&&B()>Gj&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304)}else{if(!d)if(a=Ch(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Dj(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Gj&&1073741824!==c&&(b.flags|=128,d=!0,Dj(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=L.current,G(L,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Hj(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(fj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Ij(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return zh(),E(Wf),E(H),Eh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Bh(b),null;case 13:E(L);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(L),null;case 4:return zh(),null;case 10:return ah(b.type._context),null;case 22:case 23:return Hj(),\nnull;case 24:return null;default:return null}}var Jj=!1,U=!1,Kj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Lj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Mj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Nj=!1;\nfunction Oj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Ci(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Nj;Nj=!1;return n}\nfunction Pj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Mj(b,c,f)}e=e.next}while(e!==d)}}function Qj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Rj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Sj(a){var b=a.alternate;null!==b&&(a.alternate=null,Sj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Tj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Uj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Tj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Vj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Vj(a,b,c),a=a.sibling;null!==a;)Vj(a,b,c),a=a.sibling}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}var X=null,Xj=!1;function Yj(a,b,c){for(c=c.child;null!==c;)Zj(a,b,c),c=c.sibling}\nfunction Zj(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Lj(c,b);case 6:var d=X,e=Xj;X=null;Yj(a,b,c);X=d;Xj=e;null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Xj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Xj;X=c.stateNode.containerInfo;Xj=!0;\nYj(a,b,c);X=d;Xj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Mj(c,b,g):0!==(f&4)&&Mj(c,b,g));e=e.next}while(e!==d)}Yj(a,b,c);break;case 1:if(!U&&(Lj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Yj(a,b,c);break;case 21:Yj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Yj(a,b,c),U=d):Yj(a,b,c);break;default:Yj(a,b,c)}}function ak(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Kj);b.forEach(function(b){var d=bk.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction ck(a,b){var c=b.deletions;if(null!==c)for(var d=0;d<c.length;d++){var e=c[d];try{var f=a,g=b,h=g;a:for(;null!==h;){switch(h.tag){case 5:X=h.stateNode;Xj=!1;break a;case 3:X=h.stateNode.containerInfo;Xj=!0;break a;case 4:X=h.stateNode.containerInfo;Xj=!0;break a}h=h.return}if(null===X)throw Error(p(160));Zj(f,g,e);X=null;Xj=!1;var k=e.alternate;null!==k&&(k.return=null);e.return=null}catch(l){W(e,b,l)}}if(b.subtreeFlags&12854)for(b=b.child;null!==b;)dk(b,a),b=b.sibling}\nfunction dk(a,b){var c=a.alternate,d=a.flags;switch(a.tag){case 0:case 11:case 14:case 15:ck(b,a);ek(a);if(d&4){try{Pj(3,a,a.return),Qj(3,a)}catch(t){W(a,a.return,t)}try{Pj(5,a,a.return)}catch(t){W(a,a.return,t)}}break;case 1:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);break;case 5:ck(b,a);ek(a);d&512&&null!==c&&Lj(c,c.return);if(a.flags&32){var e=a.stateNode;try{ob(e,\"\")}catch(t){W(a,a.return,t)}}if(d&4&&(e=a.stateNode,null!=e)){var f=a.memoizedProps,g=null!==c?c.memoizedProps:f,h=a.type,k=a.updateQueue;\na.updateQueue=null;if(null!==k)try{\"input\"===h&&\"radio\"===f.type&&null!=f.name&&ab(e,f);vb(h,g);var l=vb(h,f);for(g=0;g<k.length;g+=2){var m=k[g],q=k[g+1];\"style\"===m?sb(e,q):\"dangerouslySetInnerHTML\"===m?nb(e,q):\"children\"===m?ob(e,q):ta(e,m,q,l)}switch(h){case \"input\":bb(e,f);break;case \"textarea\":ib(e,f);break;case \"select\":var r=e._wrapperState.wasMultiple;e._wrapperState.wasMultiple=!!f.multiple;var y=f.value;null!=y?fb(e,!!f.multiple,y,!1):r!==!!f.multiple&&(null!=f.defaultValue?fb(e,!!f.multiple,\nf.defaultValue,!0):fb(e,!!f.multiple,f.multiple?[]:\"\",!1))}e[Pf]=f}catch(t){W(a,a.return,t)}}break;case 6:ck(b,a);ek(a);if(d&4){if(null===a.stateNode)throw Error(p(162));e=a.stateNode;f=a.memoizedProps;try{e.nodeValue=f}catch(t){W(a,a.return,t)}}break;case 3:ck(b,a);ek(a);if(d&4&&null!==c&&c.memoizedState.isDehydrated)try{bd(b.containerInfo)}catch(t){W(a,a.return,t)}break;case 4:ck(b,a);ek(a);break;case 13:ck(b,a);ek(a);e=a.child;e.flags&8192&&(f=null!==e.memoizedState,e.stateNode.isHidden=f,!f||\nnull!==e.alternate&&null!==e.alternate.memoizedState||(fk=B()));d&4&&ak(a);break;case 22:m=null!==c&&null!==c.memoizedState;a.mode&1?(U=(l=U)||m,ck(b,a),U=l):ck(b,a);ek(a);if(d&8192){l=null!==a.memoizedState;if((a.stateNode.isHidden=l)&&!m&&0!==(a.mode&1))for(V=a,m=a.child;null!==m;){for(q=V=m;null!==V;){r=V;y=r.child;switch(r.tag){case 0:case 11:case 14:case 15:Pj(4,r,r.return);break;case 1:Lj(r,r.return);var n=r.stateNode;if(\"function\"===typeof n.componentWillUnmount){d=r;c=r.return;try{b=d,n.props=\nb.memoizedProps,n.state=b.memoizedState,n.componentWillUnmount()}catch(t){W(d,c,t)}}break;case 5:Lj(r,r.return);break;case 22:if(null!==r.memoizedState){gk(q);continue}}null!==y?(y.return=r,V=y):gk(q)}m=m.sibling}a:for(m=null,q=a;;){if(5===q.tag){if(null===m){m=q;try{e=q.stateNode,l?(f=e.style,\"function\"===typeof f.setProperty?f.setProperty(\"display\",\"none\",\"important\"):f.display=\"none\"):(h=q.stateNode,k=q.memoizedProps.style,g=void 0!==k&&null!==k&&k.hasOwnProperty(\"display\")?k.display:null,h.style.display=\nrb(\"display\",g))}catch(t){W(a,a.return,t)}}}else if(6===q.tag){if(null===m)try{q.stateNode.nodeValue=l?\"\":q.memoizedProps}catch(t){W(a,a.return,t)}}else if((22!==q.tag&&23!==q.tag||null===q.memoizedState||q===a)&&null!==q.child){q.child.return=q;q=q.child;continue}if(q===a)break a;for(;null===q.sibling;){if(null===q.return||q.return===a)break a;m===q&&(m=null);q=q.return}m===q&&(m=null);q.sibling.return=q.return;q=q.sibling}}break;case 19:ck(b,a);ek(a);d&4&&ak(a);break;case 21:break;default:ck(b,\na),ek(a)}}function ek(a){var b=a.flags;if(b&2){try{a:{for(var c=a.return;null!==c;){if(Tj(c)){var d=c;break a}c=c.return}throw Error(p(160));}switch(d.tag){case 5:var e=d.stateNode;d.flags&32&&(ob(e,\"\"),d.flags&=-33);var f=Uj(a);Wj(a,f,e);break;case 3:case 4:var g=d.stateNode.containerInfo,h=Uj(a);Vj(a,h,g);break;default:throw Error(p(161));}}catch(k){W(a,a.return,k)}a.flags&=-3}b&4096&&(a.flags&=-4097)}function hk(a,b,c){V=a;ik(a,b,c)}\nfunction ik(a,b,c){for(var d=0!==(a.mode&1);null!==V;){var e=V,f=e.child;if(22===e.tag&&d){var g=null!==e.memoizedState||Jj;if(!g){var h=e.alternate,k=null!==h&&null!==h.memoizedState||U;h=Jj;var l=U;Jj=g;if((U=k)&&!l)for(V=e;null!==V;)g=V,k=g.child,22===g.tag&&null!==g.memoizedState?jk(e):null!==k?(k.return=g,V=k):jk(e);for(;null!==f;)V=f,ik(f,b,c),f=f.sibling;V=e;Jj=h;U=l}kk(a,b,c)}else 0!==(e.subtreeFlags&8772)&&null!==f?(f.return=e,V=f):kk(a,b,c)}}\nfunction kk(a){for(;null!==V;){var b=V;if(0!==(b.flags&8772)){var c=b.alternate;try{if(0!==(b.flags&8772))switch(b.tag){case 0:case 11:case 15:U||Qj(5,b);break;case 1:var d=b.stateNode;if(b.flags&4&&!U)if(null===c)d.componentDidMount();else{var e=b.elementType===b.type?c.memoizedProps:Ci(b.type,c.memoizedProps);d.componentDidUpdate(e,c.memoizedState,d.__reactInternalSnapshotBeforeUpdate)}var f=b.updateQueue;null!==f&&sh(b,f,d);break;case 3:var g=b.updateQueue;if(null!==g){c=null;if(null!==b.child)switch(b.child.tag){case 5:c=\nb.child.stateNode;break;case 1:c=b.child.stateNode}sh(b,g,c)}break;case 5:var h=b.stateNode;if(null===c&&b.flags&4){c=h;var k=b.memoizedProps;switch(b.type){case \"button\":case \"input\":case \"select\":case \"textarea\":k.autoFocus&&c.focus();break;case \"img\":k.src&&(c.src=k.src)}}break;case 6:break;case 4:break;case 12:break;case 13:if(null===b.memoizedState){var l=b.alternate;if(null!==l){var m=l.memoizedState;if(null!==m){var q=m.dehydrated;null!==q&&bd(q)}}}break;case 19:case 17:case 21:case 22:case 23:case 25:break;\ndefault:throw Error(p(163));}U||b.flags&512&&Rj(b)}catch(r){W(b,b.return,r)}}if(b===a){V=null;break}c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}function gk(a){for(;null!==V;){var b=V;if(b===a){V=null;break}var c=b.sibling;if(null!==c){c.return=b.return;V=c;break}V=b.return}}\nfunction jk(a){for(;null!==V;){var b=V;try{switch(b.tag){case 0:case 11:case 15:var c=b.return;try{Qj(4,b)}catch(k){W(b,c,k)}break;case 1:var d=b.stateNode;if(\"function\"===typeof d.componentDidMount){var e=b.return;try{d.componentDidMount()}catch(k){W(b,e,k)}}var f=b.return;try{Rj(b)}catch(k){W(b,f,k)}break;case 5:var g=b.return;try{Rj(b)}catch(k){W(b,g,k)}}}catch(k){W(b,b.return,k)}if(b===a){V=null;break}var h=b.sibling;if(null!==h){h.return=b.return;V=h;break}V=b.return}}\nvar lk=Math.ceil,mk=ua.ReactCurrentDispatcher,nk=ua.ReactCurrentOwner,ok=ua.ReactCurrentBatchConfig,K=0,Q=null,Y=null,Z=0,fj=0,ej=Uf(0),T=0,pk=null,rh=0,qk=0,rk=0,sk=null,tk=null,fk=0,Gj=Infinity,uk=null,Oi=!1,Pi=null,Ri=null,vk=!1,wk=null,xk=0,yk=0,zk=null,Ak=-1,Bk=0;function R(){return 0!==(K&6)?B():-1!==Ak?Ak:Ak=B()}\nfunction yi(a){if(0===(a.mode&1))return 1;if(0!==(K&2)&&0!==Z)return Z&-Z;if(null!==Kg.transition)return 0===Bk&&(Bk=yc()),Bk;a=C;if(0!==a)return a;a=window.event;a=void 0===a?16:jd(a.type);return a}function gi(a,b,c,d){if(50<yk)throw yk=0,zk=null,Error(p(185));Ac(a,c,d);if(0===(K&2)||a!==Q)a===Q&&(0===(K&2)&&(qk|=c),4===T&&Ck(a,Z)),Dk(a,d),1===c&&0===K&&0===(b.mode&1)&&(Gj=B()+500,fg&&jg())}\nfunction Dk(a,b){var c=a.callbackNode;wc(a,b);var d=uc(a,a===Q?Z:0);if(0===d)null!==c&&bc(c),a.callbackNode=null,a.callbackPriority=0;else if(b=d&-d,a.callbackPriority!==b){null!=c&&bc(c);if(1===b)0===a.tag?ig(Ek.bind(null,a)):hg(Ek.bind(null,a)),Jf(function(){0===(K&6)&&jg()}),c=null;else{switch(Dc(d)){case 1:c=fc;break;case 4:c=gc;break;case 16:c=hc;break;case 536870912:c=jc;break;default:c=hc}c=Fk(c,Gk.bind(null,a))}a.callbackPriority=b;a.callbackNode=c}}\nfunction Gk(a,b){Ak=-1;Bk=0;if(0!==(K&6))throw Error(p(327));var c=a.callbackNode;if(Hk()&&a.callbackNode!==c)return null;var d=uc(a,a===Q?Z:0);if(0===d)return null;if(0!==(d&30)||0!==(d&a.expiredLanes)||b)b=Ik(a,d);else{b=d;var e=K;K|=2;var f=Jk();if(Q!==a||Z!==b)uk=null,Gj=B()+500,Kk(a,b);do try{Lk();break}catch(h){Mk(a,h)}while(1);$g();mk.current=f;K=e;null!==Y?b=0:(Q=null,Z=0,b=T)}if(0!==b){2===b&&(e=xc(a),0!==e&&(d=e,b=Nk(a,e)));if(1===b)throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;if(6===b)Ck(a,d);\nelse{e=a.current.alternate;if(0===(d&30)&&!Ok(e)&&(b=Ik(a,d),2===b&&(f=xc(a),0!==f&&(d=f,b=Nk(a,f))),1===b))throw c=pk,Kk(a,0),Ck(a,d),Dk(a,B()),c;a.finishedWork=e;a.finishedLanes=d;switch(b){case 0:case 1:throw Error(p(345));case 2:Pk(a,tk,uk);break;case 3:Ck(a,d);if((d&130023424)===d&&(b=fk+500-B(),10<b)){if(0!==uc(a,0))break;e=a.suspendedLanes;if((e&d)!==d){R();a.pingedLanes|=a.suspendedLanes&e;break}a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),b);break}Pk(a,tk,uk);break;case 4:Ck(a,d);if((d&4194240)===\nd)break;b=a.eventTimes;for(e=-1;0<d;){var g=31-oc(d);f=1<<g;g=b[g];g>e&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*lk(d/1960))-d;if(10<d){a.timeoutHandle=Ff(Pk.bind(null,a,tk,uk),d);break}Pk(a,tk,uk);break;case 5:Pk(a,tk,uk);break;default:throw Error(p(329));}}}Dk(a,B());return a.callbackNode===c?Gk.bind(null,a):null}\nfunction Nk(a,b){var c=sk;a.current.memoizedState.isDehydrated&&(Kk(a,b).flags|=256);a=Ik(a,b);2!==a&&(b=tk,tk=c,null!==b&&Fj(b));return a}function Fj(a){null===tk?tk=a:tk.push.apply(tk,a)}\nfunction Ok(a){for(var b=a;;){if(b.flags&16384){var c=b.updateQueue;if(null!==c&&(c=c.stores,null!==c))for(var d=0;d<c.length;d++){var e=c[d],f=e.getSnapshot;e=e.value;try{if(!He(f(),e))return!1}catch(g){return!1}}}c=b.child;if(b.subtreeFlags&16384&&null!==c)c.return=b,b=c;else{if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return!0;b=b.return}b.sibling.return=b.return;b=b.sibling}}return!0}\nfunction Ck(a,b){b&=~rk;b&=~qk;a.suspendedLanes|=b;a.pingedLanes&=~b;for(a=a.expirationTimes;0<b;){var c=31-oc(b),d=1<<c;a[c]=-1;b&=~d}}function Ek(a){if(0!==(K&6))throw Error(p(327));Hk();var b=uc(a,0);if(0===(b&1))return Dk(a,B()),null;var c=Ik(a,b);if(0!==a.tag&&2===c){var d=xc(a);0!==d&&(b=d,c=Nk(a,d))}if(1===c)throw c=pk,Kk(a,0),Ck(a,b),Dk(a,B()),c;if(6===c)throw Error(p(345));a.finishedWork=a.current.alternate;a.finishedLanes=b;Pk(a,tk,uk);Dk(a,B());return null}\nfunction Qk(a,b){var c=K;K|=1;try{return a(b)}finally{K=c,0===K&&(Gj=B()+500,fg&&jg())}}function Rk(a){null!==wk&&0===wk.tag&&0===(K&6)&&Hk();var b=K;K|=1;var c=ok.transition,d=C;try{if(ok.transition=null,C=1,a)return a()}finally{C=d,ok.transition=c,K=b,0===(K&6)&&jg()}}function Hj(){fj=ej.current;E(ej)}\nfunction Kk(a,b){a.finishedWork=null;a.finishedLanes=0;var c=a.timeoutHandle;-1!==c&&(a.timeoutHandle=-1,Gf(c));if(null!==Y)for(c=Y.return;null!==c;){var d=c;wg(d);switch(d.tag){case 1:d=d.type.childContextTypes;null!==d&&void 0!==d&&$f();break;case 3:zh();E(Wf);E(H);Eh();break;case 5:Bh(d);break;case 4:zh();break;case 13:E(L);break;case 19:E(L);break;case 10:ah(d.type._context);break;case 22:case 23:Hj()}c=c.return}Q=a;Y=a=Pg(a.current,null);Z=fj=b;T=0;pk=null;rk=qk=rh=0;tk=sk=null;if(null!==fh){for(b=\n0;b<fh.length;b++)if(c=fh[b],d=c.interleaved,null!==d){c.interleaved=null;var e=d.next,f=c.pending;if(null!==f){var g=f.next;f.next=e;d.next=g}c.pending=d}fh=null}return a}\nfunction Mk(a,b){do{var c=Y;try{$g();Fh.current=Rh;if(Ih){for(var d=M.memoizedState;null!==d;){var e=d.queue;null!==e&&(e.pending=null);d=d.next}Ih=!1}Hh=0;O=N=M=null;Jh=!1;Kh=0;nk.current=null;if(null===c||null===c.return){T=1;pk=b;Y=null;break}a:{var f=a,g=c.return,h=c,k=b;b=Z;h.flags|=32768;if(null!==k&&\"object\"===typeof k&&\"function\"===typeof k.then){var l=k,m=h,q=m.tag;if(0===(m.mode&1)&&(0===q||11===q||15===q)){var r=m.alternate;r?(m.updateQueue=r.updateQueue,m.memoizedState=r.memoizedState,\nm.lanes=r.lanes):(m.updateQueue=null,m.memoizedState=null)}var y=Ui(g);if(null!==y){y.flags&=-257;Vi(y,g,h,f,b);y.mode&1&&Si(f,l,b);b=y;k=l;var n=b.updateQueue;if(null===n){var t=new Set;t.add(k);b.updateQueue=t}else n.add(k);break a}else{if(0===(b&1)){Si(f,l,b);tj();break a}k=Error(p(426))}}else if(I&&h.mode&1){var J=Ui(g);if(null!==J){0===(J.flags&65536)&&(J.flags|=256);Vi(J,g,h,f,b);Jg(Ji(k,h));break a}}f=k=Ji(k,h);4!==T&&(T=2);null===sk?sk=[f]:sk.push(f);f=g;do{switch(f.tag){case 3:f.flags|=65536;\nb&=-b;f.lanes|=b;var x=Ni(f,k,b);ph(f,x);break a;case 1:h=k;var w=f.type,u=f.stateNode;if(0===(f.flags&128)&&(\"function\"===typeof w.getDerivedStateFromError||null!==u&&\"function\"===typeof u.componentDidCatch&&(null===Ri||!Ri.has(u)))){f.flags|=65536;b&=-b;f.lanes|=b;var F=Qi(f,h,b);ph(f,F);break a}}f=f.return}while(null!==f)}Sk(c)}catch(na){b=na;Y===c&&null!==c&&(Y=c=c.return);continue}break}while(1)}function Jk(){var a=mk.current;mk.current=Rh;return null===a?Rh:a}\nfunction tj(){if(0===T||3===T||2===T)T=4;null===Q||0===(rh&268435455)&&0===(qk&268435455)||Ck(Q,Z)}function Ik(a,b){var c=K;K|=2;var d=Jk();if(Q!==a||Z!==b)uk=null,Kk(a,b);do try{Tk();break}catch(e){Mk(a,e)}while(1);$g();K=c;mk.current=d;if(null!==Y)throw Error(p(261));Q=null;Z=0;return T}function Tk(){for(;null!==Y;)Uk(Y)}function Lk(){for(;null!==Y&&!cc();)Uk(Y)}function Uk(a){var b=Vk(a.alternate,a,fj);a.memoizedProps=a.pendingProps;null===b?Sk(a):Y=b;nk.current=null}\nfunction Sk(a){var b=a;do{var c=b.alternate;a=b.return;if(0===(b.flags&32768)){if(c=Ej(c,b,fj),null!==c){Y=c;return}}else{c=Ij(c,b);if(null!==c){c.flags&=32767;Y=c;return}if(null!==a)a.flags|=32768,a.subtreeFlags=0,a.deletions=null;else{T=6;Y=null;return}}b=b.sibling;if(null!==b){Y=b;return}Y=b=a}while(null!==b);0===T&&(T=5)}function Pk(a,b,c){var d=C,e=ok.transition;try{ok.transition=null,C=1,Wk(a,b,c,d)}finally{ok.transition=e,C=d}return null}\nfunction Wk(a,b,c,d){do Hk();while(null!==wk);if(0!==(K&6))throw Error(p(327));c=a.finishedWork;var e=a.finishedLanes;if(null===c)return null;a.finishedWork=null;a.finishedLanes=0;if(c===a.current)throw Error(p(177));a.callbackNode=null;a.callbackPriority=0;var f=c.lanes|c.childLanes;Bc(a,f);a===Q&&(Y=Q=null,Z=0);0===(c.subtreeFlags&2064)&&0===(c.flags&2064)||vk||(vk=!0,Fk(hc,function(){Hk();return null}));f=0!==(c.flags&15990);if(0!==(c.subtreeFlags&15990)||f){f=ok.transition;ok.transition=null;\nvar g=C;C=1;var h=K;K|=4;nk.current=null;Oj(a,c);dk(c,a);Oe(Df);dd=!!Cf;Df=Cf=null;a.current=c;hk(c,a,e);dc();K=h;C=g;ok.transition=f}else a.current=c;vk&&(vk=!1,wk=a,xk=e);f=a.pendingLanes;0===f&&(Ri=null);mc(c.stateNode,d);Dk(a,B());if(null!==b)for(d=a.onRecoverableError,c=0;c<b.length;c++)e=b[c],d(e.value,{componentStack:e.stack,digest:e.digest});if(Oi)throw Oi=!1,a=Pi,Pi=null,a;0!==(xk&1)&&0!==a.tag&&Hk();f=a.pendingLanes;0!==(f&1)?a===zk?yk++:(yk=0,zk=a):yk=0;jg();return null}\nfunction Hk(){if(null!==wk){var a=Dc(xk),b=ok.transition,c=C;try{ok.transition=null;C=16>a?16:a;if(null===wk)var d=!1;else{a=wk;wk=null;xk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;k<h.length;k++){var l=h[k];for(V=l;null!==V;){var m=V;switch(m.tag){case 0:case 11:case 15:Pj(8,m,f)}var q=m.child;if(null!==q)q.return=m,V=q;else for(;null!==V;){m=V;var r=m.sibling,y=m.return;Sj(m);if(m===\nl){V=null;break}if(null!==r){r.return=y;V=r;break}V=y}}}var n=f.alternate;if(null!==n){var t=n.child;if(null!==t){n.child=null;do{var J=t.sibling;t.sibling=null;t=J}while(null!==t)}}V=f}}if(0!==(f.subtreeFlags&2064)&&null!==g)g.return=f,V=g;else b:for(;null!==V;){f=V;if(0!==(f.flags&2048))switch(f.tag){case 0:case 11:case 15:Pj(9,f,f.return)}var x=f.sibling;if(null!==x){x.return=f.return;V=x;break b}V=f.return}}var w=a.current;for(V=w;null!==V;){g=V;var u=g.child;if(0!==(g.subtreeFlags&2064)&&null!==\nu)u.return=g,V=u;else b:for(g=w;null!==V;){h=V;if(0!==(h.flags&2048))try{switch(h.tag){case 0:case 11:case 15:Qj(9,h)}}catch(na){W(h,h.return,na)}if(h===g){V=null;break b}var F=h.sibling;if(null!==F){F.return=h.return;V=F;break b}V=h.return}}K=e;jg();if(lc&&\"function\"===typeof lc.onPostCommitFiberRoot)try{lc.onPostCommitFiberRoot(kc,a)}catch(na){}d=!0}return d}finally{C=c,ok.transition=b}}return!1}function Xk(a,b,c){b=Ji(c,b);b=Ni(a,b,1);a=nh(a,b,1);b=R();null!==a&&(Ac(a,1,b),Dk(a,b))}\nfunction W(a,b,c){if(3===a.tag)Xk(a,a,c);else for(;null!==b;){if(3===b.tag){Xk(b,a,c);break}else if(1===b.tag){var d=b.stateNode;if(\"function\"===typeof b.type.getDerivedStateFromError||\"function\"===typeof d.componentDidCatch&&(null===Ri||!Ri.has(d))){a=Ji(c,a);a=Qi(b,a,1);b=nh(b,a,1);a=R();null!==b&&(Ac(b,1,a),Dk(b,a));break}}b=b.return}}\nfunction Ti(a,b,c){var d=a.pingCache;null!==d&&d.delete(b);b=R();a.pingedLanes|=a.suspendedLanes&c;Q===a&&(Z&c)===c&&(4===T||3===T&&(Z&130023424)===Z&&500>B()-fk?Kk(a,0):rk|=c);Dk(a,b)}function Yk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=R();a=ih(a,b);null!==a&&(Ac(a,b,c),Dk(a,c))}function uj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Yk(a,c)}\nfunction bk(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Yk(a,c)}var Vk;\nVk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)dh=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return dh=!1,yj(a,b,c);dh=0!==(a.flags&131072)?!0:!1}else dh=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;ij(a,b);a=b.pendingProps;var e=Yf(b,H.current);ch(b,c);e=Nh(null,b,d,a,e,c);var f=Sh();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,kh(b),e.updater=Ei,b.stateNode=e,e._reactInternals=b,Ii(b,d,a,c),b=jj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Xi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{ij(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=Zk(d);a=Ci(d,a);switch(e){case 0:b=cj(null,b,d,a,c);break a;case 1:b=hj(null,b,d,a,c);break a;case 11:b=Yi(null,b,d,a,c);break a;case 14:b=$i(null,b,d,Ci(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),cj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),hj(a,b,d,e,c);case 3:a:{kj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;lh(a,b);qh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ji(Error(p(423)),b);b=lj(a,b,d,c,e);break a}else if(d!==e){e=Ji(Error(p(424)),b);b=lj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Vg(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=Zi(a,b,c);break a}Xi(a,b,d,c)}b=b.child}return b;case 5:return Ah(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\ngj(a,b),Xi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return oj(a,b,c);case 4:return yh(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Ug(b,null,d,c):Xi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),Yi(a,b,d,e,c);case 7:return Xi(a,b,b.pendingProps,c),b.child;case 8:return Xi(a,b,b.pendingProps.children,c),b.child;case 12:return Xi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Wg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=Zi(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=mh(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);bh(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);bh(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Xi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,ch(b,c),e=eh(e),d=d(e),b.flags|=1,Xi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Ci(d,b.pendingProps),e=Ci(d.type,e),$i(a,b,d,e,c);case 15:return bj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Ci(d,e),ij(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,ch(b,c),Gi(b,d,e),Ii(b,d,e,c),jj(null,b,d,!0,a,c);case 19:return xj(a,b,c);case 22:return dj(a,b,c)}throw Error(p(156,b.tag));};function Fk(a,b){return ac(a,b)}\nfunction $k(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new $k(a,b,c,d)}function aj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction Zk(a){if(\"function\"===typeof a)return aj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction Pg(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction Rg(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)aj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Tg(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return pj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Tg(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function pj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function Qg(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction Sg(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction al(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function bl(a,b,c,d,e,f,g,h,k){a=new al(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};kh(f);return a}function cl(a,b,c){var d=3<arguments.length&&void 0!==arguments[3]?arguments[3]:null;return{$$typeof:wa,key:null==d?null:\"\"+d,children:a,containerInfo:b,implementation:c}}\nfunction dl(a){if(!a)return Vf;a=a._reactInternals;a:{if(Vb(a)!==a||1!==a.tag)throw Error(p(170));var b=a;do{switch(b.tag){case 3:b=b.stateNode.context;break a;case 1:if(Zf(b.type)){b=b.stateNode.__reactInternalMemoizedMergedChildContext;break a}}b=b.return}while(null!==b);throw Error(p(171));}if(1===a.tag){var c=a.type;if(Zf(c))return bg(a,c,b)}return b}\nfunction el(a,b,c,d,e,f,g,h,k){a=bl(c,d,!0,a,e,f,g,h,k);a.context=dl(null);c=a.current;d=R();e=yi(c);f=mh(d,e);f.callback=void 0!==b&&null!==b?b:null;nh(c,f,e);a.current.lanes=e;Ac(a,e,d);Dk(a,d);return a}function fl(a,b,c,d){var e=b.current,f=R(),g=yi(e);c=dl(c);null===b.context?b.context=c:b.pendingContext=c;b=mh(f,g);b.payload={element:a};d=void 0===d?null:d;null!==d&&(b.callback=d);a=nh(e,b,g);null!==a&&(gi(a,e,g,f),oh(a,e,g));return g}\nfunction gl(a){a=a.current;if(!a.child)return null;switch(a.child.tag){case 5:return a.child.stateNode;default:return a.child.stateNode}}function hl(a,b){a=a.memoizedState;if(null!==a&&null!==a.dehydrated){var c=a.retryLane;a.retryLane=0!==c&&c<b?c:b}}function il(a,b){hl(a,b);(a=a.alternate)&&hl(a,b)}function jl(){return null}var kl=\"function\"===typeof reportError?reportError:function(a){console.error(a)};function ll(a){this._internalRoot=a}\nml.prototype.render=ll.prototype.render=function(a){var b=this._internalRoot;if(null===b)throw Error(p(409));fl(a,b,null,null)};ml.prototype.unmount=ll.prototype.unmount=function(){var a=this._internalRoot;if(null!==a){this._internalRoot=null;var b=a.containerInfo;Rk(function(){fl(null,a,null,null)});b[uf]=null}};function ml(a){this._internalRoot=a}\nml.prototype.unstable_scheduleHydration=function(a){if(a){var b=Hc();a={blockedOn:null,target:a,priority:b};for(var c=0;c<Qc.length&&0!==b&&b<Qc[c].priority;c++);Qc.splice(c,0,a);0===c&&Vc(a)}};function nl(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType)}function ol(a){return!(!a||1!==a.nodeType&&9!==a.nodeType&&11!==a.nodeType&&(8!==a.nodeType||\" react-mount-point-unstable \"!==a.nodeValue))}function pl(){}\nfunction ql(a,b,c,d,e){if(e){if(\"function\"===typeof d){var f=d;d=function(){var a=gl(g);f.call(a)}}var g=el(b,d,a,0,null,!1,!1,\"\",pl);a._reactRootContainer=g;a[uf]=g.current;sf(8===a.nodeType?a.parentNode:a);Rk();return g}for(;e=a.lastChild;)a.removeChild(e);if(\"function\"===typeof d){var h=d;d=function(){var a=gl(k);h.call(a)}}var k=bl(a,0,!1,null,null,!1,!1,\"\",pl);a._reactRootContainer=k;a[uf]=k.current;sf(8===a.nodeType?a.parentNode:a);Rk(function(){fl(b,k,c,d)});return k}\nfunction rl(a,b,c,d,e){var f=c._reactRootContainer;if(f){var g=f;if(\"function\"===typeof e){var h=e;e=function(){var a=gl(g);h.call(a)}}fl(b,g,a,e)}else g=ql(c,b,a,e,d);return gl(g)}Ec=function(a){switch(a.tag){case 3:var b=a.stateNode;if(b.current.memoizedState.isDehydrated){var c=tc(b.pendingLanes);0!==c&&(Cc(b,c|1),Dk(b,B()),0===(K&6)&&(Gj=B()+500,jg()))}break;case 13:Rk(function(){var b=ih(a,1);if(null!==b){var c=R();gi(b,a,1,c)}}),il(a,1)}};\nFc=function(a){if(13===a.tag){var b=ih(a,134217728);if(null!==b){var c=R();gi(b,a,134217728,c)}il(a,134217728)}};Gc=function(a){if(13===a.tag){var b=yi(a),c=ih(a,b);if(null!==c){var d=R();gi(c,a,b,d)}il(a,b)}};Hc=function(){return C};Ic=function(a,b){var c=C;try{return C=a,b()}finally{C=c}};\nyb=function(a,b,c){switch(b){case \"input\":bb(a,c);b=c.name;if(\"radio\"===c.type&&null!=b){for(c=a;c.parentNode;)c=c.parentNode;c=c.querySelectorAll(\"input[name=\"+JSON.stringify(\"\"+b)+'][type=\"radio\"]');for(b=0;b<c.length;b++){var d=c[b];if(d!==a&&d.form===a.form){var e=Db(d);if(!e)throw Error(p(90));Wa(d);bb(d,e)}}}break;case \"textarea\":ib(a,c);break;case \"select\":b=c.value,null!=b&&fb(a,!!c.multiple,b,!1)}};Gb=Qk;Hb=Rk;\nvar sl={usingClientEntryPoint:!1,Events:[Cb,ue,Db,Eb,Fb,Qk]},tl={findFiberByHostInstance:Wc,bundleType:0,version:\"18.3.1\",rendererPackageName:\"react-dom\"};\nvar ul={bundleType:tl.bundleType,version:tl.version,rendererPackageName:tl.rendererPackageName,rendererConfig:tl.rendererConfig,overrideHookState:null,overrideHookStateDeletePath:null,overrideHookStateRenamePath:null,overrideProps:null,overridePropsDeletePath:null,overridePropsRenamePath:null,setErrorHandler:null,setSuspenseHandler:null,scheduleUpdate:null,currentDispatcherRef:ua.ReactCurrentDispatcher,findHostInstanceByFiber:function(a){a=Zb(a);return null===a?null:a.stateNode},findFiberByHostInstance:tl.findFiberByHostInstance||\njl,findHostInstancesForRefresh:null,scheduleRefresh:null,scheduleRoot:null,setRefreshHandler:null,getCurrentFiber:null,reconcilerVersion:\"18.3.1-next-f1338f8080-20240426\"};if(\"undefined\"!==typeof __REACT_DEVTOOLS_GLOBAL_HOOK__){var vl=__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!vl.isDisabled&&vl.supportsFiber)try{kc=vl.inject(ul),lc=vl}catch(a){}}exports.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED=sl;\nexports.createPortal=function(a,b){var c=2<arguments.length&&void 0!==arguments[2]?arguments[2]:null;if(!nl(b))throw Error(p(200));return cl(a,b,null,c)};exports.createRoot=function(a,b){if(!nl(a))throw Error(p(299));var c=!1,d=\"\",e=kl;null!==b&&void 0!==b&&(!0===b.unstable_strictMode&&(c=!0),void 0!==b.identifierPrefix&&(d=b.identifierPrefix),void 0!==b.onRecoverableError&&(e=b.onRecoverableError));b=bl(a,1,!1,null,null,c,!1,d,e);a[uf]=b.current;sf(8===a.nodeType?a.parentNode:a);return new ll(b)};\nexports.findDOMNode=function(a){if(null==a)return null;if(1===a.nodeType)return a;var b=a._reactInternals;if(void 0===b){if(\"function\"===typeof a.render)throw Error(p(188));a=Object.keys(a).join(\",\");throw Error(p(268,a));}a=Zb(b);a=null===a?null:a.stateNode;return a};exports.flushSync=function(a){return Rk(a)};exports.hydrate=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!0,c)};\nexports.hydrateRoot=function(a,b,c){if(!nl(a))throw Error(p(405));var d=null!=c&&c.hydratedSources||null,e=!1,f=\"\",g=kl;null!==c&&void 0!==c&&(!0===c.unstable_strictMode&&(e=!0),void 0!==c.identifierPrefix&&(f=c.identifierPrefix),void 0!==c.onRecoverableError&&(g=c.onRecoverableError));b=el(b,null,a,1,null!=c?c:null,e,!1,f,g);a[uf]=b.current;sf(a);if(d)for(a=0;a<d.length;a++)c=d[a],e=c._getVersion,e=e(c._source),null==b.mutableSourceEagerHydrationData?b.mutableSourceEagerHydrationData=[c,e]:b.mutableSourceEagerHydrationData.push(c,\ne);return new ml(b)};exports.render=function(a,b,c){if(!ol(b))throw Error(p(200));return rl(null,a,b,!1,c)};exports.unmountComponentAtNode=function(a){if(!ol(a))throw Error(p(40));return a._reactRootContainer?(Rk(function(){rl(null,null,a,!1,function(){a._reactRootContainer=null;a[uf]=null})}),!0):!1};exports.unstable_batchedUpdates=Qk;\nexports.unstable_renderSubtreeIntoContainer=function(a,b,c,d){if(!ol(c))throw Error(p(200));if(null==a||void 0===a._reactInternals)throw Error(p(38));return rl(a,b,c,!1,d)};exports.version=\"18.3.1-next-f1338f8080-20240426\";\n","'use strict';\n\nfunction checkDCE() {\n /* global __REACT_DEVTOOLS_GLOBAL_HOOK__ */\n if (\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ === 'undefined' ||\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE !== 'function'\n ) {\n return;\n }\n if (process.env.NODE_ENV !== 'production') {\n // This branch is unreachable because this function is only called\n // in production, but the condition is true only in development.\n // Therefore if the branch is still here, dead code elimination wasn't\n // properly applied.\n // Don't change the message. React DevTools relies on it. Also make sure\n // this message doesn't occur elsewhere in this function, or it will cause\n // a false positive.\n throw new Error('^_^');\n }\n try {\n // Verify that the code above has been dead code eliminated (DCE'd).\n __REACT_DEVTOOLS_GLOBAL_HOOK__.checkDCE(checkDCE);\n } catch (err) {\n // DevTools shouldn't crash React, no matter what.\n // We should still report in case we break this code.\n console.error(err);\n }\n}\n\nif (process.env.NODE_ENV === 'production') {\n // DCE check should happen before ReactDOM bundle executes so that\n // DevTools can report bad minification during injection.\n checkDCE();\n module.exports = require('./cjs/react-dom.production.min.js');\n} else {\n module.exports = require('./cjs/react-dom.development.js');\n}\n","'use strict';\n\nvar m = require('react-dom');\nif (process.env.NODE_ENV === 'production') {\n exports.createRoot = m.createRoot;\n exports.hydrateRoot = m.hydrateRoot;\n} else {\n var i = m.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;\n exports.createRoot = function(c, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.createRoot(c, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n exports.hydrateRoot = function(c, h, o) {\n i.usingClientEntryPoint = true;\n try {\n return m.hydrateRoot(c, h, o);\n } finally {\n i.usingClientEntryPoint = false;\n }\n };\n}\n","/**\n * react-router v7.13.0\n *\n * Copyright (c) Remix Software Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE.md file in the root directory of this source tree.\n *\n * @license MIT\n */\nvar __typeError = (msg) => {\n throw TypeError(msg);\n};\nvar __accessCheck = (obj, member, msg) => member.has(obj) || __typeError(\"Cannot \" + msg);\nvar __privateGet = (obj, member, getter) => (__accessCheck(obj, member, \"read from private field\"), getter ? getter.call(obj) : member.get(obj));\nvar __privateAdd = (obj, member, value) => member.has(obj) ? __typeError(\"Cannot add the same private member more than once\") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);\n\n// lib/router/history.ts\nvar Action = /* @__PURE__ */ ((Action2) => {\n Action2[\"Pop\"] = \"POP\";\n Action2[\"Push\"] = \"PUSH\";\n Action2[\"Replace\"] = \"REPLACE\";\n return Action2;\n})(Action || {});\nvar PopStateEventType = \"popstate\";\nfunction createMemoryHistory(options = {}) {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries;\n entries = initialEntries.map(\n (entry, index2) => createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index2 === 0 ? \"default\" : void 0\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = \"POP\" /* Pop */;\n let listener = null;\n function clampIndex(n) {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation() {\n return entries[index];\n }\n function createMemoryLocation(to, state = null, key) {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n function createHref2(to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n let history = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref: createHref2,\n createURL(to) {\n return new URL(createHref2(to), \"http://localhost\");\n },\n encodeLocation(to) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\"\n };\n },\n push(to, state) {\n action = \"PUSH\" /* Push */;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = \"REPLACE\" /* Replace */;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = \"POP\" /* Pop */;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn) {\n listener = fn;\n return () => {\n listener = null;\n };\n }\n };\n return history;\n}\nfunction createBrowserHistory(options = {}) {\n function createBrowserLocation(window2, globalHistory) {\n let { pathname, search, hash } = window2.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null,\n globalHistory.state && globalHistory.state.key || \"default\"\n );\n }\n function createBrowserHref(window2, to) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\nfunction createHashHistory(options = {}) {\n function createHashLocation(window2, globalHistory) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n } = parsePath(window2.location.hash.substring(1));\n if (!pathname.startsWith(\"/\") && !pathname.startsWith(\".\")) {\n pathname = \"/\" + pathname;\n }\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n globalHistory.state && globalHistory.state.usr || null,\n globalHistory.state && globalHistory.state.key || \"default\"\n );\n }\n function createHashHref(window2, to) {\n let base = window2.document.querySelector(\"base\");\n let href = \"\";\n if (base && base.getAttribute(\"href\")) {\n let url = window2.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n function validateHashLocation(location, to) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\nfunction invariant(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\nfunction warning(cond, message) {\n if (!cond) {\n if (typeof console !== \"undefined\") console.warn(message);\n try {\n throw new Error(message);\n } catch (e) {\n }\n }\n}\nfunction createKey() {\n return Math.random().toString(36).substring(2, 10);\n}\nfunction getHistoryState(location, index) {\n return {\n usr: location.state,\n key: location.key,\n idx: index\n };\n}\nfunction createLocation(current, to, state = null, key) {\n let location = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...typeof to === \"string\" ? parsePath(to) : to,\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: to && to.key || key || createKey()\n };\n return location;\n}\nfunction createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\"\n}) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\nfunction parsePath(path) {\n let parsedPath = {};\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substring(hashIndex);\n path = path.substring(0, hashIndex);\n }\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substring(searchIndex);\n path = path.substring(0, searchIndex);\n }\n if (path) {\n parsedPath.pathname = path;\n }\n }\n return parsedPath;\n}\nfunction getUrlBasedHistory(getLocation, createHref2, validateLocation, options = {}) {\n let { window: window2 = document.defaultView, v5Compat = false } = options;\n let globalHistory = window2.history;\n let action = \"POP\" /* Pop */;\n let listener = null;\n let index = getIndex();\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n function getIndex() {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n function handlePop() {\n action = \"POP\" /* Pop */;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n function push(to, state) {\n action = \"PUSH\" /* Push */;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n if (error instanceof DOMException && error.name === \"DataCloneError\") {\n throw error;\n }\n window2.location.assign(url);\n }\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n function replace2(to, state) {\n action = \"REPLACE\" /* Replace */;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n function createURL(to) {\n return createBrowserURLImpl(to);\n }\n let history = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window2, globalHistory);\n },\n listen(fn) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window2.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n return () => {\n window2.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref2(window2, to);\n },\n createURL,\n encodeLocation(to) {\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash\n };\n },\n push,\n replace: replace2,\n go(n) {\n return globalHistory.go(n);\n }\n };\n return history;\n}\nfunction createBrowserURLImpl(to, isAbsolute = false) {\n let base = \"http://localhost\";\n if (typeof window !== \"undefined\") {\n base = window.location.origin !== \"null\" ? window.location.origin : window.location.href;\n }\n invariant(base, \"No window.location.(origin|href) available to create URL\");\n let href = typeof to === \"string\" ? to : createPath(to);\n href = href.replace(/ $/, \"%20\");\n if (!isAbsolute && href.startsWith(\"//\")) {\n href = base + href;\n }\n return new URL(href, base);\n}\n\n// lib/router/utils.ts\nfunction createContext(defaultValue) {\n return { defaultValue };\n}\nvar _map;\nvar RouterContextProvider = class {\n /**\n * Create a new `RouterContextProvider` instance\n * @param init An optional initial context map to populate the provider with\n */\n constructor(init) {\n __privateAdd(this, _map, /* @__PURE__ */ new Map());\n if (init) {\n for (let [context, value] of init) {\n this.set(context, value);\n }\n }\n }\n /**\n * Access a value from the context. If no value has been set for the context,\n * it will return the context's `defaultValue` if provided, or throw an error\n * if no `defaultValue` was set.\n * @param context The context to get the value for\n * @returns The value for the context, or the context's `defaultValue` if no\n * value was set\n */\n get(context) {\n if (__privateGet(this, _map).has(context)) {\n return __privateGet(this, _map).get(context);\n }\n if (context.defaultValue !== void 0) {\n return context.defaultValue;\n }\n throw new Error(\"No value found for context\");\n }\n /**\n * Set a value for the context. If the context already has a value set, this\n * will overwrite it.\n *\n * @param context The context to set the value for\n * @param value The value to set for the context\n * @returns {void}\n */\n set(context, value) {\n __privateGet(this, _map).set(context, value);\n }\n};\n_map = new WeakMap();\nvar unsupportedLazyRouteObjectKeys = /* @__PURE__ */ new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\"\n]);\nfunction isUnsupportedLazyRouteObjectKey(key) {\n return unsupportedLazyRouteObjectKeys.has(\n key\n );\n}\nvar unsupportedLazyRouteFunctionKeys = /* @__PURE__ */ new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"middleware\",\n \"children\"\n]);\nfunction isUnsupportedLazyRouteFunctionKey(key) {\n return unsupportedLazyRouteFunctionKeys.has(\n key\n );\n}\nfunction isIndexRoute(route) {\n return route.index === true;\n}\nfunction convertRoutesToDataRoutes(routes, mapRouteProperties2, parentPath = [], manifest = {}, allowInPlaceMutations = false) {\n return routes.map((route, index) => {\n let treePath = [...parentPath, String(index)];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n allowInPlaceMutations || !manifest[id],\n `Found a route id collision on id \"${id}\". Route id's must be globally unique within Data Router usages`\n );\n if (isIndexRoute(route)) {\n let indexRoute = {\n ...route,\n id\n };\n manifest[id] = mergeRouteUpdates(\n indexRoute,\n mapRouteProperties2(indexRoute)\n );\n return indexRoute;\n } else {\n let pathOrLayoutRoute = {\n ...route,\n id,\n children: void 0\n };\n manifest[id] = mergeRouteUpdates(\n pathOrLayoutRoute,\n mapRouteProperties2(pathOrLayoutRoute)\n );\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n mapRouteProperties2,\n treePath,\n manifest,\n allowInPlaceMutations\n );\n }\n return pathOrLayoutRoute;\n }\n });\n}\nfunction mergeRouteUpdates(route, updates) {\n return Object.assign(route, {\n ...updates,\n ...typeof updates.lazy === \"object\" && updates.lazy != null ? {\n lazy: {\n ...route.lazy,\n ...updates.lazy\n }\n } : {}\n });\n}\nfunction matchRoutes(routes, locationArg, basename = \"/\") {\n return matchRoutesImpl(routes, locationArg, basename, false);\n}\nfunction matchRoutesImpl(routes, locationArg, basename, allowPartial) {\n let location = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n let pathname = stripBasename(location.pathname || \"/\", basename);\n if (pathname == null) {\n return null;\n }\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n let decoded = decodePath(pathname);\n matches = matchRouteBranch(\n branches[i],\n decoded,\n allowPartial\n );\n }\n return matches;\n}\nfunction convertRouteMatchToUiMatch(match, loaderData) {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id],\n loaderData: loaderData[route.id],\n handle: route.handle\n };\n}\nfunction flattenRoutes(routes, branches = [], parentsMeta = [], parentPath = \"\", _hasParentOptionalSegments = false) {\n let flattenRoute = (route, index, hasParentOptionalSegments = _hasParentOptionalSegments, relativePath) => {\n let meta = {\n relativePath: relativePath === void 0 ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route\n };\n if (meta.relativePath.startsWith(\"/\")) {\n if (!meta.relativePath.startsWith(parentPath) && hasParentOptionalSegments) {\n return;\n }\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path \"${parentPath}\" is not valid. An absolute child route path must start with the combined path of all its parent routes.`\n );\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove all child routes from route path \"${path}\".`\n );\n flattenRoutes(\n route.children,\n branches,\n routesMeta,\n path,\n hasParentOptionalSegments\n );\n }\n if (route.path == null && !route.index) {\n return;\n }\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta\n });\n };\n routes.forEach((route, index) => {\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, true, exploded);\n }\n }\n });\n return branches;\n}\nfunction explodeOptionalSegments(path) {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n let [first, ...rest] = segments;\n let isOptional = first.endsWith(\"?\");\n let required = first.replace(/\\?$/, \"\");\n if (rest.length === 0) {\n return isOptional ? [required, \"\"] : [required];\n }\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n let result = [];\n result.push(\n ...restExploded.map(\n (subpath) => subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n if (isOptional) {\n result.push(...restExploded);\n }\n return result.map(\n (exploded) => path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\nfunction rankRouteBranches(branches) {\n branches.sort(\n (a, b) => a.score !== b.score ? b.score - a.score : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\nvar paramRe = /^:[\\w-]+$/;\nvar dynamicSegmentValue = 3;\nvar indexRouteValue = 2;\nvar emptySegmentValue = 1;\nvar staticSegmentValue = 10;\nvar splatPenalty = -2;\nvar isSplat = (s) => s === \"*\";\nfunction computeScore(path, index) {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n if (index) {\n initialScore += indexRouteValue;\n }\n return segments.filter((s) => !isSplat(s)).reduce(\n (score, segment) => score + (paramRe.test(segment) ? dynamicSegmentValue : segment === \"\" ? emptySegmentValue : staticSegmentValue),\n initialScore\n );\n}\nfunction compareIndexes(a, b) {\n let siblings = a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n return siblings ? (\n // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n ) : (\n // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0\n );\n}\nfunction matchRouteBranch(branch, pathname, allowPartial = false) {\n let { routesMeta } = branch;\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname = matchedPathname === \"/\" ? pathname : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n let route = meta.route;\n if (!match && end && allowPartial && !routesMeta[routesMeta.length - 1].route.index) {\n match = matchPath(\n {\n path: meta.relativePath,\n caseSensitive: meta.caseSensitive,\n end: false\n },\n remainingPathname\n );\n }\n if (!match) {\n return null;\n }\n Object.assign(matchedParams, match.params);\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route\n });\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n return matches;\n}\nfunction generatePath(originalPath, params = {}) {\n let path = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\");\n }\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n const stringify2 = (p) => p == null ? \"\" : typeof p === \"string\" ? p : String(p);\n const segments = path.split(/\\/+/).map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n if (isLastSegment && segment === \"*\") {\n const star = \"*\";\n return stringify2(params[star]);\n }\n const keyMatch = segment.match(/^:([\\w-]+)(\\??)(.*)/);\n if (keyMatch) {\n const [, key, optional, suffix] = keyMatch;\n let param = params[key];\n invariant(optional === \"?\" || param != null, `Missing \":${key}\" param`);\n return encodeURIComponent(stringify2(param)) + suffix;\n }\n return segment.replace(/\\?$/g, \"\");\n }).filter((segment) => !!segment);\n return prefix + segments.join(\"/\");\n}\nfunction matchPath(pattern, pathname) {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n let [matcher, compiledParams] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n let match = pathname.match(matcher);\n if (!match) return null;\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params = compiledParams.reduce(\n (memo2, { paramName, isOptional }, index) => {\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname.slice(0, matchedPathname.length - splatValue.length).replace(/(.)\\/+$/, \"$1\");\n }\n const value = captureGroups[index];\n if (isOptional && !value) {\n memo2[paramName] = void 0;\n } else {\n memo2[paramName] = (value || \"\").replace(/%2F/g, \"/\");\n }\n return memo2;\n },\n {}\n );\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern\n };\n}\nfunction compilePath(path, caseSensitive = false, end = true) {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were \"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must always follow a \\`/\\` in the pattern. To get rid of this warning, please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n let params = [];\n let regexpSource = \"^\" + path.replace(/\\/*\\*?$/, \"\").replace(/^\\/*/, \"/\").replace(/[\\\\.*+^${}|()[\\]]/g, \"\\\\$&\").replace(\n /\\/:([\\w-]+)(\\?)?/g,\n (_, paramName, isOptional) => {\n params.push({ paramName, isOptional: isOptional != null });\n return isOptional ? \"/?([^\\\\/]+)?\" : \"/([^\\\\/]+)\";\n }\n ).replace(/\\/([\\w-]+)\\?(\\/|$)/g, \"(/$1)?$2\");\n if (path.endsWith(\"*\")) {\n params.push({ paramName: \"*\" });\n regexpSource += path === \"*\" || path === \"/*\" ? \"(.*)$\" : \"(?:\\\\/(.+)|\\\\/*)$\";\n } else if (end) {\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n }\n let matcher = new RegExp(regexpSource, caseSensitive ? void 0 : \"i\");\n return [matcher, params];\n}\nfunction decodePath(value) {\n try {\n return value.split(\"/\").map((v) => decodeURIComponent(v).replace(/\\//g, \"%2F\")).join(\"/\");\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is a malformed URL segment. This is probably due to a bad percent encoding (${error}).`\n );\n return value;\n }\n}\nfunction stripBasename(pathname, basename) {\n if (basename === \"/\") return pathname;\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n let startIndex = basename.endsWith(\"/\") ? basename.length - 1 : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n return null;\n }\n return pathname.slice(startIndex) || \"/\";\n}\nfunction prependBasename({\n basename,\n pathname\n}) {\n return pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n}\nvar ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar isAbsoluteUrl = (url) => ABSOLUTE_URL_REGEX.test(url);\nfunction resolvePath(to, fromPathname = \"/\") {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\"\n } = typeof to === \"string\" ? parsePath(to) : to;\n let pathname;\n if (toPathname) {\n toPathname = toPathname.replace(/\\/\\/+/g, \"/\");\n if (toPathname.startsWith(\"/\")) {\n pathname = resolvePathname(toPathname.substring(1), \"/\");\n } else {\n pathname = resolvePathname(toPathname, fromPathname);\n }\n } else {\n pathname = fromPathname;\n }\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash)\n };\n}\nfunction resolvePathname(relativePath, fromPathname) {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\nfunction getInvalidPathError(char, field, dest, path) {\n return `Cannot include a '${char}' character in a manually specified \\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the \\`to.${dest}\\` field. Alternatively you may provide the full path as a string in <Link to=\"...\"> and the router will parse it for you.`;\n}\nfunction getPathContributingMatches(matches) {\n return matches.filter(\n (match, index) => index === 0 || match.route.path && match.route.path.length > 0\n );\n}\nfunction getResolveToMatches(matches) {\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches.map(\n (match, idx) => idx === pathMatches.length - 1 ? match.pathname : match.pathnameBase\n );\n}\nfunction resolveTo(toArg, routePathnames, locationPathname, isPathRelative = false) {\n let to;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n let from;\n if (toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n if (!isPathRelative && toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n to.pathname = toSegments.join(\"/\");\n }\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n let path = resolvePath(to, from);\n let hasExplicitTrailingSlash = toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n let hasCurrentTrailingSlash = (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (!path.pathname.endsWith(\"/\") && (hasExplicitTrailingSlash || hasCurrentTrailingSlash)) {\n path.pathname += \"/\";\n }\n return path;\n}\nvar joinPaths = (paths) => paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\nvar normalizePathname = (pathname) => pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\nvar normalizeSearch = (search) => !search || search === \"?\" ? \"\" : search.startsWith(\"?\") ? search : \"?\" + search;\nvar normalizeHash = (hash) => !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\nvar DataWithResponseInit = class {\n constructor(data2, init) {\n this.type = \"DataWithResponseInit\";\n this.data = data2;\n this.init = init || null;\n }\n};\nfunction data(data2, init) {\n return new DataWithResponseInit(\n data2,\n typeof init === \"number\" ? { status: init } : init\n );\n}\nvar redirect = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n return new Response(null, { ...responseInit, headers });\n};\nvar redirectDocument = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Reload-Document\", \"true\");\n return response;\n};\nvar replace = (url, init) => {\n let response = redirect(url, init);\n response.headers.set(\"X-Remix-Replace\", \"true\");\n return response;\n};\nvar ErrorResponseImpl = class {\n constructor(status, statusText, data2, internal = false) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data2 instanceof Error) {\n this.data = data2.toString();\n this.error = data2;\n } else {\n this.data = data2;\n }\n }\n};\nfunction isRouteErrorResponse(error) {\n return error != null && typeof error.status === \"number\" && typeof error.statusText === \"string\" && typeof error.internal === \"boolean\" && \"data\" in error;\n}\nfunction getRoutePattern(matches) {\n return matches.map((m) => m.route.path).filter(Boolean).join(\"/\").replace(/\\/\\/*/g, \"/\") || \"/\";\n}\nvar isBrowser = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\nfunction parseToInfo(_to, basename) {\n let to = _to;\n if (typeof to !== \"string\" || !ABSOLUTE_URL_REGEX.test(to)) {\n return {\n absoluteURL: void 0,\n isExternal: false,\n to\n };\n }\n let absoluteURL = to;\n let isExternal = false;\n if (isBrowser) {\n try {\n let currentUrl = new URL(window.location.href);\n let targetUrl = to.startsWith(\"//\") ? new URL(currentUrl.protocol + to) : new URL(to);\n let path = stripBasename(targetUrl.pathname, basename);\n if (targetUrl.origin === currentUrl.origin && path != null) {\n to = path + targetUrl.search + targetUrl.hash;\n } else {\n isExternal = true;\n }\n } catch (e) {\n warning(\n false,\n `<Link to=\"${to}\"> contains an invalid URL which will probably break when clicked - please update to a valid URL path.`\n );\n }\n }\n return {\n absoluteURL,\n isExternal,\n to\n };\n}\n\n// lib/router/instrumentation.ts\nvar UninstrumentedSymbol = Symbol(\"Uninstrumented\");\nfunction getRouteInstrumentationUpdates(fns, route) {\n let aggregated = {\n lazy: [],\n \"lazy.loader\": [],\n \"lazy.action\": [],\n \"lazy.middleware\": [],\n middleware: [],\n loader: [],\n action: []\n };\n fns.forEach(\n (fn) => fn({\n id: route.id,\n index: route.index,\n path: route.path,\n instrument(i) {\n let keys = Object.keys(aggregated);\n for (let key of keys) {\n if (i[key]) {\n aggregated[key].push(i[key]);\n }\n }\n }\n })\n );\n let updates = {};\n if (typeof route.lazy === \"function\" && aggregated.lazy.length > 0) {\n let instrumented = wrapImpl(aggregated.lazy, route.lazy, () => void 0);\n if (instrumented) {\n updates.lazy = instrumented;\n }\n }\n if (typeof route.lazy === \"object\") {\n let lazyObject = route.lazy;\n [\"middleware\", \"loader\", \"action\"].forEach((key) => {\n let lazyFn = lazyObject[key];\n let instrumentations = aggregated[`lazy.${key}`];\n if (typeof lazyFn === \"function\" && instrumentations.length > 0) {\n let instrumented = wrapImpl(instrumentations, lazyFn, () => void 0);\n if (instrumented) {\n updates.lazy = Object.assign(updates.lazy || {}, {\n [key]: instrumented\n });\n }\n }\n });\n }\n [\"loader\", \"action\"].forEach((key) => {\n let handler = route[key];\n if (typeof handler === \"function\" && aggregated[key].length > 0) {\n let original = handler[UninstrumentedSymbol] ?? handler;\n let instrumented = wrapImpl(\n aggregated[key],\n original,\n (...args) => getHandlerInfo(args[0])\n );\n if (instrumented) {\n if (key === \"loader\" && original.hydrate === true) {\n instrumented.hydrate = true;\n }\n instrumented[UninstrumentedSymbol] = original;\n updates[key] = instrumented;\n }\n }\n });\n if (route.middleware && route.middleware.length > 0 && aggregated.middleware.length > 0) {\n updates.middleware = route.middleware.map((middleware) => {\n let original = middleware[UninstrumentedSymbol] ?? middleware;\n let instrumented = wrapImpl(\n aggregated.middleware,\n original,\n (...args) => getHandlerInfo(args[0])\n );\n if (instrumented) {\n instrumented[UninstrumentedSymbol] = original;\n return instrumented;\n }\n return middleware;\n });\n }\n return updates;\n}\nfunction instrumentClientSideRouter(router, fns) {\n let aggregated = {\n navigate: [],\n fetch: []\n };\n fns.forEach(\n (fn) => fn({\n instrument(i) {\n let keys = Object.keys(i);\n for (let key of keys) {\n if (i[key]) {\n aggregated[key].push(i[key]);\n }\n }\n }\n })\n );\n if (aggregated.navigate.length > 0) {\n let navigate = router.navigate[UninstrumentedSymbol] ?? router.navigate;\n let instrumentedNavigate = wrapImpl(\n aggregated.navigate,\n navigate,\n (...args) => {\n let [to, opts] = args;\n return {\n to: typeof to === \"number\" || typeof to === \"string\" ? to : to ? createPath(to) : \".\",\n ...getRouterInfo(router, opts ?? {})\n };\n }\n );\n if (instrumentedNavigate) {\n instrumentedNavigate[UninstrumentedSymbol] = navigate;\n router.navigate = instrumentedNavigate;\n }\n }\n if (aggregated.fetch.length > 0) {\n let fetch2 = router.fetch[UninstrumentedSymbol] ?? router.fetch;\n let instrumentedFetch = wrapImpl(aggregated.fetch, fetch2, (...args) => {\n let [key, , href, opts] = args;\n return {\n href: href ?? \".\",\n fetcherKey: key,\n ...getRouterInfo(router, opts ?? {})\n };\n });\n if (instrumentedFetch) {\n instrumentedFetch[UninstrumentedSymbol] = fetch2;\n router.fetch = instrumentedFetch;\n }\n }\n return router;\n}\nfunction instrumentHandler(handler, fns) {\n let aggregated = {\n request: []\n };\n fns.forEach(\n (fn) => fn({\n instrument(i) {\n let keys = Object.keys(i);\n for (let key of keys) {\n if (i[key]) {\n aggregated[key].push(i[key]);\n }\n }\n }\n })\n );\n let instrumentedHandler = handler;\n if (aggregated.request.length > 0) {\n instrumentedHandler = wrapImpl(aggregated.request, handler, (...args) => {\n let [request, context] = args;\n return {\n request: getReadonlyRequest(request),\n context: context != null ? getReadonlyContext(context) : context\n };\n });\n }\n return instrumentedHandler;\n}\nfunction wrapImpl(impls, handler, getInfo) {\n if (impls.length === 0) {\n return null;\n }\n return async (...args) => {\n let result = await recurseRight(\n impls,\n getInfo(...args),\n () => handler(...args),\n impls.length - 1\n );\n if (result.type === \"error\") {\n throw result.value;\n }\n return result.value;\n };\n}\nasync function recurseRight(impls, info, handler, index) {\n let impl = impls[index];\n let result;\n if (!impl) {\n try {\n let value = await handler();\n result = { type: \"success\", value };\n } catch (e) {\n result = { type: \"error\", value: e };\n }\n } else {\n let handlerPromise = void 0;\n let callHandler = async () => {\n if (handlerPromise) {\n console.error(\"You cannot call instrumented handlers more than once\");\n } else {\n handlerPromise = recurseRight(impls, info, handler, index - 1);\n }\n result = await handlerPromise;\n invariant(result, \"Expected a result\");\n if (result.type === \"error\" && result.value instanceof Error) {\n return { status: \"error\", error: result.value };\n }\n return { status: \"success\", error: void 0 };\n };\n try {\n await impl(callHandler, info);\n } catch (e) {\n console.error(\"An instrumentation function threw an error:\", e);\n }\n if (!handlerPromise) {\n await callHandler();\n }\n await handlerPromise;\n }\n if (result) {\n return result;\n }\n return {\n type: \"error\",\n value: new Error(\"No result assigned in instrumentation chain.\")\n };\n}\nfunction getHandlerInfo(args) {\n let { request, context, params, unstable_pattern } = args;\n return {\n request: getReadonlyRequest(request),\n params: { ...params },\n unstable_pattern,\n context: getReadonlyContext(context)\n };\n}\nfunction getRouterInfo(router, opts) {\n return {\n currentUrl: createPath(router.state.location),\n ...\"formMethod\" in opts ? { formMethod: opts.formMethod } : {},\n ...\"formEncType\" in opts ? { formEncType: opts.formEncType } : {},\n ...\"formData\" in opts ? { formData: opts.formData } : {},\n ...\"body\" in opts ? { body: opts.body } : {}\n };\n}\nfunction getReadonlyRequest(request) {\n return {\n method: request.method,\n url: request.url,\n headers: {\n get: (...args) => request.headers.get(...args)\n }\n };\n}\nfunction getReadonlyContext(context) {\n if (isPlainObject(context)) {\n let frozen = { ...context };\n Object.freeze(frozen);\n return frozen;\n } else {\n return {\n get: (ctx) => context.get(ctx)\n };\n }\n}\nvar objectProtoNames = Object.getOwnPropertyNames(Object.prototype).sort().join(\"\\0\");\nfunction isPlainObject(thing) {\n if (thing === null || typeof thing !== \"object\") {\n return false;\n }\n const proto = Object.getPrototypeOf(thing);\n return proto === Object.prototype || proto === null || Object.getOwnPropertyNames(proto).sort().join(\"\\0\") === objectProtoNames;\n}\n\n// lib/router/router.ts\nvar validMutationMethodsArr = [\n \"POST\",\n \"PUT\",\n \"PATCH\",\n \"DELETE\"\n];\nvar validMutationMethods = new Set(\n validMutationMethodsArr\n);\nvar validRequestMethodsArr = [\n \"GET\",\n ...validMutationMethodsArr\n];\nvar validRequestMethods = new Set(validRequestMethodsArr);\nvar redirectStatusCodes = /* @__PURE__ */ new Set([301, 302, 303, 307, 308]);\nvar redirectPreserveMethodStatusCodes = /* @__PURE__ */ new Set([307, 308]);\nvar IDLE_NAVIGATION = {\n state: \"idle\",\n location: void 0,\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0\n};\nvar IDLE_FETCHER = {\n state: \"idle\",\n data: void 0,\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0\n};\nvar IDLE_BLOCKER = {\n state: \"unblocked\",\n proceed: void 0,\n reset: void 0,\n location: void 0\n};\nvar defaultMapRouteProperties = (route) => ({\n hasErrorBoundary: Boolean(route.hasErrorBoundary)\n});\nvar TRANSITIONS_STORAGE_KEY = \"remix-router-transitions\";\nvar ResetLoaderDataSymbol = Symbol(\"ResetLoaderData\");\nfunction createRouter(init) {\n const routerWindow = init.window ? init.window : typeof window !== \"undefined\" ? window : void 0;\n const isBrowser3 = typeof routerWindow !== \"undefined\" && typeof routerWindow.document !== \"undefined\" && typeof routerWindow.document.createElement !== \"undefined\";\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n let hydrationRouteProperties2 = init.hydrationRouteProperties || [];\n let _mapRouteProperties = init.mapRouteProperties || defaultMapRouteProperties;\n let mapRouteProperties2 = _mapRouteProperties;\n if (init.unstable_instrumentations) {\n let instrumentations = init.unstable_instrumentations;\n mapRouteProperties2 = (route) => {\n return {\n ..._mapRouteProperties(route),\n ...getRouteInstrumentationUpdates(\n instrumentations.map((i) => i.route).filter(Boolean),\n route\n )\n };\n };\n }\n let manifest = {};\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n mapRouteProperties2,\n void 0,\n manifest\n );\n let inFlightDataRoutes;\n let basename = init.basename || \"/\";\n if (!basename.startsWith(\"/\")) {\n basename = `/${basename}`;\n }\n let dataStrategyImpl = init.dataStrategy || defaultDataStrategyWithMiddleware;\n let future = {\n ...init.future\n };\n let unlistenHistory = null;\n let subscribers = /* @__PURE__ */ new Set();\n let savedScrollPositions2 = null;\n let getScrollRestorationKey2 = null;\n let getScrollPosition = null;\n let initialScrollRestored = init.hydrationData != null;\n let initialMatches = matchRoutes(dataRoutes, init.history.location, basename);\n let initialMatchesIsFOW = false;\n let initialErrors = null;\n let initialized;\n if (initialMatches == null && !init.patchRoutesOnNavigation) {\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialized = true;\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n } else {\n if (initialMatches && !init.hydrationData) {\n let fogOfWar = checkFogOfWar(\n initialMatches,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active) {\n initialMatches = null;\n }\n }\n if (!initialMatches) {\n initialized = false;\n initialMatches = [];\n let fogOfWar = checkFogOfWar(\n null,\n dataRoutes,\n init.history.location.pathname\n );\n if (fogOfWar.active && fogOfWar.matches) {\n initialMatchesIsFOW = true;\n initialMatches = fogOfWar.matches;\n }\n } else if (initialMatches.some((m) => m.route.lazy)) {\n initialized = false;\n } else if (!initialMatches.some((m) => routeHasLoaderOrMiddleware(m.route))) {\n initialized = true;\n } else {\n let loaderData = init.hydrationData ? init.hydrationData.loaderData : null;\n let errors = init.hydrationData ? init.hydrationData.errors : null;\n if (errors) {\n let idx = initialMatches.findIndex(\n (m) => errors[m.route.id] !== void 0\n );\n initialized = initialMatches.slice(0, idx + 1).every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n } else {\n initialized = initialMatches.every(\n (m) => !shouldLoadRouteOnHydration(m.route, loaderData, errors)\n );\n }\n }\n }\n let router;\n let state = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: init.hydrationData && init.hydrationData.loaderData || {},\n actionData: init.hydrationData && init.hydrationData.actionData || null,\n errors: init.hydrationData && init.hydrationData.errors || initialErrors,\n fetchers: /* @__PURE__ */ new Map(),\n blockers: /* @__PURE__ */ new Map()\n };\n let pendingAction = \"POP\" /* Pop */;\n let pendingPopstateNavigationDfd = null;\n let pendingPreventScrollReset = false;\n let pendingNavigationController;\n let pendingViewTransitionEnabled = false;\n let appliedViewTransitions = /* @__PURE__ */ new Map();\n let removePageHideEventListener = null;\n let isUninterruptedRevalidation = false;\n let isRevalidationRequired = false;\n let cancelledFetcherLoads = /* @__PURE__ */ new Set();\n let fetchControllers = /* @__PURE__ */ new Map();\n let incrementingLoadId = 0;\n let pendingNavigationLoadId = -1;\n let fetchReloadIds = /* @__PURE__ */ new Map();\n let fetchRedirectIds = /* @__PURE__ */ new Set();\n let fetchLoadMatches = /* @__PURE__ */ new Map();\n let activeFetchers = /* @__PURE__ */ new Map();\n let fetchersQueuedForDeletion = /* @__PURE__ */ new Set();\n let blockerFunctions = /* @__PURE__ */ new Map();\n let unblockBlockerHistoryUpdate = void 0;\n let pendingRevalidationDfd = null;\n function initialize() {\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n if (unblockBlockerHistoryUpdate) {\n unblockBlockerHistoryUpdate();\n unblockBlockerHistoryUpdate = void 0;\n return;\n }\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location that was not created by @remix-run/router. This will fail silently in production. This can happen if you are navigating outside the router via `window.history.pushState`/`window.location.hash` instead of using router navigation APIs. This can also happen if you are using createHashRouter and the user manually changes the URL.\"\n );\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction\n });\n if (blockerKey && delta != null) {\n let nextHistoryUpdatePromise = new Promise((resolve) => {\n unblockBlockerHistoryUpdate = resolve;\n });\n init.history.go(delta * -1);\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: void 0,\n reset: void 0,\n location\n });\n nextHistoryUpdatePromise.then(() => init.history.go(delta));\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({ blockers });\n }\n });\n pendingPopstateNavigationDfd?.resolve();\n pendingPopstateNavigationDfd = null;\n return;\n }\n return startNavigation(historyAction, location);\n }\n );\n if (isBrowser3) {\n restoreAppliedTransitions(routerWindow, appliedViewTransitions);\n let _saveAppliedTransitions = () => persistAppliedTransitions(routerWindow, appliedViewTransitions);\n routerWindow.addEventListener(\"pagehide\", _saveAppliedTransitions);\n removePageHideEventListener = () => routerWindow.removeEventListener(\"pagehide\", _saveAppliedTransitions);\n }\n if (!state.initialized) {\n startNavigation(\"POP\" /* Pop */, state.location, {\n initialHydration: true\n });\n }\n return router;\n }\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n if (removePageHideEventListener) {\n removePageHideEventListener();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n function subscribe(fn) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n function updateState(newState, opts = {}) {\n if (newState.matches) {\n newState.matches = newState.matches.map((m) => {\n let route = manifest[m.route.id];\n let matchRoute = m.route;\n if (matchRoute.element !== route.element || matchRoute.errorElement !== route.errorElement || matchRoute.hydrateFallbackElement !== route.hydrateFallbackElement) {\n return {\n ...m,\n route\n };\n }\n return m;\n });\n }\n state = {\n ...state,\n ...newState\n };\n let unmountedFetchers = [];\n let mountedFetchers = [];\n state.fetchers.forEach((fetcher, key) => {\n if (fetcher.state === \"idle\") {\n if (fetchersQueuedForDeletion.has(key)) {\n unmountedFetchers.push(key);\n } else {\n mountedFetchers.push(key);\n }\n }\n });\n fetchersQueuedForDeletion.forEach((key) => {\n if (!state.fetchers.has(key) && !fetchControllers.has(key)) {\n unmountedFetchers.push(key);\n }\n });\n [...subscribers].forEach(\n (subscriber) => subscriber(state, {\n deletedFetchers: unmountedFetchers,\n newErrors: newState.errors ?? null,\n viewTransitionOpts: opts.viewTransitionOpts,\n flushSync: opts.flushSync === true\n })\n );\n unmountedFetchers.forEach((key) => deleteFetcher(key));\n mountedFetchers.forEach((key) => state.fetchers.delete(key));\n }\n function completeNavigation(location, newState, { flushSync } = {}) {\n let isActionReload = state.actionData != null && state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && state.navigation.state === \"loading\" && location.state?._isRedirect !== true;\n let actionData;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n actionData = null;\n }\n } else if (isActionReload) {\n actionData = state.actionData;\n } else {\n actionData = null;\n }\n let loaderData = newState.loaderData ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n ) : state.loaderData;\n let blockers = state.blockers;\n if (blockers.size > 0) {\n blockers = new Map(blockers);\n blockers.forEach((_, k) => blockers.set(k, IDLE_BLOCKER));\n }\n let restoreScrollPosition = isUninterruptedRevalidation ? false : getSavedScrollPosition(location, newState.matches || state.matches);\n let preventScrollReset = pendingPreventScrollReset === true || state.navigation.formMethod != null && isMutationMethod(state.navigation.formMethod) && location.state?._isRedirect !== true;\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = void 0;\n }\n if (isUninterruptedRevalidation) {\n } else if (pendingAction === \"POP\" /* Pop */) {\n } else if (pendingAction === \"PUSH\" /* Push */) {\n init.history.push(location, location.state);\n } else if (pendingAction === \"REPLACE\" /* Replace */) {\n init.history.replace(location, location.state);\n }\n let viewTransitionOpts;\n if (pendingAction === \"POP\" /* Pop */) {\n let priorPaths = appliedViewTransitions.get(state.location.pathname);\n if (priorPaths && priorPaths.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n } else if (appliedViewTransitions.has(location.pathname)) {\n viewTransitionOpts = {\n currentLocation: location,\n nextLocation: state.location\n };\n }\n } else if (pendingViewTransitionEnabled) {\n let toPaths = appliedViewTransitions.get(state.location.pathname);\n if (toPaths) {\n toPaths.add(location.pathname);\n } else {\n toPaths = /* @__PURE__ */ new Set([location.pathname]);\n appliedViewTransitions.set(state.location.pathname, toPaths);\n }\n viewTransitionOpts = {\n currentLocation: state.location,\n nextLocation: location\n };\n }\n updateState(\n {\n ...newState,\n // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition,\n preventScrollReset,\n blockers\n },\n {\n viewTransitionOpts,\n flushSync: flushSync === true\n }\n );\n pendingAction = \"POP\" /* Pop */;\n pendingPreventScrollReset = false;\n pendingViewTransitionEnabled = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n pendingPopstateNavigationDfd?.resolve();\n pendingPopstateNavigationDfd = null;\n pendingRevalidationDfd?.resolve();\n pendingRevalidationDfd = null;\n }\n async function navigate(to, opts) {\n pendingPopstateNavigationDfd?.resolve();\n pendingPopstateNavigationDfd = null;\n if (typeof to === \"number\") {\n if (!pendingPopstateNavigationDfd) {\n pendingPopstateNavigationDfd = createDeferred();\n }\n let promise = pendingPopstateNavigationDfd.promise;\n init.history.go(to);\n return promise;\n }\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n to,\n opts?.fromRouteId,\n opts?.relative\n );\n let { path, submission, error } = normalizeNavigateOptions(\n false,\n normalizedPath,\n opts\n );\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation)\n };\n let userReplace = opts && opts.replace != null ? opts.replace : void 0;\n let historyAction = \"PUSH\" /* Push */;\n if (userReplace === true) {\n historyAction = \"REPLACE\" /* Replace */;\n } else if (userReplace === false) {\n } else if (submission != null && isMutationMethod(submission.formMethod) && submission.formAction === state.location.pathname + state.location.search) {\n historyAction = \"REPLACE\" /* Replace */;\n }\n let preventScrollReset = opts && \"preventScrollReset\" in opts ? opts.preventScrollReset === true : void 0;\n let flushSync = (opts && opts.flushSync) === true;\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n });\n if (blockerKey) {\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey, {\n state: \"proceeding\",\n proceed: void 0,\n reset: void 0,\n location: nextLocation\n });\n navigate(to, opts);\n },\n reset() {\n let blockers = new Map(state.blockers);\n blockers.set(blockerKey, IDLE_BLOCKER);\n updateState({ blockers });\n }\n });\n return;\n }\n await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n enableViewTransition: opts && opts.viewTransition,\n flushSync,\n callSiteDefaultShouldRevalidate: opts && opts.unstable_defaultShouldRevalidate\n });\n }\n function revalidate() {\n if (!pendingRevalidationDfd) {\n pendingRevalidationDfd = createDeferred();\n }\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n let promise = pendingRevalidationDfd.promise;\n if (state.navigation.state === \"submitting\") {\n return promise;\n }\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true\n });\n return promise;\n }\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n {\n overrideNavigation: state.navigation,\n // Proxy through any rending view transition\n enableViewTransition: pendingViewTransitionEnabled === true\n }\n );\n return promise;\n }\n async function startNavigation(historyAction, location, opts) {\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation = (opts && opts.startUninterruptedRevalidation) === true;\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n pendingViewTransitionEnabled = (opts && opts.enableViewTransition) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = opts?.initialHydration && state.matches && state.matches.length > 0 && !initialMatchesIsFOW ? (\n // `matchRoutes()` has already been called if we're in here via `router.initialize()`\n state.matches\n ) : matchRoutes(routesToUse, location, basename);\n let flushSync = (opts && opts.flushSync) === true;\n if (matches && state.initialized && !isRevalidationRequired && isHashChangeOnly(state.location, location) && !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))) {\n completeNavigation(location, { matches }, { flushSync });\n return;\n }\n let fogOfWar = checkFogOfWar(matches, routesToUse, location.pathname);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n if (!matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n completeNavigation(\n location,\n {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n },\n { flushSync }\n );\n return;\n }\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let scopedContext = init.getContext ? await init.getContext() : new RouterContextProvider();\n let pendingActionResult;\n if (opts && opts.pendingError) {\n pendingActionResult = [\n findNearestBoundary(matches).route.id,\n { type: \"error\" /* error */, error: opts.pendingError }\n ];\n } else if (opts && opts.submission && isMutationMethod(opts.submission.formMethod)) {\n let actionResult = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n scopedContext,\n fogOfWar.active,\n opts && opts.initialHydration === true,\n { replace: opts.replace, flushSync }\n );\n if (actionResult.shortCircuited) {\n return;\n }\n if (actionResult.pendingActionResult) {\n let [routeId, result] = actionResult.pendingActionResult;\n if (isErrorResult(result) && isRouteErrorResponse(result.error) && result.error.status === 404) {\n pendingNavigationController = null;\n completeNavigation(location, {\n matches: actionResult.matches,\n loaderData: {},\n errors: {\n [routeId]: result.error\n }\n });\n return;\n }\n }\n matches = actionResult.matches || matches;\n pendingActionResult = actionResult.pendingActionResult;\n loadingNavigation = getLoadingNavigation(location, opts.submission);\n flushSync = false;\n fogOfWar.active = false;\n request = createClientSideRequest(\n init.history,\n request.url,\n request.signal\n );\n }\n let {\n shortCircuited,\n matches: updatedMatches,\n loaderData,\n errors\n } = await handleLoaders(\n request,\n location,\n matches,\n scopedContext,\n fogOfWar.active,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n opts && opts.initialHydration === true,\n flushSync,\n pendingActionResult,\n opts && opts.callSiteDefaultShouldRevalidate\n );\n if (shortCircuited) {\n return;\n }\n pendingNavigationController = null;\n completeNavigation(location, {\n matches: updatedMatches || matches,\n ...getActionDataForCommit(pendingActionResult),\n loaderData,\n errors\n });\n }\n async function handleAction(request, location, submission, matches, scopedContext, isFogOfWar, initialHydration, opts = {}) {\n interruptActiveLoads();\n let navigation = getSubmittingNavigation(location, submission);\n updateState({ navigation }, { flushSync: opts.flushSync === true });\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n if (discoverResult.partialMatches.length === 0) {\n let { matches: matches2, route } = getShortCircuitMatches(dataRoutes);\n return {\n matches: matches2,\n pendingActionResult: [\n route.id,\n {\n type: \"error\" /* error */,\n error: discoverResult.error\n }\n ]\n };\n }\n let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n return {\n matches: discoverResult.partialMatches,\n pendingActionResult: [\n boundaryId,\n {\n type: \"error\" /* error */,\n error: discoverResult.error\n }\n ]\n };\n } else if (!discoverResult.matches) {\n let { notFoundMatches, error, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n pendingActionResult: [\n route.id,\n {\n type: \"error\" /* error */,\n error\n }\n ]\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n let result;\n let actionMatch = getTargetMatch(matches, location);\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: \"error\" /* error */,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id\n })\n };\n } else {\n let dsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n request,\n matches,\n actionMatch,\n initialHydration ? [] : hydrationRouteProperties2,\n scopedContext\n );\n let results = await callDataStrategy(\n request,\n dsMatches,\n scopedContext,\n null\n );\n result = results[actionMatch.route.id];\n if (!result) {\n for (let match of matches) {\n if (results[match.route.id]) {\n result = results[match.route.id];\n break;\n }\n }\n }\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n if (isRedirectResult(result)) {\n let replace2;\n if (opts && opts.replace != null) {\n replace2 = opts.replace;\n } else {\n let location2 = normalizeRedirectLocation(\n result.response.headers.get(\"Location\"),\n new URL(request.url),\n basename,\n init.history\n );\n replace2 = location2 === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(request, result, true, {\n submission,\n replace: replace2\n });\n return { shortCircuited: true };\n }\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n if ((opts && opts.replace) !== true) {\n pendingAction = \"PUSH\" /* Push */;\n }\n return {\n matches,\n pendingActionResult: [\n boundaryMatch.route.id,\n result,\n actionMatch.route.id\n ]\n };\n }\n return {\n matches,\n pendingActionResult: [actionMatch.route.id, result]\n };\n }\n async function handleLoaders(request, location, matches, scopedContext, isFogOfWar, overrideNavigation, submission, fetcherSubmission, replace2, initialHydration, flushSync, pendingActionResult, callSiteDefaultShouldRevalidate) {\n let loadingNavigation = overrideNavigation || getLoadingNavigation(location, submission);\n let activeSubmission = submission || fetcherSubmission || getSubmissionFromNavigation(loadingNavigation);\n let shouldUpdateNavigationState = !isUninterruptedRevalidation && !initialHydration;\n if (isFogOfWar) {\n if (shouldUpdateNavigationState) {\n let actionData = getUpdatedActionData(pendingActionResult);\n updateState(\n {\n navigation: loadingNavigation,\n ...actionData !== void 0 ? { actionData } : {}\n },\n {\n flushSync\n }\n );\n }\n let discoverResult = await discoverRoutes(\n matches,\n location.pathname,\n request.signal\n );\n if (discoverResult.type === \"aborted\") {\n return { shortCircuited: true };\n } else if (discoverResult.type === \"error\") {\n if (discoverResult.partialMatches.length === 0) {\n let { matches: matches2, route } = getShortCircuitMatches(dataRoutes);\n return {\n matches: matches2,\n loaderData: {},\n errors: {\n [route.id]: discoverResult.error\n }\n };\n }\n let boundaryId = findNearestBoundary(discoverResult.partialMatches).route.id;\n return {\n matches: discoverResult.partialMatches,\n loaderData: {},\n errors: {\n [boundaryId]: discoverResult.error\n }\n };\n } else if (!discoverResult.matches) {\n let { error, notFoundMatches, route } = handleNavigational404(\n location.pathname\n );\n return {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error\n }\n };\n } else {\n matches = discoverResult.matches;\n }\n }\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { dsMatches, revalidatingFetchers } = getMatchesToLoad(\n request,\n scopedContext,\n mapRouteProperties2,\n manifest,\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n initialHydration ? [] : hydrationRouteProperties2,\n initialHydration === true,\n isRevalidationRequired,\n cancelledFetcherLoads,\n fetchersQueuedForDeletion,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n init.patchRoutesOnNavigation != null,\n pendingActionResult,\n callSiteDefaultShouldRevalidate\n );\n pendingNavigationLoadId = ++incrementingLoadId;\n if (!init.dataStrategy && !dsMatches.some((m) => m.shouldLoad) && !dsMatches.some(\n (m) => m.route.middleware && m.route.middleware.length > 0\n ) && revalidatingFetchers.length === 0) {\n let updatedFetchers2 = markFetchRedirectsDone();\n completeNavigation(\n location,\n {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? { [pendingActionResult[0]]: pendingActionResult[1].error } : null,\n ...getActionDataForCommit(pendingActionResult),\n ...updatedFetchers2 ? { fetchers: new Map(state.fetchers) } : {}\n },\n { flushSync }\n );\n return { shortCircuited: true };\n }\n if (shouldUpdateNavigationState) {\n let updates = {};\n if (!isFogOfWar) {\n updates.navigation = loadingNavigation;\n let actionData = getUpdatedActionData(pendingActionResult);\n if (actionData !== void 0) {\n updates.actionData = actionData;\n }\n }\n if (revalidatingFetchers.length > 0) {\n updates.fetchers = getUpdatedRevalidatingFetchers(revalidatingFetchers);\n }\n updateState(updates, { flushSync });\n }\n revalidatingFetchers.forEach((rf) => {\n abortFetcher(rf.key);\n if (rf.controller) {\n fetchControllers.set(rf.key, rf.controller);\n }\n });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((f) => abortFetcher(f.key));\n if (pendingNavigationController) {\n pendingNavigationController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n dsMatches,\n revalidatingFetchers,\n request,\n scopedContext\n );\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n if (pendingNavigationController) {\n pendingNavigationController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n }\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n let redirect2 = findRedirect(loaderResults);\n if (redirect2) {\n await startRedirectNavigation(request, redirect2.result, true, {\n replace: replace2\n });\n return { shortCircuited: true };\n }\n redirect2 = findRedirect(fetcherResults);\n if (redirect2) {\n fetchRedirectIds.add(redirect2.key);\n await startRedirectNavigation(request, redirect2.result, true, {\n replace: replace2\n });\n return { shortCircuited: true };\n }\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n pendingActionResult,\n revalidatingFetchers,\n fetcherResults\n );\n if (initialHydration && state.errors) {\n errors = { ...state.errors, ...errors };\n }\n let updatedFetchers = markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n let shouldUpdateFetchers = updatedFetchers || didAbortFetchLoads || revalidatingFetchers.length > 0;\n return {\n matches,\n loaderData,\n errors,\n ...shouldUpdateFetchers ? { fetchers: new Map(state.fetchers) } : {}\n };\n }\n function getUpdatedActionData(pendingActionResult) {\n if (pendingActionResult && !isErrorResult(pendingActionResult[1])) {\n return {\n [pendingActionResult[0]]: pendingActionResult[1].data\n };\n } else if (state.actionData) {\n if (Object.keys(state.actionData).length === 0) {\n return null;\n } else {\n return state.actionData;\n }\n }\n }\n function getUpdatedRevalidatingFetchers(revalidatingFetchers) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher = getLoadingFetcher(\n void 0,\n fetcher ? fetcher.data : void 0\n );\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n return new Map(state.fetchers);\n }\n async function fetch2(key, routeId, href, opts) {\n abortFetcher(key);\n let flushSync = (opts && opts.flushSync) === true;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let normalizedPath = normalizeTo(\n state.location,\n state.matches,\n basename,\n href,\n routeId,\n opts?.relative\n );\n let matches = matchRoutes(routesToUse, normalizedPath, basename);\n let fogOfWar = checkFogOfWar(matches, routesToUse, normalizedPath);\n if (fogOfWar.active && fogOfWar.matches) {\n matches = fogOfWar.matches;\n }\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: normalizedPath }),\n { flushSync }\n );\n return;\n }\n let { path, submission, error } = normalizeNavigateOptions(\n true,\n normalizedPath,\n opts\n );\n if (error) {\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n let scopedContext = init.getContext ? await init.getContext() : new RouterContextProvider();\n let preventScrollReset = (opts && opts.preventScrollReset) === true;\n if (submission && isMutationMethod(submission.formMethod)) {\n await handleFetcherAction(\n key,\n routeId,\n path,\n matches,\n scopedContext,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission,\n opts && opts.unstable_defaultShouldRevalidate\n );\n return;\n }\n fetchLoadMatches.set(key, { routeId, path });\n await handleFetcherLoader(\n key,\n routeId,\n path,\n matches,\n scopedContext,\n fogOfWar.active,\n flushSync,\n preventScrollReset,\n submission\n );\n }\n async function handleFetcherAction(key, routeId, path, requestMatches, scopedContext, isFogOfWar, flushSync, preventScrollReset, submission, callSiteDefaultShouldRevalidate) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(key, getSubmittingFetcher(submission, existingFetcher), {\n flushSync\n });\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n requestMatches,\n new URL(fetchRequest.url).pathname,\n fetchRequest.signal,\n key\n );\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n requestMatches = discoverResult.matches;\n }\n }\n let match = getTargetMatch(requestMatches, path);\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId\n });\n setFetcherError(key, routeId, error, { flushSync });\n return;\n }\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let fetchMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n fetchRequest,\n requestMatches,\n match,\n hydrationRouteProperties2,\n scopedContext\n );\n let actionResults = await callDataStrategy(\n fetchRequest,\n fetchMatches,\n scopedContext,\n key\n );\n let actionResult = actionResults[match.route.id];\n if (!actionResult) {\n for (let match2 of fetchMatches) {\n if (actionResults[match2.route.id]) {\n actionResult = actionResults[match2.route.id];\n break;\n }\n }\n }\n if (fetchRequest.signal.aborted) {\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n if (fetchersQueuedForDeletion.has(key)) {\n if (isRedirectResult(actionResult) || isErrorResult(actionResult)) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n }\n } else {\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n if (pendingNavigationLoadId > originatingLoadId) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n } else {\n fetchRedirectIds.add(key);\n updateFetcherState(key, getLoadingFetcher(submission));\n return startRedirectNavigation(fetchRequest, actionResult, false, {\n fetcherSubmission: submission,\n preventScrollReset\n });\n }\n }\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n }\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = state.navigation.state !== \"idle\" ? matchRoutes(routesToUse, state.navigation.location, basename) : state.matches;\n invariant(matches, \"Didn't find any matches after fetcher action\");\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n let loadFetcher = getLoadingFetcher(submission, actionResult.data);\n state.fetchers.set(key, loadFetcher);\n let { dsMatches, revalidatingFetchers } = getMatchesToLoad(\n revalidationRequest,\n scopedContext,\n mapRouteProperties2,\n manifest,\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n hydrationRouteProperties2,\n false,\n isRevalidationRequired,\n cancelledFetcherLoads,\n fetchersQueuedForDeletion,\n fetchLoadMatches,\n fetchRedirectIds,\n routesToUse,\n basename,\n init.patchRoutesOnNavigation != null,\n [match.route.id, actionResult],\n callSiteDefaultShouldRevalidate\n );\n revalidatingFetchers.filter((rf) => rf.key !== key).forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher2 = state.fetchers.get(staleKey);\n let revalidatingFetcher = getLoadingFetcher(\n void 0,\n existingFetcher2 ? existingFetcher2.data : void 0\n );\n state.fetchers.set(staleKey, revalidatingFetcher);\n abortFetcher(staleKey);\n if (rf.controller) {\n fetchControllers.set(staleKey, rf.controller);\n }\n });\n updateState({ fetchers: new Map(state.fetchers) });\n let abortPendingFetchRevalidations = () => revalidatingFetchers.forEach((rf) => abortFetcher(rf.key));\n abortController.signal.addEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n let { loaderResults, fetcherResults } = await callLoadersAndMaybeResolveData(\n dsMatches,\n revalidatingFetchers,\n revalidationRequest,\n scopedContext\n );\n if (abortController.signal.aborted) {\n return;\n }\n abortController.signal.removeEventListener(\n \"abort\",\n abortPendingFetchRevalidations\n );\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n if (state.fetchers.has(key)) {\n let doneFetcher = getDoneFetcher(actionResult.data);\n state.fetchers.set(key, doneFetcher);\n }\n let redirect2 = findRedirect(loaderResults);\n if (redirect2) {\n return startRedirectNavigation(\n revalidationRequest,\n redirect2.result,\n false,\n { preventScrollReset }\n );\n }\n redirect2 = findRedirect(fetcherResults);\n if (redirect2) {\n fetchRedirectIds.add(redirect2.key);\n return startRedirectNavigation(\n revalidationRequest,\n redirect2.result,\n false,\n { preventScrollReset }\n );\n }\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n loaderResults,\n void 0,\n revalidatingFetchers,\n fetcherResults\n );\n abortStaleFetchLoads(loadId);\n if (state.navigation.state === \"loading\" && loadId > pendingNavigationLoadId) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers)\n });\n } else {\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n fetchers: new Map(state.fetchers)\n });\n isRevalidationRequired = false;\n }\n }\n async function handleFetcherLoader(key, routeId, path, matches, scopedContext, isFogOfWar, flushSync, preventScrollReset, submission) {\n let existingFetcher = state.fetchers.get(key);\n updateFetcherState(\n key,\n getLoadingFetcher(\n submission,\n existingFetcher ? existingFetcher.data : void 0\n ),\n { flushSync }\n );\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n if (isFogOfWar) {\n let discoverResult = await discoverRoutes(\n matches,\n new URL(fetchRequest.url).pathname,\n fetchRequest.signal,\n key\n );\n if (discoverResult.type === \"aborted\") {\n return;\n } else if (discoverResult.type === \"error\") {\n setFetcherError(key, routeId, discoverResult.error, { flushSync });\n return;\n } else if (!discoverResult.matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: path }),\n { flushSync }\n );\n return;\n } else {\n matches = discoverResult.matches;\n }\n }\n let match = getTargetMatch(matches, path);\n fetchControllers.set(key, abortController);\n let originatingLoadId = incrementingLoadId;\n let dsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n fetchRequest,\n matches,\n match,\n hydrationRouteProperties2,\n scopedContext\n );\n let results = await callDataStrategy(\n fetchRequest,\n dsMatches,\n scopedContext,\n key\n );\n let result = results[match.route.id];\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n if (fetchRequest.signal.aborted) {\n return;\n }\n if (fetchersQueuedForDeletion.has(key)) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n }\n if (isRedirectResult(result)) {\n if (pendingNavigationLoadId > originatingLoadId) {\n updateFetcherState(key, getDoneFetcher(void 0));\n return;\n } else {\n fetchRedirectIds.add(key);\n await startRedirectNavigation(fetchRequest, result, false, {\n preventScrollReset\n });\n return;\n }\n }\n if (isErrorResult(result)) {\n setFetcherError(key, routeId, result.error);\n return;\n }\n updateFetcherState(key, getDoneFetcher(result.data));\n }\n async function startRedirectNavigation(request, redirect2, isNavigation, {\n submission,\n fetcherSubmission,\n preventScrollReset,\n replace: replace2\n } = {}) {\n if (!isNavigation) {\n pendingPopstateNavigationDfd?.resolve();\n pendingPopstateNavigationDfd = null;\n }\n if (redirect2.response.headers.has(\"X-Remix-Revalidate\")) {\n isRevalidationRequired = true;\n }\n let location = redirect2.response.headers.get(\"Location\");\n invariant(location, \"Expected a Location header on the redirect Response\");\n location = normalizeRedirectLocation(\n location,\n new URL(request.url),\n basename,\n init.history\n );\n let redirectLocation = createLocation(state.location, location, {\n _isRedirect: true\n });\n if (isBrowser3) {\n let isDocumentReload = false;\n if (redirect2.response.headers.has(\"X-Remix-Reload-Document\")) {\n isDocumentReload = true;\n } else if (isAbsoluteUrl(location)) {\n const url = createBrowserURLImpl(location, true);\n isDocumentReload = // Hard reload if it's an absolute URL to a new origin\n url.origin !== routerWindow.location.origin || // Hard reload if it's an absolute URL that does not match our basename\n stripBasename(url.pathname, basename) == null;\n }\n if (isDocumentReload) {\n if (replace2) {\n routerWindow.location.replace(location);\n } else {\n routerWindow.location.assign(location);\n }\n return;\n }\n }\n pendingNavigationController = null;\n let redirectNavigationType = replace2 === true || redirect2.response.headers.has(\"X-Remix-Replace\") ? \"REPLACE\" /* Replace */ : \"PUSH\" /* Push */;\n let { formMethod, formAction, formEncType } = state.navigation;\n if (!submission && !fetcherSubmission && formMethod && formAction && formEncType) {\n submission = getSubmissionFromNavigation(state.navigation);\n }\n let activeSubmission = submission || fetcherSubmission;\n if (redirectPreserveMethodStatusCodes.has(redirect2.response.status) && activeSubmission && isMutationMethod(activeSubmission.formMethod)) {\n await startNavigation(redirectNavigationType, redirectLocation, {\n submission: {\n ...activeSubmission,\n formAction: location\n },\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n });\n } else {\n let overrideNavigation = getLoadingNavigation(\n redirectLocation,\n submission\n );\n await startNavigation(redirectNavigationType, redirectLocation, {\n overrideNavigation,\n // Send fetcher submissions through for shouldRevalidate\n fetcherSubmission,\n // Preserve these flags across redirects\n preventScrollReset: preventScrollReset || pendingPreventScrollReset,\n enableViewTransition: isNavigation ? pendingViewTransitionEnabled : void 0\n });\n }\n }\n async function callDataStrategy(request, matches, scopedContext, fetcherKey) {\n let results;\n let dataResults = {};\n try {\n results = await callDataStrategyImpl(\n dataStrategyImpl,\n request,\n matches,\n fetcherKey,\n scopedContext,\n false\n );\n } catch (e) {\n matches.filter((m) => m.shouldLoad).forEach((m) => {\n dataResults[m.route.id] = {\n type: \"error\" /* error */,\n error: e\n };\n });\n return dataResults;\n }\n if (request.signal.aborted) {\n return dataResults;\n }\n if (!isMutationMethod(request.method)) {\n for (let match of matches) {\n if (results[match.route.id]?.type === \"error\" /* error */) {\n break;\n }\n if (!results.hasOwnProperty(match.route.id) && !state.loaderData.hasOwnProperty(match.route.id) && (!state.errors || !state.errors.hasOwnProperty(match.route.id)) && match.shouldCallHandler()) {\n results[match.route.id] = {\n type: \"error\" /* error */,\n result: new Error(\n `No result returned from dataStrategy for route ${match.route.id}`\n )\n };\n }\n }\n }\n for (let [routeId, result] of Object.entries(results)) {\n if (isRedirectDataStrategyResult(result)) {\n let response = result.result;\n dataResults[routeId] = {\n type: \"redirect\" /* redirect */,\n response: normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n routeId,\n matches,\n basename\n )\n };\n } else {\n dataResults[routeId] = await convertDataStrategyResultToDataResult(result);\n }\n }\n return dataResults;\n }\n async function callLoadersAndMaybeResolveData(matches, fetchersToLoad, request, scopedContext) {\n let loaderResultsPromise = callDataStrategy(\n request,\n matches,\n scopedContext,\n null\n );\n let fetcherResultsPromise = Promise.all(\n fetchersToLoad.map(async (f) => {\n if (f.matches && f.match && f.request && f.controller) {\n let results = await callDataStrategy(\n f.request,\n f.matches,\n scopedContext,\n f.key\n );\n let result = results[f.match.route.id];\n return { [f.key]: result };\n } else {\n return Promise.resolve({\n [f.key]: {\n type: \"error\" /* error */,\n error: getInternalRouterError(404, {\n pathname: f.path\n })\n }\n });\n }\n })\n );\n let loaderResults = await loaderResultsPromise;\n let fetcherResults = (await fetcherResultsPromise).reduce(\n (acc, r) => Object.assign(acc, r),\n {}\n );\n return {\n loaderResults,\n fetcherResults\n };\n }\n function interruptActiveLoads() {\n isRevalidationRequired = true;\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.add(key);\n }\n abortFetcher(key);\n });\n }\n function updateFetcherState(key, fetcher, opts = {}) {\n state.fetchers.set(key, fetcher);\n updateState(\n { fetchers: new Map(state.fetchers) },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n function setFetcherError(key, routeId, error, opts = {}) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState(\n {\n errors: {\n [boundaryMatch.route.id]: error\n },\n fetchers: new Map(state.fetchers)\n },\n { flushSync: (opts && opts.flushSync) === true }\n );\n }\n function getFetcher(key) {\n activeFetchers.set(key, (activeFetchers.get(key) || 0) + 1);\n if (fetchersQueuedForDeletion.has(key)) {\n fetchersQueuedForDeletion.delete(key);\n }\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n function resetFetcher(key, opts) {\n abortFetcher(key, opts?.reason);\n updateFetcherState(key, getDoneFetcher(null));\n }\n function deleteFetcher(key) {\n let fetcher = state.fetchers.get(key);\n if (fetchControllers.has(key) && !(fetcher && fetcher.state === \"loading\" && fetchReloadIds.has(key))) {\n abortFetcher(key);\n }\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n fetchersQueuedForDeletion.delete(key);\n cancelledFetcherLoads.delete(key);\n state.fetchers.delete(key);\n }\n function queueFetcherForDeletion(key) {\n let count = (activeFetchers.get(key) || 0) - 1;\n if (count <= 0) {\n activeFetchers.delete(key);\n fetchersQueuedForDeletion.add(key);\n } else {\n activeFetchers.set(key, count);\n }\n updateState({ fetchers: new Map(state.fetchers) });\n }\n function abortFetcher(key, reason) {\n let controller = fetchControllers.get(key);\n if (controller) {\n controller.abort(reason);\n fetchControllers.delete(key);\n }\n }\n function markFetchersDone(keys) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher = getDoneFetcher(fetcher.data);\n state.fetchers.set(key, doneFetcher);\n }\n }\n function markFetchRedirectsDone() {\n let doneKeys = [];\n let updatedFetchers = false;\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n updatedFetchers = true;\n }\n }\n markFetchersDone(doneKeys);\n return updatedFetchers;\n }\n function abortStaleFetchLoads(landedId) {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n function getBlocker(key, fn) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n return blocker;\n }\n function deleteBlocker(key) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n function updateBlocker(key, newBlocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n invariant(\n blocker.state === \"unblocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"blocked\" || blocker.state === \"blocked\" && newBlocker.state === \"proceeding\" || blocker.state === \"blocked\" && newBlocker.state === \"unblocked\" || blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\",\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n let blockers = new Map(state.blockers);\n blockers.set(key, newBlocker);\n updateState({ blockers });\n }\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction\n }) {\n if (blockerFunctions.size === 0) {\n return;\n }\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n if (blocker && blocker.state === \"proceeding\") {\n return;\n }\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n function handleNavigational404(pathname) {\n let error = getInternalRouterError(404, { pathname });\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let { matches, route } = getShortCircuitMatches(routesToUse);\n return { notFoundMatches: matches, route, error };\n }\n function enableScrollRestoration(positions, getPosition, getKey) {\n savedScrollPositions2 = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey2 = getKey || null;\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n return () => {\n savedScrollPositions2 = null;\n getScrollPosition = null;\n getScrollRestorationKey2 = null;\n };\n }\n function getScrollKey(location, matches) {\n if (getScrollRestorationKey2) {\n let key = getScrollRestorationKey2(\n location,\n matches.map((m) => convertRouteMatchToUiMatch(m, state.loaderData))\n );\n return key || location.key;\n }\n return location.key;\n }\n function saveScrollPosition(location, matches) {\n if (savedScrollPositions2 && getScrollPosition) {\n let key = getScrollKey(location, matches);\n savedScrollPositions2[key] = getScrollPosition();\n }\n }\n function getSavedScrollPosition(location, matches) {\n if (savedScrollPositions2) {\n let key = getScrollKey(location, matches);\n let y = savedScrollPositions2[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n function checkFogOfWar(matches, routesToUse, pathname) {\n if (init.patchRoutesOnNavigation) {\n if (!matches) {\n let fogMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: fogMatches || [] };\n } else {\n if (Object.keys(matches[0].params).length > 0) {\n let partialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n return { active: true, matches: partialMatches };\n }\n }\n }\n return { active: false, matches: null };\n }\n async function discoverRoutes(matches, pathname, signal, fetcherKey) {\n if (!init.patchRoutesOnNavigation) {\n return { type: \"success\", matches };\n }\n let partialMatches = matches;\n while (true) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let localManifest = manifest;\n try {\n await init.patchRoutesOnNavigation({\n signal,\n path: pathname,\n matches: partialMatches,\n fetcherKey,\n patch: (routeId, children) => {\n if (signal.aborted) return;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n localManifest,\n mapRouteProperties2,\n false\n );\n }\n });\n } catch (e) {\n return { type: \"error\", error: e, partialMatches };\n } finally {\n if (isNonHMR && !signal.aborted) {\n dataRoutes = [...dataRoutes];\n }\n }\n if (signal.aborted) {\n return { type: \"aborted\" };\n }\n let newMatches = matchRoutes(routesToUse, pathname, basename);\n let newPartialMatches = null;\n if (newMatches) {\n if (Object.keys(newMatches[0].params).length === 0) {\n return { type: \"success\", matches: newMatches };\n } else {\n newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n let matchedDeeper = newPartialMatches && partialMatches.length < newPartialMatches.length && compareMatches(\n partialMatches,\n newPartialMatches.slice(0, partialMatches.length)\n );\n if (!matchedDeeper) {\n return { type: \"success\", matches: newMatches };\n }\n }\n }\n if (!newPartialMatches) {\n newPartialMatches = matchRoutesImpl(\n routesToUse,\n pathname,\n basename,\n true\n );\n }\n if (!newPartialMatches || compareMatches(partialMatches, newPartialMatches)) {\n return { type: \"success\", matches: null };\n }\n partialMatches = newPartialMatches;\n }\n }\n function compareMatches(a, b) {\n return a.length === b.length && a.every((m, i) => m.route.id === b[i].route.id);\n }\n function _internalSetRoutes(newRoutes) {\n manifest = {};\n inFlightDataRoutes = convertRoutesToDataRoutes(\n newRoutes,\n mapRouteProperties2,\n void 0,\n manifest\n );\n }\n function patchRoutes(routeId, children, unstable_allowElementMutations = false) {\n let isNonHMR = inFlightDataRoutes == null;\n let routesToUse = inFlightDataRoutes || dataRoutes;\n patchRoutesImpl(\n routeId,\n children,\n routesToUse,\n manifest,\n mapRouteProperties2,\n unstable_allowElementMutations\n );\n if (isNonHMR) {\n dataRoutes = [...dataRoutes];\n updateState({});\n }\n }\n router = {\n get basename() {\n return basename;\n },\n get future() {\n return future;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return routerWindow;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch: fetch2,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to) => init.history.createHref(to),\n encodeLocation: (to) => init.history.encodeLocation(to),\n getFetcher,\n resetFetcher,\n deleteFetcher: queueFetcherForDeletion,\n dispose,\n getBlocker,\n deleteBlocker,\n patchRoutes,\n _internalFetchControllers: fetchControllers,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n _internalSetStateDoNotUseOrYouWillBreakYourApp(newState) {\n updateState(newState);\n }\n };\n if (init.unstable_instrumentations) {\n router = instrumentClientSideRouter(\n router,\n init.unstable_instrumentations.map((i) => i.router).filter(Boolean)\n );\n }\n return router;\n}\nfunction createStaticHandler(routes, opts) {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n let manifest = {};\n let basename = (opts ? opts.basename : null) || \"/\";\n let _mapRouteProperties = opts?.mapRouteProperties || defaultMapRouteProperties;\n let mapRouteProperties2 = _mapRouteProperties;\n if (opts?.unstable_instrumentations) {\n let instrumentations = opts.unstable_instrumentations;\n mapRouteProperties2 = (route) => {\n return {\n ..._mapRouteProperties(route),\n ...getRouteInstrumentationUpdates(\n instrumentations.map((i) => i.route).filter(Boolean),\n route\n )\n };\n };\n }\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties2,\n void 0,\n manifest\n );\n async function query(request, {\n requestContext,\n filterMatchesToLoad,\n skipLoaderErrorBubbling,\n skipRevalidation,\n dataStrategy,\n generateMiddlewareResponse\n } = {}) {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n requestContext = requestContext != null ? requestContext : new RouterContextProvider();\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } = getShortCircuitMatches(dataRoutes);\n let staticContext = {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {}\n };\n return generateMiddlewareResponse ? generateMiddlewareResponse(() => Promise.resolve(staticContext)) : staticContext;\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } = getShortCircuitMatches(dataRoutes);\n let staticContext = {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {}\n };\n return generateMiddlewareResponse ? generateMiddlewareResponse(() => Promise.resolve(staticContext)) : staticContext;\n }\n if (generateMiddlewareResponse) {\n invariant(\n requestContext instanceof RouterContextProvider,\n \"When using middleware in `staticHandler.query()`, any provided `requestContext` must be an instance of `RouterContextProvider`\"\n );\n try {\n await loadLazyMiddlewareForMatches(\n matches,\n manifest,\n mapRouteProperties2\n );\n let renderedStaticContext;\n let response = await runServerMiddlewarePipeline(\n {\n request,\n unstable_pattern: getRoutePattern(matches),\n matches,\n params: matches[0].params,\n // If we're calling middleware then it must be enabled so we can cast\n // this to the proper type knowing it's not an `AppLoadContext`\n context: requestContext\n },\n async () => {\n let res = await generateMiddlewareResponse(\n async (revalidationRequest, opts2 = {}) => {\n let result2 = await queryImpl(\n revalidationRequest,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null,\n \"filterMatchesToLoad\" in opts2 ? opts2.filterMatchesToLoad ?? null : filterMatchesToLoad ?? null,\n skipRevalidation === true\n );\n if (isResponse(result2)) {\n return result2;\n }\n renderedStaticContext = { location, basename, ...result2 };\n return renderedStaticContext;\n }\n );\n return res;\n },\n async (error, routeId) => {\n if (isRedirectResponse(error)) {\n return error;\n }\n if (isResponse(error)) {\n try {\n error = new ErrorResponseImpl(\n error.status,\n error.statusText,\n await parseResponseBody(error)\n );\n } catch (e) {\n error = e;\n }\n }\n if (isDataWithResponseInit(error)) {\n error = dataWithResponseInitToErrorResponse(error);\n }\n if (renderedStaticContext) {\n if (routeId in renderedStaticContext.loaderData) {\n renderedStaticContext.loaderData[routeId] = void 0;\n }\n let staticContext = getStaticContextFromError(\n dataRoutes,\n renderedStaticContext,\n error,\n skipLoaderErrorBubbling ? routeId : findNearestBoundary(matches, routeId).route.id\n );\n return generateMiddlewareResponse(\n () => Promise.resolve(staticContext)\n );\n } else {\n let boundaryRouteId = skipLoaderErrorBubbling ? routeId : findNearestBoundary(\n matches,\n matches.find(\n (m) => m.route.id === routeId || m.route.loader\n )?.route.id || routeId\n ).route.id;\n let staticContext = {\n matches,\n location,\n basename,\n loaderData: {},\n actionData: null,\n errors: {\n [boundaryRouteId]: error\n },\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n actionHeaders: {},\n loaderHeaders: {}\n };\n return generateMiddlewareResponse(\n () => Promise.resolve(staticContext)\n );\n }\n }\n );\n invariant(isResponse(response), \"Expected a response in query()\");\n return response;\n } catch (e) {\n if (isResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n skipLoaderErrorBubbling === true,\n null,\n filterMatchesToLoad || null,\n skipRevalidation === true\n );\n if (isResponse(result)) {\n return result;\n }\n return { location, basename, ...result };\n }\n async function queryRoute(request, {\n routeId,\n requestContext,\n dataStrategy,\n generateMiddlewareResponse\n } = {}) {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n requestContext = requestContext != null ? requestContext : new RouterContextProvider();\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n let match = routeId ? matches.find((m) => m.route.id === routeId) : getTargetMatch(matches, location);\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId\n });\n } else if (!match) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n if (generateMiddlewareResponse) {\n invariant(\n requestContext instanceof RouterContextProvider,\n \"When using middleware in `staticHandler.queryRoute()`, any provided `requestContext` must be an instance of `RouterContextProvider`\"\n );\n await loadLazyMiddlewareForMatches(matches, manifest, mapRouteProperties2);\n let response = await runServerMiddlewarePipeline(\n {\n request,\n unstable_pattern: getRoutePattern(matches),\n matches,\n params: matches[0].params,\n // If we're calling middleware then it must be enabled so we can cast\n // this to the proper type knowing it's not an `AppLoadContext`\n context: requestContext\n },\n async () => {\n let res = await generateMiddlewareResponse(\n async (innerRequest) => {\n let result2 = await queryImpl(\n innerRequest,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match,\n null,\n false\n );\n let processed = handleQueryResult(result2);\n return isResponse(processed) ? processed : typeof processed === \"string\" ? new Response(processed) : Response.json(processed);\n }\n );\n return res;\n },\n (error) => {\n if (isDataWithResponseInit(error)) {\n return Promise.resolve(dataWithResponseInitToResponse(error));\n }\n if (isResponse(error)) {\n return Promise.resolve(error);\n }\n throw error;\n }\n );\n return response;\n }\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n dataStrategy || null,\n false,\n match,\n null,\n false\n );\n return handleQueryResult(result);\n function handleQueryResult(result2) {\n if (isResponse(result2)) {\n return result2;\n }\n let error = result2.errors ? Object.values(result2.errors)[0] : void 0;\n if (error !== void 0) {\n throw error;\n }\n if (result2.actionData) {\n return Object.values(result2.actionData)[0];\n }\n if (result2.loaderData) {\n return Object.values(result2.loaderData)[0];\n }\n return void 0;\n }\n }\n async function queryImpl(request, location, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, filterMatchesToLoad, skipRevalidation) {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n try {\n if (isMutationMethod(request.method)) {\n let result2 = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch != null,\n filterMatchesToLoad,\n skipRevalidation\n );\n return result2;\n }\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n routeMatch,\n filterMatchesToLoad\n );\n return isResponse(result) ? result : {\n ...result,\n actionData: null,\n actionHeaders: {}\n };\n } catch (e) {\n if (isDataStrategyResult(e) && isResponse(e.result)) {\n if (e.type === \"error\" /* error */) {\n throw e.result;\n }\n return e.result;\n }\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n async function submit(request, matches, actionMatch, requestContext, dataStrategy, skipLoaderErrorBubbling, isRouteRequest, filterMatchesToLoad, skipRevalidation) {\n let result;\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: \"error\" /* error */,\n error\n };\n } else {\n let dsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n request,\n matches,\n actionMatch,\n [],\n requestContext\n );\n let results = await callDataStrategy(\n request,\n dsMatches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n result = results[actionMatch.route.id];\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest);\n }\n }\n if (isRedirectResult(result)) {\n throw new Response(null, {\n status: result.response.status,\n headers: {\n Location: result.response.headers.get(\"Location\")\n }\n });\n }\n if (isRouteRequest) {\n if (isErrorResult(result)) {\n throw result.error;\n }\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {}\n };\n }\n if (skipRevalidation) {\n if (isErrorResult(result)) {\n let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n return {\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n actionData: null,\n actionHeaders: {\n ...result.headers ? { [actionMatch.route.id]: result.headers } : {}\n },\n matches,\n loaderData: {},\n errors: {\n [boundaryMatch.route.id]: result.error\n },\n loaderHeaders: {}\n };\n } else {\n return {\n actionData: {\n [actionMatch.route.id]: result.data\n },\n actionHeaders: result.headers ? { [actionMatch.route.id]: result.headers } : {},\n matches,\n loaderData: {},\n errors: null,\n statusCode: result.statusCode || 200,\n loaderHeaders: {}\n };\n }\n }\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal\n });\n if (isErrorResult(result)) {\n let boundaryMatch = skipLoaderErrorBubbling ? actionMatch : findNearestBoundary(matches, actionMatch.route.id);\n let handlerContext2 = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n filterMatchesToLoad,\n [boundaryMatch.route.id, result]\n );\n return {\n ...handlerContext2,\n statusCode: isRouteErrorResponse(result.error) ? result.error.status : result.statusCode != null ? result.statusCode : 500,\n actionData: null,\n actionHeaders: {\n ...result.headers ? { [actionMatch.route.id]: result.headers } : {}\n }\n };\n }\n let handlerContext = await loadRouteData(\n loaderRequest,\n matches,\n requestContext,\n dataStrategy,\n skipLoaderErrorBubbling,\n null,\n filterMatchesToLoad\n );\n return {\n ...handlerContext,\n actionData: {\n [actionMatch.route.id]: result.data\n },\n // action status codes take precedence over loader status codes\n ...result.statusCode ? { statusCode: result.statusCode } : {},\n actionHeaders: result.headers ? { [actionMatch.route.id]: result.headers } : {}\n };\n }\n async function loadRouteData(request, matches, requestContext, dataStrategy, skipLoaderErrorBubbling, routeMatch, filterMatchesToLoad, pendingActionResult) {\n let isRouteRequest = routeMatch != null;\n if (isRouteRequest && !routeMatch?.route.loader && !routeMatch?.route.lazy) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id\n });\n }\n let dsMatches;\n if (routeMatch) {\n dsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n request,\n matches,\n routeMatch,\n [],\n requestContext\n );\n } else {\n let maxIdx = pendingActionResult && isErrorResult(pendingActionResult[1]) ? (\n // Up to but not including the boundary\n matches.findIndex((m) => m.route.id === pendingActionResult[0]) - 1\n ) : void 0;\n let pattern = getRoutePattern(matches);\n dsMatches = matches.map((match, index) => {\n if (maxIdx != null && index > maxIdx) {\n return getDataStrategyMatch(\n mapRouteProperties2,\n manifest,\n request,\n pattern,\n match,\n [],\n requestContext,\n false\n );\n }\n return getDataStrategyMatch(\n mapRouteProperties2,\n manifest,\n request,\n pattern,\n match,\n [],\n requestContext,\n (match.route.loader || match.route.lazy) != null && (!filterMatchesToLoad || filterMatchesToLoad(match))\n );\n });\n }\n if (!dataStrategy && !dsMatches.some((m) => m.shouldLoad)) {\n return {\n matches,\n loaderData: {},\n errors: pendingActionResult && isErrorResult(pendingActionResult[1]) ? {\n [pendingActionResult[0]]: pendingActionResult[1].error\n } : null,\n statusCode: 200,\n loaderHeaders: {}\n };\n }\n let results = await callDataStrategy(\n request,\n dsMatches,\n isRouteRequest,\n requestContext,\n dataStrategy\n );\n if (request.signal.aborted) {\n throwStaticHandlerAbortedError(request, isRouteRequest);\n }\n let handlerContext = processRouteLoaderData(\n matches,\n results,\n pendingActionResult,\n true,\n skipLoaderErrorBubbling\n );\n return {\n ...handlerContext,\n matches\n };\n }\n async function callDataStrategy(request, matches, isRouteRequest, requestContext, dataStrategy) {\n let results = await callDataStrategyImpl(\n dataStrategy || defaultDataStrategy,\n request,\n matches,\n null,\n requestContext,\n true\n );\n let dataResults = {};\n await Promise.all(\n matches.map(async (match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let result = results[match.route.id];\n if (isRedirectDataStrategyResult(result)) {\n let response = result.result;\n throw normalizeRelativeRoutingRedirectResponse(\n response,\n request,\n match.route.id,\n matches,\n basename\n );\n }\n if (isRouteRequest) {\n if (isResponse(result.result)) {\n throw result;\n } else if (isDataWithResponseInit(result.result)) {\n throw dataWithResponseInitToResponse(result.result);\n }\n }\n dataResults[match.route.id] = await convertDataStrategyResultToDataResult(result);\n })\n );\n return dataResults;\n }\n return {\n dataRoutes,\n query,\n queryRoute\n };\n}\nfunction getStaticContextFromError(routes, handlerContext, error, boundaryId) {\n let errorBoundaryId = boundaryId || handlerContext._deepestRenderedBoundaryId || routes[0].id;\n return {\n ...handlerContext,\n statusCode: isRouteErrorResponse(error) ? error.status : 500,\n errors: {\n [errorBoundaryId]: error\n }\n };\n}\nfunction throwStaticHandlerAbortedError(request, isRouteRequest) {\n if (request.signal.reason !== void 0) {\n throw request.signal.reason;\n }\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(\n `${method}() call aborted without an \\`AbortSignal.reason\\`: ${request.method} ${request.url}`\n );\n}\nfunction isSubmissionNavigation(opts) {\n return opts != null && (\"formData\" in opts && opts.formData != null || \"body\" in opts && opts.body !== void 0);\n}\nfunction normalizeTo(location, matches, basename, to, fromRouteId, relative) {\n let contextualMatches;\n let activeRouteMatch;\n if (fromRouteId) {\n contextualMatches = [];\n for (let match of matches) {\n contextualMatches.push(match);\n if (match.route.id === fromRouteId) {\n activeRouteMatch = match;\n break;\n }\n }\n } else {\n contextualMatches = matches;\n activeRouteMatch = matches[matches.length - 1];\n }\n let path = resolveTo(\n to ? to : \".\",\n getResolveToMatches(contextualMatches),\n stripBasename(location.pathname, basename) || location.pathname,\n relative === \"path\"\n );\n if (to == null) {\n path.search = location.search;\n path.hash = location.hash;\n }\n if ((to == null || to === \"\" || to === \".\") && activeRouteMatch) {\n let nakedIndex = hasNakedIndexQuery(path.search);\n if (activeRouteMatch.route.index && !nakedIndex) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n } else if (!activeRouteMatch.route.index && nakedIndex) {\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n if (basename !== \"/\") {\n path.pathname = prependBasename({ basename, pathname: path.pathname });\n }\n return createPath(path);\n}\nfunction normalizeNavigateOptions(isFetcher, path, opts) {\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod })\n };\n }\n let getInvalidBodyError = () => ({\n path,\n error: getInternalRouterError(400, { type: \"invalid-body\" })\n });\n let rawFormMethod = opts.formMethod || \"get\";\n let formMethod = rawFormMethod.toUpperCase();\n let formAction = stripHashFromPath(path);\n if (opts.body !== void 0) {\n if (opts.formEncType === \"text/plain\") {\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n let text = typeof opts.body === \"string\" ? opts.body : opts.body instanceof FormData || opts.body instanceof URLSearchParams ? (\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#plain-text-form-data\n Array.from(opts.body.entries()).reduce(\n (acc, [name, value]) => `${acc}${name}=${value}\n`,\n \"\"\n )\n ) : String(opts.body);\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: void 0,\n json: void 0,\n text\n }\n };\n } else if (opts.formEncType === \"application/json\") {\n if (!isMutationMethod(formMethod)) {\n return getInvalidBodyError();\n }\n try {\n let json = typeof opts.body === \"string\" ? JSON.parse(opts.body) : opts.body;\n return {\n path,\n submission: {\n formMethod,\n formAction,\n formEncType: opts.formEncType,\n formData: void 0,\n json,\n text: void 0\n }\n };\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n }\n invariant(\n typeof FormData === \"function\",\n \"FormData is not available in this environment\"\n );\n let searchParams;\n let formData;\n if (opts.formData) {\n searchParams = convertFormDataToSearchParams(opts.formData);\n formData = opts.formData;\n } else if (opts.body instanceof FormData) {\n searchParams = convertFormDataToSearchParams(opts.body);\n formData = opts.body;\n } else if (opts.body instanceof URLSearchParams) {\n searchParams = opts.body;\n formData = convertSearchParamsToFormData(searchParams);\n } else if (opts.body == null) {\n searchParams = new URLSearchParams();\n formData = new FormData();\n } else {\n try {\n searchParams = new URLSearchParams(opts.body);\n formData = convertSearchParamsToFormData(searchParams);\n } catch (e) {\n return getInvalidBodyError();\n }\n }\n let submission = {\n formMethod,\n formAction,\n formEncType: opts && opts.formEncType || \"application/x-www-form-urlencoded\",\n formData,\n json: void 0,\n text: void 0\n };\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n let parsedPath = parsePath(path);\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n return { path: createPath(parsedPath), submission };\n}\nfunction getMatchesToLoad(request, scopedContext, mapRouteProperties2, manifest, history, state, matches, submission, location, lazyRoutePropertiesToSkip, initialHydration, isRevalidationRequired, cancelledFetcherLoads, fetchersQueuedForDeletion, fetchLoadMatches, fetchRedirectIds, routesToUse, basename, hasPatchRoutesOnNavigation, pendingActionResult, callSiteDefaultShouldRevalidate) {\n let actionResult = pendingActionResult ? isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : pendingActionResult[1].data : void 0;\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n let maxIdx;\n if (initialHydration && state.errors) {\n let boundaryId = Object.keys(state.errors)[0];\n maxIdx = matches.findIndex((m) => m.route.id === boundaryId);\n } else if (pendingActionResult && isErrorResult(pendingActionResult[1])) {\n let boundaryId = pendingActionResult[0];\n maxIdx = matches.findIndex((m) => m.route.id === boundaryId) - 1;\n }\n let actionStatus = pendingActionResult ? pendingActionResult[1].statusCode : void 0;\n let shouldSkipRevalidation = actionStatus && actionStatus >= 400;\n let baseShouldRevalidateArgs = {\n currentUrl,\n currentParams: state.matches[0]?.params || {},\n nextUrl,\n nextParams: matches[0].params,\n ...submission,\n actionResult,\n actionStatus\n };\n let pattern = getRoutePattern(matches);\n let dsMatches = matches.map((match, index) => {\n let { route } = match;\n let forceShouldLoad = null;\n if (maxIdx != null && index > maxIdx) {\n forceShouldLoad = false;\n } else if (route.lazy) {\n forceShouldLoad = true;\n } else if (!routeHasLoaderOrMiddleware(route)) {\n forceShouldLoad = false;\n } else if (initialHydration) {\n forceShouldLoad = shouldLoadRouteOnHydration(\n route,\n state.loaderData,\n state.errors\n );\n } else if (isNewLoader(state.loaderData, state.matches[index], match)) {\n forceShouldLoad = true;\n }\n if (forceShouldLoad !== null) {\n return getDataStrategyMatch(\n mapRouteProperties2,\n manifest,\n request,\n pattern,\n match,\n lazyRoutePropertiesToSkip,\n scopedContext,\n forceShouldLoad\n );\n }\n let defaultShouldRevalidate = false;\n if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n defaultShouldRevalidate = callSiteDefaultShouldRevalidate;\n } else if (shouldSkipRevalidation) {\n defaultShouldRevalidate = false;\n } else if (isRevalidationRequired) {\n defaultShouldRevalidate = true;\n } else if (currentUrl.pathname + currentUrl.search === nextUrl.pathname + nextUrl.search) {\n defaultShouldRevalidate = true;\n } else if (currentUrl.search !== nextUrl.search) {\n defaultShouldRevalidate = true;\n } else if (isNewRouteInstance(state.matches[index], match)) {\n defaultShouldRevalidate = true;\n }\n let shouldRevalidateArgs = {\n ...baseShouldRevalidateArgs,\n defaultShouldRevalidate\n };\n let shouldLoad = shouldRevalidateLoader(match, shouldRevalidateArgs);\n return getDataStrategyMatch(\n mapRouteProperties2,\n manifest,\n request,\n pattern,\n match,\n lazyRoutePropertiesToSkip,\n scopedContext,\n shouldLoad,\n shouldRevalidateArgs,\n callSiteDefaultShouldRevalidate\n );\n });\n let revalidatingFetchers = [];\n fetchLoadMatches.forEach((f, key) => {\n if (initialHydration || !matches.some((m) => m.route.id === f.routeId) || fetchersQueuedForDeletion.has(key)) {\n return;\n }\n let fetcher = state.fetchers.get(key);\n let isMidInitialLoad = fetcher && fetcher.state !== \"idle\" && fetcher.data === void 0;\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n if (!fetcherMatches) {\n if (hasPatchRoutesOnNavigation && isMidInitialLoad) {\n return;\n }\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: null,\n match: null,\n request: null,\n controller: null\n });\n return;\n }\n if (fetchRedirectIds.has(key)) {\n return;\n }\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n let fetchController = new AbortController();\n let fetchRequest = createClientSideRequest(\n history,\n f.path,\n fetchController.signal\n );\n let fetcherDsMatches = null;\n if (cancelledFetcherLoads.has(key)) {\n cancelledFetcherLoads.delete(key);\n fetcherDsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n fetchRequest,\n fetcherMatches,\n fetcherMatch,\n lazyRoutePropertiesToSkip,\n scopedContext\n );\n } else if (isMidInitialLoad) {\n if (isRevalidationRequired) {\n fetcherDsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n fetchRequest,\n fetcherMatches,\n fetcherMatch,\n lazyRoutePropertiesToSkip,\n scopedContext\n );\n }\n } else {\n let defaultShouldRevalidate;\n if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n defaultShouldRevalidate = callSiteDefaultShouldRevalidate;\n } else if (shouldSkipRevalidation) {\n defaultShouldRevalidate = false;\n } else {\n defaultShouldRevalidate = isRevalidationRequired;\n }\n let shouldRevalidateArgs = {\n ...baseShouldRevalidateArgs,\n defaultShouldRevalidate\n };\n if (shouldRevalidateLoader(fetcherMatch, shouldRevalidateArgs)) {\n fetcherDsMatches = getTargetedDataStrategyMatches(\n mapRouteProperties2,\n manifest,\n fetchRequest,\n fetcherMatches,\n fetcherMatch,\n lazyRoutePropertiesToSkip,\n scopedContext,\n shouldRevalidateArgs\n );\n }\n }\n if (fetcherDsMatches) {\n revalidatingFetchers.push({\n key,\n routeId: f.routeId,\n path: f.path,\n matches: fetcherDsMatches,\n match: fetcherMatch,\n request: fetchRequest,\n controller: fetchController\n });\n }\n });\n return { dsMatches, revalidatingFetchers };\n}\nfunction routeHasLoaderOrMiddleware(route) {\n return route.loader != null || route.middleware != null && route.middleware.length > 0;\n}\nfunction shouldLoadRouteOnHydration(route, loaderData, errors) {\n if (route.lazy) {\n return true;\n }\n if (!routeHasLoaderOrMiddleware(route)) {\n return false;\n }\n let hasData = loaderData != null && route.id in loaderData;\n let hasError = errors != null && errors[route.id] !== void 0;\n if (!hasData && hasError) {\n return false;\n }\n if (typeof route.loader === \"function\" && route.loader.hydrate === true) {\n return true;\n }\n return !hasData && !hasError;\n}\nfunction isNewLoader(currentLoaderData, currentMatch, match) {\n let isNew = (\n // [a] -> [a, b]\n !currentMatch || // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id\n );\n let isMissingData = !currentLoaderData.hasOwnProperty(match.route.id);\n return isNew || isMissingData;\n}\nfunction isNewRouteInstance(currentMatch, match) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname || // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentPath != null && currentPath.endsWith(\"*\") && currentMatch.params[\"*\"] !== match.params[\"*\"]\n );\n}\nfunction shouldRevalidateLoader(loaderMatch, arg) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return arg.defaultShouldRevalidate;\n}\nfunction patchRoutesImpl(routeId, children, routesToUse, manifest, mapRouteProperties2, allowElementMutations) {\n let childrenToPatch;\n if (routeId) {\n let route = manifest[routeId];\n invariant(\n route,\n `No route found to patch children into: routeId = ${routeId}`\n );\n if (!route.children) {\n route.children = [];\n }\n childrenToPatch = route.children;\n } else {\n childrenToPatch = routesToUse;\n }\n let uniqueChildren = [];\n let existingChildren = [];\n children.forEach((newRoute) => {\n let existingRoute = childrenToPatch.find(\n (existingRoute2) => isSameRoute(newRoute, existingRoute2)\n );\n if (existingRoute) {\n existingChildren.push({ existingRoute, newRoute });\n } else {\n uniqueChildren.push(newRoute);\n }\n });\n if (uniqueChildren.length > 0) {\n let newRoutes = convertRoutesToDataRoutes(\n uniqueChildren,\n mapRouteProperties2,\n [routeId || \"_\", \"patch\", String(childrenToPatch?.length || \"0\")],\n manifest\n );\n childrenToPatch.push(...newRoutes);\n }\n if (allowElementMutations && existingChildren.length > 0) {\n for (let i = 0; i < existingChildren.length; i++) {\n let { existingRoute, newRoute } = existingChildren[i];\n let existingRouteTyped = existingRoute;\n let [newRouteTyped] = convertRoutesToDataRoutes(\n [newRoute],\n mapRouteProperties2,\n [],\n // Doesn't matter for mutated routes since they already have an id\n {},\n // Don't touch the manifest here since we're updating in place\n true\n );\n Object.assign(existingRouteTyped, {\n element: newRouteTyped.element ? newRouteTyped.element : existingRouteTyped.element,\n errorElement: newRouteTyped.errorElement ? newRouteTyped.errorElement : existingRouteTyped.errorElement,\n hydrateFallbackElement: newRouteTyped.hydrateFallbackElement ? newRouteTyped.hydrateFallbackElement : existingRouteTyped.hydrateFallbackElement\n });\n }\n }\n}\nfunction isSameRoute(newRoute, existingRoute) {\n if (\"id\" in newRoute && \"id\" in existingRoute && newRoute.id === existingRoute.id) {\n return true;\n }\n if (!(newRoute.index === existingRoute.index && newRoute.path === existingRoute.path && newRoute.caseSensitive === existingRoute.caseSensitive)) {\n return false;\n }\n if ((!newRoute.children || newRoute.children.length === 0) && (!existingRoute.children || existingRoute.children.length === 0)) {\n return true;\n }\n return newRoute.children.every(\n (aChild, i) => existingRoute.children?.some((bChild) => isSameRoute(aChild, bChild))\n );\n}\nvar lazyRoutePropertyCache = /* @__PURE__ */ new WeakMap();\nvar loadLazyRouteProperty = ({\n key,\n route,\n manifest,\n mapRouteProperties: mapRouteProperties2\n}) => {\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n if (!routeToUpdate.lazy || typeof routeToUpdate.lazy !== \"object\") {\n return;\n }\n let lazyFn = routeToUpdate.lazy[key];\n if (!lazyFn) {\n return;\n }\n let cache = lazyRoutePropertyCache.get(routeToUpdate);\n if (!cache) {\n cache = {};\n lazyRoutePropertyCache.set(routeToUpdate, cache);\n }\n let cachedPromise = cache[key];\n if (cachedPromise) {\n return cachedPromise;\n }\n let propertyPromise = (async () => {\n let isUnsupported = isUnsupportedLazyRouteObjectKey(key);\n let staticRouteValue = routeToUpdate[key];\n let isStaticallyDefined = staticRouteValue !== void 0 && key !== \"hasErrorBoundary\";\n if (isUnsupported) {\n warning(\n !isUnsupported,\n \"Route property \" + key + \" is not a supported lazy route property. This property will be ignored.\"\n );\n cache[key] = Promise.resolve();\n } else if (isStaticallyDefined) {\n warning(\n false,\n `Route \"${routeToUpdate.id}\" has a static property \"${key}\" defined. The lazy property will be ignored.`\n );\n } else {\n let value = await lazyFn();\n if (value != null) {\n Object.assign(routeToUpdate, { [key]: value });\n Object.assign(routeToUpdate, mapRouteProperties2(routeToUpdate));\n }\n }\n if (typeof routeToUpdate.lazy === \"object\") {\n routeToUpdate.lazy[key] = void 0;\n if (Object.values(routeToUpdate.lazy).every((value) => value === void 0)) {\n routeToUpdate.lazy = void 0;\n }\n }\n })();\n cache[key] = propertyPromise;\n return propertyPromise;\n};\nvar lazyRouteFunctionCache = /* @__PURE__ */ new WeakMap();\nfunction loadLazyRoute(route, type, manifest, mapRouteProperties2, lazyRoutePropertiesToSkip) {\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n if (!route.lazy) {\n return {\n lazyRoutePromise: void 0,\n lazyHandlerPromise: void 0\n };\n }\n if (typeof route.lazy === \"function\") {\n let cachedPromise = lazyRouteFunctionCache.get(routeToUpdate);\n if (cachedPromise) {\n return {\n lazyRoutePromise: cachedPromise,\n lazyHandlerPromise: cachedPromise\n };\n }\n let lazyRoutePromise2 = (async () => {\n invariant(\n typeof route.lazy === \"function\",\n \"No lazy route function found\"\n );\n let lazyRoute = await route.lazy();\n let routeUpdates = {};\n for (let lazyRouteProperty in lazyRoute) {\n let lazyValue = lazyRoute[lazyRouteProperty];\n if (lazyValue === void 0) {\n continue;\n }\n let isUnsupported = isUnsupportedLazyRouteFunctionKey(lazyRouteProperty);\n let staticRouteValue = routeToUpdate[lazyRouteProperty];\n let isStaticallyDefined = staticRouteValue !== void 0 && // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n if (isUnsupported) {\n warning(\n !isUnsupported,\n \"Route property \" + lazyRouteProperty + \" is not a supported property to be returned from a lazy route function. This property will be ignored.\"\n );\n } else if (isStaticallyDefined) {\n warning(\n !isStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" defined but its lazy function is also returning a value for this property. The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n } else {\n routeUpdates[lazyRouteProperty] = lazyValue;\n }\n }\n Object.assign(routeToUpdate, routeUpdates);\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided `mapRouteProperties`\n // function to set the framework-aware properties (`element`/`hasErrorBoundary`)\n // since the logic will differ between frameworks.\n ...mapRouteProperties2(routeToUpdate),\n lazy: void 0\n });\n })();\n lazyRouteFunctionCache.set(routeToUpdate, lazyRoutePromise2);\n lazyRoutePromise2.catch(() => {\n });\n return {\n lazyRoutePromise: lazyRoutePromise2,\n lazyHandlerPromise: lazyRoutePromise2\n };\n }\n let lazyKeys = Object.keys(route.lazy);\n let lazyPropertyPromises = [];\n let lazyHandlerPromise = void 0;\n for (let key of lazyKeys) {\n if (lazyRoutePropertiesToSkip && lazyRoutePropertiesToSkip.includes(key)) {\n continue;\n }\n let promise = loadLazyRouteProperty({\n key,\n route,\n manifest,\n mapRouteProperties: mapRouteProperties2\n });\n if (promise) {\n lazyPropertyPromises.push(promise);\n if (key === type) {\n lazyHandlerPromise = promise;\n }\n }\n }\n let lazyRoutePromise = lazyPropertyPromises.length > 0 ? Promise.all(lazyPropertyPromises).then(() => {\n }) : void 0;\n lazyRoutePromise?.catch(() => {\n });\n lazyHandlerPromise?.catch(() => {\n });\n return {\n lazyRoutePromise,\n lazyHandlerPromise\n };\n}\nfunction isNonNullable(value) {\n return value !== void 0;\n}\nfunction loadLazyMiddlewareForMatches(matches, manifest, mapRouteProperties2) {\n let promises = matches.map(({ route }) => {\n if (typeof route.lazy !== \"object\" || !route.lazy.middleware) {\n return void 0;\n }\n return loadLazyRouteProperty({\n key: \"middleware\",\n route,\n manifest,\n mapRouteProperties: mapRouteProperties2\n });\n }).filter(isNonNullable);\n return promises.length > 0 ? Promise.all(promises) : void 0;\n}\nasync function defaultDataStrategy(args) {\n let matchesToLoad = args.matches.filter((m) => m.shouldLoad);\n let keyedResults = {};\n let results = await Promise.all(matchesToLoad.map((m) => m.resolve()));\n results.forEach((result, i) => {\n keyedResults[matchesToLoad[i].route.id] = result;\n });\n return keyedResults;\n}\nasync function defaultDataStrategyWithMiddleware(args) {\n if (!args.matches.some((m) => m.route.middleware)) {\n return defaultDataStrategy(args);\n }\n return runClientMiddlewarePipeline(args, () => defaultDataStrategy(args));\n}\nfunction runServerMiddlewarePipeline(args, handler, errorHandler) {\n return runMiddlewarePipeline(\n args,\n handler,\n processResult,\n isResponse,\n errorHandler\n );\n function processResult(result) {\n return isDataWithResponseInit(result) ? dataWithResponseInitToResponse(result) : result;\n }\n}\nfunction runClientMiddlewarePipeline(args, handler) {\n return runMiddlewarePipeline(\n args,\n handler,\n (r) => {\n if (isRedirectResponse(r)) {\n throw r;\n }\n return r;\n },\n isDataStrategyResults,\n errorHandler\n );\n function errorHandler(error, routeId, nextResult) {\n if (nextResult) {\n return Promise.resolve(\n Object.assign(nextResult.value, {\n [routeId]: { type: \"error\", result: error }\n })\n );\n } else {\n let { matches } = args;\n let maxBoundaryIdx = Math.min(\n // Throwing route\n Math.max(\n matches.findIndex((m) => m.route.id === routeId),\n 0\n ),\n // or the shallowest route that needs to load data\n Math.max(\n matches.findIndex((m) => m.shouldCallHandler()),\n 0\n )\n );\n let boundaryRouteId = findNearestBoundary(\n matches,\n matches[maxBoundaryIdx].route.id\n ).route.id;\n return Promise.resolve({\n [boundaryRouteId]: { type: \"error\", result: error }\n });\n }\n }\n}\nasync function runMiddlewarePipeline(args, handler, processResult, isResult, errorHandler) {\n let { matches, request, params, context, unstable_pattern } = args;\n let tuples = matches.flatMap(\n (m) => m.route.middleware ? m.route.middleware.map((fn) => [m.route.id, fn]) : []\n );\n let result = await callRouteMiddleware(\n {\n request,\n params,\n context,\n unstable_pattern\n },\n tuples,\n handler,\n processResult,\n isResult,\n errorHandler\n );\n return result;\n}\nasync function callRouteMiddleware(args, middlewares, handler, processResult, isResult, errorHandler, idx = 0) {\n let { request } = args;\n if (request.signal.aborted) {\n throw request.signal.reason ?? new Error(`Request aborted: ${request.method} ${request.url}`);\n }\n let tuple = middlewares[idx];\n if (!tuple) {\n let result = await handler();\n return result;\n }\n let [routeId, middleware] = tuple;\n let nextResult;\n let next = async () => {\n if (nextResult) {\n throw new Error(\"You may only call `next()` once per middleware\");\n }\n try {\n let result = await callRouteMiddleware(\n args,\n middlewares,\n handler,\n processResult,\n isResult,\n errorHandler,\n idx + 1\n );\n nextResult = { value: result };\n return nextResult.value;\n } catch (error) {\n nextResult = { value: await errorHandler(error, routeId, nextResult) };\n return nextResult.value;\n }\n };\n try {\n let value = await middleware(args, next);\n let result = value != null ? processResult(value) : void 0;\n if (isResult(result)) {\n return result;\n } else if (nextResult) {\n return result ?? nextResult.value;\n } else {\n nextResult = { value: await next() };\n return nextResult.value;\n }\n } catch (error) {\n let response = await errorHandler(error, routeId, nextResult);\n return response;\n }\n}\nfunction getDataStrategyMatchLazyPromises(mapRouteProperties2, manifest, request, match, lazyRoutePropertiesToSkip) {\n let lazyMiddlewarePromise = loadLazyRouteProperty({\n key: \"middleware\",\n route: match.route,\n manifest,\n mapRouteProperties: mapRouteProperties2\n });\n let lazyRoutePromises = loadLazyRoute(\n match.route,\n isMutationMethod(request.method) ? \"action\" : \"loader\",\n manifest,\n mapRouteProperties2,\n lazyRoutePropertiesToSkip\n );\n return {\n middleware: lazyMiddlewarePromise,\n route: lazyRoutePromises.lazyRoutePromise,\n handler: lazyRoutePromises.lazyHandlerPromise\n };\n}\nfunction getDataStrategyMatch(mapRouteProperties2, manifest, request, unstable_pattern, match, lazyRoutePropertiesToSkip, scopedContext, shouldLoad, shouldRevalidateArgs = null, callSiteDefaultShouldRevalidate) {\n let isUsingNewApi = false;\n let _lazyPromises = getDataStrategyMatchLazyPromises(\n mapRouteProperties2,\n manifest,\n request,\n match,\n lazyRoutePropertiesToSkip\n );\n return {\n ...match,\n _lazyPromises,\n shouldLoad,\n shouldRevalidateArgs,\n shouldCallHandler(defaultShouldRevalidate) {\n isUsingNewApi = true;\n if (!shouldRevalidateArgs) {\n return shouldLoad;\n }\n if (typeof callSiteDefaultShouldRevalidate === \"boolean\") {\n return shouldRevalidateLoader(match, {\n ...shouldRevalidateArgs,\n defaultShouldRevalidate: callSiteDefaultShouldRevalidate\n });\n }\n if (typeof defaultShouldRevalidate === \"boolean\") {\n return shouldRevalidateLoader(match, {\n ...shouldRevalidateArgs,\n defaultShouldRevalidate\n });\n }\n return shouldRevalidateLoader(match, shouldRevalidateArgs);\n },\n resolve(handlerOverride) {\n let { lazy, loader, middleware } = match.route;\n let callHandler = isUsingNewApi || shouldLoad || handlerOverride && !isMutationMethod(request.method) && (lazy || loader);\n let isMiddlewareOnlyRoute = middleware && middleware.length > 0 && !loader && !lazy;\n if (callHandler && (isMutationMethod(request.method) || !isMiddlewareOnlyRoute)) {\n return callLoaderOrAction({\n request,\n unstable_pattern,\n match,\n lazyHandlerPromise: _lazyPromises?.handler,\n lazyRoutePromise: _lazyPromises?.route,\n handlerOverride,\n scopedContext\n });\n }\n return Promise.resolve({ type: \"data\" /* data */, result: void 0 });\n }\n };\n}\nfunction getTargetedDataStrategyMatches(mapRouteProperties2, manifest, request, matches, targetMatch, lazyRoutePropertiesToSkip, scopedContext, shouldRevalidateArgs = null) {\n return matches.map((match) => {\n if (match.route.id !== targetMatch.route.id) {\n return {\n ...match,\n shouldLoad: false,\n shouldRevalidateArgs,\n shouldCallHandler: () => false,\n _lazyPromises: getDataStrategyMatchLazyPromises(\n mapRouteProperties2,\n manifest,\n request,\n match,\n lazyRoutePropertiesToSkip\n ),\n resolve: () => Promise.resolve({ type: \"data\", result: void 0 })\n };\n }\n return getDataStrategyMatch(\n mapRouteProperties2,\n manifest,\n request,\n getRoutePattern(matches),\n match,\n lazyRoutePropertiesToSkip,\n scopedContext,\n true,\n shouldRevalidateArgs\n );\n });\n}\nasync function callDataStrategyImpl(dataStrategyImpl, request, matches, fetcherKey, scopedContext, isStaticHandler) {\n if (matches.some((m) => m._lazyPromises?.middleware)) {\n await Promise.all(matches.map((m) => m._lazyPromises?.middleware));\n }\n let dataStrategyArgs = {\n request,\n unstable_pattern: getRoutePattern(matches),\n params: matches[0].params,\n context: scopedContext,\n matches\n };\n let runClientMiddleware = isStaticHandler ? () => {\n throw new Error(\n \"You cannot call `runClientMiddleware()` from a static handler `dataStrategy`. Middleware is run outside of `dataStrategy` during SSR in order to bubble up the Response. You can enable middleware via the `respond` API in `query`/`queryRoute`\"\n );\n } : (cb) => {\n let typedDataStrategyArgs = dataStrategyArgs;\n return runClientMiddlewarePipeline(typedDataStrategyArgs, () => {\n return cb({\n ...typedDataStrategyArgs,\n fetcherKey,\n runClientMiddleware: () => {\n throw new Error(\n \"Cannot call `runClientMiddleware()` from within an `runClientMiddleware` handler\"\n );\n }\n });\n });\n };\n let results = await dataStrategyImpl({\n ...dataStrategyArgs,\n fetcherKey,\n runClientMiddleware\n });\n try {\n await Promise.all(\n matches.flatMap((m) => [\n m._lazyPromises?.handler,\n m._lazyPromises?.route\n ])\n );\n } catch (e) {\n }\n return results;\n}\nasync function callLoaderOrAction({\n request,\n unstable_pattern,\n match,\n lazyHandlerPromise,\n lazyRoutePromise,\n handlerOverride,\n scopedContext\n}) {\n let result;\n let onReject;\n let isAction = isMutationMethod(request.method);\n let type = isAction ? \"action\" : \"loader\";\n let runHandler = (handler) => {\n let reject;\n let abortPromise = new Promise((_, r) => reject = r);\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n let actualHandler = (ctx) => {\n if (typeof handler !== \"function\") {\n return Promise.reject(\n new Error(\n `You cannot call the handler for a route which defines a boolean \"${type}\" [routeId: ${match.route.id}]`\n )\n );\n }\n return handler(\n {\n request,\n unstable_pattern,\n params: match.params,\n context: scopedContext\n },\n ...ctx !== void 0 ? [ctx] : []\n );\n };\n let handlerPromise = (async () => {\n try {\n let val = await (handlerOverride ? handlerOverride((ctx) => actualHandler(ctx)) : actualHandler());\n return { type: \"data\", result: val };\n } catch (e) {\n return { type: \"error\", result: e };\n }\n })();\n return Promise.race([handlerPromise, abortPromise]);\n };\n try {\n let handler = isAction ? match.route.action : match.route.loader;\n if (lazyHandlerPromise || lazyRoutePromise) {\n if (handler) {\n let handlerError;\n let [value] = await Promise.all([\n // If the handler throws, don't let it immediately bubble out,\n // since we need to let the lazy() execution finish so we know if this\n // route has a boundary that can handle the error\n runHandler(handler).catch((e) => {\n handlerError = e;\n }),\n // Ensure all lazy route promises are resolved before continuing\n lazyHandlerPromise,\n lazyRoutePromise\n ]);\n if (handlerError !== void 0) {\n throw handlerError;\n }\n result = value;\n } else {\n await lazyHandlerPromise;\n let handler2 = isAction ? match.route.action : match.route.loader;\n if (handler2) {\n [result] = await Promise.all([runHandler(handler2), lazyRoutePromise]);\n } else if (type === \"action\") {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(405, {\n method: request.method,\n pathname,\n routeId: match.route.id\n });\n } else {\n return { type: \"data\" /* data */, result: void 0 };\n }\n }\n } else if (!handler) {\n let url = new URL(request.url);\n let pathname = url.pathname + url.search;\n throw getInternalRouterError(404, {\n pathname\n });\n } else {\n result = await runHandler(handler);\n }\n } catch (e) {\n return { type: \"error\" /* error */, result: e };\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n return result;\n}\nasync function parseResponseBody(response) {\n let contentType = response.headers.get(\"Content-Type\");\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n return response.body == null ? null : response.json();\n }\n return response.text();\n}\nasync function convertDataStrategyResultToDataResult(dataStrategyResult) {\n let { result, type } = dataStrategyResult;\n if (isResponse(result)) {\n let data2;\n try {\n data2 = await parseResponseBody(result);\n } catch (e) {\n return { type: \"error\" /* error */, error: e };\n }\n if (type === \"error\" /* error */) {\n return {\n type: \"error\" /* error */,\n error: new ErrorResponseImpl(result.status, result.statusText, data2),\n statusCode: result.status,\n headers: result.headers\n };\n }\n return {\n type: \"data\" /* data */,\n data: data2,\n statusCode: result.status,\n headers: result.headers\n };\n }\n if (type === \"error\" /* error */) {\n if (isDataWithResponseInit(result)) {\n if (result.data instanceof Error) {\n return {\n type: \"error\" /* error */,\n error: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n };\n }\n return {\n type: \"error\" /* error */,\n error: dataWithResponseInitToErrorResponse(result),\n statusCode: isRouteErrorResponse(result) ? result.status : void 0,\n headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n };\n }\n return {\n type: \"error\" /* error */,\n error: result,\n statusCode: isRouteErrorResponse(result) ? result.status : void 0\n };\n }\n if (isDataWithResponseInit(result)) {\n return {\n type: \"data\" /* data */,\n data: result.data,\n statusCode: result.init?.status,\n headers: result.init?.headers ? new Headers(result.init.headers) : void 0\n };\n }\n return { type: \"data\" /* data */, data: result };\n}\nfunction normalizeRelativeRoutingRedirectResponse(response, request, routeId, matches, basename) {\n let location = response.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n if (!isAbsoluteUrl(location)) {\n let trimmedMatches = matches.slice(\n 0,\n matches.findIndex((m) => m.route.id === routeId) + 1\n );\n location = normalizeTo(\n new URL(request.url),\n trimmedMatches,\n basename,\n location\n );\n response.headers.set(\"Location\", location);\n }\n return response;\n}\nfunction normalizeRedirectLocation(location, currentUrl, basename, historyInstance) {\n let invalidProtocols = [\n \"about:\",\n \"blob:\",\n \"chrome:\",\n \"chrome-untrusted:\",\n \"content:\",\n \"data:\",\n \"devtools:\",\n \"file:\",\n \"filesystem:\",\n // eslint-disable-next-line no-script-url\n \"javascript:\"\n ];\n if (isAbsoluteUrl(location)) {\n let normalizedLocation = location;\n let url = normalizedLocation.startsWith(\"//\") ? new URL(currentUrl.protocol + normalizedLocation) : new URL(normalizedLocation);\n if (invalidProtocols.includes(url.protocol)) {\n throw new Error(\"Invalid redirect location\");\n }\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n return url.pathname + url.search + url.hash;\n }\n }\n try {\n let url = historyInstance.createURL(location);\n if (invalidProtocols.includes(url.protocol)) {\n throw new Error(\"Invalid redirect location\");\n }\n } catch (e) {\n }\n return location;\n}\nfunction createClientSideRequest(history, location, signal, submission) {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init = { signal };\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType } = submission;\n init.method = formMethod.toUpperCase();\n if (formEncType === \"application/json\") {\n init.headers = new Headers({ \"Content-Type\": formEncType });\n init.body = JSON.stringify(submission.json);\n } else if (formEncType === \"text/plain\") {\n init.body = submission.text;\n } else if (formEncType === \"application/x-www-form-urlencoded\" && submission.formData) {\n init.body = convertFormDataToSearchParams(submission.formData);\n } else {\n init.body = submission.formData;\n }\n }\n return new Request(url, init);\n}\nfunction convertFormDataToSearchParams(formData) {\n let searchParams = new URLSearchParams();\n for (let [key, value] of formData.entries()) {\n searchParams.append(key, typeof value === \"string\" ? value : value.name);\n }\n return searchParams;\n}\nfunction convertSearchParamsToFormData(searchParams) {\n let formData = new FormData();\n for (let [key, value] of searchParams.entries()) {\n formData.append(key, value);\n }\n return formData;\n}\nfunction processRouteLoaderData(matches, results, pendingActionResult, isStaticHandler = false, skipLoaderErrorBubbling = false) {\n let loaderData = {};\n let errors = null;\n let statusCode;\n let foundError = false;\n let loaderHeaders = {};\n let pendingError = pendingActionResult && isErrorResult(pendingActionResult[1]) ? pendingActionResult[1].error : void 0;\n matches.forEach((match) => {\n if (!(match.route.id in results)) {\n return;\n }\n let id = match.route.id;\n let result = results[id];\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n let error = result.error;\n if (pendingError !== void 0) {\n error = pendingError;\n pendingError = void 0;\n }\n errors = errors || {};\n if (skipLoaderErrorBubbling) {\n errors[id] = error;\n } else {\n let boundaryMatch = findNearestBoundary(matches, id);\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n }\n if (!isStaticHandler) {\n loaderData[id] = ResetLoaderDataSymbol;\n }\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error) ? result.error.status : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n loaderData[id] = result.data;\n if (result.statusCode && result.statusCode !== 200 && !foundError) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n if (pendingError !== void 0 && pendingActionResult) {\n errors = { [pendingActionResult[0]]: pendingError };\n if (pendingActionResult[2]) {\n loaderData[pendingActionResult[2]] = void 0;\n }\n }\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders\n };\n}\nfunction processLoaderData(state, matches, results, pendingActionResult, revalidatingFetchers, fetcherResults) {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n results,\n pendingActionResult\n );\n revalidatingFetchers.filter((f) => !f.matches || f.matches.some((m) => m.shouldLoad)).forEach((rf) => {\n let { key, match, controller } = rf;\n if (controller && controller.signal.aborted) {\n return;\n }\n let result = fetcherResults[key];\n invariant(result, \"Did not find corresponding fetcher result\");\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else {\n let doneFetcher = getDoneFetcher(result.data);\n state.fetchers.set(key, doneFetcher);\n }\n });\n return { loaderData, errors };\n}\nfunction mergeLoaderData(loaderData, newLoaderData, matches, errors) {\n let mergedLoaderData = Object.entries(newLoaderData).filter(([, v]) => v !== ResetLoaderDataSymbol).reduce((merged, [k, v]) => {\n merged[k] = v;\n return merged;\n }, {});\n for (let match of matches) {\n let id = match.route.id;\n if (!newLoaderData.hasOwnProperty(id) && loaderData.hasOwnProperty(id) && match.route.loader) {\n mergedLoaderData[id] = loaderData[id];\n }\n if (errors && errors.hasOwnProperty(id)) {\n break;\n }\n }\n return mergedLoaderData;\n}\nfunction getActionDataForCommit(pendingActionResult) {\n if (!pendingActionResult) {\n return {};\n }\n return isErrorResult(pendingActionResult[1]) ? {\n // Clear out prior actionData on errors\n actionData: {}\n } : {\n actionData: {\n [pendingActionResult[0]]: pendingActionResult[1].data\n }\n };\n}\nfunction findNearestBoundary(matches, routeId) {\n let eligibleMatches = routeId ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1) : [...matches];\n return eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) || matches[0];\n}\nfunction getShortCircuitMatches(routes) {\n let route = routes.length === 1 ? routes[0] : routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`\n };\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route\n }\n ],\n route\n };\n}\nfunction getInternalRouterError(status, {\n pathname,\n routeId,\n method,\n type,\n message\n} = {}) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage = `You made a ${method} request to \"${pathname}\" but did not provide a \\`loader\\` for route \"${routeId}\", so there is no way to handle the request.`;\n } else if (type === \"invalid-body\") {\n errorMessage = \"Unable to encode submission body\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage = `You made a ${method.toUpperCase()} request to \"${pathname}\" but did not provide an \\`action\\` for route \"${routeId}\", so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n return new ErrorResponseImpl(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\nfunction findRedirect(results) {\n let entries = Object.entries(results);\n for (let i = entries.length - 1; i >= 0; i--) {\n let [key, result] = entries[i];\n if (isRedirectResult(result)) {\n return { key, result };\n }\n }\n}\nfunction stripHashFromPath(path) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\nfunction isHashChangeOnly(a, b) {\n if (a.pathname !== b.pathname || a.search !== b.search) {\n return false;\n }\n if (a.hash === \"\") {\n return b.hash !== \"\";\n } else if (a.hash === b.hash) {\n return true;\n } else if (b.hash !== \"\") {\n return true;\n }\n return false;\n}\nfunction dataWithResponseInitToResponse(data2) {\n return Response.json(data2.data, data2.init ?? void 0);\n}\nfunction dataWithResponseInitToErrorResponse(data2) {\n return new ErrorResponseImpl(\n data2.init?.status ?? 500,\n data2.init?.statusText ?? \"Internal Server Error\",\n data2.data\n );\n}\nfunction isDataStrategyResults(result) {\n return result != null && typeof result === \"object\" && Object.entries(result).every(\n ([key, value]) => typeof key === \"string\" && isDataStrategyResult(value)\n );\n}\nfunction isDataStrategyResult(result) {\n return result != null && typeof result === \"object\" && \"type\" in result && \"result\" in result && (result.type === \"data\" /* data */ || result.type === \"error\" /* error */);\n}\nfunction isRedirectDataStrategyResult(result) {\n return isResponse(result.result) && redirectStatusCodes.has(result.result.status);\n}\nfunction isErrorResult(result) {\n return result.type === \"error\" /* error */;\n}\nfunction isRedirectResult(result) {\n return (result && result.type) === \"redirect\" /* redirect */;\n}\nfunction isDataWithResponseInit(value) {\n return typeof value === \"object\" && value != null && \"type\" in value && \"data\" in value && \"init\" in value && value.type === \"DataWithResponseInit\";\n}\nfunction isResponse(value) {\n return value != null && typeof value.status === \"number\" && typeof value.statusText === \"string\" && typeof value.headers === \"object\" && typeof value.body !== \"undefined\";\n}\nfunction isRedirectStatusCode(statusCode) {\n return redirectStatusCodes.has(statusCode);\n}\nfunction isRedirectResponse(result) {\n return isResponse(result) && isRedirectStatusCode(result.status) && result.headers.has(\"Location\");\n}\nfunction isValidMethod(method) {\n return validRequestMethods.has(method.toUpperCase());\n}\nfunction isMutationMethod(method) {\n return validMutationMethods.has(method.toUpperCase());\n}\nfunction hasNakedIndexQuery(search) {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\nfunction getTargetMatch(matches, location) {\n let search = typeof location === \"string\" ? parsePath(location).search : location.search;\n if (matches[matches.length - 1].route.index && hasNakedIndexQuery(search || \"\")) {\n return matches[matches.length - 1];\n }\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\nfunction getSubmissionFromNavigation(navigation) {\n let { formMethod, formAction, formEncType, text, formData, json } = navigation;\n if (!formMethod || !formAction || !formEncType) {\n return;\n }\n if (text != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: void 0,\n json: void 0,\n text\n };\n } else if (formData != null) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData,\n json: void 0,\n text: void 0\n };\n } else if (json !== void 0) {\n return {\n formMethod,\n formAction,\n formEncType,\n formData: void 0,\n json,\n text: void 0\n };\n }\n}\nfunction getLoadingNavigation(location, submission) {\n if (submission) {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n } else {\n let navigation = {\n state: \"loading\",\n location,\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0\n };\n return navigation;\n }\n}\nfunction getSubmittingNavigation(location, submission) {\n let navigation = {\n state: \"submitting\",\n location,\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text\n };\n return navigation;\n}\nfunction getLoadingFetcher(submission, data2) {\n if (submission) {\n let fetcher = {\n state: \"loading\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: data2\n };\n return fetcher;\n } else {\n let fetcher = {\n state: \"loading\",\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0,\n data: data2\n };\n return fetcher;\n }\n}\nfunction getSubmittingFetcher(submission, existingFetcher) {\n let fetcher = {\n state: \"submitting\",\n formMethod: submission.formMethod,\n formAction: submission.formAction,\n formEncType: submission.formEncType,\n formData: submission.formData,\n json: submission.json,\n text: submission.text,\n data: existingFetcher ? existingFetcher.data : void 0\n };\n return fetcher;\n}\nfunction getDoneFetcher(data2) {\n let fetcher = {\n state: \"idle\",\n formMethod: void 0,\n formAction: void 0,\n formEncType: void 0,\n formData: void 0,\n json: void 0,\n text: void 0,\n data: data2\n };\n return fetcher;\n}\nfunction restoreAppliedTransitions(_window, transitions) {\n try {\n let sessionPositions = _window.sessionStorage.getItem(\n TRANSITIONS_STORAGE_KEY\n );\n if (sessionPositions) {\n let json = JSON.parse(sessionPositions);\n for (let [k, v] of Object.entries(json || {})) {\n if (v && Array.isArray(v)) {\n transitions.set(k, new Set(v || []));\n }\n }\n }\n } catch (e) {\n }\n}\nfunction persistAppliedTransitions(_window, transitions) {\n if (transitions.size > 0) {\n let json = {};\n for (let [k, v] of transitions) {\n json[k] = [...v];\n }\n try {\n _window.sessionStorage.setItem(\n TRANSITIONS_STORAGE_KEY,\n JSON.stringify(json)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save applied view transitions in sessionStorage (${error}).`\n );\n }\n }\n}\nfunction createDeferred() {\n let resolve;\n let reject;\n let promise = new Promise((res, rej) => {\n resolve = async (val) => {\n res(val);\n try {\n await promise;\n } catch (e) {\n }\n };\n reject = async (error) => {\n rej(error);\n try {\n await promise;\n } catch (e) {\n }\n };\n });\n return {\n promise,\n //@ts-ignore\n resolve,\n //@ts-ignore\n reject\n };\n}\n\n// lib/context.ts\nimport * as React from \"react\";\nvar DataRouterContext = React.createContext(null);\nDataRouterContext.displayName = \"DataRouter\";\nvar DataRouterStateContext = React.createContext(null);\nDataRouterStateContext.displayName = \"DataRouterState\";\nvar RSCRouterContext = React.createContext(false);\nfunction useIsRSCRouterContext() {\n return React.useContext(RSCRouterContext);\n}\nvar ViewTransitionContext = React.createContext({\n isTransitioning: false\n});\nViewTransitionContext.displayName = \"ViewTransition\";\nvar FetchersContext = React.createContext(\n /* @__PURE__ */ new Map()\n);\nFetchersContext.displayName = \"Fetchers\";\nvar AwaitContext = React.createContext(null);\nAwaitContext.displayName = \"Await\";\nvar AwaitContextProvider = (props) => React.createElement(AwaitContext.Provider, props);\nvar NavigationContext = React.createContext(\n null\n);\nNavigationContext.displayName = \"Navigation\";\nvar LocationContext = React.createContext(\n null\n);\nLocationContext.displayName = \"Location\";\nvar RouteContext = React.createContext({\n outlet: null,\n matches: [],\n isDataRoute: false\n});\nRouteContext.displayName = \"Route\";\nvar RouteErrorContext = React.createContext(null);\nRouteErrorContext.displayName = \"RouteError\";\nvar ENABLE_DEV_WARNINGS = true;\n\n// lib/hooks.tsx\nimport * as React2 from \"react\";\n\n// lib/errors.ts\nvar ERROR_DIGEST_BASE = \"REACT_ROUTER_ERROR\";\nvar ERROR_DIGEST_REDIRECT = \"REDIRECT\";\nvar ERROR_DIGEST_ROUTE_ERROR_RESPONSE = \"ROUTE_ERROR_RESPONSE\";\nfunction decodeRedirectErrorDigest(digest) {\n if (digest.startsWith(`${ERROR_DIGEST_BASE}:${ERROR_DIGEST_REDIRECT}:{`)) {\n try {\n let parsed = JSON.parse(digest.slice(28));\n if (typeof parsed === \"object\" && parsed && typeof parsed.status === \"number\" && typeof parsed.statusText === \"string\" && typeof parsed.location === \"string\" && typeof parsed.reloadDocument === \"boolean\" && typeof parsed.replace === \"boolean\") {\n return parsed;\n }\n } catch {\n }\n }\n}\nfunction decodeRouteErrorResponseDigest(digest) {\n if (digest.startsWith(\n `${ERROR_DIGEST_BASE}:${ERROR_DIGEST_ROUTE_ERROR_RESPONSE}:{`\n )) {\n try {\n let parsed = JSON.parse(digest.slice(40));\n if (typeof parsed === \"object\" && parsed && typeof parsed.status === \"number\" && typeof parsed.statusText === \"string\") {\n return new ErrorResponseImpl(\n parsed.status,\n parsed.statusText,\n parsed.data\n );\n }\n } catch {\n }\n }\n}\n\n// lib/hooks.tsx\nfunction useHref(to, { relative } = {}) {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a <Router> component.`\n );\n let { basename, navigator } = React2.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n let joinedPathname = pathname;\n if (basename !== \"/\") {\n joinedPathname = pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\nfunction useInRouterContext() {\n return React2.useContext(LocationContext) != null;\n}\nfunction useLocation() {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a <Router> component.`\n );\n return React2.useContext(LocationContext).location;\n}\nfunction useNavigationType() {\n return React2.useContext(LocationContext).navigationType;\n}\nfunction useMatch(pattern) {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a <Router> component.`\n );\n let { pathname } = useLocation();\n return React2.useMemo(\n () => matchPath(pattern, decodePath(pathname)),\n [pathname, pattern]\n );\n}\nvar navigateEffectWarning = `You should call navigate() in a React.useEffect(), not when your component is first rendered.`;\nfunction useIsomorphicLayoutEffect(cb) {\n let isStatic = React2.useContext(NavigationContext).static;\n if (!isStatic) {\n React2.useLayoutEffect(cb);\n }\n}\nfunction useNavigate() {\n let { isDataRoute } = React2.useContext(RouteContext);\n return isDataRoute ? useNavigateStable() : useNavigateUnstable();\n}\nfunction useNavigateUnstable() {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a <Router> component.`\n );\n let dataRouterContext = React2.useContext(DataRouterContext);\n let { basename, navigator } = React2.useContext(NavigationContext);\n let { matches } = React2.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n let activeRef = React2.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React2.useCallback(\n (to, options = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n if (dataRouterContext == null && basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [\n basename,\n navigator,\n routePathnamesJson,\n locationPathname,\n dataRouterContext\n ]\n );\n return navigate;\n}\nvar OutletContext = React2.createContext(null);\nfunction useOutletContext() {\n return React2.useContext(OutletContext);\n}\nfunction useOutlet(context) {\n let outlet = React2.useContext(RouteContext).outlet;\n return React2.useMemo(\n () => outlet && /* @__PURE__ */ React2.createElement(OutletContext.Provider, { value: context }, outlet),\n [outlet, context]\n );\n}\nfunction useParams() {\n let { matches } = React2.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? routeMatch.params : {};\n}\nfunction useResolvedPath(to, { relative } = {}) {\n let { matches } = React2.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let routePathnamesJson = JSON.stringify(getResolveToMatches(matches));\n return React2.useMemo(\n () => resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\nfunction useRoutes(routes, locationArg) {\n return useRoutesImpl(routes, locationArg);\n}\nfunction useRoutesImpl(routes, locationArg, dataRouterState, onError, future) {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a <Router> component.`\n );\n let { navigator } = React2.useContext(NavigationContext);\n let { matches: parentMatches } = React2.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n if (ENABLE_DEV_WARNINGS) {\n let parentPath = parentRoute && parentRoute.path || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\") || parentPath.endsWith(\"*?\"),\n `You rendered descendant <Routes> (or called \\`useRoutes()\\`) at \"${parentPathname}\" (under <Route path=\"${parentPath}\">) but the parent route path has no trailing \"*\". This means if you navigate deeper, the parent won't match anymore and therefore the child routes will never render.\n\nPlease change the parent <Route path=\"${parentPath}\"> to <Route path=\"${parentPath === \"/\" ? \"*\" : `${parentPath}/*`}\">.`\n );\n }\n let locationFromContext = useLocation();\n let location;\n if (locationArg) {\n let parsedLocationArg = typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n invariant(\n parentPathnameBase === \"/\" || parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`<Routes location>\\` or \\`useRoutes(routes, location)\\`, the location pathname must begin with the portion of the URL pathname that was matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n let pathname = location.pathname || \"/\";\n let remainingPathname = pathname;\n if (parentPathnameBase !== \"/\") {\n let parentSegments = parentPathnameBase.replace(/^\\//, \"\").split(\"/\");\n let segments = pathname.replace(/^\\//, \"\").split(\"/\");\n remainingPathname = \"/\" + segments.slice(parentSegments.length).join(\"/\");\n }\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n if (ENABLE_DEV_WARNINGS) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n warning(\n matches == null || matches[matches.length - 1].route.element !== void 0 || matches[matches.length - 1].route.Component !== void 0 || matches[matches.length - 1].route.lazy !== void 0,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" does not have an element or Component. This means it will render an <Outlet /> with a null value by default resulting in an \"empty\" page.`\n );\n }\n let renderedMatches = _renderMatches(\n matches && matches.map(\n (match) => Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes.\n // Pre-encode `?` and `#` ahead of `encodeLocation` because it uses\n // `new URL()` internally and we need to prevent it from treating\n // them as separators\n navigator.encodeLocation ? navigator.encodeLocation(\n match.pathname.replace(/\\?/g, \"%3F\").replace(/#/g, \"%23\")\n ).pathname : match.pathname\n ]),\n pathnameBase: match.pathnameBase === \"/\" ? parentPathnameBase : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n // Pre-encode `?` and `#` ahead of `encodeLocation` because it uses\n // `new URL()` internally and we need to prevent it from treating\n // them as separators\n navigator.encodeLocation ? navigator.encodeLocation(\n match.pathnameBase.replace(/\\?/g, \"%3F\").replace(/#/g, \"%23\")\n ).pathname : match.pathnameBase\n ])\n })\n ),\n parentMatches,\n dataRouterState,\n onError,\n future\n );\n if (locationArg && renderedMatches) {\n return /* @__PURE__ */ React2.createElement(\n LocationContext.Provider,\n {\n value: {\n location: {\n pathname: \"/\",\n search: \"\",\n hash: \"\",\n state: null,\n key: \"default\",\n ...location\n },\n navigationType: \"POP\" /* Pop */\n }\n },\n renderedMatches\n );\n }\n return renderedMatches;\n}\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error) ? `${error.status} ${error.statusText}` : error instanceof Error ? error.message : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n let devInfo = null;\n if (ENABLE_DEV_WARNINGS) {\n console.error(\n \"Error handled by React Router default ErrorBoundary:\",\n error\n );\n devInfo = /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"p\", null, \"\\u{1F4BF} Hey developer \\u{1F44B}\"), /* @__PURE__ */ React2.createElement(\"p\", null, \"You can provide a way better UX than this when your app throws errors by providing your own \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"ErrorBoundary\"), \" or\", \" \", /* @__PURE__ */ React2.createElement(\"code\", { style: codeStyles }, \"errorElement\"), \" prop on your route.\"));\n }\n return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement(\"h2\", null, \"Unexpected Application Error!\"), /* @__PURE__ */ React2.createElement(\"h3\", { style: { fontStyle: \"italic\" } }, message), stack ? /* @__PURE__ */ React2.createElement(\"pre\", { style: preStyles }, stack) : null, devInfo);\n}\nvar defaultErrorElement = /* @__PURE__ */ React2.createElement(DefaultErrorComponent, null);\nvar RenderErrorBoundary = class extends React2.Component {\n constructor(props) {\n super(props);\n this.state = {\n location: props.location,\n revalidation: props.revalidation,\n error: props.error\n };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n static getDerivedStateFromProps(props, state) {\n if (state.location !== props.location || state.revalidation !== \"idle\" && props.revalidation === \"idle\") {\n return {\n error: props.error,\n location: props.location,\n revalidation: props.revalidation\n };\n }\n return {\n error: props.error !== void 0 ? props.error : state.error,\n location: state.location,\n revalidation: props.revalidation || state.revalidation\n };\n }\n componentDidCatch(error, errorInfo) {\n if (this.props.onError) {\n this.props.onError(error, errorInfo);\n } else {\n console.error(\n \"React Router caught the following error during render\",\n error\n );\n }\n }\n render() {\n let error = this.state.error;\n if (this.context && typeof error === \"object\" && error && \"digest\" in error && typeof error.digest === \"string\") {\n const decoded = decodeRouteErrorResponseDigest(error.digest);\n if (decoded) error = decoded;\n }\n let result = error !== void 0 ? /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: this.props.routeContext }, /* @__PURE__ */ React2.createElement(\n RouteErrorContext.Provider,\n {\n value: error,\n children: this.props.component\n }\n )) : this.props.children;\n if (this.context) {\n return /* @__PURE__ */ React2.createElement(RSCErrorHandler, { error }, result);\n }\n return result;\n }\n};\nRenderErrorBoundary.contextType = RSCRouterContext;\nvar errorRedirectHandledMap = /* @__PURE__ */ new WeakMap();\nfunction RSCErrorHandler({\n children,\n error\n}) {\n let { basename } = React2.useContext(NavigationContext);\n if (typeof error === \"object\" && error && \"digest\" in error && typeof error.digest === \"string\") {\n let redirect2 = decodeRedirectErrorDigest(error.digest);\n if (redirect2) {\n let existingRedirect = errorRedirectHandledMap.get(error);\n if (existingRedirect) throw existingRedirect;\n let parsed = parseToInfo(redirect2.location, basename);\n if (isBrowser && !errorRedirectHandledMap.get(error)) {\n if (parsed.isExternal || redirect2.reloadDocument) {\n window.location.href = parsed.absoluteURL || parsed.to;\n } else {\n const redirectPromise = Promise.resolve().then(\n () => window.__reactRouterDataRouter.navigate(parsed.to, {\n replace: redirect2.replace\n })\n );\n errorRedirectHandledMap.set(error, redirectPromise);\n throw redirectPromise;\n }\n }\n return /* @__PURE__ */ React2.createElement(\n \"meta\",\n {\n httpEquiv: \"refresh\",\n content: `0;url=${parsed.absoluteURL || parsed.to}`\n }\n );\n }\n }\n return children;\n}\nfunction RenderedRoute({ routeContext, match, children }) {\n let dataRouterContext = React2.useContext(DataRouterContext);\n if (dataRouterContext && dataRouterContext.static && dataRouterContext.staticContext && (match.route.errorElement || match.route.ErrorBoundary)) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n return /* @__PURE__ */ React2.createElement(RouteContext.Provider, { value: routeContext }, children);\n}\nfunction _renderMatches(matches, parentMatches = [], dataRouterState = null, onErrorHandler = null, future = null) {\n if (matches == null) {\n if (!dataRouterState) {\n return null;\n }\n if (dataRouterState.errors) {\n matches = dataRouterState.matches;\n } else if (parentMatches.length === 0 && !dataRouterState.initialized && dataRouterState.matches.length > 0) {\n matches = dataRouterState.matches;\n } else {\n return null;\n }\n }\n let renderedMatches = matches;\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id] !== void 0\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for errors on route IDs: ${Object.keys(\n errors\n ).join(\",\")}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n let renderFallback = false;\n let fallbackIndex = -1;\n if (dataRouterState) {\n for (let i = 0; i < renderedMatches.length; i++) {\n let match = renderedMatches[i];\n if (match.route.HydrateFallback || match.route.hydrateFallbackElement) {\n fallbackIndex = i;\n }\n if (match.route.id) {\n let { loaderData, errors: errors2 } = dataRouterState;\n let needsToRunLoader = match.route.loader && !loaderData.hasOwnProperty(match.route.id) && (!errors2 || errors2[match.route.id] === void 0);\n if (match.route.lazy || needsToRunLoader) {\n renderFallback = true;\n if (fallbackIndex >= 0) {\n renderedMatches = renderedMatches.slice(0, fallbackIndex + 1);\n } else {\n renderedMatches = [renderedMatches[0]];\n }\n break;\n }\n }\n }\n }\n let onError = dataRouterState && onErrorHandler ? (error, errorInfo) => {\n onErrorHandler(error, {\n location: dataRouterState.location,\n params: dataRouterState.matches?.[0]?.params ?? {},\n unstable_pattern: getRoutePattern(dataRouterState.matches),\n errorInfo\n });\n } : void 0;\n return renderedMatches.reduceRight(\n (outlet, match, index) => {\n let error;\n let shouldRenderHydrateFallback = false;\n let errorElement = null;\n let hydrateFallbackElement = null;\n if (dataRouterState) {\n error = errors && match.route.id ? errors[match.route.id] : void 0;\n errorElement = match.route.errorElement || defaultErrorElement;\n if (renderFallback) {\n if (fallbackIndex < 0 && index === 0) {\n warningOnce(\n \"route-fallback\",\n false,\n \"No `HydrateFallback` element provided to render during initial hydration\"\n );\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = null;\n } else if (fallbackIndex === index) {\n shouldRenderHydrateFallback = true;\n hydrateFallbackElement = match.route.hydrateFallbackElement || null;\n }\n }\n }\n let matches2 = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children;\n if (error) {\n children = errorElement;\n } else if (shouldRenderHydrateFallback) {\n children = hydrateFallbackElement;\n } else if (match.route.Component) {\n children = /* @__PURE__ */ React2.createElement(match.route.Component, null);\n } else if (match.route.element) {\n children = match.route.element;\n } else {\n children = outlet;\n }\n return /* @__PURE__ */ React2.createElement(\n RenderedRoute,\n {\n match,\n routeContext: {\n outlet,\n matches: matches2,\n isDataRoute: dataRouterState != null\n },\n children\n }\n );\n };\n return dataRouterState && (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? /* @__PURE__ */ React2.createElement(\n RenderErrorBoundary,\n {\n location: dataRouterState.location,\n revalidation: dataRouterState.revalidation,\n component: errorElement,\n error,\n children: getChildren(),\n routeContext: { outlet: null, matches: matches2, isDataRoute: true },\n onError\n }\n ) : getChildren();\n },\n null\n );\n}\nfunction getDataRouterConsoleError(hookName) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext(hookName) {\n let ctx = React2.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\nfunction useDataRouterState(hookName) {\n let state = React2.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\nfunction useRouteContext(hookName) {\n let route = React2.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\nfunction useCurrentRouteId(hookName) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\nfunction useRouteId() {\n return useCurrentRouteId(\"useRouteId\" /* UseRouteId */);\n}\nfunction useNavigation() {\n let state = useDataRouterState(\"useNavigation\" /* UseNavigation */);\n return state.navigation;\n}\nfunction useRevalidator() {\n let dataRouterContext = useDataRouterContext(\"useRevalidator\" /* UseRevalidator */);\n let state = useDataRouterState(\"useRevalidator\" /* UseRevalidator */);\n let revalidate = React2.useCallback(async () => {\n await dataRouterContext.router.revalidate();\n }, [dataRouterContext.router]);\n return React2.useMemo(\n () => ({ revalidate, state: state.revalidation }),\n [revalidate, state.revalidation]\n );\n}\nfunction useMatches() {\n let { matches, loaderData } = useDataRouterState(\n \"useMatches\" /* UseMatches */\n );\n return React2.useMemo(\n () => matches.map((m) => convertRouteMatchToUiMatch(m, loaderData)),\n [matches, loaderData]\n );\n}\nfunction useLoaderData() {\n let state = useDataRouterState(\"useLoaderData\" /* UseLoaderData */);\n let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n return state.loaderData[routeId];\n}\nfunction useRouteLoaderData(routeId) {\n let state = useDataRouterState(\"useRouteLoaderData\" /* UseRouteLoaderData */);\n return state.loaderData[routeId];\n}\nfunction useActionData() {\n let state = useDataRouterState(\"useActionData\" /* UseActionData */);\n let routeId = useCurrentRouteId(\"useLoaderData\" /* UseLoaderData */);\n return state.actionData ? state.actionData[routeId] : void 0;\n}\nfunction useRouteError() {\n let error = React2.useContext(RouteErrorContext);\n let state = useDataRouterState(\"useRouteError\" /* UseRouteError */);\n let routeId = useCurrentRouteId(\"useRouteError\" /* UseRouteError */);\n if (error !== void 0) {\n return error;\n }\n return state.errors?.[routeId];\n}\nfunction useAsyncValue() {\n let value = React2.useContext(AwaitContext);\n return value?._data;\n}\nfunction useAsyncError() {\n let value = React2.useContext(AwaitContext);\n return value?._error;\n}\nvar blockerId = 0;\nfunction useBlocker(shouldBlock) {\n let { router, basename } = useDataRouterContext(\"useBlocker\" /* UseBlocker */);\n let state = useDataRouterState(\"useBlocker\" /* UseBlocker */);\n let [blockerKey, setBlockerKey] = React2.useState(\"\");\n let blockerFunction = React2.useCallback(\n (arg) => {\n if (typeof shouldBlock !== \"function\") {\n return !!shouldBlock;\n }\n if (basename === \"/\") {\n return shouldBlock(arg);\n }\n let { currentLocation, nextLocation, historyAction } = arg;\n return shouldBlock({\n currentLocation: {\n ...currentLocation,\n pathname: stripBasename(currentLocation.pathname, basename) || currentLocation.pathname\n },\n nextLocation: {\n ...nextLocation,\n pathname: stripBasename(nextLocation.pathname, basename) || nextLocation.pathname\n },\n historyAction\n });\n },\n [basename, shouldBlock]\n );\n React2.useEffect(() => {\n let key = String(++blockerId);\n setBlockerKey(key);\n return () => router.deleteBlocker(key);\n }, [router]);\n React2.useEffect(() => {\n if (blockerKey !== \"\") {\n router.getBlocker(blockerKey, blockerFunction);\n }\n }, [router, blockerKey, blockerFunction]);\n return blockerKey && state.blockers.has(blockerKey) ? state.blockers.get(blockerKey) : IDLE_BLOCKER;\n}\nfunction useNavigateStable() {\n let { router } = useDataRouterContext(\"useNavigate\" /* UseNavigateStable */);\n let id = useCurrentRouteId(\"useNavigate\" /* UseNavigateStable */);\n let activeRef = React2.useRef(false);\n useIsomorphicLayoutEffect(() => {\n activeRef.current = true;\n });\n let navigate = React2.useCallback(\n async (to, options = {}) => {\n warning(activeRef.current, navigateEffectWarning);\n if (!activeRef.current) return;\n if (typeof to === \"number\") {\n await router.navigate(to);\n } else {\n await router.navigate(to, { fromRouteId: id, ...options });\n }\n },\n [router, id]\n );\n return navigate;\n}\nvar alreadyWarned = {};\nfunction warningOnce(key, cond, message) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\nfunction useRoute(...args) {\n const currentRouteId = useCurrentRouteId(\n \"useRoute\" /* UseRoute */\n );\n const id = args[0] ?? currentRouteId;\n const state = useDataRouterState(\"useRoute\" /* UseRoute */);\n const route = state.matches.find(({ route: route2 }) => route2.id === id);\n if (route === void 0) return void 0;\n return {\n handle: route.route.handle,\n loaderData: state.loaderData[id],\n actionData: state.actionData?.[id]\n };\n}\n\n// lib/components.tsx\nimport * as React3 from \"react\";\n\n// lib/server-runtime/warnings.ts\nvar alreadyWarned2 = {};\nfunction warnOnce(condition, message) {\n if (!condition && !alreadyWarned2[message]) {\n alreadyWarned2[message] = true;\n console.warn(message);\n }\n}\n\n// lib/components.tsx\nvar USE_OPTIMISTIC = \"useOptimistic\";\nvar useOptimisticImpl = React3[USE_OPTIMISTIC];\nvar stableUseOptimisticSetter = () => void 0;\nfunction useOptimisticSafe(val) {\n if (useOptimisticImpl) {\n return useOptimisticImpl(val);\n } else {\n return [val, stableUseOptimisticSetter];\n }\n}\nfunction mapRouteProperties(route) {\n let updates = {\n // Note: this check also occurs in createRoutesFromChildren so update\n // there if you change this -- please and thank you!\n hasErrorBoundary: route.hasErrorBoundary || route.ErrorBoundary != null || route.errorElement != null\n };\n if (route.Component) {\n if (ENABLE_DEV_WARNINGS) {\n if (route.element) {\n warning(\n false,\n \"You should not include both `Component` and `element` on your route - `Component` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n element: React3.createElement(route.Component),\n Component: void 0\n });\n }\n if (route.HydrateFallback) {\n if (ENABLE_DEV_WARNINGS) {\n if (route.hydrateFallbackElement) {\n warning(\n false,\n \"You should not include both `HydrateFallback` and `hydrateFallbackElement` on your route - `HydrateFallback` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n hydrateFallbackElement: React3.createElement(route.HydrateFallback),\n HydrateFallback: void 0\n });\n }\n if (route.ErrorBoundary) {\n if (ENABLE_DEV_WARNINGS) {\n if (route.errorElement) {\n warning(\n false,\n \"You should not include both `ErrorBoundary` and `errorElement` on your route - `ErrorBoundary` will be used.\"\n );\n }\n }\n Object.assign(updates, {\n errorElement: React3.createElement(route.ErrorBoundary),\n ErrorBoundary: void 0\n });\n }\n return updates;\n}\nvar hydrationRouteProperties = [\n \"HydrateFallback\",\n \"hydrateFallbackElement\"\n];\nfunction createMemoryRouter(routes, opts) {\n return createRouter({\n basename: opts?.basename,\n getContext: opts?.getContext,\n future: opts?.future,\n history: createMemoryHistory({\n initialEntries: opts?.initialEntries,\n initialIndex: opts?.initialIndex\n }),\n hydrationData: opts?.hydrationData,\n routes,\n hydrationRouteProperties,\n mapRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n unstable_instrumentations: opts?.unstable_instrumentations\n }).initialize();\n}\nvar Deferred = class {\n constructor() {\n this.status = \"pending\";\n this.promise = new Promise((resolve, reject) => {\n this.resolve = (value) => {\n if (this.status === \"pending\") {\n this.status = \"resolved\";\n resolve(value);\n }\n };\n this.reject = (reason) => {\n if (this.status === \"pending\") {\n this.status = \"rejected\";\n reject(reason);\n }\n };\n });\n }\n};\nfunction RouterProvider({\n router,\n flushSync: reactDomFlushSyncImpl,\n onError,\n unstable_useTransitions\n}) {\n let unstable_rsc = useIsRSCRouterContext();\n unstable_useTransitions = unstable_rsc || unstable_useTransitions;\n let [_state, setStateImpl] = React3.useState(router.state);\n let [state, setOptimisticState] = useOptimisticSafe(_state);\n let [pendingState, setPendingState] = React3.useState();\n let [vtContext, setVtContext] = React3.useState({\n isTransitioning: false\n });\n let [renderDfd, setRenderDfd] = React3.useState();\n let [transition, setTransition] = React3.useState();\n let [interruption, setInterruption] = React3.useState();\n let fetcherData = React3.useRef(/* @__PURE__ */ new Map());\n let setState = React3.useCallback(\n (newState, { deletedFetchers, newErrors, flushSync, viewTransitionOpts }) => {\n if (newErrors && onError) {\n Object.values(newErrors).forEach(\n (error) => onError(error, {\n location: newState.location,\n params: newState.matches[0]?.params ?? {},\n unstable_pattern: getRoutePattern(newState.matches)\n })\n );\n }\n newState.fetchers.forEach((fetcher, key) => {\n if (fetcher.data !== void 0) {\n fetcherData.current.set(key, fetcher.data);\n }\n });\n deletedFetchers.forEach((key) => fetcherData.current.delete(key));\n warnOnce(\n flushSync === false || reactDomFlushSyncImpl != null,\n 'You provided the `flushSync` option to a router update, but you are not using the `<RouterProvider>` from `react-router/dom` so `ReactDOM.flushSync()` is unavailable. Please update your app to `import { RouterProvider } from \"react-router/dom\"` and ensure you have `react-dom` installed as a dependency to use the `flushSync` option.'\n );\n let isViewTransitionAvailable = router.window != null && router.window.document != null && typeof router.window.document.startViewTransition === \"function\";\n warnOnce(\n viewTransitionOpts == null || isViewTransitionAvailable,\n \"You provided the `viewTransition` option to a router update, but you do not appear to be running in a DOM environment as `window.startViewTransition` is not available.\"\n );\n if (!viewTransitionOpts || !isViewTransitionAvailable) {\n if (reactDomFlushSyncImpl && flushSync) {\n reactDomFlushSyncImpl(() => setStateImpl(newState));\n } else if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React3.startTransition(() => {\n if (unstable_useTransitions === true) {\n setOptimisticState((s) => getOptimisticRouterState(s, newState));\n }\n setStateImpl(newState);\n });\n }\n return;\n }\n if (reactDomFlushSyncImpl && flushSync) {\n reactDomFlushSyncImpl(() => {\n if (transition) {\n renderDfd?.resolve();\n transition.skipTransition();\n }\n setVtContext({\n isTransitioning: true,\n flushSync: true,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n });\n let t = router.window.document.startViewTransition(() => {\n reactDomFlushSyncImpl(() => setStateImpl(newState));\n });\n t.finished.finally(() => {\n reactDomFlushSyncImpl(() => {\n setRenderDfd(void 0);\n setTransition(void 0);\n setPendingState(void 0);\n setVtContext({ isTransitioning: false });\n });\n });\n reactDomFlushSyncImpl(() => setTransition(t));\n return;\n }\n if (transition) {\n renderDfd?.resolve();\n transition.skipTransition();\n setInterruption({\n state: newState,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n } else {\n setPendingState(newState);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: viewTransitionOpts.currentLocation,\n nextLocation: viewTransitionOpts.nextLocation\n });\n }\n },\n [\n router.window,\n reactDomFlushSyncImpl,\n transition,\n renderDfd,\n unstable_useTransitions,\n setOptimisticState,\n onError\n ]\n );\n React3.useLayoutEffect(() => router.subscribe(setState), [router, setState]);\n React3.useEffect(() => {\n if (vtContext.isTransitioning && !vtContext.flushSync) {\n setRenderDfd(new Deferred());\n }\n }, [vtContext]);\n React3.useEffect(() => {\n if (renderDfd && pendingState && router.window) {\n let newState = pendingState;\n let renderPromise = renderDfd.promise;\n let transition2 = router.window.document.startViewTransition(async () => {\n if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React3.startTransition(() => {\n if (unstable_useTransitions === true) {\n setOptimisticState((s) => getOptimisticRouterState(s, newState));\n }\n setStateImpl(newState);\n });\n }\n await renderPromise;\n });\n transition2.finished.finally(() => {\n setRenderDfd(void 0);\n setTransition(void 0);\n setPendingState(void 0);\n setVtContext({ isTransitioning: false });\n });\n setTransition(transition2);\n }\n }, [\n pendingState,\n renderDfd,\n router.window,\n unstable_useTransitions,\n setOptimisticState\n ]);\n React3.useEffect(() => {\n if (renderDfd && pendingState && state.location.key === pendingState.location.key) {\n renderDfd.resolve();\n }\n }, [renderDfd, transition, state.location, pendingState]);\n React3.useEffect(() => {\n if (!vtContext.isTransitioning && interruption) {\n setPendingState(interruption.state);\n setVtContext({\n isTransitioning: true,\n flushSync: false,\n currentLocation: interruption.currentLocation,\n nextLocation: interruption.nextLocation\n });\n setInterruption(void 0);\n }\n }, [vtContext.isTransitioning, interruption]);\n let navigator = React3.useMemo(() => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state2, opts) => router.navigate(to, {\n state: state2,\n preventScrollReset: opts?.preventScrollReset\n }),\n replace: (to, state2, opts) => router.navigate(to, {\n replace: true,\n state: state2,\n preventScrollReset: opts?.preventScrollReset\n })\n };\n }, [router]);\n let basename = router.basename || \"/\";\n let dataRouterContext = React3.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n onError\n }),\n [router, navigator, basename, onError]\n );\n return /* @__PURE__ */ React3.createElement(React3.Fragment, null, /* @__PURE__ */ React3.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React3.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React3.createElement(FetchersContext.Provider, { value: fetcherData.current }, /* @__PURE__ */ React3.createElement(ViewTransitionContext.Provider, { value: vtContext }, /* @__PURE__ */ React3.createElement(\n Router,\n {\n basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator,\n unstable_useTransitions\n },\n /* @__PURE__ */ React3.createElement(\n MemoizedDataRoutes,\n {\n routes: router.routes,\n future: router.future,\n state,\n onError\n }\n )\n ))))), null);\n}\nfunction getOptimisticRouterState(currentState, newState) {\n return {\n // Don't surface \"current location specific\" stuff mid-navigation\n // (historyAction, location, matches, loaderData, errors, initialized,\n // restoreScroll, preventScrollReset, blockers, etc.)\n ...currentState,\n // Only surface \"pending/in-flight stuff\"\n // (navigation, revalidation, actionData, fetchers, )\n navigation: newState.navigation.state !== \"idle\" ? newState.navigation : currentState.navigation,\n revalidation: newState.revalidation !== \"idle\" ? newState.revalidation : currentState.revalidation,\n actionData: newState.navigation.state !== \"submitting\" ? newState.actionData : currentState.actionData,\n fetchers: newState.fetchers\n };\n}\nvar MemoizedDataRoutes = React3.memo(DataRoutes);\nfunction DataRoutes({\n routes,\n future,\n state,\n onError\n}) {\n return useRoutesImpl(routes, void 0, state, onError, future);\n}\nfunction MemoryRouter({\n basename,\n children,\n initialEntries,\n initialIndex,\n unstable_useTransitions\n}) {\n let historyRef = React3.useRef();\n if (historyRef.current == null) {\n historyRef.current = createMemoryHistory({\n initialEntries,\n initialIndex,\n v5Compat: true\n });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React3.useState({\n action: history.action,\n location: history.location\n });\n let setState = React3.useCallback(\n (newState) => {\n if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React3.startTransition(() => setStateImpl(newState));\n }\n },\n [unstable_useTransitions]\n );\n React3.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React3.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n unstable_useTransitions\n }\n );\n}\nfunction Navigate({\n to,\n replace: replace2,\n state,\n relative\n}) {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of\n // the router loaded. We can help them understand how to avoid that.\n `<Navigate> may be used only in the context of a <Router> component.`\n );\n let { static: isStatic } = React3.useContext(NavigationContext);\n warning(\n !isStatic,\n `<Navigate> must not be used on the initial render in a <StaticRouter>. This is a no-op, but you should modify your code so the <Navigate> is only ever rendered in response to some user interaction or state change.`\n );\n let { matches } = React3.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n let navigate = useNavigate();\n let path = resolveTo(\n to,\n getResolveToMatches(matches),\n locationPathname,\n relative === \"path\"\n );\n let jsonPath = JSON.stringify(path);\n React3.useEffect(() => {\n navigate(JSON.parse(jsonPath), { replace: replace2, state, relative });\n }, [navigate, jsonPath, relative, replace2, state]);\n return null;\n}\nfunction Outlet(props) {\n return useOutlet(props.context);\n}\nfunction Route(props) {\n invariant(\n false,\n `A <Route> is only ever to be used as the child of <Routes> element, never rendered directly. Please wrap your <Route> in a <Routes>.`\n );\n}\nfunction Router({\n basename: basenameProp = \"/\",\n children = null,\n location: locationProp,\n navigationType = \"POP\" /* Pop */,\n navigator,\n static: staticProp = false,\n unstable_useTransitions\n}) {\n invariant(\n !useInRouterContext(),\n `You cannot render a <Router> inside another <Router>. You should never have more than one in your app.`\n );\n let basename = basenameProp.replace(/^\\/*/, \"/\");\n let navigationContext = React3.useMemo(\n () => ({\n basename,\n navigator,\n static: staticProp,\n unstable_useTransitions,\n future: {}\n }),\n [basename, navigator, staticProp, unstable_useTransitions]\n );\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n state = null,\n key = \"default\"\n } = locationProp;\n let locationContext = React3.useMemo(() => {\n let trailingPathname = stripBasename(pathname, basename);\n if (trailingPathname == null) {\n return null;\n }\n return {\n location: {\n pathname: trailingPathname,\n search,\n hash,\n state,\n key\n },\n navigationType\n };\n }, [basename, pathname, search, hash, state, key, navigationType]);\n warning(\n locationContext != null,\n `<Router basename=\"${basename}\"> is not able to match the URL \"${pathname}${search}${hash}\" because it does not start with the basename, so the <Router> won't render anything.`\n );\n if (locationContext == null) {\n return null;\n }\n return /* @__PURE__ */ React3.createElement(NavigationContext.Provider, { value: navigationContext }, /* @__PURE__ */ React3.createElement(LocationContext.Provider, { children, value: locationContext }));\n}\nfunction Routes({\n children,\n location\n}) {\n return useRoutes(createRoutesFromChildren(children), location);\n}\nfunction Await({\n children,\n errorElement,\n resolve\n}) {\n let dataRouterContext = React3.useContext(DataRouterContext);\n let dataRouterStateContext = React3.useContext(DataRouterStateContext);\n let onError = React3.useCallback(\n (error, errorInfo) => {\n if (dataRouterContext && dataRouterContext.onError && dataRouterStateContext) {\n dataRouterContext.onError(error, {\n location: dataRouterStateContext.location,\n params: dataRouterStateContext.matches[0]?.params || {},\n unstable_pattern: getRoutePattern(dataRouterStateContext.matches),\n errorInfo\n });\n }\n },\n [dataRouterContext, dataRouterStateContext]\n );\n return /* @__PURE__ */ React3.createElement(\n AwaitErrorBoundary,\n {\n resolve,\n errorElement,\n onError\n },\n /* @__PURE__ */ React3.createElement(ResolveAwait, null, children)\n );\n}\nvar AwaitErrorBoundary = class extends React3.Component {\n constructor(props) {\n super(props);\n this.state = { error: null };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n componentDidCatch(error, errorInfo) {\n if (this.props.onError) {\n this.props.onError(error, errorInfo);\n } else {\n console.error(\n \"<Await> caught the following error during render\",\n error,\n errorInfo\n );\n }\n }\n render() {\n let { children, errorElement, resolve } = this.props;\n let promise = null;\n let status = 0 /* pending */;\n if (!(resolve instanceof Promise)) {\n status = 1 /* success */;\n promise = Promise.resolve();\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_data\", { get: () => resolve });\n } else if (this.state.error) {\n status = 2 /* error */;\n let renderError = this.state.error;\n promise = Promise.reject().catch(() => {\n });\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n Object.defineProperty(promise, \"_error\", { get: () => renderError });\n } else if (resolve._tracked) {\n promise = resolve;\n status = \"_error\" in promise ? 2 /* error */ : \"_data\" in promise ? 1 /* success */ : 0 /* pending */;\n } else {\n status = 0 /* pending */;\n Object.defineProperty(resolve, \"_tracked\", { get: () => true });\n promise = resolve.then(\n (data2) => Object.defineProperty(resolve, \"_data\", { get: () => data2 }),\n (error) => {\n this.props.onError?.(error);\n Object.defineProperty(resolve, \"_error\", { get: () => error });\n }\n );\n }\n if (status === 2 /* error */ && !errorElement) {\n throw promise._error;\n }\n if (status === 2 /* error */) {\n return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children: errorElement });\n }\n if (status === 1 /* success */) {\n return /* @__PURE__ */ React3.createElement(AwaitContext.Provider, { value: promise, children });\n }\n throw promise;\n }\n};\nfunction ResolveAwait({\n children\n}) {\n let data2 = useAsyncValue();\n let toRender = typeof children === \"function\" ? children(data2) : children;\n return /* @__PURE__ */ React3.createElement(React3.Fragment, null, toRender);\n}\nfunction createRoutesFromChildren(children, parentPath = []) {\n let routes = [];\n React3.Children.forEach(children, (element, index) => {\n if (!React3.isValidElement(element)) {\n return;\n }\n let treePath = [...parentPath, index];\n if (element.type === React3.Fragment) {\n routes.push.apply(\n routes,\n createRoutesFromChildren(element.props.children, treePath)\n );\n return;\n }\n invariant(\n element.type === Route,\n `[${typeof element.type === \"string\" ? element.type : element.type.name}] is not a <Route> component. All component children of <Routes> must be a <Route> or <React.Fragment>`\n );\n invariant(\n !element.props.index || !element.props.children,\n \"An index route cannot have child routes.\"\n );\n let route = {\n id: element.props.id || treePath.join(\"-\"),\n caseSensitive: element.props.caseSensitive,\n element: element.props.element,\n Component: element.props.Component,\n index: element.props.index,\n path: element.props.path,\n middleware: element.props.middleware,\n loader: element.props.loader,\n action: element.props.action,\n hydrateFallbackElement: element.props.hydrateFallbackElement,\n HydrateFallback: element.props.HydrateFallback,\n errorElement: element.props.errorElement,\n ErrorBoundary: element.props.ErrorBoundary,\n hasErrorBoundary: element.props.hasErrorBoundary === true || element.props.ErrorBoundary != null || element.props.errorElement != null,\n shouldRevalidate: element.props.shouldRevalidate,\n handle: element.props.handle,\n lazy: element.props.lazy\n };\n if (element.props.children) {\n route.children = createRoutesFromChildren(\n element.props.children,\n treePath\n );\n }\n routes.push(route);\n });\n return routes;\n}\nvar createRoutesFromElements = createRoutesFromChildren;\nfunction renderMatches(matches) {\n return _renderMatches(matches);\n}\nfunction useRouteComponentProps() {\n return {\n params: useParams(),\n loaderData: useLoaderData(),\n actionData: useActionData(),\n matches: useMatches()\n };\n}\nfunction WithComponentProps({\n children\n}) {\n const props = useRouteComponentProps();\n return React3.cloneElement(children, props);\n}\nfunction withComponentProps(Component4) {\n return function WithComponentProps2() {\n const props = useRouteComponentProps();\n return React3.createElement(Component4, props);\n };\n}\nfunction useHydrateFallbackProps() {\n return {\n params: useParams(),\n loaderData: useLoaderData(),\n actionData: useActionData()\n };\n}\nfunction WithHydrateFallbackProps({\n children\n}) {\n const props = useHydrateFallbackProps();\n return React3.cloneElement(children, props);\n}\nfunction withHydrateFallbackProps(HydrateFallback) {\n return function WithHydrateFallbackProps2() {\n const props = useHydrateFallbackProps();\n return React3.createElement(HydrateFallback, props);\n };\n}\nfunction useErrorBoundaryProps() {\n return {\n params: useParams(),\n loaderData: useLoaderData(),\n actionData: useActionData(),\n error: useRouteError()\n };\n}\nfunction WithErrorBoundaryProps({\n children\n}) {\n const props = useErrorBoundaryProps();\n return React3.cloneElement(children, props);\n}\nfunction withErrorBoundaryProps(ErrorBoundary) {\n return function WithErrorBoundaryProps2() {\n const props = useErrorBoundaryProps();\n return React3.createElement(ErrorBoundary, props);\n };\n}\n\n// lib/dom/dom.ts\nvar defaultMethod = \"get\";\nvar defaultEncType = \"application/x-www-form-urlencoded\";\nfunction isHtmlElement(object) {\n return typeof HTMLElement !== \"undefined\" && object instanceof HTMLElement;\n}\nfunction isButtonElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"button\";\n}\nfunction isFormElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"form\";\n}\nfunction isInputElement(object) {\n return isHtmlElement(object) && object.tagName.toLowerCase() === \"input\";\n}\nfunction isModifiedEvent(event) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\nfunction shouldProcessLinkClick(event, target) {\n return event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event);\n}\nfunction createSearchParams(init = \"\") {\n return new URLSearchParams(\n typeof init === \"string\" || Array.isArray(init) || init instanceof URLSearchParams ? init : Object.keys(init).reduce((memo2, key) => {\n let value = init[key];\n return memo2.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [])\n );\n}\nfunction getSearchParamsForLocation(locationSearch, defaultSearchParams) {\n let searchParams = createSearchParams(locationSearch);\n if (defaultSearchParams) {\n defaultSearchParams.forEach((_, key) => {\n if (!searchParams.has(key)) {\n defaultSearchParams.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n });\n }\n return searchParams;\n}\nvar _formDataSupportsSubmitter = null;\nfunction isFormDataSubmitterSupported() {\n if (_formDataSupportsSubmitter === null) {\n try {\n new FormData(\n document.createElement(\"form\"),\n // @ts-expect-error if FormData supports the submitter parameter, this will throw\n 0\n );\n _formDataSupportsSubmitter = false;\n } catch (e) {\n _formDataSupportsSubmitter = true;\n }\n }\n return _formDataSupportsSubmitter;\n}\nvar supportedFormEncTypes = /* @__PURE__ */ new Set([\n \"application/x-www-form-urlencoded\",\n \"multipart/form-data\",\n \"text/plain\"\n]);\nfunction getFormEncType(encType) {\n if (encType != null && !supportedFormEncTypes.has(encType)) {\n warning(\n false,\n `\"${encType}\" is not a valid \\`encType\\` for \\`<Form>\\`/\\`<fetcher.Form>\\` and will default to \"${defaultEncType}\"`\n );\n return null;\n }\n return encType;\n}\nfunction getFormSubmissionInfo(target, basename) {\n let method;\n let action;\n let encType;\n let formData;\n let body;\n if (isFormElement(target)) {\n let attr = target.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(target);\n } else if (isButtonElement(target) || isInputElement(target) && (target.type === \"submit\" || target.type === \"image\")) {\n let form = target.form;\n if (form == null) {\n throw new Error(\n `Cannot submit a <button> or <input type=\"submit\"> without a <form>`\n );\n }\n let attr = target.getAttribute(\"formaction\") || form.getAttribute(\"action\");\n action = attr ? stripBasename(attr, basename) : null;\n method = target.getAttribute(\"formmethod\") || form.getAttribute(\"method\") || defaultMethod;\n encType = getFormEncType(target.getAttribute(\"formenctype\")) || getFormEncType(form.getAttribute(\"enctype\")) || defaultEncType;\n formData = new FormData(form, target);\n if (!isFormDataSubmitterSupported()) {\n let { name, type, value } = target;\n if (type === \"image\") {\n let prefix = name ? `${name}.` : \"\";\n formData.append(`${prefix}x`, \"0\");\n formData.append(`${prefix}y`, \"0\");\n } else if (name) {\n formData.append(name, value);\n }\n }\n } else if (isHtmlElement(target)) {\n throw new Error(\n `Cannot submit element that is not <form>, <button>, or <input type=\"submit|image\">`\n );\n } else {\n method = defaultMethod;\n action = null;\n encType = defaultEncType;\n body = target;\n }\n if (formData && encType === \"text/plain\") {\n body = formData;\n formData = void 0;\n }\n return { action, method: method.toLowerCase(), encType, formData, body };\n}\n\n// lib/dom/ssr/single-fetch.tsx\nimport * as React4 from \"react\";\n\n// vendor/turbo-stream-v2/utils.ts\nvar HOLE = -1;\nvar NAN = -2;\nvar NEGATIVE_INFINITY = -3;\nvar NEGATIVE_ZERO = -4;\nvar NULL = -5;\nvar POSITIVE_INFINITY = -6;\nvar UNDEFINED = -7;\nvar TYPE_BIGINT = \"B\";\nvar TYPE_DATE = \"D\";\nvar TYPE_ERROR = \"E\";\nvar TYPE_MAP = \"M\";\nvar TYPE_NULL_OBJECT = \"N\";\nvar TYPE_PROMISE = \"P\";\nvar TYPE_REGEXP = \"R\";\nvar TYPE_SET = \"S\";\nvar TYPE_SYMBOL = \"Y\";\nvar TYPE_URL = \"U\";\nvar TYPE_PREVIOUS_RESOLVED = \"Z\";\nvar Deferred2 = class {\n constructor() {\n this.promise = new Promise((resolve, reject) => {\n this.resolve = resolve;\n this.reject = reject;\n });\n }\n};\nfunction createLineSplittingTransform() {\n const decoder = new TextDecoder();\n let leftover = \"\";\n return new TransformStream({\n transform(chunk, controller) {\n const str = decoder.decode(chunk, { stream: true });\n const parts = (leftover + str).split(\"\\n\");\n leftover = parts.pop() || \"\";\n for (const part of parts) {\n controller.enqueue(part);\n }\n },\n flush(controller) {\n if (leftover) {\n controller.enqueue(leftover);\n }\n }\n });\n}\n\n// vendor/turbo-stream-v2/flatten.ts\nfunction flatten(input) {\n const { indices } = this;\n const existing = indices.get(input);\n if (existing) return [existing];\n if (input === void 0) return UNDEFINED;\n if (input === null) return NULL;\n if (Number.isNaN(input)) return NAN;\n if (input === Number.POSITIVE_INFINITY) return POSITIVE_INFINITY;\n if (input === Number.NEGATIVE_INFINITY) return NEGATIVE_INFINITY;\n if (input === 0 && 1 / input < 0) return NEGATIVE_ZERO;\n const index = this.index++;\n indices.set(input, index);\n stringify.call(this, input, index);\n return index;\n}\nfunction stringify(input, index) {\n const { deferred, plugins, postPlugins } = this;\n const str = this.stringified;\n const stack = [[input, index]];\n while (stack.length > 0) {\n const [input2, index2] = stack.pop();\n const partsForObj = (obj) => Object.keys(obj).map((k) => `\"_${flatten.call(this, k)}\":${flatten.call(this, obj[k])}`).join(\",\");\n let error = null;\n switch (typeof input2) {\n case \"boolean\":\n case \"number\":\n case \"string\":\n str[index2] = JSON.stringify(input2);\n break;\n case \"bigint\":\n str[index2] = `[\"${TYPE_BIGINT}\",\"${input2}\"]`;\n break;\n case \"symbol\": {\n const keyFor = Symbol.keyFor(input2);\n if (!keyFor) {\n error = new Error(\n \"Cannot encode symbol unless created with Symbol.for()\"\n );\n } else {\n str[index2] = `[\"${TYPE_SYMBOL}\",${JSON.stringify(keyFor)}]`;\n }\n break;\n }\n case \"object\": {\n if (!input2) {\n str[index2] = `${NULL}`;\n break;\n }\n const isArray = Array.isArray(input2);\n let pluginHandled = false;\n if (!isArray && plugins) {\n for (const plugin of plugins) {\n const pluginResult = plugin(input2);\n if (Array.isArray(pluginResult)) {\n pluginHandled = true;\n const [pluginIdentifier, ...rest] = pluginResult;\n str[index2] = `[${JSON.stringify(pluginIdentifier)}`;\n if (rest.length > 0) {\n str[index2] += `,${rest.map((v) => flatten.call(this, v)).join(\",\")}`;\n }\n str[index2] += \"]\";\n break;\n }\n }\n }\n if (!pluginHandled) {\n let result = isArray ? \"[\" : \"{\";\n if (isArray) {\n for (let i = 0; i < input2.length; i++)\n result += (i ? \",\" : \"\") + (i in input2 ? flatten.call(this, input2[i]) : HOLE);\n str[index2] = `${result}]`;\n } else if (input2 instanceof Date) {\n const dateTime = input2.getTime();\n str[index2] = `[\"${TYPE_DATE}\",${Number.isNaN(dateTime) ? JSON.stringify(\"invalid\") : dateTime}]`;\n } else if (input2 instanceof URL) {\n str[index2] = `[\"${TYPE_URL}\",${JSON.stringify(input2.href)}]`;\n } else if (input2 instanceof RegExp) {\n str[index2] = `[\"${TYPE_REGEXP}\",${JSON.stringify(\n input2.source\n )},${JSON.stringify(input2.flags)}]`;\n } else if (input2 instanceof Set) {\n if (input2.size > 0) {\n str[index2] = `[\"${TYPE_SET}\",${[...input2].map((val) => flatten.call(this, val)).join(\",\")}]`;\n } else {\n str[index2] = `[\"${TYPE_SET}\"]`;\n }\n } else if (input2 instanceof Map) {\n if (input2.size > 0) {\n str[index2] = `[\"${TYPE_MAP}\",${[...input2].flatMap(([k, v]) => [\n flatten.call(this, k),\n flatten.call(this, v)\n ]).join(\",\")}]`;\n } else {\n str[index2] = `[\"${TYPE_MAP}\"]`;\n }\n } else if (input2 instanceof Promise) {\n str[index2] = `[\"${TYPE_PROMISE}\",${index2}]`;\n deferred[index2] = input2;\n } else if (input2 instanceof Error) {\n str[index2] = `[\"${TYPE_ERROR}\",${JSON.stringify(input2.message)}`;\n if (input2.name !== \"Error\") {\n str[index2] += `,${JSON.stringify(input2.name)}`;\n }\n str[index2] += \"]\";\n } else if (Object.getPrototypeOf(input2) === null) {\n str[index2] = `[\"${TYPE_NULL_OBJECT}\",{${partsForObj(input2)}}]`;\n } else if (isPlainObject2(input2)) {\n str[index2] = `{${partsForObj(input2)}}`;\n } else {\n error = new Error(\"Cannot encode object with prototype\");\n }\n }\n break;\n }\n default: {\n const isArray = Array.isArray(input2);\n let pluginHandled = false;\n if (!isArray && plugins) {\n for (const plugin of plugins) {\n const pluginResult = plugin(input2);\n if (Array.isArray(pluginResult)) {\n pluginHandled = true;\n const [pluginIdentifier, ...rest] = pluginResult;\n str[index2] = `[${JSON.stringify(pluginIdentifier)}`;\n if (rest.length > 0) {\n str[index2] += `,${rest.map((v) => flatten.call(this, v)).join(\",\")}`;\n }\n str[index2] += \"]\";\n break;\n }\n }\n }\n if (!pluginHandled) {\n error = new Error(\"Cannot encode function or unexpected type\");\n }\n }\n }\n if (error) {\n let pluginHandled = false;\n if (postPlugins) {\n for (const plugin of postPlugins) {\n const pluginResult = plugin(input2);\n if (Array.isArray(pluginResult)) {\n pluginHandled = true;\n const [pluginIdentifier, ...rest] = pluginResult;\n str[index2] = `[${JSON.stringify(pluginIdentifier)}`;\n if (rest.length > 0) {\n str[index2] += `,${rest.map((v) => flatten.call(this, v)).join(\",\")}`;\n }\n str[index2] += \"]\";\n break;\n }\n }\n }\n if (!pluginHandled) {\n throw error;\n }\n }\n }\n}\nvar objectProtoNames2 = Object.getOwnPropertyNames(Object.prototype).sort().join(\"\\0\");\nfunction isPlainObject2(thing) {\n const proto = Object.getPrototypeOf(thing);\n return proto === Object.prototype || proto === null || Object.getOwnPropertyNames(proto).sort().join(\"\\0\") === objectProtoNames2;\n}\n\n// vendor/turbo-stream-v2/unflatten.ts\nvar globalObj = typeof window !== \"undefined\" ? window : typeof globalThis !== \"undefined\" ? globalThis : void 0;\nfunction unflatten(parsed) {\n const { hydrated, values } = this;\n if (typeof parsed === \"number\") return hydrate.call(this, parsed);\n if (!Array.isArray(parsed) || !parsed.length) throw new SyntaxError();\n const startIndex = values.length;\n for (const value of parsed) {\n values.push(value);\n }\n hydrated.length = values.length;\n return hydrate.call(this, startIndex);\n}\nfunction hydrate(index) {\n const { hydrated, values, deferred, plugins } = this;\n let result;\n const stack = [\n [\n index,\n (v) => {\n result = v;\n }\n ]\n ];\n let postRun = [];\n while (stack.length > 0) {\n const [index2, set] = stack.pop();\n switch (index2) {\n case UNDEFINED:\n set(void 0);\n continue;\n case NULL:\n set(null);\n continue;\n case NAN:\n set(NaN);\n continue;\n case POSITIVE_INFINITY:\n set(Infinity);\n continue;\n case NEGATIVE_INFINITY:\n set(-Infinity);\n continue;\n case NEGATIVE_ZERO:\n set(-0);\n continue;\n }\n if (hydrated[index2]) {\n set(hydrated[index2]);\n continue;\n }\n const value = values[index2];\n if (!value || typeof value !== \"object\") {\n hydrated[index2] = value;\n set(value);\n continue;\n }\n if (Array.isArray(value)) {\n if (typeof value[0] === \"string\") {\n const [type, b, c] = value;\n switch (type) {\n case TYPE_DATE:\n set(hydrated[index2] = new Date(b));\n continue;\n case TYPE_URL:\n set(hydrated[index2] = new URL(b));\n continue;\n case TYPE_BIGINT:\n set(hydrated[index2] = BigInt(b));\n continue;\n case TYPE_REGEXP:\n set(hydrated[index2] = new RegExp(b, c));\n continue;\n case TYPE_SYMBOL:\n set(hydrated[index2] = Symbol.for(b));\n continue;\n case TYPE_SET:\n const newSet = /* @__PURE__ */ new Set();\n hydrated[index2] = newSet;\n for (let i = value.length - 1; i > 0; i--)\n stack.push([\n value[i],\n (v) => {\n newSet.add(v);\n }\n ]);\n set(newSet);\n continue;\n case TYPE_MAP:\n const map = /* @__PURE__ */ new Map();\n hydrated[index2] = map;\n for (let i = value.length - 2; i > 0; i -= 2) {\n const r = [];\n stack.push([\n value[i + 1],\n (v) => {\n r[1] = v;\n }\n ]);\n stack.push([\n value[i],\n (k) => {\n r[0] = k;\n }\n ]);\n postRun.push(() => {\n map.set(r[0], r[1]);\n });\n }\n set(map);\n continue;\n case TYPE_NULL_OBJECT:\n const obj = /* @__PURE__ */ Object.create(null);\n hydrated[index2] = obj;\n for (const key of Object.keys(b).reverse()) {\n const r = [];\n stack.push([\n b[key],\n (v) => {\n r[1] = v;\n }\n ]);\n stack.push([\n Number(key.slice(1)),\n (k) => {\n r[0] = k;\n }\n ]);\n postRun.push(() => {\n obj[r[0]] = r[1];\n });\n }\n set(obj);\n continue;\n case TYPE_PROMISE:\n if (hydrated[b]) {\n set(hydrated[index2] = hydrated[b]);\n } else {\n const d = new Deferred2();\n deferred[b] = d;\n set(hydrated[index2] = d.promise);\n }\n continue;\n case TYPE_ERROR:\n const [, message, errorType] = value;\n let error = errorType && globalObj && globalObj[errorType] ? new globalObj[errorType](message) : new Error(message);\n hydrated[index2] = error;\n set(error);\n continue;\n case TYPE_PREVIOUS_RESOLVED:\n set(hydrated[index2] = hydrated[b]);\n continue;\n default:\n if (Array.isArray(plugins)) {\n const r = [];\n const vals = value.slice(1);\n for (let i = 0; i < vals.length; i++) {\n const v = vals[i];\n stack.push([\n v,\n (v2) => {\n r[i] = v2;\n }\n ]);\n }\n postRun.push(() => {\n for (const plugin of plugins) {\n const result2 = plugin(value[0], ...r);\n if (result2) {\n set(hydrated[index2] = result2.value);\n return;\n }\n }\n throw new SyntaxError();\n });\n continue;\n }\n throw new SyntaxError();\n }\n } else {\n const array = [];\n hydrated[index2] = array;\n for (let i = 0; i < value.length; i++) {\n const n = value[i];\n if (n !== HOLE) {\n stack.push([\n n,\n (v) => {\n array[i] = v;\n }\n ]);\n }\n }\n set(array);\n continue;\n }\n } else {\n const object = {};\n hydrated[index2] = object;\n for (const key of Object.keys(value).reverse()) {\n const r = [];\n stack.push([\n value[key],\n (v) => {\n r[1] = v;\n }\n ]);\n stack.push([\n Number(key.slice(1)),\n (k) => {\n r[0] = k;\n }\n ]);\n postRun.push(() => {\n object[r[0]] = r[1];\n });\n }\n set(object);\n continue;\n }\n }\n while (postRun.length > 0) {\n postRun.pop()();\n }\n return result;\n}\n\n// vendor/turbo-stream-v2/turbo-stream.ts\nasync function decode(readable, options) {\n const { plugins } = options ?? {};\n const done = new Deferred2();\n const reader = readable.pipeThrough(createLineSplittingTransform()).getReader();\n const decoder = {\n values: [],\n hydrated: [],\n deferred: {},\n plugins\n };\n const decoded = await decodeInitial.call(decoder, reader);\n let donePromise = done.promise;\n if (decoded.done) {\n done.resolve();\n } else {\n donePromise = decodeDeferred.call(decoder, reader).then(done.resolve).catch((reason) => {\n for (const deferred of Object.values(decoder.deferred)) {\n deferred.reject(reason);\n }\n done.reject(reason);\n });\n }\n return {\n done: donePromise.then(() => reader.closed),\n value: decoded.value\n };\n}\nasync function decodeInitial(reader) {\n const read = await reader.read();\n if (!read.value) {\n throw new SyntaxError();\n }\n let line;\n try {\n line = JSON.parse(read.value);\n } catch (reason) {\n throw new SyntaxError();\n }\n return {\n done: read.done,\n value: unflatten.call(this, line)\n };\n}\nasync function decodeDeferred(reader) {\n let read = await reader.read();\n while (!read.done) {\n if (!read.value) continue;\n const line = read.value;\n switch (line[0]) {\n case TYPE_PROMISE: {\n const colonIndex = line.indexOf(\":\");\n const deferredId = Number(line.slice(1, colonIndex));\n const deferred = this.deferred[deferredId];\n if (!deferred) {\n throw new Error(`Deferred ID ${deferredId} not found in stream`);\n }\n const lineData = line.slice(colonIndex + 1);\n let jsonLine;\n try {\n jsonLine = JSON.parse(lineData);\n } catch (reason) {\n throw new SyntaxError();\n }\n const value = unflatten.call(this, jsonLine);\n deferred.resolve(value);\n break;\n }\n case TYPE_ERROR: {\n const colonIndex = line.indexOf(\":\");\n const deferredId = Number(line.slice(1, colonIndex));\n const deferred = this.deferred[deferredId];\n if (!deferred) {\n throw new Error(`Deferred ID ${deferredId} not found in stream`);\n }\n const lineData = line.slice(colonIndex + 1);\n let jsonLine;\n try {\n jsonLine = JSON.parse(lineData);\n } catch (reason) {\n throw new SyntaxError();\n }\n const value = unflatten.call(this, jsonLine);\n deferred.reject(value);\n break;\n }\n default:\n throw new SyntaxError();\n }\n read = await reader.read();\n }\n}\nfunction encode(input, options) {\n const { plugins, postPlugins, signal } = options ?? {};\n const encoder = {\n deferred: {},\n index: 0,\n indices: /* @__PURE__ */ new Map(),\n stringified: [],\n plugins,\n postPlugins,\n signal\n };\n const textEncoder = new TextEncoder();\n let lastSentIndex = 0;\n const readable = new ReadableStream({\n async start(controller) {\n const id = flatten.call(encoder, input);\n if (Array.isArray(id)) {\n throw new Error(\"This should never happen\");\n }\n if (id < 0) {\n controller.enqueue(textEncoder.encode(`${id}\n`));\n } else {\n controller.enqueue(\n textEncoder.encode(`[${encoder.stringified.join(\",\")}]\n`)\n );\n lastSentIndex = encoder.stringified.length - 1;\n }\n const seenPromises = /* @__PURE__ */ new WeakSet();\n if (Object.keys(encoder.deferred).length) {\n let raceDone;\n const racePromise = new Promise((resolve, reject) => {\n raceDone = resolve;\n if (signal) {\n const rejectPromise = () => reject(signal.reason || new Error(\"Signal was aborted.\"));\n if (signal.aborted) {\n rejectPromise();\n } else {\n signal.addEventListener(\"abort\", (event) => {\n rejectPromise();\n });\n }\n }\n });\n while (Object.keys(encoder.deferred).length > 0) {\n for (const [deferredId, deferred] of Object.entries(\n encoder.deferred\n )) {\n if (seenPromises.has(deferred)) continue;\n seenPromises.add(\n // biome-ignore lint/suspicious/noAssignInExpressions: <explanation>\n encoder.deferred[Number(deferredId)] = Promise.race([\n racePromise,\n deferred\n ]).then(\n (resolved) => {\n const id2 = flatten.call(encoder, resolved);\n if (Array.isArray(id2)) {\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_PROMISE}${deferredId}:[[\"${TYPE_PREVIOUS_RESOLVED}\",${id2[0]}]]\n`\n )\n );\n encoder.index++;\n lastSentIndex++;\n } else if (id2 < 0) {\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_PROMISE}${deferredId}:${id2}\n`\n )\n );\n } else {\n const values = encoder.stringified.slice(lastSentIndex + 1).join(\",\");\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_PROMISE}${deferredId}:[${values}]\n`\n )\n );\n lastSentIndex = encoder.stringified.length - 1;\n }\n },\n (reason) => {\n if (!reason || typeof reason !== \"object\" || !(reason instanceof Error)) {\n reason = new Error(\"An unknown error occurred\");\n }\n const id2 = flatten.call(encoder, reason);\n if (Array.isArray(id2)) {\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_ERROR}${deferredId}:[[\"${TYPE_PREVIOUS_RESOLVED}\",${id2[0]}]]\n`\n )\n );\n encoder.index++;\n lastSentIndex++;\n } else if (id2 < 0) {\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_ERROR}${deferredId}:${id2}\n`\n )\n );\n } else {\n const values = encoder.stringified.slice(lastSentIndex + 1).join(\",\");\n controller.enqueue(\n textEncoder.encode(\n `${TYPE_ERROR}${deferredId}:[${values}]\n`\n )\n );\n lastSentIndex = encoder.stringified.length - 1;\n }\n }\n ).finally(() => {\n delete encoder.deferred[Number(deferredId)];\n })\n );\n }\n await Promise.race(Object.values(encoder.deferred));\n }\n raceDone();\n }\n await Promise.all(Object.values(encoder.deferred));\n controller.close();\n }\n });\n return readable;\n}\n\n// lib/dom/ssr/data.ts\nasync function createRequestInit(request) {\n let init = { signal: request.signal };\n if (request.method !== \"GET\") {\n init.method = request.method;\n let contentType = request.headers.get(\"Content-Type\");\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n init.headers = { \"Content-Type\": contentType };\n init.body = JSON.stringify(await request.json());\n } else if (contentType && /\\btext\\/plain\\b/.test(contentType)) {\n init.headers = { \"Content-Type\": contentType };\n init.body = await request.text();\n } else if (contentType && /\\bapplication\\/x-www-form-urlencoded\\b/.test(contentType)) {\n init.body = new URLSearchParams(await request.text());\n } else {\n init.body = await request.formData();\n }\n }\n return init;\n}\n\n// lib/dom/ssr/markup.ts\nvar ESCAPE_LOOKUP = {\n \"&\": \"\\\\u0026\",\n \">\": \"\\\\u003e\",\n \"<\": \"\\\\u003c\",\n \"\\u2028\": \"\\\\u2028\",\n \"\\u2029\": \"\\\\u2029\"\n};\nvar ESCAPE_REGEX = /[&><\\u2028\\u2029]/g;\nfunction escapeHtml(html) {\n return html.replace(ESCAPE_REGEX, (match) => ESCAPE_LOOKUP[match]);\n}\n\n// lib/dom/ssr/invariant.ts\nfunction invariant2(value, message) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\n// lib/dom/ssr/single-fetch.tsx\nvar SingleFetchRedirectSymbol = Symbol(\"SingleFetchRedirect\");\nvar SingleFetchNoResultError = class extends Error {\n};\nvar SINGLE_FETCH_REDIRECT_STATUS = 202;\nvar NO_BODY_STATUS_CODES = /* @__PURE__ */ new Set([100, 101, 204, 205]);\nfunction StreamTransfer({\n context,\n identifier,\n reader,\n textDecoder,\n nonce\n}) {\n if (!context.renderMeta || !context.renderMeta.didRenderScripts) {\n return null;\n }\n if (!context.renderMeta.streamCache) {\n context.renderMeta.streamCache = {};\n }\n let { streamCache } = context.renderMeta;\n let promise = streamCache[identifier];\n if (!promise) {\n promise = streamCache[identifier] = reader.read().then((result) => {\n streamCache[identifier].result = {\n done: result.done,\n value: textDecoder.decode(result.value, { stream: true })\n };\n }).catch((e) => {\n streamCache[identifier].error = e;\n });\n }\n if (promise.error) {\n throw promise.error;\n }\n if (promise.result === void 0) {\n throw promise;\n }\n let { done, value } = promise.result;\n let scriptTag = value ? /* @__PURE__ */ React4.createElement(\n \"script\",\n {\n nonce,\n dangerouslySetInnerHTML: {\n __html: `window.__reactRouterContext.streamController.enqueue(${escapeHtml(\n JSON.stringify(value)\n )});`\n }\n }\n ) : null;\n if (done) {\n return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(\n \"script\",\n {\n nonce,\n dangerouslySetInnerHTML: {\n __html: `window.__reactRouterContext.streamController.close();`\n }\n }\n ));\n } else {\n return /* @__PURE__ */ React4.createElement(React4.Fragment, null, scriptTag, /* @__PURE__ */ React4.createElement(React4.Suspense, null, /* @__PURE__ */ React4.createElement(\n StreamTransfer,\n {\n context,\n identifier: identifier + 1,\n reader,\n textDecoder,\n nonce\n }\n )));\n }\n}\nfunction getTurboStreamSingleFetchDataStrategy(getRouter, manifest, routeModules, ssr, basename, trailingSlashAware) {\n let dataStrategy = getSingleFetchDataStrategyImpl(\n getRouter,\n (match) => {\n let manifestRoute = manifest.routes[match.route.id];\n invariant2(manifestRoute, \"Route not found in manifest\");\n let routeModule = routeModules[match.route.id];\n return {\n hasLoader: manifestRoute.hasLoader,\n hasClientLoader: manifestRoute.hasClientLoader,\n hasShouldRevalidate: Boolean(routeModule?.shouldRevalidate)\n };\n },\n fetchAndDecodeViaTurboStream,\n ssr,\n basename,\n trailingSlashAware\n );\n return async (args) => args.runClientMiddleware(dataStrategy);\n}\nfunction getSingleFetchDataStrategyImpl(getRouter, getRouteInfo, fetchAndDecode, ssr, basename, trailingSlashAware, shouldAllowOptOut = () => true) {\n return async (args) => {\n let { request, matches, fetcherKey } = args;\n let router = getRouter();\n if (request.method !== \"GET\") {\n return singleFetchActionStrategy(\n args,\n fetchAndDecode,\n basename,\n trailingSlashAware\n );\n }\n let foundRevalidatingServerLoader = matches.some((m) => {\n let { hasLoader, hasClientLoader } = getRouteInfo(m);\n return m.shouldCallHandler() && hasLoader && !hasClientLoader;\n });\n if (!ssr && !foundRevalidatingServerLoader) {\n return nonSsrStrategy(\n args,\n getRouteInfo,\n fetchAndDecode,\n basename,\n trailingSlashAware\n );\n }\n if (fetcherKey) {\n return singleFetchLoaderFetcherStrategy(\n args,\n fetchAndDecode,\n basename,\n trailingSlashAware\n );\n }\n return singleFetchLoaderNavigationStrategy(\n args,\n router,\n getRouteInfo,\n fetchAndDecode,\n ssr,\n basename,\n trailingSlashAware,\n shouldAllowOptOut\n );\n };\n}\nasync function singleFetchActionStrategy(args, fetchAndDecode, basename, trailingSlashAware) {\n let actionMatch = args.matches.find((m) => m.shouldCallHandler());\n invariant2(actionMatch, \"No action match found\");\n let actionStatus = void 0;\n let result = await actionMatch.resolve(async (handler) => {\n let result2 = await handler(async () => {\n let { data: data2, status } = await fetchAndDecode(\n args,\n basename,\n trailingSlashAware,\n [actionMatch.route.id]\n );\n actionStatus = status;\n return unwrapSingleFetchResult(data2, actionMatch.route.id);\n });\n return result2;\n });\n if (isResponse(result.result) || isRouteErrorResponse(result.result) || isDataWithResponseInit(result.result)) {\n return { [actionMatch.route.id]: result };\n }\n return {\n [actionMatch.route.id]: {\n type: result.type,\n result: data(result.result, actionStatus)\n }\n };\n}\nasync function nonSsrStrategy(args, getRouteInfo, fetchAndDecode, basename, trailingSlashAware) {\n let matchesToLoad = args.matches.filter((m) => m.shouldCallHandler());\n let results = {};\n await Promise.all(\n matchesToLoad.map(\n (m) => m.resolve(async (handler) => {\n try {\n let { hasClientLoader } = getRouteInfo(m);\n let routeId = m.route.id;\n let result = hasClientLoader ? await handler(async () => {\n let { data: data2 } = await fetchAndDecode(\n args,\n basename,\n trailingSlashAware,\n [routeId]\n );\n return unwrapSingleFetchResult(data2, routeId);\n }) : await handler();\n results[m.route.id] = { type: \"data\", result };\n } catch (e) {\n results[m.route.id] = { type: \"error\", result: e };\n }\n })\n )\n );\n return results;\n}\nasync function singleFetchLoaderNavigationStrategy(args, router, getRouteInfo, fetchAndDecode, ssr, basename, trailingSlashAware, shouldAllowOptOut = () => true) {\n let routesParams = /* @__PURE__ */ new Set();\n let foundOptOutRoute = false;\n let routeDfds = args.matches.map(() => createDeferred2());\n let singleFetchDfd = createDeferred2();\n let results = {};\n let resolvePromise = Promise.all(\n args.matches.map(\n async (m, i) => m.resolve(async (handler) => {\n routeDfds[i].resolve();\n let routeId = m.route.id;\n let { hasLoader, hasClientLoader, hasShouldRevalidate } = getRouteInfo(m);\n let defaultShouldRevalidate = !m.shouldRevalidateArgs || m.shouldRevalidateArgs.actionStatus == null || m.shouldRevalidateArgs.actionStatus < 400;\n let shouldCall = m.shouldCallHandler(defaultShouldRevalidate);\n if (!shouldCall) {\n foundOptOutRoute || (foundOptOutRoute = m.shouldRevalidateArgs != null && // This is a revalidation,\n hasLoader && // for a route with a server loader,\n hasShouldRevalidate === true);\n return;\n }\n if (shouldAllowOptOut(m) && hasClientLoader) {\n if (hasLoader) {\n foundOptOutRoute = true;\n }\n try {\n let result = await handler(async () => {\n let { data: data2 } = await fetchAndDecode(\n args,\n basename,\n trailingSlashAware,\n [routeId]\n );\n return unwrapSingleFetchResult(data2, routeId);\n });\n results[routeId] = { type: \"data\", result };\n } catch (e) {\n results[routeId] = { type: \"error\", result: e };\n }\n return;\n }\n if (hasLoader) {\n routesParams.add(routeId);\n }\n try {\n let result = await handler(async () => {\n let data2 = await singleFetchDfd.promise;\n return unwrapSingleFetchResult(data2, routeId);\n });\n results[routeId] = { type: \"data\", result };\n } catch (e) {\n results[routeId] = { type: \"error\", result: e };\n }\n })\n )\n );\n await Promise.all(routeDfds.map((d) => d.promise));\n let isInitialLoad = !router.state.initialized && router.state.navigation.state === \"idle\";\n if ((isInitialLoad || routesParams.size === 0) && !window.__reactRouterHdrActive) {\n singleFetchDfd.resolve({ routes: {} });\n } else {\n let targetRoutes = ssr && foundOptOutRoute && routesParams.size > 0 ? [...routesParams.keys()] : void 0;\n try {\n let data2 = await fetchAndDecode(\n args,\n basename,\n trailingSlashAware,\n targetRoutes\n );\n singleFetchDfd.resolve(data2.data);\n } catch (e) {\n singleFetchDfd.reject(e);\n }\n }\n await resolvePromise;\n await bubbleMiddlewareErrors(\n singleFetchDfd.promise,\n args.matches,\n routesParams,\n results\n );\n return results;\n}\nasync function bubbleMiddlewareErrors(singleFetchPromise, matches, routesParams, results) {\n try {\n let middlewareError;\n let fetchedData = await singleFetchPromise;\n if (\"routes\" in fetchedData) {\n for (let match of matches) {\n if (match.route.id in fetchedData.routes) {\n let routeResult = fetchedData.routes[match.route.id];\n if (\"error\" in routeResult) {\n middlewareError = routeResult.error;\n if (results[match.route.id]?.result == null) {\n results[match.route.id] = {\n type: \"error\",\n result: middlewareError\n };\n }\n break;\n }\n }\n }\n }\n if (middlewareError !== void 0) {\n Array.from(routesParams.values()).forEach((routeId) => {\n if (results[routeId].result instanceof SingleFetchNoResultError) {\n results[routeId].result = middlewareError;\n }\n });\n }\n } catch (e) {\n }\n}\nasync function singleFetchLoaderFetcherStrategy(args, fetchAndDecode, basename, trailingSlashAware) {\n let fetcherMatch = args.matches.find((m) => m.shouldCallHandler());\n invariant2(fetcherMatch, \"No fetcher match found\");\n let routeId = fetcherMatch.route.id;\n let result = await fetcherMatch.resolve(\n async (handler) => handler(async () => {\n let { data: data2 } = await fetchAndDecode(args, basename, trailingSlashAware, [\n routeId\n ]);\n return unwrapSingleFetchResult(data2, routeId);\n })\n );\n return { [fetcherMatch.route.id]: result };\n}\nfunction stripIndexParam(url) {\n let indexValues = url.searchParams.getAll(\"index\");\n url.searchParams.delete(\"index\");\n let indexValuesToKeep = [];\n for (let indexValue of indexValues) {\n if (indexValue) {\n indexValuesToKeep.push(indexValue);\n }\n }\n for (let toKeep of indexValuesToKeep) {\n url.searchParams.append(\"index\", toKeep);\n }\n return url;\n}\nfunction singleFetchUrl(reqUrl, basename, trailingSlashAware, extension) {\n let url = typeof reqUrl === \"string\" ? new URL(\n reqUrl,\n // This can be called during the SSR flow via PrefetchPageLinksImpl so\n // don't assume window is available\n typeof window === \"undefined\" ? \"server://singlefetch/\" : window.location.origin\n ) : reqUrl;\n if (trailingSlashAware) {\n if (url.pathname.endsWith(\"/\")) {\n url.pathname = `${url.pathname}_.${extension}`;\n } else {\n url.pathname = `${url.pathname}.${extension}`;\n }\n } else {\n if (url.pathname === \"/\") {\n url.pathname = `_root.${extension}`;\n } else if (basename && stripBasename(url.pathname, basename) === \"/\") {\n url.pathname = `${basename.replace(/\\/$/, \"\")}/_root.${extension}`;\n } else {\n url.pathname = `${url.pathname.replace(/\\/$/, \"\")}.${extension}`;\n }\n }\n return url;\n}\nasync function fetchAndDecodeViaTurboStream(args, basename, trailingSlashAware, targetRoutes) {\n let { request } = args;\n let url = singleFetchUrl(request.url, basename, trailingSlashAware, \"data\");\n if (request.method === \"GET\") {\n url = stripIndexParam(url);\n if (targetRoutes) {\n url.searchParams.set(\"_routes\", targetRoutes.join(\",\"));\n }\n }\n let res = await fetch(url, await createRequestInit(request));\n if (res.status >= 400 && !res.headers.has(\"X-Remix-Response\")) {\n throw new ErrorResponseImpl(res.status, res.statusText, await res.text());\n }\n if (res.status === 204 && res.headers.has(\"X-Remix-Redirect\")) {\n return {\n status: SINGLE_FETCH_REDIRECT_STATUS,\n data: {\n redirect: {\n redirect: res.headers.get(\"X-Remix-Redirect\"),\n status: Number(res.headers.get(\"X-Remix-Status\") || \"302\"),\n revalidate: res.headers.get(\"X-Remix-Revalidate\") === \"true\",\n reload: res.headers.get(\"X-Remix-Reload-Document\") === \"true\",\n replace: res.headers.get(\"X-Remix-Replace\") === \"true\"\n }\n }\n };\n }\n if (NO_BODY_STATUS_CODES.has(res.status)) {\n let routes = {};\n if (targetRoutes && request.method !== \"GET\") {\n routes[targetRoutes[0]] = { data: void 0 };\n }\n return {\n status: res.status,\n data: { routes }\n };\n }\n invariant2(res.body, \"No response body to decode\");\n try {\n let decoded = await decodeViaTurboStream(res.body, window);\n let data2;\n if (request.method === \"GET\") {\n let typed = decoded.value;\n if (SingleFetchRedirectSymbol in typed) {\n data2 = { redirect: typed[SingleFetchRedirectSymbol] };\n } else {\n data2 = { routes: typed };\n }\n } else {\n let typed = decoded.value;\n let routeId = targetRoutes?.[0];\n invariant2(routeId, \"No routeId found for single fetch call decoding\");\n if (\"redirect\" in typed) {\n data2 = { redirect: typed };\n } else {\n data2 = { routes: { [routeId]: typed } };\n }\n }\n return { status: res.status, data: data2 };\n } catch (e) {\n throw new Error(\"Unable to decode turbo-stream response\");\n }\n}\nfunction decodeViaTurboStream(body, global) {\n return decode(body, {\n plugins: [\n (type, ...rest) => {\n if (type === \"SanitizedError\") {\n let [name, message, stack] = rest;\n let Constructor = Error;\n if (name && name in global && typeof global[name] === \"function\") {\n Constructor = global[name];\n }\n let error = new Constructor(message);\n error.stack = stack;\n return { value: error };\n }\n if (type === \"ErrorResponse\") {\n let [data2, status, statusText] = rest;\n return {\n value: new ErrorResponseImpl(status, statusText, data2)\n };\n }\n if (type === \"SingleFetchRedirect\") {\n return { value: { [SingleFetchRedirectSymbol]: rest[0] } };\n }\n if (type === \"SingleFetchClassInstance\") {\n return { value: rest[0] };\n }\n if (type === \"SingleFetchFallback\") {\n return { value: void 0 };\n }\n }\n ]\n });\n}\nfunction unwrapSingleFetchResult(result, routeId) {\n if (\"redirect\" in result) {\n let {\n redirect: location,\n revalidate,\n reload,\n replace: replace2,\n status\n } = result.redirect;\n throw redirect(location, {\n status,\n headers: {\n // Three R's of redirecting (lol Veep)\n ...revalidate ? { \"X-Remix-Revalidate\": \"yes\" } : null,\n ...reload ? { \"X-Remix-Reload-Document\": \"yes\" } : null,\n ...replace2 ? { \"X-Remix-Replace\": \"yes\" } : null\n }\n });\n }\n let routeResult = result.routes[routeId];\n if (routeResult == null) {\n throw new SingleFetchNoResultError(\n `No result found for routeId \"${routeId}\"`\n );\n } else if (\"error\" in routeResult) {\n throw routeResult.error;\n } else if (\"data\" in routeResult) {\n return routeResult.data;\n } else {\n throw new Error(`Invalid response found for routeId \"${routeId}\"`);\n }\n}\nfunction createDeferred2() {\n let resolve;\n let reject;\n let promise = new Promise((res, rej) => {\n resolve = async (val) => {\n res(val);\n try {\n await promise;\n } catch (e) {\n }\n };\n reject = async (error) => {\n rej(error);\n try {\n await promise;\n } catch (e) {\n }\n };\n });\n return {\n promise,\n //@ts-ignore\n resolve,\n //@ts-ignore\n reject\n };\n}\n\n// lib/dom/ssr/errorBoundaries.tsx\nimport * as React9 from \"react\";\n\n// lib/dom/ssr/components.tsx\nimport * as React8 from \"react\";\n\n// lib/dom/ssr/routeModules.ts\nasync function loadRouteModule(route, routeModulesCache) {\n if (route.id in routeModulesCache) {\n return routeModulesCache[route.id];\n }\n try {\n let routeModule = await import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n route.module\n );\n routeModulesCache[route.id] = routeModule;\n return routeModule;\n } catch (error) {\n console.error(\n `Error loading route module \\`${route.module}\\`, reloading page...`\n );\n console.error(error);\n if (window.__reactRouterContext && window.__reactRouterContext.isSpaMode && // @ts-expect-error\n import.meta.hot) {\n throw error;\n }\n window.location.reload();\n return new Promise(() => {\n });\n }\n}\n\n// lib/dom/ssr/links.ts\nfunction getKeyedLinksForMatches(matches, routeModules, manifest) {\n let descriptors = matches.map((match) => {\n let module = routeModules[match.route.id];\n let route = manifest.routes[match.route.id];\n return [\n route && route.css ? route.css.map((href) => ({ rel: \"stylesheet\", href })) : [],\n module?.links?.() || []\n ];\n }).flat(2);\n let preloads = getModuleLinkHrefs(matches, manifest);\n return dedupeLinkDescriptors(descriptors, preloads);\n}\nfunction getRouteCssDescriptors(route) {\n if (!route.css) return [];\n return route.css.map((href) => ({ rel: \"stylesheet\", href }));\n}\nasync function prefetchRouteCss(route) {\n if (!route.css) return;\n let descriptors = getRouteCssDescriptors(route);\n await Promise.all(descriptors.map(prefetchStyleLink));\n}\nasync function prefetchStyleLinks(route, routeModule) {\n if (!route.css && !routeModule.links || !isPreloadSupported()) return;\n let descriptors = [];\n if (route.css) {\n descriptors.push(...getRouteCssDescriptors(route));\n }\n if (routeModule.links) {\n descriptors.push(...routeModule.links());\n }\n if (descriptors.length === 0) return;\n let styleLinks = [];\n for (let descriptor of descriptors) {\n if (!isPageLinkDescriptor(descriptor) && descriptor.rel === \"stylesheet\") {\n styleLinks.push({\n ...descriptor,\n rel: \"preload\",\n as: \"style\"\n });\n }\n }\n await Promise.all(styleLinks.map(prefetchStyleLink));\n}\nasync function prefetchStyleLink(descriptor) {\n return new Promise((resolve) => {\n if (descriptor.media && !window.matchMedia(descriptor.media).matches || document.querySelector(\n `link[rel=\"stylesheet\"][href=\"${descriptor.href}\"]`\n )) {\n return resolve();\n }\n let link = document.createElement(\"link\");\n Object.assign(link, descriptor);\n function removeLink() {\n if (document.head.contains(link)) {\n document.head.removeChild(link);\n }\n }\n link.onload = () => {\n removeLink();\n resolve();\n };\n link.onerror = () => {\n removeLink();\n resolve();\n };\n document.head.appendChild(link);\n });\n}\nfunction isPageLinkDescriptor(object) {\n return object != null && typeof object.page === \"string\";\n}\nfunction isHtmlLinkDescriptor(object) {\n if (object == null) {\n return false;\n }\n if (object.href == null) {\n return object.rel === \"preload\" && typeof object.imageSrcSet === \"string\" && typeof object.imageSizes === \"string\";\n }\n return typeof object.rel === \"string\" && typeof object.href === \"string\";\n}\nasync function getKeyedPrefetchLinks(matches, manifest, routeModules) {\n let links = await Promise.all(\n matches.map(async (match) => {\n let route = manifest.routes[match.route.id];\n if (route) {\n let mod = await loadRouteModule(route, routeModules);\n return mod.links ? mod.links() : [];\n }\n return [];\n })\n );\n return dedupeLinkDescriptors(\n links.flat(1).filter(isHtmlLinkDescriptor).filter((link) => link.rel === \"stylesheet\" || link.rel === \"preload\").map(\n (link) => link.rel === \"stylesheet\" ? { ...link, rel: \"prefetch\", as: \"style\" } : { ...link, rel: \"prefetch\" }\n )\n );\n}\nfunction getNewMatchesForLinks(page, nextMatches, currentMatches, manifest, location, mode) {\n let isNew = (match, index) => {\n if (!currentMatches[index]) return true;\n return match.route.id !== currentMatches[index].route.id;\n };\n let matchPathChanged = (match, index) => {\n return (\n // param change, /users/123 -> /users/456\n currentMatches[index].pathname !== match.pathname || // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n currentMatches[index].route.path?.endsWith(\"*\") && currentMatches[index].params[\"*\"] !== match.params[\"*\"]\n );\n };\n if (mode === \"assets\") {\n return nextMatches.filter(\n (match, index) => isNew(match, index) || matchPathChanged(match, index)\n );\n }\n if (mode === \"data\") {\n return nextMatches.filter((match, index) => {\n let manifestRoute = manifest.routes[match.route.id];\n if (!manifestRoute || !manifestRoute.hasLoader) {\n return false;\n }\n if (isNew(match, index) || matchPathChanged(match, index)) {\n return true;\n }\n if (match.route.shouldRevalidate) {\n let routeChoice = match.route.shouldRevalidate({\n currentUrl: new URL(\n location.pathname + location.search + location.hash,\n window.origin\n ),\n currentParams: currentMatches[0]?.params || {},\n nextUrl: new URL(page, window.origin),\n nextParams: match.params,\n defaultShouldRevalidate: true\n });\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n return true;\n });\n }\n return [];\n}\nfunction getModuleLinkHrefs(matches, manifest, { includeHydrateFallback } = {}) {\n return dedupeHrefs(\n matches.map((match) => {\n let route = manifest.routes[match.route.id];\n if (!route) return [];\n let hrefs = [route.module];\n if (route.clientActionModule) {\n hrefs = hrefs.concat(route.clientActionModule);\n }\n if (route.clientLoaderModule) {\n hrefs = hrefs.concat(route.clientLoaderModule);\n }\n if (includeHydrateFallback && route.hydrateFallbackModule) {\n hrefs = hrefs.concat(route.hydrateFallbackModule);\n }\n if (route.imports) {\n hrefs = hrefs.concat(route.imports);\n }\n return hrefs;\n }).flat(1)\n );\n}\nfunction dedupeHrefs(hrefs) {\n return [...new Set(hrefs)];\n}\nfunction sortKeys(obj) {\n let sorted = {};\n let keys = Object.keys(obj).sort();\n for (let key of keys) {\n sorted[key] = obj[key];\n }\n return sorted;\n}\nfunction dedupeLinkDescriptors(descriptors, preloads) {\n let set = /* @__PURE__ */ new Set();\n let preloadsSet = new Set(preloads);\n return descriptors.reduce((deduped, descriptor) => {\n let alreadyModulePreload = preloads && !isPageLinkDescriptor(descriptor) && descriptor.as === \"script\" && descriptor.href && preloadsSet.has(descriptor.href);\n if (alreadyModulePreload) {\n return deduped;\n }\n let key = JSON.stringify(sortKeys(descriptor));\n if (!set.has(key)) {\n set.add(key);\n deduped.push({ key, link: descriptor });\n }\n return deduped;\n }, []);\n}\nvar _isPreloadSupported;\nfunction isPreloadSupported() {\n if (_isPreloadSupported !== void 0) {\n return _isPreloadSupported;\n }\n let el = document.createElement(\"link\");\n _isPreloadSupported = el.relList.supports(\"preload\");\n el = null;\n return _isPreloadSupported;\n}\n\n// lib/dom/ssr/fog-of-war.ts\nimport * as React7 from \"react\";\n\n// lib/dom/ssr/routes.tsx\nimport * as React6 from \"react\";\n\n// lib/dom/ssr/fallback.tsx\nimport * as React5 from \"react\";\nfunction RemixRootDefaultHydrateFallback() {\n return /* @__PURE__ */ React5.createElement(BoundaryShell, { title: \"Loading...\", renderScripts: true }, ENABLE_DEV_WARNINGS ? /* @__PURE__ */ React5.createElement(\n \"script\",\n {\n dangerouslySetInnerHTML: {\n __html: `\n console.log(\n \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this \" +\n \"when your app is loading JS modules and/or running \\`clientLoader\\` \" +\n \"functions. Check out https://reactrouter.com/start/framework/route-module#hydratefallback \" +\n \"for more information.\"\n );\n `\n }\n }\n ) : null);\n}\n\n// lib/dom/ssr/routes.tsx\nfunction groupRoutesByParentId(manifest) {\n let routes = {};\n Object.values(manifest).forEach((route) => {\n if (route) {\n let parentId = route.parentId || \"\";\n if (!routes[parentId]) {\n routes[parentId] = [];\n }\n routes[parentId].push(route);\n }\n });\n return routes;\n}\nfunction getRouteComponents(route, routeModule, isSpaMode) {\n let Component4 = getRouteModuleComponent(routeModule);\n let HydrateFallback = routeModule.HydrateFallback && (!isSpaMode || route.id === \"root\") ? routeModule.HydrateFallback : route.id === \"root\" ? RemixRootDefaultHydrateFallback : void 0;\n let ErrorBoundary = routeModule.ErrorBoundary ? routeModule.ErrorBoundary : route.id === \"root\" ? () => /* @__PURE__ */ React6.createElement(RemixRootDefaultErrorBoundary, { error: useRouteError() }) : void 0;\n if (route.id === \"root\" && routeModule.Layout) {\n return {\n ...Component4 ? {\n element: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(Component4, null))\n } : { Component: Component4 },\n ...ErrorBoundary ? {\n errorElement: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(ErrorBoundary, null))\n } : { ErrorBoundary },\n ...HydrateFallback ? {\n hydrateFallbackElement: /* @__PURE__ */ React6.createElement(routeModule.Layout, null, /* @__PURE__ */ React6.createElement(HydrateFallback, null))\n } : { HydrateFallback }\n };\n }\n return { Component: Component4, ErrorBoundary, HydrateFallback };\n}\nfunction createServerRoutes(manifest, routeModules, future, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), spaModeLazyPromise = Promise.resolve({ Component: () => null })) {\n return (routesByParentId[parentId] || []).map((route) => {\n let routeModule = routeModules[route.id];\n invariant2(\n routeModule,\n \"No `routeModule` available to create server routes\"\n );\n let dataRoute = {\n ...getRouteComponents(route, routeModule, isSpaMode),\n caseSensitive: route.caseSensitive,\n id: route.id,\n index: route.index,\n path: route.path,\n handle: routeModule.handle,\n // For SPA Mode, all routes are lazy except root. However we tell the\n // router root is also lazy here too since we don't need a full\n // implementation - we just need a `lazy` prop to tell the RR rendering\n // where to stop which is always at the root route in SPA mode\n lazy: isSpaMode ? () => spaModeLazyPromise : void 0,\n // For partial hydration rendering, we need to indicate when the route\n // has a loader/clientLoader, but it won't ever be called during the static\n // render, so just give it a no-op function so we can render down to the\n // proper fallback\n loader: route.hasLoader || route.hasClientLoader ? () => null : void 0\n // We don't need middleware/action/shouldRevalidate on these routes since\n // they're for a static render\n };\n let children = createServerRoutes(\n manifest,\n routeModules,\n future,\n isSpaMode,\n route.id,\n routesByParentId,\n spaModeLazyPromise\n );\n if (children.length > 0) dataRoute.children = children;\n return dataRoute;\n });\n}\nfunction createClientRoutesWithHMRRevalidationOptOut(needsRevalidation, manifest, routeModulesCache, initialState, ssr, isSpaMode) {\n return createClientRoutes(\n manifest,\n routeModulesCache,\n initialState,\n ssr,\n isSpaMode,\n \"\",\n groupRoutesByParentId(manifest),\n needsRevalidation\n );\n}\nfunction preventInvalidServerHandlerCall(type, route) {\n if (type === \"loader\" && !route.hasLoader || type === \"action\" && !route.hasAction) {\n let fn = type === \"action\" ? \"serverAction()\" : \"serverLoader()\";\n let msg = `You are trying to call ${fn} on a route that does not have a server ${type} (routeId: \"${route.id}\")`;\n console.error(msg);\n throw new ErrorResponseImpl(400, \"Bad Request\", new Error(msg), true);\n }\n}\nfunction noActionDefinedError(type, routeId) {\n let article = type === \"clientAction\" ? \"a\" : \"an\";\n let msg = `Route \"${routeId}\" does not have ${article} ${type}, but you are trying to submit to it. To fix this, please add ${article} \\`${type}\\` function to the route`;\n console.error(msg);\n throw new ErrorResponseImpl(405, \"Method Not Allowed\", new Error(msg), true);\n}\nfunction createClientRoutes(manifest, routeModulesCache, initialState, ssr, isSpaMode, parentId = \"\", routesByParentId = groupRoutesByParentId(manifest), needsRevalidation) {\n return (routesByParentId[parentId] || []).map((route) => {\n let routeModule = routeModulesCache[route.id];\n function fetchServerHandler(singleFetch) {\n invariant2(\n typeof singleFetch === \"function\",\n \"No single fetch function available for route handler\"\n );\n return singleFetch();\n }\n function fetchServerLoader(singleFetch) {\n if (!route.hasLoader) return Promise.resolve(null);\n return fetchServerHandler(singleFetch);\n }\n function fetchServerAction(singleFetch) {\n if (!route.hasAction) {\n throw noActionDefinedError(\"action\", route.id);\n }\n return fetchServerHandler(singleFetch);\n }\n function prefetchModule(modulePath) {\n import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n modulePath\n );\n }\n function prefetchRouteModuleChunks(route2) {\n if (route2.clientActionModule) {\n prefetchModule(route2.clientActionModule);\n }\n if (route2.clientLoaderModule) {\n prefetchModule(route2.clientLoaderModule);\n }\n }\n async function prefetchStylesAndCallHandler(handler) {\n let cachedModule = routeModulesCache[route.id];\n let linkPrefetchPromise = cachedModule ? prefetchStyleLinks(route, cachedModule) : Promise.resolve();\n try {\n return handler();\n } finally {\n await linkPrefetchPromise;\n }\n }\n let dataRoute = {\n id: route.id,\n index: route.index,\n path: route.path\n };\n if (routeModule) {\n Object.assign(dataRoute, {\n ...dataRoute,\n ...getRouteComponents(route, routeModule, isSpaMode),\n middleware: routeModule.clientMiddleware,\n handle: routeModule.handle,\n shouldRevalidate: getShouldRevalidateFunction(\n dataRoute.path,\n routeModule,\n route,\n ssr,\n needsRevalidation\n )\n });\n let hasInitialData = initialState && initialState.loaderData && route.id in initialState.loaderData;\n let initialData = hasInitialData ? initialState?.loaderData?.[route.id] : void 0;\n let hasInitialError = initialState && initialState.errors && route.id in initialState.errors;\n let initialError = hasInitialError ? initialState?.errors?.[route.id] : void 0;\n let isHydrationRequest = needsRevalidation == null && (routeModule.clientLoader?.hydrate === true || !route.hasLoader);\n dataRoute.loader = async ({ request, params, context, unstable_pattern }, singleFetch) => {\n try {\n let result = await prefetchStylesAndCallHandler(async () => {\n invariant2(\n routeModule,\n \"No `routeModule` available for critical-route loader\"\n );\n if (!routeModule.clientLoader) {\n return fetchServerLoader(singleFetch);\n }\n return routeModule.clientLoader({\n request,\n params,\n context,\n unstable_pattern,\n async serverLoader() {\n preventInvalidServerHandlerCall(\"loader\", route);\n if (isHydrationRequest) {\n if (hasInitialData) {\n return initialData;\n }\n if (hasInitialError) {\n throw initialError;\n }\n }\n return fetchServerLoader(singleFetch);\n }\n });\n });\n return result;\n } finally {\n isHydrationRequest = false;\n }\n };\n dataRoute.loader.hydrate = shouldHydrateRouteLoader(\n route.id,\n routeModule.clientLoader,\n route.hasLoader,\n isSpaMode\n );\n dataRoute.action = ({ request, params, context, unstable_pattern }, singleFetch) => {\n return prefetchStylesAndCallHandler(async () => {\n invariant2(\n routeModule,\n \"No `routeModule` available for critical-route action\"\n );\n if (!routeModule.clientAction) {\n if (isSpaMode) {\n throw noActionDefinedError(\"clientAction\", route.id);\n }\n return fetchServerAction(singleFetch);\n }\n return routeModule.clientAction({\n request,\n params,\n context,\n unstable_pattern,\n async serverAction() {\n preventInvalidServerHandlerCall(\"action\", route);\n return fetchServerAction(singleFetch);\n }\n });\n });\n };\n } else {\n if (!route.hasClientLoader) {\n dataRoute.loader = (_, singleFetch) => prefetchStylesAndCallHandler(() => {\n return fetchServerLoader(singleFetch);\n });\n }\n if (!route.hasClientAction) {\n dataRoute.action = (_, singleFetch) => prefetchStylesAndCallHandler(() => {\n if (isSpaMode) {\n throw noActionDefinedError(\"clientAction\", route.id);\n }\n return fetchServerAction(singleFetch);\n });\n }\n let lazyRoutePromise;\n async function getLazyRoute() {\n if (lazyRoutePromise) {\n return await lazyRoutePromise;\n }\n lazyRoutePromise = (async () => {\n if (route.clientLoaderModule || route.clientActionModule) {\n await new Promise((resolve) => setTimeout(resolve, 0));\n }\n let routeModulePromise = loadRouteModuleWithBlockingLinks(\n route,\n routeModulesCache\n );\n prefetchRouteModuleChunks(route);\n return await routeModulePromise;\n })();\n return await lazyRoutePromise;\n }\n dataRoute.lazy = {\n loader: route.hasClientLoader ? async () => {\n let { clientLoader } = route.clientLoaderModule ? await import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n route.clientLoaderModule\n ) : await getLazyRoute();\n invariant2(clientLoader, \"No `clientLoader` export found\");\n return (args, singleFetch) => clientLoader({\n ...args,\n async serverLoader() {\n preventInvalidServerHandlerCall(\"loader\", route);\n return fetchServerLoader(singleFetch);\n }\n });\n } : void 0,\n action: route.hasClientAction ? async () => {\n let clientActionPromise = route.clientActionModule ? import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n route.clientActionModule\n ) : getLazyRoute();\n prefetchRouteModuleChunks(route);\n let { clientAction } = await clientActionPromise;\n invariant2(clientAction, \"No `clientAction` export found\");\n return (args, singleFetch) => clientAction({\n ...args,\n async serverAction() {\n preventInvalidServerHandlerCall(\"action\", route);\n return fetchServerAction(singleFetch);\n }\n });\n } : void 0,\n middleware: route.hasClientMiddleware ? async () => {\n let { clientMiddleware } = route.clientMiddlewareModule ? await import(\n /* @vite-ignore */\n /* webpackIgnore: true */\n route.clientMiddlewareModule\n ) : await getLazyRoute();\n invariant2(clientMiddleware, \"No `clientMiddleware` export found\");\n return clientMiddleware;\n } : void 0,\n shouldRevalidate: async () => {\n let lazyRoute = await getLazyRoute();\n return getShouldRevalidateFunction(\n dataRoute.path,\n lazyRoute,\n route,\n ssr,\n needsRevalidation\n );\n },\n handle: async () => (await getLazyRoute()).handle,\n // No need to wrap these in layout since the root route is never\n // loaded via route.lazy()\n Component: async () => (await getLazyRoute()).Component,\n ErrorBoundary: route.hasErrorBoundary ? async () => (await getLazyRoute()).ErrorBoundary : void 0\n };\n }\n let children = createClientRoutes(\n manifest,\n routeModulesCache,\n initialState,\n ssr,\n isSpaMode,\n route.id,\n routesByParentId,\n needsRevalidation\n );\n if (children.length > 0) dataRoute.children = children;\n return dataRoute;\n });\n}\nfunction getShouldRevalidateFunction(path, route, manifestRoute, ssr, needsRevalidation) {\n if (needsRevalidation) {\n return wrapShouldRevalidateForHdr(\n manifestRoute.id,\n route.shouldRevalidate,\n needsRevalidation\n );\n }\n if (!ssr && manifestRoute.hasLoader && !manifestRoute.hasClientLoader) {\n let myParams = path ? compilePath(path)[1].map((p) => p.paramName) : [];\n const didParamsChange = (opts) => myParams.some((p) => opts.currentParams[p] !== opts.nextParams[p]);\n if (route.shouldRevalidate) {\n let fn = route.shouldRevalidate;\n return (opts) => fn({\n ...opts,\n defaultShouldRevalidate: didParamsChange(opts)\n });\n } else {\n return (opts) => didParamsChange(opts);\n }\n }\n return route.shouldRevalidate;\n}\nfunction wrapShouldRevalidateForHdr(routeId, routeShouldRevalidate, needsRevalidation) {\n let handledRevalidation = false;\n return (arg) => {\n if (!handledRevalidation) {\n handledRevalidation = true;\n return needsRevalidation.has(routeId);\n }\n return routeShouldRevalidate ? routeShouldRevalidate(arg) : arg.defaultShouldRevalidate;\n };\n}\nasync function loadRouteModuleWithBlockingLinks(route, routeModules) {\n let routeModulePromise = loadRouteModule(route, routeModules);\n let prefetchRouteCssPromise = prefetchRouteCss(route);\n let routeModule = await routeModulePromise;\n await Promise.all([\n prefetchRouteCssPromise,\n prefetchStyleLinks(route, routeModule)\n ]);\n return {\n Component: getRouteModuleComponent(routeModule),\n ErrorBoundary: routeModule.ErrorBoundary,\n clientMiddleware: routeModule.clientMiddleware,\n clientAction: routeModule.clientAction,\n clientLoader: routeModule.clientLoader,\n handle: routeModule.handle,\n links: routeModule.links,\n meta: routeModule.meta,\n shouldRevalidate: routeModule.shouldRevalidate\n };\n}\nfunction getRouteModuleComponent(routeModule) {\n if (routeModule.default == null) return void 0;\n let isEmptyObject = typeof routeModule.default === \"object\" && Object.keys(routeModule.default).length === 0;\n if (!isEmptyObject) {\n return routeModule.default;\n }\n}\nfunction shouldHydrateRouteLoader(routeId, clientLoader, hasLoader, isSpaMode) {\n return isSpaMode && routeId !== \"root\" || clientLoader != null && (clientLoader.hydrate === true || hasLoader !== true);\n}\n\n// lib/dom/ssr/fog-of-war.ts\nvar nextPaths = /* @__PURE__ */ new Set();\nvar discoveredPathsMaxSize = 1e3;\nvar discoveredPaths = /* @__PURE__ */ new Set();\nvar URL_LIMIT = 7680;\nfunction isFogOfWarEnabled(routeDiscovery, ssr) {\n return routeDiscovery.mode === \"lazy\" && ssr === true;\n}\nfunction getPartialManifest({ sri, ...manifest }, router) {\n let routeIds = new Set(router.state.matches.map((m) => m.route.id));\n let segments = router.state.location.pathname.split(\"/\").filter(Boolean);\n let paths = [\"/\"];\n segments.pop();\n while (segments.length > 0) {\n paths.push(`/${segments.join(\"/\")}`);\n segments.pop();\n }\n paths.forEach((path) => {\n let matches = matchRoutes(router.routes, path, router.basename);\n if (matches) {\n matches.forEach((m) => routeIds.add(m.route.id));\n }\n });\n let initialRoutes = [...routeIds].reduce(\n (acc, id) => Object.assign(acc, { [id]: manifest.routes[id] }),\n {}\n );\n return {\n ...manifest,\n routes: initialRoutes,\n sri: sri ? true : void 0\n };\n}\nfunction getPatchRoutesOnNavigationFunction(manifest, routeModules, ssr, routeDiscovery, isSpaMode, basename) {\n if (!isFogOfWarEnabled(routeDiscovery, ssr)) {\n return void 0;\n }\n return async ({ path, patch, signal, fetcherKey }) => {\n if (discoveredPaths.has(path)) {\n return;\n }\n await fetchAndApplyManifestPatches(\n [path],\n fetcherKey ? window.location.href : path,\n manifest,\n routeModules,\n ssr,\n isSpaMode,\n basename,\n routeDiscovery.manifestPath,\n patch,\n signal\n );\n };\n}\nfunction useFogOFWarDiscovery(router, manifest, routeModules, ssr, routeDiscovery, isSpaMode) {\n React7.useEffect(() => {\n if (!isFogOfWarEnabled(routeDiscovery, ssr) || // @ts-expect-error - TS doesn't know about this yet\n window.navigator?.connection?.saveData === true) {\n return;\n }\n function registerElement(el) {\n let path = el.tagName === \"FORM\" ? el.getAttribute(\"action\") : el.getAttribute(\"href\");\n if (!path) {\n return;\n }\n let pathname = el.tagName === \"A\" ? el.pathname : new URL(path, window.location.origin).pathname;\n if (!discoveredPaths.has(pathname)) {\n nextPaths.add(pathname);\n }\n }\n async function fetchPatches() {\n document.querySelectorAll(\"a[data-discover], form[data-discover]\").forEach(registerElement);\n let lazyPaths = Array.from(nextPaths.keys()).filter((path) => {\n if (discoveredPaths.has(path)) {\n nextPaths.delete(path);\n return false;\n }\n return true;\n });\n if (lazyPaths.length === 0) {\n return;\n }\n try {\n await fetchAndApplyManifestPatches(\n lazyPaths,\n null,\n manifest,\n routeModules,\n ssr,\n isSpaMode,\n router.basename,\n routeDiscovery.manifestPath,\n router.patchRoutes\n );\n } catch (e) {\n console.error(\"Failed to fetch manifest patches\", e);\n }\n }\n let debouncedFetchPatches = debounce(fetchPatches, 100);\n fetchPatches();\n let observer = new MutationObserver(() => debouncedFetchPatches());\n observer.observe(document.documentElement, {\n subtree: true,\n childList: true,\n attributes: true,\n attributeFilter: [\"data-discover\", \"href\", \"action\"]\n });\n return () => observer.disconnect();\n }, [ssr, isSpaMode, manifest, routeModules, router, routeDiscovery]);\n}\nfunction getManifestPath(_manifestPath, basename) {\n let manifestPath = _manifestPath || \"/__manifest\";\n if (basename == null) {\n return manifestPath;\n }\n return `${basename}${manifestPath}`.replace(/\\/+/g, \"/\");\n}\nvar MANIFEST_VERSION_STORAGE_KEY = \"react-router-manifest-version\";\nasync function fetchAndApplyManifestPatches(paths, errorReloadPath, manifest, routeModules, ssr, isSpaMode, basename, manifestPath, patchRoutes, signal) {\n const searchParams = new URLSearchParams();\n searchParams.set(\"paths\", paths.sort().join(\",\"));\n searchParams.set(\"version\", manifest.version);\n let url = new URL(\n getManifestPath(manifestPath, basename),\n window.location.origin\n );\n url.search = searchParams.toString();\n if (url.toString().length > URL_LIMIT) {\n nextPaths.clear();\n return;\n }\n let serverPatches;\n try {\n let res = await fetch(url, { signal });\n if (!res.ok) {\n throw new Error(`${res.status} ${res.statusText}`);\n } else if (res.status === 204 && res.headers.has(\"X-Remix-Reload-Document\")) {\n if (!errorReloadPath) {\n console.warn(\n \"Detected a manifest version mismatch during eager route discovery. The next navigation/fetch to an undiscovered route will result in a new document navigation to sync up with the latest manifest.\"\n );\n return;\n }\n try {\n if (sessionStorage.getItem(MANIFEST_VERSION_STORAGE_KEY) === manifest.version) {\n console.error(\n \"Unable to discover routes due to manifest version mismatch.\"\n );\n return;\n }\n sessionStorage.setItem(MANIFEST_VERSION_STORAGE_KEY, manifest.version);\n } catch {\n }\n window.location.href = errorReloadPath;\n console.warn(\"Detected manifest version mismatch, reloading...\");\n await new Promise(() => {\n });\n } else if (res.status >= 400) {\n throw new Error(await res.text());\n }\n try {\n sessionStorage.removeItem(MANIFEST_VERSION_STORAGE_KEY);\n } catch {\n }\n serverPatches = await res.json();\n } catch (e) {\n if (signal?.aborted) return;\n throw e;\n }\n let knownRoutes = new Set(Object.keys(manifest.routes));\n let patches = Object.values(serverPatches).reduce((acc, route) => {\n if (route && !knownRoutes.has(route.id)) {\n acc[route.id] = route;\n }\n return acc;\n }, {});\n Object.assign(manifest.routes, patches);\n paths.forEach((p) => addToFifoQueue(p, discoveredPaths));\n let parentIds = /* @__PURE__ */ new Set();\n Object.values(patches).forEach((patch) => {\n if (patch && (!patch.parentId || !patches[patch.parentId])) {\n parentIds.add(patch.parentId);\n }\n });\n parentIds.forEach(\n (parentId) => patchRoutes(\n parentId || null,\n createClientRoutes(patches, routeModules, null, ssr, isSpaMode, parentId)\n )\n );\n}\nfunction addToFifoQueue(path, queue) {\n if (queue.size >= discoveredPathsMaxSize) {\n let first = queue.values().next().value;\n queue.delete(first);\n }\n queue.add(path);\n}\nfunction debounce(callback, wait) {\n let timeoutId;\n return (...args) => {\n window.clearTimeout(timeoutId);\n timeoutId = window.setTimeout(() => callback(...args), wait);\n };\n}\n\n// lib/dom/ssr/components.tsx\nfunction useDataRouterContext2() {\n let context = React8.useContext(DataRouterContext);\n invariant2(\n context,\n \"You must render this element inside a <DataRouterContext.Provider> element\"\n );\n return context;\n}\nfunction useDataRouterStateContext() {\n let context = React8.useContext(DataRouterStateContext);\n invariant2(\n context,\n \"You must render this element inside a <DataRouterStateContext.Provider> element\"\n );\n return context;\n}\nvar FrameworkContext = React8.createContext(void 0);\nFrameworkContext.displayName = \"FrameworkContext\";\nfunction useFrameworkContext() {\n let context = React8.useContext(FrameworkContext);\n invariant2(\n context,\n \"You must render this element inside a <HydratedRouter> element\"\n );\n return context;\n}\nfunction usePrefetchBehavior(prefetch, theirElementProps) {\n let frameworkContext = React8.useContext(FrameworkContext);\n let [maybePrefetch, setMaybePrefetch] = React8.useState(false);\n let [shouldPrefetch, setShouldPrefetch] = React8.useState(false);\n let { onFocus, onBlur, onMouseEnter, onMouseLeave, onTouchStart } = theirElementProps;\n let ref = React8.useRef(null);\n React8.useEffect(() => {\n if (prefetch === \"render\") {\n setShouldPrefetch(true);\n }\n if (prefetch === \"viewport\") {\n let callback = (entries) => {\n entries.forEach((entry) => {\n setShouldPrefetch(entry.isIntersecting);\n });\n };\n let observer = new IntersectionObserver(callback, { threshold: 0.5 });\n if (ref.current) observer.observe(ref.current);\n return () => {\n observer.disconnect();\n };\n }\n }, [prefetch]);\n React8.useEffect(() => {\n if (maybePrefetch) {\n let id = setTimeout(() => {\n setShouldPrefetch(true);\n }, 100);\n return () => {\n clearTimeout(id);\n };\n }\n }, [maybePrefetch]);\n let setIntent = () => {\n setMaybePrefetch(true);\n };\n let cancelIntent = () => {\n setMaybePrefetch(false);\n setShouldPrefetch(false);\n };\n if (!frameworkContext) {\n return [false, ref, {}];\n }\n if (prefetch !== \"intent\") {\n return [shouldPrefetch, ref, {}];\n }\n return [\n shouldPrefetch,\n ref,\n {\n onFocus: composeEventHandlers(onFocus, setIntent),\n onBlur: composeEventHandlers(onBlur, cancelIntent),\n onMouseEnter: composeEventHandlers(onMouseEnter, setIntent),\n onMouseLeave: composeEventHandlers(onMouseLeave, cancelIntent),\n onTouchStart: composeEventHandlers(onTouchStart, setIntent)\n }\n ];\n}\nfunction composeEventHandlers(theirHandler, ourHandler) {\n return (event) => {\n theirHandler && theirHandler(event);\n if (!event.defaultPrevented) {\n ourHandler(event);\n }\n };\n}\nfunction getActiveMatches(matches, errors, isSpaMode) {\n if (isSpaMode && !isHydrated) {\n return [matches[0]];\n }\n if (errors) {\n let errorIdx = matches.findIndex((m) => errors[m.route.id] !== void 0);\n return matches.slice(0, errorIdx + 1);\n }\n return matches;\n}\nvar CRITICAL_CSS_DATA_ATTRIBUTE = \"data-react-router-critical-css\";\nfunction Links({ nonce, crossOrigin }) {\n let { isSpaMode, manifest, routeModules, criticalCss } = useFrameworkContext();\n let { errors, matches: routerMatches } = useDataRouterStateContext();\n let matches = getActiveMatches(routerMatches, errors, isSpaMode);\n let keyedLinks = React8.useMemo(\n () => getKeyedLinksForMatches(matches, routeModules, manifest),\n [matches, routeModules, manifest]\n );\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, typeof criticalCss === \"string\" ? /* @__PURE__ */ React8.createElement(\n \"style\",\n {\n ...{ [CRITICAL_CSS_DATA_ATTRIBUTE]: \"\" },\n nonce,\n dangerouslySetInnerHTML: { __html: criticalCss }\n }\n ) : null, typeof criticalCss === \"object\" ? /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n ...{ [CRITICAL_CSS_DATA_ATTRIBUTE]: \"\" },\n rel: \"stylesheet\",\n href: criticalCss.href,\n nonce,\n crossOrigin\n }\n ) : null, keyedLinks.map(\n ({ key, link }) => isPageLinkDescriptor(link) ? /* @__PURE__ */ React8.createElement(\n PrefetchPageLinks,\n {\n key,\n nonce,\n ...link,\n crossOrigin: link.crossOrigin ?? crossOrigin\n }\n ) : /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n key,\n nonce,\n ...link,\n crossOrigin: link.crossOrigin ?? crossOrigin\n }\n )\n ));\n}\nfunction PrefetchPageLinks({ page, ...linkProps }) {\n let { router } = useDataRouterContext2();\n let matches = React8.useMemo(\n () => matchRoutes(router.routes, page, router.basename),\n [router.routes, page, router.basename]\n );\n if (!matches) {\n return null;\n }\n return /* @__PURE__ */ React8.createElement(PrefetchPageLinksImpl, { page, matches, ...linkProps });\n}\nfunction useKeyedPrefetchLinks(matches) {\n let { manifest, routeModules } = useFrameworkContext();\n let [keyedPrefetchLinks, setKeyedPrefetchLinks] = React8.useState([]);\n React8.useEffect(() => {\n let interrupted = false;\n void getKeyedPrefetchLinks(matches, manifest, routeModules).then(\n (links) => {\n if (!interrupted) {\n setKeyedPrefetchLinks(links);\n }\n }\n );\n return () => {\n interrupted = true;\n };\n }, [matches, manifest, routeModules]);\n return keyedPrefetchLinks;\n}\nfunction PrefetchPageLinksImpl({\n page,\n matches: nextMatches,\n ...linkProps\n}) {\n let location = useLocation();\n let { future, manifest, routeModules } = useFrameworkContext();\n let { basename } = useDataRouterContext2();\n let { loaderData, matches } = useDataRouterStateContext();\n let newMatchesForData = React8.useMemo(\n () => getNewMatchesForLinks(\n page,\n nextMatches,\n matches,\n manifest,\n location,\n \"data\"\n ),\n [page, nextMatches, matches, manifest, location]\n );\n let newMatchesForAssets = React8.useMemo(\n () => getNewMatchesForLinks(\n page,\n nextMatches,\n matches,\n manifest,\n location,\n \"assets\"\n ),\n [page, nextMatches, matches, manifest, location]\n );\n let dataHrefs = React8.useMemo(() => {\n if (page === location.pathname + location.search + location.hash) {\n return [];\n }\n let routesParams = /* @__PURE__ */ new Set();\n let foundOptOutRoute = false;\n nextMatches.forEach((m) => {\n let manifestRoute = manifest.routes[m.route.id];\n if (!manifestRoute || !manifestRoute.hasLoader) {\n return;\n }\n if (!newMatchesForData.some((m2) => m2.route.id === m.route.id) && m.route.id in loaderData && routeModules[m.route.id]?.shouldRevalidate) {\n foundOptOutRoute = true;\n } else if (manifestRoute.hasClientLoader) {\n foundOptOutRoute = true;\n } else {\n routesParams.add(m.route.id);\n }\n });\n if (routesParams.size === 0) {\n return [];\n }\n let url = singleFetchUrl(\n page,\n basename,\n future.unstable_trailingSlashAwareDataRequests,\n \"data\"\n );\n if (foundOptOutRoute && routesParams.size > 0) {\n url.searchParams.set(\n \"_routes\",\n nextMatches.filter((m) => routesParams.has(m.route.id)).map((m) => m.route.id).join(\",\")\n );\n }\n return [url.pathname + url.search];\n }, [\n basename,\n future.unstable_trailingSlashAwareDataRequests,\n loaderData,\n location,\n manifest,\n newMatchesForData,\n nextMatches,\n page,\n routeModules\n ]);\n let moduleHrefs = React8.useMemo(\n () => getModuleLinkHrefs(newMatchesForAssets, manifest),\n [newMatchesForAssets, manifest]\n );\n let keyedPrefetchLinks = useKeyedPrefetchLinks(newMatchesForAssets);\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, dataHrefs.map((href) => /* @__PURE__ */ React8.createElement(\"link\", { key: href, rel: \"prefetch\", as: \"fetch\", href, ...linkProps })), moduleHrefs.map((href) => /* @__PURE__ */ React8.createElement(\"link\", { key: href, rel: \"modulepreload\", href, ...linkProps })), keyedPrefetchLinks.map(({ key, link }) => (\n // these don't spread `linkProps` because they are full link descriptors\n // already with their own props\n /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n key,\n nonce: linkProps.nonce,\n ...link,\n crossOrigin: link.crossOrigin ?? linkProps.crossOrigin\n }\n )\n )));\n}\nfunction Meta() {\n let { isSpaMode, routeModules } = useFrameworkContext();\n let {\n errors,\n matches: routerMatches,\n loaderData\n } = useDataRouterStateContext();\n let location = useLocation();\n let _matches = getActiveMatches(routerMatches, errors, isSpaMode);\n let error = null;\n if (errors) {\n error = errors[_matches[_matches.length - 1].route.id];\n }\n let meta = [];\n let leafMeta = null;\n let matches = [];\n for (let i = 0; i < _matches.length; i++) {\n let _match = _matches[i];\n let routeId = _match.route.id;\n let data2 = loaderData[routeId];\n let params = _match.params;\n let routeModule = routeModules[routeId];\n let routeMeta = [];\n let match = {\n id: routeId,\n data: data2,\n loaderData: data2,\n meta: [],\n params: _match.params,\n pathname: _match.pathname,\n handle: _match.route.handle,\n error\n };\n matches[i] = match;\n if (routeModule?.meta) {\n routeMeta = typeof routeModule.meta === \"function\" ? routeModule.meta({\n data: data2,\n loaderData: data2,\n params,\n location,\n matches,\n error\n }) : Array.isArray(routeModule.meta) ? [...routeModule.meta] : routeModule.meta;\n } else if (leafMeta) {\n routeMeta = [...leafMeta];\n }\n routeMeta = routeMeta || [];\n if (!Array.isArray(routeMeta)) {\n throw new Error(\n \"The route at \" + _match.route.path + \" returns an invalid value. All route meta functions must return an array of meta objects.\\n\\nTo reference the meta function API, see https://remix.run/route/meta\"\n );\n }\n match.meta = routeMeta;\n matches[i] = match;\n meta = [...routeMeta];\n leafMeta = meta;\n }\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, meta.flat().map((metaProps) => {\n if (!metaProps) {\n return null;\n }\n if (\"tagName\" in metaProps) {\n let { tagName, ...rest } = metaProps;\n if (!isValidMetaTag(tagName)) {\n console.warn(\n `A meta object uses an invalid tagName: ${tagName}. Expected either 'link' or 'meta'`\n );\n return null;\n }\n let Comp = tagName;\n return /* @__PURE__ */ React8.createElement(Comp, { key: JSON.stringify(rest), ...rest });\n }\n if (\"title\" in metaProps) {\n return /* @__PURE__ */ React8.createElement(\"title\", { key: \"title\" }, String(metaProps.title));\n }\n if (\"charset\" in metaProps) {\n metaProps.charSet ?? (metaProps.charSet = metaProps.charset);\n delete metaProps.charset;\n }\n if (\"charSet\" in metaProps && metaProps.charSet != null) {\n return typeof metaProps.charSet === \"string\" ? /* @__PURE__ */ React8.createElement(\"meta\", { key: \"charSet\", charSet: metaProps.charSet }) : null;\n }\n if (\"script:ld+json\" in metaProps) {\n try {\n let json = JSON.stringify(metaProps[\"script:ld+json\"]);\n return /* @__PURE__ */ React8.createElement(\n \"script\",\n {\n key: `script:ld+json:${json}`,\n type: \"application/ld+json\",\n dangerouslySetInnerHTML: { __html: escapeHtml(json) }\n }\n );\n } catch (err) {\n return null;\n }\n }\n return /* @__PURE__ */ React8.createElement(\"meta\", { key: JSON.stringify(metaProps), ...metaProps });\n }));\n}\nfunction isValidMetaTag(tagName) {\n return typeof tagName === \"string\" && /^(meta|link)$/.test(tagName);\n}\nvar isHydrated = false;\nfunction setIsHydrated() {\n isHydrated = true;\n}\nfunction Scripts(scriptProps) {\n let {\n manifest,\n serverHandoffString,\n isSpaMode,\n renderMeta,\n routeDiscovery,\n ssr\n } = useFrameworkContext();\n let { router, static: isStatic, staticContext } = useDataRouterContext2();\n let { matches: routerMatches } = useDataRouterStateContext();\n let isRSCRouterContext = useIsRSCRouterContext();\n let enableFogOfWar = isFogOfWarEnabled(routeDiscovery, ssr);\n if (renderMeta) {\n renderMeta.didRenderScripts = true;\n }\n let matches = getActiveMatches(routerMatches, null, isSpaMode);\n React8.useEffect(() => {\n setIsHydrated();\n }, []);\n let initialScripts = React8.useMemo(() => {\n if (isRSCRouterContext) {\n return null;\n }\n let streamScript = \"window.__reactRouterContext.stream = new ReadableStream({start(controller){window.__reactRouterContext.streamController = controller;}}).pipeThrough(new TextEncoderStream());\";\n let contextScript = staticContext ? `window.__reactRouterContext = ${serverHandoffString};${streamScript}` : \" \";\n let routeModulesScript = !isStatic ? \" \" : `${manifest.hmr?.runtime ? `import ${JSON.stringify(manifest.hmr.runtime)};` : \"\"}${!enableFogOfWar ? `import ${JSON.stringify(manifest.url)}` : \"\"};\n${matches.map((match, routeIndex) => {\n let routeVarName = `route${routeIndex}`;\n let manifestEntry = manifest.routes[match.route.id];\n invariant2(manifestEntry, `Route ${match.route.id} not found in manifest`);\n let {\n clientActionModule,\n clientLoaderModule,\n clientMiddlewareModule,\n hydrateFallbackModule,\n module\n } = manifestEntry;\n let chunks = [\n ...clientActionModule ? [\n {\n module: clientActionModule,\n varName: `${routeVarName}_clientAction`\n }\n ] : [],\n ...clientLoaderModule ? [\n {\n module: clientLoaderModule,\n varName: `${routeVarName}_clientLoader`\n }\n ] : [],\n ...clientMiddlewareModule ? [\n {\n module: clientMiddlewareModule,\n varName: `${routeVarName}_clientMiddleware`\n }\n ] : [],\n ...hydrateFallbackModule ? [\n {\n module: hydrateFallbackModule,\n varName: `${routeVarName}_HydrateFallback`\n }\n ] : [],\n { module, varName: `${routeVarName}_main` }\n ];\n if (chunks.length === 1) {\n return `import * as ${routeVarName} from ${JSON.stringify(module)};`;\n }\n let chunkImportsSnippet = chunks.map((chunk) => `import * as ${chunk.varName} from \"${chunk.module}\";`).join(\"\\n\");\n let mergedChunksSnippet = `const ${routeVarName} = {${chunks.map((chunk) => `...${chunk.varName}`).join(\",\")}};`;\n return [chunkImportsSnippet, mergedChunksSnippet].join(\"\\n\");\n }).join(\"\\n\")}\n ${enableFogOfWar ? (\n // Inline a minimal manifest with the SSR matches\n `window.__reactRouterManifest = ${JSON.stringify(\n getPartialManifest(manifest, router),\n null,\n 2\n )};`\n ) : \"\"}\n window.__reactRouterRouteModules = {${matches.map((match, index) => `${JSON.stringify(match.route.id)}:route${index}`).join(\",\")}};\n\nimport(${JSON.stringify(manifest.entry.module)});`;\n return /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(\n \"script\",\n {\n ...scriptProps,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: { __html: contextScript },\n type: void 0\n }\n ), /* @__PURE__ */ React8.createElement(\n \"script\",\n {\n ...scriptProps,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: { __html: routeModulesScript },\n type: \"module\",\n async: true\n }\n ));\n }, []);\n let preloads = isHydrated || isRSCRouterContext ? [] : dedupe(\n manifest.entry.imports.concat(\n getModuleLinkHrefs(matches, manifest, {\n includeHydrateFallback: true\n })\n )\n );\n let sri = typeof manifest.sri === \"object\" ? manifest.sri : {};\n warnOnce(\n !isRSCRouterContext,\n \"The <Scripts /> element is a no-op when using RSC and can be safely removed.\"\n );\n return isHydrated || isRSCRouterContext ? null : /* @__PURE__ */ React8.createElement(React8.Fragment, null, typeof manifest.sri === \"object\" ? /* @__PURE__ */ React8.createElement(\n \"script\",\n {\n ...scriptProps,\n \"rr-importmap\": \"\",\n type: \"importmap\",\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: JSON.stringify({\n integrity: sri\n })\n }\n }\n ) : null, !enableFogOfWar ? /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n rel: \"modulepreload\",\n href: manifest.url,\n crossOrigin: scriptProps.crossOrigin,\n integrity: sri[manifest.url],\n suppressHydrationWarning: true\n }\n ) : null, /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n rel: \"modulepreload\",\n href: manifest.entry.module,\n crossOrigin: scriptProps.crossOrigin,\n integrity: sri[manifest.entry.module],\n suppressHydrationWarning: true\n }\n ), preloads.map((path) => /* @__PURE__ */ React8.createElement(\n \"link\",\n {\n key: path,\n rel: \"modulepreload\",\n href: path,\n crossOrigin: scriptProps.crossOrigin,\n integrity: sri[path],\n suppressHydrationWarning: true\n }\n )), initialScripts);\n}\nfunction dedupe(array) {\n return [...new Set(array)];\n}\nfunction mergeRefs(...refs) {\n return (value) => {\n refs.forEach((ref) => {\n if (typeof ref === \"function\") {\n ref(value);\n } else if (ref != null) {\n ref.current = value;\n }\n });\n };\n}\n\n// lib/dom/ssr/errorBoundaries.tsx\nvar RemixErrorBoundary = class extends React9.Component {\n constructor(props) {\n super(props);\n this.state = { error: props.error || null, location: props.location };\n }\n static getDerivedStateFromError(error) {\n return { error };\n }\n static getDerivedStateFromProps(props, state) {\n if (state.location !== props.location) {\n return { error: props.error || null, location: props.location };\n }\n return { error: props.error || state.error, location: state.location };\n }\n render() {\n if (this.state.error) {\n return /* @__PURE__ */ React9.createElement(\n RemixRootDefaultErrorBoundary,\n {\n error: this.state.error,\n isOutsideRemixApp: true\n }\n );\n } else {\n return this.props.children;\n }\n }\n};\nfunction RemixRootDefaultErrorBoundary({\n error,\n isOutsideRemixApp\n}) {\n console.error(error);\n let heyDeveloper = /* @__PURE__ */ React9.createElement(\n \"script\",\n {\n dangerouslySetInnerHTML: {\n __html: `\n console.log(\n \"\\u{1F4BF} Hey developer \\u{1F44B}. You can provide a way better UX than this when your app throws errors. Check out https://reactrouter.com/how-to/error-boundary for more information.\"\n );\n `\n }\n }\n );\n if (isRouteErrorResponse(error)) {\n return /* @__PURE__ */ React9.createElement(BoundaryShell, { title: \"Unhandled Thrown Response!\" }, /* @__PURE__ */ React9.createElement(\"h1\", { style: { fontSize: \"24px\" } }, error.status, \" \", error.statusText), ENABLE_DEV_WARNINGS ? heyDeveloper : null);\n }\n let errorInstance;\n if (error instanceof Error) {\n errorInstance = error;\n } else {\n let errorString = error == null ? \"Unknown Error\" : typeof error === \"object\" && \"toString\" in error ? error.toString() : JSON.stringify(error);\n errorInstance = new Error(errorString);\n }\n return /* @__PURE__ */ React9.createElement(\n BoundaryShell,\n {\n title: \"Application Error!\",\n isOutsideRemixApp\n },\n /* @__PURE__ */ React9.createElement(\"h1\", { style: { fontSize: \"24px\" } }, \"Application Error\"),\n /* @__PURE__ */ React9.createElement(\n \"pre\",\n {\n style: {\n padding: \"2rem\",\n background: \"hsla(10, 50%, 50%, 0.1)\",\n color: \"red\",\n overflow: \"auto\"\n }\n },\n errorInstance.stack\n ),\n heyDeveloper\n );\n}\nfunction BoundaryShell({\n title,\n renderScripts,\n isOutsideRemixApp,\n children\n}) {\n let { routeModules } = useFrameworkContext();\n if (routeModules.root?.Layout && !isOutsideRemixApp) {\n return children;\n }\n return /* @__PURE__ */ React9.createElement(\"html\", { lang: \"en\" }, /* @__PURE__ */ React9.createElement(\"head\", null, /* @__PURE__ */ React9.createElement(\"meta\", { charSet: \"utf-8\" }), /* @__PURE__ */ React9.createElement(\n \"meta\",\n {\n name: \"viewport\",\n content: \"width=device-width,initial-scale=1,viewport-fit=cover\"\n }\n ), /* @__PURE__ */ React9.createElement(\"title\", null, title)), /* @__PURE__ */ React9.createElement(\"body\", null, /* @__PURE__ */ React9.createElement(\"main\", { style: { fontFamily: \"system-ui, sans-serif\", padding: \"2rem\" } }, children, renderScripts ? /* @__PURE__ */ React9.createElement(Scripts, null) : null)));\n}\n\n// lib/dom/lib.tsx\nimport * as React10 from \"react\";\nvar isBrowser2 = typeof window !== \"undefined\" && typeof window.document !== \"undefined\" && typeof window.document.createElement !== \"undefined\";\ntry {\n if (isBrowser2) {\n window.__reactRouterVersion = // @ts-expect-error\n \"7.13.0\";\n }\n} catch (e) {\n}\nfunction createBrowserRouter(routes, opts) {\n return createRouter({\n basename: opts?.basename,\n getContext: opts?.getContext,\n future: opts?.future,\n history: createBrowserHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n hydrationRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n window: opts?.window,\n unstable_instrumentations: opts?.unstable_instrumentations\n }).initialize();\n}\nfunction createHashRouter(routes, opts) {\n return createRouter({\n basename: opts?.basename,\n getContext: opts?.getContext,\n future: opts?.future,\n history: createHashHistory({ window: opts?.window }),\n hydrationData: opts?.hydrationData || parseHydrationData(),\n routes,\n mapRouteProperties,\n hydrationRouteProperties,\n dataStrategy: opts?.dataStrategy,\n patchRoutesOnNavigation: opts?.patchRoutesOnNavigation,\n window: opts?.window,\n unstable_instrumentations: opts?.unstable_instrumentations\n }).initialize();\n}\nfunction parseHydrationData() {\n let state = window?.__staticRouterHydrationData;\n if (state && state.errors) {\n state = {\n ...state,\n errors: deserializeErrors(state.errors)\n };\n }\n return state;\n}\nfunction deserializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n if (val && val.__type === \"RouteErrorResponse\") {\n serialized[key] = new ErrorResponseImpl(\n val.status,\n val.statusText,\n val.data,\n val.internal === true\n );\n } else if (val && val.__type === \"Error\") {\n if (val.__subType) {\n let ErrorConstructor = window[val.__subType];\n if (typeof ErrorConstructor === \"function\") {\n try {\n let error = new ErrorConstructor(val.message);\n error.stack = \"\";\n serialized[key] = error;\n } catch (e) {\n }\n }\n }\n if (serialized[key] == null) {\n let error = new Error(val.message);\n error.stack = \"\";\n serialized[key] = error;\n }\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nfunction BrowserRouter({\n basename,\n children,\n unstable_useTransitions,\n window: window2\n}) {\n let historyRef = React10.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window: window2, v5Compat: true });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React10.useState({\n action: history.action,\n location: history.location\n });\n let setState = React10.useCallback(\n (newState) => {\n if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React10.startTransition(() => setStateImpl(newState));\n }\n },\n [unstable_useTransitions]\n );\n React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React10.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n unstable_useTransitions\n }\n );\n}\nfunction HashRouter({\n basename,\n children,\n unstable_useTransitions,\n window: window2\n}) {\n let historyRef = React10.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window: window2, v5Compat: true });\n }\n let history = historyRef.current;\n let [state, setStateImpl] = React10.useState({\n action: history.action,\n location: history.location\n });\n let setState = React10.useCallback(\n (newState) => {\n if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React10.startTransition(() => setStateImpl(newState));\n }\n },\n [unstable_useTransitions]\n );\n React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React10.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n unstable_useTransitions\n }\n );\n}\nfunction HistoryRouter({\n basename,\n children,\n history,\n unstable_useTransitions\n}) {\n let [state, setStateImpl] = React10.useState({\n action: history.action,\n location: history.location\n });\n let setState = React10.useCallback(\n (newState) => {\n if (unstable_useTransitions === false) {\n setStateImpl(newState);\n } else {\n React10.startTransition(() => setStateImpl(newState));\n }\n },\n [unstable_useTransitions]\n );\n React10.useLayoutEffect(() => history.listen(setState), [history, setState]);\n return /* @__PURE__ */ React10.createElement(\n Router,\n {\n basename,\n children,\n location: state.location,\n navigationType: state.action,\n navigator: history,\n unstable_useTransitions\n }\n );\n}\nHistoryRouter.displayName = \"unstable_HistoryRouter\";\nvar ABSOLUTE_URL_REGEX2 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\nvar Link = React10.forwardRef(\n function LinkWithRef({\n onClick,\n discover = \"render\",\n prefetch = \"none\",\n relative,\n reloadDocument,\n replace: replace2,\n state,\n target,\n to,\n preventScrollReset,\n viewTransition,\n unstable_defaultShouldRevalidate,\n ...rest\n }, forwardedRef) {\n let { basename, unstable_useTransitions } = React10.useContext(NavigationContext);\n let isAbsolute = typeof to === \"string\" && ABSOLUTE_URL_REGEX2.test(to);\n let parsed = parseToInfo(to, basename);\n to = parsed.to;\n let href = useHref(to, { relative });\n let [shouldPrefetch, prefetchRef, prefetchHandlers] = usePrefetchBehavior(\n prefetch,\n rest\n );\n let internalOnClick = useLinkClickHandler(to, {\n replace: replace2,\n state,\n target,\n preventScrollReset,\n relative,\n viewTransition,\n unstable_defaultShouldRevalidate,\n unstable_useTransitions\n });\n function handleClick(event) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented) {\n internalOnClick(event);\n }\n }\n let link = (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n /* @__PURE__ */ React10.createElement(\n \"a\",\n {\n ...rest,\n ...prefetchHandlers,\n href: parsed.absoluteURL || href,\n onClick: parsed.isExternal || reloadDocument ? onClick : handleClick,\n ref: mergeRefs(forwardedRef, prefetchRef),\n target,\n \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n }\n )\n );\n return shouldPrefetch && !isAbsolute ? /* @__PURE__ */ React10.createElement(React10.Fragment, null, link, /* @__PURE__ */ React10.createElement(PrefetchPageLinks, { page: href })) : link;\n }\n);\nLink.displayName = \"Link\";\nvar NavLink = React10.forwardRef(\n function NavLinkWithRef({\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n viewTransition,\n children,\n ...rest\n }, ref) {\n let path = useResolvedPath(to, { relative: rest.relative });\n let location = useLocation();\n let routerState = React10.useContext(DataRouterStateContext);\n let { navigator, basename } = React10.useContext(NavigationContext);\n let isTransitioning = routerState != null && // Conditional usage is OK here because the usage of a data router is static\n // eslint-disable-next-line react-hooks/rules-of-hooks\n useViewTransitionState(path) && viewTransition === true;\n let toPathname = navigator.encodeLocation ? navigator.encodeLocation(path).pathname : path.pathname;\n let locationPathname = location.pathname;\n let nextLocationPathname = routerState && routerState.navigation && routerState.navigation.location ? routerState.navigation.location.pathname : null;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n nextLocationPathname = nextLocationPathname ? nextLocationPathname.toLowerCase() : null;\n toPathname = toPathname.toLowerCase();\n }\n if (nextLocationPathname && basename) {\n nextLocationPathname = stripBasename(nextLocationPathname, basename) || nextLocationPathname;\n }\n const endSlashPosition = toPathname !== \"/\" && toPathname.endsWith(\"/\") ? toPathname.length - 1 : toPathname.length;\n let isActive = locationPathname === toPathname || !end && locationPathname.startsWith(toPathname) && locationPathname.charAt(endSlashPosition) === \"/\";\n let isPending = nextLocationPathname != null && (nextLocationPathname === toPathname || !end && nextLocationPathname.startsWith(toPathname) && nextLocationPathname.charAt(toPathname.length) === \"/\");\n let renderProps = {\n isActive,\n isPending,\n isTransitioning\n };\n let ariaCurrent = isActive ? ariaCurrentProp : void 0;\n let className;\n if (typeof classNameProp === \"function\") {\n className = classNameProp(renderProps);\n } else {\n className = [\n classNameProp,\n isActive ? \"active\" : null,\n isPending ? \"pending\" : null,\n isTransitioning ? \"transitioning\" : null\n ].filter(Boolean).join(\" \");\n }\n let style = typeof styleProp === \"function\" ? styleProp(renderProps) : styleProp;\n return /* @__PURE__ */ React10.createElement(\n Link,\n {\n ...rest,\n \"aria-current\": ariaCurrent,\n className,\n ref,\n style,\n to,\n viewTransition\n },\n typeof children === \"function\" ? children(renderProps) : children\n );\n }\n);\nNavLink.displayName = \"NavLink\";\nvar Form = React10.forwardRef(\n ({\n discover = \"render\",\n fetcherKey,\n navigate,\n reloadDocument,\n replace: replace2,\n state,\n method = defaultMethod,\n action,\n onSubmit,\n relative,\n preventScrollReset,\n viewTransition,\n unstable_defaultShouldRevalidate,\n ...props\n }, forwardedRef) => {\n let { unstable_useTransitions } = React10.useContext(NavigationContext);\n let submit = useSubmit();\n let formAction = useFormAction(action, { relative });\n let formMethod = method.toLowerCase() === \"get\" ? \"get\" : \"post\";\n let isAbsolute = typeof action === \"string\" && ABSOLUTE_URL_REGEX2.test(action);\n let submitHandler = (event) => {\n onSubmit && onSubmit(event);\n if (event.defaultPrevented) return;\n event.preventDefault();\n let submitter = event.nativeEvent.submitter;\n let submitMethod = submitter?.getAttribute(\"formmethod\") || method;\n let doSubmit = () => submit(submitter || event.currentTarget, {\n fetcherKey,\n method: submitMethod,\n navigate,\n replace: replace2,\n state,\n relative,\n preventScrollReset,\n viewTransition,\n unstable_defaultShouldRevalidate\n });\n if (unstable_useTransitions && navigate !== false) {\n React10.startTransition(() => doSubmit());\n } else {\n doSubmit();\n }\n };\n return /* @__PURE__ */ React10.createElement(\n \"form\",\n {\n ref: forwardedRef,\n method: formMethod,\n action: formAction,\n onSubmit: reloadDocument ? onSubmit : submitHandler,\n ...props,\n \"data-discover\": !isAbsolute && discover === \"render\" ? \"true\" : void 0\n }\n );\n }\n);\nForm.displayName = \"Form\";\nfunction ScrollRestoration({\n getKey,\n storageKey,\n ...props\n}) {\n let remixContext = React10.useContext(FrameworkContext);\n let { basename } = React10.useContext(NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n useScrollRestoration({ getKey, storageKey });\n let ssrKey = React10.useMemo(\n () => {\n if (!remixContext || !getKey) return null;\n let userKey = getScrollRestorationKey(\n location,\n matches,\n basename,\n getKey\n );\n return userKey !== location.key ? userKey : null;\n },\n // Nah, we only need this the first time for the SSR render\n // eslint-disable-next-line react-hooks/exhaustive-deps\n []\n );\n if (!remixContext || remixContext.isSpaMode) {\n return null;\n }\n let restoreScroll = ((storageKey2, restoreKey) => {\n if (!window.history.state || !window.history.state.key) {\n let key = Math.random().toString(32).slice(2);\n window.history.replaceState({ key }, \"\");\n }\n try {\n let positions = JSON.parse(sessionStorage.getItem(storageKey2) || \"{}\");\n let storedY = positions[restoreKey || window.history.state.key];\n if (typeof storedY === \"number\") {\n window.scrollTo(0, storedY);\n }\n } catch (error) {\n console.error(error);\n sessionStorage.removeItem(storageKey2);\n }\n }).toString();\n return /* @__PURE__ */ React10.createElement(\n \"script\",\n {\n ...props,\n suppressHydrationWarning: true,\n dangerouslySetInnerHTML: {\n __html: `(${restoreScroll})(${escapeHtml(\n JSON.stringify(storageKey || SCROLL_RESTORATION_STORAGE_KEY)\n )}, ${escapeHtml(JSON.stringify(ssrKey))})`\n }\n }\n );\n}\nScrollRestoration.displayName = \"ScrollRestoration\";\nfunction getDataRouterConsoleError2(hookName) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/en/main/routers/picking-a-router.`;\n}\nfunction useDataRouterContext3(hookName) {\n let ctx = React10.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError2(hookName));\n return ctx;\n}\nfunction useDataRouterState2(hookName) {\n let state = React10.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError2(hookName));\n return state;\n}\nfunction useLinkClickHandler(to, {\n target,\n replace: replaceProp,\n state,\n preventScrollReset,\n relative,\n viewTransition,\n unstable_defaultShouldRevalidate,\n unstable_useTransitions\n} = {}) {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to, { relative });\n return React10.useCallback(\n (event) => {\n if (shouldProcessLinkClick(event, target)) {\n event.preventDefault();\n let replace2 = replaceProp !== void 0 ? replaceProp : createPath(location) === createPath(path);\n let doNavigate = () => navigate(to, {\n replace: replace2,\n state,\n preventScrollReset,\n relative,\n viewTransition,\n unstable_defaultShouldRevalidate\n });\n if (unstable_useTransitions) {\n React10.startTransition(() => doNavigate());\n } else {\n doNavigate();\n }\n }\n },\n [\n location,\n navigate,\n path,\n replaceProp,\n state,\n target,\n to,\n preventScrollReset,\n relative,\n viewTransition,\n unstable_defaultShouldRevalidate,\n unstable_useTransitions\n ]\n );\n}\nfunction useSearchParams(defaultInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not support the URLSearchParams API. If you need to support Internet Explorer 11, we recommend you load a polyfill such as https://github.com/ungap/url-search-params.`\n );\n let defaultSearchParamsRef = React10.useRef(createSearchParams(defaultInit));\n let hasSetSearchParamsRef = React10.useRef(false);\n let location = useLocation();\n let searchParams = React10.useMemo(\n () => (\n // Only merge in the defaults if we haven't yet called setSearchParams.\n // Once we call that we want those to take precedence, otherwise you can't\n // remove a param with setSearchParams({}) if it has an initial value\n getSearchParamsForLocation(\n location.search,\n hasSetSearchParamsRef.current ? null : defaultSearchParamsRef.current\n )\n ),\n [location.search]\n );\n let navigate = useNavigate();\n let setSearchParams = React10.useCallback(\n (nextInit, navigateOptions) => {\n const newSearchParams = createSearchParams(\n typeof nextInit === \"function\" ? nextInit(new URLSearchParams(searchParams)) : nextInit\n );\n hasSetSearchParamsRef.current = true;\n navigate(\"?\" + newSearchParams, navigateOptions);\n },\n [navigate, searchParams]\n );\n return [searchParams, setSearchParams];\n}\nvar fetcherId = 0;\nvar getUniqueFetcherId = () => `__${String(++fetcherId)}__`;\nfunction useSubmit() {\n let { router } = useDataRouterContext3(\"useSubmit\" /* UseSubmit */);\n let { basename } = React10.useContext(NavigationContext);\n let currentRouteId = useRouteId();\n let routerFetch = router.fetch;\n let routerNavigate = router.navigate;\n return React10.useCallback(\n async (target, options = {}) => {\n let { action, method, encType, formData, body } = getFormSubmissionInfo(\n target,\n basename\n );\n if (options.navigate === false) {\n let key = options.fetcherKey || getUniqueFetcherId();\n await routerFetch(key, currentRouteId, options.action || action, {\n unstable_defaultShouldRevalidate: options.unstable_defaultShouldRevalidate,\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n flushSync: options.flushSync\n });\n } else {\n await routerNavigate(options.action || action, {\n unstable_defaultShouldRevalidate: options.unstable_defaultShouldRevalidate,\n preventScrollReset: options.preventScrollReset,\n formData,\n body,\n formMethod: options.method || method,\n formEncType: options.encType || encType,\n replace: options.replace,\n state: options.state,\n fromRouteId: currentRouteId,\n flushSync: options.flushSync,\n viewTransition: options.viewTransition\n });\n }\n },\n [routerFetch, routerNavigate, basename, currentRouteId]\n );\n}\nfunction useFormAction(action, { relative } = {}) {\n let { basename } = React10.useContext(NavigationContext);\n let routeContext = React10.useContext(RouteContext);\n invariant(routeContext, \"useFormAction must be used inside a RouteContext\");\n let [match] = routeContext.matches.slice(-1);\n let path = { ...useResolvedPath(action ? action : \".\", { relative }) };\n let location = useLocation();\n if (action == null) {\n path.search = location.search;\n let params = new URLSearchParams(path.search);\n let indexValues = params.getAll(\"index\");\n let hasNakedIndexParam = indexValues.some((v) => v === \"\");\n if (hasNakedIndexParam) {\n params.delete(\"index\");\n indexValues.filter((v) => v).forEach((v) => params.append(\"index\", v));\n let qs = params.toString();\n path.search = qs ? `?${qs}` : \"\";\n }\n }\n if ((!action || action === \".\") && match.route.index) {\n path.search = path.search ? path.search.replace(/^\\?/, \"?index&\") : \"?index\";\n }\n if (basename !== \"/\") {\n path.pathname = path.pathname === \"/\" ? basename : joinPaths([basename, path.pathname]);\n }\n return createPath(path);\n}\nfunction useFetcher({\n key\n} = {}) {\n let { router } = useDataRouterContext3(\"useFetcher\" /* UseFetcher */);\n let state = useDataRouterState2(\"useFetcher\" /* UseFetcher */);\n let fetcherData = React10.useContext(FetchersContext);\n let route = React10.useContext(RouteContext);\n let routeId = route.matches[route.matches.length - 1]?.route.id;\n invariant(fetcherData, `useFetcher must be used inside a FetchersContext`);\n invariant(route, `useFetcher must be used inside a RouteContext`);\n invariant(\n routeId != null,\n `useFetcher can only be used on routes that contain a unique \"id\"`\n );\n let defaultKey = React10.useId();\n let [fetcherKey, setFetcherKey] = React10.useState(key || defaultKey);\n if (key && key !== fetcherKey) {\n setFetcherKey(key);\n }\n let { deleteFetcher, getFetcher, resetFetcher, fetch: routerFetch } = router;\n React10.useEffect(() => {\n getFetcher(fetcherKey);\n return () => deleteFetcher(fetcherKey);\n }, [deleteFetcher, getFetcher, fetcherKey]);\n let load = React10.useCallback(\n async (href, opts) => {\n invariant(routeId, \"No routeId available for fetcher.load()\");\n await routerFetch(fetcherKey, routeId, href, opts);\n },\n [fetcherKey, routeId, routerFetch]\n );\n let submitImpl = useSubmit();\n let submit = React10.useCallback(\n async (target, opts) => {\n await submitImpl(target, {\n ...opts,\n navigate: false,\n fetcherKey\n });\n },\n [fetcherKey, submitImpl]\n );\n let reset = React10.useCallback(\n (opts) => resetFetcher(fetcherKey, opts),\n [resetFetcher, fetcherKey]\n );\n let FetcherForm = React10.useMemo(() => {\n let FetcherForm2 = React10.forwardRef(\n (props, ref) => {\n return /* @__PURE__ */ React10.createElement(Form, { ...props, navigate: false, fetcherKey, ref });\n }\n );\n FetcherForm2.displayName = \"fetcher.Form\";\n return FetcherForm2;\n }, [fetcherKey]);\n let fetcher = state.fetchers.get(fetcherKey) || IDLE_FETCHER;\n let data2 = fetcherData.get(fetcherKey);\n let fetcherWithComponents = React10.useMemo(\n () => ({\n Form: FetcherForm,\n submit,\n load,\n reset,\n ...fetcher,\n data: data2\n }),\n [FetcherForm, submit, load, reset, fetcher, data2]\n );\n return fetcherWithComponents;\n}\nfunction useFetchers() {\n let state = useDataRouterState2(\"useFetchers\" /* UseFetchers */);\n return Array.from(state.fetchers.entries()).map(([key, fetcher]) => ({\n ...fetcher,\n key\n }));\n}\nvar SCROLL_RESTORATION_STORAGE_KEY = \"react-router-scroll-positions\";\nvar savedScrollPositions = {};\nfunction getScrollRestorationKey(location, matches, basename, getKey) {\n let key = null;\n if (getKey) {\n if (basename !== \"/\") {\n key = getKey(\n {\n ...location,\n pathname: stripBasename(location.pathname, basename) || location.pathname\n },\n matches\n );\n } else {\n key = getKey(location, matches);\n }\n }\n if (key == null) {\n key = location.key;\n }\n return key;\n}\nfunction useScrollRestoration({\n getKey,\n storageKey\n} = {}) {\n let { router } = useDataRouterContext3(\"useScrollRestoration\" /* UseScrollRestoration */);\n let { restoreScrollPosition, preventScrollReset } = useDataRouterState2(\n \"useScrollRestoration\" /* UseScrollRestoration */\n );\n let { basename } = React10.useContext(NavigationContext);\n let location = useLocation();\n let matches = useMatches();\n let navigation = useNavigation();\n React10.useEffect(() => {\n window.history.scrollRestoration = \"manual\";\n return () => {\n window.history.scrollRestoration = \"auto\";\n };\n }, []);\n usePageHide(\n React10.useCallback(() => {\n if (navigation.state === \"idle\") {\n let key = getScrollRestorationKey(location, matches, basename, getKey);\n savedScrollPositions[key] = window.scrollY;\n }\n try {\n sessionStorage.setItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY,\n JSON.stringify(savedScrollPositions)\n );\n } catch (error) {\n warning(\n false,\n `Failed to save scroll positions in sessionStorage, <ScrollRestoration /> will not work properly (${error}).`\n );\n }\n window.history.scrollRestoration = \"auto\";\n }, [navigation.state, getKey, basename, location, matches, storageKey])\n );\n if (typeof document !== \"undefined\") {\n React10.useLayoutEffect(() => {\n try {\n let sessionPositions = sessionStorage.getItem(\n storageKey || SCROLL_RESTORATION_STORAGE_KEY\n );\n if (sessionPositions) {\n savedScrollPositions = JSON.parse(sessionPositions);\n }\n } catch (e) {\n }\n }, [storageKey]);\n React10.useLayoutEffect(() => {\n let disableScrollRestoration = router?.enableScrollRestoration(\n savedScrollPositions,\n () => window.scrollY,\n getKey ? (location2, matches2) => getScrollRestorationKey(location2, matches2, basename, getKey) : void 0\n );\n return () => disableScrollRestoration && disableScrollRestoration();\n }, [router, basename, getKey]);\n React10.useLayoutEffect(() => {\n if (restoreScrollPosition === false) {\n return;\n }\n if (typeof restoreScrollPosition === \"number\") {\n window.scrollTo(0, restoreScrollPosition);\n return;\n }\n try {\n if (location.hash) {\n let el = document.getElementById(\n decodeURIComponent(location.hash.slice(1))\n );\n if (el) {\n el.scrollIntoView();\n return;\n }\n }\n } catch {\n warning(\n false,\n `\"${location.hash.slice(\n 1\n )}\" is not a decodable element ID. The view will not scroll to it.`\n );\n }\n if (preventScrollReset === true) {\n return;\n }\n window.scrollTo(0, 0);\n }, [location, restoreScrollPosition, preventScrollReset]);\n }\n}\nfunction useBeforeUnload(callback, options) {\n let { capture } = options || {};\n React10.useEffect(() => {\n let opts = capture != null ? { capture } : void 0;\n window.addEventListener(\"beforeunload\", callback, opts);\n return () => {\n window.removeEventListener(\"beforeunload\", callback, opts);\n };\n }, [callback, capture]);\n}\nfunction usePageHide(callback, options) {\n let { capture } = options || {};\n React10.useEffect(() => {\n let opts = capture != null ? { capture } : void 0;\n window.addEventListener(\"pagehide\", callback, opts);\n return () => {\n window.removeEventListener(\"pagehide\", callback, opts);\n };\n }, [callback, capture]);\n}\nfunction usePrompt({\n when,\n message\n}) {\n let blocker = useBlocker(when);\n React10.useEffect(() => {\n if (blocker.state === \"blocked\") {\n let proceed = window.confirm(message);\n if (proceed) {\n setTimeout(blocker.proceed, 0);\n } else {\n blocker.reset();\n }\n }\n }, [blocker, message]);\n React10.useEffect(() => {\n if (blocker.state === \"blocked\" && !when) {\n blocker.reset();\n }\n }, [blocker, when]);\n}\nfunction useViewTransitionState(to, { relative } = {}) {\n let vtContext = React10.useContext(ViewTransitionContext);\n invariant(\n vtContext != null,\n \"`useViewTransitionState` must be used within `react-router-dom`'s `RouterProvider`. Did you accidentally import `RouterProvider` from `react-router`?\"\n );\n let { basename } = useDataRouterContext3(\n \"useViewTransitionState\" /* useViewTransitionState */\n );\n let path = useResolvedPath(to, { relative });\n if (!vtContext.isTransitioning) {\n return false;\n }\n let currentPath = stripBasename(vtContext.currentLocation.pathname, basename) || vtContext.currentLocation.pathname;\n let nextPath = stripBasename(vtContext.nextLocation.pathname, basename) || vtContext.nextLocation.pathname;\n return matchPath(path.pathname, nextPath) != null || matchPath(path.pathname, currentPath) != null;\n}\n\n// lib/dom/server.tsx\nimport * as React11 from \"react\";\nfunction StaticRouter({\n basename,\n children,\n location: locationProp = \"/\"\n}) {\n if (typeof locationProp === \"string\") {\n locationProp = parsePath(locationProp);\n }\n let action = \"POP\" /* Pop */;\n let location = {\n pathname: locationProp.pathname || \"/\",\n search: locationProp.search || \"\",\n hash: locationProp.hash || \"\",\n state: locationProp.state != null ? locationProp.state : null,\n key: locationProp.key || \"default\"\n };\n let staticNavigator = getStatelessNavigator();\n return /* @__PURE__ */ React11.createElement(\n Router,\n {\n basename,\n children,\n location,\n navigationType: action,\n navigator: staticNavigator,\n static: true,\n unstable_useTransitions: false\n }\n );\n}\nfunction StaticRouterProvider({\n context,\n router,\n hydrate: hydrate2 = true,\n nonce\n}) {\n invariant(\n router && context,\n \"You must provide `router` and `context` to <StaticRouterProvider>\"\n );\n let dataRouterContext = {\n router,\n navigator: getStatelessNavigator(),\n static: true,\n staticContext: context,\n basename: context.basename || \"/\"\n };\n let fetchersContext = /* @__PURE__ */ new Map();\n let hydrateScript = \"\";\n if (hydrate2 !== false) {\n let data2 = {\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: serializeErrors(context.errors)\n };\n let json = escapeHtml(JSON.stringify(JSON.stringify(data2)));\n hydrateScript = `window.__staticRouterHydrationData = JSON.parse(${json});`;\n }\n let { state } = dataRouterContext.router;\n return /* @__PURE__ */ React11.createElement(React11.Fragment, null, /* @__PURE__ */ React11.createElement(DataRouterContext.Provider, { value: dataRouterContext }, /* @__PURE__ */ React11.createElement(DataRouterStateContext.Provider, { value: state }, /* @__PURE__ */ React11.createElement(FetchersContext.Provider, { value: fetchersContext }, /* @__PURE__ */ React11.createElement(ViewTransitionContext.Provider, { value: { isTransitioning: false } }, /* @__PURE__ */ React11.createElement(\n Router,\n {\n basename: dataRouterContext.basename,\n location: state.location,\n navigationType: state.historyAction,\n navigator: dataRouterContext.navigator,\n static: dataRouterContext.static,\n unstable_useTransitions: false\n },\n /* @__PURE__ */ React11.createElement(\n DataRoutes2,\n {\n routes: router.routes,\n future: router.future,\n state\n }\n )\n ))))), hydrateScript ? /* @__PURE__ */ React11.createElement(\n \"script\",\n {\n suppressHydrationWarning: true,\n nonce,\n dangerouslySetInnerHTML: { __html: hydrateScript }\n }\n ) : null);\n}\nfunction DataRoutes2({\n routes,\n future,\n state\n}) {\n return useRoutesImpl(routes, void 0, state, void 0, future);\n}\nfunction serializeErrors(errors) {\n if (!errors) return null;\n let entries = Object.entries(errors);\n let serialized = {};\n for (let [key, val] of entries) {\n if (isRouteErrorResponse(val)) {\n serialized[key] = { ...val, __type: \"RouteErrorResponse\" };\n } else if (val instanceof Error) {\n serialized[key] = {\n message: val.message,\n __type: \"Error\",\n // If this is a subclass (i.e., ReferenceError), send up the type so we\n // can re-create the same type during hydration.\n ...val.name !== \"Error\" ? {\n __subType: val.name\n } : {}\n };\n } else {\n serialized[key] = val;\n }\n }\n return serialized;\n}\nfunction getStatelessNavigator() {\n return {\n createHref,\n encodeLocation,\n push(to) {\n throw new Error(\n `You cannot use navigator.push() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)})\\` somewhere in your app.`\n );\n },\n replace(to) {\n throw new Error(\n `You cannot use navigator.replace() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${JSON.stringify(to)}, { replace: true })\\` somewhere in your app.`\n );\n },\n go(delta) {\n throw new Error(\n `You cannot use navigator.go() on the server because it is a stateless environment. This error was probably triggered when you did a \\`navigate(${delta})\\` somewhere in your app.`\n );\n },\n back() {\n throw new Error(\n `You cannot use navigator.back() on the server because it is a stateless environment.`\n );\n },\n forward() {\n throw new Error(\n `You cannot use navigator.forward() on the server because it is a stateless environment.`\n );\n }\n };\n}\nfunction createStaticHandler2(routes, opts) {\n return createStaticHandler(routes, {\n ...opts,\n mapRouteProperties\n });\n}\nfunction createStaticRouter(routes, context, opts = {}) {\n let manifest = {};\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n mapRouteProperties,\n void 0,\n manifest\n );\n let matches = context.matches.map((match) => {\n let route = manifest[match.route.id] || match.route;\n return {\n ...match,\n route\n };\n });\n let msg = (method) => `You cannot use router.${method}() on the server because it is a stateless environment`;\n return {\n get basename() {\n return context.basename;\n },\n get future() {\n return {\n v8_middleware: false,\n ...opts?.future\n };\n },\n get state() {\n return {\n historyAction: \"POP\" /* Pop */,\n location: context.location,\n matches,\n loaderData: context.loaderData,\n actionData: context.actionData,\n errors: context.errors,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n restoreScrollPosition: null,\n preventScrollReset: false,\n revalidation: \"idle\",\n fetchers: /* @__PURE__ */ new Map(),\n blockers: /* @__PURE__ */ new Map()\n };\n },\n get routes() {\n return dataRoutes;\n },\n get window() {\n return void 0;\n },\n initialize() {\n throw msg(\"initialize\");\n },\n subscribe() {\n throw msg(\"subscribe\");\n },\n enableScrollRestoration() {\n throw msg(\"enableScrollRestoration\");\n },\n navigate() {\n throw msg(\"navigate\");\n },\n fetch() {\n throw msg(\"fetch\");\n },\n revalidate() {\n throw msg(\"revalidate\");\n },\n createHref,\n encodeLocation,\n getFetcher() {\n return IDLE_FETCHER;\n },\n deleteFetcher() {\n throw msg(\"deleteFetcher\");\n },\n resetFetcher() {\n throw msg(\"resetFetcher\");\n },\n dispose() {\n throw msg(\"dispose\");\n },\n getBlocker() {\n return IDLE_BLOCKER;\n },\n deleteBlocker() {\n throw msg(\"deleteBlocker\");\n },\n patchRoutes() {\n throw msg(\"patchRoutes\");\n },\n _internalFetchControllers: /* @__PURE__ */ new Map(),\n _internalSetRoutes() {\n throw msg(\"_internalSetRoutes\");\n },\n _internalSetStateDoNotUseOrYouWillBreakYourApp() {\n throw msg(\"_internalSetStateDoNotUseOrYouWillBreakYourApp\");\n }\n };\n}\nfunction createHref(to) {\n return typeof to === \"string\" ? to : createPath(to);\n}\nfunction encodeLocation(to) {\n let href = typeof to === \"string\" ? to : createPath(to);\n href = href.replace(/ $/, \"%20\");\n let encoded = ABSOLUTE_URL_REGEX3.test(href) ? new URL(href) : new URL(href, \"http://localhost\");\n return {\n pathname: encoded.pathname,\n search: encoded.search,\n hash: encoded.hash\n };\n}\nvar ABSOLUTE_URL_REGEX3 = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nexport {\n Action,\n createMemoryHistory,\n createBrowserHistory,\n createHashHistory,\n invariant,\n createPath,\n parsePath,\n createContext,\n RouterContextProvider,\n convertRoutesToDataRoutes,\n matchRoutes,\n generatePath,\n matchPath,\n stripBasename,\n resolvePath,\n data,\n redirect,\n redirectDocument,\n replace,\n ErrorResponseImpl,\n isRouteErrorResponse,\n instrumentHandler,\n IDLE_NAVIGATION,\n IDLE_FETCHER,\n IDLE_BLOCKER,\n createRouter,\n createStaticHandler,\n getStaticContextFromError,\n isDataWithResponseInit,\n isResponse,\n isRedirectStatusCode,\n isRedirectResponse,\n isMutationMethod,\n DataRouterContext,\n DataRouterStateContext,\n RSCRouterContext,\n ViewTransitionContext,\n FetchersContext,\n AwaitContextProvider,\n NavigationContext,\n LocationContext,\n RouteContext,\n ENABLE_DEV_WARNINGS,\n decodeRedirectErrorDigest,\n decodeRouteErrorResponseDigest,\n useHref,\n useInRouterContext,\n useLocation,\n useNavigationType,\n useMatch,\n useNavigate,\n useOutletContext,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useNavigation,\n useRevalidator,\n useMatches,\n useLoaderData,\n useRouteLoaderData,\n useActionData,\n useRouteError,\n useAsyncValue,\n useAsyncError,\n useBlocker,\n useRoute,\n warnOnce,\n mapRouteProperties,\n hydrationRouteProperties,\n createMemoryRouter,\n RouterProvider,\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n Await,\n createRoutesFromChildren,\n createRoutesFromElements,\n renderMatches,\n WithComponentProps,\n withComponentProps,\n WithHydrateFallbackProps,\n withHydrateFallbackProps,\n WithErrorBoundaryProps,\n withErrorBoundaryProps,\n createSearchParams,\n escapeHtml,\n encode,\n createRequestInit,\n SingleFetchRedirectSymbol,\n SINGLE_FETCH_REDIRECT_STATUS,\n NO_BODY_STATUS_CODES,\n StreamTransfer,\n getTurboStreamSingleFetchDataStrategy,\n getSingleFetchDataStrategyImpl,\n stripIndexParam,\n singleFetchUrl,\n decodeViaTurboStream,\n RemixErrorBoundary,\n createServerRoutes,\n createClientRoutesWithHMRRevalidationOptOut,\n noActionDefinedError,\n createClientRoutes,\n shouldHydrateRouteLoader,\n getPatchRoutesOnNavigationFunction,\n useFogOFWarDiscovery,\n getManifestPath,\n FrameworkContext,\n CRITICAL_CSS_DATA_ATTRIBUTE,\n Links,\n PrefetchPageLinks,\n Meta,\n setIsHydrated,\n Scripts,\n createBrowserRouter,\n createHashRouter,\n BrowserRouter,\n HashRouter,\n HistoryRouter,\n Link,\n NavLink,\n Form,\n ScrollRestoration,\n useLinkClickHandler,\n useSearchParams,\n useSubmit,\n useFormAction,\n useFetcher,\n useFetchers,\n useScrollRestoration,\n useBeforeUnload,\n usePrompt,\n useViewTransitionState,\n StaticRouter,\n StaticRouterProvider,\n createStaticHandler2,\n createStaticRouter\n};\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\n\nexport { mergeClasses, toKebabCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\n xmlns: \"http://www.w3.org/2000/svg\",\n width: 24,\n height: 24,\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\"\n};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => {\n return createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n );\n }\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(`lucide-${toKebabCase(iconName)}`, className),\n ...props\n })\n );\n Component.displayName = `${iconName}`;\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Activity = createLucideIcon(\"Activity\", [\n [\n \"path\",\n {\n d: \"M22 12h-2.48a2 2 0 0 0-1.93 1.46l-2.35 8.36a.25.25 0 0 1-.48 0L9.24 2.18a.25.25 0 0 0-.48 0l-2.35 8.36A2 2 0 0 1 4.49 12H2\",\n key: \"169zse\"\n }\n ]\n]);\n\nexport { Activity as default };\n//# sourceMappingURL=activity.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowDown = createLucideIcon(\"ArrowDown\", [\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }],\n [\"path\", { d: \"m19 12-7 7-7-7\", key: \"1idqje\" }]\n]);\n\nexport { ArrowDown as default };\n//# sourceMappingURL=arrow-down.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowLeft = createLucideIcon(\"ArrowLeft\", [\n [\"path\", { d: \"m12 19-7-7 7-7\", key: \"1l729n\" }],\n [\"path\", { d: \"M19 12H5\", key: \"x3x0zl\" }]\n]);\n\nexport { ArrowLeft as default };\n//# sourceMappingURL=arrow-left.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ArrowRight = createLucideIcon(\"ArrowRight\", [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"m12 5 7 7-7 7\", key: \"xquz4c\" }]\n]);\n\nexport { ArrowRight as default };\n//# sourceMappingURL=arrow-right.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Box = createLucideIcon(\"Box\", [\n [\n \"path\",\n {\n d: \"M21 8a2 2 0 0 0-1-1.73l-7-4a2 2 0 0 0-2 0l-7 4A2 2 0 0 0 3 8v8a2 2 0 0 0 1 1.73l7 4a2 2 0 0 0 2 0l7-4A2 2 0 0 0 21 16Z\",\n key: \"hh9hay\"\n }\n ],\n [\"path\", { d: \"m3.3 7 8.7 5 8.7-5\", key: \"g66t2b\" }],\n [\"path\", { d: \"M12 22V12\", key: \"d0xqtd\" }]\n]);\n\nexport { Box as default };\n//# sourceMappingURL=box.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Brain = createLucideIcon(\"Brain\", [\n [\n \"path\",\n {\n d: \"M12 5a3 3 0 1 0-5.997.125 4 4 0 0 0-2.526 5.77 4 4 0 0 0 .556 6.588A4 4 0 1 0 12 18Z\",\n key: \"l5xja\"\n }\n ],\n [\n \"path\",\n {\n d: \"M12 5a3 3 0 1 1 5.997.125 4 4 0 0 1 2.526 5.77 4 4 0 0 1-.556 6.588A4 4 0 1 1 12 18Z\",\n key: \"ep3f8r\"\n }\n ],\n [\"path\", { d: \"M15 13a4.5 4.5 0 0 1-3-4 4.5 4.5 0 0 1-3 4\", key: \"1p4c4q\" }],\n [\"path\", { d: \"M17.599 6.5a3 3 0 0 0 .399-1.375\", key: \"tmeiqw\" }],\n [\"path\", { d: \"M6.003 5.125A3 3 0 0 0 6.401 6.5\", key: \"105sqy\" }],\n [\"path\", { d: \"M3.477 10.896a4 4 0 0 1 .585-.396\", key: \"ql3yin\" }],\n [\"path\", { d: \"M19.938 10.5a4 4 0 0 1 .585.396\", key: \"1qfode\" }],\n [\"path\", { d: \"M6 18a4 4 0 0 1-1.967-.516\", key: \"2e4loj\" }],\n [\"path\", { d: \"M19.967 17.484A4 4 0 0 1 18 18\", key: \"159ez6\" }]\n]);\n\nexport { Brain as default };\n//# sourceMappingURL=brain.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Bug = createLucideIcon(\"Bug\", [\n [\"path\", { d: \"m8 2 1.88 1.88\", key: \"fmnt4t\" }],\n [\"path\", { d: \"M14.12 3.88 16 2\", key: \"qol33r\" }],\n [\"path\", { d: \"M9 7.13v-1a3.003 3.003 0 1 1 6 0v1\", key: \"d7y7pr\" }],\n [\n \"path\",\n {\n d: \"M12 20c-3.3 0-6-2.7-6-6v-3a4 4 0 0 1 4-4h4a4 4 0 0 1 4 4v3c0 3.3-2.7 6-6 6\",\n key: \"xs1cw7\"\n }\n ],\n [\"path\", { d: \"M12 20v-9\", key: \"1qisl0\" }],\n [\"path\", { d: \"M6.53 9C4.6 8.8 3 7.1 3 5\", key: \"32zzws\" }],\n [\"path\", { d: \"M6 13H2\", key: \"82j7cp\" }],\n [\"path\", { d: \"M3 21c0-2.1 1.7-3.9 3.8-4\", key: \"4p0ekp\" }],\n [\"path\", { d: \"M20.97 5c0 2.1-1.6 3.8-3.5 4\", key: \"18gb23\" }],\n [\"path\", { d: \"M22 13h-4\", key: \"1jl80f\" }],\n [\"path\", { d: \"M17.2 17c2.1.1 3.8 1.9 3.8 4\", key: \"k3fwyw\" }]\n]);\n\nexport { Bug as default };\n//# sourceMappingURL=bug.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronDown = createLucideIcon(\"ChevronDown\", [\n [\"path\", { d: \"m6 9 6 6 6-6\", key: \"qrunsl\" }]\n]);\n\nexport { ChevronDown as default };\n//# sourceMappingURL=chevron-down.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronLeft = createLucideIcon(\"ChevronLeft\", [\n [\"path\", { d: \"m15 18-6-6 6-6\", key: \"1wnfg3\" }]\n]);\n\nexport { ChevronLeft as default };\n//# sourceMappingURL=chevron-left.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronRight = createLucideIcon(\"ChevronRight\", [\n [\"path\", { d: \"m9 18 6-6-6-6\", key: \"mthhwq\" }]\n]);\n\nexport { ChevronRight as default };\n//# sourceMappingURL=chevron-right.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ChevronUp = createLucideIcon(\"ChevronUp\", [[\"path\", { d: \"m18 15-6-6-6 6\", key: \"153udz\" }]]);\n\nexport { ChevronUp as default };\n//# sourceMappingURL=chevron-up.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleCheckBig = createLucideIcon(\"CircleCheckBig\", [\n [\"path\", { d: \"M21.801 10A10 10 0 1 1 17 3.335\", key: \"yps3ct\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n]);\n\nexport { CircleCheckBig as default };\n//# sourceMappingURL=circle-check-big.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleCheck = createLucideIcon(\"CircleCheck\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m9 12 2 2 4-4\", key: \"dzmm74\" }]\n]);\n\nexport { CircleCheck as default };\n//# sourceMappingURL=circle-check.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst CircleX = createLucideIcon(\"CircleX\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"path\", { d: \"m15 9-6 6\", key: \"1uzhvr\" }],\n [\"path\", { d: \"m9 9 6 6\", key: \"z0biqf\" }]\n]);\n\nexport { CircleX as default };\n//# sourceMappingURL=circle-x.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Circle = createLucideIcon(\"Circle\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }]\n]);\n\nexport { Circle as default };\n//# sourceMappingURL=circle.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Clock = createLucideIcon(\"Clock\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"10\", key: \"1mglay\" }],\n [\"polyline\", { points: \"12 6 12 12 16 14\", key: \"68esgv\" }]\n]);\n\nexport { Clock as default };\n//# sourceMappingURL=clock.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Database = createLucideIcon(\"Database\", [\n [\"ellipse\", { cx: \"12\", cy: \"5\", rx: \"9\", ry: \"3\", key: \"msslwz\" }],\n [\"path\", { d: \"M3 5V19A9 3 0 0 0 21 19V5\", key: \"1wlel7\" }],\n [\"path\", { d: \"M3 12A9 3 0 0 0 21 12\", key: \"mv7ke4\" }]\n]);\n\nexport { Database as default };\n//# sourceMappingURL=database.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ExternalLink = createLucideIcon(\"ExternalLink\", [\n [\"path\", { d: \"M15 3h6v6\", key: \"1q9fwt\" }],\n [\"path\", { d: \"M10 14 21 3\", key: \"gplh6r\" }],\n [\"path\", { d: \"M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6\", key: \"a6xqqp\" }]\n]);\n\nexport { ExternalLink as default };\n//# sourceMappingURL=external-link.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Eye = createLucideIcon(\"Eye\", [\n [\n \"path\",\n {\n d: \"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\",\n key: \"1nclc0\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n]);\n\nexport { Eye as default };\n//# sourceMappingURL=eye.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FileText = createLucideIcon(\"FileText\", [\n [\"path\", { d: \"M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7Z\", key: \"1rqfz7\" }],\n [\"path\", { d: \"M14 2v4a2 2 0 0 0 2 2h4\", key: \"tnqrlb\" }],\n [\"path\", { d: \"M10 9H8\", key: \"b1mrlr\" }],\n [\"path\", { d: \"M16 13H8\", key: \"t4e002\" }],\n [\"path\", { d: \"M16 17H8\", key: \"z1uh3a\" }]\n]);\n\nexport { FileText as default };\n//# sourceMappingURL=file-text.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Filter = createLucideIcon(\"Filter\", [\n [\"polygon\", { points: \"22 3 2 3 10 12.46 10 19 14 21 14 12.46 22 3\", key: \"1yg77f\" }]\n]);\n\nexport { Filter as default };\n//# sourceMappingURL=filter.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FolderKanban = createLucideIcon(\"FolderKanban\", [\n [\n \"path\",\n {\n d: \"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z\",\n key: \"1fr9dc\"\n }\n ],\n [\"path\", { d: \"M8 10v4\", key: \"tgpxqk\" }],\n [\"path\", { d: \"M12 10v2\", key: \"hh53o1\" }],\n [\"path\", { d: \"M16 10v6\", key: \"1d6xys\" }]\n]);\n\nexport { FolderKanban as default };\n//# sourceMappingURL=folder-kanban.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst FolderOpen = createLucideIcon(\"FolderOpen\", [\n [\n \"path\",\n {\n d: \"m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2\",\n key: \"usdka0\"\n }\n ]\n]);\n\nexport { FolderOpen as default };\n//# sourceMappingURL=folder-open.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst GitBranch = createLucideIcon(\"GitBranch\", [\n [\"line\", { x1: \"6\", x2: \"6\", y1: \"3\", y2: \"15\", key: \"17qcm7\" }],\n [\"circle\", { cx: \"18\", cy: \"6\", r: \"3\", key: \"1h7g24\" }],\n [\"circle\", { cx: \"6\", cy: \"18\", r: \"3\", key: \"fqmcym\" }],\n [\"path\", { d: \"M18 9a9 9 0 0 1-9 9\", key: \"n2h4wq\" }]\n]);\n\nexport { GitBranch as default };\n//# sourceMappingURL=git-branch.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst GitCommitHorizontal = createLucideIcon(\"GitCommitHorizontal\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }],\n [\"line\", { x1: \"3\", x2: \"9\", y1: \"12\", y2: \"12\", key: \"1dyftd\" }],\n [\"line\", { x1: \"15\", x2: \"21\", y1: \"12\", y2: \"12\", key: \"oup4p8\" }]\n]);\n\nexport { GitCommitHorizontal as default };\n//# sourceMappingURL=git-commit-horizontal.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst HardDrive = createLucideIcon(\"HardDrive\", [\n [\"line\", { x1: \"22\", x2: \"2\", y1: \"12\", y2: \"12\", key: \"1y58io\" }],\n [\n \"path\",\n {\n d: \"M5.45 5.11 2 12v6a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2v-6l-3.45-6.89A2 2 0 0 0 16.76 4H7.24a2 2 0 0 0-1.79 1.11z\",\n key: \"oot6mr\"\n }\n ],\n [\"line\", { x1: \"6\", x2: \"6.01\", y1: \"16\", y2: \"16\", key: \"sgf278\" }],\n [\"line\", { x1: \"10\", x2: \"10.01\", y1: \"16\", y2: \"16\", key: \"1l4acy\" }]\n]);\n\nexport { HardDrive as default };\n//# sourceMappingURL=hard-drive.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Layers = createLucideIcon(\"Layers\", [\n [\n \"path\",\n {\n d: \"M12.83 2.18a2 2 0 0 0-1.66 0L2.6 6.08a1 1 0 0 0 0 1.83l8.58 3.91a2 2 0 0 0 1.66 0l8.58-3.9a1 1 0 0 0 0-1.83z\",\n key: \"zw3jo\"\n }\n ],\n [\n \"path\",\n {\n d: \"M2 12a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 12\",\n key: \"1wduqc\"\n }\n ],\n [\n \"path\",\n {\n d: \"M2 17a1 1 0 0 0 .58.91l8.6 3.91a2 2 0 0 0 1.65 0l8.58-3.9A1 1 0 0 0 22 17\",\n key: \"kqbvx6\"\n }\n ]\n]);\n\nexport { Layers as default };\n//# sourceMappingURL=layers.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst LayoutDashboard = createLucideIcon(\"LayoutDashboard\", [\n [\"rect\", { width: \"7\", height: \"9\", x: \"3\", y: \"3\", rx: \"1\", key: \"10lvy0\" }],\n [\"rect\", { width: \"7\", height: \"5\", x: \"14\", y: \"3\", rx: \"1\", key: \"16une8\" }],\n [\"rect\", { width: \"7\", height: \"9\", x: \"14\", y: \"12\", rx: \"1\", key: \"1hutg5\" }],\n [\"rect\", { width: \"7\", height: \"5\", x: \"3\", y: \"16\", rx: \"1\", key: \"ldoo1y\" }]\n]);\n\nexport { LayoutDashboard as default };\n//# sourceMappingURL=layout-dashboard.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Lightbulb = createLucideIcon(\"Lightbulb\", [\n [\n \"path\",\n {\n d: \"M15 14c.2-1 .7-1.7 1.5-2.5 1-.9 1.5-2.2 1.5-3.5A6 6 0 0 0 6 8c0 1 .2 2.2 1.5 3.5.7.7 1.3 1.5 1.5 2.5\",\n key: \"1gvzjb\"\n }\n ],\n [\"path\", { d: \"M9 18h6\", key: \"x1upvd\" }],\n [\"path\", { d: \"M10 22h4\", key: \"ceow96\" }]\n]);\n\nexport { Lightbulb as default };\n//# sourceMappingURL=lightbulb.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ListTodo = createLucideIcon(\"ListTodo\", [\n [\"rect\", { x: \"3\", y: \"5\", width: \"6\", height: \"6\", rx: \"1\", key: \"1defrl\" }],\n [\"path\", { d: \"m3 17 2 2 4-4\", key: \"1jhpwq\" }],\n [\"path\", { d: \"M13 6h8\", key: \"15sg57\" }],\n [\"path\", { d: \"M13 12h8\", key: \"h98zly\" }],\n [\"path\", { d: \"M13 18h8\", key: \"oe0vm4\" }]\n]);\n\nexport { ListTodo as default };\n//# sourceMappingURL=list-todo.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst LoaderCircle = createLucideIcon(\"LoaderCircle\", [\n [\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]\n]);\n\nexport { LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Map = createLucideIcon(\"Map\", [\n [\n \"path\",\n {\n d: \"M14.106 5.553a2 2 0 0 0 1.788 0l3.659-1.83A1 1 0 0 1 21 4.619v12.764a1 1 0 0 1-.553.894l-4.553 2.277a2 2 0 0 1-1.788 0l-4.212-2.106a2 2 0 0 0-1.788 0l-3.659 1.83A1 1 0 0 1 3 19.381V6.618a1 1 0 0 1 .553-.894l4.553-2.277a2 2 0 0 1 1.788 0z\",\n key: \"169xi5\"\n }\n ],\n [\"path\", { d: \"M15 5.764v15\", key: \"1pn4in\" }],\n [\"path\", { d: \"M9 3.236v15\", key: \"1uimfh\" }]\n]);\n\nexport { Map as default };\n//# sourceMappingURL=map.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Menu = createLucideIcon(\"Menu\", [\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"12\", y2: \"12\", key: \"1e0a9i\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"6\", y2: \"6\", key: \"1owob3\" }],\n [\"line\", { x1: \"4\", x2: \"20\", y1: \"18\", y2: \"18\", key: \"yk5zj1\" }]\n]);\n\nexport { Menu as default };\n//# sourceMappingURL=menu.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst MessageSquare = createLucideIcon(\"MessageSquare\", [\n [\"path\", { d: \"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\", key: \"1lielz\" }]\n]);\n\nexport { MessageSquare as default };\n//# sourceMappingURL=message-square.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Monitor = createLucideIcon(\"Monitor\", [\n [\"rect\", { width: \"20\", height: \"14\", x: \"2\", y: \"3\", rx: \"2\", key: \"48i651\" }],\n [\"line\", { x1: \"8\", x2: \"16\", y1: \"21\", y2: \"21\", key: \"1svkeh\" }],\n [\"line\", { x1: \"12\", x2: \"12\", y1: \"17\", y2: \"21\", key: \"vw1qmm\" }]\n]);\n\nexport { Monitor as default };\n//# sourceMappingURL=monitor.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Moon = createLucideIcon(\"Moon\", [\n [\"path\", { d: \"M12 3a6 6 0 0 0 9 9 9 9 0 1 1-9-9Z\", key: \"a7tn18\" }]\n]);\n\nexport { Moon as default };\n//# sourceMappingURL=moon.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Play = createLucideIcon(\"Play\", [\n [\"polygon\", { points: \"6 3 20 12 6 21 6 3\", key: \"1oa8hb\" }]\n]);\n\nexport { Play as default };\n//# sourceMappingURL=play.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Plus = createLucideIcon(\"Plus\", [\n [\"path\", { d: \"M5 12h14\", key: \"1ays0h\" }],\n [\"path\", { d: \"M12 5v14\", key: \"s699le\" }]\n]);\n\nexport { Plus as default };\n//# sourceMappingURL=plus.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst RefreshCw = createLucideIcon(\"RefreshCw\", [\n [\"path\", { d: \"M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8\", key: \"v9h5vc\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }],\n [\"path\", { d: \"M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16\", key: \"3uifl3\" }],\n [\"path\", { d: \"M8 16H3v5\", key: \"1cv678\" }]\n]);\n\nexport { RefreshCw as default };\n//# sourceMappingURL=refresh-cw.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst RotateCw = createLucideIcon(\"RotateCw\", [\n [\"path\", { d: \"M21 12a9 9 0 1 1-9-9c2.52 0 4.93 1 6.74 2.74L21 8\", key: \"1p45f6\" }],\n [\"path\", { d: \"M21 3v5h-5\", key: \"1q7to0\" }]\n]);\n\nexport { RotateCw as default };\n//# sourceMappingURL=rotate-cw.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst ScrollText = createLucideIcon(\"ScrollText\", [\n [\"path\", { d: \"M15 12h-5\", key: \"r7krc0\" }],\n [\"path\", { d: \"M15 8h-5\", key: \"1khuty\" }],\n [\"path\", { d: \"M19 17V5a2 2 0 0 0-2-2H4\", key: \"zz82l3\" }],\n [\n \"path\",\n {\n d: \"M8 21h12a2 2 0 0 0 2-2v-1a1 1 0 0 0-1-1H11a1 1 0 0 0-1 1v1a2 2 0 1 1-4 0V5a2 2 0 1 0-4 0v2a1 1 0 0 0 1 1h3\",\n key: \"1ph1d7\"\n }\n ]\n]);\n\nexport { ScrollText as default };\n//# sourceMappingURL=scroll-text.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Search = createLucideIcon(\"Search\", [\n [\"circle\", { cx: \"11\", cy: \"11\", r: \"8\", key: \"4ej97u\" }],\n [\"path\", { d: \"m21 21-4.3-4.3\", key: \"1qie3q\" }]\n]);\n\nexport { Search as default };\n//# sourceMappingURL=search.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Server = createLucideIcon(\"Server\", [\n [\"rect\", { width: \"20\", height: \"8\", x: \"2\", y: \"2\", rx: \"2\", ry: \"2\", key: \"ngkwjq\" }],\n [\"rect\", { width: \"20\", height: \"8\", x: \"2\", y: \"14\", rx: \"2\", ry: \"2\", key: \"iecqi9\" }],\n [\"line\", { x1: \"6\", x2: \"6.01\", y1: \"6\", y2: \"6\", key: \"16zg32\" }],\n [\"line\", { x1: \"6\", x2: \"6.01\", y1: \"18\", y2: \"18\", key: \"nzw8ys\" }]\n]);\n\nexport { Server as default };\n//# sourceMappingURL=server.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Settings = createLucideIcon(\"Settings\", [\n [\n \"path\",\n {\n d: \"M12.22 2h-.44a2 2 0 0 0-2 2v.18a2 2 0 0 1-1 1.73l-.43.25a2 2 0 0 1-2 0l-.15-.08a2 2 0 0 0-2.73.73l-.22.38a2 2 0 0 0 .73 2.73l.15.1a2 2 0 0 1 1 1.72v.51a2 2 0 0 1-1 1.74l-.15.09a2 2 0 0 0-.73 2.73l.22.38a2 2 0 0 0 2.73.73l.15-.08a2 2 0 0 1 2 0l.43.25a2 2 0 0 1 1 1.73V20a2 2 0 0 0 2 2h.44a2 2 0 0 0 2-2v-.18a2 2 0 0 1 1-1.73l.43-.25a2 2 0 0 1 2 0l.15.08a2 2 0 0 0 2.73-.73l.22-.39a2 2 0 0 0-.73-2.73l-.15-.08a2 2 0 0 1-1-1.74v-.5a2 2 0 0 1 1-1.74l.15-.09a2 2 0 0 0 .73-2.73l-.22-.38a2 2 0 0 0-2.73-.73l-.15.08a2 2 0 0 1-2 0l-.43-.25a2 2 0 0 1-1-1.73V4a2 2 0 0 0-2-2z\",\n key: \"1qme2f\"\n }\n ],\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"3\", key: \"1v7zrd\" }]\n]);\n\nexport { Settings as default };\n//# sourceMappingURL=settings.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Shield = createLucideIcon(\"Shield\", [\n [\n \"path\",\n {\n d: \"M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z\",\n key: \"oel41y\"\n }\n ]\n]);\n\nexport { Shield as default };\n//# sourceMappingURL=shield.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Smartphone = createLucideIcon(\"Smartphone\", [\n [\"rect\", { width: \"14\", height: \"20\", x: \"5\", y: \"2\", rx: \"2\", ry: \"2\", key: \"1yt0o3\" }],\n [\"path\", { d: \"M12 18h.01\", key: \"mhygvu\" }]\n]);\n\nexport { Smartphone as default };\n//# sourceMappingURL=smartphone.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst SquareCheckBig = createLucideIcon(\"SquareCheckBig\", [\n [\"path\", { d: \"M21 10.5V19a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h12.5\", key: \"1uzm8b\" }],\n [\"path\", { d: \"m9 11 3 3L22 4\", key: \"1pflzl\" }]\n]);\n\nexport { SquareCheckBig as default };\n//# sourceMappingURL=square-check-big.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Square = createLucideIcon(\"Square\", [\n [\"rect\", { width: \"18\", height: \"18\", x: \"3\", y: \"3\", rx: \"2\", key: \"afitv7\" }]\n]);\n\nexport { Square as default };\n//# sourceMappingURL=square.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Sun = createLucideIcon(\"Sun\", [\n [\"circle\", { cx: \"12\", cy: \"12\", r: \"4\", key: \"4exip2\" }],\n [\"path\", { d: \"M12 2v2\", key: \"tus03m\" }],\n [\"path\", { d: \"M12 20v2\", key: \"1lh1kg\" }],\n [\"path\", { d: \"m4.93 4.93 1.41 1.41\", key: \"149t6j\" }],\n [\"path\", { d: \"m17.66 17.66 1.41 1.41\", key: \"ptbguv\" }],\n [\"path\", { d: \"M2 12h2\", key: \"1t8f8n\" }],\n [\"path\", { d: \"M20 12h2\", key: \"1q8mjw\" }],\n [\"path\", { d: \"m6.34 17.66-1.41 1.41\", key: \"1m8zz5\" }],\n [\"path\", { d: \"m19.07 4.93-1.41 1.41\", key: \"1shlcs\" }]\n]);\n\nexport { Sun as default };\n//# sourceMappingURL=sun.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Tablet = createLucideIcon(\"Tablet\", [\n [\"rect\", { width: \"16\", height: \"20\", x: \"4\", y: \"2\", rx: \"2\", ry: \"2\", key: \"76otgf\" }],\n [\"line\", { x1: \"12\", x2: \"12.01\", y1: \"18\", y2: \"18\", key: \"1dp563\" }]\n]);\n\nexport { Tablet as default };\n//# sourceMappingURL=tablet.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst TestTube = createLucideIcon(\"TestTube\", [\n [\"path\", { d: \"M14.5 2v17.5c0 1.4-1.1 2.5-2.5 2.5c-1.4 0-2.5-1.1-2.5-2.5V2\", key: \"125lnx\" }],\n [\"path\", { d: \"M8.5 2h7\", key: \"csnxdl\" }],\n [\"path\", { d: \"M14.5 16h-5\", key: \"1ox875\" }]\n]);\n\nexport { TestTube as default };\n//# sourceMappingURL=test-tube.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Trash2 = createLucideIcon(\"Trash2\", [\n [\"path\", { d: \"M3 6h18\", key: \"d0wm0j\" }],\n [\"path\", { d: \"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\", key: \"4alrt4\" }],\n [\"path\", { d: \"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\", key: \"v07s0e\" }],\n [\"line\", { x1: \"10\", x2: \"10\", y1: \"11\", y2: \"17\", key: \"1uufr5\" }],\n [\"line\", { x1: \"14\", x2: \"14\", y1: \"11\", y2: \"17\", key: \"xtxkd\" }]\n]);\n\nexport { Trash2 as default };\n//# sourceMappingURL=trash-2.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst TriangleAlert = createLucideIcon(\"TriangleAlert\", [\n [\n \"path\",\n {\n d: \"m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3\",\n key: \"wmoenq\"\n }\n ],\n [\"path\", { d: \"M12 9v4\", key: \"juzpu7\" }],\n [\"path\", { d: \"M12 17h.01\", key: \"p32p05\" }]\n]);\n\nexport { TriangleAlert as default };\n//# sourceMappingURL=triangle-alert.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst User = createLucideIcon(\"User\", [\n [\"path\", { d: \"M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2\", key: \"975kel\" }],\n [\"circle\", { cx: \"12\", cy: \"7\", r: \"4\", key: \"17ys0d\" }]\n]);\n\nexport { User as default };\n//# sourceMappingURL=user.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Users = createLucideIcon(\"Users\", [\n [\"path\", { d: \"M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2\", key: \"1yyitq\" }],\n [\"circle\", { cx: \"9\", cy: \"7\", r: \"4\", key: \"nufk8\" }],\n [\"path\", { d: \"M22 21v-2a4 4 0 0 0-3-3.87\", key: \"kshegd\" }],\n [\"path\", { d: \"M16 3.13a4 4 0 0 1 0 7.75\", key: \"1da9ce\" }]\n]);\n\nexport { Users as default };\n//# sourceMappingURL=users.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst Wifi = createLucideIcon(\"Wifi\", [\n [\"path\", { d: \"M12 20h.01\", key: \"zekei9\" }],\n [\"path\", { d: \"M2 8.82a15 15 0 0 1 20 0\", key: \"dnpr2z\" }],\n [\"path\", { d: \"M5 12.859a10 10 0 0 1 14 0\", key: \"1x1e6c\" }],\n [\"path\", { d: \"M8.5 16.429a5 5 0 0 1 7 0\", key: \"1bycff\" }]\n]);\n\nexport { Wifi as default };\n//# sourceMappingURL=wifi.js.map\n","/**\n * @license lucide-react v0.468.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst X = createLucideIcon(\"X\", [\n [\"path\", { d: \"M18 6 6 18\", key: \"1bl5f8\" }],\n [\"path\", { d: \"m6 6 12 12\", key: \"d8bk6v\" }]\n]);\n\nexport { X as default };\n//# sourceMappingURL=x.js.map\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const api = { setState, getState, getInitialState, subscribe };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = ((createState) => createState ? createStoreImpl(createState) : createStoreImpl);\n\nexport { createStore };\n","import React from 'react';\nimport { createStore } from 'zustand/vanilla';\n\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity) {\n const slice = React.useSyncExternalStore(\n api.subscribe,\n React.useCallback(() => selector(api.getState()), [api, selector]),\n React.useCallback(() => selector(api.getInitialState()), [api, selector])\n );\n React.useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n const api = createStore(createState);\n const useBoundStore = (selector) => useStore(api, selector);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = ((createState) => createState ? createImpl(createState) : createImpl);\n\nexport { create, useStore };\n","import { create } from 'zustand';\r\n\r\nconst STORAGE_KEY = 'tlc-selected-project-id';\r\n\r\nexport interface WorkspaceProject {\n id: string;\n name: string;\n path: string;\n hasTlc?: boolean;\n hasPlanning?: boolean;\n version?: string;\n phase?: number | null;\n phaseName?: string | null;\n totalPhases?: number;\n completedPhases?: number;\n}\n\r\ninterface WorkspaceState {\r\n roots: string[];\r\n projects: WorkspaceProject[];\r\n selectedProjectId: string | null;\r\n isConfigured: boolean;\r\n isScanning: boolean;\r\n lastScan: string | null;\r\n}\r\n\r\ninterface WorkspaceActions {\r\n setRoots: (roots: string[]) => void;\r\n setProjects: (projects: WorkspaceProject[]) => void;\r\n selectProject: (id: string | null) => void;\r\n restoreSelectedProject: () => void;\r\n setIsScanning: (isScanning: boolean) => void;\r\n setLastScan: (lastScan: string | null) => void;\r\n reset: () => void;\r\n}\r\n\r\nconst initialState: WorkspaceState = {\r\n roots: [],\r\n projects: [],\r\n selectedProjectId: null,\r\n isConfigured: false,\r\n isScanning: false,\r\n lastScan: null,\r\n};\r\n\r\nexport const useWorkspaceStore = create<WorkspaceState & WorkspaceActions>((set) => ({\r\n ...initialState,\r\n\r\n setRoots: (roots) => set({ roots, isConfigured: roots.length > 0 }),\r\n\r\n setProjects: (projects) => set({ projects }),\r\n\r\n selectProject: (id) => {\r\n if (id === null) {\r\n localStorage.removeItem(STORAGE_KEY);\r\n } else {\r\n localStorage.setItem(STORAGE_KEY, id);\r\n }\r\n set({ selectedProjectId: id });\r\n },\r\n\r\n restoreSelectedProject: () => {\r\n const saved = localStorage.getItem(STORAGE_KEY);\r\n if (saved) {\r\n set({ selectedProjectId: saved });\r\n }\r\n },\r\n\r\n setIsScanning: (isScanning) => set({ isScanning }),\r\n\r\n setLastScan: (lastScan) => set({ lastScan }),\r\n\r\n reset: () => set(initialState),\r\n}));\r\n","import { forwardRef, useMemo, type HTMLAttributes } from 'react';\r\nimport { NavLink } from 'react-router-dom';\r\nimport {\r\n LayoutDashboard,\r\n FolderKanban,\r\n CheckSquare,\r\n TestTube,\r\n ScrollText,\r\n Settings,\r\n ChevronLeft,\r\n ChevronRight,\r\n Bug,\r\n Map,\r\n Box,\r\n Server,\r\n Brain,\r\n} from 'lucide-react';\r\nimport { useWorkspaceStore } from '../../stores/workspace.store';\r\n\r\ninterface SidebarProps extends HTMLAttributes<HTMLElement> {\r\n collapsed?: boolean;\r\n onToggle?: () => void;\r\n}\r\n\r\ninterface NavItem {\r\n path: string;\r\n label: string;\r\n icon: React.ReactNode;\r\n}\r\n\r\nexport const Sidebar = forwardRef<HTMLElement, SidebarProps>(\r\n ({ collapsed = false, onToggle, className = '', ...props }, ref) => {\r\n const pid = useWorkspaceStore((s) => s.selectedProjectId);\r\n const sidebarWidth = collapsed ? 'w-16' : 'w-60';\r\n\r\n const navItems: NavItem[] = useMemo(() => [\r\n { path: pid ? `/projects/${pid}` : '/', label: 'Dashboard', icon: <LayoutDashboard className=\"h-5 w-5\" /> },\r\n { path: '/projects', label: 'Projects', icon: <FolderKanban className=\"h-5 w-5\" /> },\r\n { path: pid ? `/projects/${pid}/roadmap` : '/roadmap', label: 'Roadmap', icon: <Map className=\"h-5 w-5\" /> },\r\n { path: pid ? `/projects/${pid}/tasks` : '/tasks', label: 'Tasks', icon: <CheckSquare className=\"h-5 w-5\" /> },\r\n { path: pid ? `/projects/${pid}/tests` : '/tests', label: 'Tests', icon: <TestTube className=\"h-5 w-5\" /> },\r\n { path: pid ? `/projects/${pid}/bugs` : '/bugs', label: 'Bugs', icon: <Bug className=\"h-5 w-5\" /> },\r\n { path: pid ? `/projects/${pid}/logs` : '/logs', label: 'Logs', icon: <ScrollText className=\"h-5 w-5\" /> },\r\n { path: pid ? `/projects/${pid}/memory` : '/memory', label: 'Memory', icon: <Brain className=\"h-5 w-5\" /> },\r\n { path: '/docker', label: 'Docker', icon: <Box className=\"h-5 w-5\" /> },\r\n { path: '/vps', label: 'VPS', icon: <Server className=\"h-5 w-5\" /> },\r\n { path: '/settings', label: 'Settings', icon: <Settings className=\"h-5 w-5\" /> },\r\n ], [pid]);\r\n\r\n return (\r\n <aside\r\n ref={ref}\r\n data-testid=\"sidebar\"\r\n className={`\r\n ${sidebarWidth}\r\n h-screen\r\n bg-bg-secondary\r\n border-r border-border\r\n flex flex-col\r\n transition-all duration-300\r\n ${collapsed ? 'collapsed' : ''}\r\n ${className}\r\n `}\r\n {...props}\r\n >\r\n {/* Logo */}\r\n <div className=\"h-14 flex items-center px-4 border-b border-border\">\r\n <div className=\"flex items-center gap-2\">\r\n <div className=\"w-8 h-8 rounded-lg bg-accent flex items-center justify-center text-white font-bold\">\r\n T\r\n </div>\r\n {!collapsed && (\r\n <span className=\"font-semibold text-text-primary\">TLC</span>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {/* Navigation */}\r\n <nav className=\"flex-1 py-4 overflow-y-auto\">\r\n <ul className=\"space-y-1 px-2\">\r\n {navItems.map((item) => (\r\n <li key={item.path}>\r\n <NavLink\r\n to={item.path}\r\n end\r\n className={({ isActive }) =>\r\n `flex items-center gap-3 px-3 py-2 rounded-md transition-colors\r\n ${\r\n isActive\r\n ? 'bg-accent text-white active'\r\n : 'text-text-secondary hover:bg-bg-tertiary hover:text-text-primary'\r\n }\r\n ${collapsed ? 'justify-center' : ''}`\r\n }\r\n title={collapsed ? item.label : undefined}\r\n >\r\n {item.icon}\r\n {!collapsed && <span>{item.label}</span>}\r\n </NavLink>\r\n </li>\r\n ))}\r\n </ul>\r\n </nav>\r\n\r\n {/* Collapse toggle */}\r\n <div className=\"p-2 border-t border-border\">\r\n <button\r\n onClick={onToggle}\r\n className=\"w-full flex items-center justify-center gap-2 px-3 py-2 rounded-md text-text-secondary hover:bg-bg-tertiary hover:text-text-primary transition-colors\"\r\n aria-label={collapsed ? 'Expand sidebar' : 'Collapse sidebar'}\r\n >\r\n {collapsed ? (\r\n <ChevronRight className=\"h-5 w-5\" />\r\n ) : (\r\n <>\r\n <ChevronLeft className=\"h-5 w-5\" />\r\n <span>Collapse</span>\r\n </>\r\n )}\r\n </button>\r\n </div>\r\n </aside>\r\n );\r\n }\r\n);\r\n\r\nSidebar.displayName = 'Sidebar';\r\n","import { forwardRef, type ButtonHTMLAttributes, type AnchorHTMLAttributes } from 'react';\r\nimport { Loader2 } from 'lucide-react';\r\n\r\nexport type ButtonVariant = 'primary' | 'secondary' | 'ghost' | 'danger' | 'outline' | 'destructive';\r\ntype ButtonSize = 'sm' | 'md' | 'lg';\r\n\r\ninterface ButtonBaseProps {\r\n variant?: ButtonVariant;\r\n size?: ButtonSize;\r\n loading?: boolean;\r\n disabled?: boolean;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n children: React.ReactNode;\r\n}\r\n\r\ntype ButtonAsButton = ButtonBaseProps &\r\n Omit<ButtonHTMLAttributes<HTMLButtonElement>, keyof ButtonBaseProps> & {\r\n href?: never;\r\n };\r\n\r\ntype ButtonAsLink = ButtonBaseProps &\r\n Omit<AnchorHTMLAttributes<HTMLAnchorElement>, keyof ButtonBaseProps> & {\r\n href: string;\r\n };\r\n\r\nexport type ButtonProps = ButtonAsButton | ButtonAsLink;\r\n\r\nconst variantClasses: Record<ButtonVariant, string> = {\r\n primary: 'btn-primary',\r\n secondary: 'btn-secondary',\r\n ghost: 'btn-ghost',\r\n danger: 'btn-danger',\r\n outline: 'btn-outline border border-border bg-transparent hover:bg-surface-secondary',\r\n destructive: 'btn-danger',\r\n};\r\n\r\nconst sizeClasses: Record<ButtonSize, string> = {\r\n sm: 'btn-sm',\r\n md: '',\r\n lg: 'btn-lg',\r\n};\r\n\r\nexport const Button = forwardRef<HTMLButtonElement | HTMLAnchorElement, ButtonProps>(\r\n (\r\n {\r\n variant = 'primary',\r\n size = 'md',\r\n loading = false,\r\n leftIcon,\r\n rightIcon,\r\n children,\r\n className = '',\r\n disabled,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const classes = [\r\n 'btn',\r\n variantClasses[variant],\r\n sizeClasses[size],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n const content = (\r\n <>\r\n {loading ? (\r\n <Loader2 className=\"h-4 w-4 animate-spin\" data-testid=\"spinner\" />\r\n ) : (\r\n leftIcon\r\n )}\r\n <span>{children}</span>\r\n {!loading && rightIcon}\r\n </>\r\n );\r\n\r\n if ('href' in props && props.href) {\r\n return (\r\n <a\r\n ref={ref as React.Ref<HTMLAnchorElement>}\r\n className={classes}\r\n {...(props as AnchorHTMLAttributes<HTMLAnchorElement>)}\r\n >\r\n {content}\r\n </a>\r\n );\r\n }\r\n\r\n return (\r\n <button\r\n ref={ref as React.Ref<HTMLButtonElement>}\r\n className={classes}\r\n disabled={disabled || loading}\r\n {...(props as ButtonHTMLAttributes<HTMLButtonElement>)}\r\n >\r\n {content}\r\n </button>\r\n );\r\n }\r\n);\r\n\r\nButton.displayName = 'Button';\r\n","import { forwardRef, type HTMLAttributes } from 'react';\r\nimport { Search, Sun, Moon, Menu, User } from 'lucide-react';\r\nimport { Button } from '../ui/Button';\r\n\r\ninterface HeaderProps extends HTMLAttributes<HTMLElement> {\r\n title?: string;\r\n breadcrumbs?: { label: string; href?: string }[];\r\n theme?: 'dark' | 'light';\r\n onThemeToggle?: () => void;\r\n onMobileMenuToggle?: () => void;\r\n onSearchClick?: () => void;\r\n}\r\n\r\nexport const Header = forwardRef<HTMLElement, HeaderProps>(\r\n (\r\n {\r\n title,\r\n breadcrumbs = [],\r\n theme = 'dark',\r\n onThemeToggle,\r\n onMobileMenuToggle,\r\n onSearchClick,\r\n className = '',\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n return (\r\n <header\r\n ref={ref}\r\n data-testid=\"header\"\r\n className={`\r\n h-14\r\n bg-bg-secondary\r\n border-b border-border\r\n flex items-center justify-between\r\n px-4\r\n ${className}\r\n `}\r\n {...props}\r\n >\r\n {/* Left: Mobile menu + Breadcrumbs */}\r\n <div className=\"flex items-center gap-4\">\r\n {/* Mobile menu button */}\r\n <button\r\n onClick={onMobileMenuToggle}\r\n className=\"md:hidden p-2 text-text-secondary hover:text-text-primary\"\r\n aria-label=\"Open menu\"\r\n data-testid=\"mobile-menu-button\"\r\n >\r\n <Menu className=\"h-5 w-5\" />\r\n </button>\r\n\r\n {/* Breadcrumbs */}\r\n <nav aria-label=\"Breadcrumb\" className=\"hidden sm:block\">\r\n <ol className=\"flex items-center gap-2 text-sm\">\r\n {breadcrumbs.length > 0 ? (\r\n breadcrumbs.map((crumb, index) => (\r\n <li key={crumb.label} className=\"flex items-center gap-2\">\r\n {index > 0 && (\r\n <span className=\"text-text-muted\">/</span>\r\n )}\r\n {crumb.href ? (\r\n <a\r\n href={crumb.href}\r\n className=\"text-text-secondary hover:text-text-primary\"\r\n >\r\n {crumb.label}\r\n </a>\r\n ) : (\r\n <span className=\"text-text-primary font-medium\">\r\n {crumb.label}\r\n </span>\r\n )}\r\n </li>\r\n ))\r\n ) : title ? (\r\n <li className=\"text-text-primary font-medium\">{title}</li>\r\n ) : null}\r\n </ol>\r\n </nav>\r\n </div>\r\n\r\n {/* Right: Search + Theme + User */}\r\n <div className=\"flex items-center gap-2\">\r\n {/* Search button */}\r\n <button\r\n onClick={onSearchClick}\r\n className=\"p-2 text-text-secondary hover:text-text-primary hover:bg-bg-tertiary rounded-md transition-colors\"\r\n aria-label=\"Search\"\r\n data-testid=\"search-button\"\r\n >\r\n <Search className=\"h-5 w-5\" />\r\n </button>\r\n\r\n {/* Theme toggle */}\r\n <button\r\n onClick={onThemeToggle}\r\n className=\"p-2 text-text-secondary hover:text-text-primary hover:bg-bg-tertiary rounded-md transition-colors\"\r\n aria-label={theme === 'dark' ? 'Switch to light theme' : 'Switch to dark theme'}\r\n data-testid=\"theme-toggle\"\r\n >\r\n {theme === 'dark' ? (\r\n <Sun className=\"h-5 w-5\" />\r\n ) : (\r\n <Moon className=\"h-5 w-5\" />\r\n )}\r\n </button>\r\n\r\n {/* User menu */}\r\n <Button variant=\"ghost\" className=\"p-2\" aria-label=\"User menu\">\r\n <User className=\"h-5 w-5\" />\r\n </Button>\r\n </div>\r\n </header>\r\n );\r\n }\r\n);\r\n\r\nHeader.displayName = 'Header';\r\n","import { create } from 'zustand';\r\n\r\nexport type ThemePreference = 'dark' | 'light' | 'system';\r\nexport type Theme = 'dark' | 'light';\r\nexport type ViewName =\r\n | 'dashboard'\r\n | 'projects'\r\n | 'tasks'\r\n | 'logs'\r\n | 'preview'\r\n | 'settings'\r\n | 'team'\r\n | 'agents'\r\n | 'health';\r\n\r\ninterface UIState {\r\n theme: Theme;\r\n themePreference: ThemePreference;\r\n sidebarCollapsed: boolean;\r\n isCommandPaletteOpen: boolean;\r\n activeView: ViewName;\r\n isMobileMenuOpen: boolean;\r\n}\r\n\r\ninterface UIActions {\r\n setTheme: (theme: Theme) => void;\r\n setThemePreference: (pref: ThemePreference) => void;\r\n toggleTheme: () => void;\r\n setSidebarCollapsed: (collapsed: boolean) => void;\r\n toggleSidebar: () => void;\r\n openCommandPalette: () => void;\r\n closeCommandPalette: () => void;\r\n toggleCommandPalette: () => void;\r\n setActiveView: (view: ViewName | string) => void;\r\n toggleMobileMenu: () => void;\r\n closeMobileMenu: () => void;\r\n initFromStorage: () => void;\r\n reset: () => void;\r\n}\r\n\r\nconst STORAGE_KEY = 'tlc-theme';\r\n\r\nfunction safeSetItem(key: string, value: string) {\r\n try {\r\n localStorage.setItem(key, value);\r\n } catch {\r\n // Ignore in environments without localStorage\r\n }\r\n}\r\n\r\nfunction safeGetItem(key: string): string | null {\r\n try {\r\n return localStorage.getItem(key);\r\n } catch {\r\n return null;\r\n }\r\n}\r\n\r\nfunction resolveTheme(pref: ThemePreference): Theme {\r\n if (pref === 'system') {\r\n if (typeof window !== 'undefined' && window.matchMedia) {\r\n return window.matchMedia('(prefers-color-scheme: dark)').matches ? 'dark' : 'light';\r\n }\r\n return 'dark';\r\n }\r\n return pref;\r\n}\r\n\r\nfunction applyTheme(theme: Theme) {\r\n if (typeof document !== 'undefined') {\r\n document.documentElement.setAttribute('data-theme', theme);\r\n }\r\n}\r\n\r\nconst initialState: UIState = {\r\n theme: 'dark',\r\n themePreference: 'system',\r\n sidebarCollapsed: false,\r\n isCommandPaletteOpen: false,\r\n activeView: 'dashboard',\r\n isMobileMenuOpen: false,\r\n};\r\n\r\nexport const useUIStore = create<UIState & UIActions>((set) => ({\r\n ...initialState,\r\n\r\n setTheme: (theme) => {\r\n safeSetItem(STORAGE_KEY, theme);\r\n applyTheme(theme);\r\n set({ theme, themePreference: theme });\r\n },\r\n\r\n setThemePreference: (pref) => {\r\n safeSetItem(STORAGE_KEY, pref);\r\n const resolved = resolveTheme(pref);\r\n applyTheme(resolved);\r\n set({ themePreference: pref, theme: resolved });\r\n },\r\n\r\n toggleTheme: () => {\r\n set((state) => {\r\n // Cycle: dark → light → system → dark\r\n const order: ThemePreference[] = ['dark', 'light', 'system'];\r\n const currentIndex = order.indexOf(state.themePreference);\r\n const nextIndex = currentIndex === -1 ? 0 : (currentIndex + 1) % order.length;\r\n const nextPref = order[nextIndex] as ThemePreference;\r\n const resolved = resolveTheme(nextPref);\r\n safeSetItem(STORAGE_KEY, nextPref);\r\n applyTheme(resolved);\r\n return { themePreference: nextPref, theme: resolved };\r\n });\r\n },\r\n\r\n setSidebarCollapsed: (collapsed) => set({ sidebarCollapsed: collapsed }),\r\n\r\n toggleSidebar: () => set((state) => ({ sidebarCollapsed: !state.sidebarCollapsed })),\r\n\r\n openCommandPalette: () => set({ isCommandPaletteOpen: true }),\r\n\r\n closeCommandPalette: () => set({ isCommandPaletteOpen: false }),\r\n\r\n toggleCommandPalette: () => set((state) => ({ isCommandPaletteOpen: !state.isCommandPaletteOpen })),\r\n\r\n setActiveView: (view) => set({ activeView: view as ViewName }),\r\n\r\n toggleMobileMenu: () => set((state) => ({ isMobileMenuOpen: !state.isMobileMenuOpen })),\r\n\r\n closeMobileMenu: () => set({ isMobileMenuOpen: false }),\r\n\r\n initFromStorage: () => {\r\n const stored = safeGetItem(STORAGE_KEY);\r\n if (stored === 'light' || stored === 'dark' || stored === 'system') {\r\n const resolved = resolveTheme(stored as ThemePreference);\r\n applyTheme(resolved);\r\n set({ themePreference: stored as ThemePreference, theme: resolved });\r\n } else {\r\n // Default to system\r\n const resolved = resolveTheme('system');\r\n applyTheme(resolved);\r\n set({ themePreference: 'system', theme: resolved });\r\n }\r\n },\r\n\r\n reset: () => set(initialState),\r\n}));\r\n","import { create } from 'zustand';\r\n\r\nexport interface ProjectInfo {\n id?: string;\n name: string;\n description?: string;\n path?: string;\n hasTlc?: boolean;\n hasPlanning?: boolean;\n version?: string;\n phase?: number;\n phaseName?: string;\n branch?: string;\n totalPhases?: number;\n completedPhases?: number;\n}\n\nexport interface ProjectStatus {\n testsPass?: number;\n testsFail?: number;\n coverage?: number;\n appRunning?: boolean;\n appPort?: number;\n tasks?: number;\n bugsOpen?: number;\n phase?: number;\n phaseName?: string;\n exists?: boolean;\n hasTlc?: boolean;\n hasPlanning?: boolean;\n currentPhase?: number | null;\n totalPhases?: number;\n completedPhases?: number;\n}\n\r\ninterface ProjectState {\r\n project: ProjectInfo | null;\r\n status: ProjectStatus | null;\r\n loading: boolean;\r\n error: string | null;\r\n}\r\n\r\ninterface ProjectActions {\r\n setProject: (project: ProjectInfo | null) => void;\r\n setStatus: (status: ProjectStatus | null) => void;\r\n setLoading: (loading: boolean) => void;\r\n setError: (error: string | null) => void;\r\n clearError: () => void;\r\n reset: () => void;\r\n}\r\n\r\nconst initialState: ProjectState = {\r\n project: null,\r\n status: null,\r\n loading: false,\r\n error: null,\r\n};\r\n\r\nexport const useProjectStore = create<ProjectState & ProjectActions>((set) => ({\r\n ...initialState,\r\n\r\n setProject: (project) => set({ project, loading: false, error: null }),\r\n\r\n setStatus: (status) => set({ status }),\r\n\r\n setLoading: (loading) => set({ loading }),\r\n\r\n setError: (error) => set({ error, loading: false }),\r\n\r\n clearError: () => set({ error: null }),\r\n\r\n reset: () => set(initialState),\r\n}));\r\n","const reduxImpl = (reducer, initial) => (set, _get, api) => {\n api.dispatch = (action) => {\n set((state) => reducer(state, action), false, action);\n return action;\n };\n api.dispatchFromDevtools = true;\n return { dispatch: (...args) => api.dispatch(...args), ...initial };\n};\nconst redux = reduxImpl;\n\nconst shouldDispatchFromDevtools = (api) => !!api.dispatchFromDevtools && typeof api.dispatch === \"function\";\nconst trackedConnections = /* @__PURE__ */ new Map();\nconst getTrackedConnectionState = (name) => {\n const api = trackedConnections.get(name);\n if (!api) return {};\n return Object.fromEntries(\n Object.entries(api.stores).map(([key, api2]) => [key, api2.getState()])\n );\n};\nconst extractConnectionInformation = (store, extensionConnector, options) => {\n if (store === void 0) {\n return {\n type: \"untracked\",\n connection: extensionConnector.connect(options)\n };\n }\n const existingConnection = trackedConnections.get(options.name);\n if (existingConnection) {\n return { type: \"tracked\", store, ...existingConnection };\n }\n const newConnection = {\n connection: extensionConnector.connect(options),\n stores: {}\n };\n trackedConnections.set(options.name, newConnection);\n return { type: \"tracked\", store, ...newConnection };\n};\nconst removeStoreFromTrackedConnections = (name, store) => {\n if (store === void 0) return;\n const connectionInfo = trackedConnections.get(name);\n if (!connectionInfo) return;\n delete connectionInfo.stores[store];\n if (Object.keys(connectionInfo.stores).length === 0) {\n trackedConnections.delete(name);\n }\n};\nconst findCallerName = (stack) => {\n var _a, _b;\n if (!stack) return void 0;\n const traceLines = stack.split(\"\\n\");\n const apiSetStateLineIndex = traceLines.findIndex(\n (traceLine) => traceLine.includes(\"api.setState\")\n );\n if (apiSetStateLineIndex < 0) return void 0;\n const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || \"\";\n return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1];\n};\nconst devtoolsImpl = (fn, devtoolsOptions = {}) => (set, get, api) => {\n const { enabled, anonymousActionType, store, ...options } = devtoolsOptions;\n let extensionConnector;\n try {\n extensionConnector = (enabled != null ? enabled : (import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") && window.__REDUX_DEVTOOLS_EXTENSION__;\n } catch (e) {\n }\n if (!extensionConnector) {\n return fn(set, get, api);\n }\n const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options);\n let isRecording = true;\n api.setState = ((state, replace, nameOrAction) => {\n const r = set(state, replace);\n if (!isRecording) return r;\n const action = nameOrAction === void 0 ? {\n type: anonymousActionType || findCallerName(new Error().stack) || \"anonymous\"\n } : typeof nameOrAction === \"string\" ? { type: nameOrAction } : nameOrAction;\n if (store === void 0) {\n connection == null ? void 0 : connection.send(action, get());\n return r;\n }\n connection == null ? void 0 : connection.send(\n {\n ...action,\n type: `${store}/${action.type}`\n },\n {\n ...getTrackedConnectionState(options.name),\n [store]: api.getState()\n }\n );\n return r;\n });\n api.devtools = {\n cleanup: () => {\n if (connection && typeof connection.unsubscribe === \"function\") {\n connection.unsubscribe();\n }\n removeStoreFromTrackedConnections(options.name, store);\n }\n };\n const setStateFromDevtools = (...a) => {\n const originalIsRecording = isRecording;\n isRecording = false;\n set(...a);\n isRecording = originalIsRecording;\n };\n const initialState = fn(api.setState, get, api);\n if (connectionInformation.type === \"untracked\") {\n connection == null ? void 0 : connection.init(initialState);\n } else {\n connectionInformation.stores[connectionInformation.store] = api;\n connection == null ? void 0 : connection.init(\n Object.fromEntries(\n Object.entries(connectionInformation.stores).map(([key, store2]) => [\n key,\n key === connectionInformation.store ? initialState : store2.getState()\n ])\n )\n );\n }\n if (shouldDispatchFromDevtools(api)) {\n let didWarnAboutReservedActionType = false;\n const originalDispatch = api.dispatch;\n api.dispatch = (...args) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && args[0].type === \"__setState\" && !didWarnAboutReservedActionType) {\n console.warn(\n '[zustand devtools middleware] \"__setState\" action type is reserved to set state from the devtools. Avoid using it.'\n );\n didWarnAboutReservedActionType = true;\n }\n originalDispatch(...args);\n };\n }\n connection.subscribe((message) => {\n var _a;\n switch (message.type) {\n case \"ACTION\":\n if (typeof message.payload !== \"string\") {\n console.error(\n \"[zustand devtools middleware] Unsupported action format\"\n );\n return;\n }\n return parseJsonThen(\n message.payload,\n (action) => {\n if (action.type === \"__setState\") {\n if (store === void 0) {\n setStateFromDevtools(action.state);\n return;\n }\n if (Object.keys(action.state).length !== 1) {\n console.error(\n `\n [zustand devtools middleware] Unsupported __setState action format.\n When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(),\n and value of this only key should be a state object. Example: { \"type\": \"__setState\", \"state\": { \"abc123Store\": { \"foo\": \"bar\" } } }\n `\n );\n }\n const stateFromDevtools = action.state[store];\n if (stateFromDevtools === void 0 || stateFromDevtools === null) {\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) {\n setStateFromDevtools(stateFromDevtools);\n }\n return;\n }\n if (shouldDispatchFromDevtools(api)) {\n api.dispatch(action);\n }\n }\n );\n case \"DISPATCH\":\n switch (message.payload.type) {\n case \"RESET\":\n setStateFromDevtools(initialState);\n if (store === void 0) {\n return connection == null ? void 0 : connection.init(api.getState());\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"COMMIT\":\n if (store === void 0) {\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n case \"ROLLBACK\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n connection == null ? void 0 : connection.init(api.getState());\n return;\n }\n setStateFromDevtools(state[store]);\n connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name));\n });\n case \"JUMP_TO_STATE\":\n case \"JUMP_TO_ACTION\":\n return parseJsonThen(message.state, (state) => {\n if (store === void 0) {\n setStateFromDevtools(state);\n return;\n }\n if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) {\n setStateFromDevtools(state[store]);\n }\n });\n case \"IMPORT_STATE\": {\n const { nextLiftedState } = message.payload;\n const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state;\n if (!lastComputedState) return;\n if (store === void 0) {\n setStateFromDevtools(lastComputedState);\n } else {\n setStateFromDevtools(lastComputedState[store]);\n }\n connection == null ? void 0 : connection.send(\n null,\n // FIXME no-any\n nextLiftedState\n );\n return;\n }\n case \"PAUSE_RECORDING\":\n return isRecording = !isRecording;\n }\n return;\n }\n });\n return initialState;\n};\nconst devtools = devtoolsImpl;\nconst parseJsonThen = (stringified, fn) => {\n let parsed;\n try {\n parsed = JSON.parse(stringified);\n } catch (e) {\n console.error(\n \"[zustand devtools middleware] Could not parse the received json\",\n e\n );\n }\n if (parsed !== void 0) fn(parsed);\n};\n\nconst subscribeWithSelectorImpl = (fn) => (set, get, api) => {\n const origSubscribe = api.subscribe;\n api.subscribe = ((selector, optListener, options) => {\n let listener = selector;\n if (optListener) {\n const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is;\n let currentSlice = selector(api.getState());\n listener = (state) => {\n const nextSlice = selector(state);\n if (!equalityFn(currentSlice, nextSlice)) {\n const previousSlice = currentSlice;\n optListener(currentSlice = nextSlice, previousSlice);\n }\n };\n if (options == null ? void 0 : options.fireImmediately) {\n optListener(currentSlice, currentSlice);\n }\n }\n return origSubscribe(listener);\n });\n const initialState = fn(set, get, api);\n return initialState;\n};\nconst subscribeWithSelector = subscribeWithSelectorImpl;\n\nfunction combine(initialState, create) {\n return (...args) => Object.assign({}, initialState, create(...args));\n}\n\nfunction createJSONStorage(getStorage, options) {\n let storage;\n try {\n storage = getStorage();\n } catch (e) {\n return;\n }\n const persistStorage = {\n getItem: (name) => {\n var _a;\n const parse = (str2) => {\n if (str2 === null) {\n return null;\n }\n return JSON.parse(str2, options == null ? void 0 : options.reviver);\n };\n const str = (_a = storage.getItem(name)) != null ? _a : null;\n if (str instanceof Promise) {\n return str.then(parse);\n }\n return parse(str);\n },\n setItem: (name, newValue) => storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)),\n removeItem: (name) => storage.removeItem(name)\n };\n return persistStorage;\n}\nconst toThenable = (fn) => (input) => {\n try {\n const result = fn(input);\n if (result instanceof Promise) {\n return result;\n }\n return {\n then(onFulfilled) {\n return toThenable(onFulfilled)(result);\n },\n catch(_onRejected) {\n return this;\n }\n };\n } catch (e) {\n return {\n then(_onFulfilled) {\n return this;\n },\n catch(onRejected) {\n return toThenable(onRejected)(e);\n }\n };\n }\n};\nconst persistImpl = (config, baseOptions) => (set, get, api) => {\n let options = {\n storage: createJSONStorage(() => window.localStorage),\n partialize: (state) => state,\n version: 0,\n merge: (persistedState, currentState) => ({\n ...currentState,\n ...persistedState\n }),\n ...baseOptions\n };\n let hasHydrated = false;\n let hydrationVersion = 0;\n const hydrationListeners = /* @__PURE__ */ new Set();\n const finishHydrationListeners = /* @__PURE__ */ new Set();\n let storage = options.storage;\n if (!storage) {\n return config(\n (...args) => {\n console.warn(\n `[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`\n );\n set(...args);\n },\n get,\n api\n );\n }\n const setItem = () => {\n const state = options.partialize({ ...get() });\n return storage.setItem(options.name, {\n state,\n version: options.version\n });\n };\n const savedSetState = api.setState;\n api.setState = (state, replace) => {\n savedSetState(state, replace);\n return setItem();\n };\n const configResult = config(\n (...args) => {\n set(...args);\n return setItem();\n },\n get,\n api\n );\n api.getInitialState = () => configResult;\n let stateFromStorage;\n const hydrate = () => {\n var _a, _b;\n if (!storage) return;\n const currentVersion = ++hydrationVersion;\n hasHydrated = false;\n hydrationListeners.forEach((cb) => {\n var _a2;\n return cb((_a2 = get()) != null ? _a2 : configResult);\n });\n const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0;\n return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue) => {\n if (deserializedStorageValue) {\n if (typeof deserializedStorageValue.version === \"number\" && deserializedStorageValue.version !== options.version) {\n if (options.migrate) {\n const migration = options.migrate(\n deserializedStorageValue.state,\n deserializedStorageValue.version\n );\n if (migration instanceof Promise) {\n return migration.then((result) => [true, result]);\n }\n return [true, migration];\n }\n console.error(\n `State loaded from storage couldn't be migrated since no migrate function was provided`\n );\n } else {\n return [false, deserializedStorageValue.state];\n }\n }\n return [false, void 0];\n }).then((migrationResult) => {\n var _a2;\n if (currentVersion !== hydrationVersion) {\n return;\n }\n const [migrated, migratedState] = migrationResult;\n stateFromStorage = options.merge(\n migratedState,\n (_a2 = get()) != null ? _a2 : configResult\n );\n set(stateFromStorage, true);\n if (migrated) {\n return setItem();\n }\n }).then(() => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0);\n stateFromStorage = get();\n hasHydrated = true;\n finishHydrationListeners.forEach((cb) => cb(stateFromStorage));\n }).catch((e) => {\n if (currentVersion !== hydrationVersion) {\n return;\n }\n postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e);\n });\n };\n api.persist = {\n setOptions: (newOptions) => {\n options = {\n ...options,\n ...newOptions\n };\n if (newOptions.storage) {\n storage = newOptions.storage;\n }\n },\n clearStorage: () => {\n storage == null ? void 0 : storage.removeItem(options.name);\n },\n getOptions: () => options,\n rehydrate: () => hydrate(),\n hasHydrated: () => hasHydrated,\n onHydrate: (cb) => {\n hydrationListeners.add(cb);\n return () => {\n hydrationListeners.delete(cb);\n };\n },\n onFinishHydration: (cb) => {\n finishHydrationListeners.add(cb);\n return () => {\n finishHydrationListeners.delete(cb);\n };\n }\n };\n if (!options.skipHydration) {\n hydrate();\n }\n return stateFromStorage || configResult;\n};\nconst persist = persistImpl;\n\nfunction ssrSafe(config, isSSR = typeof window === \"undefined\") {\n return (set, get, api) => {\n if (!isSSR) {\n return config(set, get, api);\n }\n const ssrSet = () => {\n throw new Error(\"Cannot set state of Zustand store in SSR\");\n };\n api.setState = ssrSet;\n return config(ssrSet, get, api);\n };\n}\n\nexport { combine, createJSONStorage, devtools, persist, redux, subscribeWithSelector, ssrSafe as unstable_ssrSafe };\n","import { create } from 'zustand';\r\nimport { subscribeWithSelector } from 'zustand/middleware';\r\n\r\nexport type TaskStatus = 'pending' | 'in_progress' | 'completed';\r\nexport type TaskPriority = 'low' | 'medium' | 'high';\r\n\r\nexport interface Task {\r\n id: string;\r\n // Component format\r\n title?: string;\r\n description?: string;\r\n // Server format\r\n subject?: string;\r\n goal?: string;\r\n owner?: string | null;\n number?: number;\n num?: number;\n // Common fields\r\n status: TaskStatus | string;\r\n priority?: TaskPriority;\r\n assignee?: string | null;\r\n phase?: number;\r\n acceptanceCriteria?: string[];\r\n createdAt?: string;\r\n updatedAt?: string;\r\n testStatus?: { passed: number; failed: number; total: number };\r\n}\r\n\r\ninterface TaskFilters {\r\n status: TaskStatus | null;\r\n assignee: string | null;\r\n phase: number | null;\r\n priority: TaskPriority | null;\r\n}\r\n\r\ninterface TaskState {\r\n tasks: Task[];\r\n selectedTask: Task | null;\r\n filters: TaskFilters;\r\n loading: boolean;\r\n filteredTasks: Task[];\r\n tasksByStatus: Record<TaskStatus, Task[]>;\r\n}\r\n\r\ninterface TaskActions {\r\n setTasks: (tasks: Task[]) => void;\r\n addTask: (task: Task) => void;\r\n updateTask: (id: string, updates: Partial<Task>) => void;\r\n removeTask: (id: string) => void;\r\n selectTask: (task: Task | null) => void;\r\n setFilter: <K extends keyof TaskFilters>(key: K, value: TaskFilters[K]) => void;\r\n clearFilters: () => void;\r\n setLoading: (loading: boolean) => void;\r\n reset: () => void;\r\n}\r\n\r\nconst initialFilters: TaskFilters = {\r\n status: null,\r\n assignee: null,\r\n phase: null,\r\n priority: null,\r\n};\r\n\r\nconst computeFilteredTasks = (tasks: Task[], filters: TaskFilters): Task[] => {\r\n return tasks.filter((task) => {\r\n if (filters.status && task.status !== filters.status) return false;\r\n if (filters.assignee && task.assignee !== filters.assignee) return false;\r\n if (filters.phase && task.phase !== filters.phase) return false;\r\n if (filters.priority && task.priority !== filters.priority) return false;\r\n return true;\r\n });\r\n};\r\n\r\nconst computeTasksByStatus = (tasks: Task[]): Record<TaskStatus, Task[]> => {\r\n return {\r\n pending: tasks.filter((t) => t.status === 'pending'),\r\n in_progress: tasks.filter((t) => t.status === 'in_progress'),\r\n completed: tasks.filter((t) => t.status === 'completed'),\r\n };\r\n};\r\n\r\nconst initialState: Omit<TaskState, 'filteredTasks' | 'tasksByStatus'> = {\r\n tasks: [],\r\n selectedTask: null,\r\n filters: initialFilters,\r\n loading: false,\r\n};\r\n\r\nexport const useTaskStore = create<TaskState & TaskActions>()(\r\n subscribeWithSelector((set) => ({\r\n ...initialState,\r\n filteredTasks: [],\r\n tasksByStatus: { pending: [], in_progress: [], completed: [] },\r\n\r\n setTasks: (tasks) =>\r\n set({\r\n tasks,\r\n loading: false,\r\n filteredTasks: computeFilteredTasks(tasks, initialFilters),\r\n tasksByStatus: computeTasksByStatus(tasks),\r\n }),\r\n\r\n addTask: (task) =>\r\n set((state) => {\r\n const tasks = [...state.tasks, task];\r\n return {\r\n tasks,\r\n filteredTasks: computeFilteredTasks(tasks, state.filters),\r\n tasksByStatus: computeTasksByStatus(tasks),\r\n };\r\n }),\r\n\r\n updateTask: (id, updates) =>\r\n set((state) => {\r\n const tasks = state.tasks.map((task) =>\r\n task.id === id ? { ...task, ...updates } : task\r\n );\r\n const selectedTask =\r\n state.selectedTask?.id === id\r\n ? { ...state.selectedTask, ...updates }\r\n : state.selectedTask;\r\n return {\r\n tasks,\r\n selectedTask,\r\n filteredTasks: computeFilteredTasks(tasks, state.filters),\r\n tasksByStatus: computeTasksByStatus(tasks),\r\n };\r\n }),\r\n\r\n removeTask: (id) =>\r\n set((state) => {\r\n const tasks = state.tasks.filter((task) => task.id !== id);\r\n return {\r\n tasks,\r\n selectedTask: state.selectedTask?.id === id ? null : state.selectedTask,\r\n filteredTasks: computeFilteredTasks(tasks, state.filters),\r\n tasksByStatus: computeTasksByStatus(tasks),\r\n };\r\n }),\r\n\r\n selectTask: (task) => set({ selectedTask: task }),\r\n\r\n setFilter: (key, value) =>\r\n set((state) => {\r\n const filters = { ...state.filters, [key]: value };\r\n return {\r\n filters,\r\n filteredTasks: computeFilteredTasks(state.tasks, filters),\r\n };\r\n }),\r\n\r\n clearFilters: () =>\r\n set((state) => ({\r\n filters: initialFilters,\r\n filteredTasks: computeFilteredTasks(state.tasks, initialFilters),\r\n })),\r\n\r\n setLoading: (loading) => set({ loading }),\r\n\r\n reset: () =>\r\n set({\r\n ...initialState,\r\n filteredTasks: [],\r\n tasksByStatus: { pending: [], in_progress: [], completed: [] },\r\n }),\r\n }))\r\n);\r\n","import { create } from 'zustand';\r\nimport { subscribeWithSelector } from 'zustand/middleware';\r\n\r\nexport type LogLevel = 'debug' | 'info' | 'warn' | 'error';\r\nexport type LogType = 'app' | 'test' | 'git' | 'system';\r\n\r\nexport const MAX_LOGS = 1000;\r\n\r\nexport interface LogEntry {\r\n id: string;\r\n text: string;\r\n level: LogLevel;\r\n timestamp: string;\r\n type: LogType;\r\n source?: string;\r\n metadata?: Record<string, unknown>;\r\n}\r\n\r\ninterface LogsByType {\r\n app: LogEntry[];\r\n test: LogEntry[];\r\n git: LogEntry[];\r\n system: LogEntry[];\r\n}\r\n\r\ninterface LogState {\r\n logs: LogsByType;\r\n activeType: LogType;\r\n searchQuery: string;\r\n autoScroll: boolean;\r\n currentLogs: LogEntry[];\r\n filteredLogs: LogEntry[];\r\n}\r\n\r\ninterface LogActions {\r\n addLog: (log: LogEntry) => void;\r\n addBatchLogs: (logs: LogEntry[]) => void;\r\n setLogType: (type: LogType) => void;\r\n clearLogs: (type: LogType) => void;\r\n clearAllLogs: () => void;\r\n setSearchQuery: (query: string) => void;\r\n clearSearch: () => void;\r\n setAutoScroll: (enabled: boolean) => void;\r\n reset: () => void;\r\n}\r\n\r\nconst initialLogs: LogsByType = {\r\n app: [],\r\n test: [],\r\n git: [],\r\n system: [],\r\n};\r\n\r\nconst initialState = {\r\n logs: initialLogs,\r\n activeType: 'app' as LogType,\r\n searchQuery: '',\r\n autoScroll: true,\r\n};\r\n\r\nconst generateId = () => Math.random().toString(36).slice(2);\r\n\r\nconst addLogsToType = (\r\n logs: LogsByType,\r\n type: LogType,\r\n newLogs: LogEntry[]\r\n): LogsByType => {\r\n const current = logs[type];\r\n const combined = [...current, ...newLogs];\r\n const trimmed =\r\n combined.length > MAX_LOGS\r\n ? combined.slice(combined.length - MAX_LOGS)\r\n : combined;\r\n return { ...logs, [type]: trimmed };\r\n};\r\n\r\nconst computeCurrentLogs = (logs: LogsByType, activeType: LogType): LogEntry[] => {\r\n return logs[activeType];\r\n};\r\n\r\nconst computeFilteredLogs = (\r\n logs: LogsByType,\r\n activeType: LogType,\r\n searchQuery: string\r\n): LogEntry[] => {\r\n const current = logs[activeType];\r\n if (!searchQuery) return current;\r\n const query = searchQuery.toLowerCase();\r\n return current.filter((log) => log.text.toLowerCase().includes(query));\r\n};\r\n\r\nexport const useLogStore = create<LogState & LogActions>()(\r\n subscribeWithSelector((set) => ({\r\n ...initialState,\r\n currentLogs: [],\r\n filteredLogs: [],\r\n\r\n addLog: (log) =>\r\n set((state) => {\r\n const entry: LogEntry = {\r\n ...log,\r\n id: log.id || generateId(),\r\n timestamp: log.timestamp || new Date().toISOString(),\r\n };\r\n const logs = addLogsToType(state.logs, log.type, [entry]);\r\n return {\r\n logs,\r\n currentLogs: computeCurrentLogs(logs, state.activeType),\r\n filteredLogs: computeFilteredLogs(logs, state.activeType, state.searchQuery),\r\n };\r\n }),\r\n\r\n addBatchLogs: (logsToAdd) =>\r\n set((state) => {\r\n const byType: Partial<Record<LogType, LogEntry[]>> = {};\r\n\r\n for (const log of logsToAdd) {\r\n const entry: LogEntry = {\r\n ...log,\r\n id: log.id || generateId(),\r\n timestamp: log.timestamp || new Date().toISOString(),\r\n };\r\n if (!byType[log.type]) {\r\n byType[log.type] = [];\r\n }\r\n byType[log.type]!.push(entry);\r\n }\r\n\r\n let newLogs = { ...state.logs };\r\n for (const [type, entries] of Object.entries(byType)) {\r\n newLogs = addLogsToType(newLogs, type as LogType, entries);\r\n }\r\n\r\n return {\r\n logs: newLogs,\r\n currentLogs: computeCurrentLogs(newLogs, state.activeType),\r\n filteredLogs: computeFilteredLogs(newLogs, state.activeType, state.searchQuery),\r\n };\r\n }),\r\n\r\n setLogType: (type) =>\r\n set((state) => ({\r\n activeType: type,\r\n currentLogs: computeCurrentLogs(state.logs, type),\r\n filteredLogs: computeFilteredLogs(state.logs, type, state.searchQuery),\r\n })),\r\n\r\n clearLogs: (type) =>\r\n set((state) => {\r\n const logs = { ...state.logs, [type]: [] };\r\n return {\r\n logs,\r\n currentLogs: computeCurrentLogs(logs, state.activeType),\r\n filteredLogs: computeFilteredLogs(logs, state.activeType, state.searchQuery),\r\n };\r\n }),\r\n\r\n clearAllLogs: () =>\r\n set(() => ({\r\n logs: initialLogs,\r\n currentLogs: [],\r\n filteredLogs: [],\r\n })),\r\n\r\n setSearchQuery: (query) =>\r\n set((state) => ({\r\n searchQuery: query,\r\n filteredLogs: computeFilteredLogs(state.logs, state.activeType, query),\r\n })),\r\n\r\n clearSearch: () =>\r\n set((state) => ({\r\n searchQuery: '',\r\n filteredLogs: computeFilteredLogs(state.logs, state.activeType, ''),\r\n })),\r\n\r\n setAutoScroll: (enabled) => set({ autoScroll: enabled }),\r\n\r\n reset: () =>\r\n set({\r\n ...initialState,\r\n currentLogs: [],\r\n filteredLogs: [],\r\n }),\r\n }))\r\n);\r\n","import { create } from 'zustand';\r\nimport { subscribeWithSelector } from 'zustand/middleware';\r\n\r\nexport type ConnectionStatus = 'disconnected' | 'connecting' | 'connected' | 'reconnecting';\r\n\r\nconst MAX_RECONNECT_ATTEMPTS = 10;\r\nconst BASE_DELAY = 1000;\r\nconst MAX_DELAY = 30000;\r\n\r\ninterface WebSocketState {\r\n status: ConnectionStatus;\r\n reconnectAttempts: number;\r\n lastConnected: number | null;\r\n error: string | null;\r\n isConnected: boolean;\r\n shouldReconnect: boolean;\r\n reconnectDelay: number;\r\n}\r\n\r\ninterface WebSocketActions {\r\n setStatus: (status: ConnectionStatus) => void;\r\n incrementReconnectAttempts: () => void;\r\n resetReconnectAttempts: () => void;\r\n setError: (error: string | null) => void;\r\n clearError: () => void;\r\n reset: () => void;\r\n}\r\n\r\nconst computeReconnectDelay = (attempts: number): number => {\r\n const delay = BASE_DELAY * Math.pow(2, attempts);\r\n return Math.min(delay, MAX_DELAY);\r\n};\r\n\r\nconst initialState = {\r\n status: 'disconnected' as ConnectionStatus,\r\n reconnectAttempts: 0,\r\n lastConnected: null as number | null,\r\n error: null as string | null,\r\n};\r\n\r\nconst computeDerivedState = (\r\n status: ConnectionStatus,\r\n reconnectAttempts: number\r\n) => ({\r\n isConnected: status === 'connected',\r\n shouldReconnect: status !== 'connected' && reconnectAttempts < MAX_RECONNECT_ATTEMPTS,\r\n reconnectDelay: computeReconnectDelay(reconnectAttempts),\r\n});\r\n\r\nexport const useWebSocketStore = create<WebSocketState & WebSocketActions>()(\r\n subscribeWithSelector((set) => ({\r\n ...initialState,\r\n ...computeDerivedState(initialState.status, initialState.reconnectAttempts),\r\n\r\n setStatus: (status) =>\r\n set((state) => {\r\n if (status === 'connected') {\r\n return {\r\n status,\r\n lastConnected: Date.now(),\r\n reconnectAttempts: 0,\r\n error: null,\r\n ...computeDerivedState(status, 0),\r\n };\r\n }\r\n return {\r\n status,\r\n ...computeDerivedState(status, state.reconnectAttempts),\r\n };\r\n }),\r\n\r\n incrementReconnectAttempts: () =>\r\n set((state) => {\r\n const reconnectAttempts = state.reconnectAttempts + 1;\r\n return {\r\n reconnectAttempts,\r\n ...computeDerivedState(state.status, reconnectAttempts),\r\n };\r\n }),\r\n\r\n resetReconnectAttempts: () =>\r\n set((state) => ({\r\n reconnectAttempts: 0,\r\n ...computeDerivedState(state.status, 0),\r\n })),\r\n\r\n setError: (error) => set({ error }),\r\n\r\n clearError: () => set({ error: null }),\r\n\r\n reset: () =>\r\n set({\r\n ...initialState,\r\n ...computeDerivedState(initialState.status, initialState.reconnectAttempts),\r\n }),\r\n }))\r\n);\r\n","import { forwardRef, useState, type HTMLAttributes } from 'react';\r\nimport { Sidebar } from './Sidebar';\r\nimport { Header } from './Header';\r\nimport { useUIStore } from '../../stores';\r\n\r\ninterface ShellProps extends HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const Shell = forwardRef<HTMLDivElement, ShellProps>(\r\n ({ children, className = '', ...props }, ref) => {\r\n const [sidebarCollapsed, setSidebarCollapsed] = useState(false);\r\n const [mobileMenuOpen, setMobileMenuOpen] = useState(false);\r\n const theme = useUIStore((s) => s.theme);\r\n const toggleTheme = useUIStore((s) => s.toggleTheme);\r\n\r\n const handleSidebarToggle = () => {\r\n setSidebarCollapsed(!sidebarCollapsed);\r\n };\r\n\r\n const handleMobileMenuToggle = () => {\r\n setMobileMenuOpen(!mobileMenuOpen);\r\n };\r\n\r\n return (\r\n <div\r\n ref={ref}\r\n className={`flex h-screen bg-bg-primary ${className}`}\r\n {...props}\r\n >\r\n {/* Skip link for accessibility */}\r\n <a href=\"#main-content\" className=\"skip-link\">\r\n Skip to main content\r\n </a>\r\n\r\n {/* Desktop Sidebar */}\r\n <div className=\"hidden md:block\">\r\n <Sidebar collapsed={sidebarCollapsed} onToggle={handleSidebarToggle} />\r\n </div>\r\n\r\n {/* Mobile Sidebar Overlay */}\r\n {mobileMenuOpen && (\r\n <div\r\n className=\"fixed inset-0 bg-black/50 z-40 md:hidden\"\r\n onClick={() => setMobileMenuOpen(false)}\r\n data-testid=\"mobile-overlay\"\r\n />\r\n )}\r\n\r\n {/* Mobile Sidebar */}\r\n <div\r\n className={`\r\n fixed inset-y-0 left-0 z-50 md:hidden\r\n transform transition-transform duration-300\r\n ${mobileMenuOpen ? 'translate-x-0' : '-translate-x-full'}\r\n `}\r\n data-testid=\"mobile-sidebar\"\r\n >\r\n <Sidebar onToggle={() => setMobileMenuOpen(false)} />\r\n </div>\r\n\r\n {/* Main content area */}\r\n <div className=\"flex-1 flex flex-col overflow-hidden\">\r\n <Header\r\n theme={theme}\r\n onThemeToggle={toggleTheme}\r\n onMobileMenuToggle={handleMobileMenuToggle}\r\n />\r\n\r\n <main\r\n id=\"main-content\"\r\n className=\"flex-1 overflow-auto bg-bg-primary\"\r\n tabIndex={-1}\r\n >\r\n {children}\r\n </main>\r\n </div>\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nShell.displayName = 'Shell';\r\n","/**\r\n * Error Boundary\r\n * Catches React errors and displays fallback UI with retry option\r\n */\r\nimport { Component, type ReactNode, type ErrorInfo } from 'react';\r\n\r\ninterface ErrorBoundaryProps {\r\n children: ReactNode;\r\n fallback?: ReactNode;\r\n showError?: boolean;\r\n onError?: (error: Error, errorInfo: ErrorInfo) => void;\r\n reportToServer?: (error: Error, errorInfo: ErrorInfo) => void;\r\n}\r\n\r\ninterface ErrorBoundaryState {\r\n hasError: boolean;\r\n error: Error | null;\r\n errorInfo: ErrorInfo | null;\r\n}\r\n\r\nexport class ErrorBoundary extends Component<ErrorBoundaryProps, ErrorBoundaryState> {\r\n constructor(props: ErrorBoundaryProps) {\r\n super(props);\r\n this.state = {\r\n hasError: false,\r\n error: null,\r\n errorInfo: null,\r\n };\r\n }\r\n\r\n static getDerivedStateFromError(error: Error): Partial<ErrorBoundaryState> {\r\n return { hasError: true, error };\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: ErrorInfo): void {\r\n this.setState({ errorInfo });\r\n\r\n if (this.props.onError) {\r\n this.props.onError(error, errorInfo);\r\n }\r\n\r\n if (this.props.reportToServer) {\r\n this.props.reportToServer(error, errorInfo);\r\n }\r\n }\r\n\r\n handleRetry = (): void => {\r\n this.setState({\r\n hasError: false,\r\n error: null,\r\n errorInfo: null,\r\n });\r\n };\r\n\r\n render(): ReactNode {\r\n if (this.state.hasError) {\r\n if (this.props.fallback) {\r\n return this.props.fallback;\r\n }\r\n\r\n return (\r\n <div className=\"p-6 text-center\">\r\n <h2 className=\"text-xl font-semibold text-error mb-2\">\r\n Something went wrong\r\n </h2>\r\n <p className=\"text-text-secondary mb-4\">\r\n We're sorry, an unexpected error occurred.\r\n </p>\r\n {this.props.showError && this.state.error && (\r\n <pre className=\"bg-surface-elevated p-4 rounded text-sm text-left overflow-auto mb-4\">\r\n {this.state.error.message}\r\n </pre>\r\n )}\r\n <button\r\n onClick={this.handleRetry}\r\n className=\"btn btn-primary\"\r\n >\r\n Retry\r\n </button>\r\n </div>\r\n );\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n","import { useState, useEffect, useRef } from 'react';\r\nimport { Search } from 'lucide-react';\r\n\r\nexport interface Command {\r\n id: string;\r\n label: string;\r\n shortcut?: string;\r\n action: () => void;\r\n}\r\n\r\nexport interface CommandPaletteProps {\r\n commands: Command[];\r\n open: boolean;\r\n onClose: () => void;\r\n className?: string;\r\n}\r\n\r\nfunction fuzzyMatch(query: string, text: string): boolean {\r\n query = query.toLowerCase();\r\n text = text.toLowerCase();\r\n\r\n let queryIndex = 0;\r\n for (let i = 0; i < text.length && queryIndex < query.length; i++) {\r\n if (text[i] === query[queryIndex]) {\r\n queryIndex++;\r\n }\r\n }\r\n return queryIndex === query.length;\r\n}\r\n\r\nexport function CommandPalette({\r\n commands,\r\n open,\r\n onClose,\r\n className = '',\r\n}: CommandPaletteProps) {\r\n const [query, setQuery] = useState('');\r\n const [selectedIndex, setSelectedIndex] = useState(0);\r\n const inputRef = useRef<HTMLInputElement>(null);\r\n\r\n const filteredCommands = query\r\n ? commands.filter((cmd) => fuzzyMatch(query, cmd.label))\r\n : commands;\r\n\r\n useEffect(() => {\r\n if (open) {\r\n setQuery('');\r\n setSelectedIndex(0);\r\n inputRef.current?.focus();\r\n }\r\n }, [open]);\r\n\r\n useEffect(() => {\r\n setSelectedIndex(0);\r\n }, [query]);\r\n\r\n const executeCommand = (command: Command) => {\r\n command.action();\r\n onClose();\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (e.key === 'Escape') {\r\n onClose();\r\n } else if (e.key === 'ArrowDown') {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => Math.min(prev + 1, filteredCommands.length - 1));\r\n } else if (e.key === 'ArrowUp') {\r\n e.preventDefault();\r\n setSelectedIndex((prev) => Math.max(prev - 1, 0));\r\n } else if (e.key === 'Enter' && filteredCommands[selectedIndex]) {\r\n e.preventDefault();\r\n executeCommand(filteredCommands[selectedIndex]);\r\n }\r\n };\r\n\r\n if (!open) return null;\r\n\r\n return (\r\n <div\r\n data-testid=\"command-palette\"\r\n className={`fixed inset-0 z-50 flex items-start justify-center pt-[20vh] ${className}`}\r\n >\r\n {/* Backdrop */}\r\n <div\r\n className=\"absolute inset-0 bg-black/50\"\r\n onClick={onClose}\r\n />\r\n\r\n {/* Palette */}\r\n <div className=\"relative w-full max-w-lg bg-surface border border-border rounded-lg shadow-2xl overflow-hidden\">\r\n {/* Search Input */}\r\n <div className=\"flex items-center px-4 border-b border-border\">\r\n <Search className=\"w-5 h-5 text-muted-foreground\" />\r\n <input\r\n ref={inputRef}\r\n type=\"text\"\r\n value={query}\r\n onChange={(e) => setQuery(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n placeholder=\"Type a command...\"\r\n className=\"flex-1 px-3 py-4 bg-transparent text-foreground placeholder:text-muted-foreground focus:outline-none\"\r\n />\r\n </div>\r\n\r\n {/* Commands List */}\r\n <div className=\"max-h-80 overflow-auto py-2\">\r\n {filteredCommands.length === 0 ? (\r\n <div className=\"px-4 py-8 text-center text-muted-foreground\">\r\n No commands found\r\n </div>\r\n ) : (\r\n filteredCommands.map((command, index) => (\r\n <button\r\n key={command.id}\r\n onClick={() => executeCommand(command)}\r\n className={`\r\n w-full flex items-center justify-between px-4 py-3 text-left\r\n ${index === selectedIndex ? 'bg-muted' : 'hover:bg-muted/50'}\r\n transition-colors\r\n `}\r\n >\r\n <span className=\"text-foreground\">{command.label}</span>\r\n {command.shortcut && (\r\n <kbd className=\"px-2 py-1 text-xs bg-muted rounded border border-border\">\r\n {command.shortcut}\r\n </kbd>\r\n )}\r\n </button>\r\n ))\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { forwardRef, type HTMLAttributes } from 'react';\r\n\r\ntype CardStatus = 'success' | 'warning' | 'error' | 'info' | 'neutral';\r\n\r\ninterface CardProps extends HTMLAttributes<HTMLDivElement> {\r\n status?: CardStatus;\r\n clickable?: boolean;\r\n padding?: 'none' | 'sm' | 'md' | 'lg';\r\n children: React.ReactNode;\r\n}\r\n\r\nconst statusColors: Record<CardStatus, string> = {\r\n success: 'bg-success',\r\n warning: 'bg-warning',\r\n error: 'bg-error',\r\n info: 'bg-info',\r\n neutral: 'bg-text-muted',\r\n};\r\n\r\nconst paddingClasses: Record<NonNullable<CardProps['padding']>, string> = {\r\n none: '',\r\n sm: 'p-3',\r\n md: 'p-4',\r\n lg: 'p-6',\r\n};\r\n\r\nexport const Card = forwardRef<HTMLDivElement, CardProps>(\r\n (\r\n {\r\n status,\r\n clickable = false,\r\n padding = 'md',\r\n children,\r\n className = '',\r\n onClick,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const classes = [\r\n 'card',\r\n paddingClasses[padding],\r\n clickable && 'card-hover',\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n const cardContent = (\r\n <>\r\n {status && (\r\n <div\r\n className={`absolute left-0 top-0 bottom-0 w-1 rounded-l-lg ${statusColors[status]}`}\r\n data-testid=\"status-indicator\"\r\n />\r\n )}\r\n {children}\r\n </>\r\n );\r\n\r\n if (clickable || onClick) {\r\n return (\r\n <div\r\n ref={ref}\r\n role=\"button\"\r\n tabIndex={0}\r\n data-testid=\"card\"\r\n className={`${classes} relative`}\r\n onClick={onClick}\r\n onKeyDown={(e) => {\r\n if (e.key === 'Enter' || e.key === ' ') {\r\n e.preventDefault();\r\n onClick?.(e as unknown as React.MouseEvent<HTMLDivElement>);\r\n }\r\n }}\r\n {...props}\r\n >\r\n {cardContent}\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div ref={ref} data-testid=\"card\" className={`${classes} relative`} {...props}>\r\n {cardContent}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nCard.displayName = 'Card';\r\n\r\ninterface CardHeaderProps extends HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const CardHeader = forwardRef<HTMLDivElement, CardHeaderProps>(\r\n ({ children, className = '', ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={`border-b border-border pb-3 mb-3 ${className}`}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n);\r\n\r\nCardHeader.displayName = 'CardHeader';\r\n\r\ninterface CardFooterProps extends HTMLAttributes<HTMLDivElement> {\r\n children: React.ReactNode;\r\n}\r\n\r\nexport const CardFooter = forwardRef<HTMLDivElement, CardFooterProps>(\r\n ({ children, className = '', ...props }, ref) => (\r\n <div\r\n ref={ref}\r\n className={`border-t border-border pt-3 mt-3 ${className}`}\r\n {...props}\r\n >\r\n {children}\r\n </div>\r\n )\r\n);\r\n\r\nCardFooter.displayName = 'CardFooter';\r\n","import { forwardRef, type HTMLAttributes } from 'react';\r\n\r\ntype BadgeStatus = 'running' | 'stopped' | 'building' | 'error' | 'pending' | 'success';\r\ntype BadgeVariant = 'primary' | 'success' | 'warning' | 'danger' | 'info' | 'neutral' | 'secondary' | 'error' | 'outline' | 'destructive';\r\ntype BadgeSize = 'sm' | 'md' | 'lg';\r\n\r\nexport interface BadgeProps extends HTMLAttributes<HTMLSpanElement> {\r\n status?: BadgeStatus;\r\n variant?: BadgeVariant;\r\n size?: BadgeSize;\r\n dot?: boolean;\r\n icon?: React.ReactNode;\r\n children: React.ReactNode;\r\n}\r\n\r\nconst statusClasses: Record<BadgeStatus, string> = {\r\n running: 'badge-success',\r\n success: 'badge-success',\r\n stopped: 'badge-neutral',\r\n pending: 'badge-neutral',\r\n building: 'badge-warning',\r\n error: 'badge-error',\r\n};\r\n\r\nconst variantClasses: Record<BadgeVariant, string> = {\r\n primary: 'badge-primary bg-primary/10 text-primary border-primary/20',\r\n success: 'badge-success bg-success/10 text-success border-success/20',\r\n warning: 'badge-warning bg-warning/10 text-warning border-warning/20',\r\n danger: 'badge-error bg-danger/10 text-danger border-danger/20',\r\n info: 'badge-info bg-info/10 text-info border-info/20',\r\n neutral: 'badge-neutral bg-text-muted/10 text-text-secondary border-border',\r\n secondary: 'badge-secondary bg-text-muted/10 text-text-secondary border-border',\r\n error: 'badge-error bg-danger/10 text-danger border-danger/20',\r\n outline: 'badge-outline bg-transparent text-text-primary border-border',\r\n destructive: 'badge-destructive bg-danger/10 text-danger border-danger/20',\r\n};\r\n\r\nconst dotColors: Record<BadgeStatus, string> = {\r\n running: 'bg-success',\r\n success: 'bg-success',\r\n stopped: 'bg-text-muted',\r\n pending: 'bg-text-muted',\r\n building: 'bg-warning',\r\n error: 'bg-error',\r\n};\r\n\r\nconst sizeClasses: Record<BadgeSize, string> = {\r\n sm: 'text-xs px-1.5 py-0.5',\r\n md: 'text-sm px-2 py-0.5',\r\n lg: 'text-base px-3 py-1',\r\n};\r\n\r\nexport const Badge = forwardRef<HTMLSpanElement, BadgeProps>(\r\n (\r\n {\r\n status = 'pending',\r\n variant,\r\n size = 'sm',\r\n dot = false,\r\n icon,\r\n children,\r\n className = '',\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const colorClass = variant ? variantClasses[variant] : statusClasses[status];\r\n const classes = [\r\n 'badge inline-flex items-center gap-1 rounded-full border',\r\n colorClass,\r\n sizeClasses[size],\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n return (\r\n <span ref={ref} className={classes} {...props}>\r\n {dot && (\r\n <span\r\n className={`w-1.5 h-1.5 rounded-full ${dotColors[status]}`}\r\n data-testid=\"dot-indicator\"\r\n />\r\n )}\r\n {icon && <span className=\"flex-shrink-0\">{icon}</span>}\r\n {children}\r\n </span>\r\n );\r\n }\r\n);\r\n\r\nBadge.displayName = 'Badge';\r\n","export interface SkeletonProps {\r\n width?: string;\r\n height?: string;\r\n variant?: 'rectangular' | 'rounded' | 'circular';\r\n className?: string;\r\n testId?: string;\r\n}\r\n\r\nconst variantClasses = {\r\n rectangular: 'rounded-none',\r\n rounded: 'rounded-md',\r\n circular: 'rounded-full',\r\n};\r\n\r\nexport function Skeleton({\r\n width,\r\n height = '1rem',\r\n variant = 'rounded',\r\n className = '',\r\n testId = 'skeleton',\r\n}: SkeletonProps) {\r\n return (\r\n <div\r\n data-testid={testId}\r\n className={`\r\n animate-pulse bg-muted\r\n ${variantClasses[variant]}\r\n ${className}\r\n `}\r\n style={{ width, height }}\r\n />\r\n );\r\n}\r\n\r\nexport interface SkeletonTextProps {\r\n lines?: number;\r\n className?: string;\r\n}\r\n\r\nexport function SkeletonText({ lines = 1, className = '' }: SkeletonTextProps) {\r\n return (\r\n <div data-testid=\"skeleton-text\" className={`space-y-2 ${className}`}>\r\n {Array.from({ length: lines }).map((_, i) => (\r\n <Skeleton\r\n key={i}\r\n height=\"0.875rem\"\r\n className={i === lines - 1 && lines > 1 ? 'w-3/4' : 'w-full'}\r\n />\r\n ))}\r\n </div>\r\n );\r\n}\r\n\r\nexport interface SkeletonCardProps {\r\n showHeader?: boolean;\r\n showImage?: boolean;\r\n textLines?: number;\r\n className?: string;\r\n}\r\n\r\nexport function SkeletonCard({\r\n showHeader = false,\r\n showImage = false,\r\n textLines = 2,\r\n className = '',\r\n}: SkeletonCardProps) {\r\n return (\r\n <div\r\n data-testid=\"skeleton-card\"\r\n className={`p-4 border border-border rounded-lg bg-surface ${className}`}\r\n >\r\n {showHeader && (\r\n <div data-testid=\"skeleton-header\" className=\"flex items-center gap-3 mb-4\">\r\n <Skeleton variant=\"circular\" width=\"40px\" height=\"40px\" />\r\n <div className=\"flex-1 space-y-2\">\r\n <Skeleton height=\"0.875rem\" className=\"w-1/3\" />\r\n <Skeleton height=\"0.75rem\" className=\"w-1/4\" />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {showImage && (\r\n <Skeleton\r\n testId=\"skeleton-image\"\r\n variant=\"rounded\"\r\n height=\"150px\"\r\n className=\"w-full mb-4\"\r\n />\r\n )}\r\n\r\n <SkeletonText lines={textLines} />\r\n </div>\r\n );\r\n}\r\n\r\nexport interface SkeletonAvatarProps {\r\n size?: 'sm' | 'md' | 'lg' | 'xl';\r\n className?: string;\r\n}\r\n\r\nconst avatarSizes = {\r\n sm: 'w-8 h-8',\r\n md: 'w-10 h-10',\r\n lg: 'w-12 h-12',\r\n xl: 'w-16 h-16',\r\n};\r\n\r\nexport function SkeletonAvatar({ size = 'md', className = '' }: SkeletonAvatarProps) {\r\n return (\r\n <Skeleton variant=\"circular\" className={`${avatarSizes[size]} ${className}`} />\r\n );\r\n}\r\n","import { useCallback, useEffect, useRef } from 'react';\r\nimport { useWebSocketStore } from '../stores/websocket.store';\r\nimport { useLogStore } from '../stores/log.store';\r\nimport type { LogEntry, LogLevel, LogType } from '../stores/log.store';\r\n\r\nconst normalizeLogLevel = (level?: string): LogLevel => {\r\n switch (level) {\r\n case 'debug':\r\n case 'info':\r\n case 'warn':\r\n case 'error':\r\n return level;\r\n default:\r\n return 'info';\r\n }\r\n};\r\n\r\nconst logTypeFromMessage = (type: string): LogType | null => {\r\n if (!type.endsWith('-log')) return null;\r\n const raw = type.replace('-log', '');\r\n if (raw === 'app' || raw === 'test' || raw === 'git' || raw === 'system') {\r\n return raw as LogType;\r\n }\r\n return null;\r\n};\r\n\r\nexport interface WebSocketMessage {\r\n type: string;\r\n payload?: unknown;\r\n data?: unknown;\r\n projectId?: string;\r\n}\r\n\r\nexport interface UseWebSocketOptions {\r\n url: string;\r\n autoConnect?: boolean;\r\n projectId?: string;\r\n onMessage?: (message: WebSocketMessage) => void;\r\n onOpen?: () => void;\r\n onClose?: () => void;\r\n onError?: (error: Event) => void;\r\n}\r\n\r\nexport interface UseWebSocketReturn {\r\n isConnected: boolean;\r\n send: (data: unknown) => void;\r\n connect: () => void;\r\n disconnect: () => void;\r\n}\r\n\r\nexport function useWebSocket(options: UseWebSocketOptions): UseWebSocketReturn {\r\n const { url, autoConnect = true, projectId, onMessage, onOpen, onClose, onError } = options;\r\n\r\n const wsRef = useRef<WebSocket | null>(null);\r\n const reconnectTimeoutRef = useRef<ReturnType<typeof setTimeout> | null>(null);\r\n const intentionalCloseRef = useRef(false);\r\n const mountedRef = useRef(false);\r\n const urlRef = useRef(url);\r\n\r\n // Update URL ref when it changes\r\n useEffect(() => {\r\n urlRef.current = url;\r\n }, [url]);\r\n\r\n // Store ref for projectId filter\r\n const projectIdRef = useRef(projectId);\r\n useEffect(() => {\r\n projectIdRef.current = projectId;\r\n }, [projectId]);\r\n\r\n // Store refs for callbacks to avoid dependency issues\r\n const onMessageRef = useRef(onMessage);\r\n const onOpenRef = useRef(onOpen);\r\n const onCloseRef = useRef(onClose);\r\n const onErrorRef = useRef(onError);\r\n\r\n // Update refs when callbacks change\r\n useEffect(() => {\r\n onMessageRef.current = onMessage;\r\n onOpenRef.current = onOpen;\r\n onCloseRef.current = onClose;\r\n onErrorRef.current = onError;\r\n }, [onMessage, onOpen, onClose, onError]);\r\n\r\n // Get store functions directly (stable references)\r\n const isConnected = useWebSocketStore((state) => state.isConnected);\r\n const addLog = useLogStore((state) => state.addLog);\r\n const addBatchLogs = useLogStore((state) => state.addBatchLogs);\r\n\r\n\r\n const connect = useCallback(() => {\r\n if (wsRef.current?.readyState === WebSocket.OPEN ||\r\n wsRef.current?.readyState === WebSocket.CONNECTING) {\r\n return;\r\n }\r\n\r\n intentionalCloseRef.current = false;\r\n useWebSocketStore.getState().setStatus('connecting');\r\n\r\n const ws = new WebSocket(urlRef.current);\r\n wsRef.current = ws;\r\n\r\n ws.onopen = () => {\r\n if (!mountedRef.current) {\r\n ws.close();\r\n return;\r\n }\r\n useWebSocketStore.getState().setStatus('connected');\r\n onOpenRef.current?.();\r\n };\r\n\r\n ws.onclose = () => {\r\n useWebSocketStore.getState().setStatus('disconnected');\r\n onCloseRef.current?.();\r\n\r\n // Attempt reconnection if it wasn't intentional and still mounted\r\n if (!intentionalCloseRef.current && mountedRef.current) {\r\n const state = useWebSocketStore.getState();\r\n if (state.shouldReconnect) {\r\n useWebSocketStore.getState().incrementReconnectAttempts();\r\n const delay = useWebSocketStore.getState().reconnectDelay;\r\n reconnectTimeoutRef.current = setTimeout(() => {\r\n if (mountedRef.current) connect();\r\n }, delay);\r\n }\r\n }\r\n };\r\n\r\n ws.onerror = (error) => {\r\n useWebSocketStore.getState().setError('WebSocket connection error');\r\n onErrorRef.current?.(error);\r\n };\r\n\r\n ws.onmessage = (event: MessageEvent) => {\r\n try {\r\n const message = JSON.parse(event.data) as WebSocketMessage;\r\n\r\n // Filter by projectId if a filter is active\r\n if (projectIdRef.current && message.projectId && message.projectId !== projectIdRef.current) {\r\n return;\r\n }\r\n\r\n // Handle init logs\r\n if (message.type === 'init' && message.data) {\r\n const data = message.data as {\r\n logs?: Record<string, Array<{ text?: string; level?: string; time?: string }>>;\r\n };\r\n if (data.logs) {\r\n const entries: LogEntry[] = [];\r\n for (const [type, logs] of Object.entries(data.logs)) {\r\n if (type !== 'app' && type !== 'test' && type !== 'git' && type !== 'system') {\r\n continue;\r\n }\r\n for (const log of logs) {\r\n entries.push({\r\n id: '',\r\n text: log.text ?? '',\r\n level: normalizeLogLevel(log.level),\r\n timestamp: log.time ?? new Date().toISOString(),\r\n type: type as LogType,\r\n });\r\n }\r\n }\r\n if (entries.length > 0) {\r\n addBatchLogs(entries);\r\n }\r\n }\r\n }\r\n\r\n // Handle typed log messages (app-log, test-log, git-log, system-log)\r\n const logType = logTypeFromMessage(message.type);\r\n if (logType) {\r\n const payload = (message.data ?? message.payload) as { data?: string; level?: string } | undefined;\r\n if (payload?.data) {\r\n addLog({\r\n id: '',\r\n text: payload.data,\r\n level: normalizeLogLevel(payload.level),\r\n timestamp: new Date().toISOString(),\r\n type: logType,\r\n });\r\n }\r\n }\r\n\r\n // Handle legacy 'log' type with embedded log type in payload\r\n if (message.type === 'log') {\r\n const payload = (message.payload ?? message.data) as {\r\n id?: string; text?: string; level?: string; type?: string;\r\n } | undefined;\r\n if (payload?.text) {\r\n const pType = (payload.type === 'app' || payload.type === 'test' ||\r\n payload.type === 'git' || payload.type === 'system')\r\n ? payload.type as LogType : 'app';\r\n addLog({\r\n id: payload.id ?? '',\r\n text: payload.text,\r\n level: normalizeLogLevel(payload.level),\r\n timestamp: new Date().toISOString(),\r\n type: pType,\r\n });\r\n }\r\n }\r\n\r\n // Call user callback\r\n onMessageRef.current?.(message);\r\n } catch {\r\n // Non-JSON message, ignore or handle as needed\r\n }\r\n };\r\n }, [addLog, addBatchLogs]);\r\n\r\n const disconnect = useCallback(() => {\r\n intentionalCloseRef.current = true;\r\n\r\n if (reconnectTimeoutRef.current) {\r\n clearTimeout(reconnectTimeoutRef.current);\r\n reconnectTimeoutRef.current = null;\r\n }\r\n\r\n const ws = wsRef.current;\r\n if (ws) {\r\n // Suppress onerror/onclose handlers to avoid noise during teardown\r\n ws.onopen = null;\r\n ws.onclose = null;\r\n ws.onerror = null;\r\n ws.onmessage = null;\r\n if (ws.readyState === WebSocket.OPEN || ws.readyState === WebSocket.CONNECTING) {\r\n ws.close();\r\n }\r\n wsRef.current = null;\r\n }\r\n\r\n useWebSocketStore.getState().setStatus('disconnected');\r\n }, []);\r\n\r\n const send = useCallback((data: unknown) => {\r\n if (wsRef.current?.readyState === WebSocket.OPEN) {\r\n wsRef.current.send(JSON.stringify(data));\r\n }\r\n }, []);\r\n\r\n // Auto-connect on mount and reconnect when URL or projectId changes\r\n useEffect(() => {\r\n mountedRef.current = true;\r\n if (!autoConnect) return;\r\n connect();\r\n return () => {\r\n mountedRef.current = false;\r\n disconnect();\r\n };\r\n }, [autoConnect, connect, disconnect, url, projectId]);\r\n\r\n // Notify server about project scope if supported\r\n useEffect(() => {\r\n if (projectId && wsRef.current?.readyState === WebSocket.OPEN) {\r\n send({ type: 'subscribe', projectId });\r\n }\r\n }, [projectId, send]);\r\n\r\n return {\r\n isConnected,\r\n send,\r\n connect,\r\n disconnect,\r\n };\r\n}\r\n","export class ApiError extends Error {\r\n status: number;\r\n statusText: string;\r\n\r\n constructor(message: string, status: number, statusText: string) {\r\n super(message);\r\n this.name = 'ApiError';\r\n this.status = status;\r\n this.statusText = statusText;\r\n }\r\n}\r\n\r\nexport interface ApiClientOptions {\r\n baseUrl?: string;\r\n headers?: Record<string, string>;\r\n}\r\n\r\nexport interface RequestOptions {\r\n headers?: Record<string, string>;\r\n signal?: AbortSignal;\r\n}\r\n\r\nexport interface ApiClient {\r\n get<T = unknown>(path: string, options?: RequestOptions): Promise<T>;\r\n post<T = unknown>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;\r\n put<T = unknown>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;\r\n patch<T = unknown>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;\r\n delete<T = unknown>(path: string, options?: RequestOptions): Promise<T>;\r\n}\r\n\r\nconst DEFAULT_BASE_URL = import.meta.env.VITE_API_URL || '';\r\n\r\nexport function createApiClient(options: ApiClientOptions = {}): ApiClient {\r\n const baseUrl = options.baseUrl || DEFAULT_BASE_URL;\r\n const defaultHeaders: Record<string, string> = {\n 'Content-Type': 'application/json',\n ...options.headers,\n };\n\n const joinUrl = (base: string, path: string) => {\n if (!base) return path;\n if (base.endsWith('/') && path.startsWith('/')) {\n return `${base.slice(0, -1)}${path}`;\n }\n return `${base}${path}`;\n };\n\n async function request<T>(\n method: string,\n path: string,\n body?: unknown,\n requestOptions?: RequestOptions\n ): Promise<T> {\n const url = joinUrl(baseUrl, path);\n const headers = {\r\n ...defaultHeaders,\r\n ...requestOptions?.headers,\r\n };\r\n\r\n const fetchOptions: RequestInit = {\r\n method,\r\n headers,\r\n signal: requestOptions?.signal,\r\n };\r\n\r\n if (body !== undefined) {\r\n fetchOptions.body = JSON.stringify(body);\r\n }\r\n\r\n const response = await fetch(url, fetchOptions);\r\n\r\n if (!response.ok) {\r\n let message = response.statusText;\r\n try {\r\n const errorData = await response.json();\r\n message = errorData.message || message;\r\n } catch {\r\n // Ignore JSON parse errors\r\n }\r\n throw new ApiError(message, response.status, response.statusText);\r\n }\r\n\r\n return response.json();\r\n }\r\n\r\n return {\r\n get<T = unknown>(path: string, options?: RequestOptions): Promise<T> {\r\n return request<T>('GET', path, undefined, options);\r\n },\r\n\r\n post<T = unknown>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\r\n return request<T>('POST', path, body, options);\r\n },\r\n\r\n put<T = unknown>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\r\n return request<T>('PUT', path, body, options);\r\n },\r\n\r\n patch<T = unknown>(path: string, body?: unknown, options?: RequestOptions): Promise<T> {\r\n return request<T>('PATCH', path, body, options);\r\n },\r\n\r\n delete<T = unknown>(path: string, options?: RequestOptions): Promise<T> {\r\n return request<T>('DELETE', path, undefined, options);\r\n },\r\n };\r\n}\r\n\r\nexport const apiClient = createApiClient();\r\n","import type { ApiClient } from './client';\r\nimport type { ProjectInfo, ProjectStatus, Task, LogEntry, LogType } from '../stores';\r\nimport type { WorkspaceProject } from '../stores/workspace.store';\r\n\r\nexport interface Agent {\r\n id: string;\r\n status: 'idle' | 'running' | 'completed' | 'failed';\r\n task?: string;\r\n progress?: number;\r\n startedAt?: string;\r\n completedAt?: string;\r\n}\r\n\r\nexport interface HealthStatus {\r\n status: 'healthy' | 'degraded' | 'unhealthy';\r\n uptime: number;\r\n version?: string;\r\n components?: Record<string, { status: string; message?: string }>;\r\n}\r\n\r\nexport interface CommandResult {\r\n success: boolean;\r\n output?: string;\r\n error?: string;\r\n}\r\n\r\nexport interface CommandHistoryEntry {\r\n id: string;\r\n command: string;\r\n args?: Record<string, unknown>;\r\n timestamp: string;\r\n result?: CommandResult;\r\n}\r\n\r\nexport interface BugReport {\r\n description: string;\r\n severity: 'low' | 'medium' | 'high' | 'critical';\r\n url?: string;\r\n screenshot?: string;\r\n}\r\n\r\nexport interface Bug {\r\n id: string;\r\n description: string;\r\n severity: string;\r\n status: string;\r\n createdAt: string;\r\n}\r\n\r\nexport interface ChangelogEntry {\r\n hash: string;\r\n message: string;\r\n time: string;\r\n author?: string;\r\n}\r\n\r\nexport interface RoadmapPhase {\r\n number: number;\r\n name: string;\r\n goal: string;\r\n status: 'done' | 'in_progress' | 'pending';\r\n deliverables: { text: string; done: boolean }[];\r\n taskCount: number;\r\n completedTaskCount: number;\r\n testCount: number;\r\n testFileCount: number;\r\n hasTests: boolean;\r\n verified: boolean;\r\n}\r\n\r\nexport interface RoadmapMilestone {\r\n name: string;\r\n phases: RoadmapPhase[];\r\n}\r\n\r\nexport interface RoadmapData {\r\n milestones: RoadmapMilestone[];\r\n currentPhase: { number: number; name: string } | null;\r\n totalPhases: number;\r\n completedPhases: number;\r\n testSummary: { totalFiles: number; totalTests: number };\r\n recentCommits: { hash: string; message: string; date: string; author: string }[];\r\n projectInfo: { name: string; version: string; description: string };\r\n}\r\n\r\nexport interface TestInventoryGroup {\r\n name: string;\r\n fileCount: number;\r\n testCount: number;\r\n files: { relativePath: string; testCount: number }[];\r\n}\r\n\r\nexport interface TestInventoryData {\r\n totalFiles: number;\r\n totalTests: number;\r\n groups: TestInventoryGroup[];\r\n lastRun?: { timestamp: string; passed: number; failed: number; total: number; duration: number } | null;\r\n}\r\n\r\nexport interface WorkspaceGroup {\r\n name: string;\r\n path: string;\r\n repos: (WorkspaceProject & { id: string })[];\r\n repoCount: number;\r\n hasTlc: boolean;\r\n}\r\n\r\nexport interface MemoryDecision {\r\n id: string;\r\n text: string;\r\n context?: string;\r\n timestamp?: string;\r\n}\r\n\r\nexport interface MemoryGotcha {\r\n id: string;\r\n text: string;\r\n context?: string;\r\n timestamp?: string;\r\n}\r\n\r\nexport interface MemoryStats {\r\n totalEntries: number;\r\n vectorCount?: number;\r\n decisions?: number;\r\n gotchas?: number;\r\n conversations?: number;\r\n}\r\n\r\nexport interface ProjectFile {\r\n filename: string;\r\n content: string;\r\n}\r\n\r\nexport interface ApiEndpoints {\r\n project: {\r\n getProject(): Promise<ProjectInfo>;\r\n getStatus(): Promise<ProjectStatus>;\r\n getChangelog(): Promise<ChangelogEntry[]>;\r\n };\r\n tasks: {\r\n getTasks(): Promise<Task[]>;\r\n getTask(id: string): Promise<Task>;\r\n createTask(task: Partial<Task>): Promise<Task>;\r\n updateTask(id: string, updates: Partial<Task>): Promise<Task>;\r\n deleteTask(id: string): Promise<void>;\r\n };\r\n logs: {\r\n getLogs(type: LogType): Promise<LogEntry[]>;\r\n clearLogs(type: LogType): Promise<void>;\r\n };\r\n agents: {\r\n getAgents(): Promise<Agent[]>;\r\n getAgent(id: string): Promise<Agent>;\r\n stopAgent(id: string): Promise<void>;\r\n };\r\n health: {\r\n getHealth(): Promise<HealthStatus>;\r\n };\r\n commands: {\r\n runCommand(command: string, args?: Record<string, unknown>): Promise<CommandResult>;\r\n getHistory(): Promise<CommandHistoryEntry[]>;\r\n };\r\n bugs: {\r\n getBugs(): Promise<Bug[]>;\r\n createBug(bug: BugReport): Promise<{ bugId: string }>;\r\n };\r\n config: {\r\n getConfig(): Promise<Record<string, unknown>>;\r\n saveConfig(config: Record<string, unknown>): Promise<void>;\r\n };\r\n workspace: {\r\n getConfig(): Promise<{ roots: string[]; lastScans?: Record<string, number> }>;\r\n setConfig(roots: string[]): Promise<{ roots: string[] }>;\r\n scan(): Promise<{ projects: WorkspaceProject[]; scannedAt: number }>;\r\n getProjects(): Promise<WorkspaceProject[]>;\r\n getGroups(): Promise<WorkspaceGroup[]>;\r\n };\r\n projects: {\r\n getById(id: string): Promise<WorkspaceProject>;\r\n getStatus(id: string): Promise<ProjectStatus>;\r\n getTasks(id: string): Promise<Task[]>;\r\n getBugs(id: string): Promise<Bug[]>;\r\n getRoadmap(id: string): Promise<RoadmapData>;\r\n getTestInventory(id: string): Promise<TestInventoryData>;\r\n runTests(id: string): Promise<{ started: boolean; message: string }>;\r\n updateTaskStatus(id: string, taskNum: number, status: string, owner?: string): Promise<{ task: Task }>;\r\n updateTask(id: string, taskNum: number, updates: Record<string, unknown>): Promise<{ task: Task }>;\r\n createTask(id: string, task: Record<string, unknown>): Promise<{ task: Task }>;\r\n updateBugStatus(id: string, bugId: string, status: string): Promise<{ bug: Bug }>;\r\n updateBug(id: string, bugId: string, updates: Record<string, unknown>): Promise<{ bug: Bug }>;\r\n createBug(id: string, bug: Record<string, unknown>): Promise<{ bug: Bug }>;\r\n getMemoryDecisions(id: string): Promise<MemoryDecision[]>;\r\n getMemoryGotchas(id: string): Promise<MemoryGotcha[]>;\r\n getMemoryStats(id: string): Promise<MemoryStats>;\r\n getFile(id: string, filename: string): Promise<ProjectFile>;\r\n };\r\n}\r\n\r\nexport function createApiEndpoints(client: ApiClient): ApiEndpoints {\r\n return {\r\n project: {\r\n getProject() {\r\n return client.get<ProjectInfo>('/api/project');\r\n },\r\n getStatus() {\r\n return client.get<ProjectStatus>('/api/status');\r\n },\r\n getChangelog() {\r\n return client.get<ChangelogEntry[]>('/api/changelog');\r\n },\r\n },\r\n\r\n tasks: {\r\n getTasks() {\r\n return client\r\n .get<{ items?: Task[] }>('/api/tasks')\r\n .then((res) => res.items ?? []);\r\n },\r\n getTask(id: string) {\r\n return client.get<Task>(`/api/tasks/${id}`);\r\n },\r\n createTask(task: Partial<Task>) {\r\n return client.post<Task>('/api/tasks', task);\r\n },\r\n updateTask(id: string, updates: Partial<Task>) {\r\n return client.patch<Task>(`/api/tasks/${id}`, updates);\r\n },\r\n deleteTask(id: string) {\r\n return client.delete(`/api/tasks/${id}`);\r\n },\r\n },\r\n\r\n logs: {\r\n getLogs(type: LogType) {\r\n return client.get<LogEntry[]>(`/api/logs/${type}`);\r\n },\r\n clearLogs(type: LogType) {\r\n return client.delete(`/api/logs/${type}`);\r\n },\r\n },\r\n\r\n agents: {\r\n getAgents() {\r\n return client.get<Agent[]>('/api/agents');\r\n },\r\n getAgent(id: string) {\r\n return client.get<Agent>(`/api/agents/${id}`);\r\n },\r\n stopAgent(id: string) {\r\n return client.post(`/api/agents/${id}/stop`);\r\n },\r\n },\r\n\r\n health: {\r\n getHealth() {\r\n return client.get<HealthStatus>('/api/health');\r\n },\r\n },\r\n\r\n commands: {\r\n runCommand(command: string, args?: Record<string, unknown>) {\r\n return client.post<CommandResult>(`/api/commands/${command}`, args);\r\n },\r\n getHistory() {\r\n return client.get<CommandHistoryEntry[]>('/api/commands/history');\r\n },\r\n },\r\n\r\n bugs: {\r\n getBugs() {\r\n return client.get<Bug[]>('/api/bugs');\r\n },\r\n createBug(bug: BugReport) {\r\n return client.post<{ bugId: string }>('/api/bug', bug);\r\n },\r\n },\r\n\r\n config: {\r\n getConfig() {\r\n return client.get<Record<string, unknown>>('/api/config');\r\n },\r\n saveConfig(config: Record<string, unknown>) {\r\n return client.put('/api/config', config);\r\n },\r\n },\r\n\r\n workspace: {\r\n getConfig() {\r\n return client.get<{ roots: string[]; lastScans?: Record<string, number> }>(\r\n '/api/workspace/config'\r\n );\r\n },\r\n setConfig(roots: string[]) {\r\n return client.put<{ roots: string[] }>('/api/workspace/config', { roots });\r\n },\r\n scan() {\r\n return client.post<{ projects: WorkspaceProject[]; scannedAt: number }>(\r\n '/api/workspace/scan'\r\n );\r\n },\r\n async getProjects() {\r\n const res = await client.get<{ projects: WorkspaceProject[] }>('/api/workspace/projects');\r\n return res.projects;\r\n },\r\n async getGroups() {\r\n const res = await client.get<{ groups: WorkspaceGroup[] }>('/api/workspace/groups');\r\n return res.groups;\r\n },\r\n },\r\n\r\n projects: {\r\n async getById(id: string) {\r\n const res = await client.get<{ project: WorkspaceProject }>(`/api/projects/${id}`);\r\n return res.project;\r\n },\r\n async getStatus(id: string) {\r\n const res = await client.get<{ status: ProjectStatus }>(`/api/projects/${id}/status`);\r\n return res.status;\r\n },\r\n async getTasks(id: string) {\r\n const res = await client.get<{ tasks: Task[] }>(`/api/projects/${id}/tasks`);\r\n return res.tasks;\r\n },\r\n async getBugs(id: string) {\r\n const res = await client.get<{ bugs: Bug[] }>(`/api/projects/${id}/bugs`);\r\n return res.bugs;\r\n },\r\n async getRoadmap(id: string) {\r\n return client.get<RoadmapData>(`/api/projects/${id}/roadmap`);\r\n },\r\n async getTestInventory(id: string) {\r\n return client.get<TestInventoryData>(`/api/projects/${id}/tests`);\r\n },\r\n async runTests(id: string) {\r\n return client.post<{ started: boolean; message: string }>(`/api/projects/${id}/tests/run`);\r\n },\r\n async updateTaskStatus(id: string, taskNum: number, status: string, owner?: string) {\r\n return client.put<{ task: Task }>(`/api/projects/${id}/tasks/${taskNum}/status`, { status, owner });\r\n },\r\n async updateTask(id: string, taskNum: number, updates: Record<string, unknown>) {\r\n return client.put<{ task: Task }>(`/api/projects/${id}/tasks/${taskNum}`, updates);\r\n },\r\n async createTask(id: string, task: Record<string, unknown>) {\r\n return client.post<{ task: Task }>(`/api/projects/${id}/tasks`, task);\r\n },\r\n async updateBugStatus(id: string, bugId: string, status: string) {\r\n return client.put<{ bug: Bug }>(`/api/projects/${id}/bugs/${bugId}/status`, { status });\r\n },\r\n async updateBug(id: string, bugId: string, updates: Record<string, unknown>) {\r\n return client.put<{ bug: Bug }>(`/api/projects/${id}/bugs/${bugId}`, updates);\r\n },\r\n async createBug(id: string, bug: Record<string, unknown>) {\r\n return client.post<{ bug: Bug }>(`/api/projects/${id}/bugs`, bug);\r\n },\r\n async getMemoryDecisions(id: string) {\r\n const res = await client.get<{ decisions: MemoryDecision[] }>(`/api/projects/${id}/memory/decisions`);\r\n return res.decisions;\r\n },\r\n async getMemoryGotchas(id: string) {\r\n const res = await client.get<{ gotchas: MemoryGotcha[] }>(`/api/projects/${id}/memory/gotchas`);\r\n return res.gotchas;\r\n },\r\n async getMemoryStats(id: string) {\r\n return client.get<MemoryStats>(`/api/projects/${id}/memory/stats`);\r\n },\r\n async getFile(id: string, filename: string) {\r\n return client.get<ProjectFile>(`/api/projects/${id}/files/${filename}`);\r\n },\r\n },\r\n };\r\n}\r\n","export { createApiClient, apiClient, ApiError } from './client';\r\nexport type { ApiClient, ApiClientOptions, RequestOptions } from './client';\r\n\r\nexport { createApiEndpoints } from './endpoints';\r\nexport type {\r\n ApiEndpoints,\r\n Agent,\r\n HealthStatus,\r\n CommandResult,\r\n CommandHistoryEntry,\r\n RoadmapPhase,\r\n RoadmapMilestone,\r\n RoadmapData,\r\n TestInventoryGroup,\r\n TestInventoryData,\r\n} from './endpoints';\r\n\r\nimport { apiClient } from './client';\r\nimport { createApiEndpoints } from './endpoints';\r\n\r\nexport const api = createApiEndpoints(apiClient);\r\n","import { useCallback } from 'react';\r\nimport { useProjectStore } from '../stores/project.store';\r\nimport { api } from '../api';\r\n\r\nexport function useProject(projectId?: string) {\r\n const { project, status, loading, error, setProject, setStatus, setLoading, setError } =\r\n useProjectStore();\r\n\r\n const fetchProject = useCallback(async () => {\n setProject(null);\n setStatus(null);\n setLoading(true);\n try {\n if (!projectId) {\n setLoading(false);\n return;\n }\n // Workspace mode: merge project + status into expected shapes\n const [projectData, statusData] = await Promise.all([\n api.projects.getById(projectId),\n api.projects.getStatus(projectId).catch(() => null),\n ]);\n\n const mergedPhase =\n statusData?.currentPhase ?? projectData.phase ?? 0;\n const mergedPhaseName =\n statusData?.phaseName ?? projectData.phaseName ?? undefined;\n const mergedTotalPhases =\n statusData?.totalPhases ?? projectData.totalPhases ?? 0;\n const mergedCompletedPhases =\n statusData?.completedPhases ?? projectData.completedPhases ?? 0;\n\n setProject({\n id: projectData.id,\n name: projectData.name ?? 'Unknown',\n path: projectData.path,\n hasTlc: projectData.hasTlc,\n hasPlanning: projectData.hasPlanning,\n version: projectData.version,\n phase: mergedPhase,\n phaseName: mergedPhaseName,\n totalPhases: mergedTotalPhases,\n completedPhases: mergedCompletedPhases,\n });\n setStatus({\n currentPhase: statusData?.currentPhase ?? mergedPhase,\n phaseName: statusData?.phaseName ?? mergedPhaseName,\n totalPhases: statusData?.totalPhases ?? mergedTotalPhases,\n completedPhases: statusData?.completedPhases ?? mergedCompletedPhases,\n exists: statusData?.exists,\n hasTlc: statusData?.hasTlc,\n hasPlanning: statusData?.hasPlanning,\n testsPass: statusData?.testsPass ?? 0,\n testsFail: statusData?.testsFail ?? 0,\n coverage: statusData?.coverage ?? 0,\n });\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to fetch project');\n }\n }, [projectId, setLoading, setProject, setStatus, setError]);\n\n const fetchStatus = useCallback(async () => {\n if (!projectId) return; // No project selected in workspace mode\n // Workspace status is fetched in fetchProject\n }, [projectId]);\n\r\n const refresh = useCallback(async () => {\r\n await Promise.all([fetchProject(), fetchStatus()]);\r\n }, [fetchProject, fetchStatus]);\r\n\r\n return {\r\n project,\r\n status,\r\n loading,\r\n error,\r\n fetchProject,\r\n fetchStatus,\r\n refresh,\r\n };\r\n}\r\n","import { useCallback } from 'react';\nimport { useTaskStore, type Task } from '../stores/task.store';\nimport { api } from '../api';\n\nexport function useTasks(projectId?: string) {\n const {\n tasks,\n selectedTask,\n filters,\n loading,\n filteredTasks,\n tasksByStatus,\n setTasks,\n addTask,\n updateTask: storeUpdateTask,\n removeTask,\n selectTask,\n setFilter,\n clearFilters,\n setLoading,\n } = useTaskStore();\n\n const fetchTasks = useCallback(async () => {\n setLoading(true);\n try {\n if (!projectId) {\n setTasks([]);\n return;\n }\n const raw = await api.projects.getTasks(projectId);\n const projectTasks = Array.isArray(raw) ? raw : [];\n const data: Task[] = projectTasks.map((t) => ({\n id: String(t.num ?? t.number ?? t.id ?? ''),\n title: t.title ?? t.subject ?? 'Untitled',\n subject: t.title ?? t.subject ?? 'Untitled',\n status: t.status === 'done' ? 'completed' : t.status ?? 'pending',\n owner: t.owner ?? null,\n priority: 'medium',\n }));\n setTasks(data);\n } catch (err) {\n console.error('Failed to fetch tasks:', err);\n setTasks([]);\n } finally {\n setLoading(false);\n }\n }, [projectId, setLoading, setTasks]);\n\n const createTask = useCallback(\n async (taskData: Partial<Task>) => {\n if (projectId) {\n // Use workspace API for project-scoped task creation\n try {\n const result = await api.projects.createTask(projectId, {\n title: taskData.title || taskData.subject || 'Untitled',\n goal: taskData.goal || taskData.description || '',\n });\n await fetchTasks(); // Refresh to get server-assigned numbers\n return result.task;\n } catch (err) {\n console.error('Failed to create task:', err);\n throw err;\n }\n }\n try {\n const created = await api.tasks.createTask(taskData);\n addTask(created);\n return created;\n } catch (err) {\n console.error('Failed to create task:', err);\n throw err;\n }\n },\n [addTask, projectId, fetchTasks]\n );\n\n const updateTaskStatus = useCallback(\n async (taskId: string, newStatus: string, owner?: string) => {\n if (projectId) {\n try {\n const result = await api.projects.updateTaskStatus(\n projectId,\n parseInt(taskId, 10),\n newStatus,\n owner\n );\n // Update local store optimistically\n storeUpdateTask(taskId, { status: newStatus === 'done' ? 'completed' : newStatus, owner: owner ?? null });\n return result.task;\n } catch (err) {\n console.error('Failed to update task status:', err);\n throw err;\n }\n }\n // Fallback to old API\n try {\n const updated = await api.tasks.updateTask(taskId, { status: newStatus });\n storeUpdateTask(taskId, updated);\n return updated;\n } catch (err) {\n console.error('Failed to update task:', err);\n throw err;\n }\n },\n [storeUpdateTask, projectId]\n );\n\n const updateTask = useCallback(\n async (id: string, updates: Partial<Task>) => {\n if (projectId) {\n try {\n const result = await api.projects.updateTask(projectId, parseInt(id, 10), updates);\n storeUpdateTask(id, result.task);\n return result.task;\n } catch (err) {\n console.error('Failed to update task:', err);\n throw err;\n }\n }\n try {\n const updated = await api.tasks.updateTask(id, updates);\n storeUpdateTask(id, updated);\n return updated;\n } catch (err) {\n console.error('Failed to update task:', err);\n throw err;\n }\n },\n [storeUpdateTask, projectId]\n );\n\n const deleteTask = useCallback(\n async (id: string) => {\n try {\n await api.tasks.deleteTask(id);\n removeTask(id);\n } catch (err) {\n console.error('Failed to delete task:', err);\n throw err;\n }\n },\n [removeTask]\n );\n\n return {\n tasks,\n selectedTask,\n filters,\n loading,\n isReadOnly: false, // No longer read-only — workspace API supports writes\n filteredTasks,\n tasksByStatus,\n fetchTasks,\n createTask,\n updateTask,\n updateTaskStatus,\n deleteTask,\n selectTask,\n setFilter,\n clearFilters,\n };\n}\n","import { useCallback, useEffect, useState } from 'react';\r\nimport { api } from '../api';\r\n\r\ninterface TlcConfig {\r\n project?: string;\r\n testFrameworks?: {\r\n primary?: string;\r\n };\r\n quality?: {\r\n coverageThreshold?: number;\r\n qualityScoreThreshold?: number;\r\n };\r\n [key: string]: unknown;\r\n}\r\n\r\nexport function useSettings() {\r\n const [config, setConfig] = useState<TlcConfig | null>(null);\r\n const [loading, setLoading] = useState(true);\r\n const [saving, setSaving] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n const fetchConfig = useCallback(async () => {\r\n setLoading(true);\r\n setError(null);\r\n try {\r\n const data = await api.config.getConfig();\r\n setConfig(data);\r\n } catch (err) {\r\n setError(err instanceof Error ? err.message : 'Failed to fetch config');\r\n setConfig(null);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n fetchConfig();\r\n }, [fetchConfig]);\r\n\r\n const saveConfig = useCallback(async (newConfig: TlcConfig) => {\r\n setSaving(true);\r\n setError(null);\r\n try {\r\n await api.config.saveConfig(newConfig);\r\n setConfig(newConfig);\r\n } catch (err) {\r\n const message = err instanceof Error ? err.message : 'Failed to save config';\r\n setError(message);\r\n throw err;\r\n } finally {\r\n setSaving(false);\r\n }\r\n }, []);\r\n\r\n const refetch = useCallback(async () => {\r\n await fetchConfig();\r\n }, [fetchConfig]);\r\n\r\n return {\r\n config,\r\n loading,\r\n saving,\r\n error,\r\n saveConfig,\r\n refetch,\r\n };\r\n}\r\n","import { useState, useCallback, useEffect } from 'react';\r\nimport { api } from '../api';\r\nimport type { RoadmapData } from '../api/endpoints';\r\n\r\nexport function useRoadmap(projectId?: string) {\r\n const [roadmap, setRoadmap] = useState<RoadmapData | null>(null);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n const fetchRoadmap = useCallback(async () => {\r\n if (!projectId) {\r\n setRoadmap(null);\r\n return;\r\n }\r\n setLoading(true);\r\n setError(null);\r\n try {\r\n const data = await api.projects.getRoadmap(projectId);\r\n setRoadmap(data);\r\n } catch (err) {\r\n setError(err instanceof Error ? err.message : 'Failed to fetch roadmap');\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [projectId]);\r\n\r\n useEffect(() => {\r\n fetchRoadmap();\r\n }, [fetchRoadmap]);\r\n\r\n return { roadmap, loading, error, refresh: fetchRoadmap };\r\n}\r\n","import { useState, useCallback, useEffect } from 'react';\r\nimport { api } from '../api';\r\nimport type { TestInventoryData } from '../api/endpoints';\r\n\r\nexport function useTestSuite(projectId?: string) {\r\n const [inventory, setInventory] = useState<TestInventoryData | null>(null);\r\n const [loading, setLoading] = useState(false);\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n const fetchInventory = useCallback(async () => {\r\n if (!projectId) {\r\n setInventory(null);\r\n return;\r\n }\r\n setLoading(true);\r\n setError(null);\r\n try {\r\n const data = await api.projects.getTestInventory(projectId);\r\n setInventory(data);\r\n } catch (err) {\r\n setError(err instanceof Error ? err.message : 'Failed to fetch test inventory');\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [projectId]);\r\n\r\n const runTests = useCallback(async () => {\r\n if (!projectId) return;\r\n await api.projects.runTests(projectId);\r\n }, [projectId]);\r\n\r\n useEffect(() => {\r\n fetchInventory();\r\n }, [fetchInventory]);\r\n\r\n return { inventory, loading, error, refresh: fetchInventory, runTests };\r\n}\r\n","import { useEffect, useState } from 'react';\r\nimport { useNavigate, useParams } from 'react-router-dom';\r\nimport { GitBranch, FolderOpen } from 'lucide-react';\r\nimport { Card } from '../components/ui/Card';\r\nimport { Badge } from '../components/ui/Badge';\r\nimport { Button } from '../components/ui/Button';\r\nimport { Skeleton } from '../components/ui/Skeleton';\r\nimport { useProject, useTasks, useRoadmap } from '../hooks';\r\nimport { useUIStore } from '../stores';\r\nimport { useWorkspaceStore } from '../stores/workspace.store';\r\n\r\nexport function DashboardPage() {\r\n const navigate = useNavigate();\r\n const { projectId: urlProjectId } = useParams<{ projectId: string }>();\r\n const selectProject = useWorkspaceStore((s) => s.selectProject);\r\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\r\n\r\n // URL takes precedence; sync to store\r\n const projectId = urlProjectId ?? storeProjectId ?? undefined;\r\n useEffect(() => {\r\n if (urlProjectId && urlProjectId !== storeProjectId) {\r\n selectProject(urlProjectId);\r\n }\r\n }, [urlProjectId, storeProjectId, selectProject]);\r\n\r\n const { project, loading, fetchProject, fetchStatus } = useProject(projectId);\r\n const { fetchTasks } = useTasks(projectId);\r\n const { roadmap, loading: roadmapLoading } = useRoadmap(projectId);\r\n const setActiveView = useUIStore((state) => state.setActiveView);\r\n const [expandedPhase, setExpandedPhase] = useState<number | null>(null);\r\n\r\n useEffect(() => {\r\n setActiveView('dashboard');\r\n fetchProject();\r\n fetchStatus();\r\n fetchTasks();\r\n }, [setActiveView, fetchProject, fetchStatus, fetchTasks, projectId]);\r\n\r\n const handleSelectProject = () => navigate('/projects');\r\n\r\n // Loading state\r\n if (loading || roadmapLoading) {\r\n return (\r\n <div className=\"p-6 space-y-6\">\r\n <Skeleton className=\"h-8 w-64\" />\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\r\n {[1, 2, 3, 4].map((i) => (\r\n <Skeleton key={i} className=\"h-32\" />\r\n ))}\r\n </div>\r\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\r\n <Skeleton className=\"h-64\" />\r\n <Skeleton className=\"h-64\" />\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Empty state - no project selected\r\n if (!project) {\r\n return (\r\n <div className=\"p-6\">\r\n <Card className=\"p-8\">\r\n <div className=\"text-center\">\r\n <FolderOpen className=\"w-16 h-16 mx-auto text-text-muted mb-4\" />\r\n <h2 className=\"text-xl font-semibold text-text-primary mb-2\">\r\n No Project Selected\r\n </h2>\r\n <p className=\"text-text-secondary mb-6\">\r\n Select a project to view its dashboard and start working.\r\n </p>\r\n <Button onClick={handleSelectProject}>\r\n Get Started\r\n </Button>\r\n </div>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n\r\n // Project selected but no TLC configured\r\n const hasNoTlcData = !project.hasTlc && !project.hasPlanning && (project.totalPhases ?? 0) === 0;\r\n\r\n if (hasNoTlcData) {\r\n return (\r\n <div className=\"p-6 space-y-6\">\r\n {/* Project Header */}\r\n <div className=\"flex items-center justify-between\">\r\n <div>\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">\r\n {project.name}\r\n </h1>\r\n <p className=\"text-text-secondary mt-1\">{project.path}</p>\r\n </div>\r\n </div>\r\n\r\n {/* Non-TLC banner */}\r\n <Card className=\"p-6\">\r\n <div className=\"text-center\">\r\n <p className=\"text-text-secondary mb-2\">\r\n This project doesn't have TLC configured yet.\r\n </p>\r\n <p className=\"text-sm text-text-muted mb-4\">\r\n Run <code className=\"px-1 py-0.5 bg-bg-tertiary rounded\">/tlc:init</code> in the project directory to start tracking phases, tasks, and tests.\r\n </p>\r\n <p className=\"text-xs text-text-muted\">\r\n Version: {project.version || 'unknown'}\r\n </p>\r\n </div>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n\r\n // Status chip variant mapping\r\n const statusVariant = (status: string): 'success' | 'primary' | 'neutral' => {\r\n if (status === 'done') return 'success';\r\n if (status === 'in_progress') return 'primary';\r\n return 'neutral';\r\n };\r\n\r\n const toggleExpand = (phaseNum: number) => {\r\n setExpandedPhase((prev) => (prev === phaseNum ? null : phaseNum));\r\n };\r\n\r\n // Roadmap-derived data\r\n const completedPhases = roadmap?.completedPhases ?? 0;\r\n const totalPhases = roadmap?.totalPhases ?? 0;\r\n const totalTests = roadmap?.testSummary?.totalTests ?? 0;\r\n const totalFiles = roadmap?.testSummary?.totalFiles ?? 0;\r\n const currentPhaseNum = roadmap?.currentPhase?.number ?? 0;\r\n const projectInfo = roadmap?.projectInfo;\r\n const recentCommits = roadmap?.recentCommits ?? [];\r\n\r\n return (\r\n <div className=\"p-6 space-y-6\">\r\n {/* Project Header */}\r\n <div className=\"flex items-center justify-between\">\r\n <div>\r\n <div className=\"flex items-center gap-3\">\r\n <h1 data-testid=\"project-name\" className=\"text-2xl font-semibold text-text-primary\">\r\n {projectInfo?.name ?? project.name}\r\n </h1>\r\n <span data-testid=\"project-version\" className=\"text-sm text-text-secondary font-mono\">\r\n v{projectInfo?.version ?? project.version ?? '0.0.0'}\r\n </span>\r\n </div>\r\n <div className=\"flex items-center gap-3 mt-1\">\r\n {roadmap?.currentPhase && (\r\n <p className=\"text-text-secondary\">\r\n Phase {roadmap.currentPhase.number}: {roadmap.currentPhase.name}\r\n </p>\r\n )}\r\n {project.branch && (\r\n <span className=\"flex items-center gap-1 text-text-secondary text-sm\">\r\n <GitBranch className=\"w-4 h-4\" />\r\n {project.branch}\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Stat Cards */}\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-4 gap-4\">\r\n <Card className=\"p-4\">\r\n <div className=\"text-sm text-text-secondary\">Phases</div>\r\n <div data-testid=\"stat-phases\" className=\"text-3xl font-bold text-text-primary mt-2\">\r\n {completedPhases}/{totalPhases}\r\n </div>\r\n </Card>\r\n\r\n <Card className=\"p-4\">\r\n <div className=\"text-sm text-text-secondary\">Tests</div>\r\n <div data-testid=\"stat-tests\" className=\"text-3xl font-bold text-success mt-2\">\r\n {totalTests}\r\n </div>\r\n </Card>\r\n\r\n <Card className=\"p-4\">\r\n <div className=\"text-sm text-text-secondary\">Test Files</div>\r\n <div data-testid=\"stat-files\" className=\"text-3xl font-bold text-primary mt-2\">\r\n {totalFiles}\r\n </div>\r\n </Card>\r\n\r\n <Card className=\"p-4\">\r\n <div className=\"text-sm text-text-secondary\">Current Phase</div>\r\n <div data-testid=\"stat-current-phase\" className=\"text-3xl font-bold text-text-primary mt-2\">\r\n #{currentPhaseNum}\r\n </div>\r\n </Card>\r\n </div>\r\n\r\n {/* Main Content Grid */}\r\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\r\n {/* Left Column - Roadmap */}\r\n <div className=\"space-y-4\">\r\n <h3 className=\"font-medium text-text-primary\">Roadmap</h3>\r\n {roadmap?.milestones.map((milestone) => (\r\n <div key={milestone.name}>\r\n <h4 data-testid=\"milestone-header\" className=\"text-sm font-semibold text-text-secondary uppercase tracking-wide mb-2\">\r\n {milestone.name}\r\n </h4>\r\n <div className=\"space-y-1\">\r\n {milestone.phases.map((phase) => {\r\n const isCurrent = roadmap.currentPhase?.number === phase.number;\r\n const isExpanded = expandedPhase === phase.number;\r\n return (\r\n <div key={phase.number}>\r\n <div\r\n data-testid=\"phase-row\"\r\n className={`flex items-center justify-between p-2 rounded cursor-pointer hover:bg-bg-tertiary ${isCurrent ? 'current-phase bg-primary/5 border border-primary/20' : ''}`}\r\n onClick={() => toggleExpand(phase.number)}\r\n >\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm font-mono text-text-muted\">{phase.number}.</span>\r\n <span className=\"text-sm text-text-primary\">{phase.name}</span>\r\n <Badge\r\n data-testid=\"phase-status\"\r\n variant={statusVariant(phase.status)}\r\n size=\"sm\"\r\n >\r\n {phase.status}\r\n </Badge>\r\n </div>\r\n <span data-testid=\"phase-tasks\" className=\"text-xs text-text-muted font-mono\">\r\n {phase.completedTaskCount}/{phase.taskCount}\r\n </span>\r\n </div>\r\n {isExpanded && (\r\n <div className=\"ml-6 pl-3 border-l border-border mt-1 mb-2\">\r\n <p data-testid=\"phase-goal\" className=\"text-sm text-text-secondary mb-2\">\r\n {phase.goal}\r\n </p>\r\n <ul data-testid=\"phase-deliverables\" className=\"space-y-1\">\r\n {phase.deliverables.map((d, i) => (\r\n <li key={i} className=\"text-sm text-text-secondary flex items-center gap-2\">\r\n <span>{d.done ? '\\u2713' : '\\u25CB'}</span>\r\n <span>{d.text}</span>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Right Column - Recent Commits */}\r\n <div>\r\n <h3 className=\"font-medium text-text-primary mb-4\">Recent Activity</h3>\r\n <div data-testid=\"recent-commits\" className=\"space-y-2\">\r\n {recentCommits.length === 0 && (\r\n <p className=\"text-sm text-text-muted\">No recent commits</p>\r\n )}\r\n {recentCommits.map((commit) => (\r\n <div key={commit.hash} className=\"flex items-start gap-2 text-sm\">\r\n <code data-testid=\"commit-hash\" className=\"text-xs font-mono text-primary bg-primary/10 px-1.5 py-0.5 rounded shrink-0\">\r\n {commit.hash.slice(0, 7)}\r\n </code>\r\n <span data-testid=\"commit-message\" className=\"text-text-secondary truncate\">\r\n {commit.message}\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { User, TestTube } from 'lucide-react';\r\n\r\nexport type TaskStatus = 'todo' | 'in_progress' | 'done';\r\nexport type TaskPriority = 'low' | 'medium' | 'high';\r\n\r\nexport interface TaskAssignee {\r\n id: string;\r\n name: string;\r\n avatar?: string;\r\n}\r\n\r\nexport interface TaskTestStatus {\r\n passed: number;\r\n failed: number;\r\n total: number;\r\n}\r\n\r\nexport interface Task {\r\n id: string;\r\n title: string;\r\n description?: string;\r\n status: TaskStatus;\r\n priority: TaskPriority;\r\n assignee?: TaskAssignee;\r\n testStatus: TaskTestStatus;\r\n phase: number;\r\n createdAt: string;\r\n updatedAt: string;\r\n}\r\n\r\nexport interface TaskCardProps {\r\n task: Task;\r\n onClick?: (task: Task) => void;\r\n onDragStart?: (task: Task) => void;\r\n isDraggable?: boolean;\r\n isDragging?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst priorityClasses: Record<TaskPriority, string> = {\r\n high: 'bg-error text-white',\r\n medium: 'bg-warning text-white',\r\n low: 'bg-info text-white',\r\n};\r\n\r\nexport function TaskCard({\r\n task,\r\n onClick,\r\n onDragStart,\r\n isDraggable = false,\r\n isDragging = false,\r\n className = '',\r\n}: TaskCardProps) {\r\n const handleClick = () => {\r\n onClick?.(task);\r\n };\r\n\r\n const handleDragStart = (e: React.DragEvent) => {\r\n e.dataTransfer?.setData('text/plain', task.id);\r\n onDragStart?.(task);\r\n };\r\n\r\n const testIndicatorClass =\r\n task.testStatus.total === 0\r\n ? 'bg-muted'\r\n : task.testStatus.failed > 0\r\n ? 'bg-error'\r\n : 'bg-success';\r\n\r\n return (\r\n <div\r\n data-testid=\"task-card\"\r\n onClick={handleClick}\r\n onDragStart={handleDragStart}\r\n draggable={isDraggable}\r\n className={`\r\n p-3 bg-surface border border-border rounded-lg\r\n hover:border-primary/50 hover:shadow-sm\r\n transition-all cursor-pointer\r\n ${isDragging ? 'opacity-50 scale-95' : ''}\r\n ${className}\r\n `}\r\n >\r\n {/* Header */}\r\n <div className=\"flex items-start justify-between gap-2 mb-2\">\r\n <h4 className=\"font-medium text-foreground text-sm line-clamp-2\">\r\n {task.title}\r\n </h4>\r\n <span\r\n data-testid=\"priority-badge\"\r\n className={`\r\n px-1.5 py-0.5 text-xs font-medium rounded\r\n ${priorityClasses[task.priority]}\r\n `}\r\n >\r\n {task.priority}\r\n </span>\r\n </div>\r\n\r\n {/* Description */}\r\n {task.description && (\r\n <p className=\"text-xs text-muted-foreground mb-3 line-clamp-2\">\r\n {task.description}\r\n </p>\r\n )}\r\n\r\n {/* Footer */}\r\n <div className=\"flex items-center justify-between\">\r\n {/* Assignee */}\r\n <div className=\"flex items-center gap-1.5\">\r\n {task.assignee ? (\r\n <>\r\n {task.assignee.avatar ? (\r\n <img\r\n data-testid=\"assignee-avatar\"\r\n src={task.assignee.avatar}\r\n alt={task.assignee.name}\r\n className=\"w-5 h-5 rounded-full\"\r\n />\r\n ) : (\r\n <div\r\n data-testid=\"assignee-avatar\"\r\n className=\"w-5 h-5 rounded-full bg-primary/20 flex items-center justify-center\"\r\n >\r\n <span className=\"text-xs text-primary font-medium\">\r\n {task.assignee.name[0]}\r\n </span>\r\n </div>\r\n )}\r\n <span className=\"text-xs text-muted-foreground\">\r\n {task.assignee.name}\r\n </span>\r\n </>\r\n ) : (\r\n <div className=\"flex items-center gap-1 text-muted-foreground\">\r\n <User className=\"w-4 h-4\" />\r\n <span className=\"text-xs\">Unassigned</span>\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Test Status & Phase */}\r\n <div className=\"flex items-center gap-3\">\r\n <div\r\n data-testid=\"test-status\"\r\n className=\"flex items-center gap-1\"\r\n >\r\n <div\r\n data-testid=\"test-indicator\"\r\n className={`w-2 h-2 rounded-full ${testIndicatorClass}`}\r\n />\r\n <TestTube className=\"w-3 h-3 text-muted-foreground\" />\r\n <span className=\"text-xs text-muted-foreground\">\r\n {task.testStatus.passed}/{task.testStatus.total}\r\n </span>\r\n </div>\r\n <span className=\"text-xs text-muted-foreground\">\r\n Phase {task.phase}\r\n </span>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { useState, useCallback } from 'react';\r\nimport { Task, TaskCard, TaskStatus } from './TaskCard';\r\nimport { Skeleton } from '../ui/Skeleton';\r\nimport { ListTodo } from 'lucide-react';\r\n\r\nexport interface TaskBoardProps {\n tasks: Task[];\n onTaskMove?: (taskId: string, newStatus: TaskStatus) => void;\n onTaskClick?: (task: Task) => void;\n isLoading?: boolean;\n className?: string;\n}\n\r\ninterface Column {\r\n id: TaskStatus;\r\n title: string;\r\n}\r\n\r\nconst columns: Column[] = [\r\n { id: 'todo', title: 'To Do' },\r\n { id: 'in_progress', title: 'In Progress' },\r\n { id: 'done', title: 'Done' },\r\n];\r\n\r\nexport function TaskBoard({\r\n tasks,\r\n onTaskMove,\r\n onTaskClick,\r\n isLoading = false,\r\n className = '',\r\n}: TaskBoardProps) {\r\n const [dragOverColumn, setDragOverColumn] = useState<TaskStatus | null>(null);\r\n const [draggingTask, setDraggingTask] = useState<string | null>(null);\r\n const [focusedColumn, setFocusedColumn] = useState<number>(0);\r\n const [focusedTask, setFocusedTask] = useState<number>(-1);\r\n\r\n const getTasksByStatus = useCallback(\r\n (status: TaskStatus) => tasks.filter((t) => t.status === status),\r\n [tasks]\r\n );\r\n\r\n const handleDragStart = (task: Task) => {\r\n setDraggingTask(task.id);\r\n };\r\n\r\n const handleDragOver = (e: React.DragEvent, status: TaskStatus) => {\r\n e.preventDefault();\r\n setDragOverColumn(status);\r\n };\r\n\r\n const handleDragLeave = () => {\r\n setDragOverColumn(null);\r\n };\r\n\r\n const handleDrop = (e: React.DragEvent, status: TaskStatus) => {\n e.preventDefault();\n const taskId = e.dataTransfer.getData('text/plain');\n if (taskId && onTaskMove) {\n onTaskMove(taskId, status);\n }\n setDragOverColumn(null);\n setDraggingTask(null);\n };\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n const column = columns[focusedColumn];\r\n if (!column) return;\r\n const currentColumnTasks = getTasksByStatus(column.id);\r\n\r\n switch (e.key) {\r\n case 'h':\r\n e.preventDefault();\r\n setFocusedColumn((prev) => Math.max(0, prev - 1));\r\n setFocusedTask(-1);\r\n break;\r\n case 'l':\r\n e.preventDefault();\r\n setFocusedColumn((prev) => Math.min(columns.length - 1, prev + 1));\r\n setFocusedTask(-1);\r\n break;\r\n case 'j':\r\n e.preventDefault();\r\n setFocusedTask((prev) =>\r\n Math.min(currentColumnTasks.length - 1, prev + 1)\r\n );\r\n break;\r\n case 'k':\r\n e.preventDefault();\r\n setFocusedTask((prev) => Math.max(0, prev - 1));\r\n break;\r\n case 'Enter':\r\n e.preventDefault();\r\n if (focusedTask >= 0 && currentColumnTasks[focusedTask]) {\r\n onTaskClick?.(currentColumnTasks[focusedTask]);\r\n }\r\n break;\r\n }\r\n };\r\n\r\n if (isLoading) {\r\n return (\r\n <div\r\n data-testid=\"task-board\"\r\n className={`grid grid-cols-1 md:grid-cols-3 gap-4 ${className}`}\r\n >\r\n {columns.map((column) => (\r\n <div\r\n key={column.id}\r\n data-testid={`column-${column.id}`}\r\n className=\"bg-muted/30 rounded-lg p-4\"\r\n >\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <Skeleton height=\"1.25rem\" className=\"w-24\" />\r\n <Skeleton height=\"1.25rem\" className=\"w-6\" />\r\n </div>\r\n <div className=\"space-y-3\">\r\n {[1, 2].map((i) => (\r\n <Skeleton key={i} height=\"100px\" className=\"w-full\" />\r\n ))}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n );\r\n }\r\n\r\n if (tasks.length === 0) {\r\n return (\r\n <div\r\n data-testid=\"task-board\"\r\n className={className}\r\n >\r\n <div\r\n data-testid=\"empty-state\"\r\n className=\"flex flex-col items-center justify-center py-16 text-center\"\r\n >\r\n <div className=\"w-16 h-16 bg-muted rounded-full flex items-center justify-center mb-4\">\r\n <ListTodo className=\"w-8 h-8 text-muted-foreground\" />\r\n </div>\r\n <h3 className=\"text-lg font-semibold text-foreground mb-2\">No tasks yet</h3>\r\n <p className=\"text-muted-foreground max-w-md\">\r\n Tasks will appear here when you run{' '}\r\n <code className=\"text-primary\">/tlc:plan</code> to create a phase plan.\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n data-testid=\"task-board\"\r\n tabIndex={0}\r\n onKeyDown={handleKeyDown}\r\n className={`grid grid-cols-1 md:grid-cols-3 gap-4 outline-none ${className}`}\r\n >\r\n {columns.map((column, colIndex) => {\r\n const columnTasks = getTasksByStatus(column.id);\r\n const isColumnFocused = focusedColumn === colIndex;\r\n const isDragOver = dragOverColumn === column.id;\r\n\r\n return (\r\n <div\r\n key={column.id}\r\n data-testid={`column-${column.id}`}\r\n onDragOver={(e) => handleDragOver(e, column.id)}\r\n onDragEnter={() => setDragOverColumn(column.id)}\r\n onDragLeave={handleDragLeave}\r\n onDrop={(e) => handleDrop(e, column.id)}\r\n className={`\r\n bg-muted/30 rounded-lg p-4 min-h-[400px]\r\n transition-all\r\n ${isDragOver || (isColumnFocused && focusedTask === -1) ? 'ring-2 ring-primary' : ''}\r\n `}\r\n >\r\n {/* Column Header */}\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <h3 className=\"font-semibold text-foreground\">{column.title}</h3>\r\n <span\r\n data-testid={`count-${column.id}`}\r\n className=\"px-2 py-0.5 text-xs font-medium bg-muted rounded-full text-muted-foreground\"\r\n >\r\n {columnTasks.length}\r\n </span>\r\n </div>\r\n\r\n {/* Tasks */}\r\n <div className=\"space-y-3\">\r\n {columnTasks.map((task, taskIndex) => {\r\n const isTaskFocused = isColumnFocused && focusedTask === taskIndex;\r\n const isTaskDragging = draggingTask === task.id;\r\n\r\n return (\r\n <TaskCard\n key={task.id}\n task={task}\n onClick={onTaskClick}\n onDragStart={handleDragStart}\n isDraggable={Boolean(onTaskMove)}\n isDragging={isTaskDragging}\n className={isTaskFocused ? 'ring-2 ring-primary' : ''}\n />\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n );\r\n}\r\n","import { useState, useRef, useEffect } from 'react';\r\nimport { Filter } from 'lucide-react';\r\nimport { TaskPriority } from './TaskCard';\r\n\r\nexport interface TaskFilterValues {\r\n assignees: string[];\r\n priorities: TaskPriority[];\r\n}\r\n\r\nexport interface Assignee {\r\n id: string;\r\n name: string;\r\n}\r\n\r\nexport interface TaskFilterProps {\r\n assignees: Assignee[];\r\n onFilterChange: (filters: TaskFilterValues) => void;\r\n initialFilters?: TaskFilterValues;\r\n className?: string;\r\n}\r\n\r\nconst priorities: { id: TaskPriority; label: string }[] = [\r\n { id: 'high', label: 'High' },\r\n { id: 'medium', label: 'Medium' },\r\n { id: 'low', label: 'Low' },\r\n];\r\n\r\nexport function TaskFilter({\r\n assignees,\r\n onFilterChange,\r\n initialFilters,\r\n className = '',\r\n}: TaskFilterProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [filters, setFilters] = useState<TaskFilterValues>(\r\n initialFilters || { assignees: [], priorities: [] }\r\n );\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n\r\n // Close on outside click\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const handleMouseDown = (e: MouseEvent) => {\r\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener('mousedown', handleMouseDown);\r\n return () => document.removeEventListener('mousedown', handleMouseDown);\r\n }, [isOpen]);\r\n\r\n const handleAssigneeToggle = (assigneeId: string) => {\r\n const newAssignees = filters.assignees.includes(assigneeId)\r\n ? filters.assignees.filter((id) => id !== assigneeId)\r\n : [...filters.assignees, assigneeId];\r\n\r\n const newFilters = { ...filters, assignees: newAssignees };\r\n setFilters(newFilters);\r\n onFilterChange(newFilters);\r\n };\r\n\r\n const handlePriorityToggle = (priority: TaskPriority) => {\r\n const newPriorities = filters.priorities.includes(priority)\r\n ? filters.priorities.filter((p) => p !== priority)\r\n : [...filters.priorities, priority];\r\n\r\n const newFilters = { ...filters, priorities: newPriorities };\r\n setFilters(newFilters);\r\n onFilterChange(newFilters);\r\n };\r\n\r\n const handleClearAll = () => {\r\n const newFilters = { assignees: [], priorities: [] };\r\n setFilters(newFilters);\r\n onFilterChange(newFilters);\r\n };\r\n\r\n const activeFilterCount = filters.assignees.length + filters.priorities.length;\r\n\r\n return (\r\n <div ref={containerRef} className={`relative inline-block ${className}`}>\r\n <button\r\n data-testid=\"task-filter\"\r\n onClick={() => setIsOpen(!isOpen)}\r\n className={`\r\n flex items-center gap-2 px-3 py-2\r\n bg-surface border border-border rounded-md\r\n hover:bg-muted transition-colors\r\n text-foreground text-sm\r\n `}\r\n >\r\n <Filter className=\"w-4 h-4\" />\r\n <span>Filter</span>\r\n {activeFilterCount > 0 && (\r\n <span\r\n data-testid=\"filter-count\"\r\n className=\"px-1.5 py-0.5 text-xs font-medium bg-primary text-white rounded-full\"\r\n >\r\n {activeFilterCount}\r\n </span>\r\n )}\r\n </button>\r\n\r\n {isOpen && (\r\n <div\r\n data-testid=\"filter-panel\"\r\n className=\"\r\n absolute z-50 mt-1 w-64\r\n bg-surface border border-border rounded-md shadow-lg\r\n p-4 right-0\r\n \"\r\n >\r\n {/* Header */}\r\n <div className=\"flex items-center justify-between mb-4\">\r\n <h4 className=\"font-medium text-foreground\">Filters</h4>\r\n {activeFilterCount > 0 && (\r\n <button\r\n onClick={handleClearAll}\r\n className=\"text-xs text-primary hover:underline\"\r\n >\r\n Clear all\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Assignees */}\r\n <div className=\"mb-4\">\r\n <h5 className=\"text-sm font-medium text-foreground mb-2\">Assignee</h5>\r\n <div className=\"space-y-2\">\r\n <label className=\"flex items-center gap-2 cursor-pointer\">\r\n <input\r\n type=\"checkbox\"\r\n checked={filters.assignees.includes('unassigned')}\r\n onChange={() => handleAssigneeToggle('unassigned')}\r\n className=\"rounded border-border\"\r\n />\r\n <span className=\"text-sm text-foreground\">Unassigned</span>\r\n </label>\r\n {assignees.map((assignee) => (\r\n <label key={assignee.id} className=\"flex items-center gap-2 cursor-pointer\">\r\n <input\r\n type=\"checkbox\"\r\n checked={filters.assignees.includes(assignee.id)}\r\n onChange={() => handleAssigneeToggle(assignee.id)}\r\n className=\"rounded border-border\"\r\n />\r\n <span className=\"text-sm text-foreground\">{assignee.name}</span>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Priorities */}\r\n <div>\r\n <h5 className=\"text-sm font-medium text-foreground mb-2\">Priority</h5>\r\n <div className=\"space-y-2\">\r\n {priorities.map((priority) => (\r\n <label key={priority.id} className=\"flex items-center gap-2 cursor-pointer\">\r\n <input\r\n type=\"checkbox\"\r\n checked={filters.priorities.includes(priority.id)}\r\n onChange={() => handlePriorityToggle(priority.id)}\r\n className=\"rounded border-border\"\r\n />\r\n <span className=\"text-sm text-foreground\">{priority.label}</span>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { X, User, CheckCircle, XCircle, Clock, MessageSquare, ArrowRight } from 'lucide-react';\r\nimport { Task } from './TaskCard';\r\nimport { Badge } from '../ui/Badge';\r\nimport { Button } from '../ui/Button';\r\n\r\nexport interface AcceptanceCriterion {\r\n id: string;\r\n text: string;\r\n completed: boolean;\r\n}\r\n\r\nexport interface ActivityItem {\r\n id: string;\r\n type: 'status_change' | 'comment' | 'assigned' | 'completed';\r\n user: string;\r\n message: string;\r\n timestamp: string;\r\n}\r\n\r\nexport interface TaskDetailProps {\r\n task: Task;\r\n acceptanceCriteria: AcceptanceCriterion[];\r\n activity: ActivityItem[];\r\n onClose: () => void;\r\n onCriteriaToggle?: (criterionId: string, completed: boolean) => void;\r\n onClaim?: (taskId: string) => void;\r\n onRelease?: (taskId: string) => void;\r\n onComplete?: (taskId: string) => void;\r\n currentUserId?: string;\r\n}\r\n\r\nconst statusLabels: Record<string, string> = {\r\n todo: 'To Do',\r\n in_progress: 'In Progress',\r\n done: 'Done',\r\n};\r\n\r\nconst priorityColors: Record<string, string> = {\r\n high: 'bg-error text-white',\r\n medium: 'bg-warning text-white',\r\n low: 'bg-info text-white',\r\n};\r\n\r\nfunction formatRelativeTime(dateString: string): string {\r\n const date = new Date(dateString);\r\n const now = new Date();\r\n const diffMs = now.getTime() - date.getTime();\r\n const diffMins = Math.floor(diffMs / 60000);\r\n const diffHours = Math.floor(diffMs / 3600000);\r\n const diffDays = Math.floor(diffMs / 86400000);\r\n\r\n if (diffMins < 1) return 'just now';\r\n if (diffMins < 60) return `${diffMins}m ago`;\r\n if (diffHours < 24) return `${diffHours}h ago`;\r\n if (diffDays < 7) return `${diffDays}d ago`;\r\n return date.toLocaleDateString();\r\n}\r\n\r\nexport function TaskDetail({\r\n task,\r\n acceptanceCriteria,\r\n activity,\r\n onClose,\r\n onCriteriaToggle,\r\n onClaim,\r\n onRelease,\r\n onComplete,\r\n currentUserId,\r\n}: TaskDetailProps) {\r\n const canRelease = task.assignee?.id === currentUserId;\r\n const canClaim = !task.assignee;\r\n const canComplete = task.status === 'in_progress';\r\n\r\n return (\r\n <div className=\"bg-surface border border-border rounded-lg max-w-2xl w-full max-h-[80vh] overflow-hidden flex flex-col\">\r\n {/* Header */}\r\n <div className=\"flex items-start justify-between p-4 border-b border-border\">\r\n <div className=\"flex-1 min-w-0\">\r\n <div className=\"flex items-center gap-2 mb-2\">\r\n <Badge variant=\"neutral\">{statusLabels[task.status]}</Badge>\r\n <span className={`px-1.5 py-0.5 text-xs font-medium rounded ${priorityColors[task.priority]}`}>\r\n {task.priority}\r\n </span>\r\n <span className=\"text-xs text-muted-foreground\">Phase {task.phase}</span>\r\n </div>\r\n <h2 className=\"text-lg font-semibold text-foreground\">{task.title}</h2>\r\n <div className=\"flex items-center gap-2 mt-2\">\r\n {canClaim && onClaim && (\r\n <Button\r\n variant=\"primary\"\r\n size=\"sm\"\r\n onClick={() => onClaim(task.id)}\r\n >\r\n Claim\r\n </Button>\r\n )}\r\n {canComplete && onComplete && (\r\n <Button\r\n variant=\"primary\"\r\n size=\"sm\"\r\n onClick={() => onComplete(task.id)}\r\n >\r\n Complete\r\n </Button>\r\n )}\r\n </div>\r\n </div>\r\n <button\r\n onClick={onClose}\r\n aria-label=\"Close\"\r\n className=\"p-1 rounded hover:bg-muted transition-colors\"\r\n >\r\n <X className=\"w-5 h-5 text-muted-foreground\" />\r\n </button>\r\n </div>\r\n\r\n {/* Content */}\r\n <div className=\"flex-1 overflow-y-auto p-4 space-y-6\">\r\n {/* Description */}\r\n {task.description && (\r\n <div>\r\n <h3 className=\"text-sm font-medium text-foreground mb-2\">Description</h3>\r\n <p className=\"text-sm text-muted-foreground\">{task.description}</p>\r\n </div>\r\n )}\r\n\r\n {/* Assignee */}\r\n <div>\r\n <h3 className=\"text-sm font-medium text-foreground mb-2\">Assignee</h3>\r\n {task.assignee ? (\r\n <div className=\"flex items-center gap-2\">\r\n <div className=\"w-8 h-8 rounded-full bg-primary/20 flex items-center justify-center\">\r\n <span className=\"text-sm text-primary font-medium\">\r\n {task.assignee.name[0]}\r\n </span>\r\n </div>\r\n <span className=\"text-sm text-foreground\">{task.assignee.name}</span>\r\n {canRelease && onRelease && (\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => onRelease(task.id)}\r\n >\r\n Release\r\n </Button>\r\n )}\r\n </div>\r\n ) : (\r\n <div className=\"flex items-center gap-2\">\r\n <User className=\"w-5 h-5 text-muted-foreground\" />\r\n <span className=\"text-sm text-muted-foreground\">Unassigned</span>\r\n {canClaim && onClaim && (\r\n <Button\r\n variant=\"primary\"\r\n size=\"sm\"\r\n onClick={() => onClaim(task.id)}\r\n >\r\n Claim Task\r\n </Button>\r\n )}\r\n </div>\r\n )}\r\n </div>\r\n\r\n {/* Test Status */}\r\n <div>\r\n <h3 className=\"text-sm font-medium text-foreground mb-2\">Test Status</h3>\r\n <div className=\"flex items-center gap-4\">\r\n <div className=\"flex items-center gap-1.5\">\r\n <CheckCircle className=\"w-4 h-4 text-success\" />\r\n <span className=\"text-sm text-foreground\">{task.testStatus.passed} passed</span>\r\n </div>\r\n <div className=\"flex items-center gap-1.5\">\r\n <XCircle className=\"w-4 h-4 text-error\" />\r\n <span className=\"text-sm text-foreground\">{task.testStatus.failed} failed</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Acceptance Criteria */}\r\n <div>\r\n <h3 className=\"text-sm font-medium text-foreground mb-2\">\r\n Acceptance Criteria ({acceptanceCriteria.filter((c) => c.completed).length}/\r\n {acceptanceCriteria.length})\r\n </h3>\r\n <div className=\"space-y-2\">\r\n {acceptanceCriteria.map((criterion) => (\r\n <label\r\n key={criterion.id}\r\n className=\"flex items-start gap-2 cursor-pointer group\"\r\n >\r\n <input\r\n type=\"checkbox\"\r\n checked={criterion.completed}\r\n onChange={(e) => onCriteriaToggle?.(criterion.id, e.target.checked)}\r\n className=\"mt-0.5 rounded border-border\"\r\n />\r\n <span\r\n className={`text-sm ${\r\n criterion.completed\r\n ? 'text-muted-foreground line-through'\r\n : 'text-foreground'\r\n }`}\r\n >\r\n {criterion.text}\r\n </span>\r\n </label>\r\n ))}\r\n </div>\r\n </div>\r\n\r\n {/* Activity */}\r\n <div>\r\n <h3 className=\"text-sm font-medium text-foreground mb-2\">Activity</h3>\r\n <div className=\"space-y-3\">\r\n {activity.map((item) => (\r\n <div key={item.id} className=\"flex items-start gap-2\">\r\n <div className=\"w-6 h-6 rounded-full bg-muted flex items-center justify-center flex-shrink-0 mt-0.5\">\r\n {item.type === 'comment' ? (\r\n <MessageSquare className=\"w-3 h-3 text-muted-foreground\" />\r\n ) : item.type === 'status_change' ? (\r\n <ArrowRight className=\"w-3 h-3 text-muted-foreground\" />\r\n ) : (\r\n <User className=\"w-3 h-3 text-muted-foreground\" />\r\n )}\r\n </div>\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm text-foreground\">\r\n <span className=\"font-medium\">{item.user}</span>{' '}\r\n <span className=\"text-muted-foreground\">{item.message}</span>\r\n </p>\r\n <p className=\"text-xs text-muted-foreground flex items-center gap-1\">\r\n <Clock className=\"w-3 h-3\" />\r\n {formatRelativeTime(item.timestamp)}\r\n </p>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useState, useCallback, useMemo } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { TaskBoard } from '../components/task/TaskBoard';\r\nimport { TaskFilter, type TaskFilterValues, type Assignee } from '../components/task/TaskFilter';\r\nimport { TaskDetail, type AcceptanceCriterion, type ActivityItem } from '../components/task/TaskDetail';\r\nimport { useUIStore } from '../stores';\r\nimport { useWorkspaceStore } from '../stores/workspace.store';\r\nimport { useTasks } from '../hooks/useTasks';\r\nimport type { Task as ComponentTask, TaskStatus } from '../components/task/TaskCard';\r\nimport type { Task as StoreTask } from '../stores/task.store';\r\nimport { Skeleton } from '../components/ui/Skeleton';\r\nimport { Plus, X } from 'lucide-react';\r\n\r\n// Transform server task format to component format\r\nfunction transformTask(task: StoreTask): ComponentTask {\r\n return {\r\n id: task.id,\r\n title: task.subject || task.title || 'Untitled',\r\n description: task.goal || task.description || '',\r\n status: mapStatus(task.status),\r\n priority: task.priority || 'medium',\r\n assignee: task.owner ? { id: task.owner, name: task.owner } : undefined,\r\n testStatus: task.testStatus || { passed: 0, failed: 0, total: 0 },\r\n phase: task.phase || 0,\r\n createdAt: task.createdAt || new Date().toISOString(),\r\n updatedAt: task.updatedAt || new Date().toISOString(),\r\n };\r\n}\r\n\r\nfunction mapStatus(status: string): TaskStatus {\r\n switch (status) {\r\n case 'completed':\r\n case 'done':\r\n return 'done';\r\n case 'in_progress':\r\n return 'in_progress';\r\n default:\r\n return 'todo';\r\n }\r\n}\r\n\r\n// Extract unique assignees from tasks\r\nfunction extractAssignees(tasks: ComponentTask[]): Assignee[] {\r\n const seen = new Set<string>();\r\n const assignees: Assignee[] = [];\r\n\r\n for (const task of tasks) {\r\n if (task.assignee && !seen.has(task.assignee.id)) {\r\n seen.add(task.assignee.id);\r\n assignees.push(task.assignee);\r\n }\r\n }\r\n\r\n return assignees;\r\n}\r\n\r\nconst defaultActivity: ActivityItem[] = [];\r\n\r\n// Derive acceptance criteria from actual task data\r\nfunction getAcceptanceCriteria(task: ComponentTask, storeTasks: StoreTask[]): AcceptanceCriterion[] {\r\n const storeTask = storeTasks.find((t) => t.id === task.id);\r\n if (storeTask?.acceptanceCriteria && storeTask.acceptanceCriteria.length > 0) {\r\n return storeTask.acceptanceCriteria.map((text, index) => ({\r\n id: String(index + 1),\r\n text,\r\n completed: task.status === 'done',\r\n }));\r\n }\r\n return [];\r\n}\r\n\r\nexport function TasksPage() {\r\n const setActiveView = useUIStore((state) => state.setActiveView);\r\n const { projectId: urlProjectId } = useParams<{ projectId: string }>();\r\n const selectProject = useWorkspaceStore((s) => s.selectProject);\r\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\r\n\r\n // URL takes precedence; sync to store\r\n const projectId = urlProjectId ?? storeProjectId ?? undefined;\r\n useEffect(() => {\r\n if (urlProjectId && urlProjectId !== storeProjectId) {\r\n selectProject(urlProjectId);\r\n }\r\n }, [urlProjectId, storeProjectId, selectProject]);\r\n\r\n const selectedProject = useWorkspaceStore((s) =>\r\n s.projects.find((p) => p.id === (urlProjectId ?? storeProjectId))\r\n );\r\n const { tasks: storeTasks, loading, fetchTasks, updateTaskStatus, createTask } = useTasks(projectId);\r\n const [selectedTask, setSelectedTask] = useState<ComponentTask | null>(null);\r\n const [filters, setFilters] = useState<TaskFilterValues>({ assignees: [], priorities: [] });\r\n const [showCreateForm, setShowCreateForm] = useState(false);\r\n const [createTitle, setCreateTitle] = useState('');\r\n const [createGoal, setCreateGoal] = useState('');\r\n\r\n useEffect(() => {\r\n setActiveView('tasks');\r\n fetchTasks();\r\n }, [setActiveView, fetchTasks, projectId]);\r\n\r\n // Transform store tasks to component tasks\r\n const tasks = useMemo(() => {\r\n return storeTasks.map(transformTask);\r\n }, [storeTasks]);\r\n\r\n // Extract assignees from tasks\r\n const assignees = useMemo(() => extractAssignees(tasks), [tasks]);\r\n\r\n const handleFilterChange = useCallback((newFilters: TaskFilterValues) => {\r\n setFilters(newFilters);\r\n }, []);\r\n\r\n const handleTaskClick = useCallback((task: ComponentTask) => {\r\n setSelectedTask(task);\r\n }, []);\r\n\r\n const handleCloseDetail = useCallback(() => {\r\n setSelectedTask(null);\r\n }, []);\r\n\r\n const handleTaskMove = useCallback(async (taskId: string, newStatus: TaskStatus) => {\r\n const serverStatus = newStatus === 'done' ? 'completed' : newStatus;\r\n try {\r\n await updateTaskStatus(taskId, serverStatus);\r\n } catch {\r\n fetchTasks();\r\n }\r\n }, [updateTaskStatus, fetchTasks]);\r\n\r\n const handleClaim = useCallback(async (taskId: string) => {\r\n try {\r\n await updateTaskStatus(taskId, 'in_progress');\r\n fetchTasks();\r\n } catch {\r\n // Ignore errors\r\n }\r\n }, [updateTaskStatus, fetchTasks]);\r\n\r\n const handleComplete = useCallback(async (taskId: string) => {\r\n try {\r\n await updateTaskStatus(taskId, 'done');\r\n fetchTasks();\r\n } catch {\r\n // Ignore errors\r\n }\r\n }, [updateTaskStatus, fetchTasks]);\r\n\r\n const handleCreateSubmit = useCallback(async () => {\r\n if (!createTitle.trim()) return;\r\n try {\r\n await createTask({ title: createTitle, goal: createGoal, description: createGoal });\r\n setCreateTitle('');\r\n setCreateGoal('');\r\n setShowCreateForm(false);\r\n } catch {\r\n // Ignore errors\r\n }\r\n }, [createTask, createTitle, createGoal]);\r\n\r\n // Apply filters\r\n const filteredTasks = useMemo(() => {\r\n return tasks.filter((task) => {\r\n if (filters.assignees.length > 0 && task.assignee) {\r\n if (!filters.assignees.includes(task.assignee.id)) {\r\n return false;\r\n }\r\n }\r\n if (filters.priorities.length > 0) {\r\n if (!filters.priorities.includes(task.priority)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n });\r\n }, [tasks, filters]);\r\n\r\n if (loading && tasks.length === 0) {\r\n return (\r\n <div className=\"h-full p-6 space-y-4\">\r\n <Skeleton className=\"h-8 w-32\" />\r\n <div className=\"grid grid-cols-3 gap-4\">\r\n <Skeleton className=\"h-64\" />\r\n <Skeleton className=\"h-64\" />\r\n <Skeleton className=\"h-64\" />\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"h-full flex\">\r\n <div className=\"flex-1 flex flex-col overflow-hidden\">\r\n <div className=\"p-4 border-b border-border\">\r\n <div className=\"flex items-center justify-between\">\r\n <h1 className=\"text-xl font-semibold text-text-primary\">Tasks</h1>\r\n <div className=\"flex items-center gap-2\">\r\n <button\r\n data-testid=\"create-task-btn\"\r\n onClick={() => setShowCreateForm(true)}\r\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-md bg-accent text-white hover:bg-accent-hover transition-colors\"\r\n >\r\n <Plus className=\"h-4 w-4\" />\r\n Create Task\r\n </button>\r\n <TaskFilter\r\n assignees={assignees}\r\n onFilterChange={handleFilterChange}\r\n initialFilters={filters}\r\n />\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Create Task Form */}\r\n {showCreateForm && (\r\n <div data-testid=\"task-create-form\" className=\"p-4 border-b border-border bg-bg-secondary\">\r\n <div className=\"flex items-center justify-between mb-3\">\r\n <h3 className=\"text-sm font-medium text-text-primary\">New Task</h3>\r\n <button\r\n onClick={() => setShowCreateForm(false)}\r\n className=\"p-1 rounded hover:bg-bg-tertiary transition-colors\"\r\n >\r\n <X className=\"h-4 w-4 text-text-muted\" />\r\n </button>\r\n </div>\r\n <div className=\"space-y-3\">\r\n <input\r\n data-testid=\"task-title-input\"\r\n type=\"text\"\r\n placeholder=\"Task title...\"\r\n value={createTitle}\r\n onChange={(e) => setCreateTitle(e.target.value)}\r\n className=\"w-full px-3 py-2 text-sm bg-bg-primary border border-border rounded-md text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-accent\"\r\n />\r\n <textarea\r\n data-testid=\"task-goal-input\"\r\n placeholder=\"Goal / description...\"\r\n value={createGoal}\r\n onChange={(e) => setCreateGoal(e.target.value)}\r\n rows={2}\r\n className=\"w-full px-3 py-2 text-sm bg-bg-primary border border-border rounded-md text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-accent resize-none\"\r\n />\r\n <button\r\n data-testid=\"task-submit-btn\"\r\n disabled={!createTitle.trim()}\r\n onClick={handleCreateSubmit}\r\n className=\"px-4 py-2 text-sm font-medium rounded-md bg-accent text-white hover:bg-accent-hover disabled:opacity-50 disabled:cursor-not-allowed transition-colors\"\r\n >\r\n Create\r\n </button>\r\n </div>\r\n </div>\r\n )}\r\n\r\n <div className=\"flex-1 overflow-auto p-4\">\r\n {tasks.length === 0 ? (\r\n <div className=\"flex flex-col items-center justify-center h-full text-center\">\r\n {selectedProject && !selectedProject.hasPlanning ? (\r\n <>\r\n <p className=\"text-text-secondary mb-2\">No TLC planning configured</p>\r\n <p className=\"text-sm text-text-muted mb-4\">\r\n This project doesn't have a <code className=\"px-1 py-0.5 bg-bg-tertiary rounded\">.planning/</code> directory.\r\n </p>\r\n <p className=\"text-sm text-text-muted\">\r\n Run <code className=\"px-1 py-0.5 bg-bg-tertiary rounded\">/tlc:init</code> in the project to start tracking tasks.\r\n </p>\r\n </>\r\n ) : (\r\n <>\r\n <p className=\"text-text-secondary mb-2\">No tasks found</p>\r\n <p className=\"text-sm text-text-muted mb-4\">\r\n {selectedProject?.hasPlanning\r\n ? 'No tasks in current phase plan files (.planning/phases/*-PLAN.md)'\r\n : 'Select a project with TLC configured to view tasks'}\r\n </p>\r\n <button\r\n onClick={() => setShowCreateForm(true)}\r\n className=\"flex items-center gap-1.5 px-3 py-1.5 text-sm font-medium rounded-md bg-accent text-white hover:bg-accent-hover transition-colors\"\r\n >\r\n <Plus className=\"h-4 w-4\" />\r\n Create Task\r\n </button>\r\n </>\r\n )}\r\n </div>\r\n ) : (\r\n <TaskBoard\r\n tasks={filteredTasks}\r\n onTaskMove={handleTaskMove}\r\n onTaskClick={handleTaskClick}\r\n />\r\n )}\r\n </div>\r\n </div>\r\n\r\n {selectedTask && (\r\n <div className=\"w-96 border-l border-border\">\r\n <TaskDetail\r\n task={selectedTask}\r\n acceptanceCriteria={getAcceptanceCriteria(selectedTask, storeTasks)}\r\n activity={defaultActivity}\r\n onClose={handleCloseDetail}\r\n onClaim={handleClaim}\r\n onRelease={handleCloseDetail}\r\n onComplete={handleComplete}\r\n />\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { useState, useRef, useEffect, useCallback } from 'react';\r\nimport { ArrowDown, ScrollText } from 'lucide-react';\r\n\r\nexport type LogLevel = 'info' | 'warn' | 'error' | 'debug';\r\n\r\nexport interface LogEntry {\r\n id: string;\r\n timestamp: string;\r\n level: LogLevel;\r\n message: string;\r\n source: string;\r\n}\r\n\r\nexport interface LogStreamProps {\r\n logs: LogEntry[];\r\n autoScroll?: boolean;\r\n showFilters?: boolean;\r\n showCount?: boolean;\r\n virtualized?: boolean;\r\n copyOnClick?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst levelColors: Record<LogLevel, string> = {\r\n info: 'text-info',\r\n warn: 'text-warning',\r\n error: 'text-error',\r\n debug: 'text-muted-foreground',\r\n};\r\n\r\nconst levelLabels: Record<LogLevel, string> = {\r\n info: 'INFO',\r\n warn: 'WARN',\r\n error: 'ERROR',\r\n debug: 'DEBUG',\r\n};\r\n\r\nfunction formatTimestamp(iso: string): string {\r\n const date = new Date(iso);\r\n return date.toLocaleTimeString('en-US', { hour12: false });\r\n}\r\n\r\nexport function LogStream({\r\n logs,\r\n autoScroll = true,\r\n showFilters = false,\r\n showCount = false,\r\n virtualized = false,\r\n copyOnClick = false,\r\n className = '',\r\n}: LogStreamProps) {\r\n const [isPaused, setIsPaused] = useState(false);\r\n const [levelFilters, setLevelFilters] = useState<Set<LogLevel>>(new Set());\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const lastScrollTop = useRef(0);\r\n\r\n // Filter logs\r\n const filteredLogs =\r\n levelFilters.size > 0\r\n ? logs.filter((log) => levelFilters.has(log.level))\r\n : logs;\r\n\r\n // Virtualization - only render visible logs\r\n const displayLogs = virtualized ? filteredLogs.slice(-50) : filteredLogs;\r\n\r\n // Auto-scroll\r\n useEffect(() => {\r\n if (autoScroll && !isPaused && containerRef.current) {\r\n containerRef.current.scrollTop = containerRef.current.scrollHeight;\r\n }\r\n }, [logs, autoScroll, isPaused]);\r\n\r\n const handleScroll = useCallback(() => {\r\n if (!containerRef.current || !autoScroll) return;\r\n\r\n const { scrollTop, scrollHeight, clientHeight } = containerRef.current;\r\n const isAtBottom = scrollHeight - scrollTop - clientHeight < 50;\r\n\r\n // Pause if user scrolled up\r\n if (scrollTop < lastScrollTop.current && !isAtBottom) {\r\n setIsPaused(true);\r\n }\r\n\r\n lastScrollTop.current = scrollTop;\r\n }, [autoScroll]);\r\n\r\n const handleScrollToBottom = () => {\r\n if (containerRef.current) {\r\n containerRef.current.scrollTop = containerRef.current.scrollHeight;\r\n setIsPaused(false);\r\n }\r\n };\r\n\r\n const toggleFilter = (level: LogLevel) => {\r\n setLevelFilters((prev) => {\r\n const next = new Set(prev);\r\n if (next.has(level)) {\r\n next.delete(level);\r\n } else {\r\n next.add(level);\r\n }\r\n return next;\r\n });\r\n };\r\n\r\n const handleLogClick = (log: LogEntry) => {\r\n if (copyOnClick && navigator.clipboard) {\r\n navigator.clipboard.writeText(`[${log.timestamp}] [${log.level}] ${log.message}`);\r\n }\r\n };\r\n\r\n if (logs.length === 0) {\r\n return (\r\n <div\r\n data-testid=\"log-stream\"\r\n className={`bg-surface border border-border rounded-lg ${className}`}\r\n >\r\n <div\r\n data-testid=\"empty-state\"\r\n className=\"flex flex-col items-center justify-center py-16 text-center\"\r\n >\r\n <div className=\"w-16 h-16 bg-muted rounded-full flex items-center justify-center mb-4\">\r\n <ScrollText className=\"w-8 h-8 text-muted-foreground\" />\r\n </div>\r\n <h3 className=\"text-lg font-semibold text-foreground mb-2\">No logs yet</h3>\r\n <p className=\"text-muted-foreground\">\r\n Logs will appear here when your services start running.\r\n </p>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n data-testid=\"log-stream\"\r\n className={`bg-surface border border-border rounded-lg flex flex-col ${className}`}\r\n >\r\n {/* Header */}\r\n {(showFilters || showCount) && (\r\n <div className=\"flex items-center justify-between p-3 border-b border-border\">\r\n {showFilters && (\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"text-sm text-muted-foreground\">Filter:</span>\r\n {(['error', 'warn', 'info', 'debug'] as LogLevel[]).map((level) => (\r\n <button\r\n key={level}\r\n data-testid={`filter-${level}`}\r\n onClick={() => toggleFilter(level)}\r\n className={`\r\n px-2 py-1 text-xs font-medium rounded\r\n transition-colors\r\n ${\r\n levelFilters.has(level)\r\n ? `${levelColors[level]} bg-current/10`\r\n : 'text-muted-foreground hover:text-foreground'\r\n }\r\n `}\r\n >\r\n {levelLabels[level]}\r\n </button>\r\n ))}\r\n </div>\r\n )}\r\n {showCount && (\r\n <span\r\n data-testid=\"log-count\"\r\n className=\"text-sm text-muted-foreground\"\r\n >\r\n {filteredLogs.length}\r\n </span>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Log Container */}\r\n <div\r\n ref={containerRef}\r\n data-testid=\"log-container\"\r\n onScroll={handleScroll}\r\n className=\"flex-1 overflow-auto font-mono text-sm p-2 max-h-[400px]\"\r\n >\r\n {displayLogs.map((log) => (\r\n <div\r\n key={log.id}\r\n data-testid=\"log-entry\"\r\n onClick={() => handleLogClick(log)}\r\n className={`\r\n flex items-start gap-2 py-1 px-2 rounded\r\n hover:bg-muted/50\r\n ${copyOnClick ? 'cursor-pointer' : ''}\r\n `}\r\n >\r\n <span\r\n data-testid=\"log-timestamp\"\r\n className=\"text-muted-foreground flex-shrink-0\"\r\n >\r\n {formatTimestamp(log.timestamp)}\r\n </span>\r\n <span\r\n data-testid={`level-${log.level}`}\r\n className={`w-12 flex-shrink-0 ${levelColors[log.level]}`}\r\n >\r\n {levelLabels[log.level]}\r\n </span>\r\n <span className=\"text-foreground break-all\">{log.message}</span>\r\n </div>\r\n ))}\r\n </div>\r\n\r\n {/* Scroll Controls */}\r\n {isPaused && (\r\n <div className=\"flex items-center justify-center p-2 border-t border-border\">\r\n <span data-testid=\"scroll-paused\" className=\"text-xs text-muted-foreground mr-2\">\r\n Auto-scroll paused\r\n </span>\r\n <button\r\n onClick={handleScrollToBottom}\r\n aria-label=\"Scroll to bottom\"\r\n className=\"\r\n flex items-center gap-1 px-2 py-1\r\n text-xs text-primary hover:underline\r\n \"\r\n >\r\n <ArrowDown className=\"w-3 h-3\" />\r\n Resume\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { Search, ChevronUp, ChevronDown, X } from 'lucide-react';\r\n\r\nexport interface LogSearchProps {\r\n onSearch: (query: string) => void;\r\n searchQuery?: string;\r\n matchCount?: number;\r\n totalCount?: number;\r\n currentMatch?: number;\r\n onNavigate?: (direction: 'prev' | 'next') => void;\r\n className?: string;\r\n}\r\n\r\nexport function LogSearch({\r\n onSearch,\r\n searchQuery = '',\r\n matchCount,\r\n totalCount,\r\n currentMatch,\r\n onNavigate,\r\n className = '',\r\n}: LogSearchProps) {\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Enter') {\r\n e.preventDefault();\r\n onNavigate?.(e.shiftKey ? 'prev' : 'next');\r\n } else if (e.key === 'Escape') {\r\n onSearch('');\r\n }\r\n };\r\n\r\n const handleClear = () => {\r\n onSearch('');\r\n };\r\n\r\n const hasMatches = matchCount !== undefined && matchCount > 0;\r\n const showNoMatches = searchQuery && matchCount === 0;\r\n\r\n return (\r\n <div\r\n data-testid=\"log-search\"\r\n className={`flex items-center gap-2 ${className}`}\r\n >\r\n <div className=\"relative flex-1\">\r\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-muted-foreground\" />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search logs...\"\r\n value={searchQuery}\r\n onChange={(e) => onSearch(e.target.value)}\r\n onKeyDown={handleKeyDown}\r\n className=\"\r\n w-full pl-9 pr-8 py-2\r\n bg-surface border border-border rounded-md\r\n text-sm text-foreground\r\n placeholder:text-muted-foreground\r\n focus:outline-none focus:ring-2 focus:ring-primary focus:border-transparent\r\n \"\r\n />\r\n {searchQuery && (\r\n <button\r\n onClick={handleClear}\r\n aria-label=\"Clear search\"\r\n className=\"absolute right-2 top-1/2 -translate-y-1/2 p-1 hover:bg-muted rounded\"\r\n >\r\n <X className=\"w-4 h-4 text-muted-foreground\" />\r\n </button>\r\n )}\r\n </div>\r\n\r\n {/* Match info */}\r\n {searchQuery && (\r\n <div className=\"flex items-center gap-2 text-sm\">\r\n {showNoMatches ? (\r\n <span className=\"text-muted-foreground\">No matches</span>\r\n ) : matchCount !== undefined ? (\r\n currentMatch !== undefined ? (\r\n <span data-testid=\"current-match\" className=\"text-muted-foreground\">\r\n {currentMatch} of {matchCount}\r\n </span>\r\n ) : (\r\n <span data-testid=\"match-count\" className=\"text-muted-foreground\">\r\n {matchCount} of {totalCount}\r\n </span>\r\n )\r\n ) : null}\r\n </div>\r\n )}\r\n\r\n {/* Navigation */}\r\n {onNavigate && (\r\n <div className=\"flex items-center\">\r\n <button\r\n onClick={() => onNavigate('prev')}\r\n disabled={!hasMatches}\r\n aria-label=\"Previous match\"\r\n className=\"\r\n p-1.5 rounded hover:bg-muted\r\n disabled:opacity-50 disabled:cursor-not-allowed\r\n transition-colors\r\n \"\r\n >\r\n <ChevronUp className=\"w-4 h-4\" />\r\n </button>\r\n <button\r\n onClick={() => onNavigate('next')}\r\n disabled={!hasMatches}\r\n aria-label=\"Next match\"\r\n className=\"\r\n p-1.5 rounded hover:bg-muted\r\n disabled:opacity-50 disabled:cursor-not-allowed\r\n transition-colors\r\n \"\r\n >\r\n <ChevronDown className=\"w-4 h-4\" />\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useMemo } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { LogStream, type LogEntry as StreamLogEntry } from '../components/logs/LogStream';\r\nimport { LogSearch } from '../components/logs/LogSearch';\r\nimport { useLogStore, useUIStore } from '../stores';\r\nimport { useWorkspaceStore } from '../stores/workspace.store';\r\nimport { Button } from '../components/ui/Button';\r\nimport type { LogType } from '../stores/log.store';\r\n\r\nconst LOG_TYPES: { value: LogType; label: string }[] = [\r\n { value: 'app', label: 'Application' },\r\n { value: 'test', label: 'Tests' },\r\n { value: 'git', label: 'Git' },\r\n { value: 'system', label: 'System' },\r\n];\r\n\r\nexport function LogsPage() {\r\n const {\r\n activeType,\r\n searchQuery,\r\n autoScroll,\r\n filteredLogs,\r\n setLogType,\r\n setSearchQuery,\r\n clearLogs,\r\n setAutoScroll,\r\n } = useLogStore();\r\n const setActiveView = useUIStore((state) => state.setActiveView);\r\n const { projectId: urlProjectId } = useParams<{ projectId: string }>();\r\n const selectProject = useWorkspaceStore((s) => s.selectProject);\r\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\r\n\r\n useEffect(() => {\r\n setActiveView('logs');\r\n }, [setActiveView]);\r\n\r\n // Sync URL project ID to store\r\n useEffect(() => {\r\n if (urlProjectId && urlProjectId !== storeProjectId) {\r\n selectProject(urlProjectId);\r\n }\r\n }, [urlProjectId, storeProjectId, selectProject]);\r\n\r\n // Map store log entries to component log entries\r\n const streamLogs: StreamLogEntry[] = useMemo(() => {\r\n return filteredLogs.map((log) => ({\r\n id: log.id,\r\n timestamp: log.timestamp,\r\n level: log.level,\r\n message: log.text,\r\n source: log.source || activeType,\r\n }));\r\n }, [filteredLogs, activeType]);\r\n\r\n return (\r\n <div className=\"h-full flex flex-col\">\r\n <div className=\"p-4 border-b border-border\">\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center gap-2\">\r\n {LOG_TYPES.map((type) => (\r\n <Button\r\n key={type.value}\r\n variant={activeType === type.value ? 'primary' : 'ghost'}\r\n size=\"sm\"\r\n onClick={() => setLogType(type.value)}\r\n >\r\n {type.label}\r\n </Button>\r\n ))}\r\n </div>\r\n\r\n <div className=\"flex items-center gap-4\">\r\n <LogSearch\r\n onSearch={setSearchQuery}\r\n searchQuery={searchQuery}\r\n />\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={() => setAutoScroll(!autoScroll)}\r\n >\r\n {autoScroll ? 'Auto-scroll ON' : 'Auto-scroll OFF'}\r\n </Button>\r\n <Button\r\n variant=\"danger\"\r\n size=\"sm\"\r\n onClick={() => clearLogs(activeType)}\r\n >\r\n Clear\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div className=\"flex-1 overflow-hidden\">\r\n <LogStream\r\n logs={streamLogs}\r\n autoScroll={autoScroll}\r\n />\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { forwardRef, type InputHTMLAttributes, useState } from 'react';\r\nimport { Search, X } from 'lucide-react';\r\n\r\ntype InputVariant = 'default' | 'search';\r\n\r\ninterface InputProps extends Omit<InputHTMLAttributes<HTMLInputElement>, 'size'> {\r\n variant?: InputVariant;\r\n label?: string;\r\n error?: string;\r\n leftIcon?: React.ReactNode;\r\n rightIcon?: React.ReactNode;\r\n onClear?: () => void;\r\n}\r\n\r\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\r\n (\r\n {\r\n variant = 'default',\r\n label,\r\n error,\r\n leftIcon,\r\n rightIcon,\r\n onClear,\r\n className = '',\r\n disabled,\r\n value,\r\n onChange,\r\n ...props\r\n },\r\n ref\r\n ) => {\r\n const [internalValue, setInternalValue] = useState('');\r\n const isControlled = value !== undefined;\r\n const currentValue = isControlled ? value : internalValue;\r\n\r\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n if (!isControlled) {\r\n setInternalValue(e.target.value);\r\n }\r\n onChange?.(e);\r\n };\r\n\r\n const handleClear = () => {\r\n if (!isControlled) {\r\n setInternalValue('');\r\n }\r\n onClear?.();\r\n };\r\n\r\n const isSearch = variant === 'search';\r\n const hasValue = currentValue && String(currentValue).length > 0;\r\n\r\n const inputClasses = [\r\n 'input',\r\n leftIcon || isSearch ? 'pl-10' : '',\r\n (rightIcon || (isSearch && hasValue)) ? 'pr-10' : '',\r\n error ? 'border-error focus:ring-error' : '',\r\n className,\r\n ]\r\n .filter(Boolean)\r\n .join(' ');\r\n\r\n return (\r\n <div className=\"w-full\">\r\n {label && (\r\n <label className=\"block text-sm font-medium text-text-secondary mb-1.5\">\r\n {label}\r\n </label>\r\n )}\r\n <div className=\"relative\">\r\n {(leftIcon || isSearch) && (\r\n <div className=\"absolute left-3 top-1/2 -translate-y-1/2 text-text-muted pointer-events-none\">\r\n {leftIcon || <Search className=\"h-4 w-4\" />}\r\n </div>\r\n )}\r\n <input\r\n ref={ref}\r\n className={inputClasses}\r\n disabled={disabled}\r\n value={currentValue}\r\n onChange={handleChange}\r\n {...props}\r\n />\r\n {isSearch && hasValue && (\r\n <button\r\n type=\"button\"\r\n onClick={handleClear}\r\n className=\"absolute right-3 top-1/2 -translate-y-1/2 text-text-muted hover:text-text-secondary transition-colors\"\r\n aria-label=\"Clear search\"\r\n data-testid=\"clear-button\"\r\n >\r\n <X className=\"h-4 w-4\" />\r\n </button>\r\n )}\r\n {rightIcon && !isSearch && (\r\n <div className=\"absolute right-3 top-1/2 -translate-y-1/2 text-text-muted pointer-events-none\">\r\n {rightIcon}\r\n </div>\r\n )}\r\n </div>\r\n {error && (\r\n <p className=\"mt-1.5 text-sm text-error\" role=\"alert\">\r\n {error}\r\n </p>\r\n )}\r\n </div>\r\n );\r\n }\r\n);\r\n\r\nInput.displayName = 'Input';\r\n","import { useState } from 'react';\r\nimport { Input } from '../ui/Input';\r\nimport { Button } from '../ui/Button';\r\n\r\nexport interface TlcConfig {\r\n project?: string;\r\n testFrameworks?: {\r\n primary?: string;\r\n };\r\n quality?: {\r\n coverageThreshold?: number;\r\n qualityScoreThreshold?: number;\r\n };\r\n}\r\n\r\nexport interface SettingsPanelProps {\r\n config: TlcConfig;\r\n onSave: (config: TlcConfig) => void;\r\n onCancel?: () => void;\r\n saving?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function SettingsPanel({\r\n config,\r\n onSave,\r\n onCancel,\r\n saving = false,\r\n className = '',\r\n}: SettingsPanelProps) {\r\n const [formData, setFormData] = useState({\r\n project: config.project || '',\r\n coverageThreshold: config.quality?.coverageThreshold?.toString() || '80',\r\n qualityScoreThreshold: config.quality?.qualityScoreThreshold?.toString() || '75',\r\n });\r\n const [errors, setErrors] = useState<Record<string, string>>({});\r\n\r\n const handleChange = (field: string, value: string) => {\r\n setFormData((prev) => ({ ...prev, [field]: value }));\r\n setErrors((prev) => ({ ...prev, [field]: '' }));\r\n };\r\n\r\n const validate = (): boolean => {\r\n const newErrors: Record<string, string> = {};\r\n\r\n const coverage = parseInt(formData.coverageThreshold, 10);\r\n if (isNaN(coverage) || coverage < 0 || coverage > 100) {\r\n newErrors.coverageThreshold = 'Must be between 0 and 100';\r\n }\r\n\r\n const quality = parseInt(formData.qualityScoreThreshold, 10);\r\n if (isNaN(quality) || quality < 0 || quality > 100) {\r\n newErrors.qualityScoreThreshold = 'Must be between 0 and 100';\r\n }\r\n\r\n setErrors(newErrors);\r\n return Object.keys(newErrors).length === 0;\r\n };\r\n\r\n const handleSave = () => {\r\n if (!validate()) return;\r\n\r\n onSave({\r\n ...config,\r\n project: formData.project,\r\n quality: {\r\n ...config.quality,\r\n coverageThreshold: parseInt(formData.coverageThreshold, 10),\r\n qualityScoreThreshold: parseInt(formData.qualityScoreThreshold, 10),\r\n },\r\n });\r\n };\r\n\r\n return (\r\n <div\r\n data-testid=\"settings-panel\"\r\n className={`bg-surface border border-border rounded-lg p-6 ${className}`}\r\n >\r\n <h2 className=\"text-xl font-semibold text-foreground mb-6\">Settings</h2>\r\n\r\n {/* General Section */}\r\n <section className=\"mb-6\">\r\n <h3 className=\"text-sm font-semibold text-muted-foreground uppercase tracking-wider mb-4\">\r\n General\r\n </h3>\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label htmlFor=\"project\" className=\"block text-sm font-medium text-foreground mb-1\">\r\n Project Name\r\n </label>\r\n <Input\r\n id=\"project\"\r\n value={formData.project}\r\n onChange={(e) => handleChange('project', e.target.value)}\r\n />\r\n </div>\r\n </div>\r\n </section>\r\n\r\n {/* Quality Section */}\r\n <section className=\"mb-6\">\r\n <h3 className=\"text-sm font-semibold text-muted-foreground uppercase tracking-wider mb-4\">\r\n Quality\r\n </h3>\r\n <div className=\"space-y-4\">\r\n <div>\r\n <label\r\n htmlFor=\"coverageThreshold\"\r\n className=\"block text-sm font-medium text-foreground mb-1\"\r\n >\r\n Coverage Threshold (%)\r\n </label>\r\n <Input\r\n id=\"coverageThreshold\"\r\n type=\"number\"\r\n min=\"0\"\r\n max=\"100\"\r\n value={formData.coverageThreshold}\r\n onChange={(e) => handleChange('coverageThreshold', e.target.value)}\r\n />\r\n {errors.coverageThreshold && (\r\n <p className=\"text-sm text-error mt-1\">{errors.coverageThreshold}</p>\r\n )}\r\n </div>\r\n <div>\r\n <label\r\n htmlFor=\"qualityScoreThreshold\"\r\n className=\"block text-sm font-medium text-foreground mb-1\"\r\n >\r\n Quality Score Threshold\r\n </label>\r\n <Input\r\n id=\"qualityScoreThreshold\"\r\n type=\"number\"\r\n min=\"0\"\r\n max=\"100\"\r\n value={formData.qualityScoreThreshold}\r\n onChange={(e) => handleChange('qualityScoreThreshold', e.target.value)}\r\n />\r\n {errors.qualityScoreThreshold && (\r\n <p className=\"text-sm text-error mt-1\">{errors.qualityScoreThreshold}</p>\r\n )}\r\n </div>\r\n </div>\r\n </section>\r\n\r\n {/* Actions */}\r\n <div className=\"flex justify-end gap-3 pt-4 border-t border-border\">\r\n {onCancel && (\r\n <Button variant=\"outline\" onClick={onCancel}>\r\n Cancel\r\n </Button>\r\n )}\r\n <Button onClick={handleSave} disabled={saving}>\r\n {saving ? 'Saving...' : 'Save'}\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { Sun, Moon, Monitor } from 'lucide-react';\r\n\r\nexport type Theme = 'light' | 'dark' | 'system';\r\n\r\nexport interface ThemeToggleProps {\r\n theme: Theme;\r\n onToggle: () => void;\r\n showLabel?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst themeLabels: Record<Theme, string> = {\r\n light: 'Light',\r\n dark: 'Dark',\r\n system: 'System',\r\n};\r\n\r\nexport function ThemeToggle({\r\n theme,\r\n onToggle,\r\n showLabel = false,\r\n className = '',\r\n}: ThemeToggleProps) {\r\n const getAriaLabel = () => {\r\n if (theme === 'dark') return 'Switch to light mode';\r\n if (theme === 'light') return 'Switch to dark mode';\r\n return 'Switch theme';\r\n };\r\n\r\n return (\r\n <button\r\n data-testid=\"theme-toggle\"\r\n onClick={onToggle}\r\n aria-label={getAriaLabel()}\r\n className={`\r\n flex items-center gap-2 p-2 rounded-md\r\n hover:bg-muted transition-colors\r\n ${className}\r\n `}\r\n >\r\n {theme === 'dark' && <Sun data-testid=\"sun-icon\" className=\"w-5 h-5\" />}\r\n {theme === 'light' && <Moon data-testid=\"moon-icon\" className=\"w-5 h-5\" />}\r\n {theme === 'system' && <Monitor data-testid=\"system-icon\" className=\"w-5 h-5\" />}\r\n {showLabel && <span className=\"text-sm\">{themeLabels[theme]}</span>}\r\n </button>\r\n );\r\n}\r\n","import { useEffect } from 'react';\r\nimport { SettingsPanel, type TlcConfig } from '../components/settings/SettingsPanel';\r\nimport { ThemeToggle } from '../components/settings/ThemeToggle';\r\nimport { useUIStore } from '../stores';\r\nimport { useSettings } from '../hooks';\r\nimport { Card } from '../components/ui/Card';\r\nimport { Skeleton } from '../components/ui/Skeleton';\r\n\r\nexport function SettingsPage() {\r\n const setActiveView = useUIStore((state) => state.setActiveView);\r\n const theme = useUIStore((state) => state.theme);\r\n const toggleTheme = useUIStore((state) => state.toggleTheme);\r\n const { config, loading, saving, error, saveConfig } = useSettings();\r\n\r\n useEffect(() => {\r\n setActiveView('settings');\r\n }, [setActiveView]);\r\n\r\n const handleSave = async (newConfig: TlcConfig) => {\r\n try {\r\n await saveConfig(newConfig as Record<string, unknown>);\r\n } catch {\r\n // Error is handled by useSettings hook\r\n }\r\n };\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"h-full overflow-auto p-6 space-y-6\">\r\n <Skeleton className=\"h-8 w-48\" />\r\n <Skeleton className=\"h-32\" />\r\n <Skeleton className=\"h-64\" />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"h-full overflow-auto p-6 space-y-6\">\r\n <div className=\"mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Settings</h1>\r\n <p className=\"text-text-secondary mt-1\">Configure your TLC dashboard</p>\r\n </div>\r\n\r\n {error && (\r\n <div className=\"text-danger text-sm p-3 bg-danger/10 rounded-lg\">{error}</div>\r\n )}\r\n\r\n <Card className=\"p-6\">\r\n <h2 className=\"text-lg font-medium text-text-primary mb-4\">Appearance</h2>\r\n <div className=\"flex items-center justify-between\">\r\n <div>\r\n <div className=\"text-text-primary\">Theme</div>\r\n <div className=\"text-sm text-text-secondary\">\r\n Switch between light and dark mode\r\n </div>\r\n </div>\r\n <ThemeToggle theme={theme} onToggle={toggleTheme} />\r\n </div>\r\n </Card>\r\n\r\n <Card className=\"p-6\">\r\n <h2 className=\"text-lg font-medium text-text-primary mb-4\">Project Configuration</h2>\r\n <SettingsPanel\r\n config={config ?? { project: '' }}\r\n onSave={handleSave}\r\n saving={saving}\r\n />\r\n </Card>\r\n </div>\r\n );\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\nimport { api } from '../api';\nimport type { WorkspaceGroup } from '../api/endpoints';\n\nexport function useWorkspaceGroups() {\n const [groups, setGroups] = useState<WorkspaceGroup[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const fetchGroups = useCallback(async () => {\n setLoading(true);\n setError(null);\n try {\n const result = await api.workspace.getGroups();\n setGroups(result);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to fetch workspace groups');\n setGroups([]);\n } finally {\n setLoading(false);\n }\n }, []);\n\n useEffect(() => {\n fetchGroups();\n }, [fetchGroups]);\n\n return { groups, loading, error, fetchGroups };\n}\n","import { useEffect, useState } from 'react';\r\nimport { useNavigate } from 'react-router-dom';\r\nimport { useUIStore } from '../stores';\r\nimport { useWorkspaceStore } from '../stores/workspace.store';\r\nimport { useWorkspaceGroups } from '../hooks/useWorkspaceGroups';\r\nimport { Skeleton } from '../components/ui/Skeleton';\r\nimport { Search, FolderKanban, ArrowLeft, ChevronRight } from 'lucide-react';\r\nimport type { WorkspaceGroup } from '../api/endpoints';\r\n\r\nexport function ProjectsPage() {\r\n const navigate = useNavigate();\r\n const setActiveView = useUIStore((state) => state.setActiveView);\r\n const selectProject = useWorkspaceStore((s) => s.selectProject);\r\n const { groups, loading, error } = useWorkspaceGroups();\r\n const [searchQuery, setSearchQuery] = useState('');\r\n const [expandedGroup, setExpandedGroup] = useState<WorkspaceGroup | null>(null);\r\n\r\n useEffect(() => {\r\n setActiveView('projects');\r\n }, [setActiveView]);\r\n\r\n const filteredGroups = groups.filter((g) =>\r\n searchQuery\r\n ? g.name.toLowerCase().includes(searchQuery.toLowerCase()) ||\r\n g.repos.some((r) => r.name.toLowerCase().includes(searchQuery.toLowerCase()))\r\n : true\r\n );\r\n\r\n const handleGroupClick = (group: WorkspaceGroup) => {\r\n if (group.repoCount === 1) {\r\n // Single-repo group — navigate directly\r\n const repo = group.repos[0]!;\r\n selectProject(repo.id);\r\n navigate(`/projects/${repo.id}`);\r\n } else {\r\n setExpandedGroup(group);\r\n }\r\n };\r\n\r\n const handleRepoClick = (repo: { id: string }) => {\r\n selectProject(repo.id);\r\n navigate(`/projects/${repo.id}`);\r\n };\r\n\r\n if (error) {\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <div className=\"mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Projects</h1>\r\n <p className=\"text-text-secondary mt-1\">Manage your TLC projects</p>\r\n </div>\r\n <div className=\"text-error p-4\">Failed to load projects: {error}</div>\r\n </div>\r\n );\r\n }\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <div className=\"mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Projects</h1>\r\n <p className=\"text-text-secondary mt-1\">Manage your TLC projects</p>\r\n </div>\r\n <div data-testid=\"loading\" className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\r\n {[1, 2, 3].map((i) => (\r\n <Skeleton key={i} className=\"h-32\" />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Expanded group view — show repos within the selected workspace\r\n if (expandedGroup) {\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <div className=\"mb-6\">\r\n <button\r\n data-testid=\"back-to-groups\"\r\n onClick={() => setExpandedGroup(null)}\r\n className=\"flex items-center gap-2 text-text-secondary hover:text-text-primary mb-3 transition-colors\"\r\n >\r\n <ArrowLeft className=\"h-4 w-4\" />\r\n <span>All Workspaces</span>\r\n </button>\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">{expandedGroup.name}</h1>\r\n <p className=\"text-text-secondary mt-1\">{expandedGroup.repoCount} repositories</p>\r\n </div>\r\n\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\r\n {expandedGroup.repos.map((repo) => (\r\n <div\r\n key={repo.id}\r\n onClick={() => handleRepoClick(repo)}\r\n className=\"p-4 rounded-lg border border-border bg-bg-secondary hover:bg-bg-tertiary cursor-pointer transition-colors\"\r\n >\r\n <div className=\"flex items-center justify-between mb-2\">\r\n <h3 className=\"font-medium text-text-primary truncate\">{repo.name}</h3>\r\n <ChevronRight className=\"h-4 w-4 text-text-muted flex-shrink-0\" />\r\n </div>\r\n {repo.hasTlc && (\r\n <div className=\"flex items-center gap-2 text-sm\">\r\n <span data-testid=\"tlc-badge\" className=\"px-2 py-0.5 rounded-full text-xs font-medium bg-accent/20 text-accent\">TLC</span>\r\n {repo.phaseName && (\r\n <span className=\"text-text-secondary\">Phase {repo.phase}: {repo.phaseName}</span>\r\n )}\r\n </div>\r\n )}\r\n {!repo.hasTlc && (\r\n <span className=\"text-sm text-text-muted\">No TLC</span>\r\n )}\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Main workspace groups view\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <div className=\"mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Projects</h1>\r\n <p className=\"text-text-secondary mt-1\">Manage your TLC projects</p>\r\n </div>\r\n\r\n {/* Search */}\r\n <div className=\"mb-6\">\r\n <div className=\"relative max-w-md\">\r\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-muted\" />\r\n <input\r\n type=\"text\"\r\n placeholder=\"Search workspaces and projects...\"\r\n value={searchQuery}\r\n onChange={(e) => setSearchQuery(e.target.value)}\r\n className=\"w-full pl-10 pr-4 py-2 text-sm bg-bg-secondary border border-border rounded-md text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-accent focus:border-accent\"\r\n />\r\n </div>\r\n </div>\r\n\r\n {filteredGroups.length === 0 ? (\r\n <div data-testid=\"empty-state\" className=\"flex flex-col items-center justify-center py-16 text-center\">\r\n <div className=\"w-16 h-16 bg-bg-tertiary rounded-full flex items-center justify-center mb-4\">\r\n <FolderKanban className=\"w-8 h-8 text-text-muted\" />\r\n </div>\r\n <h3 className=\"text-lg font-semibold text-text-primary mb-2\">No workspaces found</h3>\r\n <p className=\"text-text-secondary max-w-md\">\r\n Configure workspace roots in Settings to discover projects.\r\n </p>\r\n </div>\r\n ) : (\r\n <div className=\"grid grid-cols-1 md:grid-cols-2 lg:grid-cols-3 gap-4\">\r\n {filteredGroups.map((group) => (\r\n <div\r\n key={group.name}\r\n onClick={() => handleGroupClick(group)}\r\n className=\"p-5 rounded-lg border border-border bg-bg-secondary hover:bg-bg-tertiary cursor-pointer transition-colors\"\r\n >\r\n <div className=\"flex items-center justify-between mb-3\">\r\n <div className=\"flex items-center gap-3\">\r\n <div className=\"w-10 h-10 rounded-lg bg-accent/10 flex items-center justify-center\">\r\n <FolderKanban className=\"h-5 w-5 text-accent\" />\r\n </div>\r\n <div>\r\n <h3 className=\"font-semibold text-text-primary\">{group.name}</h3>\r\n <span data-testid={`group-count-${group.name}`} className=\"text-sm text-text-secondary\">\r\n {group.repoCount}\r\n </span>\r\n <span className=\"text-sm text-text-secondary\"> {group.repoCount === 1 ? 'repo' : 'repos'}</span>\r\n </div>\r\n </div>\r\n <ChevronRight className=\"h-5 w-5 text-text-muted\" />\r\n </div>\r\n\r\n <div className=\"flex items-center gap-2\">\r\n {group.hasTlc && (\r\n <span data-testid=\"tlc-badge\" className=\"px-2 py-0.5 rounded-full text-xs font-medium bg-accent/20 text-accent\">TLC</span>\r\n )}\r\n {group.repos.some((r) => r.phaseName) && (\r\n <span className=\"text-xs text-text-muted\">\r\n {group.repos.filter((r) => r.phaseName).length} active\r\n </span>\r\n )}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { Users } from 'lucide-react';\r\n\r\nexport type UserStatus = 'online' | 'offline' | 'away' | 'busy';\r\n\r\nexport interface TeamMember {\r\n id: string;\r\n name: string;\r\n email: string;\r\n status: UserStatus;\r\n avatar?: string;\r\n lastSeen?: string;\r\n statusMessage?: string;\r\n}\r\n\r\nexport interface TeamPresenceProps {\r\n members: TeamMember[];\r\n mode?: 'local' | 'vps';\r\n compact?: boolean;\r\n className?: string;\r\n}\r\n\r\nconst statusColors: Record<UserStatus, string> = {\r\n online: 'bg-success',\r\n offline: 'bg-muted',\r\n away: 'bg-warning',\r\n busy: 'bg-error',\r\n};\r\n\r\nconst statusOrder: Record<UserStatus, number> = {\r\n online: 0,\r\n busy: 1,\r\n away: 2,\r\n offline: 3,\r\n};\r\n\r\nfunction getInitials(name: string): string {\r\n return name\r\n .split(' ')\r\n .map((part) => part[0])\r\n .join('')\r\n .toUpperCase()\r\n .slice(0, 2);\r\n}\r\n\r\nexport function TeamPresence({\r\n members,\r\n mode = 'vps',\r\n compact = false,\r\n className = '',\r\n}: TeamPresenceProps) {\r\n if (mode === 'local') {\r\n return null;\r\n }\r\n\r\n const sortedMembers = [...members].sort(\r\n (a, b) => statusOrder[a.status] - statusOrder[b.status]\r\n );\r\n\r\n const onlineCount = members.filter((m) => m.status === 'online').length;\r\n\r\n if (members.length === 0) {\r\n return (\r\n <div\r\n data-testid=\"team-presence\"\r\n className={`bg-surface border border-border rounded-lg p-4 ${className}`}\r\n >\r\n <div data-testid=\"empty-state\" className=\"text-center text-muted-foreground\">\r\n <Users className=\"w-8 h-8 mx-auto mb-2 opacity-50\" />\r\n <p>No team members</p>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n data-testid=\"team-presence\"\r\n className={`bg-surface border border-border rounded-lg ${compact ? 'compact p-2' : 'p-4'} ${className}`}\r\n >\r\n <div className=\"flex items-center justify-between mb-3\">\r\n <h3 className=\"font-semibold text-foreground\">Team</h3>\r\n <span data-testid=\"online-count\" className=\"text-sm text-muted-foreground\">\r\n {onlineCount} online\r\n </span>\r\n </div>\r\n\r\n <div className={`space-y-${compact ? '1' : '2'}`}>\r\n {sortedMembers.map((member) => (\r\n <div\r\n key={member.id}\r\n data-testid=\"team-member\"\r\n className=\"flex items-center gap-3\"\r\n >\r\n {/* Avatar */}\r\n <div className=\"relative\">\r\n {member.avatar ? (\r\n <img\r\n src={member.avatar}\r\n alt={member.name}\r\n className=\"w-8 h-8 rounded-full object-cover\"\r\n />\r\n ) : (\r\n <div className=\"w-8 h-8 rounded-full bg-muted flex items-center justify-center text-xs font-medium\">\r\n {getInitials(member.name)}\r\n </div>\r\n )}\r\n <span\r\n data-testid={`status-${member.id}`}\r\n className={`absolute bottom-0 right-0 w-2.5 h-2.5 rounded-full border-2 border-surface ${statusColors[member.status]}`}\r\n />\r\n </div>\r\n\r\n {/* Info */}\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm font-medium text-foreground truncate\">\r\n {member.name}\r\n </p>\r\n {member.statusMessage ? (\r\n <p className=\"text-xs text-muted-foreground truncate\">\r\n {member.statusMessage}\r\n </p>\r\n ) : member.lastSeen && member.status !== 'online' ? (\r\n <p className=\"text-xs text-muted-foreground\">{member.lastSeen}</p>\r\n ) : null}\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { useState, useRef, useEffect, ReactNode } from 'react';\r\nimport { ChevronDown } from 'lucide-react';\r\n\r\nexport interface DropdownItem {\r\n id: string;\r\n label: string;\r\n icon?: ReactNode;\r\n disabled?: boolean;\r\n}\r\n\r\nexport interface DropdownProps {\r\n items: DropdownItem[];\r\n onSelect: (item: DropdownItem) => void;\r\n trigger: ReactNode;\r\n align?: 'left' | 'right';\r\n className?: string;\r\n}\r\n\r\nexport function Dropdown({\r\n items,\r\n onSelect,\r\n trigger,\r\n align = 'left',\r\n className = '',\r\n}: DropdownProps) {\r\n const [isOpen, setIsOpen] = useState(false);\r\n const [highlightedIndex, setHighlightedIndex] = useState(-1);\r\n const [typeahead, setTypeahead] = useState('');\r\n const containerRef = useRef<HTMLDivElement>(null);\r\n const menuRef = useRef<HTMLDivElement>(null);\r\n const typeaheadTimeoutRef = useRef<NodeJS.Timeout | null>(null);\r\n\r\n // Close on outside click\r\n useEffect(() => {\r\n if (!isOpen) return;\r\n\r\n const handleMouseDown = (e: MouseEvent) => {\r\n if (containerRef.current && !containerRef.current.contains(e.target as Node)) {\r\n setIsOpen(false);\r\n }\r\n };\r\n\r\n document.addEventListener('mousedown', handleMouseDown);\r\n return () => document.removeEventListener('mousedown', handleMouseDown);\r\n }, [isOpen]);\r\n\r\n // Reset highlight when closing\r\n useEffect(() => {\r\n if (!isOpen) {\r\n setHighlightedIndex(-1);\r\n setTypeahead('');\r\n }\r\n }, [isOpen]);\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent) => {\r\n if (!isOpen) return;\r\n\r\n switch (e.key) {\r\n case 'ArrowDown':\r\n e.preventDefault();\r\n setHighlightedIndex((prev) => {\r\n const next = prev + 1;\r\n return next >= items.length ? 0 : next;\r\n });\r\n break;\r\n\r\n case 'ArrowUp':\r\n e.preventDefault();\r\n setHighlightedIndex((prev) => {\r\n const next = prev - 1;\r\n return next < 0 ? items.length - 1 : next;\r\n });\r\n break;\r\n\r\n case 'Enter':\r\n e.preventDefault();\r\n const selectedItem = items[highlightedIndex];\r\n if (highlightedIndex >= 0 && selectedItem && !selectedItem.disabled) {\r\n handleSelect(selectedItem);\r\n }\r\n break;\r\n\r\n case 'Escape':\r\n e.preventDefault();\r\n setIsOpen(false);\r\n break;\r\n\r\n default:\r\n // Type-ahead search\r\n if (e.key.length === 1 && e.key.match(/[a-z0-9]/i)) {\r\n const newTypeahead = typeahead + e.key.toLowerCase();\r\n setTypeahead(newTypeahead);\r\n\r\n // Find matching item\r\n const matchIndex = items.findIndex((item) =>\r\n item.label.toLowerCase().startsWith(newTypeahead)\r\n );\r\n if (matchIndex >= 0) {\r\n setHighlightedIndex(matchIndex);\r\n }\r\n\r\n // Clear typeahead after delay\r\n if (typeaheadTimeoutRef.current) {\r\n clearTimeout(typeaheadTimeoutRef.current);\r\n }\r\n typeaheadTimeoutRef.current = setTimeout(() => {\r\n setTypeahead('');\r\n }, 500);\r\n }\r\n break;\r\n }\r\n };\r\n\r\n const handleSelect = (item: DropdownItem) => {\r\n if (item.disabled) return;\r\n onSelect(item);\r\n setIsOpen(false);\r\n };\r\n\r\n return (\r\n <div ref={containerRef} className={`relative inline-block ${className}`}>\r\n <button\r\n type=\"button\"\r\n onClick={() => setIsOpen(!isOpen)}\r\n className=\"\r\n flex items-center gap-2 px-3 py-2\r\n bg-surface border border-border rounded-md\r\n hover:bg-muted transition-colors\r\n text-foreground\r\n \"\r\n aria-haspopup=\"menu\"\r\n aria-expanded={isOpen}\r\n >\r\n {trigger}\r\n <ChevronDown\r\n className={`w-4 h-4 transition-transform ${isOpen ? 'rotate-180' : ''}`}\r\n />\r\n </button>\r\n\r\n {isOpen && (\r\n <div\r\n ref={menuRef}\r\n role=\"menu\"\r\n tabIndex={-1}\r\n onKeyDown={handleKeyDown}\r\n className={`\r\n absolute z-50 mt-1 min-w-[180px]\r\n bg-surface border border-border rounded-md shadow-lg\r\n py-1 max-h-60 overflow-auto\r\n ${align === 'left' ? 'left-0' : 'right-0'}\r\n `}\r\n >\r\n {items.map((item, index) => (\r\n <div\r\n key={item.id}\r\n role=\"menuitem\"\r\n tabIndex={-1}\r\n aria-disabled={item.disabled}\r\n onClick={() => handleSelect(item)}\r\n className={`\r\n flex items-center gap-2 px-3 py-2 cursor-pointer\r\n ${item.disabled ? 'opacity-50 cursor-not-allowed' : 'hover:bg-muted'}\r\n ${highlightedIndex === index ? 'bg-muted' : ''}\r\n ${item.disabled ? '' : 'text-foreground'}\r\n `}\r\n >\r\n {item.icon && <span className=\"flex-shrink-0\">{item.icon}</span>}\r\n <span>{item.label}</span>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { useState } from 'react';\r\nimport { GitCommit, CheckCircle2, MessageSquare, Eye, User, Activity } from 'lucide-react';\r\nimport { Dropdown, DropdownItem } from '../ui/Dropdown';\r\n\r\nexport type ActivityType = 'commit' | 'task_claim' | 'task_complete' | 'comment' | 'review';\r\n\r\nexport interface ActivityItem {\r\n id: string;\r\n type: ActivityType;\r\n user: string;\r\n message: string;\r\n timestamp: string;\r\n}\r\n\r\nexport interface ActivityFeedProps {\r\n activities: ActivityItem[];\r\n showFilters?: boolean;\r\n pageSize?: number;\r\n mode?: 'local' | 'vps';\r\n className?: string;\r\n}\r\n\r\nconst activityIcons: Record<ActivityType, React.ReactNode> = {\r\n commit: <GitCommit className=\"w-4 h-4\" data-testid=\"icon-commit\" />,\r\n task_claim: <User className=\"w-4 h-4\" data-testid=\"icon-task_claim\" />,\r\n task_complete: <CheckCircle2 className=\"w-4 h-4\" data-testid=\"icon-task_complete\" />,\r\n comment: <MessageSquare className=\"w-4 h-4\" data-testid=\"icon-comment\" />,\r\n review: <Eye className=\"w-4 h-4\" data-testid=\"icon-review\" />,\r\n};\r\n\r\nfunction formatRelativeTime(timestamp: string): string {\r\n const date = new Date(timestamp);\r\n const now = new Date();\r\n const diff = now.getTime() - date.getTime();\r\n const minutes = Math.floor(diff / 60000);\r\n const hours = Math.floor(diff / 3600000);\r\n\r\n if (minutes < 1) return 'Just now';\r\n if (minutes < 60) return `${minutes}m ago`;\r\n if (hours < 24) return `${hours}h ago`;\r\n return date.toLocaleDateString();\r\n}\r\n\r\nfunction getDateGroup(timestamp: string): string {\r\n const date = new Date(timestamp);\r\n const now = new Date();\r\n const today = new Date(now.getFullYear(), now.getMonth(), now.getDate());\r\n const yesterday = new Date(today);\r\n yesterday.setDate(yesterday.getDate() - 1);\r\n\r\n const activityDate = new Date(date.getFullYear(), date.getMonth(), date.getDate());\r\n\r\n if (activityDate.getTime() === today.getTime()) return 'Today';\r\n if (activityDate.getTime() === yesterday.getTime()) return 'Yesterday';\r\n return 'Earlier';\r\n}\r\n\r\nfunction groupByDate(activities: ActivityItem[]): Record<string, ActivityItem[]> {\r\n const groups: Record<string, ActivityItem[]> = {};\r\n\r\n activities.forEach((activity) => {\r\n const group = getDateGroup(activity.timestamp);\r\n if (!groups[group]) {\r\n groups[group] = [];\r\n }\r\n groups[group].push(activity);\r\n });\r\n\r\n return groups;\r\n}\r\n\r\nexport function ActivityFeed({\r\n activities,\r\n showFilters = false,\r\n pageSize = 20,\r\n mode = 'vps',\r\n className = '',\r\n}: ActivityFeedProps) {\r\n const [typeFilter, setTypeFilter] = useState<ActivityType | null>(null);\r\n const [userFilter, setUserFilter] = useState<string | null>(null);\r\n const [visibleCount, setVisibleCount] = useState(pageSize);\r\n\r\n if (mode === 'local') {\r\n return null;\r\n }\r\n\r\n const filteredActivities = activities.filter((activity) => {\r\n if (typeFilter && activity.type !== typeFilter) return false;\r\n if (userFilter && activity.user !== userFilter) return false;\r\n return true;\r\n });\r\n\r\n const visibleActivities = filteredActivities.slice(0, visibleCount);\r\n const groupedActivities = groupByDate(visibleActivities);\r\n const hasMore = filteredActivities.length > visibleCount;\r\n\r\n const uniqueUsers = [...new Set(activities.map((a) => a.user))];\r\n const userItems: DropdownItem[] = uniqueUsers.map((user) => ({\r\n id: user,\r\n label: user,\r\n }));\r\n\r\n if (activities.length === 0) {\r\n return (\r\n <div\r\n data-testid=\"activity-feed\"\r\n className={`bg-surface border border-border rounded-lg p-4 ${className}`}\r\n >\r\n <div data-testid=\"empty-state\" className=\"text-center text-muted-foreground\">\r\n <Activity className=\"w-8 h-8 mx-auto mb-2 opacity-50\" />\r\n <p>No activity yet</p>\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n data-testid=\"activity-feed\"\r\n className={`bg-surface border border-border rounded-lg ${className}`}\r\n >\r\n {/* Filters */}\r\n {showFilters && (\r\n <div className=\"flex items-center gap-2 p-3 border-b border-border\">\r\n <button\r\n data-testid=\"filter-commit\"\r\n onClick={() => setTypeFilter(typeFilter === 'commit' ? null : 'commit')}\r\n className={`px-2 py-1 text-xs rounded ${\r\n typeFilter === 'commit' ? 'bg-primary text-primary-foreground' : 'bg-muted'\r\n }`}\r\n >\r\n Commits\r\n </button>\r\n <button\r\n data-testid=\"filter-task_claim\"\r\n onClick={() => setTypeFilter(typeFilter === 'task_claim' ? null : 'task_claim')}\r\n className={`px-2 py-1 text-xs rounded ${\r\n typeFilter === 'task_claim' ? 'bg-primary text-primary-foreground' : 'bg-muted'\r\n }`}\r\n >\r\n Claims\r\n </button>\r\n <div data-testid=\"filter-user\">\r\n <Dropdown\r\n items={userItems}\r\n onSelect={(item) => setUserFilter(userFilter === item.id ? null : item.id)}\r\n trigger={<span className=\"text-xs\">User</span>}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {/* Activity List */}\r\n <div className=\"p-3 space-y-4\">\r\n {['Today', 'Yesterday', 'Earlier'].map((group) => {\r\n const groupActivities = groupedActivities[group];\r\n if (!groupActivities || groupActivities.length === 0) return null;\r\n\r\n return (\r\n <div key={group}>\r\n <h4 className=\"text-xs font-semibold text-muted-foreground mb-2\">\r\n {group}\r\n </h4>\r\n <div className=\"space-y-2\">\r\n {groupActivities.map((activity) => (\r\n <div\r\n key={activity.id}\r\n data-testid=\"activity-item\"\r\n className=\"flex items-start gap-3\"\r\n >\r\n <div className=\"text-muted-foreground mt-0.5\">\r\n {activityIcons[activity.type]}\r\n </div>\r\n <div className=\"flex-1 min-w-0\">\r\n <p className=\"text-sm\">\r\n <span className=\"font-medium text-foreground\">{activity.user}</span>\r\n <span className=\"text-muted-foreground ml-1\">{activity.message}</span>\r\n </p>\r\n <span\r\n data-testid=\"activity-time\"\r\n className=\"text-xs text-muted-foreground\"\r\n >\r\n {formatRelativeTime(activity.timestamp)}\r\n </span>\r\n </div>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n })}\r\n </div>\r\n\r\n {/* Load More */}\r\n {hasMore && (\r\n <div className=\"p-3 border-t border-border\">\r\n <button\r\n onClick={() => setVisibleCount((prev) => prev + pageSize)}\r\n className=\"w-full text-sm text-primary hover:underline\"\r\n >\r\n Load more\r\n </button>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { Monitor, Server, Layers, Shield } from 'lucide-react';\r\n\r\nexport type Environment = 'local' | 'vps' | 'staging' | 'production';\r\n\r\nexport interface EnvironmentBadgeProps {\r\n environment: Environment;\r\n showIcon?: boolean;\r\n tooltip?: string;\r\n size?: 'sm' | 'md' | 'lg';\r\n className?: string;\r\n}\r\n\r\nconst environmentConfig: Record<Environment, { label: string; color: string; icon: React.ReactNode }> = {\r\n local: {\r\n label: 'Local',\r\n color: 'bg-muted text-muted-foreground',\r\n icon: <Monitor className=\"w-3 h-3\" />,\r\n },\r\n vps: {\r\n label: 'VPS',\r\n color: 'bg-info text-info-foreground',\r\n icon: <Server className=\"w-3 h-3\" />,\r\n },\r\n staging: {\r\n label: 'Staging',\r\n color: 'bg-warning text-warning-foreground',\r\n icon: <Layers className=\"w-3 h-3\" />,\r\n },\r\n production: {\r\n label: 'Production',\r\n color: 'bg-error text-error-foreground',\r\n icon: <Shield className=\"w-3 h-3\" />,\r\n },\r\n};\r\n\r\nconst sizeClasses: Record<string, string> = {\r\n sm: 'text-xs px-1.5 py-0.5',\r\n md: 'text-sm px-2 py-1',\r\n lg: 'text-base px-3 py-1.5',\r\n};\r\n\r\nexport function EnvironmentBadge({\r\n environment,\r\n showIcon = false,\r\n tooltip,\r\n size = 'md',\r\n className = '',\r\n}: EnvironmentBadgeProps) {\r\n const config = environmentConfig[environment];\r\n\r\n return (\r\n <span\r\n data-testid=\"env-badge\"\r\n title={tooltip}\r\n className={`\r\n inline-flex items-center gap-1 rounded-full font-medium\r\n ${config.color}\r\n ${sizeClasses[size]}\r\n ${className}\r\n `}\r\n >\r\n {showIcon && <span data-testid=\"env-icon\">{config.icon}</span>}\r\n {config.label}\r\n </span>\r\n );\r\n}\r\n","import { useState } from 'react';\r\nimport { ChevronDown, ChevronUp } from 'lucide-react';\r\nimport { TeamPresence, TeamMember } from './TeamPresence';\r\nimport { ActivityFeed, ActivityItem } from './ActivityFeed';\r\nimport { EnvironmentBadge, Environment } from './EnvironmentBadge';\r\nimport { Skeleton } from '../ui/Skeleton';\r\n\r\nexport interface TeamPanelProps {\r\n members: TeamMember[];\r\n activities: ActivityItem[];\r\n environment?: Environment;\r\n mode?: 'local' | 'vps';\r\n loading?: boolean;\r\n connected?: boolean;\r\n collapsible?: boolean;\r\n className?: string;\r\n}\r\n\r\nexport function TeamPanel({\r\n members,\r\n activities,\r\n environment = 'local',\r\n mode = 'vps',\r\n loading = false,\r\n connected = true,\r\n collapsible = false,\r\n className = '',\r\n}: TeamPanelProps) {\r\n const [activeTab, setActiveTab] = useState<'team' | 'activity'>('team');\r\n const [collapsed, setCollapsed] = useState(false);\r\n\r\n if (mode === 'local') {\r\n return null;\r\n }\r\n\r\n if (loading) {\r\n return (\r\n <div\r\n data-testid=\"team-panel\"\r\n className={`bg-surface border border-border rounded-lg p-4 ${className}`}\r\n >\r\n <div data-testid=\"loading-skeleton\">\r\n <Skeleton className=\"h-6 w-24 mb-4\" />\r\n <Skeleton className=\"h-10 w-full mb-2\" />\r\n <Skeleton className=\"h-10 w-full mb-2\" />\r\n <Skeleton className=\"h-10 w-full\" />\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div\r\n data-testid=\"team-panel\"\r\n className={`bg-surface border border-border rounded-lg ${collapsed ? 'collapsed' : ''} ${className}`}\r\n >\r\n {/* Header */}\r\n <div className=\"flex items-center justify-between p-3 border-b border-border\">\r\n <div className=\"flex items-center gap-2\">\r\n <h3 className=\"font-semibold text-foreground\">Team</h3>\r\n <span\r\n data-testid=\"member-count\"\r\n className=\"text-xs bg-muted px-1.5 py-0.5 rounded-full\"\r\n >\r\n {members.length}\r\n </span>\r\n {environment !== 'local' && (\r\n <EnvironmentBadge environment={environment} size=\"sm\" />\r\n )}\r\n </div>\r\n <div className=\"flex items-center gap-2\">\r\n <span\r\n data-testid=\"connection-status\"\r\n className={`w-2 h-2 rounded-full ${connected ? 'bg-success' : 'bg-error'}`}\r\n title={connected ? 'Connected' : 'Disconnected'}\r\n />\r\n {collapsible && (\r\n <button\r\n onClick={() => setCollapsed(!collapsed)}\r\n aria-label={collapsed ? 'Expand team panel' : 'Collapse team panel'}\r\n className=\"p-1 hover:bg-muted rounded\"\r\n >\r\n {collapsed ? (\r\n <ChevronDown className=\"w-4 h-4\" />\r\n ) : (\r\n <ChevronUp className=\"w-4 h-4\" />\r\n )}\r\n </button>\r\n )}\r\n </div>\r\n </div>\r\n\r\n {!collapsed && (\r\n <>\r\n {/* Tabs */}\r\n <div className=\"flex border-b border-border\" role=\"tablist\">\r\n <button\r\n role=\"tab\"\r\n aria-selected={activeTab === 'team'}\r\n onClick={() => setActiveTab('team')}\r\n className={`flex-1 px-4 py-2 text-sm font-medium transition-colors ${\r\n activeTab === 'team'\r\n ? 'text-primary border-b-2 border-primary'\r\n : 'text-muted-foreground hover:text-foreground'\r\n }`}\r\n >\r\n Team\r\n </button>\r\n <button\r\n role=\"tab\"\r\n aria-selected={activeTab === 'activity'}\r\n onClick={() => setActiveTab('activity')}\r\n className={`flex-1 px-4 py-2 text-sm font-medium transition-colors ${\r\n activeTab === 'activity'\r\n ? 'text-primary border-b-2 border-primary'\r\n : 'text-muted-foreground hover:text-foreground'\r\n }`}\r\n >\r\n Activity\r\n </button>\r\n </div>\r\n\r\n {/* Content */}\r\n <div className=\"p-3\">\r\n {activeTab === 'team' ? (\r\n <TeamPresence members={members} mode=\"vps\" />\r\n ) : (\r\n <ActivityFeed activities={activities} mode=\"vps\" />\r\n )}\r\n </div>\r\n </>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport { TeamPanel } from '../components/team/TeamPanel';\r\nimport { useUIStore } from '../stores';\r\nimport { useWebSocketStore } from '../stores/websocket.store';\r\nimport { api } from '../api';\r\nimport { Skeleton } from '../components/ui/Skeleton';\r\nimport type { TeamMember } from '../components/team/TeamPresence';\r\nimport type { ActivityItem } from '../components/team/ActivityFeed';\r\n\r\nexport function TeamPage() {\r\n const setActiveView = useUIStore((state) => state.setActiveView);\r\n const wsStatus = useWebSocketStore((state) => state.status);\r\n const [members, setMembers] = useState<TeamMember[]>([]);\r\n const [activities, setActivities] = useState<ActivityItem[]>([]);\r\n const [loading, setLoading] = useState(true);\r\n\r\n const fetchTeamData = useCallback(async () => {\r\n setLoading(true);\r\n try {\r\n // Get activity from changelog\r\n const changelog = await api.project.getChangelog();\r\n const commits = (changelog || []).slice(0, 20);\r\n\r\n // Extract unique authors from git changelog (real data, not fabricated)\r\n const authorMap = new Map<string, { name: string; lastSeen: string }>();\r\n for (const commit of commits) {\r\n if (commit.author && !authorMap.has(commit.author)) {\r\n authorMap.set(commit.author, {\r\n name: commit.author,\r\n lastSeen: commit.time || new Date().toISOString(),\r\n });\r\n }\r\n }\r\n\r\n if (authorMap.size > 0) {\r\n const teamMembers: TeamMember[] = Array.from(authorMap.entries()).map(\r\n ([, info], index) => ({\r\n id: `author-${index}`,\r\n name: info.name,\r\n email: '',\r\n status: (index === 0 && wsStatus === 'connected' ? 'online' : 'offline') as TeamMember['status'],\r\n lastSeen: info.lastSeen,\r\n })\r\n );\r\n setMembers(teamMembers);\r\n } else {\r\n setMembers([]);\r\n }\r\n\r\n const items: ActivityItem[] = commits.slice(0, 10).map((commit: { hash?: string; message?: string; time?: string; author?: string }, i: number) => ({\r\n id: commit.hash || String(i),\r\n type: 'commit' as const,\r\n user: commit.author || 'Unknown',\r\n message: commit.message || '',\r\n timestamp: commit.time || new Date().toISOString(),\r\n }));\r\n setActivities(items);\r\n } catch {\r\n setMembers([]);\r\n setActivities([]);\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, [wsStatus]);\r\n\r\n useEffect(() => {\r\n setActiveView('team');\r\n fetchTeamData();\r\n }, [setActiveView, fetchTeamData]);\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <div className=\"mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Team</h1>\r\n <p className=\"text-text-secondary mt-1\">Team presence and activity</p>\r\n </div>\r\n <Skeleton className=\"h-96\" />\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <div className=\"mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Team</h1>\r\n <p className=\"text-text-secondary mt-1\">Team presence and activity</p>\r\n </div>\r\n\r\n <TeamPanel\r\n members={members}\r\n activities={activities}\r\n mode=\"vps\"\r\n connected={wsStatus === 'connected'}\r\n />\r\n </div>\r\n );\r\n}\r\n","/**\r\n * Health Diagnostics Panel\r\n * Displays system health metrics and status\r\n */\r\nimport { useEffect } from 'react';\r\n\r\ninterface MemoryInfo {\r\n used: number;\r\n total: number;\r\n percent: number;\r\n}\r\n\r\ninterface CpuInfo {\r\n percent: number;\r\n}\r\n\r\ninterface TestsInfo {\r\n passed: number;\r\n failed: number;\r\n total: number;\r\n}\r\n\r\ninterface RouterProvider {\r\n name: string;\r\n status: string;\r\n}\r\n\r\ninterface RouterInfo {\r\n providers: RouterProvider[];\r\n}\r\n\r\ninterface Alert {\r\n severity: string;\r\n message: string;\r\n}\r\n\r\ninterface HealthData {\r\n status: 'healthy' | 'degraded' | 'unhealthy';\r\n uptime: number;\r\n memory: MemoryInfo;\r\n cpu: CpuInfo;\r\n tests: TestsInfo;\r\n router?: RouterInfo;\r\n issues?: string[];\r\n alerts?: Alert[];\r\n}\r\n\r\ninterface HealthDiagnosticsPanelProps {\r\n health?: HealthData;\r\n loading?: boolean;\r\n error?: string;\r\n showGraphs?: boolean;\r\n onRefresh?: () => Promise<HealthData>;\r\n refreshInterval?: number;\r\n}\r\n\r\nfunction formatUptime(seconds: number): string {\r\n const days = Math.floor(seconds / 86400);\r\n const hours = Math.floor((seconds % 86400) / 3600);\r\n const minutes = Math.floor((seconds % 3600) / 60);\r\n\r\n if (days > 0) {\r\n return `${days} day${days > 1 ? 's' : ''}`;\r\n }\r\n if (hours > 0) {\r\n return `${hours} hour${hours > 1 ? 's' : ''}`;\r\n }\r\n return `${minutes} minute${minutes > 1 ? 's' : ''}`;\r\n}\r\n\r\nfunction StatusBadge({ status }: { status: string }) {\r\n const colorClasses = {\r\n healthy: 'bg-success text-white',\r\n degraded: 'bg-warning text-black',\r\n unhealthy: 'bg-error text-white',\r\n }[status] || 'bg-text-muted text-white';\r\n\r\n return (\r\n <span className={`px-2 py-1 rounded text-sm font-medium ${colorClasses}`}>\r\n {status}\r\n </span>\r\n );\r\n}\r\n\r\nfunction MetricCard({ label, value, unit }: { label: string; value: string | number; unit?: string }) {\r\n return (\r\n <div className=\"bg-surface-elevated p-4 rounded-lg\">\r\n <p className=\"text-text-muted text-sm\">{label}</p>\r\n <p className=\"text-xl font-semibold\">\r\n {value}{unit}\r\n </p>\r\n </div>\r\n );\r\n}\r\n\r\nfunction SimpleGraph({ value, testId }: { value: number; testId: string }) {\r\n return (\r\n <div data-testid={testId} className=\"h-8 bg-surface-elevated rounded overflow-hidden\">\r\n <div\r\n className=\"h-full bg-primary transition-all duration-300\"\r\n style={{ width: `${Math.min(100, Math.max(0, value))}%` }}\r\n />\r\n </div>\r\n );\r\n}\r\n\r\nexport function HealthDiagnosticsPanel({\r\n health,\r\n loading,\r\n error,\r\n showGraphs,\r\n onRefresh,\r\n refreshInterval,\r\n}: HealthDiagnosticsPanelProps) {\r\n useEffect(() => {\r\n if (onRefresh && refreshInterval) {\r\n const interval = setInterval(() => {\r\n onRefresh();\r\n }, refreshInterval);\r\n return () => clearInterval(interval);\r\n }\r\n }, [onRefresh, refreshInterval]);\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"p-6 text-center\">\r\n <p className=\"text-text-muted\">Loading health diagnostics...</p>\r\n </div>\r\n );\r\n }\r\n\r\n if (error) {\r\n return (\r\n <div className=\"p-6 text-center\">\r\n <p className=\"text-error\">{error}</p>\r\n </div>\r\n );\r\n }\r\n\r\n if (!health) {\r\n return (\r\n <div className=\"p-6 text-center\">\r\n <p className=\"text-text-muted\">No health data available</p>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"space-y-6\">\r\n <div className=\"flex items-center justify-between\">\r\n <h2 className=\"text-lg font-semibold\">System Health</h2>\r\n <StatusBadge status={health.status} />\r\n </div>\r\n\r\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\r\n <MetricCard label=\"Memory\" value={health.memory.percent} unit=\"%\" />\r\n <MetricCard label=\"CPU\" value={health.cpu.percent} unit=\"%\" />\r\n <MetricCard label=\"Tests\" value={health.tests.passed} unit={` / ${health.tests.total}`} />\r\n <MetricCard label=\"Uptime\" value={formatUptime(health.uptime)} />\r\n </div>\r\n\r\n {showGraphs && (\r\n <div className=\"space-y-4\">\r\n <div>\r\n <p className=\"text-sm text-text-muted mb-2\">Memory Usage</p>\r\n <SimpleGraph value={health.memory.percent} testId=\"memory-graph\" />\r\n </div>\r\n <div>\r\n <p className=\"text-sm text-text-muted mb-2\">CPU Usage</p>\r\n <SimpleGraph value={health.cpu.percent} testId=\"cpu-graph\" />\r\n </div>\r\n </div>\r\n )}\r\n\r\n {health.issues && health.issues.length > 0 && (\r\n <div className=\"bg-warning/10 border border-warning rounded-lg p-4\">\r\n <h3 className=\"font-medium text-warning mb-2\">Issues</h3>\r\n <ul className=\"list-disc list-inside space-y-1\">\r\n {health.issues.map((issue, index) => (\r\n <li key={index} className=\"text-sm\">{issue}</li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {health.alerts && health.alerts.length > 0 && (\r\n <div className=\"space-y-2\">\r\n <h3 className=\"font-medium\">Alerts</h3>\r\n {health.alerts.map((alert, index) => (\r\n <div\r\n key={index}\r\n className={`p-3 rounded-lg ${\r\n alert.severity === 'warning'\r\n ? 'bg-warning/10 border border-warning'\r\n : alert.severity === 'error'\r\n ? 'bg-error/10 border border-error'\r\n : 'bg-info/10 border border-info'\r\n }`}\r\n >\r\n <p className=\"text-sm\">{alert.message}</p>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {health.router && health.router.providers && (\r\n <div>\r\n <h3 className=\"font-medium mb-2\">Router Providers</h3>\r\n <div className=\"space-y-2\">\r\n {health.router.providers.map((provider, index) => (\r\n <div\r\n key={index}\r\n className=\"flex items-center justify-between p-2 bg-surface-elevated rounded\"\r\n >\r\n <span>{provider.name}</span>\r\n <span\r\n className={`text-sm ${\r\n provider.status === 'active'\r\n ? 'text-success'\r\n : provider.status === 'error'\r\n ? 'text-error'\r\n : 'text-text-muted'\r\n }`}\r\n >\r\n {provider.status}\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useState, useCallback, type ComponentProps } from 'react';\r\nimport { HealthDiagnosticsPanel } from '../components/HealthDiagnosticsPanel';\r\nimport { useUIStore } from '../stores';\r\nimport { api } from '../api';\r\nimport { Skeleton } from '../components/ui/Skeleton';\r\nimport { Button } from '../components/ui/Button';\r\nimport { RefreshCw } from 'lucide-react';\r\n\r\n/** Extract the HealthData type expected by HealthDiagnosticsPanel's onRefresh prop */\r\ntype HealthData = Awaited<ReturnType<NonNullable<ComponentProps<typeof HealthDiagnosticsPanel>['onRefresh']>>>;\r\n\r\nexport function HealthPage() {\r\n const setActiveView = useUIStore((state) => state.setActiveView);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n const fetchHealth = useCallback(async () => {\r\n setLoading(true);\r\n setError(null);\r\n try {\r\n await api.health.getHealth();\r\n } catch (err) {\r\n setError(err instanceof Error ? err.message : 'Failed to fetch health data');\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, []);\r\n\r\n useEffect(() => {\r\n setActiveView('health');\r\n fetchHealth();\r\n }, [setActiveView, fetchHealth]);\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <div className=\"flex items-center justify-between mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Health</h1>\r\n </div>\r\n <div className=\"space-y-4\">\r\n {[1, 2, 3].map((i) => (\r\n <Skeleton key={i} className=\"h-24\" />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n if (error) {\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <div className=\"flex items-center justify-between mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Health</h1>\r\n <Button variant=\"ghost\" onClick={fetchHealth} leftIcon={<RefreshCw className=\"w-4 h-4\" />}>\r\n Retry\r\n </Button>\r\n </div>\r\n <div className=\"text-danger p-4\">Failed to load health data: {error}</div>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"h-full overflow-auto\">\r\n <div className=\"flex items-center justify-between p-6 pb-0\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Health</h1>\r\n <Button variant=\"ghost\" onClick={fetchHealth} leftIcon={<RefreshCw className=\"w-4 h-4\" />}>\r\n Refresh\r\n </Button>\r\n </div>\r\n <HealthDiagnosticsPanel onRefresh={async () => {\r\n const data = await api.health.getHealth();\r\n return data as HealthData;\r\n }} />\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { Smartphone, Tablet, Monitor, RefreshCw, ExternalLink } from 'lucide-react';\r\nimport { Button } from '../components/ui/Button';\r\nimport { Dropdown, type DropdownItem } from '../components/ui/Dropdown';\r\nimport { useUIStore } from '../stores';\r\nimport { useWorkspaceStore } from '../stores/workspace.store';\r\n\r\ntype DeviceType = 'phone' | 'tablet' | 'desktop';\r\n\r\ninterface DeviceConfig {\r\n type: DeviceType;\r\n label: string;\r\n width: string;\r\n icon: React.ReactNode;\r\n}\r\n\r\nexport interface Service {\r\n id: string;\r\n label: string;\r\n url: string;\r\n}\r\n\r\ninterface PreviewPageProps {\r\n defaultUrl?: string;\r\n services?: Service[];\r\n}\r\n\r\nconst DEVICES: DeviceConfig[] = [\r\n { type: 'phone', label: 'Phone', width: '375px', icon: <Smartphone className=\"w-4 h-4\" /> },\r\n { type: 'tablet', label: 'Tablet', width: '768px', icon: <Tablet className=\"w-4 h-4\" /> },\r\n { type: 'desktop', label: 'Desktop', width: '100%', icon: <Monitor className=\"w-4 h-4\" /> },\r\n];\r\n\r\nexport function PreviewPage({ defaultUrl = 'http://localhost:3000', services }: PreviewPageProps) {\r\n const setActiveView = useUIStore((state) => state.setActiveView);\r\n const { projectId: urlProjectId } = useParams<{ projectId: string }>();\r\n const selectProject = useWorkspaceStore((s) => s.selectProject);\r\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\r\n const [activeDevice, setActiveDevice] = useState<DeviceType>('desktop');\r\n const [currentUrl, setCurrentUrl] = useState(defaultUrl);\r\n const [iframeKey, setIframeKey] = useState(0);\r\n const [selectedService, setSelectedService] = useState<Service | null>(\r\n services?.[0] ?? null\r\n );\r\n\r\n useEffect(() => {\r\n setActiveView('preview');\r\n }, [setActiveView]);\r\n\r\n useEffect(() => {\r\n if (urlProjectId && urlProjectId !== storeProjectId) {\r\n selectProject(urlProjectId);\r\n }\r\n }, [urlProjectId, storeProjectId, selectProject]);\r\n\r\n useEffect(() => {\r\n if (selectedService) {\r\n setCurrentUrl(selectedService.url);\r\n }\r\n }, [selectedService]);\r\n\r\n const handleDeviceChange = useCallback((device: DeviceType) => {\r\n setActiveDevice(device);\r\n }, []);\r\n\r\n const handleRefresh = useCallback(() => {\r\n setIframeKey((prev) => prev + 1);\r\n }, []);\r\n\r\n const handleOpenNewTab = useCallback(() => {\r\n window.open(currentUrl, '_blank');\r\n }, [currentUrl]);\r\n\r\n const handleServiceSelect = useCallback((item: DropdownItem) => {\r\n const service = services?.find((s) => s.id === item.id);\r\n if (service) {\r\n setSelectedService(service);\r\n }\r\n }, [services]);\r\n\r\n const deviceWidth = DEVICES.find((d) => d.type === activeDevice)?.width ?? '100%';\r\n\r\n const serviceDropdownItems: DropdownItem[] = services?.map((s) => ({\r\n id: s.id,\r\n label: s.label,\r\n })) ?? [];\r\n\r\n return (\r\n <div className=\"h-full flex flex-col\">\r\n {/* Header */}\r\n <div className=\"p-4 border-b border-border\">\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex items-center gap-4\">\r\n <h1 className=\"text-xl font-semibold text-text-primary\">Preview</h1>\r\n <span className=\"text-sm text-text-secondary\">{currentUrl}</span>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-2\">\r\n {/* Service Selector */}\r\n {services && services.length > 0 && (\r\n <Dropdown\r\n items={serviceDropdownItems}\r\n onSelect={handleServiceSelect}\r\n trigger={selectedService?.label ?? 'Select Service'}\r\n />\r\n )}\r\n\r\n {/* Device Toggle */}\r\n <div className=\"flex items-center gap-1 border-l border-border pl-2 ml-2\">\r\n {DEVICES.map((device) => (\r\n <Button\r\n key={device.type}\r\n variant={activeDevice === device.type ? 'primary' : 'ghost'}\r\n size=\"sm\"\r\n onClick={() => handleDeviceChange(device.type)}\r\n aria-label={device.label}\r\n leftIcon={device.icon}\r\n >\r\n {device.label}\r\n </Button>\r\n ))}\r\n </div>\r\n\r\n {/* Actions */}\r\n <div className=\"flex items-center gap-1 border-l border-border pl-2 ml-2\">\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={handleRefresh}\r\n aria-label=\"Refresh\"\r\n leftIcon={<RefreshCw className=\"w-4 h-4\" />}\r\n >\r\n Refresh\r\n </Button>\r\n <Button\r\n variant=\"ghost\"\r\n size=\"sm\"\r\n onClick={handleOpenNewTab}\r\n aria-label=\"Open in new tab\"\r\n leftIcon={<ExternalLink className=\"w-4 h-4\" />}\r\n >\r\n Open in new tab\r\n </Button>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n {/* Preview Content */}\r\n <div className=\"flex-1 overflow-hidden bg-bg-tertiary p-4 flex justify-center\">\r\n {!services?.length && currentUrl === defaultUrl ? (\r\n <div className=\"flex flex-col items-center justify-center text-center\">\r\n <p className=\"text-text-secondary mb-2\">No preview configured</p>\r\n <p className=\"text-sm text-text-muted mb-4\">\r\n Configure a <code className=\"px-1 py-0.5 bg-bg-elevated rounded\">start</code> command\r\n in <code className=\"px-1 py-0.5 bg-bg-elevated rounded\">.tlc.json</code> to enable live preview.\r\n </p>\r\n <p className=\"text-sm text-text-muted\">\r\n Currently pointing to: <code className=\"px-1 py-0.5 bg-bg-elevated rounded\">{currentUrl}</code>\r\n </p>\r\n </div>\r\n ) : (\r\n <div\r\n data-testid=\"iframe-container\"\r\n className=\"h-full bg-white rounded-lg shadow-lg overflow-hidden transition-all duration-300\"\r\n style={{ width: deviceWidth, maxWidth: '100%' }}\r\n >\r\n <iframe\r\n key={iframeKey}\r\n src={currentUrl}\r\n title=\"App Preview\"\r\n className=\"w-full h-full border-0\"\r\n sandbox=\"allow-scripts allow-same-origin allow-forms allow-popups\"\r\n />\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useState, useMemo } from 'react';\r\nimport { useParams } from 'react-router-dom';\r\nimport { Play, Search, ChevronRight, ChevronDown } from 'lucide-react';\r\nimport { Card } from '../components/ui/Card';\r\nimport { Badge } from '../components/ui/Badge';\r\nimport { Button } from '../components/ui/Button';\r\nimport { Skeleton } from '../components/ui/Skeleton';\r\nimport { useTestSuite } from '../hooks';\r\nimport { useUIStore } from '../stores';\r\nimport { useWorkspaceStore } from '../stores/workspace.store';\r\n\r\nexport function TestSuitePage() {\r\n const { projectId: urlProjectId } = useParams<{ projectId: string }>();\r\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\r\n const selectProject = useWorkspaceStore((s) => s.selectProject);\r\n const setActiveView = useUIStore((s) => s.setActiveView);\r\n\r\n // URL takes precedence; sync to store\r\n const projectId = urlProjectId ?? storeProjectId ?? undefined;\r\n useEffect(() => {\r\n if (urlProjectId && urlProjectId !== storeProjectId) {\r\n selectProject(urlProjectId);\r\n }\r\n }, [urlProjectId, storeProjectId, selectProject]);\r\n\r\n useEffect(() => {\r\n setActiveView('test-suite');\r\n }, [setActiveView]);\r\n\r\n const { inventory, loading, runTests } = useTestSuite(projectId);\r\n\r\n const [expandedGroup, setExpandedGroup] = useState<string | null>(null);\r\n const [searchQuery, setSearchQuery] = useState('');\r\n const [runningTests, setRunningTests] = useState(false);\r\n\r\n // Filter and sort groups\r\n const filteredGroups = useMemo(() => {\r\n if (!inventory?.groups) return [];\r\n const groups = [...inventory.groups];\r\n\r\n // Filter by search query\r\n const filtered = searchQuery\r\n ? groups.filter((g) => g.name.toLowerCase().includes(searchQuery.toLowerCase()))\r\n : groups;\r\n\r\n // Sort by test count descending\r\n return filtered.sort((a, b) => b.testCount - a.testCount);\r\n }, [inventory?.groups, searchQuery]);\r\n\r\n const handleRunTests = async () => {\r\n setRunningTests(true);\r\n try {\r\n await runTests();\r\n } catch {\r\n // fire and forget\r\n } finally {\r\n setRunningTests(false);\r\n }\r\n };\r\n\r\n const handleToggleGroup = (groupName: string) => {\r\n setExpandedGroup((prev) => (prev === groupName ? null : groupName));\r\n };\r\n\r\n // Loading state\r\n if (loading) {\r\n return (\r\n <div className=\"p-6 space-y-6\" data-testid=\"loading-skeleton\">\r\n <Skeleton className=\"h-8 w-48\" />\r\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\r\n {[1, 2, 3].map((i) => (\r\n <Skeleton key={i} className=\"h-24\" />\r\n ))}\r\n </div>\r\n <Skeleton className=\"h-10 w-full\" />\r\n <div className=\"space-y-3\">\r\n {[1, 2, 3].map((i) => (\r\n <Skeleton key={i} className=\"h-14\" />\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n }\r\n\r\n // Empty state\r\n if (!inventory || (inventory.totalFiles === 0 && inventory.groups.length === 0)) {\r\n return (\r\n <div className=\"p-6\">\r\n <div className=\"flex items-center justify-between mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Test Suite</h1>\r\n <Button\r\n data-testid=\"run-tests-btn\"\r\n variant=\"primary\"\r\n onClick={handleRunTests}\r\n loading={runningTests}\r\n leftIcon={<Play className=\"w-4 h-4\" />}\r\n >\r\n Run Tests\r\n </Button>\r\n </div>\r\n <Card className=\"p-8\" data-testid=\"empty-state\">\r\n <div className=\"text-center\">\r\n <p className=\"text-text-secondary text-lg\">No test files found</p>\r\n <p className=\"text-text-muted text-sm mt-2\">\r\n Add test files to your project to see them here.\r\n </p>\r\n </div>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n\r\n const formatDuration = (ms: number) => {\r\n return (ms / 1000).toFixed(1);\r\n };\r\n\r\n return (\r\n <div className=\"p-6 space-y-6\">\r\n {/* Header */}\r\n <div className=\"flex items-center justify-between\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Test Suite</h1>\r\n <Button\r\n data-testid=\"run-tests-btn\"\r\n variant=\"primary\"\r\n onClick={handleRunTests}\r\n loading={runningTests}\r\n leftIcon={<Play className=\"w-4 h-4\" />}\r\n >\r\n Run Tests\r\n </Button>\r\n </div>\r\n\r\n {/* Summary Cards */}\r\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-4\">\r\n <Card className=\"p-4\">\r\n <div className=\"text-sm text-text-secondary\">Files</div>\r\n <div className=\"text-3xl font-bold text-text-primary mt-1\" data-testid=\"summary-files\">\r\n {inventory.totalFiles}\r\n </div>\r\n </Card>\r\n <Card className=\"p-4\">\r\n <div className=\"text-sm text-text-secondary\">Tests</div>\r\n <div className=\"text-3xl font-bold text-text-primary mt-1\" data-testid=\"summary-tests\">\r\n {inventory.totalTests}\r\n </div>\r\n </Card>\r\n <Card className=\"p-4\">\r\n <div className=\"text-sm text-text-secondary\">Groups</div>\r\n <div className=\"text-3xl font-bold text-text-primary mt-1\" data-testid=\"summary-groups\">\r\n {inventory.groups.length}\r\n </div>\r\n </Card>\r\n </div>\r\n\r\n {/* Last Run Results */}\r\n {inventory.lastRun && (\r\n <Card className=\"p-4\" data-testid=\"last-run\">\r\n <div className=\"flex items-center gap-3 text-sm\">\r\n <span className=\"text-text-secondary\">Last Run:</span>\r\n <Badge variant=\"success\">{inventory.lastRun.passed} passed</Badge>\r\n <Badge variant=\"danger\">{inventory.lastRun.failed} failed</Badge>\r\n <span className=\"text-text-muted\">\r\n ({formatDuration(inventory.lastRun.duration)}s)\r\n </span>\r\n </div>\r\n </Card>\r\n )}\r\n\r\n {/* Search */}\r\n <div className=\"relative\">\r\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted\" />\r\n <input\r\n data-testid=\"search-input\"\r\n type=\"text\"\r\n placeholder=\"Search test files...\"\r\n value={searchQuery}\r\n onChange={(e) => setSearchQuery(e.target.value)}\r\n className=\"w-full pl-10 pr-4 py-2 bg-bg-secondary border border-border rounded-lg text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-primary\"\r\n />\r\n </div>\r\n\r\n {/* Groups */}\r\n <div className=\"space-y-2\">\r\n {filteredGroups.map((group) => {\r\n const isExpanded = expandedGroup === group.name;\r\n return (\r\n <div key={group.name}>\r\n <div\r\n data-testid=\"group-row\"\r\n className=\"flex items-center justify-between p-3 bg-bg-secondary rounded-lg cursor-pointer hover:bg-bg-tertiary transition-colors\"\r\n onClick={() => handleToggleGroup(group.name)}\r\n >\r\n <div className=\"flex items-center gap-2\">\r\n {isExpanded ? (\r\n <ChevronDown className=\"w-4 h-4 text-text-muted\" />\r\n ) : (\r\n <ChevronRight className=\"w-4 h-4 text-text-muted\" />\r\n )}\r\n <span className=\"font-medium text-text-primary\" data-testid=\"group-name\">\r\n {group.name}\r\n </span>\r\n </div>\r\n <div className=\"flex items-center gap-4 text-sm text-text-secondary\">\r\n <span data-testid=\"group-files\">{group.fileCount} files</span>\r\n <span data-testid=\"group-tests\">{group.testCount} tests</span>\r\n </div>\r\n </div>\r\n\r\n {/* Expanded file list */}\r\n {isExpanded && (\r\n <div className=\"ml-6 mt-1 space-y-1\">\r\n {group.files.map((file) => (\r\n <div\r\n key={file.relativePath}\r\n data-testid=\"file-row\"\r\n className=\"flex items-center justify-between p-2 text-sm rounded hover:bg-bg-tertiary\"\r\n >\r\n <span className=\"text-text-secondary\" data-testid=\"file-name\">\r\n {file.relativePath}\r\n </span>\r\n <span className=\"text-text-muted\" data-testid=\"file-tests\">\r\n {file.testCount} tests\r\n </span>\r\n </div>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n })}\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { useCallback, useState } from 'react';\nimport { api } from '../api';\nimport type { Bug } from '../api/endpoints';\n\nexport function useBugs(projectId?: string) {\n const [bugs, setBugs] = useState<Bug[]>([]);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const fetchBugs = useCallback(async () => {\n if (!projectId) {\n setBugs([]);\n return;\n }\n setLoading(true);\n setError(null);\n try {\n const data = await api.projects.getBugs(projectId);\n setBugs(Array.isArray(data) ? data : []);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to fetch bugs');\n setBugs([]);\n } finally {\n setLoading(false);\n }\n }, [projectId]);\n\n const createBug = useCallback(\n async (bugData: Record<string, unknown>) => {\n if (!projectId) throw new Error('No project selected');\n const result = await api.projects.createBug(projectId, bugData);\n // Refresh the list\n await fetchBugs();\n return result;\n },\n [projectId, fetchBugs]\n );\n\n const updateBugStatus = useCallback(\n async (bugId: string, status: string) => {\n if (!projectId) throw new Error('No project selected');\n const result = await api.projects.updateBugStatus(projectId, bugId, status);\n await fetchBugs();\n return result;\n },\n [projectId, fetchBugs]\n );\n\n return { bugs, loading, error, fetchBugs, createBug, updateBugStatus };\n}\n","import { useEffect, useState, useMemo } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { Bug, Plus, ChevronDown, ChevronRight, ExternalLink } from 'lucide-react';\nimport { Card } from '../components/ui/Card';\nimport { Badge } from '../components/ui/Badge';\nimport { Button } from '../components/ui/Button';\nimport { Skeleton } from '../components/ui/Skeleton';\nimport { useUIStore } from '../stores';\nimport { useWorkspaceStore } from '../stores/workspace.store';\nimport { useBugs } from '../hooks/useBugs';\n\ntype SeverityLevel = 'critical' | 'high' | 'medium' | 'low';\ntype StatusFilter = 'all' | 'open' | 'fixed' | 'closed';\n\nconst SEVERITY_COLORS: Record<SeverityLevel, 'danger' | 'warning' | 'neutral' | 'info'> = {\n critical: 'danger',\n high: 'warning',\n medium: 'neutral',\n low: 'info',\n};\n\nexport function BugsPage() {\n const { projectId: urlProjectId } = useParams<{ projectId: string }>();\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\n const selectProject = useWorkspaceStore((s) => s.selectProject);\n const setActiveView = useUIStore((s) => s.setActiveView);\n\n const projectId = urlProjectId ?? storeProjectId ?? undefined;\n useEffect(() => {\n if (urlProjectId && urlProjectId !== storeProjectId) {\n selectProject(urlProjectId);\n }\n }, [urlProjectId, storeProjectId, selectProject]);\n\n const { bugs, loading, error, fetchBugs, createBug, updateBugStatus } = useBugs(projectId);\n\n const [statusFilter, setStatusFilter] = useState<StatusFilter>('all');\n const [expandedBug, setExpandedBug] = useState<string | null>(null);\n const [showForm, setShowForm] = useState(false);\n const [formData, setFormData] = useState({ title: '', severity: 'medium' as SeverityLevel, description: '', url: '' });\n const [submitting, setSubmitting] = useState(false);\n\n useEffect(() => {\n setActiveView('bugs');\n fetchBugs();\n }, [setActiveView, fetchBugs, projectId]);\n\n const filteredBugs = useMemo(() => {\n if (statusFilter === 'all') return bugs;\n return bugs.filter((b) => b.status === statusFilter);\n }, [bugs, statusFilter]);\n\n const openCount = useMemo(() => bugs.filter((b) => b.status === 'open').length, [bugs]);\n\n const handleSubmit = async (e: React.FormEvent) => {\n e.preventDefault();\n if (!formData.title || !formData.description) return;\n setSubmitting(true);\n try {\n await createBug({\n title: formData.title,\n severity: formData.severity,\n description: formData.description,\n url: formData.url || undefined,\n });\n setFormData({ title: '', severity: 'medium', description: '', url: '' });\n setShowForm(false);\n } catch {\n // Error handled by hook\n } finally {\n setSubmitting(false);\n }\n };\n\n const handleStatusChange = async (bugId: string, newStatus: string) => {\n try {\n await updateBugStatus(bugId, newStatus);\n } catch {\n // Error handled by hook\n }\n };\n\n if (loading) {\n return (\n <div className=\"p-6 space-y-6\" data-testid=\"loading\">\n <Skeleton className=\"h-8 w-48\" />\n <Skeleton className=\"h-10 w-full\" />\n {[1, 2, 3].map((i) => <Skeleton key={i} className=\"h-16\" />)}\n </div>\n );\n }\n\n return (\n <div className=\"p-6 space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <h1 className=\"text-2xl font-semibold text-text-primary\">Bugs</h1>\n {openCount > 0 && (\n <Badge data-testid=\"open-count\" variant=\"danger\">{openCount} open</Badge>\n )}\n </div>\n <Button\n data-testid=\"report-bug-btn\"\n variant=\"primary\"\n onClick={() => setShowForm(!showForm)}\n leftIcon={<Plus className=\"w-4 h-4\" />}\n >\n Report Bug\n </Button>\n </div>\n\n {error && (\n <div className=\"text-danger text-sm p-3 bg-danger/10 rounded-lg\">{error}</div>\n )}\n\n {/* Bug Report Form */}\n {showForm && (\n <Card className=\"p-6\" data-testid=\"bug-form\">\n <h2 className=\"text-lg font-medium text-text-primary mb-4\">Report a Bug</h2>\n <form onSubmit={handleSubmit} className=\"space-y-4\">\n <div>\n <label htmlFor=\"bug-title\" className=\"block text-sm font-medium text-text-secondary mb-1\">Title *</label>\n <input\n id=\"bug-title\"\n data-testid=\"bug-title-input\"\n type=\"text\"\n required\n value={formData.title}\n onChange={(e) => setFormData({ ...formData, title: e.target.value })}\n className=\"w-full px-3 py-2 bg-bg-secondary border border-border rounded-lg text-text-primary focus:outline-none focus:ring-2 focus:ring-primary\"\n placeholder=\"Brief summary of the bug\"\n />\n </div>\n <div>\n <label htmlFor=\"bug-severity\" className=\"block text-sm font-medium text-text-secondary mb-1\">Severity *</label>\n <select\n id=\"bug-severity\"\n data-testid=\"bug-severity-select\"\n value={formData.severity}\n onChange={(e) => setFormData({ ...formData, severity: e.target.value as SeverityLevel })}\n className=\"w-full px-3 py-2 bg-bg-secondary border border-border rounded-lg text-text-primary focus:outline-none focus:ring-2 focus:ring-primary\"\n >\n <option value=\"critical\">Critical</option>\n <option value=\"high\">High</option>\n <option value=\"medium\">Medium</option>\n <option value=\"low\">Low</option>\n </select>\n </div>\n <div>\n <label htmlFor=\"bug-description\" className=\"block text-sm font-medium text-text-secondary mb-1\">Steps to Reproduce *</label>\n <textarea\n id=\"bug-description\"\n data-testid=\"bug-description-input\"\n required\n rows={4}\n value={formData.description}\n onChange={(e) => setFormData({ ...formData, description: e.target.value })}\n className=\"w-full px-3 py-2 bg-bg-secondary border border-border rounded-lg text-text-primary focus:outline-none focus:ring-2 focus:ring-primary\"\n placeholder=\"1. Go to...\\n2. Click on...\\n3. Observe...\"\n />\n </div>\n <div>\n <label htmlFor=\"bug-url\" className=\"block text-sm font-medium text-text-secondary mb-1\">URL (optional)</label>\n <input\n id=\"bug-url\"\n data-testid=\"bug-url-input\"\n type=\"url\"\n value={formData.url}\n onChange={(e) => setFormData({ ...formData, url: e.target.value })}\n className=\"w-full px-3 py-2 bg-bg-secondary border border-border rounded-lg text-text-primary focus:outline-none focus:ring-2 focus:ring-primary\"\n placeholder=\"http://localhost:3000/page-with-bug\"\n />\n </div>\n <div className=\"flex items-center gap-3\">\n <Button type=\"submit\" variant=\"primary\" loading={submitting} disabled={!formData.title || !formData.description}>\n Submit Bug Report\n </Button>\n <Button type=\"button\" variant=\"ghost\" onClick={() => setShowForm(false)}>\n Cancel\n </Button>\n </div>\n </form>\n </Card>\n )}\n\n {/* Filter Tabs */}\n <div className=\"flex gap-2\" data-testid=\"status-filters\">\n {(['all', 'open', 'fixed', 'closed'] as const).map((s) => (\n <button\n key={s}\n data-testid={`filter-${s}`}\n className={`px-3 py-1.5 text-sm rounded-md transition-colors ${\n statusFilter === s\n ? 'bg-accent text-white'\n : 'text-text-secondary hover:bg-bg-tertiary'\n }`}\n onClick={() => setStatusFilter(s)}\n >\n {s.charAt(0).toUpperCase() + s.slice(1)}\n </button>\n ))}\n </div>\n\n {/* Bug List */}\n {filteredBugs.length === 0 ? (\n <Card className=\"p-8\" data-testid=\"empty-state\">\n <div className=\"text-center\">\n <Bug className=\"w-12 h-12 mx-auto text-text-muted mb-3\" />\n <p className=\"text-text-secondary\">\n {statusFilter === 'all' ? 'No bugs reported yet' : `No ${statusFilter} bugs`}\n </p>\n <Button\n variant=\"ghost\"\n className=\"mt-3\"\n onClick={() => setShowForm(true)}\n >\n Report a Bug\n </Button>\n </div>\n </Card>\n ) : (\n <div className=\"space-y-2\">\n {filteredBugs.map((bug) => {\n const isExpanded = expandedBug === bug.id;\n const severity = (bug.severity || 'medium') as SeverityLevel;\n return (\n <div key={bug.id} data-testid=\"bug-card\">\n <div\n className=\"flex items-center justify-between p-3 bg-bg-secondary rounded-lg cursor-pointer hover:bg-bg-tertiary transition-colors\"\n onClick={() => setExpandedBug(isExpanded ? null : bug.id)}\n >\n <div className=\"flex items-center gap-3\">\n {isExpanded ? <ChevronDown className=\"w-4 h-4 text-text-muted\" /> : <ChevronRight className=\"w-4 h-4 text-text-muted\" />}\n <span className=\"font-mono text-xs text-text-muted\" data-testid=\"bug-id\">{bug.id}</span>\n <span className=\"font-medium text-text-primary\" data-testid=\"bug-title\">{bug.description || bug.id}</span>\n <Badge variant={SEVERITY_COLORS[severity]} size=\"sm\" data-testid=\"bug-severity\">\n {severity}\n </Badge>\n </div>\n <Badge\n variant={bug.status === 'open' ? 'warning' : bug.status === 'fixed' ? 'success' : 'neutral'}\n size=\"sm\"\n data-testid=\"bug-status\"\n >\n {bug.status}\n </Badge>\n </div>\n\n {isExpanded && (\n <div className=\"ml-10 mt-2 mb-3 p-4 bg-bg-tertiary rounded-lg space-y-3\">\n <p className=\"text-sm text-text-secondary whitespace-pre-line\">{bug.description}</p>\n {bug.createdAt && (\n <p className=\"text-xs text-text-muted\">Reported: {bug.createdAt}</p>\n )}\n <div className=\"flex items-center gap-2\">\n {bug.status === 'open' && (\n <>\n <Button size=\"sm\" variant=\"primary\" onClick={() => handleStatusChange(bug.id, 'fixed')}>\n Mark Fixed\n </Button>\n <Button size=\"sm\" variant=\"ghost\" onClick={() => handleStatusChange(bug.id, 'closed')}>\n Close\n </Button>\n </>\n )}\n {bug.status === 'fixed' && (\n <Button size=\"sm\" variant=\"ghost\" onClick={() => handleStatusChange(bug.id, 'closed')}>\n Close\n </Button>\n )}\n {bug.status === 'closed' && (\n <Button size=\"sm\" variant=\"ghost\" onClick={() => handleStatusChange(bug.id, 'open')}>\n Reopen\n </Button>\n )}\n <Button\n size=\"sm\"\n variant=\"ghost\"\n leftIcon={<ExternalLink className=\"w-3 h-3\" />}\n onClick={() => {\n navigator.clipboard.writeText(`tlc://discuss?bug=${bug.id}`);\n }}\n >\n Discuss in CLI\n </Button>\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n )}\n </div>\n );\n}\n","import { useEffect, useState, useMemo } from 'react';\nimport { useParams, useNavigate } from 'react-router-dom';\nimport { ChevronDown, ChevronRight, CheckCircle2, Circle, Clock } from 'lucide-react';\nimport { Card } from '../components/ui/Card';\nimport { Badge } from '../components/ui/Badge';\nimport { Button } from '../components/ui/Button';\nimport { Skeleton } from '../components/ui/Skeleton';\nimport { useRoadmap } from '../hooks';\nimport { useUIStore } from '../stores';\nimport { useWorkspaceStore } from '../stores/workspace.store';\nimport type { RoadmapPhase } from '../api/endpoints';\n\nconst statusIcon = (status: string) => {\n if (status === 'done') return <CheckCircle2 className=\"w-4 h-4 text-success\" />;\n if (status === 'in_progress') return <Clock className=\"w-4 h-4 text-primary\" />;\n return <Circle className=\"w-4 h-4 text-text-muted\" />;\n};\n\nconst statusVariant = (status: string): 'success' | 'primary' | 'neutral' => {\n if (status === 'done') return 'success';\n if (status === 'in_progress') return 'primary';\n return 'neutral';\n};\n\nexport function RoadmapPage() {\n const { projectId: urlProjectId } = useParams<{ projectId: string }>();\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\n const selectProject = useWorkspaceStore((s) => s.selectProject);\n const setActiveView = useUIStore((s) => s.setActiveView);\n\n const navigate = useNavigate();\n const projectId = urlProjectId ?? storeProjectId ?? undefined;\n useEffect(() => {\n if (urlProjectId && urlProjectId !== storeProjectId) {\n selectProject(urlProjectId);\n }\n }, [urlProjectId, storeProjectId, selectProject]);\n\n const { roadmap, loading } = useRoadmap(projectId);\n const [expandedPhases, setExpandedPhases] = useState<Set<number>>(new Set());\n const [collapseAll, setCollapseAll] = useState(false);\n\n useEffect(() => {\n setActiveView('roadmap');\n }, [setActiveView]);\n\n // Auto-expand current phase\n useEffect(() => {\n if (roadmap?.currentPhase) {\n setExpandedPhases(new Set([roadmap.currentPhase.number]));\n }\n }, [roadmap?.currentPhase]);\n\n const togglePhase = (num: number) => {\n setExpandedPhases((prev) => {\n const next = new Set(prev);\n if (next.has(num)) next.delete(num);\n else next.add(num);\n return next;\n });\n };\n\n const handleCollapseAll = () => {\n if (collapseAll) {\n // Expand all\n const allNums = new Set<number>();\n roadmap?.milestones.forEach((m) => m.phases.forEach((p) => allNums.add(p.number)));\n setExpandedPhases(allNums);\n } else {\n setExpandedPhases(new Set());\n }\n setCollapseAll(!collapseAll);\n };\n\n const progressPercent = useMemo(() => {\n if (!roadmap?.totalPhases) return 0;\n return Math.round((roadmap.completedPhases / roadmap.totalPhases) * 100);\n }, [roadmap]);\n\n if (loading) {\n return (\n <div className=\"p-6 space-y-6\" data-testid=\"loading\">\n <Skeleton className=\"h-8 w-48\" />\n <Skeleton className=\"h-4 w-full\" />\n {[1, 2, 3, 4].map((i) => <Skeleton key={i} className=\"h-12\" />)}\n </div>\n );\n }\n\n if (!roadmap || roadmap.milestones.length === 0) {\n return (\n <div className=\"p-6\">\n <Card className=\"p-8\" data-testid=\"empty-state\">\n <div className=\"text-center\">\n <p className=\"text-text-secondary\">No roadmap data available</p>\n <p className=\"text-sm text-text-muted mt-2\">\n This project may not have a ROADMAP.md file configured.\n </p>\n </div>\n </Card>\n </div>\n );\n }\n\n return (\n <div className=\"p-6 space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div>\n <h1 className=\"text-2xl font-semibold text-text-primary\">Roadmap</h1>\n <p className=\"text-sm text-text-secondary mt-1\">\n {roadmap.completedPhases}/{roadmap.totalPhases} phases complete ({progressPercent}%)\n </p>\n </div>\n <Button variant=\"ghost\" onClick={handleCollapseAll} data-testid=\"collapse-all-btn\">\n {collapseAll ? 'Expand All' : 'Collapse All'}\n </Button>\n </div>\n\n {/* Progress Bar */}\n <div className=\"w-full h-2 bg-bg-tertiary rounded-full overflow-hidden\">\n <div\n className=\"h-full bg-success rounded-full transition-all\"\n style={{ width: `${progressPercent}%` }}\n data-testid=\"progress-bar\"\n />\n </div>\n\n {/* Milestones */}\n {roadmap.milestones.map((milestone) => (\n <div key={milestone.name}>\n <h2\n data-testid=\"milestone-header\"\n className=\"text-sm font-bold text-text-secondary uppercase tracking-wider mb-3 mt-6\"\n >\n {milestone.name}\n </h2>\n\n <div className=\"space-y-1\">\n {milestone.phases.map((phase: RoadmapPhase) => {\n const isExpanded = expandedPhases.has(phase.number);\n const isCurrent = roadmap.currentPhase?.number === phase.number;\n const progress = phase.taskCount > 0\n ? Math.round((phase.completedTaskCount / phase.taskCount) * 100)\n : 0;\n\n return (\n <div key={phase.number}>\n {/* Phase Row */}\n <div\n data-testid=\"phase-row\"\n className={`flex items-center justify-between p-3 rounded-lg cursor-pointer hover:bg-bg-tertiary transition-colors ${\n isCurrent ? 'bg-primary/5 border border-primary/20' : 'bg-bg-secondary'\n }`}\n onClick={() => {\n const base = projectId ? `/projects/${projectId}` : '';\n navigate(`${base}/phases/${phase.number}`);\n }}\n >\n <div className=\"flex items-center gap-3\">\n <span\n onClick={(e) => { e.stopPropagation(); togglePhase(phase.number); }}\n className=\"cursor-pointer\"\n data-testid=\"phase-chevron\"\n >\n {isExpanded ? <ChevronDown className=\"w-4 h-4 text-text-muted\" /> : <ChevronRight className=\"w-4 h-4 text-text-muted\" />}\n </span>\n {statusIcon(phase.status)}\n <span className=\"font-mono text-sm text-text-muted\">{phase.number}.</span>\n <span className=\"text-sm font-medium text-text-primary\">{phase.name}</span>\n <Badge variant={statusVariant(phase.status)} size=\"sm\" data-testid=\"phase-status\">\n {phase.status === 'in_progress' ? 'in progress' : phase.status}\n </Badge>\n {phase.verified && (\n <Badge variant=\"success\" size=\"sm\">verified</Badge>\n )}\n </div>\n <div className=\"flex items-center gap-4 text-xs text-text-muted\">\n <span data-testid=\"phase-tasks\">{phase.completedTaskCount}/{phase.taskCount} tasks</span>\n {phase.hasTests && <span data-testid=\"phase-tests\">{phase.testCount} tests</span>}\n {/* Mini progress bar */}\n <div className=\"w-16 h-1.5 bg-bg-tertiary rounded-full overflow-hidden\">\n <div className=\"h-full bg-success rounded-full\" style={{ width: `${progress}%` }} />\n </div>\n </div>\n </div>\n\n {/* Phase Detail */}\n {isExpanded && (\n <div className=\"ml-10 mt-2 mb-3 p-4 bg-bg-tertiary rounded-lg space-y-4\" data-testid=\"phase-detail\">\n {/* Goal */}\n {phase.goal && (\n <div>\n <h4 className=\"text-xs font-semibold text-text-secondary uppercase mb-1\">Goal</h4>\n <p data-testid=\"phase-goal\" className=\"text-sm text-text-primary\">{phase.goal}</p>\n </div>\n )}\n\n {/* Deliverables */}\n {phase.deliverables && phase.deliverables.length > 0 && (\n <div>\n <h4 className=\"text-xs font-semibold text-text-secondary uppercase mb-1\">Deliverables</h4>\n <ul data-testid=\"phase-deliverables\" className=\"space-y-1\">\n {phase.deliverables.map((d, i) => (\n <li key={i} className=\"flex items-center gap-2 text-sm text-text-secondary\">\n {d.done ? (\n <CheckCircle2 className=\"w-3.5 h-3.5 text-success shrink-0\" />\n ) : (\n <Circle className=\"w-3.5 h-3.5 text-text-muted shrink-0\" />\n )}\n <span className={d.done ? 'line-through opacity-60' : ''}>{d.text}</span>\n </li>\n ))}\n </ul>\n </div>\n )}\n\n {/* Task Count Summary */}\n <div className=\"flex items-center gap-4 text-xs text-text-muted pt-2 border-t border-border\">\n <span>{phase.taskCount} tasks total</span>\n <span>{phase.completedTaskCount} completed</span>\n {phase.hasTests && <span>{phase.testCount} tests / {phase.testFileCount} files</span>}\n </div>\n </div>\n )}\n </div>\n );\n })}\n </div>\n </div>\n ))}\n </div>\n );\n}\n","import { NavLink, useLocation } from 'react-router-dom';\n\nexport interface Tab {\n id: string;\n label: string;\n path: string;\n}\n\ninterface TabBarProps {\n tabs: Tab[];\n basePath: string;\n}\n\nexport function TabBar({ tabs, basePath }: TabBarProps) {\n const location = useLocation();\n\n return (\n <nav\n data-testid=\"tab-bar\"\n className=\"flex gap-1 px-6 py-2 border-b border-border bg-bg-secondary overflow-x-auto sticky top-0 z-10\"\n role=\"tablist\"\n >\n {tabs.map((tab) => {\n const fullPath = tab.path === '' ? basePath : `${basePath}/${tab.path}`;\n const isActive =\n tab.path === ''\n ? location.pathname === basePath || location.pathname === basePath + '/'\n : location.pathname.startsWith(fullPath);\n return (\n <NavLink\n key={tab.id}\n to={fullPath}\n role=\"tab\"\n aria-selected={isActive}\n data-testid={`tab-${tab.id}`}\n className={`px-4 py-2 text-sm font-medium rounded-md whitespace-nowrap transition-colors ${\n isActive\n ? 'bg-accent text-white'\n : 'text-text-secondary hover:bg-bg-tertiary hover:text-text-primary'\n }`}\n >\n {tab.label}\n </NavLink>\n );\n })}\n </nav>\n );\n}\n","import { useEffect } from 'react';\nimport { useParams, Outlet, useNavigate } from 'react-router-dom';\nimport { TabBar, type Tab } from '../components/layout/TabBar';\nimport { useWorkspaceStore } from '../stores/workspace.store';\n\nconst PROJECT_TABS: Tab[] = [\n { id: 'overview', label: 'Overview', path: '' },\n { id: 'roadmap', label: 'Roadmap', path: 'roadmap' },\n { id: 'tasks', label: 'Tasks', path: 'tasks' },\n { id: 'tests', label: 'Tests', path: 'tests' },\n { id: 'bugs', label: 'Bugs', path: 'bugs' },\n { id: 'logs', label: 'Logs', path: 'logs' },\n { id: 'memory', label: 'Memory', path: 'memory' },\n { id: 'info', label: 'Info', path: 'info' },\n];\n\nexport function ProjectDetailPage() {\n const { projectId } = useParams<{ projectId: string }>();\n const selectProject = useWorkspaceStore((s) => s.selectProject);\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\n const navigate = useNavigate();\n\n // Sync URL project with store\n useEffect(() => {\n if (projectId && projectId !== storeProjectId) {\n selectProject(projectId);\n }\n }, [projectId, storeProjectId, selectProject]);\n\n // If no projectId, redirect to projects list\n useEffect(() => {\n if (!projectId) {\n navigate('/projects');\n }\n }, [projectId, navigate]);\n\n if (!projectId) return null;\n\n const basePath = `/projects/${projectId}`;\n\n return (\n <div className=\"flex flex-col h-full\" data-testid=\"project-detail\">\n <TabBar tabs={PROJECT_TABS} basePath={basePath} />\n <div className=\"flex-1 overflow-auto\">\n <Outlet />\n </div>\n </div>\n );\n}\n","/**\r\n * Client Dashboard - Non-technical view for project stakeholders\r\n * Shows progress, status updates, and bug submission without developer jargon\r\n */\r\nimport { useState, type FormEvent } from 'react';\r\nimport { Card, CardHeader } from '../components/ui/Card';\r\nimport { Button } from '../components/ui/Button';\r\n\r\ninterface Project {\r\n name: string;\r\n progress: number;\r\n currentPhase: string;\r\n totalPhases: number;\r\n completedPhases: number;\r\n}\r\n\r\ninterface StatusUpdate {\r\n date: string;\r\n message: string;\r\n}\r\n\r\ninterface BugReport {\r\n title: string;\r\n description: string;\r\n}\r\n\r\ninterface ClientDashboardProps {\r\n project?: Project;\r\n updates?: StatusUpdate[];\r\n loading?: boolean;\r\n error?: string;\r\n onBugSubmit?: (bug: BugReport) => Promise<{ success: boolean }>;\r\n}\r\n\r\nexport function ClientDashboard({\r\n project,\r\n updates = [],\r\n loading = false,\r\n error,\r\n onBugSubmit,\r\n}: ClientDashboardProps) {\r\n const [bugTitle, setBugTitle] = useState('');\r\n const [bugDescription, setBugDescription] = useState('');\r\n const [submitting, setSubmitting] = useState(false);\r\n\r\n if (loading) {\r\n return (\r\n <div className=\"flex items-center justify-center min-h-[400px]\">\r\n <p className=\"text-text-muted\">Loading project details...</p>\r\n </div>\r\n );\r\n }\r\n\r\n if (error) {\r\n return (\r\n <div className=\"flex items-center justify-center min-h-[400px]\">\r\n <Card status=\"error\" className=\"max-w-md\">\r\n <p className=\"text-error\">{error}</p>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n\r\n if (!project) {\r\n return (\r\n <div className=\"flex items-center justify-center min-h-[400px]\">\r\n <p className=\"text-text-muted\">No project data available</p>\r\n </div>\r\n );\r\n }\r\n\r\n const handleBugSubmit = async (e: FormEvent) => {\r\n e.preventDefault();\r\n if (!onBugSubmit || !bugTitle || !bugDescription) return;\r\n\r\n setSubmitting(true);\r\n try {\r\n await onBugSubmit({ title: bugTitle, description: bugDescription });\r\n setBugTitle('');\r\n setBugDescription('');\r\n } finally {\r\n setSubmitting(false);\r\n }\r\n };\r\n\r\n return (\r\n <div className=\"space-y-6 p-6\">\r\n {/* Project Header */}\r\n <div>\r\n <h1 className=\"text-2xl font-bold text-text-primary\">{project.name}</h1>\r\n <p className=\"text-text-secondary mt-1\">Project Overview</p>\r\n </div>\r\n\r\n {/* Progress Section */}\r\n <Card>\r\n <CardHeader>\r\n <h2 className=\"text-lg font-semibold text-text-primary\">Overall Progress</h2>\r\n </CardHeader>\r\n <div className=\"space-y-4\">\r\n <div className=\"flex items-center justify-between\">\r\n <span className=\"text-text-secondary\">Completion</span>\r\n <span className=\"text-xl font-bold text-text-primary\">{project.progress}%</span>\r\n </div>\r\n <div\r\n role=\"progressbar\"\r\n aria-valuenow={project.progress}\r\n aria-valuemin={0}\r\n aria-valuemax={100}\r\n className=\"h-3 bg-bg-tertiary rounded-full overflow-hidden\"\r\n >\r\n <div\r\n className=\"h-full bg-success rounded-full transition-all duration-300\"\r\n style={{ width: `${project.progress}%` }}\r\n />\r\n </div>\r\n </div>\r\n </Card>\r\n\r\n {/* Phase Progress */}\r\n <Card>\r\n <CardHeader>\r\n <h2 className=\"text-lg font-semibold text-text-primary\">Phase Progress</h2>\r\n </CardHeader>\r\n <div className=\"space-y-4\">\r\n <p className=\"text-text-primary font-medium\">{project.currentPhase}</p>\r\n <p className=\"text-text-secondary\">\r\n {project.completedPhases} of {project.totalPhases} phases complete\r\n </p>\r\n <div\r\n className=\"h-2 bg-bg-tertiary rounded-full overflow-hidden\"\r\n aria-hidden=\"true\"\r\n >\r\n <div\r\n className=\"h-full bg-info rounded-full transition-all duration-300\"\r\n style={{ width: `${(project.completedPhases / project.totalPhases) * 100}%` }}\r\n />\r\n </div>\r\n </div>\r\n </Card>\r\n\r\n {/* Status Updates */}\r\n {updates.length > 0 && (\r\n <Card>\r\n <CardHeader>\r\n <h2 className=\"text-lg font-semibold text-text-primary\">Recent Updates</h2>\r\n </CardHeader>\r\n <ul className=\"space-y-3\">\r\n {updates.map((update, index) => (\r\n <li key={index} className=\"flex items-start gap-3\">\r\n <span className=\"text-text-muted text-sm whitespace-nowrap\">{update.date}</span>\r\n <span className=\"text-text-primary\">{update.message}</span>\r\n </li>\r\n ))}\r\n </ul>\r\n </Card>\r\n )}\r\n\r\n {/* Bug Report Form */}\r\n <Card>\r\n <CardHeader>\r\n <h2 className=\"text-lg font-semibold text-text-primary\">Report an Issue</h2>\r\n </CardHeader>\r\n <form onSubmit={handleBugSubmit} className=\"space-y-4\">\r\n <div>\r\n <label htmlFor=\"bug-title\" className=\"block text-sm font-medium text-text-secondary mb-1.5\">\r\n Title\r\n </label>\r\n <input\r\n id=\"bug-title\"\r\n type=\"text\"\r\n value={bugTitle}\r\n onChange={(e) => setBugTitle(e.target.value)}\r\n className=\"input w-full\"\r\n placeholder=\"Brief summary of the issue\"\r\n />\r\n </div>\r\n <div>\r\n <label htmlFor=\"bug-description\" className=\"block text-sm font-medium text-text-secondary mb-1.5\">\r\n Description\r\n </label>\r\n <textarea\r\n id=\"bug-description\"\r\n value={bugDescription}\r\n onChange={(e) => setBugDescription(e.target.value)}\r\n className=\"input w-full min-h-[100px]\"\r\n placeholder=\"Please describe what happened and what you expected\"\r\n />\r\n </div>\r\n <Button type=\"submit\" loading={submitting} disabled={!bugTitle || !bugDescription}>\r\n Submit Issue\r\n </Button>\r\n </form>\r\n </Card>\r\n </div>\r\n );\r\n}\r\n","import { useState, useCallback, useEffect } from 'react';\nimport { api } from '../api';\nimport type { MemoryDecision, MemoryGotcha, MemoryStats } from '../api/endpoints';\n\nexport function useMemory(projectId?: string) {\n const [decisions, setDecisions] = useState<MemoryDecision[]>([]);\n const [gotchas, setGotchas] = useState<MemoryGotcha[]>([]);\n const [stats, setStats] = useState<MemoryStats | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const fetchMemory = useCallback(async () => {\n if (!projectId) {\n setDecisions([]);\n setGotchas([]);\n setStats(null);\n return;\n }\n setLoading(true);\n setError(null);\n try {\n const [d, g, s] = await Promise.all([\n api.projects.getMemoryDecisions(projectId),\n api.projects.getMemoryGotchas(projectId),\n api.projects.getMemoryStats(projectId),\n ]);\n setDecisions(d);\n setGotchas(g);\n setStats(s);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to fetch memory');\n } finally {\n setLoading(false);\n }\n }, [projectId]);\n\n useEffect(() => {\n fetchMemory();\n }, [fetchMemory]);\n\n return { decisions, gotchas, stats, loading, error, refresh: fetchMemory };\n}\n","import { useState, useMemo, useEffect, useRef } from 'react';\nimport type { MemoryDecision, MemoryGotcha } from '../api/endpoints';\n\nexport function useMemorySearch(\n decisions: MemoryDecision[],\n gotchas: MemoryGotcha[],\n debounceMs = 300\n) {\n const [query, setQuery] = useState('');\n const [debouncedQuery, setDebouncedQuery] = useState('');\n const timerRef = useRef<ReturnType<typeof setTimeout> | null>(null);\n\n useEffect(() => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n timerRef.current = setTimeout(() => {\n setDebouncedQuery(query);\n }, debounceMs);\n return () => {\n if (timerRef.current) {\n clearTimeout(timerRef.current);\n }\n };\n }, [query, debounceMs]);\n\n const filteredDecisions = useMemo(() => {\n if (!debouncedQuery) return decisions;\n const q = debouncedQuery.toLowerCase();\n return decisions.filter(\n (d) => d.text.toLowerCase().includes(q) || d.context?.toLowerCase().includes(q)\n );\n }, [decisions, debouncedQuery]);\n\n const filteredGotchas = useMemo(() => {\n if (!debouncedQuery) return gotchas;\n const q = debouncedQuery.toLowerCase();\n return gotchas.filter(\n (g) => g.text.toLowerCase().includes(q) || g.context?.toLowerCase().includes(q)\n );\n }, [gotchas, debouncedQuery]);\n\n return { query, setQuery, filteredDecisions, filteredGotchas };\n}\n","import { useEffect } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { Brain, Lightbulb, AlertTriangle, Search } from 'lucide-react';\nimport { Card } from '../components/ui/Card';\nimport { Badge } from '../components/ui/Badge';\nimport { Skeleton } from '../components/ui/Skeleton';\nimport { useUIStore } from '../stores';\nimport { useWorkspaceStore } from '../stores/workspace.store';\nimport { useMemory } from '../hooks/useMemory';\nimport { useMemorySearch } from '../hooks/useMemorySearch';\n\nexport function MemoryPage() {\n const { projectId: urlProjectId } = useParams<{ projectId: string }>();\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\n const selectProject = useWorkspaceStore((s) => s.selectProject);\n const setActiveView = useUIStore((s) => s.setActiveView);\n\n const projectId = urlProjectId ?? storeProjectId ?? undefined;\n useEffect(() => {\n if (urlProjectId && urlProjectId !== storeProjectId) {\n selectProject(urlProjectId);\n }\n }, [urlProjectId, storeProjectId, selectProject]);\n\n const { decisions, gotchas, stats, loading, error } = useMemory(projectId);\n const { query, setQuery, filteredDecisions, filteredGotchas } = useMemorySearch(decisions, gotchas);\n\n useEffect(() => {\n setActiveView('memory');\n }, [setActiveView]);\n\n if (loading) {\n return (\n <div className=\"p-6 space-y-6\" data-testid=\"loading\">\n <Skeleton className=\"h-8 w-48\" />\n {[1, 2, 3].map((i) => <Skeleton key={i} className=\"h-20\" />)}\n </div>\n );\n }\n\n const isEmpty = decisions.length === 0 && gotchas.length === 0;\n\n return (\n <div className=\"p-6 space-y-6\">\n {/* Header */}\n <div className=\"flex items-center justify-between\">\n <div className=\"flex items-center gap-3\">\n <Brain className=\"w-6 h-6 text-accent\" />\n <h1 className=\"text-2xl font-semibold text-text-primary\">Memory</h1>\n {stats && (\n <Badge variant=\"neutral\">{stats.totalEntries} entries</Badge>\n )}\n </div>\n </div>\n\n {error && (\n <div className=\"text-danger text-sm p-3 bg-danger/10 rounded-lg\">{error}</div>\n )}\n\n {/* Search */}\n {!isEmpty && (\n <div className=\"relative max-w-md\">\n <Search className=\"absolute left-3 top-1/2 -translate-y-1/2 h-4 w-4 text-text-muted\" />\n <input\n type=\"text\"\n data-testid=\"memory-search\"\n placeholder=\"Search memory...\"\n value={query}\n onChange={(e) => setQuery(e.target.value)}\n className=\"w-full pl-10 pr-4 py-2 text-sm bg-bg-secondary border border-border rounded-md text-text-primary placeholder:text-text-muted focus:outline-none focus:ring-2 focus:ring-accent focus:border-accent\"\n />\n </div>\n )}\n\n {/* Stats Cards */}\n {stats && (\n <div className=\"grid grid-cols-2 md:grid-cols-4 gap-4\">\n <Card className=\"p-4 text-center\">\n <div className=\"text-2xl font-bold text-text-primary\">{stats.totalEntries}</div>\n <div className=\"text-sm text-text-secondary\">Total Entries</div>\n </Card>\n {stats.decisions != null && (\n <Card className=\"p-4 text-center\">\n <div className=\"text-2xl font-bold text-accent\">{stats.decisions}</div>\n <div className=\"text-sm text-text-secondary\">Decisions</div>\n </Card>\n )}\n {stats.gotchas != null && (\n <Card className=\"p-4 text-center\">\n <div className=\"text-2xl font-bold text-warning\">{stats.gotchas}</div>\n <div className=\"text-sm text-text-secondary\">Gotchas</div>\n </Card>\n )}\n {stats.conversations != null && (\n <Card className=\"p-4 text-center\">\n <div className=\"text-2xl font-bold text-text-primary\">{stats.conversations}</div>\n <div className=\"text-sm text-text-secondary\">Conversations</div>\n </Card>\n )}\n </div>\n )}\n\n {isEmpty ? (\n <Card className=\"p-8\" data-testid=\"empty-state\">\n <div className=\"text-center\">\n <Brain className=\"w-12 h-12 mx-auto text-text-muted mb-3\" />\n <p className=\"text-text-secondary\">No memory entries found for this project.</p>\n <p className=\"text-text-muted text-sm mt-1\">\n Decisions and gotchas are captured automatically during TLC sessions.\n </p>\n </div>\n </Card>\n ) : (\n <div className=\"grid grid-cols-1 lg:grid-cols-2 gap-6\">\n {/* Decisions */}\n <div>\n <div className=\"flex items-center gap-2 mb-3\">\n <Lightbulb className=\"w-5 h-5 text-accent\" />\n <h2 className=\"text-lg font-medium text-text-primary\">Decisions</h2>\n <Badge variant=\"neutral\" size=\"sm\">{filteredDecisions.length}</Badge>\n </div>\n <div className=\"space-y-2\">\n {filteredDecisions.map((d) => (\n <Card key={d.id} className=\"p-3\">\n <p className=\"text-sm text-text-primary\">{d.text}</p>\n <div className=\"flex items-center gap-2 mt-2\">\n {d.context && (\n <Badge variant=\"info\" size=\"sm\">{d.context}</Badge>\n )}\n {d.timestamp && (\n <span className=\"text-xs text-text-muted\">{d.timestamp}</span>\n )}\n </div>\n </Card>\n ))}\n {filteredDecisions.length === 0 && (\n <p className=\"text-sm text-text-muted\">No decisions recorded yet.</p>\n )}\n </div>\n </div>\n\n {/* Gotchas */}\n <div>\n <div className=\"flex items-center gap-2 mb-3\">\n <AlertTriangle className=\"w-5 h-5 text-warning\" />\n <h2 className=\"text-lg font-medium text-text-primary\">Gotchas</h2>\n <Badge variant=\"warning\" size=\"sm\">{filteredGotchas.length}</Badge>\n </div>\n <div className=\"space-y-2\">\n {filteredGotchas.map((g) => (\n <Card key={g.id} className=\"p-3 border-warning/30\">\n <p className=\"text-sm text-text-primary\">{g.text}</p>\n <div className=\"flex items-center gap-2 mt-2\">\n {g.context && (\n <Badge variant=\"warning\" size=\"sm\">{g.context}</Badge>\n )}\n {g.timestamp && (\n <span className=\"text-xs text-text-muted\">{g.timestamp}</span>\n )}\n </div>\n </Card>\n ))}\n {filteredGotchas.length === 0 && (\n <p className=\"text-sm text-text-muted\">No gotchas recorded yet.</p>\n )}\n </div>\n </div>\n </div>\n )}\n </div>\n );\n}\n","import { useState, useCallback, useEffect } from 'react';\nimport { api } from '../api';\n\nexport function useProjectFiles(projectId?: string, filename?: string) {\n const [content, setContent] = useState<string | null>(null);\n const [currentFilename, setCurrentFilename] = useState<string | null>(null);\n const [loading, setLoading] = useState(false);\n const [error, setError] = useState<string | null>(null);\n\n const fetchFile = useCallback(async () => {\n if (!projectId || !filename) {\n setContent(null);\n setCurrentFilename(null);\n return;\n }\n setLoading(true);\n setError(null);\n try {\n const data = await api.projects.getFile(projectId, filename);\n setContent(data.content);\n setCurrentFilename(data.filename);\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Failed to fetch file');\n setContent(null);\n } finally {\n setLoading(false);\n }\n }, [projectId, filename]);\n\n useEffect(() => {\n fetchFile();\n }, [fetchFile]);\n\n return { content, filename: currentFilename, loading, error, refresh: fetchFile };\n}\n","import { useEffect, useState } from 'react';\nimport { useParams } from 'react-router-dom';\nimport { FileText } from 'lucide-react';\nimport { Card } from '../components/ui/Card';\nimport { Skeleton } from '../components/ui/Skeleton';\nimport { useUIStore } from '../stores';\nimport { useWorkspaceStore } from '../stores/workspace.store';\nimport { useProjectFiles } from '../hooks/useProjectFiles';\n\nconst DOC_FILES = [\n { name: 'PROJECT.md', label: 'PROJECT.md' },\n { name: 'ROADMAP.md', label: 'ROADMAP.md' },\n { name: 'CODING-STANDARDS.md', label: 'CODING-STANDARDS.md' },\n];\n\n/** Minimal markdown renderer — headings, paragraphs, lists, bold, code */\nfunction renderMarkdown(md: string) {\n const lines = md.split('\\n');\n const elements: React.ReactNode[] = [];\n let key = 0;\n\n for (let i = 0; i < lines.length; i++) {\n const line = lines[i]!;\n\n // Headings\n const h1 = line.match(/^# (.+)$/);\n if (h1) { elements.push(<h1 key={key++} className=\"text-2xl font-bold text-text-primary mb-3 mt-6 first:mt-0\">{h1[1]}</h1>); continue; }\n const h2 = line.match(/^## (.+)$/);\n if (h2) { elements.push(<h2 key={key++} className=\"text-xl font-semibold text-text-primary mb-2 mt-5\">{h2[1]}</h2>); continue; }\n const h3 = line.match(/^### (.+)$/);\n if (h3) { elements.push(<h3 key={key++} className=\"text-lg font-medium text-text-primary mb-2 mt-4\">{h3[1]}</h3>); continue; }\n\n // List items\n const li = line.match(/^[-*]\\s+(.+)$/);\n if (li) { elements.push(<li key={key++} className=\"text-sm text-text-secondary ml-4 list-disc\">{li[1]}</li>); continue; }\n\n // Checklist items\n const check = line.match(/^- \\[(x| )\\]\\s+(.+)$/);\n if (check) {\n const done = check[1] === 'x';\n elements.push(\n <li key={key++} className={`text-sm ml-4 list-none flex items-center gap-2 ${done ? 'text-text-muted line-through' : 'text-text-secondary'}`}>\n <span>{done ? '\\u2611' : '\\u2610'}</span>\n <span>{check[2]}</span>\n </li>\n );\n continue;\n }\n\n // Empty line\n if (line.trim() === '') { elements.push(<div key={key++} className=\"h-2\" />); continue; }\n\n // Code block\n if (line.startsWith('```')) {\n const codeLines: string[] = [];\n i++;\n while (i < lines.length && !lines[i]!.startsWith('```')) {\n codeLines.push(lines[i]!);\n i++;\n }\n elements.push(\n <pre key={key++} className=\"bg-bg-tertiary border border-border rounded-lg p-3 text-sm font-mono text-text-primary overflow-x-auto my-2\">\n {codeLines.join('\\n')}\n </pre>\n );\n continue;\n }\n\n // Regular paragraph\n elements.push(<p key={key++} className=\"text-sm text-text-secondary leading-relaxed\">{line}</p>);\n }\n\n return elements;\n}\n\nexport function ProjectInfoPage() {\n const { projectId: urlProjectId } = useParams<{ projectId: string }>();\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\n const selectProject = useWorkspaceStore((s) => s.selectProject);\n const setActiveView = useUIStore((s) => s.setActiveView);\n\n const projectId = urlProjectId ?? storeProjectId ?? undefined;\n useEffect(() => {\n if (urlProjectId && urlProjectId !== storeProjectId) {\n selectProject(urlProjectId);\n }\n }, [urlProjectId, storeProjectId, selectProject]);\n\n const [selectedFile, setSelectedFile] = useState('PROJECT.md');\n const { content, filename, loading, error } = useProjectFiles(projectId, selectedFile);\n\n useEffect(() => {\n setActiveView('info');\n }, [setActiveView]);\n\n if (loading) {\n return (\n <div className=\"p-6 space-y-6\" data-testid=\"loading\">\n <Skeleton className=\"h-8 w-48\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-4 w-3/4\" />\n <Skeleton className=\"h-4 w-5/6\" />\n </div>\n );\n }\n\n return (\n <div className=\"p-6 space-y-6\">\n {/* Header */}\n <div className=\"flex items-center gap-3\">\n <FileText className=\"w-6 h-6 text-accent\" />\n <h1 className=\"text-2xl font-semibold text-text-primary\">Project Info</h1>\n </div>\n\n {/* File selector */}\n <div className=\"flex gap-2 flex-wrap\">\n {DOC_FILES.map((f) => (\n <button\n key={f.name}\n onClick={() => setSelectedFile(f.name)}\n className={`px-3 py-1.5 text-sm rounded-md transition-colors flex items-center gap-1 ${\n selectedFile === f.name\n ? 'bg-accent text-white'\n : 'text-text-secondary hover:bg-bg-tertiary'\n }`}\n >\n <FileText className=\"w-3.5 h-3.5\" />\n {f.label}\n </button>\n ))}\n </div>\n\n {error && (\n <div className=\"text-danger text-sm p-3 bg-danger/10 rounded-lg\">{error}</div>\n )}\n\n {!content && !loading && !error ? (\n <Card className=\"p-8\" data-testid=\"empty-state\">\n <div className=\"text-center\">\n <FileText className=\"w-12 h-12 mx-auto text-text-muted mb-3\" />\n <p className=\"text-text-secondary\">No documentation found.</p>\n <p className=\"text-text-muted text-sm mt-1\">\n Add a {selectedFile} file to your project's .planning/ directory.\n </p>\n </div>\n </Card>\n ) : content ? (\n <Card className=\"p-6\">\n <div className=\"flex items-center gap-2 mb-4 pb-3 border-b border-border\">\n <FileText className=\"w-4 h-4 text-text-muted\" />\n <span className=\"text-sm font-medium text-text-secondary\">{filename}</span>\n </div>\n <div className=\"prose-sm\">\n {renderMarkdown(content)}\n </div>\n </Card>\n ) : null}\n </div>\n );\n}\n","import { useEffect, useMemo } from 'react';\nimport { useParams, Link } from 'react-router-dom';\nimport { ArrowLeft, CheckCircle2, Circle, Clock } from 'lucide-react';\nimport { Card } from '../components/ui/Card';\nimport { Badge } from '../components/ui/Badge';\nimport { Skeleton } from '../components/ui/Skeleton';\nimport { useRoadmap, useTasks } from '../hooks';\nimport { useUIStore } from '../stores';\nimport { useWorkspaceStore } from '../stores/workspace.store';\nimport type { RoadmapPhase } from '../api/endpoints';\n\nconst statusIcon = (status: string) => {\n if (status === 'done' || status === 'completed') return <CheckCircle2 className=\"w-4 h-4 text-success\" />;\n if (status === 'in_progress') return <Clock className=\"w-4 h-4 text-primary\" />;\n return <Circle className=\"w-4 h-4 text-text-muted\" />;\n};\n\nconst statusVariant = (status: string): 'success' | 'primary' | 'neutral' => {\n if (status === 'done' || status === 'completed') return 'success';\n if (status === 'in_progress') return 'primary';\n return 'neutral';\n};\n\nconst statusLabel = (status: string): string => {\n if (status === 'in_progress') return 'in progress';\n if (status === 'completed') return 'done';\n return status;\n};\n\nexport function PhaseDetailPage() {\n const { projectId: urlProjectId, phaseNumber: phaseParam } = useParams<{\n projectId: string;\n phaseNumber: string;\n }>();\n const storeProjectId = useWorkspaceStore((s) => s.selectedProjectId);\n const selectProject = useWorkspaceStore((s) => s.selectProject);\n const setActiveView = useUIStore((s) => s.setActiveView);\n\n const projectId = urlProjectId ?? storeProjectId ?? undefined;\n const phaseNumber = phaseParam ? parseInt(phaseParam, 10) : NaN;\n\n useEffect(() => {\n if (urlProjectId && urlProjectId !== storeProjectId) {\n selectProject(urlProjectId);\n }\n }, [urlProjectId, storeProjectId, selectProject]);\n\n useEffect(() => {\n setActiveView('roadmap');\n }, [setActiveView]);\n\n const { roadmap, loading: roadmapLoading } = useRoadmap(projectId);\n const { tasks } = useTasks(projectId);\n\n const phase: RoadmapPhase | undefined = useMemo(() => {\n if (!roadmap || isNaN(phaseNumber)) return undefined;\n for (const milestone of roadmap.milestones) {\n const found = milestone.phases.find((p) => p.number === phaseNumber);\n if (found) return found;\n }\n return undefined;\n }, [roadmap, phaseNumber]);\n\n const phaseTasks = useMemo(() => {\n if (!tasks || isNaN(phaseNumber)) return [];\n return tasks.filter((t: any) => t.phase === phaseNumber);\n }, [tasks, phaseNumber]);\n\n if (roadmapLoading) {\n return (\n <div className=\"p-6 space-y-6\" data-testid=\"phase-detail-loading\">\n <Skeleton className=\"h-8 w-64\" />\n <Skeleton className=\"h-4 w-full\" />\n <Skeleton className=\"h-24\" />\n {[1, 2, 3].map((i) => <Skeleton key={i} className=\"h-12\" />)}\n </div>\n );\n }\n\n if (!phase) {\n return (\n <div className=\"p-6\" data-testid=\"phase-not-found\">\n <Card className=\"p-8\">\n <div className=\"text-center\">\n <p className=\"text-text-secondary\">Phase not found</p>\n <p className=\"text-sm text-text-muted mt-2\">\n Phase {phaseParam} does not exist in this project's roadmap.\n </p>\n <Link\n to={projectId ? `/projects/${projectId}/roadmap` : '/roadmap'}\n className=\"text-sm text-primary mt-4 inline-block hover:underline\"\n data-testid=\"back-to-roadmap\"\n >\n Back to Roadmap\n </Link>\n </div>\n </Card>\n </div>\n );\n }\n\n const progress = phase.taskCount > 0\n ? Math.round((phase.completedTaskCount / phase.taskCount) * 100)\n : 0;\n\n return (\n <div className=\"p-6 space-y-6\">\n {/* Back link */}\n <Link\n to={projectId ? `/projects/${projectId}/roadmap` : '/roadmap'}\n className=\"flex items-center gap-2 text-sm text-text-secondary hover:text-text-primary transition-colors\"\n data-testid=\"back-to-roadmap\"\n >\n <ArrowLeft className=\"w-4 h-4\" />\n Back to Roadmap\n </Link>\n\n {/* Header */}\n <div className=\"flex items-center gap-4\">\n <h1 className=\"text-2xl font-semibold text-text-primary\">\n Phase {phase.number}: {phase.name}\n </h1>\n <Badge variant={statusVariant(phase.status)} data-testid=\"phase-status-badge\">\n {statusLabel(phase.status)}\n </Badge>\n {phase.verified && <Badge variant=\"success\">verified</Badge>}\n </div>\n\n {/* Progress */}\n <div className=\"flex items-center gap-4 text-sm text-text-secondary\">\n <span>{phase.completedTaskCount}/{phase.taskCount} tasks complete ({progress}%)</span>\n {phase.hasTests && <span>{phase.testCount} tests / {phase.testFileCount} files</span>}\n </div>\n <div className=\"w-full h-2 bg-bg-tertiary rounded-full overflow-hidden\">\n <div className=\"h-full bg-success rounded-full transition-all\" style={{ width: `${progress}%` }} />\n </div>\n\n {/* Goal */}\n {phase.goal && (\n <Card className=\"p-4\">\n <h3 className=\"text-xs font-semibold text-text-secondary uppercase mb-2\">Goal</h3>\n <p className=\"text-sm text-text-primary\">{phase.goal}</p>\n </Card>\n )}\n\n {/* Deliverables */}\n {phase.deliverables && phase.deliverables.length > 0 && (\n <Card className=\"p-4\">\n <h3 className=\"text-xs font-semibold text-text-secondary uppercase mb-2\">Deliverables</h3>\n <ul className=\"space-y-2\">\n {phase.deliverables.map((d, i) => (\n <li key={i} className=\"flex items-center gap-2 text-sm text-text-secondary\">\n {d.done ? (\n <CheckCircle2 className=\"w-4 h-4 text-success shrink-0\" />\n ) : (\n <Circle className=\"w-4 h-4 text-text-muted shrink-0\" />\n )}\n <span className={d.done ? 'line-through opacity-60' : ''}>{d.text}</span>\n </li>\n ))}\n </ul>\n </Card>\n )}\n\n {/* Tasks */}\n <div>\n <h3 className=\"text-xs font-semibold text-text-secondary uppercase mb-3\">Tasks</h3>\n {phaseTasks.length === 0 ? (\n <p className=\"text-sm text-text-muted\">No tasks found for this phase.</p>\n ) : (\n <div className=\"space-y-1\">\n {phaseTasks.map((task: any) => (\n <div\n key={task.id}\n className=\"flex items-center justify-between p-3 bg-bg-secondary rounded-lg\"\n >\n <div className=\"flex items-center gap-3\">\n {statusIcon(task.status)}\n <span className=\"text-sm font-medium text-text-primary\">{task.title}</span>\n </div>\n <div className=\"flex items-center gap-3 text-xs text-text-muted\">\n <Badge variant={statusVariant(task.status)} size=\"sm\">\n {statusLabel(task.status)}\n </Badge>\n {task.owner && <span>{task.owner}</span>}\n </div>\n </div>\n ))}\n </div>\n )}\n </div>\n </div>\n );\n}\n","import { useEffect, useState, useCallback } from 'react';\r\nimport { useUIStore } from '../stores';\r\nimport { Button } from '../components/ui/Button';\r\nimport { Badge } from '../components/ui/Badge';\r\nimport { Card } from '../components/ui/Card';\r\nimport { RefreshCw, Play, Square, RotateCw, Box, HardDrive, Database } from 'lucide-react';\r\n\r\ninterface Container {\r\n id: string;\r\n name: string;\r\n image: string;\r\n state: string;\r\n status: string;\r\n ports: { private: number; public: number; type: string }[];\r\n created: number;\r\n labels: Record<string, string>;\r\n}\r\n\r\ninterface DockerImage {\r\n id: string;\r\n tags: string[];\r\n size: number;\r\n created: number;\r\n}\r\n\r\ninterface Volume {\r\n name: string;\r\n driver: string;\r\n mountpoint: string;\r\n}\r\n\r\ntype Tab = 'containers' | 'images' | 'volumes';\r\n\r\nconst API_BASE = '';\r\n\r\nfunction statusBadge(state: string) {\r\n const variant = state === 'running' ? 'success' : state === 'exited' ? 'danger' : 'warning';\r\n return <Badge variant={variant}>{state}</Badge>;\r\n}\r\n\r\nfunction formatSize(bytes: number) {\r\n if (bytes > 1e9) return `${(bytes / 1e9).toFixed(1)} GB`;\r\n if (bytes > 1e6) return `${(bytes / 1e6).toFixed(1)} MB`;\r\n return `${(bytes / 1e3).toFixed(1)} KB`;\r\n}\r\n\r\nexport function DockerPage() {\r\n const setActiveView = useUIStore((state) => state.setActiveView);\r\n const [tab, setTab] = useState<Tab>('containers');\r\n const [containers, setContainers] = useState<Container[]>([]);\r\n const [images, setImages] = useState<DockerImage[]>([]);\r\n const [volumes, setVolumes] = useState<Volume[]>([]);\r\n const [available, setAvailable] = useState(true);\r\n const [loading, setLoading] = useState(true);\r\n const [error, setError] = useState<string | null>(null);\r\n\r\n useEffect(() => {\r\n setActiveView('docker');\r\n }, [setActiveView]);\r\n\r\n const fetchData = useCallback(async () => {\r\n setLoading(true);\r\n setError(null);\r\n try {\r\n const statusRes = await fetch(`${API_BASE}/api/docker/status`);\r\n if (statusRes.status === 503) {\r\n setAvailable(false);\r\n setLoading(false);\r\n return;\r\n }\r\n setAvailable(true);\r\n\r\n const [cRes, iRes, vRes] = await Promise.all([\r\n fetch(`${API_BASE}/api/docker/containers?all=true`),\r\n fetch(`${API_BASE}/api/docker/images`),\r\n fetch(`${API_BASE}/api/docker/volumes`),\r\n ]);\r\n setContainers(await cRes.json());\r\n setImages(await iRes.json());\r\n setVolumes(await vRes.json());\r\n } catch (err) {\r\n setError(err instanceof Error ? err.message : 'Failed to fetch Docker data');\r\n } finally {\r\n setLoading(false);\r\n }\r\n }, []);\r\n\r\n useEffect(() => { fetchData(); }, [fetchData]);\r\n\r\n const containerAction = async (id: string, action: 'start' | 'stop' | 'restart') => {\r\n await fetch(`${API_BASE}/api/docker/containers/${id}/${action}`, { method: 'POST' });\r\n fetchData();\r\n };\r\n\r\n if (!available) {\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary mb-6\">Docker</h1>\r\n <Card className=\"p-8 text-center\">\r\n <Box className=\"w-12 h-12 mx-auto mb-4 text-text-secondary\" />\r\n <h2 className=\"text-lg font-medium mb-2\">Docker Not Available</h2>\r\n <p className=\"text-text-secondary mb-4\">\r\n Mount the Docker socket to enable container management:\r\n </p>\r\n <code className=\"block bg-bg-secondary p-3 rounded text-sm\">\r\n -v /var/run/docker.sock:/var/run/docker.sock\r\n </code>\r\n </Card>\r\n </div>\r\n );\r\n }\r\n\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <div className=\"flex items-center justify-between mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">Docker</h1>\r\n <Button variant=\"ghost\" onClick={fetchData} leftIcon={<RefreshCw className=\"w-4 h-4\" />}>\r\n Refresh\r\n </Button>\r\n </div>\r\n\r\n {/* Tabs */}\r\n <div className=\"flex gap-2 mb-6 border-b border-border\">\r\n {(['containers', 'images', 'volumes'] as Tab[]).map((t) => (\r\n <button\r\n key={t}\r\n onClick={() => setTab(t)}\r\n className={`px-4 py-2 text-sm font-medium border-b-2 transition-colors ${\r\n tab === t ? 'border-accent text-accent' : 'border-transparent text-text-secondary hover:text-text-primary'\r\n }`}\r\n >\r\n {t === 'containers' && <Box className=\"w-4 h-4 inline mr-1\" />}\r\n {t === 'images' && <HardDrive className=\"w-4 h-4 inline mr-1\" />}\r\n {t === 'volumes' && <Database className=\"w-4 h-4 inline mr-1\" />}\r\n {t.charAt(0).toUpperCase() + t.slice(1)}\r\n <span className=\"ml-1 text-text-secondary\">\r\n ({t === 'containers' ? containers.length : t === 'images' ? images.length : volumes.length})\r\n </span>\r\n </button>\r\n ))}\r\n </div>\r\n\r\n {loading && <div className=\"text-text-secondary\">Loading...</div>}\r\n {error && <div className=\"text-danger\">{error}</div>}\r\n\r\n {/* Containers tab */}\r\n {tab === 'containers' && !loading && (\r\n <div className=\"space-y-2\">\r\n {containers.map((c) => (\r\n <Card key={c.id} className=\"p-4 flex items-center justify-between\">\r\n <div className=\"flex-1\">\r\n <div className=\"flex items-center gap-2\">\r\n <span className=\"font-medium text-text-primary\">{c.name}</span>\r\n {statusBadge(c.state)}\r\n </div>\r\n <div className=\"text-sm text-text-secondary mt-1\">\r\n {c.image} · {c.status}\r\n {c.ports.length > 0 && (\r\n <span> · {c.ports.map(p => `${p.public}:${p.private}`).join(', ')}</span>\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"flex gap-1\">\r\n {c.state !== 'running' && (\r\n <Button size=\"sm\" variant=\"ghost\" onClick={() => containerAction(c.id, 'start')}>\r\n <Play className=\"w-3 h-3\" />\r\n </Button>\r\n )}\r\n {c.state === 'running' && (\r\n <Button size=\"sm\" variant=\"ghost\" onClick={() => containerAction(c.id, 'stop')}>\r\n <Square className=\"w-3 h-3\" />\r\n </Button>\r\n )}\r\n <Button size=\"sm\" variant=\"ghost\" onClick={() => containerAction(c.id, 'restart')}>\r\n <RotateCw className=\"w-3 h-3\" />\r\n </Button>\r\n </div>\r\n </Card>\r\n ))}\r\n {containers.length === 0 && (\r\n <div className=\"text-text-secondary text-center py-8\">No containers found</div>\r\n )}\r\n </div>\r\n )}\r\n\r\n {/* Images tab */}\r\n {tab === 'images' && !loading && (\r\n <div className=\"space-y-2\">\r\n {images.map((img) => (\r\n <Card key={img.id} className=\"p-4\">\r\n <span className=\"font-medium text-text-primary\">{img.tags.join(', ') || '<untagged>'}</span>\r\n <span className=\"text-sm text-text-secondary ml-2\">{formatSize(img.size)}</span>\r\n </Card>\r\n ))}\r\n </div>\r\n )}\r\n\r\n {/* Volumes tab */}\r\n {tab === 'volumes' && !loading && (\r\n <div className=\"space-y-2\">\r\n {volumes.map((vol) => (\r\n <Card key={vol.name} className=\"p-4\">\r\n <span className=\"font-medium text-text-primary\">{vol.name}</span>\r\n <span className=\"text-sm text-text-secondary ml-2\">{vol.driver}</span>\r\n </Card>\r\n ))}\r\n </div>\r\n )}\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useState, useCallback } from 'react';\r\nimport { useUIStore } from '../stores';\r\nimport { Button } from '../components/ui/Button';\r\nimport { Badge } from '../components/ui/Badge';\r\nimport { Card } from '../components/ui/Card';\r\nimport { RefreshCw, Plus, Server, Wifi, Trash2, Shield } from 'lucide-react';\r\n\r\ninterface VpsServer {\r\n id: string;\r\n name: string;\r\n host: string;\r\n port: number;\r\n username: string;\r\n domain: string;\r\n provider: string;\r\n pool: boolean;\r\n assignedProjects: string[];\r\n status: string;\r\n bootstrapped: boolean;\r\n lastChecked: string | null;\r\n}\r\n\r\nconst API_BASE = '';\r\n\r\nexport function VpsPage() {\r\n const setActiveView = useUIStore((state) => state.setActiveView);\r\n const [servers, setServers] = useState<VpsServer[]>([]);\r\n const [loading, setLoading] = useState(true);\r\n const [showAdd, setShowAdd] = useState(false);\r\n const [addForm, setAddForm] = useState({ name: '', host: '', username: 'deploy', port: 22, privateKeyPath: '~/.ssh/id_rsa', domain: '' });\r\n const [testing, setTesting] = useState<string | null>(null);\r\n useEffect(() => {\r\n setActiveView('vps');\r\n }, [setActiveView]);\r\n\r\n const fetchServers = useCallback(async () => {\r\n setLoading(true);\r\n try {\r\n const res = await fetch(`${API_BASE}/api/vps/servers`);\r\n setServers(await res.json());\r\n } catch {} finally {\r\n setLoading(false);\r\n }\r\n }, []);\r\n\r\n useEffect(() => { fetchServers(); }, [fetchServers]);\r\n\r\n const addServer = async () => {\r\n const res = await fetch(`${API_BASE}/api/vps/servers`, {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json' },\r\n body: JSON.stringify(addForm),\r\n });\r\n if (res.ok) {\r\n setShowAdd(false);\r\n setAddForm({ name: '', host: '', username: 'deploy', port: 22, privateKeyPath: '~/.ssh/id_rsa', domain: '' });\r\n fetchServers();\r\n }\r\n };\r\n\r\n const testConnection = async (id: string) => {\r\n setTesting(id);\r\n try {\r\n await fetch(`${API_BASE}/api/vps/servers/${id}/test`, { method: 'POST' });\r\n fetchServers();\r\n } catch {} finally {\r\n setTesting(null);\r\n }\r\n };\r\n\r\n const deleteServer = async (id: string) => {\r\n await fetch(`${API_BASE}/api/vps/servers/${id}`, { method: 'DELETE' });\r\n fetchServers();\r\n };\r\n\r\n return (\r\n <div className=\"h-full overflow-auto p-6\">\r\n <div className=\"flex items-center justify-between mb-6\">\r\n <h1 className=\"text-2xl font-semibold text-text-primary\">VPS Servers</h1>\r\n <div className=\"flex gap-2\">\r\n <Button variant=\"ghost\" onClick={fetchServers} leftIcon={<RefreshCw className=\"w-4 h-4\" />}>\r\n Refresh\r\n </Button>\r\n <Button onClick={() => setShowAdd(!showAdd)} leftIcon={<Plus className=\"w-4 h-4\" />}>\r\n Add Server\r\n </Button>\r\n </div>\r\n </div>\r\n\r\n {/* Add server form */}\r\n {showAdd && (\r\n <Card className=\"p-4 mb-6\">\r\n <h3 className=\"font-medium mb-3\">Register New VPS</h3>\r\n <div className=\"grid grid-cols-2 gap-3\">\r\n <input className=\"border border-border rounded px-3 py-2 bg-bg-secondary text-text-primary\" placeholder=\"Name (e.g. dev-1)\" value={addForm.name} onChange={e => setAddForm({ ...addForm, name: e.target.value })} />\r\n <input className=\"border border-border rounded px-3 py-2 bg-bg-secondary text-text-primary\" placeholder=\"Host / IP\" value={addForm.host} onChange={e => setAddForm({ ...addForm, host: e.target.value })} />\r\n <input className=\"border border-border rounded px-3 py-2 bg-bg-secondary text-text-primary\" placeholder=\"Username\" value={addForm.username} onChange={e => setAddForm({ ...addForm, username: e.target.value })} />\r\n <input className=\"border border-border rounded px-3 py-2 bg-bg-secondary text-text-primary\" placeholder=\"Domain (optional)\" value={addForm.domain} onChange={e => setAddForm({ ...addForm, domain: e.target.value })} />\r\n <input className=\"border border-border rounded px-3 py-2 bg-bg-secondary text-text-primary\" placeholder=\"SSH Key Path\" value={addForm.privateKeyPath} onChange={e => setAddForm({ ...addForm, privateKeyPath: e.target.value })} />\r\n <input className=\"border border-border rounded px-3 py-2 bg-bg-secondary text-text-primary\" placeholder=\"Port\" type=\"number\" value={addForm.port} onChange={e => setAddForm({ ...addForm, port: parseInt(e.target.value) || 22 })} />\r\n </div>\r\n <div className=\"flex gap-2 mt-3\">\r\n <Button onClick={addServer}>Save</Button>\r\n <Button variant=\"ghost\" onClick={() => setShowAdd(false)}>Cancel</Button>\r\n </div>\r\n </Card>\r\n )}\r\n\r\n {loading && <div className=\"text-text-secondary\">Loading...</div>}\r\n\r\n {/* Server list */}\r\n {!loading && servers.length === 0 && (\r\n <Card className=\"p-8 text-center\">\r\n <Server className=\"w-12 h-12 mx-auto mb-4 text-text-secondary\" />\r\n <h2 className=\"text-lg font-medium mb-2\">No VPS Servers</h2>\r\n <p className=\"text-text-secondary mb-4\">Register a VPS to start deploying your projects.</p>\r\n <Button onClick={() => setShowAdd(true)} leftIcon={<Plus className=\"w-4 h-4\" />}>\r\n Add Server\r\n </Button>\r\n </Card>\r\n )}\r\n\r\n {!loading && servers.map((s) => (\r\n <Card key={s.id} className=\"p-4 mb-3\">\r\n <div className=\"flex items-center justify-between\">\r\n <div className=\"flex-1\">\r\n <div className=\"flex items-center gap-2\">\r\n <Server className=\"w-4 h-4 text-text-secondary\" />\r\n <span className=\"font-medium text-text-primary\">{s.name}</span>\r\n <Badge variant={s.status === 'online' ? 'success' : 'warning'}>\r\n {s.status}\r\n </Badge>\r\n {s.pool && <Badge variant=\"neutral\">pool</Badge>}\r\n {s.bootstrapped && (\r\n <Badge variant=\"success\">\r\n <Shield className=\"w-3 h-3 mr-1 inline\" />bootstrapped\r\n </Badge>\r\n )}\r\n </div>\r\n <div className=\"text-sm text-text-secondary mt-1\">\r\n {s.username}@{s.host}:{s.port}\r\n {s.domain && <span> · {s.domain}</span>}\r\n {s.assignedProjects.length > 0 && (\r\n <span> · {s.assignedProjects.length} project(s)</span>\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"flex gap-1\">\r\n <Button size=\"sm\" variant=\"ghost\" onClick={() => testConnection(s.id)} disabled={testing === s.id}>\r\n {testing === s.id ? <RefreshCw className=\"w-3 h-3 animate-spin\" /> : <Wifi className=\"w-3 h-3\" />}\r\n </Button>\r\n <Button size=\"sm\" variant=\"ghost\" onClick={() => deleteServer(s.id)}>\r\n <Trash2 className=\"w-3 h-3\" />\r\n </Button>\r\n </div>\r\n </div>\r\n </Card>\r\n ))}\r\n </div>\r\n );\r\n}\r\n","import { useCallback, useEffect, useState } from 'react';\nimport { useWorkspaceStore } from '../stores/workspace.store';\nimport { api } from '../api';\n\n/**\n * Hook for workspace-aware routing and navigation.\n * Fetches workspace configuration on mount, provides project selection,\n * and workspace scanning capabilities.\n */\nexport function useWorkspace() {\n const {\n isConfigured,\n projects,\n selectedProjectId,\n isScanning,\n lastScan,\n setRoots,\n setProjects,\n selectProject: storeSelectProject,\n restoreSelectedProject,\n setIsScanning,\n setLastScan,\n } = useWorkspaceStore();\n\n const [error, setError] = useState<string | null>(null);\n const [projectsLoaded, setProjectsLoaded] = useState(false);\n\n // Fetch config on mount and restore selected project\n useEffect(() => {\n restoreSelectedProject();\n\n api.workspace.getConfig()\n .then((config) => {\n setRoots(config.roots);\n if (config.lastScans && Object.keys(config.lastScans).length > 0) {\n const scanValues = Object.values(config.lastScans).filter(\n (value): value is number => typeof value === 'number'\n );\n if (scanValues.length > 0) {\n const latestScan = Math.max(...scanValues);\n if (!Number.isNaN(latestScan)) {\n setLastScan(new Date(latestScan).toISOString());\n }\n }\n }\n if (config.roots.length > 0) {\n return api.workspace.getProjects();\n }\n setProjects([]);\n setProjectsLoaded(true);\n return null;\n })\n .then((fetchedProjects) => {\n if (fetchedProjects) {\n setProjects(fetchedProjects);\n setProjectsLoaded(true);\n }\n })\n .catch((err) => {\n setError(err instanceof Error ? err.message : 'Failed to fetch workspace config');\n setProjectsLoaded(true);\n });\n }, [setRoots, setProjects, restoreSelectedProject, setLastScan]);\n\n const selectProject = useCallback(\n (id: string) => {\n storeSelectProject(id);\n },\n [storeSelectProject]\n );\n\n // Only clear invalid selection after projects have actually been fetched\n useEffect(() => {\n if (projectsLoaded && selectedProjectId && projects.length > 0 &&\n !projects.some((p) => p.id === selectedProjectId)) {\n storeSelectProject(null);\n }\n }, [projectsLoaded, projects, selectedProjectId, storeSelectProject]);\n\n const scan = useCallback(async () => {\n setError(null);\n setIsScanning(true);\n try {\n const result = await api.workspace.scan();\n if (result?.projects) {\n setProjects(result.projects);\n } else {\n const updatedProjects = await api.workspace.getProjects();\n setProjects(updatedProjects);\n }\n if (result?.scannedAt) {\n setLastScan(new Date(result.scannedAt).toISOString());\n } else {\n setLastScan(new Date().toISOString());\n }\n } catch (err) {\n setError(err instanceof Error ? err.message : 'Scan failed');\n } finally {\n setIsScanning(false);\n }\n }, [setIsScanning, setProjects, setLastScan]);\n\n const selectedProject = projects.find((p) => p.id === selectedProjectId) ?? null;\n\n return {\n isConfigured,\n projects,\n selectedProject,\n selectProject,\n scan,\n isScanning,\n lastScan: lastScan ? new Date(lastScan).getTime() : null,\n error,\n };\n}\n","import { useState } from 'react';\r\nimport { FolderOpen, Plus, Trash2, Search, Loader2 } from 'lucide-react';\r\n\r\nexport interface SetupScreenProps {\r\n onScan: (roots: string[]) => Promise<void>;\r\n onScanComplete: () => void;\r\n isScanning?: boolean;\r\n error?: string | null;\r\n}\r\n\r\n/**\r\n * SetupScreen is the first-run UI that prompts for root folder path(s)\r\n * when no workspace is configured. It allows users to add multiple root\r\n * folders, then triggers a project scan.\r\n */\r\nexport function SetupScreen({\r\n onScan,\r\n onScanComplete,\r\n isScanning = false,\r\n error = null,\r\n}: SetupScreenProps) {\r\n const [roots, setRoots] = useState<string[]>([]);\r\n const [inputValue, setInputValue] = useState('');\r\n const [validationError, setValidationError] = useState<string | null>(null);\r\n\r\n const addRoot = () => {\r\n const trimmed = inputValue.trim();\r\n if (!trimmed) {\r\n setValidationError('Please enter a path');\r\n return;\r\n }\r\n if (roots.includes(trimmed)) {\r\n setInputValue('');\r\n return;\r\n }\r\n setRoots([...roots, trimmed]);\r\n setInputValue('');\r\n setValidationError(null);\r\n };\r\n\r\n const removeRoot = (index: number) => {\r\n setRoots(roots.filter((_, i) => i !== index));\r\n };\r\n\r\n const handleInputChange = (e: React.ChangeEvent<HTMLInputElement>) => {\r\n setInputValue(e.target.value);\r\n if (validationError) {\r\n setValidationError(null);\r\n }\r\n };\r\n\r\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\r\n if (e.key === 'Enter') {\r\n addRoot();\r\n }\r\n };\r\n\r\n const handleScan = async () => {\r\n if (roots.length === 0 || isScanning) return;\r\n await onScan(roots);\r\n onScanComplete();\r\n };\r\n\r\n const scanDisabled = roots.length === 0 || isScanning;\r\n\r\n return (\r\n <div className=\"flex flex-col items-center justify-center min-h-[60vh] p-8\">\r\n <div className=\"w-full max-w-lg space-y-6\">\r\n {/* Welcome header */}\r\n <div data-testid=\"welcome-message\" className=\"text-center space-y-2\">\r\n <FolderOpen className=\"w-12 h-12 text-primary mx-auto\" />\r\n <h1 className=\"text-2xl font-bold text-foreground\">\r\n Welcome to TLC Dashboard\r\n </h1>\r\n <p className=\"text-muted-foreground\">\r\n A workspace is a collection of project root folders that TLC will\r\n scan and monitor. Add one or more root folders below to get started.\r\n </p>\r\n </div>\r\n\r\n {/* Path input */}\r\n <div className=\"space-y-2\">\r\n <label\r\n htmlFor=\"root-path-input\"\r\n className=\"block text-sm font-medium text-foreground\"\r\n >\r\n Root Folder Path\r\n </label>\r\n <div className=\"flex gap-2\">\r\n <input\r\n id=\"root-path-input\"\r\n data-testid=\"root-path-input\"\r\n type=\"text\"\r\n value={inputValue}\r\n onChange={handleInputChange}\r\n onKeyDown={handleKeyDown}\r\n placeholder=\"~/Projects\"\r\n className=\"flex-1 px-3 py-2 text-sm bg-surface border border-border rounded-md\r\n text-foreground placeholder:text-muted-foreground\r\n focus:outline-none focus:ring-2 focus:ring-primary/50 focus:border-primary\"\r\n />\r\n <button\r\n data-testid=\"add-root-button\"\r\n onClick={addRoot}\r\n className=\"inline-flex items-center gap-1.5 px-3 py-2 text-sm font-medium\r\n rounded-md border border-border bg-surface hover:bg-muted\r\n text-foreground transition-colors cursor-pointer\"\r\n >\r\n <Plus className=\"w-4 h-4\" />\r\n Add Root\r\n </button>\r\n </div>\r\n {validationError && (\r\n <p\r\n data-testid=\"validation-error\"\r\n className=\"text-sm text-error\"\r\n >\r\n {validationError}\r\n </p>\r\n )}\r\n </div>\r\n\r\n {/* Roots list */}\r\n {roots.length > 0 && (\r\n <div data-testid=\"root-list\" className=\"space-y-2\">\r\n <h2 className=\"text-sm font-medium text-foreground\">\r\n Root Folders ({roots.length})\r\n </h2>\r\n <ul className=\"space-y-1\">\r\n {roots.map((root, index) => (\r\n <li\r\n key={root}\r\n data-testid={`root-item-${index}`}\r\n className=\"flex items-center justify-between px-3 py-2\r\n bg-surface border border-border rounded-md\"\r\n >\r\n <span className=\"text-sm text-foreground truncate\">\r\n {root}\r\n </span>\r\n <button\r\n data-testid={`remove-root-${index}`}\r\n onClick={() => removeRoot(index)}\r\n aria-label={`Remove ${root}`}\r\n className=\"ml-2 p-1 text-muted-foreground hover:text-error\r\n transition-colors rounded cursor-pointer\"\r\n >\r\n <Trash2 className=\"w-4 h-4\" />\r\n </button>\r\n </li>\r\n ))}\r\n </ul>\r\n </div>\r\n )}\r\n\r\n {/* Scan error */}\r\n {error && (\r\n <p\r\n data-testid=\"scan-error\"\r\n className=\"text-sm text-error text-center\"\r\n >\r\n {error}\r\n </p>\r\n )}\r\n\r\n {/* Scanning spinner */}\r\n {isScanning && (\r\n <div data-testid=\"scan-spinner\" className=\"flex items-center justify-center gap-2\">\r\n <Loader2 className=\"w-5 h-5 text-primary animate-spin\" />\r\n <span className=\"text-sm text-muted-foreground\">\r\n Scanning projects...\r\n </span>\r\n </div>\r\n )}\r\n\r\n {/* Scan button */}\r\n <button\r\n data-testid=\"scan-button\"\r\n onClick={handleScan}\r\n disabled={scanDisabled}\r\n className={`\r\n w-full inline-flex items-center justify-center gap-2 px-4 py-2.5\r\n text-sm font-medium rounded-md transition-colors\r\n ${scanDisabled\r\n ? 'opacity-50 cursor-not-allowed bg-muted text-muted-foreground border border-border'\r\n : 'bg-primary text-primary-foreground hover:bg-primary/90 cursor-pointer'\r\n }\r\n `}\r\n >\r\n <Search className=\"w-4 h-4\" />\r\n Scan Projects\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { RefreshCw, Loader2 } from 'lucide-react';\r\n\r\nexport interface WorkspaceToolbarProps {\r\n onScan: () => Promise<void>;\r\n lastScan: number | null;\r\n isScanning: boolean;\r\n projectCount: number;\r\n error?: string | null;\r\n}\r\n\r\n/**\r\n * Formats a Unix timestamp into a human-readable relative time string.\r\n * @param timestamp - Unix timestamp in milliseconds\r\n * @returns A relative time string (e.g. \"5 minutes ago\", \"just now\")\r\n */\r\nexport function formatRelativeTime(timestamp: number): string {\r\n const now = Date.now();\r\n const diffMs = now - timestamp;\r\n const diffSeconds = Math.floor(diffMs / 1000);\r\n const diffMinutes = Math.floor(diffMs / 60000);\r\n const diffHours = Math.floor(diffMs / 3600000);\r\n const diffDays = Math.floor(diffMs / 86400000);\r\n\r\n if (diffSeconds < 60) return 'just now';\r\n if (diffMinutes < 60) {\r\n return diffMinutes === 1 ? '1 minute ago' : `${diffMinutes} minutes ago`;\r\n }\r\n if (diffHours < 24) {\r\n return diffHours === 1 ? '1 hour ago' : `${diffHours} hours ago`;\r\n }\r\n return diffDays === 1 ? '1 day ago' : `${diffDays} days ago`;\r\n}\r\n\r\n/**\r\n * WorkspaceToolbar displays project count, last scan time, a refresh button,\r\n * scan progress spinner, and error messages for workspace scanning.\r\n */\r\nexport function WorkspaceToolbar({\r\n onScan,\r\n lastScan,\r\n isScanning,\r\n projectCount,\r\n error,\r\n}: WorkspaceToolbarProps) {\r\n const projectLabel = projectCount === 1 ? 'project' : 'projects';\r\n const lastScanText = lastScan !== null\r\n ? `Last scanned: ${formatRelativeTime(lastScan)}`\r\n : 'Never scanned';\r\n\r\n return (\r\n <div className=\"flex items-center justify-between p-3 bg-surface border border-border rounded-lg\">\r\n <div className=\"flex items-center gap-4\">\r\n {/* Project count */}\r\n <span\r\n data-testid=\"project-count\"\r\n className=\"text-sm font-medium text-foreground\"\r\n >\r\n {projectCount} {projectLabel}\r\n </span>\r\n\r\n {/* Last scan timestamp */}\r\n <span\r\n data-testid=\"last-scan\"\r\n className=\"text-sm text-muted-foreground\"\r\n >\r\n {lastScanText}\r\n </span>\r\n </div>\r\n\r\n <div className=\"flex items-center gap-3\">\r\n {/* Scan error */}\r\n {error && (\r\n <span\r\n data-testid=\"scan-error\"\r\n className=\"text-sm text-error\"\r\n >\r\n {error}\r\n </span>\r\n )}\r\n\r\n {/* Spinner */}\r\n {isScanning && (\r\n <Loader2\r\n data-testid=\"scan-spinner\"\r\n className=\"w-4 h-4 text-primary animate-spin\"\r\n />\r\n )}\r\n\r\n {/* Refresh button */}\r\n <button\r\n data-testid=\"refresh-button\"\r\n onClick={onScan}\r\n disabled={isScanning}\r\n className={`\r\n inline-flex items-center gap-2 px-3 py-1.5 text-sm font-medium\r\n rounded-md border border-border\r\n transition-colors\r\n ${isScanning\r\n ? 'opacity-50 cursor-not-allowed bg-muted text-muted-foreground'\r\n : 'bg-surface hover:bg-muted text-foreground cursor-pointer'\r\n }\r\n `}\r\n >\r\n <RefreshCw className=\"w-4 h-4\" />\r\n Refresh\r\n </button>\r\n </div>\r\n </div>\r\n );\r\n}\r\n","import { ChevronDown } from 'lucide-react';\r\n\r\nexport interface ProjectSelectorProps {\r\n projects: Array<{ id: string; name: string; path?: string }>;\r\n selectedProjectId: string | null;\r\n onSelect: (projectId: string) => void;\r\n}\r\n\r\n/**\r\n * ProjectSelector renders a dropdown for selecting a project from\r\n * the workspace project list. Shows the current selection, a placeholder\r\n * when nothing is selected, and the total project count.\r\n */\r\nexport function ProjectSelector({\r\n projects,\r\n selectedProjectId,\r\n onSelect,\r\n}: ProjectSelectorProps) {\r\n const projectLabel = projects.length === 1 ? 'project' : 'projects';\r\n\r\n return (\r\n <div className=\"flex items-center gap-3\">\r\n <div className=\"relative\">\r\n <select\r\n data-testid=\"project-selector\"\r\n value={selectedProjectId ?? ''}\r\n onChange={(e) => {\r\n if (e.target.value) {\r\n onSelect(e.target.value);\r\n }\r\n }}\r\n className=\"\r\n appearance-none\r\n w-56 pl-3 pr-8 py-1.5\r\n text-sm font-medium\r\n bg-bg-secondary border border-border rounded-md\r\n text-text-primary\r\n cursor-pointer\r\n focus:outline-none focus:ring-2 focus:ring-accent focus:border-accent\r\n \"\r\n >\r\n <option value=\"\">Select a project...</option>\r\n {projects.map((project) => (\r\n <option key={project.id} value={project.id}>\r\n {project.name}\r\n </option>\r\n ))}\r\n </select>\r\n <ChevronDown className=\"absolute right-2 top-1/2 -translate-y-1/2 w-4 h-4 text-text-muted pointer-events-none\" />\r\n </div>\r\n\r\n <span\r\n data-testid=\"project-selector-count\"\r\n className=\"text-sm text-text-muted\"\r\n >\r\n {projects.length} {projectLabel}\r\n </span>\r\n </div>\r\n );\r\n}\r\n","import { useEffect, useMemo } from 'react';\r\nimport { Routes, Route, useNavigate } from 'react-router-dom';\r\nimport { Shell } from './components/layout';\r\nimport { ErrorBoundary } from './components/ErrorBoundary';\r\nimport { CommandPalette, type Command } from './components/settings/CommandPalette';\r\nimport {\r\n DashboardPage,\r\n TasksPage,\r\n LogsPage,\r\n SettingsPage,\r\n ProjectsPage,\r\n TeamPage,\r\n HealthPage,\r\n PreviewPage,\r\n TestSuitePage,\r\n BugsPage,\r\n RoadmapPage,\r\n ProjectDetailPage,\r\n ClientDashboard,\r\n MemoryPage,\r\n ProjectInfoPage,\r\n PhaseDetailPage as PhaseDetail,\r\n DockerPage,\r\n VpsPage,\r\n} from './pages';\r\nimport { useUIStore } from './stores';\r\nimport { useWebSocket } from './hooks';\r\nimport { useWorkspace } from './hooks/useWorkspace';\r\nimport { api } from './api';\r\nimport { SetupScreen } from './components/workspace/SetupScreen';\r\nimport { WorkspaceToolbar } from './components/workspace/WorkspaceToolbar';\r\nimport { ProjectSelector } from './components/workspace/ProjectSelector';\r\n\r\nconst resolveWsUrl = (apiBase?: string, projectId?: string | null) => {\r\n const base =\r\n apiBase && apiBase.trim().length > 0\r\n ? apiBase\r\n : `${window.location.protocol}//${window.location.host}`;\r\n let resolved: URL;\r\n try {\r\n resolved = new URL(base, window.location.origin);\r\n } catch {\r\n resolved = new URL(`${window.location.protocol}//${window.location.host}`);\r\n }\r\n const protocol = resolved.protocol === 'https:' ? 'wss:' : 'ws:';\r\n const wsBase = `${protocol}//${resolved.host}`;\r\n const wsUrl = new URL('/ws', wsBase);\r\n if (projectId) {\r\n wsUrl.searchParams.set('projectId', projectId);\r\n }\r\n return wsUrl.toString();\r\n};\r\n\r\nfunction AppContent() {\r\n const navigate = useNavigate();\r\n const { isCommandPaletteOpen, closeCommandPalette, initFromStorage, toggleTheme } = useUIStore();\r\n const workspace = useWorkspace();\r\n\r\n // Initialize theme from localStorage\r\n useEffect(() => {\r\n initFromStorage();\r\n }, [initFromStorage]);\r\n\r\n // Connect to WebSocket for real-time updates\r\n const wsUrl = useMemo(\r\n () => resolveWsUrl(import.meta.env.VITE_API_URL, workspace.selectedProject?.id),\r\n [workspace.selectedProject?.id]\r\n );\r\n\r\n useWebSocket({\r\n url: wsUrl,\r\n autoConnect: true,\r\n projectId: workspace.selectedProject?.id,\r\n });\r\n\r\n const pid = workspace.selectedProject?.id;\r\n const commands: Command[] = useMemo(() => [\r\n { id: 'nav-dashboard', label: 'Go to Dashboard', shortcut: 'g d', action: () => { navigate(pid ? `/projects/${pid}` : '/'); closeCommandPalette(); } },\r\n { id: 'nav-projects', label: 'Go to Projects', shortcut: 'g p', action: () => { navigate('/projects'); closeCommandPalette(); } },\r\n { id: 'nav-tasks', label: 'Go to Tasks', shortcut: 'g t', action: () => { navigate(pid ? `/projects/${pid}/tasks` : '/tasks'); closeCommandPalette(); } },\r\n { id: 'nav-logs', label: 'Go to Logs', shortcut: 'g l', action: () => { navigate(pid ? `/projects/${pid}/logs` : '/logs'); closeCommandPalette(); } },\r\n { id: 'nav-settings', label: 'Go to Settings', shortcut: 'g s', action: () => { navigate('/settings'); closeCommandPalette(); } },\r\n { id: 'nav-team', label: 'Go to Team', shortcut: 'g m', action: () => { navigate('/team'); closeCommandPalette(); } },\r\n { id: 'nav-health', label: 'Go to Health', shortcut: 'g h', action: () => { navigate('/health'); closeCommandPalette(); } },\r\n { id: 'nav-preview', label: 'Go to Preview', shortcut: 'g v', action: () => { navigate(pid ? `/projects/${pid}/preview` : '/preview'); closeCommandPalette(); } },\r\n { id: 'nav-tests', label: 'Go to Tests', shortcut: 'g x', action: () => { navigate(pid ? `/projects/${pid}/tests` : '/tests'); closeCommandPalette(); } },\r\n { id: 'nav-bugs', label: 'Go to Bugs', shortcut: 'g b', action: () => { navigate(pid ? `/projects/${pid}/bugs` : '/bugs'); closeCommandPalette(); } },\r\n { id: 'nav-roadmap', label: 'Go to Roadmap', shortcut: 'g r', action: () => { navigate(pid ? `/projects/${pid}/roadmap` : '/roadmap'); closeCommandPalette(); } },\r\n { id: 'nav-docker', label: 'Go to Docker', shortcut: 'g k', action: () => { navigate('/docker'); closeCommandPalette(); } },\r\n { id: 'nav-vps', label: 'Go to VPS', shortcut: 'g j', action: () => { navigate('/vps'); closeCommandPalette(); } },\r\n { id: 'nav-setup', label: 'Workspace Setup', shortcut: 'g w', action: () => { navigate('/setup'); closeCommandPalette(); } },\r\n { id: 'toggle-theme', label: 'Toggle Theme', shortcut: 't', action: () => { toggleTheme(); closeCommandPalette(); } },\r\n ], [navigate, closeCommandPalette, toggleTheme, pid]);\r\n\r\n return (\r\n <>\r\n <Routes>\r\n <Route path=\"/setup\" element={\r\n <SetupScreen\r\n onScan={async (roots) => {\r\n await api.workspace.setConfig(roots);\r\n await workspace.scan();\r\n }}\r\n onScanComplete={() => navigate('/projects')}\r\n isScanning={workspace.isScanning}\r\n error={workspace.error}\r\n />\r\n } />\r\n <Route path=\"/*\" element={\r\n <Shell>\r\n <div className=\"flex items-center gap-4 px-6 py-3 border-b border-border bg-bg-secondary\">\r\n {workspace.projects.length > 0 && (\r\n <ProjectSelector\r\n projects={workspace.projects}\r\n selectedProjectId={workspace.selectedProject?.id ?? null}\r\n onSelect={(id) => {\r\n workspace.selectProject(id);\r\n navigate(`/projects/${id}`);\r\n }}\r\n />\r\n )}\r\n <WorkspaceToolbar\r\n onScan={() => workspace.scan()}\r\n lastScan={workspace.lastScan}\r\n isScanning={workspace.isScanning}\r\n projectCount={workspace.projects.length}\r\n error={workspace.error}\r\n />\r\n </div>\r\n <Routes>\r\n {/* Project-scoped routes with tabbed layout */}\r\n <Route path=\"/projects/:projectId/*\" element={<ProjectDetailPage />}>\r\n <Route index element={<DashboardPage />} />\r\n <Route path=\"roadmap\" element={<RoadmapPage />} />\r\n <Route path=\"tasks\" element={<TasksPage />} />\r\n <Route path=\"tests\" element={<TestSuitePage />} />\r\n <Route path=\"bugs\" element={<BugsPage />} />\r\n <Route path=\"logs\" element={<LogsPage />} />\r\n <Route path=\"preview\" element={<PreviewPage />} />\r\n <Route path=\"memory\" element={<MemoryPage />} />\r\n <Route path=\"info\" element={<ProjectInfoPage />} />\r\n <Route path=\"phases/:phaseNumber\" element={<PhaseDetail />} />\r\n </Route>\r\n {/* Global routes */}\r\n <Route path=\"/\" element={<DashboardPage />} />\r\n <Route path=\"/dashboard\" element={<DashboardPage />} />\r\n <Route path=\"/projects\" element={<ProjectsPage />} />\r\n <Route path=\"/tasks\" element={<TasksPage />} />\r\n <Route path=\"/logs\" element={<LogsPage />} />\r\n <Route path=\"/settings\" element={<SettingsPage />} />\r\n <Route path=\"/team\" element={<TeamPage />} />\r\n <Route path=\"/health\" element={<HealthPage />} />\r\n <Route path=\"/preview\" element={<PreviewPage />} />\r\n <Route path=\"/tests\" element={<TestSuitePage />} />\r\n <Route path=\"/bugs\" element={<BugsPage />} />\r\n <Route path=\"/roadmap\" element={<RoadmapPage />} />\r\n <Route path=\"/client\" element={<ClientDashboard />} />\r\n <Route path=\"/docker\" element={<DockerPage />} />\r\n <Route path=\"/vps\" element={<VpsPage />} />\r\n </Routes>\r\n </Shell>\r\n } />\r\n </Routes>\r\n\r\n <CommandPalette\r\n commands={commands}\r\n open={isCommandPaletteOpen}\r\n onClose={closeCommandPalette}\r\n />\r\n </>\r\n );\r\n}\r\n\r\nfunction App() {\r\n return (\r\n <ErrorBoundary>\r\n <AppContent />\r\n </ErrorBoundary>\r\n );\r\n}\r\n\r\nexport default App;\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom/client';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\nimport './styles/tokens.css';\r\nimport './styles/index.css';\r\n\r\nReactDOM.createRoot(document.getElementById('root')!).render(\r\n <React.StrictMode>\r\n <BrowserRouter>\r\n <App />\r\n </BrowserRouter>\r\n </React.StrictMode>\r\n);\r\n"],"names":["l","n","p","q","r","t","u","v","w","x","y","z","A","a","B","C","D","E","b","e","F","G","H","J","K","L","M","d","c","k","h","g","f","m","N","O","escape","P","Q","R","S","T","U","V","W","X","react_production_min","reactModule","require$$0","reactJsxRuntime_production_min","jsxRuntimeModule","exports","I","schedulerModule","aa","ca","require$$1","da","ea","fa","ha","ia","ja","ka","la","ma","oa","pa","qa","ra","sa","ta","ua","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","Ra","Sa","Ta","Ua","Va","Wa","Xa","Ya","Za","ab","bb","cb","db","eb","fb","gb","hb","ib","jb","kb","lb","mb","nb","ob","pb","qb","rb","sb","tb","ub","vb","wb","xb","yb","zb","Ab","Bb","Cb","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Ub","Vb","Wb","Xb","Yb","Zb","$b","ac","bc","cc","dc","ec","fc","gc","hc","ic","jc","kc","lc","mc","oc","nc","pc","qc","rc","sc","tc","uc","vc","wc","xc","yc","zc","Ac","Bc","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","Tc","Uc","Vc","Wc","Xc","Yc","Zc","$c","ad","bd","cd","dd","ed","fd","gd","hd","id","jd","kd","ld","md","nd","od","pd","qd","rd","sd","td","ud","vd","wd","xd","yd","Ad","zd","Bd","Cd","Dd","Ed","Fd","Gd","Hd","Id","Jd","Kd","Ld","Md","Nd","Od","Pd","Qd","Rd","Sd","Td","Ud","Vd","Wd","Xd","Yd","Zd","$d","ae","be","ce","de","ee","fe","ge","he","ie","je","ke","le","me","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","Ae","Be","Ce","De","Ee","Fe","Ge","He","Ie","Je","Ke","Le","Me","Ne","Oe","Pe","Qe","Re","Se","Te","Ue","Ve","We","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","jf","kf","lf","mf","nf","of","pf","qf","rf","sf","tf","uf","vf","wf","na","xa","$a","ba","xf","yf","zf","Af","Bf","Cf","Df","Ef","Ff","Gf","Hf","Jf","If","Kf","Lf","Mf","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","Zf","$f","ag","bg","cg","dg","eg","fg","gg","hg","ig","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","Sg","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","ah","bh","ch","dh","eh","fh","gh","hh","ih","jh","kh","lh","mh","nh","oh","ph","qh","rh","sh","th","uh","vh","wh","xh","yh","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","Nh","Oh","Ph","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","di","ei","fi","gi","hi","ii","ji","ki","li","mi","ni","oi","pi","qi","ri","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","Ui","Vi","Wi","Xi","Yi","Zi","$i","aj","bj","cj","dj","ej","fj","gj","hj","ij","jj","kj","lj","mj","nj","oj","pj","qj","rj","sj","tj","uj","vj","wj","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Kj","Lj","Mj","Nj","Oj","Pj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","Xj","Yj","Zj","ak","bk","ck","dk","ek","fk","gk","hk","ik","jk","kk","lk","mk","nk","ok","Y","Z","pk","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","Qk","Rk","Sk","Tk","Uk","Vk","Wk","Xk","Yk","Zk","$k","al","bl","cl","dl","el","fl","gl","hl","il","jl","kl","ll","nl","ol","pl","ql","rl","sl","tl","ul","vl","reactDom_production_min","checkDCE","err","reactDomModule","client","PopStateEventType","createBrowserHistory","options","createBrowserLocation","window2","globalHistory","pathname","search","hash","createLocation","createBrowserHref","to","createPath","getUrlBasedHistory","invariant","value","message","warning","cond","createKey","getHistoryState","location","index","current","state","key","parsePath","path","parsedPath","hashIndex","searchIndex","getLocation","createHref2","validateLocation","v5Compat","action","listener","getIndex","handlePop","nextIndex","delta","history","push","historyState","url","error","replace2","createURL","createBrowserURLImpl","fn","isAbsolute","base","href","matchRoutes","routes","locationArg","basename","matchRoutesImpl","allowPartial","stripBasename","branches","flattenRoutes","rankRouteBranches","matches","i","decoded","decodePath","matchRouteBranch","parentsMeta","parentPath","_hasParentOptionalSegments","flattenRoute","route","hasParentOptionalSegments","relativePath","meta","joinPaths","routesMeta","computeScore","_a","exploded","explodeOptionalSegments","segments","first","rest","isOptional","required","restExploded","result","subpath","compareIndexes","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","s","score","segment","branch","matchedParams","matchedPathname","end","remainingPathname","match","matchPath","normalizePathname","pattern","matcher","compiledParams","compilePath","pathnameBase","captureGroups","memo2","paramName","splatValue","caseSensitive","params","regexpSource","_","startIndex","nextChar","ABSOLUTE_URL_REGEX","resolvePath","fromPathname","toPathname","resolvePathname","normalizeSearch","normalizeHash","getInvalidPathError","char","field","dest","getPathContributingMatches","getResolveToMatches","pathMatches","idx","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","from","routePathnameIndex","toSegments","hasExplicitTrailingSlash","hasCurrentTrailingSlash","paths","ErrorResponseImpl","status","statusText","data2","internal","isRouteErrorResponse","getRoutePattern","isBrowser","parseToInfo","_to","absoluteURL","isExternal","currentUrl","targetUrl","validMutationMethodsArr","validRequestMethodsArr","DataRouterContext","React.createContext","DataRouterStateContext","RSCRouterContext","ViewTransitionContext","FetchersContext","AwaitContext","NavigationContext","LocationContext","RouteContext","RouteErrorContext","ERROR_DIGEST_BASE","ERROR_DIGEST_REDIRECT","ERROR_DIGEST_ROUTE_ERROR_RESPONSE","decodeRedirectErrorDigest","digest","parsed","decodeRouteErrorResponseDigest","useHref","relative","useInRouterContext","navigator","React2.useContext","useResolvedPath","joinedPathname","useLocation","navigateEffectWarning","useIsomorphicLayoutEffect","React2.useLayoutEffect","useNavigate","isDataRoute","useNavigateStable","useNavigateUnstable","dataRouterContext","routePathnamesJson","activeRef","React2.useRef","React2.useCallback","OutletContext","React2.createContext","useOutlet","context","outlet","React2.useMemo","React2.createElement","useParams","routeMatch","useRoutes","useRoutesImpl","dataRouterState","onError","future","parentMatches","parentParams","parentPathname","parentPathnameBase","parentRoute","warningOnce","locationFromContext","parsedLocationArg","parentSegments","renderedMatches","_renderMatches","DefaultErrorComponent","useRouteError","stack","lightgrey","preStyles","codeStyles","devInfo","React2.Fragment","defaultErrorElement","RenderErrorBoundary","React2.Component","props","errorInfo","RSCErrorHandler","errorRedirectHandledMap","children","redirect2","existingRedirect","redirectPromise","RenderedRoute","routeContext","onErrorHandler","errors","errorIndex","renderFallback","fallbackIndex","loaderData","errors2","needsToRunLoader","_b","shouldRenderHydrateFallback","errorElement","hydrateFallbackElement","matches2","getChildren","getDataRouterConsoleError","hookName","useDataRouterContext","ctx","useDataRouterState","useRouteContext","useCurrentRouteId","thisRoute","useRouteId","routeId","router","alreadyWarned","React3.memo","DataRoutes","Outlet","Route","Router","basenameProp","locationProp","navigationType","staticProp","unstable_useTransitions","navigationContext","React3.useMemo","locationContext","trailingPathname","React3.createElement","Routes","createRoutesFromChildren","React3.Children","element","React3.isValidElement","treePath","React3.Fragment","defaultMethod","defaultEncType","isHtmlElement","object","isButtonElement","isFormElement","isInputElement","isModifiedEvent","event","shouldProcessLinkClick","target","_formDataSupportsSubmitter","isFormDataSubmitterSupported","supportedFormEncTypes","getFormEncType","encType","getFormSubmissionInfo","method","formData","body","attr","form","name","type","prefix","invariant2","singleFetchUrl","reqUrl","trailingSlashAware","extension","loadRouteModule","routeModulesCache","routeModule","isHtmlLinkDescriptor","getKeyedPrefetchLinks","manifest","routeModules","links","mod","dedupeLinkDescriptors","link","getNewMatchesForLinks","page","nextMatches","currentMatches","mode","isNew","matchPathChanged","manifestRoute","routeChoice","getModuleLinkHrefs","includeHydrateFallback","dedupeHrefs","hrefs","sortKeys","obj","sorted","keys","descriptors","preloads","set","deduped","descriptor","useDataRouterContext2","React8.useContext","useDataRouterStateContext","FrameworkContext","React8.createContext","useFrameworkContext","usePrefetchBehavior","prefetch","theirElementProps","frameworkContext","maybePrefetch","setMaybePrefetch","React8.useState","shouldPrefetch","setShouldPrefetch","onFocus","onBlur","onMouseEnter","onMouseLeave","onTouchStart","ref","React8.useRef","React8.useEffect","callback","entries","entry","observer","setIntent","cancelIntent","composeEventHandlers","theirHandler","ourHandler","PrefetchPageLinks","linkProps","React8.useMemo","React8.createElement","PrefetchPageLinksImpl","useKeyedPrefetchLinks","keyedPrefetchLinks","setKeyedPrefetchLinks","interrupted","newMatchesForData","newMatchesForAssets","dataHrefs","routesParams","foundOptOutRoute","m2","moduleHrefs","React8.Fragment","mergeRefs","refs","isBrowser2","BrowserRouter","historyRef","React10.useRef","setStateImpl","React10.useState","setState","React10.useCallback","newState","React10.startTransition","React10.useLayoutEffect","React10.createElement","ABSOLUTE_URL_REGEX2","Link","React10.forwardRef","onClick","discover","reloadDocument","preventScrollReset","viewTransition","unstable_defaultShouldRevalidate","forwardedRef","React10.useContext","prefetchRef","prefetchHandlers","internalOnClick","useLinkClickHandler","handleClick","React10.Fragment","NavLink","ariaCurrentProp","classNameProp","styleProp","routerState","isTransitioning","useViewTransitionState","nextLocationPathname","endSlashPosition","isActive","isPending","renderProps","ariaCurrent","className","style","Form","fetcherKey","navigate","onSubmit","submit","useSubmit","formAction","useFormAction","formMethod","submitHandler","submitter","submitMethod","doSubmit","getDataRouterConsoleError2","useDataRouterContext3","replaceProp","doNavigate","fetcherId","getUniqueFetcherId","currentRouteId","routerFetch","routerNavigate","indexValues","qs","vtContext","currentPath","nextPath","toKebabCase","string","mergeClasses","classes","array","defaultAttributes","Icon","forwardRef","color","size","strokeWidth","absoluteStrokeWidth","iconNode","createElement","tag","attrs","createLucideIcon","iconName","Component","Activity","ArrowDown","ArrowLeft","ArrowRight","Box","Brain","Bug","ChevronDown","ChevronLeft","ChevronRight","ChevronUp","CircleCheckBig","CircleCheck","CircleX","Circle","Clock","Database","ExternalLink","Eye","FileText","Filter","FolderKanban","FolderOpen","GitBranch","GitCommitHorizontal","HardDrive","Layers","LayoutDashboard","Lightbulb","ListTodo","LoaderCircle","Map","Menu","MessageSquare","Monitor","Moon","Play","Plus","RefreshCw","RotateCw","ScrollText","Search","Server","Settings","Shield","Smartphone","SquareCheckBig","Square","Sun","Tablet","TestTube","Trash2","TriangleAlert","User","Users","Wifi","createStoreImpl","createState","listeners","partial","replace","nextState","previousState","getState","api","initialState","createStore","identity","arg","useStore","selector","slice","React","createImpl","useBoundStore","create","STORAGE_KEY","useWorkspaceStore","roots","projects","saved","isScanning","lastScan","Sidebar","collapsed","onToggle","pid","sidebarWidth","navItems","useMemo","jsx","CheckSquare","jsxs","item","Fragment","variantClasses","sizeClasses","Button","variant","loading","leftIcon","rightIcon","disabled","content","Loader2","Header","title","breadcrumbs","theme","onThemeToggle","onMobileMenuToggle","onSearchClick","crumb","safeSetItem","safeGetItem","resolveTheme","pref","applyTheme","useUIStore","resolved","order","currentIndex","nextPref","view","stored","useProjectStore","project","subscribeWithSelectorImpl","get","origSubscribe","optListener","equalityFn","currentSlice","nextSlice","previousSlice","subscribeWithSelector","initialFilters","computeFilteredTasks","tasks","filters","task","computeTasksByStatus","useTaskStore","updates","selectedTask","MAX_LOGS","initialLogs","generateId","addLogsToType","logs","newLogs","combined","trimmed","computeCurrentLogs","activeType","computeFilteredLogs","searchQuery","query","log","useLogStore","logsToAdd","byType","enabled","MAX_RECONNECT_ATTEMPTS","BASE_DELAY","MAX_DELAY","computeReconnectDelay","attempts","delay","computeDerivedState","reconnectAttempts","useWebSocketStore","Shell","sidebarCollapsed","setSidebarCollapsed","useState","mobileMenuOpen","setMobileMenuOpen","toggleTheme","handleSidebarToggle","handleMobileMenuToggle","ErrorBoundary","__publicField","fuzzyMatch","text","queryIndex","CommandPalette","commands","open","onClose","setQuery","selectedIndex","setSelectedIndex","inputRef","useRef","filteredCommands","cmd","useEffect","executeCommand","command","handleKeyDown","prev","statusColors","paddingClasses","Card","clickable","padding","cardContent","CardHeader","CardFooter","statusClasses","dotColors","Badge","dot","icon","Skeleton","width","height","testId","normalizeLogLevel","level","logTypeFromMessage","raw","useWebSocket","autoConnect","projectId","onMessage","onOpen","wsRef","reconnectTimeoutRef","intentionalCloseRef","mountedRef","urlRef","projectIdRef","onMessageRef","onOpenRef","onCloseRef","onErrorRef","isConnected","addLog","addBatchLogs","connect","useCallback","ws","data","logType","payload","pType","disconnect","send","ApiError","DEFAULT_BASE_URL","createApiClient","baseUrl","defaultHeaders","joinUrl","request","requestOptions","headers","fetchOptions","response","apiClient","createApiEndpoints","res","args","bug","config","taskNum","owner","bugId","filename","useProject","setProject","setStatus","setLoading","setError","fetchProject","projectData","statusData","mergedPhase","mergedPhaseName","mergedTotalPhases","mergedCompletedPhases","fetchStatus","refresh","useTasks","filteredTasks","tasksByStatus","setTasks","addTask","storeUpdateTask","removeTask","selectTask","setFilter","clearFilters","fetchTasks","createTask","taskData","created","updateTaskStatus","taskId","newStatus","updated","updateTask","deleteTask","useSettings","setConfig","saving","setSaving","fetchConfig","saveConfig","newConfig","refetch","useRoadmap","roadmap","setRoadmap","fetchRoadmap","useTestSuite","inventory","setInventory","fetchInventory","runTests","DashboardPage","urlProjectId","selectProject","storeProjectId","roadmapLoading","setActiveView","expandedPhase","setExpandedPhase","handleSelectProject","statusVariant","toggleExpand","phaseNum","completedPhases","totalPhases","totalTests","totalFiles","currentPhaseNum","_c","projectInfo","recentCommits","milestone","phase","isCurrent","isExpanded","commit","priorityClasses","TaskCard","onDragStart","isDraggable","isDragging","handleDragStart","testIndicatorClass","columns","TaskBoard","onTaskMove","onTaskClick","isLoading","dragOverColumn","setDragOverColumn","draggingTask","setDraggingTask","focusedColumn","setFocusedColumn","focusedTask","setFocusedTask","getTasksByStatus","handleDragOver","handleDragLeave","handleDrop","column","currentColumnTasks","colIndex","columnTasks","isColumnFocused","isDragOver","taskIndex","isTaskFocused","isTaskDragging","priorities","TaskFilter","assignees","onFilterChange","isOpen","setIsOpen","setFilters","containerRef","handleMouseDown","handleAssigneeToggle","assigneeId","newAssignees","newFilters","handlePriorityToggle","priority","newPriorities","handleClearAll","activeFilterCount","assignee","statusLabels","priorityColors","formatRelativeTime","dateString","date","diffMs","diffMins","diffHours","diffDays","TaskDetail","acceptanceCriteria","activity","onCriteriaToggle","onClaim","onRelease","onComplete","currentUserId","canRelease","canClaim","canComplete","CheckCircle","XCircle","criterion","transformTask","mapStatus","extractAssignees","seen","defaultActivity","getAcceptanceCriteria","storeTasks","storeTask","TasksPage","selectedProject","setSelectedTask","showCreateForm","setShowCreateForm","createTitle","setCreateTitle","createGoal","setCreateGoal","handleFilterChange","handleTaskClick","handleCloseDetail","handleTaskMove","serverStatus","handleClaim","handleComplete","handleCreateSubmit","levelColors","levelLabels","formatTimestamp","iso","LogStream","autoScroll","showFilters","showCount","virtualized","copyOnClick","isPaused","setIsPaused","levelFilters","setLevelFilters","lastScrollTop","filteredLogs","displayLogs","handleScroll","scrollTop","scrollHeight","clientHeight","isAtBottom","handleScrollToBottom","toggleFilter","next","handleLogClick","LogSearch","onSearch","matchCount","totalCount","currentMatch","onNavigate","handleClear","hasMatches","showNoMatches","LOG_TYPES","LogsPage","setLogType","setSearchQuery","clearLogs","setAutoScroll","streamLogs","Input","label","onClear","onChange","internalValue","setInternalValue","isControlled","currentValue","handleChange","isSearch","hasValue","inputClasses","SettingsPanel","onSave","onCancel","setFormData","_d","setErrors","validate","newErrors","coverage","quality","handleSave","themeLabels","ThemeToggle","showLabel","getAriaLabel","SettingsPage","useWorkspaceGroups","groups","setGroups","fetchGroups","ProjectsPage","expandedGroup","setExpandedGroup","filteredGroups","handleGroupClick","group","repo","handleRepoClick","statusOrder","getInitials","part","TeamPresence","members","compact","sortedMembers","onlineCount","member","Dropdown","items","onSelect","trigger","align","highlightedIndex","setHighlightedIndex","typeahead","setTypeahead","menuRef","typeaheadTimeoutRef","selectedItem","handleSelect","newTypeahead","matchIndex","activityIcons","GitCommit","CheckCircle2","timestamp","diff","minutes","hours","getDateGroup","now","today","yesterday","activityDate","groupByDate","activities","ActivityFeed","pageSize","typeFilter","setTypeFilter","userFilter","setUserFilter","visibleCount","setVisibleCount","filteredActivities","visibleActivities","groupedActivities","hasMore","userItems","user","groupActivities","environmentConfig","EnvironmentBadge","environment","showIcon","tooltip","TeamPanel","connected","collapsible","activeTab","setActiveTab","setCollapsed","TeamPage","wsStatus","setMembers","setActivities","fetchTeamData","commits","authorMap","teamMembers","info","formatUptime","seconds","days","StatusBadge","colorClasses","MetricCard","unit","SimpleGraph","HealthDiagnosticsPanel","health","showGraphs","onRefresh","refreshInterval","interval","issue","alert","provider","HealthPage","fetchHealth","DEVICES","PreviewPage","defaultUrl","services","activeDevice","setActiveDevice","setCurrentUrl","iframeKey","setIframeKey","selectedService","setSelectedService","handleDeviceChange","device","handleRefresh","handleOpenNewTab","handleServiceSelect","service","deviceWidth","serviceDropdownItems","TestSuitePage","runningTests","setRunningTests","handleRunTests","handleToggleGroup","groupName","formatDuration","ms","file","useBugs","bugs","setBugs","fetchBugs","createBug","bugData","updateBugStatus","SEVERITY_COLORS","BugsPage","statusFilter","setStatusFilter","expandedBug","setExpandedBug","showForm","setShowForm","submitting","setSubmitting","filteredBugs","openCount","handleSubmit","handleStatusChange","severity","statusIcon","RoadmapPage","expandedPhases","setExpandedPhases","collapseAll","setCollapseAll","togglePhase","num","handleCollapseAll","allNums","progressPercent","progress","TabBar","tabs","basePath","tab","fullPath","PROJECT_TABS","ProjectDetailPage","ClientDashboard","onBugSubmit","bugTitle","setBugTitle","bugDescription","setBugDescription","handleBugSubmit","update","useMemory","decisions","setDecisions","gotchas","setGotchas","stats","setStats","fetchMemory","useMemorySearch","debounceMs","debouncedQuery","setDebouncedQuery","timerRef","filteredDecisions","filteredGotchas","MemoryPage","isEmpty","AlertTriangle","useProjectFiles","setContent","currentFilename","setCurrentFilename","fetchFile","DOC_FILES","renderMarkdown","lines","elements","line","h1","h2","h3","check","done","codeLines","ProjectInfoPage","selectedFile","setSelectedFile","statusLabel","PhaseDetailPage","phaseParam","phaseNumber","found","phaseTasks","API_BASE","statusBadge","formatSize","bytes","DockerPage","setTab","containers","setContainers","images","setImages","volumes","setVolumes","available","setAvailable","fetchData","cRes","iRes","vRes","containerAction","img","vol","VpsPage","servers","setServers","showAdd","setShowAdd","addForm","setAddForm","testing","setTesting","fetchServers","addServer","testConnection","deleteServer","useWorkspace","isConfigured","selectedProjectId","setRoots","setProjects","storeSelectProject","restoreSelectedProject","setIsScanning","setLastScan","projectsLoaded","setProjectsLoaded","scanValues","latestScan","fetchedProjects","scan","updatedProjects","SetupScreen","onScan","onScanComplete","inputValue","setInputValue","validationError","setValidationError","addRoot","removeRoot","handleInputChange","handleScan","scanDisabled","root","diffSeconds","diffMinutes","WorkspaceToolbar","projectCount","projectLabel","lastScanText","ProjectSelector","resolveWsUrl","apiBase","wsBase","wsUrl","AppContent","isCommandPaletteOpen","closeCommandPalette","initFromStorage","workspace","PhaseDetail","App","ReactDOM"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,79]}
|