astock-agent/frontend/.next/server/app/page.js
2026-04-07 20:51:00 +08:00

227 lines
222 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
* ATTENTION: An "eval-source-map" devtool has been used.
* This devtool is neither made for production nor for readable output files.
* It uses "eval()" calls to create a separate source file with attached SourceMaps in the browser devtools.
* If you are trying to read the output file, select a different devtool (https://webpack.js.org/configuration/devtool/)
* or disable the default devtool with "devtool: false".
* If you are looking for production-ready output files, see mode: "production" (https://webpack.js.org/configuration/mode/).
*/
(() => {
var exports = {};
exports.id = "app/page";
exports.ids = ["app/page"];
exports.modules = {
/***/ "../../client/components/action-async-storage.external":
/*!*******************************************************************************!*\
!*** external "next/dist/client/components/action-async-storage.external.js" ***!
\*******************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = require("next/dist/client/components/action-async-storage.external.js");
/***/ }),
/***/ "../../client/components/request-async-storage.external":
/*!********************************************************************************!*\
!*** external "next/dist/client/components/request-async-storage.external.js" ***!
\********************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = require("next/dist/client/components/request-async-storage.external.js");
/***/ }),
/***/ "../../client/components/static-generation-async-storage.external":
/*!******************************************************************************************!*\
!*** external "next/dist/client/components/static-generation-async-storage.external.js" ***!
\******************************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = require("next/dist/client/components/static-generation-async-storage.external.js");
/***/ }),
/***/ "next/dist/compiled/next-server/app-page.runtime.dev.js":
/*!*************************************************************************!*\
!*** external "next/dist/compiled/next-server/app-page.runtime.dev.js" ***!
\*************************************************************************/
/***/ ((module) => {
"use strict";
module.exports = require("next/dist/compiled/next-server/app-page.runtime.dev.js");
/***/ }),
/***/ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!":
/*!****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D! ***!
\****************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ GlobalError: () => (/* reexport default from dynamic */ next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default.a),\n/* harmony export */ __next_app__: () => (/* binding */ __next_app__),\n/* harmony export */ originalPathname: () => (/* binding */ originalPathname),\n/* harmony export */ pages: () => (/* binding */ pages),\n/* harmony export */ routeModule: () => (/* binding */ routeModule),\n/* harmony export */ tree: () => (/* binding */ tree)\n/* harmony export */ });\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/server/future/route-modules/app-page/module.compiled */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/module.compiled.js?d969\");\n/* harmony import */ var next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/dist/server/future/route-kind */ \"(rsc)/./node_modules/next/dist/server/future/route-kind.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! next/dist/client/components/error-boundary */ \"(rsc)/./node_modules/next/dist/client/components/error-boundary.js\");\n/* harmony import */ var next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(next_dist_client_components_error_boundary__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! next/dist/server/app-render/entry-base */ \"(rsc)/./node_modules/next/dist/server/app-render/entry-base.js\");\n/* harmony import */ var next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__);\n/* harmony reexport (unknown) */ var __WEBPACK_REEXPORT_OBJECT__ = {};\n/* harmony reexport (unknown) */ for(const __WEBPACK_IMPORT_KEY__ in next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__) if([\"default\",\"tree\",\"pages\",\"GlobalError\",\"originalPathname\",\"__next_app__\",\"routeModule\"].indexOf(__WEBPACK_IMPORT_KEY__) < 0) __WEBPACK_REEXPORT_OBJECT__[__WEBPACK_IMPORT_KEY__] = () => next_dist_server_app_render_entry_base__WEBPACK_IMPORTED_MODULE_3__[__WEBPACK_IMPORT_KEY__]\n/* harmony reexport (unknown) */ __webpack_require__.d(__webpack_exports__, __WEBPACK_REEXPORT_OBJECT__);\n\"TURBOPACK { transition: next-ssr }\";\n\n\n// We inject the tree and pages here so that we can use them in the route\n// module.\nconst tree = {\n children: [\n '',\n {\n children: ['__PAGE__', {}, {\n page: [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/page.tsx */ \"(rsc)/./src/app/page.tsx\")), \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\"],\n \n }]\n },\n {\n 'layout': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/layout.tsx */ \"(rsc)/./src/app/layout.tsx\")), \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\"],\n'not-found': [() => Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! next/dist/client/components/not-found-error */ \"(rsc)/./node_modules/next/dist/client/components/not-found-error.js\", 23)), \"next/dist/client/components/not-found-error\"],\n \n }\n ]\n }.children;\nconst pages = [\"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\"];\n\n\nconst __next_app_require__ = __webpack_require__\nconst __next_app_load_chunk__ = () => Promise.resolve()\nconst originalPathname = \"/page\";\nconst __next_app__ = {\n require: __next_app_require__,\n loadChunk: __next_app_load_chunk__\n};\n\n// Create and export the route module that will be consumed.\nconst routeModule = new next_dist_server_future_route_modules_app_page_module_compiled__WEBPACK_IMPORTED_MODULE_0__.AppPageRouteModule({\n definition: {\n kind: next_dist_server_future_route_kind__WEBPACK_IMPORTED_MODULE_1__.RouteKind.APP_PAGE,\n page: \"/page\",\n pathname: \"/\",\n // The following aren't used in production.\n bundlePath: \"\",\n filename: \"\",\n appPaths: []\n },\n userland: {\n loaderTree: tree\n }\n});\n\n//# sourceMappingURL=app-page.js.map//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWFwcC1sb2FkZXIuanM/bmFtZT1hcHAlMkZwYWdlJnBhZ2U9JTJGcGFnZSZhcHBQYXRocz0lMkZwYWdlJnBhZ2VQYXRoPXByaXZhdGUtbmV4dC1hcHAtZGlyJTJGcGFnZS50c3gmYXBwRGlyPSUyRlVzZXJzJTJGYWFyb24lMkZzb3VyY2VfY29kZSUyRmFzdG9jay1hZ2VudCUyRmZyb250ZW5kJTJGc3JjJTJGYXBwJnBhZ2VFeHRlbnNpb25zPXRzeCZwYWdlRXh0ZW5zaW9ucz10cyZwYWdlRXh0ZW5zaW9ucz1qc3gmcGFnZUV4dGVuc2lvbnM9anMmcm9vdERpcj0lMkZVc2VycyUyRmFhcm9uJTJGc291cmNlX2NvZGUlMkZhc3RvY2stYWdlbnQlMkZmcm9udGVuZCZpc0Rldj10cnVlJnRzY29uZmlnUGF0aD10c2NvbmZpZy5qc29uJmJhc2VQYXRoPSZhc3NldFByZWZpeD0mbmV4dENvbmZpZ091dHB1dD0mcHJlZmVycmVkUmVnaW9uPSZtaWRkbGV3YXJlQ29uZmlnPWUzMCUzRCEiLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUFBLGFBQWEsc0JBQXNCO0FBQ2lFO0FBQ3JDO0FBQy9EO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQTtBQUNBLGlDQUFpQztBQUNqQyx1QkFBdUIsZ0pBQW9HO0FBQzNIO0FBQ0EsU0FBUztBQUNULE9BQU87QUFDUDtBQUNBLHlCQUF5QixvSkFBc0c7QUFDL0gsb0JBQW9CLDBOQUFnRjtBQUNwRztBQUNBO0FBQ0E7QUFDQSxPQUFPO0FBQ1A7QUFDdUI7QUFDNkQ7QUFDcEYsNkJBQTZCLG1CQUFtQjtBQUNoRDtBQUNPO0FBQ0E7QUFDUDtBQUNBO0FBQ0E7QUFDdUQ7QUFDdkQ7QUFDTyx3QkFBd0IsOEdBQWtCO0FBQ2pEO0FBQ0EsY0FBYyx5RUFBUztBQUN2QjtBQUNBO0FBQ0E7QUFDQTtBQUNBO0FBQ0E7QUFDQSxLQUFLO0FBQ0w7QUFDQTtBQUNBO0FBQ0EsQ0FBQzs7QUFFRCIsInNvdXJjZXMiOlsid2VicGFjazovL2FzdG9jay1hZ2VudC1mcm9udGVuZC8/NDk5MSJdLCJzb3VyY2VzQ29udGVudCI6WyJcIlRVUkJPUEFDSyB7IHRyYW5zaXRpb246IG5leHQtc3NyIH1cIjtcbmltcG9ydCB7IEFwcFBhZ2VSb3V0ZU1vZHVsZSB9IGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2Z1dHVyZS9yb3V0ZS1tb2R1bGVzL2FwcC1wYWdlL21vZHVsZS5jb21waWxlZFwiO1xuaW1wb3J0IHsgUm91dGVLaW5kIH0gZnJvbSBcIm5leHQvZGlzdC9zZXJ2ZXIvZnV0dXJlL3JvdXRlLWtpbmRcIjtcbi8vIFdlIGluamVjdCB0aGUgdHJlZSBhbmQgcGFnZXMgaGVyZSBzbyB0aGF0IHdlIGNhbiB1c2UgdGhlbSBpbiB0aGUgcm91dGVcbi8vIG1vZHVsZS5cbmNvbnN0IHRyZWUgPSB7XG4gICAgICAgIGNoaWxkcmVuOiBbXG4gICAgICAgICcnLFxuICAgICAgICB7XG4gICAgICAgIGNoaWxkcmVuOiBbJ19fUEFHRV9fJywge30sIHtcbiAgICAgICAgICBwYWdlOiBbKCkgPT4gaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvYWFyb24vc291cmNlX2NvZGUvYXN0b2NrLWFnZW50L2Zyb250ZW5kL3NyYy9hcHAvcGFnZS50c3hcIiksIFwiL1VzZXJzL2Fhcm9uL3NvdXJjZV9jb2RlL2FzdG9jay1hZ2VudC9mcm9udGVuZC9zcmMvYXBwL3BhZ2UudHN4XCJdLFxuICAgICAgICAgIFxuICAgICAgICB9XVxuICAgICAgfSxcbiAgICAgICAge1xuICAgICAgICAnbGF5b3V0JzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2Fhcm9uL3NvdXJjZV9jb2RlL2FzdG9jay1hZ2VudC9mcm9udGVuZC9zcmMvYXBwL2xheW91dC50c3hcIiksIFwiL1VzZXJzL2Fhcm9uL3NvdXJjZV9jb2RlL2FzdG9jay1hZ2VudC9mcm9udGVuZC9zcmMvYXBwL2xheW91dC50c3hcIl0sXG4nbm90LWZvdW5kJzogWygpID0+IGltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwibmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1lcnJvclwiKSwgXCJuZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbm90LWZvdW5kLWVycm9yXCJdLFxuICAgICAgICBcbiAgICAgIH1cbiAgICAgIF1cbiAgICAgIH0uY2hpbGRyZW47XG5jb25zdCBwYWdlcyA9IFtcIi9Vc2Vycy9hYXJvbi9zb3VyY2VfY29kZS9hc3RvY2stYWdlbnQvZnJvbnRlbmQvc3JjL2FwcC9wYWdlLnRzeFwiXTtcbmV4cG9ydCB7IHRyZWUsIHBhZ2VzIH07XG5leHBvcnQgeyBkZWZhdWx0IGFzIEdsb2JhbEVycm9yIH0gZnJvbSBcIm5leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9lcnJvci1ib3VuZGFyeVwiO1xuY29uc3QgX19uZXh0X2FwcF9yZXF1aXJlX18gPSBfX3dlYnBhY2tfcmVxdWlyZV9fXG5jb25zdCBfX25leHRfYXBwX2xvYWRfY2h1bmtfXyA9ICgpID0+IFByb21pc2UucmVzb2x2ZSgpXG5leHBvcnQgY29uc3Qgb3JpZ2luYWxQYXRobmFtZSA9IFwiL3BhZ2VcIjtcbmV4cG9ydCBjb25zdCBfX25leHRfYXBwX18gPSB7XG4gICAgcmVxdWlyZTogX19uZXh0X2FwcF9yZXF1aXJlX18sXG4gICAgbG9hZENodW5rOiBfX25leHRfYXBwX2xvYWRfY2h1bmtfX1xufTtcbmV4cG9ydCAqIGZyb20gXCJuZXh0L2Rpc3Qvc2VydmVyL2FwcC1yZW5kZXIvZW50cnktYmFzZVwiO1xuLy8gQ3JlYXRlIGFuZCBleHBvcnQgdGhlIHJvdXRlIG1vZHVsZSB0aGF0IHdpbGwgYmUgY29uc3VtZWQuXG5leHBvcnQgY29uc3Qgcm91dGVNb2R1bGUgPSBuZXcgQXBwUGFnZVJvdXRlTW9kdWxlKHtcbiAgICBkZWZpbml0aW9uOiB7XG4gICAgICAgIGtpbmQ6IFJvdXRlS2luZC5BUFBfUEFHRSxcbiAgICAgICAgcGFnZTogXCIvcGFnZVwiLFxuICAgICAgICBwYXRobmFtZTogXCIvXCIsXG4gICAgICAgIC8vIFRoZSBmb2xsb3dpbmcgYXJlbid0IHVzZWQgaW4gcHJvZHVjdGlvbi5cbiAgICAgICAgYnVuZGxlUGF0aDogXCJcIixcbiAgICAgICAgZmlsZW5hbWU6IFwiXCIsXG4gICAgICAgIGFwcFBhdGhzOiBbXVxuICAgIH0sXG4gICAgdXNlcmxhbmQ6IHtcbiAgICAgICAgbG9hZGVyVHJlZTogdHJlZVxuICAgIH1cbn0pO1xuXG4vLyMgc291cmNlTWFwcGluZ1VSTD1hcHAtcGFnZS5qcy5tYXAiXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!\n");
/***/ }),
/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
/*!**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
\**********************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/app-router.js */ \"(ssr)/./node_modules/next/dist/client/components/app-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/client-page.js */ \"(ssr)/./node_modules/next/dist/client/components/client-page.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/error-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/error-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/layout-router.js */ \"(ssr)/./node_modules/next/dist/client/components/layout-router.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/not-found-boundary.js */ \"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js\", 23));\n;\nPromise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__webpack_require__, /*! ./node_modules/next/dist/client/components/render-from-template-context.js */ \"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js\", 23));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGYWFyb24lMkZzb3VyY2VfY29kZSUyRmFzdG9jay1hZ2VudCUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGYXBwLXJvdXRlci5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZtb2R1bGVzPSU3QiUyMnJlcXVlc3QlMjIlM0ElMjIlMkZVc2VycyUyRmFhcm9uJTJGc291cmNlX2NvZGUlMkZhc3RvY2stYWdlbnQlMkZmcm9udGVuZCUyRm5vZGVfbW9kdWxlcyUyRm5leHQlMkZkaXN0JTJGY2xpZW50JTJGY29tcG9uZW50cyUyRmNsaWVudC1wYWdlLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGYWFyb24lMkZzb3VyY2VfY29kZSUyRmFzdG9jay1hZ2VudCUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGZXJyb3ItYm91bmRhcnkuanMlMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0QmbW9kdWxlcz0lN0IlMjJyZXF1ZXN0JTIyJTNBJTIyJTJGVXNlcnMlMkZhYXJvbiUyRnNvdXJjZV9jb2RlJTJGYXN0b2NrLWFnZW50JTJGZnJvbnRlbmQlMkZub2RlX21vZHVsZXMlMkZuZXh0JTJGZGlzdCUyRmNsaWVudCUyRmNvbXBvbmVudHMlMkZsYXlvdXQtcm91dGVyLmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGYWFyb24lMkZzb3VyY2VfY29kZSUyRmFzdG9jay1hZ2VudCUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGbm90LWZvdW5kLWJvdW5kYXJ5LmpzJTIyJTJDJTIyaWRzJTIyJTNBJTVCJTVEJTdEJm1vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGYWFyb24lMkZzb3VyY2VfY29kZSUyRmFzdG9jay1hZ2VudCUyRmZyb250ZW5kJTJGbm9kZV9tb2R1bGVzJTJGbmV4dCUyRmRpc3QlMkZjbGllbnQlMkZjb21wb25lbnRzJTJGcmVuZGVyLWZyb20tdGVtcGxhdGUtY29udGV4dC5qcyUyMiUyQyUyMmlkcyUyMiUzQSU1QiU1RCU3RCZzZXJ2ZXI9dHJ1ZSEiLCJtYXBwaW5ncyI6IkFBQUEsa09BQTBJO0FBQzFJO0FBQ0Esb09BQTJJO0FBQzNJO0FBQ0EsME9BQThJO0FBQzlJO0FBQ0Esd09BQTZJO0FBQzdJO0FBQ0Esa1BBQWtKO0FBQ2xKO0FBQ0Esc1FBQTRKIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0b2NrLWFnZW50LWZyb250ZW5kLz8zMTdlIl0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2Fhcm9uL3NvdXJjZV9jb2RlL2FzdG9jay1hZ2VudC9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2FwcC1yb3V0ZXIuanNcIik7XG47XG5pbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9hYXJvbi9zb3VyY2VfY29kZS9hc3RvY2stYWdlbnQvZnJvbnRlbmQvbm9kZV9tb2R1bGVzL25leHQvZGlzdC9jbGllbnQvY29tcG9uZW50cy9jbGllbnQtcGFnZS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2Fhcm9uL3NvdXJjZV9jb2RlL2FzdG9jay1hZ2VudC9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL2Vycm9yLWJvdW5kYXJ5LmpzXCIpO1xuO1xuaW1wb3J0KC8qIHdlYnBhY2tNb2RlOiBcImVhZ2VyXCIgKi8gXCIvVXNlcnMvYWFyb24vc291cmNlX2NvZGUvYXN0b2NrLWFnZW50L2Zyb250ZW5kL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvY2xpZW50L2NvbXBvbmVudHMvbGF5b3V0LXJvdXRlci5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2Fhcm9uL3NvdXJjZV9jb2RlL2FzdG9jay1hZ2VudC9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL25vdC1mb3VuZC1ib3VuZGFyeS5qc1wiKTtcbjtcbmltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL1VzZXJzL2Fhcm9uL3NvdXJjZV9jb2RlL2FzdG9jay1hZ2VudC9mcm9udGVuZC9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2NsaWVudC9jb21wb25lbnRzL3JlbmRlci1mcm9tLXRlbXBsYXRlLWNvbnRleHQuanNcIik7XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n");
/***/ }),
/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fsrc%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
/*!**************************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fsrc%2Fapp%2Fglobals.css%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
\**************************************************************************************************************************************************************************************************************************************************/
/***/ (() => {
/***/ }),
/***/ "(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fsrc%2Fapp%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!":
/*!***********************************************************************************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fsrc%2Fapp%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true! ***!
\***********************************************************************************************************************************************************************************************************************************************/
/***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/page.tsx */ \"(ssr)/./src/app/page.tsx\"));\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9ub2RlX21vZHVsZXMvbmV4dC9kaXN0L2J1aWxkL3dlYnBhY2svbG9hZGVycy9uZXh0LWZsaWdodC1jbGllbnQtZW50cnktbG9hZGVyLmpzP21vZHVsZXM9JTdCJTIycmVxdWVzdCUyMiUzQSUyMiUyRlVzZXJzJTJGYWFyb24lMkZzb3VyY2VfY29kZSUyRmFzdG9jay1hZ2VudCUyRmZyb250ZW5kJTJGc3JjJTJGYXBwJTJGcGFnZS50c3glMjIlMkMlMjJpZHMlMjIlM0ElNUIlNUQlN0Qmc2VydmVyPXRydWUhIiwibWFwcGluZ3MiOiJBQUFBLGdKQUFvRyIsInNvdXJjZXMiOlsid2VicGFjazovL2FzdG9jay1hZ2VudC1mcm9udGVuZC8/ODVmYyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQoLyogd2VicGFja01vZGU6IFwiZWFnZXJcIiAqLyBcIi9Vc2Vycy9hYXJvbi9zb3VyY2VfY29kZS9hc3RvY2stYWdlbnQvZnJvbnRlbmQvc3JjL2FwcC9wYWdlLnRzeFwiKTtcbiJdLCJuYW1lcyI6W10sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%7B%22request%22%3A%22%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fsrc%2Fapp%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=true!\n");
/***/ }),
/***/ "(ssr)/./src/app/page.tsx":
/*!**************************!*\
!*** ./src/app/page.tsx ***!
\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ DashboardPage)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var _lib_api__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/lib/api */ \"(ssr)/./src/lib/api.ts\");\n/* harmony import */ var _components_market_temp__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/market-temp */ \"(ssr)/./src/components/market-temp.tsx\");\n/* harmony import */ var _components_stock_card__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/stock-card */ \"(ssr)/./src/components/stock-card.tsx\");\n/* harmony import */ var _components_sector_heatmap__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! @/components/sector-heatmap */ \"(ssr)/./src/components/sector-heatmap.tsx\");\n/* harmony import */ var _hooks_use_websocket__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! @/hooks/use-websocket */ \"(ssr)/./src/hooks/use-websocket.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\n\n\nfunction DashboardPage() {\n const [data, setData] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [sectors, setSectors] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [scanStatus, setScanStatus] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const [refreshing, setRefreshing] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const [refreshResult, setRefreshResult] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [llmEnabled, setLlmEnabled] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(false);\n const loadData = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ()=>{\n try {\n const [latest, sectorData, status, health] = await Promise.all([\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_2__.fetchAPI)(\"/api/recommendations/latest\"),\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_2__.fetchAPI)(\"/api/sectors/hot?limit=8\"),\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_2__.fetchAPI)(\"/api/recommendations/status\"),\n (0,_lib_api__WEBPACK_IMPORTED_MODULE_2__.fetchAPI)(\"/api/health\")\n ]);\n setData(latest);\n setSectors(sectorData);\n setScanStatus(status);\n setLlmEnabled(health.llm_enabled);\n } catch (e) {\n console.error(\"加载数据失败:\", e);\n } finally{\n setLoading(false);\n }\n }, []);\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n loadData();\n }, [\n loadData\n ]);\n (0,_hooks_use_websocket__WEBPACK_IMPORTED_MODULE_6__.useWebSocket)((0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n loadData();\n }, [\n loadData\n ]));\n const handleRefresh = async ()=>{\n setRefreshing(true);\n setRefreshResult(null);\n try {\n const res = await (0,_lib_api__WEBPACK_IMPORTED_MODULE_2__.postAPI)(\"/api/recommendations/refresh?scan_session=manual\");\n const modeLabel = res.scan_mode === \"intraday\" ? \"盘中实时\" : \"盘后\";\n setRefreshResult(`${modeLabel}扫描完成,发现 ${res.count} 只股票`);\n await loadData();\n } catch (e) {\n console.error(\"刷新失败:\", e);\n setRefreshResult(\"扫描失败,请重试\");\n } finally{\n setRefreshing(false);\n setTimeout(()=>setRefreshResult(null), 5000);\n }\n };\n if (loading) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 md:px-8 pt-6 space-y-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-32 glass-card-static animate-shimmer\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 81,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-48 glass-card-static animate-shimmer\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 82,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-48 glass-card-static animate-shimmer\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 83,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 80,\n columnNumber: 7\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"max-w-7xl mx-auto px-4 md:px-8 pt-6 pb-20 md:pb-10 space-y-6\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between animate-fade-in-up\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-lg font-bold md:hidden tracking-tight\",\n children: \"Dragon AI Agent\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 93,\n columnNumber: 11\n }, this),\n scanStatus && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-[11px] text-text-muted mt-1\",\n children: scanStatus.is_trading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-flex items-center gap-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1.5 h-1.5 bg-emerald-400 rounded-full animate-pulse\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 98,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-emerald-400/80\",\n children: \"交易中\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 99,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-text-muted/40\",\n children: \"\\xb7\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 100,\n columnNumber: 19\n }, this),\n \"实时行情\"\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 97,\n columnNumber: 17\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-flex items-center gap-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1.5 h-1.5 bg-text-muted/40 rounded-full\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 105,\n columnNumber: 19\n }, this),\n \"已收盘\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-text-muted/40\",\n children: \"\\xb7\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 107,\n columnNumber: 19\n }, this),\n \"Tushare 日级数据\"\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 104,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 95,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 92,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n onClick: handleRefresh,\n disabled: refreshing,\n className: \"text-xs px-4 py-2 bg-gradient-to-r from-orange-500/20 to-amber-500/20 text-orange-400 rounded-xl hover:from-orange-500/30 hover:to-amber-500/30 disabled:opacity-40 transition-all duration-200 border border-orange-500/10 font-medium\",\n children: refreshing ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-flex items-center gap-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-3 h-3 border border-orange-400/40 border-t-orange-400 rounded-full animate-spin\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 121,\n columnNumber: 15\n }, this),\n \"分析中...\"\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 120,\n columnNumber: 13\n }, this) : scanStatus?.is_trading ? \"盘中扫描\" : \"立即扫描\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 114,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 91,\n columnNumber: 7\n }, this),\n refreshResult && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass-card-static border-orange-500/15 px-4 py-2.5 text-xs text-orange-400 animate-fade-in-up flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1 h-1 rounded-full bg-orange-400\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 135,\n columnNumber: 11\n }, this),\n refreshResult\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 134,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_market_temp__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n data: data?.market_temperature ?? null\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 142,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_sector_heatmap__WEBPACK_IMPORTED_MODULE_5__[\"default\"], {\n sectors: sectors\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 143,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 141,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-fade-in-up delay-150\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold text-text-muted uppercase tracking-wider\",\n children: [\n \"今日推荐\",\n data?.recommendations?.length ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-text-primary ml-1.5 font-mono tabular-nums\",\n children: data.recommendations.length\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 152,\n columnNumber: 15\n }, this) : \"\"\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 149,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: \"/recommendations\",\n className: \"text-[11px] text-text-muted hover:text-orange-400 transition-colors flex items-center gap-1\",\n children: [\n \"查看全部\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"10\",\n height: \"10\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M5 12h14M12 5l7 7-7 7\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 158,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 157,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 155,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 148,\n columnNumber: 9\n }, this),\n !data?.recommendations?.length ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass-card-static p-10 text-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-text-muted text-sm mb-1\",\n children: \"暂无推荐\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 165,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-text-muted/60 text-xs\",\n children: [\n \"点击 \",\n scanStatus?.is_trading ? \"「盘中扫描」\" : \"「立即扫描」\",\n \" 开始分析\"\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 166,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 164,\n columnNumber: 11\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 md:grid-cols-2 gap-4\",\n children: data.recommendations.slice(0, 6).map((rec)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_stock_card__WEBPACK_IMPORTED_MODULE_4__[\"default\"], {\n rec: rec,\n showLLMLoading: llmEnabled\n }, rec.ts_code, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 173,\n columnNumber: 15\n }, this))\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 171,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 147,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx\",\n lineNumber: 89,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvYXBwL3BhZ2UudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7Ozs7O0FBRXlEO0FBQ1g7QUFFSTtBQUNGO0FBQ1E7QUFDSDtBQVF0QyxTQUFTUztJQUN0QixNQUFNLENBQUNDLE1BQU1DLFFBQVEsR0FBR1YsK0NBQVFBLENBQXNCO0lBQ3RELE1BQU0sQ0FBQ1csU0FBU0MsV0FBVyxHQUFHWiwrQ0FBUUEsQ0FBZSxFQUFFO0lBQ3ZELE1BQU0sQ0FBQ2EsWUFBWUMsY0FBYyxHQUFHZCwrQ0FBUUEsQ0FBb0I7SUFDaEUsTUFBTSxDQUFDZSxTQUFTQyxXQUFXLEdBQUdoQiwrQ0FBUUEsQ0FBQztJQUN2QyxNQUFNLENBQUNpQixZQUFZQyxjQUFjLEdBQUdsQiwrQ0FBUUEsQ0FBQztJQUM3QyxNQUFNLENBQUNtQixlQUFlQyxpQkFBaUIsR0FBR3BCLCtDQUFRQSxDQUFnQjtJQUNsRSxNQUFNLENBQUNxQixZQUFZQyxjQUFjLEdBQUd0QiwrQ0FBUUEsQ0FBQztJQUU3QyxNQUFNdUIsV0FBV3RCLGtEQUFXQSxDQUFDO1FBQzNCLElBQUk7WUFDRixNQUFNLENBQUN1QixRQUFRQyxZQUFZQyxRQUFRQyxPQUFPLEdBQUcsTUFBTUMsUUFBUUMsR0FBRyxDQUFDO2dCQUM3RDNCLGtEQUFRQSxDQUFlO2dCQUN2QkEsa0RBQVFBLENBQWU7Z0JBQ3ZCQSxrREFBUUEsQ0FBYTtnQkFDckJBLGtEQUFRQSxDQUEyQjthQUNwQztZQUNEUSxRQUFRYztZQUNSWixXQUFXYTtZQUNYWCxjQUFjWTtZQUNkSixjQUFjSyxPQUFPRyxXQUFXO1FBQ2xDLEVBQUUsT0FBT0MsR0FBRztZQUNWQyxRQUFRQyxLQUFLLENBQUMsV0FBV0Y7UUFDM0IsU0FBVTtZQUNSZixXQUFXO1FBQ2I7SUFDRixHQUFHLEVBQUU7SUFFTGpCLGdEQUFTQSxDQUFDO1FBQ1J3QjtJQUNGLEdBQUc7UUFBQ0E7S0FBUztJQUViaEIsa0VBQVlBLENBQ1ZOLGtEQUFXQSxDQUFDO1FBQ1ZzQjtJQUNGLEdBQUc7UUFBQ0E7S0FBUztJQUdmLE1BQU1XLGdCQUFnQjtRQUNwQmhCLGNBQWM7UUFDZEUsaUJBQWlCO1FBQ2pCLElBQUk7WUFDRixNQUFNZSxNQUFNLE1BQU1oQyxpREFBT0EsQ0FNdEI7WUFDSCxNQUFNaUMsWUFBWUQsSUFBSUUsU0FBUyxLQUFLLGFBQWEsU0FBUztZQUMxRGpCLGlCQUFpQixDQUFDLEVBQUVnQixVQUFVLFFBQVEsRUFBRUQsSUFBSUcsS0FBSyxDQUFDLElBQUksQ0FBQztZQUN2RCxNQUFNZjtRQUNSLEVBQUUsT0FBT1EsR0FBRztZQUNWQyxRQUFRQyxLQUFLLENBQUMsU0FBU0Y7WUFDdkJYLGlCQUFpQjtRQUNuQixTQUFVO1lBQ1JGLGNBQWM7WUFDZHFCLFdBQVcsSUFBTW5CLGlCQUFpQixPQUFPO1FBQzNDO0lBQ0Y7SUFFQSxJQUFJTCxTQUFTO1FBQ1gscUJBQ0UsOERBQUN5QjtZQUFJQyxXQUFVOzs4QkFDYiw4REFBQ0Q7b0JBQUlDLFdBQVU7Ozs7Ozs4QkFDZiw4REFBQ0Q7b0JBQUlDLFdBQVU7Ozs7Ozs4QkFDZiw4REFBQ0Q7b0JBQUlDLFdBQVU7Ozs7Ozs7Ozs7OztJQUdyQjtJQUVBLHFCQUNFLDhEQUFDRDtRQUFJQyxXQUFVOzswQkFFYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDRDs7MENBQ0MsOERBQUNFO2dDQUFHRCxXQUFVOzBDQUE2Qzs7Ozs7OzRCQUMxRDVCLDRCQUNDLDhEQUFDOEI7Z0NBQUVGLFdBQVU7MENBQ1Y1QixXQUFXK0IsVUFBVSxpQkFDcEIsOERBQUNDO29DQUFLSixXQUFVOztzREFDZCw4REFBQ0k7NENBQUtKLFdBQVU7Ozs7OztzREFDaEIsOERBQUNJOzRDQUFLSixXQUFVO3NEQUFzQjs7Ozs7O3NEQUN0Qyw4REFBQ0k7NENBQUtKLFdBQVU7c0RBQXFCOzs7Ozs7d0NBQVE7Ozs7Ozt5REFJL0MsOERBQUNJO29DQUFLSixXQUFVOztzREFDZCw4REFBQ0k7NENBQUtKLFdBQVU7Ozs7Ozt3Q0FBOEM7c0RBRTlELDhEQUFDSTs0Q0FBS0osV0FBVTtzREFBcUI7Ozs7Ozt3Q0FBUTs7Ozs7Ozs7Ozs7Ozs7Ozs7O2tDQU92RCw4REFBQ0s7d0JBQ0NDLFNBQVNiO3dCQUNUYyxVQUFVL0I7d0JBQ1Z3QixXQUFVO2tDQUVUeEIsMkJBQ0MsOERBQUM0Qjs0QkFBS0osV0FBVTs7OENBQ2QsOERBQUNJO29DQUFLSixXQUFVOzs7Ozs7Z0NBQXNGOzs7Ozs7bUNBR3RHNUIsWUFBWStCLGFBQ2QsU0FFQTs7Ozs7Ozs7Ozs7O1lBTUx6QiwrQkFDQyw4REFBQ3FCO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0k7d0JBQUtKLFdBQVU7Ozs7OztvQkFDZnRCOzs7Ozs7OzBCQUtMLDhEQUFDcUI7Z0JBQUlDLFdBQVU7O2tDQUNiLDhEQUFDckMsK0RBQVVBO3dCQUFDSyxNQUFNQSxNQUFNd0Msc0JBQXNCOzs7Ozs7a0NBQzlDLDhEQUFDM0Msa0VBQWFBO3dCQUFDSyxTQUFTQTs7Ozs7Ozs7Ozs7OzBCQUkxQiw4REFBQzZCO2dCQUFJQyxXQUFVOztrQ0FDYiw4REFBQ0Q7d0JBQUlDLFdBQVU7OzBDQUNiLDhEQUFDUztnQ0FBR1QsV0FBVTs7b0NBQWlFO29DQUU1RWhDLE1BQU0wQyxpQkFBaUJDLHVCQUN0Qiw4REFBQ1A7d0NBQUtKLFdBQVU7a0RBQW1EaEMsS0FBSzBDLGVBQWUsQ0FBQ0MsTUFBTTs7Ozs7K0NBQzVGOzs7Ozs7OzBDQUVOLDhEQUFDQztnQ0FBRUMsTUFBSztnQ0FBbUJiLFdBQVU7O29DQUE4RjtrREFFakksOERBQUNjO3dDQUFJQyxPQUFNO3dDQUFLQyxRQUFPO3dDQUFLQyxTQUFRO3dDQUFZQyxNQUFLO3dDQUFPQyxRQUFPO3dDQUFlQyxhQUFZO3dDQUFJQyxlQUFjO3dDQUFRQyxnQkFBZTtrREFDckksNEVBQUNDOzRDQUFLQyxHQUFFOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztvQkFLYixDQUFDeEQsTUFBTTBDLGlCQUFpQkMsdUJBQ3ZCLDhEQUFDWjt3QkFBSUMsV0FBVTs7MENBQ2IsOERBQUNEO2dDQUFJQyxXQUFVOzBDQUErQjs7Ozs7OzBDQUM5Qyw4REFBQ0Q7Z0NBQUlDLFdBQVU7O29DQUE2QjtvQ0FDdEM1QixZQUFZK0IsYUFBYSxXQUFXO29DQUFTOzs7Ozs7Ozs7Ozs7NkNBSXJELDhEQUFDSjt3QkFBSUMsV0FBVTtrQ0FDWmhDLEtBQUswQyxlQUFlLENBQUNlLEtBQUssQ0FBQyxHQUFHLEdBQUdDLEdBQUcsQ0FBQyxDQUFDQyxvQkFDckMsOERBQUMvRCw4REFBU0E7Z0NBQW1CK0QsS0FBS0E7Z0NBQUtDLGdCQUFnQmhEOytCQUF2QytDLElBQUlFLE9BQU87Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFPekMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3RvY2stYWdlbnQtZnJvbnRlbmQvLi9zcmMvYXBwL3BhZ2UudHN4P2Y2OGEiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUsIHVzZUNhbGxiYWNrIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBmZXRjaEFQSSwgcG9zdEFQSSB9IGZyb20gXCJAL2xpYi9hcGlcIjtcbmltcG9ydCB0eXBlIHsgTGF0ZXN0UmVzdWx0LCBTZWN0b3JEYXRhIH0gZnJvbSBcIkAvbGliL2FwaVwiO1xuaW1wb3J0IE1hcmtldFRlbXAgZnJvbSBcIkAvY29tcG9uZW50cy9tYXJrZXQtdGVtcFwiO1xuaW1wb3J0IFN0b2NrQ2FyZCBmcm9tIFwiQC9jb21wb25lbnRzL3N0b2NrLWNhcmRcIjtcbmltcG9ydCBTZWN0b3JIZWF0bWFwIGZyb20gXCJAL2NvbXBvbmVudHMvc2VjdG9yLWhlYXRtYXBcIjtcbmltcG9ydCB7IHVzZVdlYlNvY2tldCB9IGZyb20gXCJAL2hvb2tzL3VzZS13ZWJzb2NrZXRcIjtcblxuaW50ZXJmYWNlIFNjYW5TdGF0dXMge1xuICBpc190cmFkaW5nOiBib29sZWFuO1xuICBzY2FuX21vZGU6IHN0cmluZztcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbn1cblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gRGFzaGJvYXJkUGFnZSgpIHtcbiAgY29uc3QgW2RhdGEsIHNldERhdGFdID0gdXNlU3RhdGU8TGF0ZXN0UmVzdWx0IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtzZWN0b3JzLCBzZXRTZWN0b3JzXSA9IHVzZVN0YXRlPFNlY3RvckRhdGFbXT4oW10pO1xuICBjb25zdCBbc2NhblN0YXR1cywgc2V0U2NhblN0YXR1c10gPSB1c2VTdGF0ZTxTY2FuU3RhdHVzIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpO1xuICBjb25zdCBbcmVmcmVzaGluZywgc2V0UmVmcmVzaGluZ10gPSB1c2VTdGF0ZShmYWxzZSk7XG4gIGNvbnN0IFtyZWZyZXNoUmVzdWx0LCBzZXRSZWZyZXNoUmVzdWx0XSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbbGxtRW5hYmxlZCwgc2V0TGxtRW5hYmxlZF0gPSB1c2VTdGF0ZShmYWxzZSk7XG5cbiAgY29uc3QgbG9hZERhdGEgPSB1c2VDYWxsYmFjayhhc3luYyAoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGNvbnN0IFtsYXRlc3QsIHNlY3RvckRhdGEsIHN0YXR1cywgaGVhbHRoXSA9IGF3YWl0IFByb21pc2UuYWxsKFtcbiAgICAgICAgZmV0Y2hBUEk8TGF0ZXN0UmVzdWx0PihcIi9hcGkvcmVjb21tZW5kYXRpb25zL2xhdGVzdFwiKSxcbiAgICAgICAgZmV0Y2hBUEk8U2VjdG9yRGF0YVtdPihcIi9hcGkvc2VjdG9ycy9ob3Q/bGltaXQ9OFwiKSxcbiAgICAgICAgZmV0Y2hBUEk8U2NhblN0YXR1cz4oXCIvYXBpL3JlY29tbWVuZGF0aW9ucy9zdGF0dXNcIiksXG4gICAgICAgIGZldGNoQVBJPHsgbGxtX2VuYWJsZWQ6IGJvb2xlYW4gfT4oXCIvYXBpL2hlYWx0aFwiKSxcbiAgICAgIF0pO1xuICAgICAgc2V0RGF0YShsYXRlc3QpO1xuICAgICAgc2V0U2VjdG9ycyhzZWN0b3JEYXRhKTtcbiAgICAgIHNldFNjYW5TdGF0dXMoc3RhdHVzKTtcbiAgICAgIHNldExsbUVuYWJsZWQoaGVhbHRoLmxsbV9lbmFibGVkKTtcbiAgICB9IGNhdGNoIChlKSB7XG4gICAgICBjb25zb2xlLmVycm9yKFwi5Yqg6L295pWw5o2u5aSx6LSlOlwiLCBlKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBsb2FkRGF0YSgpO1xuICB9LCBbbG9hZERhdGFdKTtcblxuICB1c2VXZWJTb2NrZXQoXG4gICAgdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgICAgbG9hZERhdGEoKTtcbiAgICB9LCBbbG9hZERhdGFdKVxuICApO1xuXG4gIGNvbnN0IGhhbmRsZVJlZnJlc2ggPSBhc3luYyAoKSA9PiB7XG4gICAgc2V0UmVmcmVzaGluZyh0cnVlKTtcbiAgICBzZXRSZWZyZXNoUmVzdWx0KG51bGwpO1xuICAgIHRyeSB7XG4gICAgICBjb25zdCByZXMgPSBhd2FpdCBwb3N0QVBJPHtcbiAgICAgICAgc3RhdHVzOiBzdHJpbmc7XG4gICAgICAgIGNvdW50OiBudW1iZXI7XG4gICAgICAgIHRlbXBlcmF0dXJlOiBudW1iZXI7XG4gICAgICAgIHNjYW5fbW9kZTogc3RyaW5nO1xuICAgICAgICBpc190cmFkaW5nOiBib29sZWFuO1xuICAgICAgfT4oXCIvYXBpL3JlY29tbWVuZGF0aW9ucy9yZWZyZXNoP3NjYW5fc2Vzc2lvbj1tYW51YWxcIik7XG4gICAgICBjb25zdCBtb2RlTGFiZWwgPSByZXMuc2Nhbl9tb2RlID09PSBcImludHJhZGF5XCIgPyBcIuebmOS4reWunuaXtlwiIDogXCLnm5jlkI5cIjtcbiAgICAgIHNldFJlZnJlc2hSZXN1bHQoYCR7bW9kZUxhYmVsfeaJq+aPj+WujOaIkO+8jOWPkeeOsCAke3Jlcy5jb3VudH0g5Y+q6IKh56WoYCk7XG4gICAgICBhd2FpdCBsb2FkRGF0YSgpO1xuICAgIH0gY2F0Y2ggKGUpIHtcbiAgICAgIGNvbnNvbGUuZXJyb3IoXCLliLfmlrDlpLHotKU6XCIsIGUpO1xuICAgICAgc2V0UmVmcmVzaFJlc3VsdChcIuaJq+aPj+Wksei0pe+8jOivt+mHjeivlVwiKTtcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0UmVmcmVzaGluZyhmYWxzZSk7XG4gICAgICBzZXRUaW1lb3V0KCgpID0+IHNldFJlZnJlc2hSZXN1bHQobnVsbCksIDUwMDApO1xuICAgIH1cbiAgfTtcblxuICBpZiAobG9hZGluZykge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1heC13LTd4bCBteC1hdXRvIHB4LTQgbWQ6cHgtOCBwdC02IHNwYWNlLXktNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMzIgZ2xhc3MtY2FyZC1zdGF0aWMgYW5pbWF0ZS1zaGltbWVyXCIgLz5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJoLTQ4IGdsYXNzLWNhcmQtc3RhdGljIGFuaW1hdGUtc2hpbW1lclwiIC8+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC00OCBnbGFzcy1jYXJkLXN0YXRpYyBhbmltYXRlLXNoaW1tZXJcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJtYXgtdy03eGwgbXgtYXV0byBweC00IG1kOnB4LTggcHQtNiBwYi0yMCBtZDpwYi0xMCBzcGFjZS15LTZcIj5cbiAgICAgIHsvKiBIZWFkZXIgYmFyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gYW5pbWF0ZS1mYWRlLWluLXVwXCI+XG4gICAgICAgIDxkaXY+XG4gICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtbGcgZm9udC1ib2xkIG1kOmhpZGRlbiB0cmFja2luZy10aWdodFwiPkRyYWdvbiBBSSBBZ2VudDwvaDE+XG4gICAgICAgICAge3NjYW5TdGF0dXMgJiYgKFxuICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC1bMTFweF0gdGV4dC10ZXh0LW11dGVkIG10LTFcIj5cbiAgICAgICAgICAgICAge3NjYW5TdGF0dXMuaXNfdHJhZGluZyA/IChcbiAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTEuNVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0xLjUgaC0xLjUgYmctZW1lcmFsZC00MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtcHVsc2VcIiAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1lbWVyYWxkLTQwMC84MFwiPuS6pOaYk+S4rTwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtdGV4dC1tdXRlZC80MFwiPsK3PC9zcGFuPlxuICAgICAgICAgICAgICAgICAg5a6e5pe26KGM5oOFXG4gICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ3LTEuNSBoLTEuNSBiZy10ZXh0LW11dGVkLzQwIHJvdW5kZWQtZnVsbFwiIC8+XG4gICAgICAgICAgICAgICAgICDlt7LmlLbnm5hcbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtdGV4dC1tdXRlZC80MFwiPsK3PC9zcGFuPlxuICAgICAgICAgICAgICAgICAgVHVzaGFyZSDml6XnuqfmlbDmja5cbiAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICl9XG4gICAgICAgICAgICA8L3A+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICAgIDxidXR0b25cbiAgICAgICAgICBvbkNsaWNrPXtoYW5kbGVSZWZyZXNofVxuICAgICAgICAgIGRpc2FibGVkPXtyZWZyZXNoaW5nfVxuICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgcHgtNCBweS0yIGJnLWdyYWRpZW50LXRvLXIgZnJvbS1vcmFuZ2UtNTAwLzIwIHRvLWFtYmVyLTUwMC8yMCB0ZXh0LW9yYW5nZS00MDAgcm91bmRlZC14bCBob3Zlcjpmcm9tLW9yYW5nZS01MDAvMzAgaG92ZXI6dG8tYW1iZXItNTAwLzMwIGRpc2FibGVkOm9wYWNpdHktNDAgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwIGJvcmRlciBib3JkZXItb3JhbmdlLTUwMC8xMCBmb250LW1lZGl1bVwiXG4gICAgICAgID5cbiAgICAgICAgICB7cmVmcmVzaGluZyA/IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInctMyBoLTMgYm9yZGVyIGJvcmRlci1vcmFuZ2UtNDAwLzQwIGJvcmRlci10LW9yYW5nZS00MDAgcm91bmRlZC1mdWxsIGFuaW1hdGUtc3BpblwiIC8+XG4gICAgICAgICAgICAgIOWIhuaekOS4rS4uLlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICkgOiBzY2FuU3RhdHVzPy5pc190cmFkaW5nID8gKFxuICAgICAgICAgICAgXCLnm5jkuK3miavmj49cIlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICBcIueri+WNs+aJq+aPj1wiXG4gICAgICAgICAgKX1cbiAgICAgICAgPC9idXR0b24+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIFNjYW4gcmVzdWx0IHRvYXN0ICovfVxuICAgICAge3JlZnJlc2hSZXN1bHQgJiYgKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdsYXNzLWNhcmQtc3RhdGljIGJvcmRlci1vcmFuZ2UtNTAwLzE1IHB4LTQgcHktMi41IHRleHQteHMgdGV4dC1vcmFuZ2UtNDAwIGFuaW1hdGUtZmFkZS1pbi11cCBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMlwiPlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInctMSBoLTEgcm91bmRlZC1mdWxsIGJnLW9yYW5nZS00MDBcIiAvPlxuICAgICAgICAgIHtyZWZyZXNoUmVzdWx0fVxuICAgICAgICA8L2Rpdj5cbiAgICAgICl9XG5cbiAgICAgIHsvKiBNYXJrZXQgdGVtcCArIFNlY3RvciBoZWF0bWFwICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC00XCI+XG4gICAgICAgIDxNYXJrZXRUZW1wIGRhdGE9e2RhdGE/Lm1hcmtldF90ZW1wZXJhdHVyZSA/PyBudWxsfSAvPlxuICAgICAgICA8U2VjdG9ySGVhdG1hcCBzZWN0b3JzPXtzZWN0b3JzfSAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBSZWNvbW1lbmRhdGlvbnMgKi99XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImFuaW1hdGUtZmFkZS1pbi11cCBkZWxheS0xNTBcIj5cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItNFwiPlxuICAgICAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC10ZXh0LW11dGVkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlclwiPlxuICAgICAgICAgICAg5LuK5pel5o6o6I2QXG4gICAgICAgICAgICB7ZGF0YT8ucmVjb21tZW5kYXRpb25zPy5sZW5ndGggPyAoXG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtdGV4dC1wcmltYXJ5IG1sLTEuNSBmb250LW1vbm8gdGFidWxhci1udW1zXCI+e2RhdGEucmVjb21tZW5kYXRpb25zLmxlbmd0aH08L3NwYW4+XG4gICAgICAgICAgICApIDogXCJcIn1cbiAgICAgICAgICA8L2gyPlxuICAgICAgICAgIDxhIGhyZWY9XCIvcmVjb21tZW5kYXRpb25zXCIgY2xhc3NOYW1lPVwidGV4dC1bMTFweF0gdGV4dC10ZXh0LW11dGVkIGhvdmVyOnRleHQtb3JhbmdlLTQwMCB0cmFuc2l0aW9uLWNvbG9ycyBmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMVwiPlxuICAgICAgICAgICAg5p+l55yL5YWo6YOoXG4gICAgICAgICAgICA8c3ZnIHdpZHRoPVwiMTBcIiBoZWlnaHQ9XCIxMFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMlwiIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIj5cbiAgICAgICAgICAgICAgPHBhdGggZD1cIk01IDEyaDE0TTEyIDVsNyA3LTcgN1wiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2E+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHshZGF0YT8ucmVjb21tZW5kYXRpb25zPy5sZW5ndGggPyAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJnbGFzcy1jYXJkLXN0YXRpYyBwLTEwIHRleHQtY2VudGVyXCI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtdGV4dC1tdXRlZCB0ZXh0LXNtIG1iLTFcIj7mmoLml6DmjqjojZA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC10ZXh0LW11dGVkLzYwIHRleHQteHNcIj5cbiAgICAgICAgICAgICAg54K55Ye7IHtzY2FuU3RhdHVzPy5pc190cmFkaW5nID8gXCLjgIznm5jkuK3miavmj4/jgI1cIiA6IFwi44CM56uL5Y2z5omr5o+P44CNXCJ9IOW8gOWni+WIhuaekFxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkgOiAoXG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJncmlkIGdyaWQtY29scy0xIG1kOmdyaWQtY29scy0yIGdhcC00XCI+XG4gICAgICAgICAgICB7ZGF0YS5yZWNvbW1lbmRhdGlvbnMuc2xpY2UoMCwgNikubWFwKChyZWMpID0+IChcbiAgICAgICAgICAgICAgPFN0b2NrQ2FyZCBrZXk9e3JlYy50c19jb2RlfSByZWM9e3JlY30gc2hvd0xMTUxvYWRpbmc9e2xsbUVuYWJsZWR9IC8+XG4gICAgICAgICAgICApKX1cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm5hbWVzIjpbInVzZUVmZmVjdCIsInVzZVN0YXRlIiwidXNlQ2FsbGJhY2siLCJmZXRjaEFQSSIsInBvc3RBUEkiLCJNYXJrZXRUZW1wIiwiU3RvY2tDYXJkIiwiU2VjdG9ySGVhdG1hcCIsInVzZVdlYlNvY2tldCIsIkRhc2hib2FyZFBhZ2UiLCJkYXRhIiwic2V0RGF0YSIsInNlY3RvcnMiLCJzZXRTZWN0b3JzIiwic2NhblN0YXR1cyIsInNldFNjYW5TdGF0dXMiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsInJlZnJlc2hpbmciLCJzZXRSZWZyZXNoaW5nIiwicmVmcmVzaFJlc3VsdCIsInNldFJlZnJlc2hSZXN1bHQiLCJsbG1FbmFibGVkIiwic2V0TGxtRW5hYmxlZCIsImxvYWREYXRhIiwibGF0ZXN0Iiwic2VjdG9yRGF0YSIsInN0YXR1cyIsImhlYWx0aCIsIlByb21pc2UiLCJhbGwiLCJsbG1fZW5hYmxlZCIsImUiLCJjb25zb2xlIiwiZXJyb3IiLCJoYW5kbGVSZWZyZXNoIiwicmVzIiwibW9kZUxhYmVsIiwic2Nhbl9tb2RlIiwiY291bnQiLCJzZXRUaW1lb3V0IiwiZGl2IiwiY2xhc3NOYW1lIiwiaDEiLCJwIiwiaXNfdHJhZGluZyIsInNwYW4iLCJidXR0b24iLCJvbkNsaWNrIiwiZGlzYWJsZWQiLCJtYXJrZXRfdGVtcGVyYXR1cmUiLCJoMiIsInJlY29tbWVuZGF0aW9ucyIsImxlbmd0aCIsImEiLCJocmVmIiwic3ZnIiwid2lkdGgiLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwicGF0aCIsImQiLCJzbGljZSIsIm1hcCIsInJlYyIsInNob3dMTE1Mb2FkaW5nIiwidHNfY29kZSJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./src/app/page.tsx\n");
/***/ }),
/***/ "(ssr)/./src/components/market-temp.tsx":
/*!****************************************!*\
!*** ./src/components/market-temp.tsx ***!
\****************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ MarketTemp)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/utils */ \"(ssr)/./src/lib/utils.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\nfunction MarketTemp({ data }) {\n if (!data) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass-card-static p-5 animate-fade-in-up\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-24 animate-shimmer rounded-lg\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 10,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 9,\n columnNumber: 7\n }, this);\n }\n const color = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_1__.getTempColor)(data.temperature);\n const label = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_1__.getTempLabel)(data.temperature);\n const ratio = data.up_count / Math.max(data.down_count, 1);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass-card-static p-5 animate-fade-in-up\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center justify-between mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold text-text-muted uppercase tracking-wider\",\n children: \"市场温度\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 22,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] text-text-muted font-mono tabular-nums\",\n children: data.trade_date\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 23,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 21,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative w-24 h-24 flex-shrink-0\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n viewBox: \"0 0 100 100\",\n className: \"w-full h-full -rotate-90\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"defs\", {\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"linearGradient\", {\n id: \"tempGrad\",\n x1: \"0%\",\n y1: \"0%\",\n x2: \"100%\",\n y2: \"0%\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"stop\", {\n offset: \"0%\",\n stopColor: color,\n stopOpacity: \"0.3\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 33,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"stop\", {\n offset: \"100%\",\n stopColor: color,\n stopOpacity: \"1\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 34,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 32,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 31,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"50\",\n cy: \"50\",\n r: \"40\",\n fill: \"none\",\n stroke: \"rgba(148,163,184,0.06)\",\n strokeWidth: \"7\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 37,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"50\",\n cy: \"50\",\n r: \"40\",\n fill: \"none\",\n stroke: \"url(#tempGrad)\",\n strokeWidth: \"7\",\n strokeDasharray: `${data.temperature * 2.51} 251`,\n strokeLinecap: \"round\",\n className: \"transition-all duration-1000 ease-out\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 38,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"50\",\n cy: \"50\",\n r: \"40\",\n fill: \"none\",\n stroke: color,\n strokeWidth: \"7\",\n strokeDasharray: `${data.temperature * 2.51} 251`,\n strokeLinecap: \"round\",\n opacity: \"0.2\",\n filter: \"blur(4px)\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 46,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 30,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0 flex flex-col items-center justify-center\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xl font-bold font-mono tabular-nums\",\n style: {\n color\n },\n children: data.temperature\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 56,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[9px] text-text-muted font-medium mt-0.5\",\n children: label\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 57,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 55,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 29,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 grid grid-cols-2 gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StatCard, {\n label: \"涨/跌\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400 font-mono tabular-nums\",\n children: data.up_count\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 64,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-text-muted/40\",\n children: \" / \"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 65,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-emerald-400 font-mono tabular-nums\",\n children: data.down_count\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 66,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 63,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StatCard, {\n label: \"涨跌比\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `font-mono tabular-nums font-medium ${ratio > 1 ? \"text-red-400\" : \"text-emerald-400\"}`,\n children: ratio.toFixed(2)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 69,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 68,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StatCard, {\n label: \"涨停\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400 font-mono tabular-nums font-medium\",\n children: data.limit_up_count\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 74,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 73,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(StatCard, {\n label: \"连板\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-orange-400 font-mono tabular-nums font-medium\",\n children: data.max_streak || \"-\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 77,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 76,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 62,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 27,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 20,\n columnNumber: 5\n }, this);\n}\nfunction StatCard({ label, children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white/[0.02] rounded-lg px-3 py-2 border border-white/[0.03]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[9px] text-text-muted mb-0.5 font-medium uppercase tracking-wider\",\n children: label\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 88,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 89,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/market-temp.tsx\",\n lineNumber: 87,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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OzBDQUNkLDRFQUFDTztvQ0FBS1YsV0FBVTs4Q0FBbURGLEtBQUt5QyxjQUFjOzs7Ozs7Ozs7OzswQ0FFeEYsOERBQUNGO2dDQUFTbEMsT0FBTTswQ0FDZCw0RUFBQ087b0NBQUtWLFdBQVU7OENBQXNERixLQUFLMEMsVUFBVSxJQUFJOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1yRztBQUVBLFNBQVNILFNBQVMsRUFBRWxDLEtBQUssRUFBRXNDLFFBQVEsRUFBZ0Q7SUFDakYscUJBQ0UsOERBQUMxQztRQUFJQyxXQUFVOzswQkFDYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7MEJBQTBFRzs7Ozs7OzBCQUN6Riw4REFBQ0o7Z0JBQUlDLFdBQVU7MEJBQVd5Qzs7Ozs7Ozs7Ozs7O0FBR2hDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0b2NrLWFnZW50LWZyb250ZW5kLy4vc3JjL2NvbXBvbmVudHMvbWFya2V0LXRlbXAudHN4P2VjNmMiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IGdldFRlbXBDb2xvciwgZ2V0VGVtcExhYmVsIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IE1hcmtldFRlbXBlcmF0dXJlRGF0YSB9IGZyb20gXCJAL2xpYi9hcGlcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gTWFya2V0VGVtcCh7IGRhdGEgfTogeyBkYXRhOiBNYXJrZXRUZW1wZXJhdHVyZURhdGEgfCBudWxsIH0pIHtcbiAgaWYgKCFkYXRhKSB7XG4gICAgcmV0dXJuIChcbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2xhc3MtY2FyZC1zdGF0aWMgcC01IGFuaW1hdGUtZmFkZS1pbi11cFwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImgtMjQgYW5pbWF0ZS1zaGltbWVyIHJvdW5kZWQtbGdcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IGNvbG9yID0gZ2V0VGVtcENvbG9yKGRhdGEudGVtcGVyYXR1cmUpO1xuICBjb25zdCBsYWJlbCA9IGdldFRlbXBMYWJlbChkYXRhLnRlbXBlcmF0dXJlKTtcbiAgY29uc3QgcmF0aW8gPSBkYXRhLnVwX2NvdW50IC8gTWF0aC5tYXgoZGF0YS5kb3duX2NvdW50LCAxKTtcblxuICByZXR1cm4gKFxuICAgIDxkaXYgY2xhc3NOYW1lPVwiZ2xhc3MtY2FyZC1zdGF0aWMgcC01IGFuaW1hdGUtZmFkZS1pbi11cFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gbWItNFwiPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtdGV4dC1tdXRlZCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXJcIj7luILlnLrmuKnluqY8L2gyPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSB0ZXh0LXRleHQtbXV0ZWQgZm9udC1tb25vIHRhYnVsYXItbnVtc1wiPntkYXRhLnRyYWRlX2RhdGV9PC9zcGFuPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBUZW1wZXJhdHVyZSBnYXVnZSArIHN0YXRzICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtNVwiPlxuICAgICAgICB7LyogQ2lyY3VsYXIgZ2F1Z2UgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmVsYXRpdmUgdy0yNCBoLTI0IGZsZXgtc2hyaW5rLTBcIj5cbiAgICAgICAgICA8c3ZnIHZpZXdCb3g9XCIwIDAgMTAwIDEwMFwiIGNsYXNzTmFtZT1cInctZnVsbCBoLWZ1bGwgLXJvdGF0ZS05MFwiPlxuICAgICAgICAgICAgPGRlZnM+XG4gICAgICAgICAgICAgIDxsaW5lYXJHcmFkaWVudCBpZD1cInRlbXBHcmFkXCIgeDE9XCIwJVwiIHkxPVwiMCVcIiB4Mj1cIjEwMCVcIiB5Mj1cIjAlXCI+XG4gICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMCVcIiBzdG9wQ29sb3I9e2NvbG9yfSBzdG9wT3BhY2l0eT1cIjAuM1wiIC8+XG4gICAgICAgICAgICAgICAgPHN0b3Agb2Zmc2V0PVwiMTAwJVwiIHN0b3BDb2xvcj17Y29sb3J9IHN0b3BPcGFjaXR5PVwiMVwiIC8+XG4gICAgICAgICAgICAgIDwvbGluZWFyR3JhZGllbnQ+XG4gICAgICAgICAgICA8L2RlZnM+XG4gICAgICAgICAgICA8Y2lyY2xlIGN4PVwiNTBcIiBjeT1cIjUwXCIgcj1cIjQwXCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJyZ2JhKDE0OCwxNjMsMTg0LDAuMDYpXCIgc3Ryb2tlV2lkdGg9XCI3XCIgLz5cbiAgICAgICAgICAgIDxjaXJjbGVcbiAgICAgICAgICAgICAgY3g9XCI1MFwiIGN5PVwiNTBcIiByPVwiNDBcIiBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cInVybCgjdGVtcEdyYWQpXCIgc3Ryb2tlV2lkdGg9XCI3XCJcbiAgICAgICAgICAgICAgc3Ryb2tlRGFzaGFycmF5PXtgJHtkYXRhLnRlbXBlcmF0dXJlICogMi41MX0gMjUxYH1cbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMTAwMCBlYXNlLW91dFwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgICAgey8qIEdsb3cgZWZmZWN0ICovfVxuICAgICAgICAgICAgPGNpcmNsZVxuICAgICAgICAgICAgICBjeD1cIjUwXCIgY3k9XCI1MFwiIHI9XCI0MFwiIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPXtjb2xvcn0gc3Ryb2tlV2lkdGg9XCI3XCJcbiAgICAgICAgICAgICAgc3Ryb2tlRGFzaGFycmF5PXtgJHtkYXRhLnRlbXBlcmF0dXJlICogMi41MX0gMjUxYH1cbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgb3BhY2l0eT1cIjAuMlwiXG4gICAgICAgICAgICAgIGZpbHRlcj1cImJsdXIoNHB4KVwiXG4gICAgICAgICAgICAvPlxuICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYWJzb2x1dGUgaW5zZXQtMCBmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlclwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14bCBmb250LWJvbGQgZm9udC1tb25vIHRhYnVsYXItbnVtc1wiIHN0eWxlPXt7IGNvbG9yIH19PntkYXRhLnRlbXBlcmF0dXJlfTwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzlweF0gdGV4dC10ZXh0LW11dGVkIGZvbnQtbWVkaXVtIG10LTAuNVwiPntsYWJlbH08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBTdGF0cyBncmlkICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBncmlkIGdyaWQtY29scy0yIGdhcC0yXCI+XG4gICAgICAgICAgPFN0YXRDYXJkIGxhYmVsPVwi5raoL+i3jFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1yZWQtNDAwIGZvbnQtbW9ubyB0YWJ1bGFyLW51bXNcIj57ZGF0YS51cF9jb3VudH08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXRleHQtbXV0ZWQvNDBcIj4gLyA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWVtZXJhbGQtNDAwIGZvbnQtbW9ubyB0YWJ1bGFyLW51bXNcIj57ZGF0YS5kb3duX2NvdW50fTwvc3Bhbj5cbiAgICAgICAgICA8L1N0YXRDYXJkPlxuICAgICAgICAgIDxTdGF0Q2FyZCBsYWJlbD1cIua2qOi3jOavlFwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgZm9udC1tb25vIHRhYnVsYXItbnVtcyBmb250LW1lZGl1bSAke3JhdGlvID4gMSA/IFwidGV4dC1yZWQtNDAwXCIgOiBcInRleHQtZW1lcmFsZC00MDBcIn1gfT5cbiAgICAgICAgICAgICAge3JhdGlvLnRvRml4ZWQoMil9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9TdGF0Q2FyZD5cbiAgICAgICAgICA8U3RhdENhcmQgbGFiZWw9XCLmtqjlgZxcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtcmVkLTQwMCBmb250LW1vbm8gdGFidWxhci1udW1zIGZvbnQtbWVkaXVtXCI+e2RhdGEubGltaXRfdXBfY291bnR9PC9zcGFuPlxuICAgICAgICAgIDwvU3RhdENhcmQ+XG4gICAgICAgICAgPFN0YXRDYXJkIGxhYmVsPVwi6L+e5p2/XCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW9yYW5nZS00MDAgZm9udC1tb25vIHRhYnVsYXItbnVtcyBmb250LW1lZGl1bVwiPntkYXRhLm1heF9zdHJlYWsgfHwgXCItXCJ9PC9zcGFuPlxuICAgICAgICAgIDwvU3RhdENhcmQ+XG4gICAgICAgIDwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFN0YXRDYXJkKHsgbGFiZWwsIGNoaWxkcmVuIH06IHsgbGFiZWw6IHN0cmluZzsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJiZy13aGl0ZS9bMC4wMl0gcm91bmRlZC1sZyBweC0zIHB5LTIgYm9yZGVyIGJvcmRlci13aGl0ZS9bMC4wM11cIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC1bOXB4XSB0ZXh0LXRleHQtbXV0ZWQgbWItMC41IGZvbnQtbWVkaXVtIHVwcGVyY2FzZSB0cmFja2luZy13aWRlclwiPntsYWJlbH08L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14c1wiPntjaGlsZHJlbn08L2Rpdj5cbiAgICA8L2Rpdj5cbiAgKTtcbn1cbiJdLCJuYW1lcyI6WyJnZXRUZW1wQ29sb3IiLCJnZXRUZW1wTGFiZWwiLCJNYXJrZXRUZW1wIiwiZGF0YSIsImRpdiIsImNsYXNzTmFtZSIsImNvbG9yIiwidGVtcGVyYXR1cmUiLCJsYWJlbCIsInJhdGlvIiwidXBfY291bnQiLCJNYXRoIiwibWF4IiwiZG93bl9jb3VudCIsImgyIiwic3BhbiIsInRyYWRlX2RhdGUiLCJzdmciLCJ2aWV3Qm94IiwiZGVmcyIsImxpbmVhckdyYWRpZW50IiwiaWQiLCJ4MSIsInkxIiwieDIiLCJ5MiIsInN0b3AiLCJvZmZzZXQiLCJzdG9wQ29sb3IiLCJzdG9wT3BhY2l0eSIsImNpcmNsZSIsImN4IiwiY3kiLCJyIiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwic3Ryb2tlRGFzaGFycmF5Iiwic3Ryb2tlTGluZWNhcCIsIm9wYWNpdHkiLCJmaWx0ZXIiLCJzdHlsZSIsIlN0YXRDYXJkIiwidG9GaXhlZCIsImxpbWl0X3VwX2NvdW50IiwibWF4X3N0cmVhayIsImNoaWxkcmVuIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/components/market-temp.tsx\n");
/***/ }),
/***/ "(ssr)/./src/components/sector-heatmap.tsx":
/*!*******************************************!*\
!*** ./src/components/sector-heatmap.tsx ***!
\*******************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ SectorHeatmap)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/utils */ \"(ssr)/./src/lib/utils.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\nfunction SectorHeatmap({ sectors }) {\n if (!sectors.length) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass-card-static p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold text-text-muted uppercase tracking-wider mb-4\",\n children: \"热门板块\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 10,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-text-muted text-center py-6\",\n children: \"暂无数据\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 11,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 9,\n columnNumber: 7\n }, this);\n }\n const maxScore = Math.max(...sectors.map((s)=>s.heat_score));\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"glass-card-static p-5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold text-text-muted uppercase tracking-wider mb-4\",\n children: \"热门板块\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 20,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1.5\",\n children: sectors.map((s, index)=>{\n const intensity = s.heat_score / Math.max(maxScore, 1);\n const isUp = s.pct_change > 0;\n const barColor = isUp ? `rgba(239, 68, 68, ${0.08 + intensity * 0.15})` : `rgba(34, 197, 94, ${0.08 + intensity * 0.15})`;\n const accentColor = isUp ? `rgba(239, 68, 68, ${0.4 + intensity * 0.6})` : `rgba(34, 197, 94, ${0.4 + intensity * 0.6})`;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative rounded-lg overflow-hidden animate-fade-in-up\",\n style: {\n animationDelay: `${index * 50}ms`\n },\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute inset-0\",\n style: {\n backgroundColor: barColor\n }\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 38,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"absolute left-0 top-0 bottom-0 w-0.5\",\n style: {\n backgroundColor: accentColor\n }\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 43,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"relative flex items-center justify-between px-4 py-2.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-medium\",\n children: s.sector_name\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 49,\n columnNumber: 19\n }, this),\n s.limit_up_count > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] text-text-muted bg-white/[0.04] px-1.5 py-0.5 rounded\",\n children: [\n \"涨停 \",\n s.limit_up_count\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 51,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 48,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3 text-xs\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `font-mono tabular-nums ${s.capital_inflow > 0 ? \"text-red-400\" : \"text-emerald-400\"}`,\n children: [\n s.capital_inflow > 0 ? \"+\" : \"\",\n (0,_lib_utils__WEBPACK_IMPORTED_MODULE_1__.formatNumber)(s.capital_inflow)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 57,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `font-mono tabular-nums font-medium ${isUp ? \"text-red-400\" : \"text-emerald-400\"}`,\n children: [\n s.pct_change > 0 ? \"+\" : \"\",\n s.pct_change.toFixed(2),\n \"%\"\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 61,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-orange-400/80 font-mono tabular-nums text-[10px] bg-orange-500/[0.08] px-1.5 py-0.5 rounded\",\n children: s.heat_score.toFixed(0)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 65,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 56,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 47,\n columnNumber: 15\n }, this)\n ]\n }, s.sector_code, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 32,\n columnNumber: 13\n }, this);\n })\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 21,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/sector-heatmap.tsx\",\n lineNumber: 19,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvY29tcG9uZW50cy9zZWN0b3ItaGVhdG1hcC50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFHMkM7QUFFNUIsU0FBU0MsY0FBYyxFQUFFQyxPQUFPLEVBQTZCO0lBQzFFLElBQUksQ0FBQ0EsUUFBUUMsTUFBTSxFQUFFO1FBQ25CLHFCQUNFLDhEQUFDQztZQUFJQyxXQUFVOzs4QkFDYiw4REFBQ0M7b0JBQUdELFdBQVU7OEJBQXNFOzs7Ozs7OEJBQ3BGLDhEQUFDRDtvQkFBSUMsV0FBVTs4QkFBMkM7Ozs7Ozs7Ozs7OztJQUdoRTtJQUVBLE1BQU1FLFdBQVdDLEtBQUtDLEdBQUcsSUFBSVAsUUFBUVEsR0FBRyxDQUFDLENBQUNDLElBQU1BLEVBQUVDLFVBQVU7SUFFNUQscUJBQ0UsOERBQUNSO1FBQUlDLFdBQVU7OzBCQUNiLDhEQUFDQztnQkFBR0QsV0FBVTswQkFBc0U7Ozs7OzswQkFDcEYsOERBQUNEO2dCQUFJQyxXQUFVOzBCQUNaSCxRQUFRUSxHQUFHLENBQUMsQ0FBQ0MsR0FBR0U7b0JBQ2YsTUFBTUMsWUFBWUgsRUFBRUMsVUFBVSxHQUFHSixLQUFLQyxHQUFHLENBQUNGLFVBQVU7b0JBQ3BELE1BQU1RLE9BQU9KLEVBQUVLLFVBQVUsR0FBRztvQkFDNUIsTUFBTUMsV0FBV0YsT0FDYixDQUFDLGtCQUFrQixFQUFFLE9BQU9ELFlBQVksS0FBSyxDQUFDLENBQUMsR0FDL0MsQ0FBQyxrQkFBa0IsRUFBRSxPQUFPQSxZQUFZLEtBQUssQ0FBQyxDQUFDO29CQUNuRCxNQUFNSSxjQUFjSCxPQUNoQixDQUFDLGtCQUFrQixFQUFFLE1BQU1ELFlBQVksSUFBSSxDQUFDLENBQUMsR0FDN0MsQ0FBQyxrQkFBa0IsRUFBRSxNQUFNQSxZQUFZLElBQUksQ0FBQyxDQUFDO29CQUNqRCxxQkFDRSw4REFBQ1Y7d0JBRUNDLFdBQVU7d0JBQ1ZjLE9BQU87NEJBQUVDLGdCQUFnQixDQUFDLEVBQUVQLFFBQVEsR0FBRyxFQUFFLENBQUM7d0JBQUM7OzBDQUczQyw4REFBQ1Q7Z0NBQ0NDLFdBQVU7Z0NBQ1ZjLE9BQU87b0NBQUVFLGlCQUFpQko7Z0NBQVM7Ozs7OzswQ0FHckMsOERBQUNiO2dDQUNDQyxXQUFVO2dDQUNWYyxPQUFPO29DQUFFRSxpQkFBaUJIO2dDQUFZOzs7Ozs7MENBRXhDLDhEQUFDZDtnQ0FBSUMsV0FBVTs7a0RBQ2IsOERBQUNEO3dDQUFJQyxXQUFVOzswREFDYiw4REFBQ2lCO2dEQUFLakIsV0FBVTswREFBdUJNLEVBQUVZLFdBQVc7Ozs7Ozs0Q0FDbkRaLEVBQUVhLGNBQWMsR0FBRyxtQkFDbEIsOERBQUNGO2dEQUFLakIsV0FBVTs7b0RBQW9FO29EQUM5RU0sRUFBRWEsY0FBYzs7Ozs7Ozs7Ozs7OztrREFJMUIsOERBQUNwQjt3Q0FBSUMsV0FBVTs7MERBQ2IsOERBQUNpQjtnREFBS2pCLFdBQVcsQ0FBQyx1QkFBdUIsRUFBRU0sRUFBRWMsY0FBYyxHQUFHLElBQUksaUJBQWlCLG1CQUFtQixDQUFDOztvREFDcEdkLEVBQUVjLGNBQWMsR0FBRyxJQUFJLE1BQU07b0RBQzdCekIsd0RBQVlBLENBQUNXLEVBQUVjLGNBQWM7Ozs7Ozs7MERBRWhDLDhEQUFDSDtnREFBS2pCLFdBQVcsQ0FBQyxtQ0FBbUMsRUFBRVUsT0FBTyxpQkFBaUIsbUJBQW1CLENBQUM7O29EQUNoR0osRUFBRUssVUFBVSxHQUFHLElBQUksTUFBTTtvREFDekJMLEVBQUVLLFVBQVUsQ0FBQ1UsT0FBTyxDQUFDO29EQUFHOzs7Ozs7OzBEQUUzQiw4REFBQ0o7Z0RBQUtqQixXQUFVOzBEQUNiTSxFQUFFQyxVQUFVLENBQUNjLE9BQU8sQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozt1QkFqQ3ZCZixFQUFFZ0IsV0FBVzs7Ozs7Z0JBdUN4Qjs7Ozs7Ozs7Ozs7O0FBSVIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9hc3RvY2stYWdlbnQtZnJvbnRlbmQvLi9zcmMvY29tcG9uZW50cy9zZWN0b3ItaGVhdG1hcC50c3g/Y2YwYSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHR5cGUgeyBTZWN0b3JEYXRhIH0gZnJvbSBcIkAvbGliL2FwaVwiO1xuaW1wb3J0IHsgZm9ybWF0TnVtYmVyIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFNlY3RvckhlYXRtYXAoeyBzZWN0b3JzIH06IHsgc2VjdG9yczogU2VjdG9yRGF0YVtdIH0pIHtcbiAgaWYgKCFzZWN0b3JzLmxlbmd0aCkge1xuICAgIHJldHVybiAoXG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImdsYXNzLWNhcmQtc3RhdGljIHAtNVwiPlxuICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtdGV4dC1tdXRlZCB1cHBlcmNhc2UgdHJhY2tpbmctd2lkZXIgbWItNFwiPueDremXqOadv+WdlzwvaDI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXRleHQtbXV0ZWQgdGV4dC1jZW50ZXIgcHktNlwiPuaaguaXoOaVsOaNrjwvZGl2PlxuICAgICAgPC9kaXY+XG4gICAgKTtcbiAgfVxuXG4gIGNvbnN0IG1heFNjb3JlID0gTWF0aC5tYXgoLi4uc2VjdG9ycy5tYXAoKHMpID0+IHMuaGVhdF9zY29yZSkpO1xuXG4gIHJldHVybiAoXG4gICAgPGRpdiBjbGFzc05hbWU9XCJnbGFzcy1jYXJkLXN0YXRpYyBwLTVcIj5cbiAgICAgIDxoMiBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC10ZXh0LW11dGVkIHVwcGVyY2FzZSB0cmFja2luZy13aWRlciBtYi00XCI+54Ot6Zeo5p2/5Z2XPC9oMj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0xLjVcIj5cbiAgICAgICAge3NlY3RvcnMubWFwKChzLCBpbmRleCkgPT4ge1xuICAgICAgICAgIGNvbnN0IGludGVuc2l0eSA9IHMuaGVhdF9zY29yZSAvIE1hdGgubWF4KG1heFNjb3JlLCAxKTtcbiAgICAgICAgICBjb25zdCBpc1VwID0gcy5wY3RfY2hhbmdlID4gMDtcbiAgICAgICAgICBjb25zdCBiYXJDb2xvciA9IGlzVXBcbiAgICAgICAgICAgID8gYHJnYmEoMjM5LCA2OCwgNjgsICR7MC4wOCArIGludGVuc2l0eSAqIDAuMTV9KWBcbiAgICAgICAgICAgIDogYHJnYmEoMzQsIDE5NywgOTQsICR7MC4wOCArIGludGVuc2l0eSAqIDAuMTV9KWA7XG4gICAgICAgICAgY29uc3QgYWNjZW50Q29sb3IgPSBpc1VwXG4gICAgICAgICAgICA/IGByZ2JhKDIzOSwgNjgsIDY4LCAkezAuNCArIGludGVuc2l0eSAqIDAuNn0pYFxuICAgICAgICAgICAgOiBgcmdiYSgzNCwgMTk3LCA5NCwgJHswLjQgKyBpbnRlbnNpdHkgKiAwLjZ9KWA7XG4gICAgICAgICAgcmV0dXJuIChcbiAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAga2V5PXtzLnNlY3Rvcl9jb2RlfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyZWxhdGl2ZSByb3VuZGVkLWxnIG92ZXJmbG93LWhpZGRlbiBhbmltYXRlLWZhZGUtaW4tdXBcIlxuICAgICAgICAgICAgICBzdHlsZT17eyBhbmltYXRpb25EZWxheTogYCR7aW5kZXggKiA1MH1tc2AgfX1cbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgey8qIEJhY2tncm91bmQgZmlsbCAqL31cbiAgICAgICAgICAgICAgPGRpdlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cImFic29sdXRlIGluc2V0LTBcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogYmFyQ29sb3IgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgey8qIExlZnQgYWNjZW50IGxpbmUgKi99XG4gICAgICAgICAgICAgIDxkaXZcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJhYnNvbHV0ZSBsZWZ0LTAgdG9wLTAgYm90dG9tLTAgdy0wLjVcIlxuICAgICAgICAgICAgICAgIHN0eWxlPXt7IGJhY2tncm91bmRDb2xvcjogYWNjZW50Q29sb3IgfX1cbiAgICAgICAgICAgICAgLz5cbiAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJyZWxhdGl2ZSBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0yLjVcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yLjVcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1tZWRpdW1cIj57cy5zZWN0b3JfbmFtZX08L3NwYW4+XG4gICAgICAgICAgICAgICAgICB7cy5saW1pdF91cF9jb3VudCA+IDAgJiYgKFxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSB0ZXh0LXRleHQtbXV0ZWQgYmctd2hpdGUvWzAuMDRdIHB4LTEuNSBweS0wLjUgcm91bmRlZFwiPlxuICAgICAgICAgICAgICAgICAgICAgIOa2qOWBnCB7cy5saW1pdF91cF9jb3VudH1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zIHRleHQteHNcIj5cbiAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT17YGZvbnQtbW9ubyB0YWJ1bGFyLW51bXMgJHtzLmNhcGl0YWxfaW5mbG93ID4gMCA/IFwidGV4dC1yZWQtNDAwXCIgOiBcInRleHQtZW1lcmFsZC00MDBcIn1gfT5cbiAgICAgICAgICAgICAgICAgICAge3MuY2FwaXRhbF9pbmZsb3cgPiAwID8gXCIrXCIgOiBcIlwifVxuICAgICAgICAgICAgICAgICAgICB7Zm9ybWF0TnVtYmVyKHMuY2FwaXRhbF9pbmZsb3cpfVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPXtgZm9udC1tb25vIHRhYnVsYXItbnVtcyBmb250LW1lZGl1bSAke2lzVXAgPyBcInRleHQtcmVkLTQwMFwiIDogXCJ0ZXh0LWVtZXJhbGQtNDAwXCJ9YH0+XG4gICAgICAgICAgICAgICAgICAgIHtzLnBjdF9jaGFuZ2UgPiAwID8gXCIrXCIgOiBcIlwifVxuICAgICAgICAgICAgICAgICAgICB7cy5wY3RfY2hhbmdlLnRvRml4ZWQoMil9JVxuICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1vcmFuZ2UtNDAwLzgwIGZvbnQtbW9ubyB0YWJ1bGFyLW51bXMgdGV4dC1bMTBweF0gYmctb3JhbmdlLTUwMC9bMC4wOF0gcHgtMS41IHB5LTAuNSByb3VuZGVkXCI+XG4gICAgICAgICAgICAgICAgICAgIHtzLmhlYXRfc2NvcmUudG9GaXhlZCgwKX1cbiAgICAgICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICApO1xuICAgICAgICB9KX1cbiAgICAgIDwvZGl2PlxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm5hbWVzIjpbImZvcm1hdE51bWJlciIsIlNlY3RvckhlYXRtYXAiLCJzZWN0b3JzIiwibGVuZ3RoIiwiZGl2IiwiY2xhc3NOYW1lIiwiaDIiLCJtYXhTY29yZSIsIk1hdGgiLCJtYXgiLCJtYXAiLCJzIiwiaGVhdF9zY29yZSIsImluZGV4IiwiaW50ZW5zaXR5IiwiaXNVcCIsInBjdF9jaGFuZ2UiLCJiYXJDb2xvciIsImFjY2VudENvbG9yIiwic3R5bGUiLCJhbmltYXRpb25EZWxheSIsImJhY2tncm91bmRDb2xvciIsInNwYW4iLCJzZWN0b3JfbmFtZSIsImxpbWl0X3VwX2NvdW50IiwiY2FwaXRhbF9pbmZsb3ciLCJ0b0ZpeGVkIiwic2VjdG9yX2NvZGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./src/components/sector-heatmap.tsx\n");
/***/ }),
/***/ "(ssr)/./src/components/stock-card.tsx":
/*!***************************************!*\
!*** ./src/components/stock-card.tsx ***!
\***************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ StockCard)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _lib_utils__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @/lib/utils */ \"(ssr)/./src/lib/utils.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\nfunction StockCard({ rec, showLLMLoading = false }) {\n const badge = (0,_lib_utils__WEBPACK_IMPORTED_MODULE_1__.getLevelBadge)(rec.level);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: `/stock/${rec.ts_code}`,\n className: \"block glass-card p-5 group\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-start justify-between mb-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-semibold text-sm tracking-tight\",\n children: rec.name\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 18,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: `text-xs px-2 py-0.5 rounded-full font-medium ${badge.bg} ${badge.text}`,\n children: rec.level\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 19,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 17,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-text-muted mt-1 font-mono tabular-nums\",\n children: [\n rec.ts_code,\n \" \",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-text-muted/40 mx-1\",\n children: \"\\xb7\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 24,\n columnNumber: 27\n }, this),\n \" \",\n rec.sector\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 23,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 16,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-right\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `text-xl font-bold font-mono tabular-nums tracking-tight ${(0,_lib_utils__WEBPACK_IMPORTED_MODULE_1__.getScoreColor)(rec.score)}`,\n children: rec.score\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 28,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `text-xs font-semibold tracking-wider ${(0,_lib_utils__WEBPACK_IMPORTED_MODULE_1__.getSignalColor)(rec.signal)}`,\n children: rec.signal === \"BUY\" ? \"买入\" : rec.signal === \"SELL\" ? \"卖出\" : \"持有\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 31,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 27,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-4 gap-2 mb-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ScoreBar, {\n label: \"市场\",\n value: rec.market_temp_score\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 39,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ScoreBar, {\n label: \"板块\",\n value: rec.sector_score\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 40,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ScoreBar, {\n label: \"资金\",\n value: rec.capital_score\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 41,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ScoreBar, {\n label: \"技术\",\n value: rec.technical_score\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 42,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 38,\n columnNumber: 7\n }, this),\n rec.entry_price && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between text-xs mb-3 bg-white/[0.03] rounded-xl px-4 py-2.5 border border-white/[0.04]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-text-muted\",\n children: \"买入 \"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 49,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-red-400 font-mono tabular-nums\",\n children: rec.entry_price\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 50,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 48,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-text-muted\",\n children: \"目标 \"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 53,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-orange-400 font-mono tabular-nums\",\n children: rec.target_price\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 54,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 52,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-text-muted\",\n children: \"止损 \"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 57,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-emerald-400 font-mono tabular-nums\",\n children: rec.stop_loss\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 58,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 56,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 47,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"space-y-1.5\",\n children: rec.reasons.map((r, i)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-text-secondary flex items-start gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1 h-1 rounded-full bg-orange-500/60 mt-[7px] shrink-0\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 67,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"leading-relaxed\",\n children: r\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 68,\n columnNumber: 13\n }, this)\n ]\n }, i, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 66,\n columnNumber: 11\n }, this))\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 64,\n columnNumber: 7\n }, this),\n rec.llm_analysis ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 bg-accent-indigo/[0.06] border border-accent-indigo/[0.12] rounded-xl px-4 py-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-accent-indigo/80 font-semibold tracking-wider mb-1.5\",\n children: \"AI 分析\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 76,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-xs text-text-secondary leading-relaxed\",\n children: rec.llm_analysis\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 77,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 75,\n columnNumber: 9\n }, this) : showLLMLoading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 text-xs text-text-muted flex items-center gap-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"inline-block w-3 h-3 border border-accent-indigo/30 border-t-accent-indigo/80 rounded-full animate-spin\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 83,\n columnNumber: 11\n }, this),\n \"AI 分析中...\"\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 82,\n columnNumber: 9\n }, this) : null,\n rec.risk_note && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 text-xs text-amber-500/60 bg-amber-500/[0.04] border border-amber-500/[0.08] rounded-lg px-3 py-1.5\",\n children: rec.risk_note\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 90,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 flex items-center gap-1 text-xs text-text-muted opacity-0 group-hover:opacity-100 transition-opacity duration-300\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"查看详情\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 97,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"10\",\n height: \"10\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"2\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M5 12h14M12 5l7 7-7 7\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 99,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 98,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 96,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 10,\n columnNumber: 5\n }, this);\n}\nfunction ScoreBar({ label, value }) {\n const width = Math.min(value, 100);\n const gradientClass = value >= 70 ? \"score-bar-gradient-high\" : value >= 50 ? \"score-bar-gradient-mid\" : \"score-bar-gradient-low\";\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-between text-xs text-text-muted mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: label\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 112,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-mono tabular-nums\",\n children: value.toFixed(0)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 113,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 111,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"h-1.5 bg-white/[0.04] rounded-full overflow-hidden\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: `h-full rounded-full transition-all duration-700 ease-out ${gradientClass}`,\n style: {\n width: `${width}%`\n }\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 116,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 115,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/components/stock-card.tsx\",\n lineNumber: 110,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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Olsid2VicGFjazovL2FzdG9jay1hZ2VudC1mcm9udGVuZC8uL3NyYy9jb21wb25lbnRzL3N0b2NrLWNhcmQudHN4PzE4Y2YiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7IGdldExldmVsQmFkZ2UsIGdldFNpZ25hbENvbG9yLCBnZXRTY29yZUNvbG9yIH0gZnJvbSBcIkAvbGliL3V0aWxzXCI7XG5pbXBvcnQgdHlwZSB7IFJlY29tbWVuZGF0aW9uRGF0YSB9IGZyb20gXCJAL2xpYi9hcGlcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gU3RvY2tDYXJkKHsgcmVjLCBzaG93TExNTG9hZGluZyA9IGZhbHNlIH06IHsgcmVjOiBSZWNvbW1lbmRhdGlvbkRhdGE7IHNob3dMTE1Mb2FkaW5nPzogYm9vbGVhbiB9KSB7XG4gIGNvbnN0IGJhZGdlID0gZ2V0TGV2ZWxCYWRnZShyZWMubGV2ZWwpO1xuXG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGhyZWY9e2Avc3RvY2svJHtyZWMudHNfY29kZX1gfVxuICAgICAgY2xhc3NOYW1lPVwiYmxvY2sgZ2xhc3MtY2FyZCBwLTUgZ3JvdXBcIlxuICAgID5cbiAgICAgIHsvKiBIZWFkZXI6IE5hbWUgKyBTY29yZSAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1zdGFydCBqdXN0aWZ5LWJldHdlZW4gbWItM1wiPlxuICAgICAgICA8ZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtc2VtaWJvbGQgdGV4dC1zbSB0cmFja2luZy10aWdodFwiPntyZWMubmFtZX08L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9e2B0ZXh0LXhzIHB4LTIgcHktMC41IHJvdW5kZWQtZnVsbCBmb250LW1lZGl1bSAke2JhZGdlLmJnfSAke2JhZGdlLnRleHR9YH0+XG4gICAgICAgICAgICAgIHtyZWMubGV2ZWx9XG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtdGV4dC1tdXRlZCBtdC0xIGZvbnQtbW9ubyB0YWJ1bGFyLW51bXNcIj5cbiAgICAgICAgICAgIHtyZWMudHNfY29kZX0gPHNwYW4gY2xhc3NOYW1lPVwidGV4dC10ZXh0LW11dGVkLzQwIG14LTFcIj7Ctzwvc3Bhbj4ge3JlYy5zZWN0b3J9XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgIDwvZGl2PlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtcmlnaHRcIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT17YHRleHQteGwgZm9udC1ib2xkIGZvbnQtbW9ubyB0YWJ1bGFyLW51bXMgdHJhY2tpbmctdGlnaHQgJHtnZXRTY29yZUNvbG9yKHJlYy5zY29yZSl9YH0+XG4gICAgICAgICAgICB7cmVjLnNjb3JlfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPXtgdGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLXdpZGVyICR7Z2V0U2lnbmFsQ29sb3IocmVjLnNpZ25hbCl9YH0+XG4gICAgICAgICAgICB7cmVjLnNpZ25hbCA9PT0gXCJCVVlcIiA/IFwi5Lmw5YWlXCIgOiByZWMuc2lnbmFsID09PSBcIlNFTExcIiA/IFwi5Y2W5Ye6XCIgOiBcIuaMgeaciVwifVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogRm91ciBkaW1lbnNpb24gc2NvcmUgYmFycyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZ3JpZCBncmlkLWNvbHMtNCBnYXAtMiBtYi00XCI+XG4gICAgICAgIDxTY29yZUJhciBsYWJlbD1cIuW4guWculwiIHZhbHVlPXtyZWMubWFya2V0X3RlbXBfc2NvcmV9IC8+XG4gICAgICAgIDxTY29yZUJhciBsYWJlbD1cIuadv+Wdl1wiIHZhbHVlPXtyZWMuc2VjdG9yX3Njb3JlfSAvPlxuICAgICAgICA8U2NvcmVCYXIgbGFiZWw9XCLotYTph5FcIiB2YWx1ZT17cmVjLmNhcGl0YWxfc2NvcmV9IC8+XG4gICAgICAgIDxTY29yZUJhciBsYWJlbD1cIuaKgOacr1wiIHZhbHVlPXtyZWMudGVjaG5pY2FsX3Njb3JlfSAvPlxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBQcmljZSByZWZlcmVuY2UgKi99XG4gICAgICB7cmVjLmVudHJ5X3ByaWNlICYmIChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYmV0d2VlbiB0ZXh0LXhzIG1iLTMgYmctd2hpdGUvWzAuMDNdIHJvdW5kZWQteGwgcHgtNCBweS0yLjUgYm9yZGVyIGJvcmRlci13aGl0ZS9bMC4wNF1cIj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC10ZXh0LW11dGVkXCI+5Lmw5YWlIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtcmVkLTQwMCBmb250LW1vbm8gdGFidWxhci1udW1zXCI+e3JlYy5lbnRyeV9wcmljZX08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtdGV4dC1tdXRlZFwiPuebruaghyA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LW9yYW5nZS00MDAgZm9udC1tb25vIHRhYnVsYXItbnVtc1wiPntyZWMudGFyZ2V0X3ByaWNlfTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC10ZXh0LW11dGVkXCI+5q2i5o2fIDwvc3Bhbj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtZW1lcmFsZC00MDAgZm9udC1tb25vIHRhYnVsYXItbnVtc1wiPntyZWMuc3RvcF9sb3NzfTwvc3Bhbj5cbiAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogUmVhc29ucyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwic3BhY2UteS0xLjVcIj5cbiAgICAgICAge3JlYy5yZWFzb25zLm1hcCgociwgaSkgPT4gKFxuICAgICAgICAgIDxkaXYga2V5PXtpfSBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtdGV4dC1zZWNvbmRhcnkgZmxleCBpdGVtcy1zdGFydCBnYXAtMlwiPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0xIGgtMSByb3VuZGVkLWZ1bGwgYmctb3JhbmdlLTUwMC82MCBtdC1bN3B4XSBzaHJpbmstMFwiIC8+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJsZWFkaW5nLXJlbGF4ZWRcIj57cn08L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICkpfVxuICAgICAgPC9kaXY+XG5cbiAgICAgIHsvKiBBSSBBbmFseXNpcyAqL31cbiAgICAgIHtyZWMubGxtX2FuYWx5c2lzID8gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgYmctYWNjZW50LWluZGlnby9bMC4wNl0gYm9yZGVyIGJvcmRlci1hY2NlbnQtaW5kaWdvL1swLjEyXSByb3VuZGVkLXhsIHB4LTQgcHktM1wiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LWFjY2VudC1pbmRpZ28vODAgZm9udC1zZW1pYm9sZCB0cmFja2luZy13aWRlciBtYi0xLjVcIj5BSSDliIbmnpA8L2Rpdj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC10ZXh0LXNlY29uZGFyeSBsZWFkaW5nLXJlbGF4ZWRcIj5cbiAgICAgICAgICAgIHtyZWMubGxtX2FuYWx5c2lzfVxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L2Rpdj5cbiAgICAgICkgOiBzaG93TExNTG9hZGluZyA/IChcbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0zIHRleHQteHMgdGV4dC10ZXh0LW11dGVkIGZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaW5saW5lLWJsb2NrIHctMyBoLTMgYm9yZGVyIGJvcmRlci1hY2NlbnQtaW5kaWdvLzMwIGJvcmRlci10LWFjY2VudC1pbmRpZ28vODAgcm91bmRlZC1mdWxsIGFuaW1hdGUtc3BpblwiIC8+XG4gICAgICAgICAgQUkg5YiG5p6Q5LitLi4uXG4gICAgICAgIDwvZGl2PlxuICAgICAgKSA6IG51bGx9XG5cbiAgICAgIHsvKiBSaXNrIG5vdGUgKi99XG4gICAgICB7cmVjLnJpc2tfbm90ZSAmJiAoXG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXQtMyB0ZXh0LXhzIHRleHQtYW1iZXItNTAwLzYwIGJnLWFtYmVyLTUwMC9bMC4wNF0gYm9yZGVyIGJvcmRlci1hbWJlci01MDAvWzAuMDhdIHJvdW5kZWQtbGcgcHgtMyBweS0xLjVcIj5cbiAgICAgICAgICB7cmVjLnJpc2tfbm90ZX1cbiAgICAgICAgPC9kaXY+XG4gICAgICApfVxuXG4gICAgICB7LyogSG92ZXIgaW5kaWNhdG9yICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJtdC0zIGZsZXggaXRlbXMtY2VudGVyIGdhcC0xIHRleHQteHMgdGV4dC10ZXh0LW11dGVkIG9wYWNpdHktMCBncm91cC1ob3ZlcjpvcGFjaXR5LTEwMCB0cmFuc2l0aW9uLW9wYWNpdHkgZHVyYXRpb24tMzAwXCI+XG4gICAgICAgIDxzcGFuPuafpeeci+ivpuaDhTwvc3Bhbj5cbiAgICAgICAgPHN2ZyB3aWR0aD1cIjEwXCIgaGVpZ2h0PVwiMTBcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjJcIiBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCI+XG4gICAgICAgICAgPHBhdGggZD1cIk01IDEyaDE0TTEyIDVsNyA3LTcgN1wiIC8+XG4gICAgICAgIDwvc3ZnPlxuICAgICAgPC9kaXY+XG4gICAgPC9hPlxuICApO1xufVxuXG5mdW5jdGlvbiBTY29yZUJhcih7IGxhYmVsLCB2YWx1ZSB9OiB7IGxhYmVsOiBzdHJpbmc7IHZhbHVlOiBudW1iZXIgfSkge1xuICBjb25zdCB3aWR0aCA9IE1hdGgubWluKHZhbHVlLCAxMDApO1xuICBjb25zdCBncmFkaWVudENsYXNzID0gdmFsdWUgPj0gNzAgPyBcInNjb3JlLWJhci1ncmFkaWVudC1oaWdoXCIgOiB2YWx1ZSA+PSA1MCA/IFwic2NvcmUtYmFyLWdyYWRpZW50LW1pZFwiIDogXCJzY29yZS1iYXItZ3JhZGllbnQtbG93XCI7XG4gIHJldHVybiAoXG4gICAgPGRpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBqdXN0aWZ5LWJldHdlZW4gdGV4dC14cyB0ZXh0LXRleHQtbXV0ZWQgbWItMVwiPlxuICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJmb250LW1lZGl1bVwiPntsYWJlbH08L3NwYW4+XG4gICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbW9ubyB0YWJ1bGFyLW51bXNcIj57dmFsdWUudG9GaXhlZCgwKX08L3NwYW4+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiaC0xLjUgYmctd2hpdGUvWzAuMDRdIHJvdW5kZWQtZnVsbCBvdmVyZmxvdy1oaWRkZW5cIj5cbiAgICAgICAgPGRpdlxuICAgICAgICAgIGNsYXNzTmFtZT17YGgtZnVsbCByb3VuZGVkLWZ1bGwgdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tNzAwIGVhc2Utb3V0ICR7Z3JhZGllbnRDbGFzc31gfVxuICAgICAgICAgIHN0eWxlPXt7IHdpZHRoOiBgJHt3aWR0aH0lYCB9fVxuICAgICAgICAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9kaXY+XG4gICk7XG59XG4iXSwibmFtZXMiOlsiZ2V0TGV2ZWxCYWRnZSIsImdldFNpZ25hbENvbG9yIiwiZ2V0U2NvcmVDb2xvciIsIlN0b2NrQ2FyZCIsInJlYyIsInNob3dMTE1Mb2FkaW5nIiwiYmFkZ2UiLCJsZXZlbCIsImEiLCJocmVmIiwidHNfY29kZSIsImNsYXNzTmFtZSIsImRpdiIsInNwYW4iLCJuYW1lIiwiYmciLCJ0ZXh0Iiwic2VjdG9yIiwic2NvcmUiLCJzaWduYWwiLCJTY29yZUJhciIsImxhYmVsIiwidmFsdWUiLCJtYXJrZXRfdGVtcF9zY29yZSIsInNlY3Rvcl9zY29yZSIsImNhcGl0YWxfc2NvcmUiLCJ0ZWNobmljYWxfc2NvcmUiLCJlbnRyeV9wcmljZSIsInRhcmdldF9wcmljZSIsInN0b3BfbG9zcyIsInJlYXNvbnMiLCJtYXAiLCJyIiwiaSIsImxsbV9hbmFseXNpcyIsInJpc2tfbm90ZSIsInN2ZyIsIndpZHRoIiwiaGVpZ2h0Iiwidmlld0JveCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsInBhdGgiLCJkIiwiTWF0aCIsIm1pbiIsImdyYWRpZW50Q2xhc3MiLCJ0b0ZpeGVkIiwic3R5bGUiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./src/components/stock-card.tsx\n");
/***/ }),
/***/ "(ssr)/./src/hooks/use-websocket.ts":
/*!************************************!*\
!*** ./src/hooks/use-websocket.ts ***!
\************************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ useWebSocket: () => (/* binding */ useWebSocket)\n/* harmony export */ });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ \"(ssr)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/ssr/react.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* __next_internal_client_entry_do_not_use__ useWebSocket auto */ \nfunction useWebSocket(onMessage) {\n const [connected, setConnected] = (0,react__WEBPACK_IMPORTED_MODULE_0__.useState)(false);\n const wsRef = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)(null);\n const reconnectTimer = (0,react__WEBPACK_IMPORTED_MODULE_0__.useRef)();\n const connect = (0,react__WEBPACK_IMPORTED_MODULE_0__.useCallback)(()=>{\n const protocol = window.location.protocol === \"https:\" ? \"wss:\" : \"ws:\";\n const ws = new WebSocket(`${protocol}//${window.location.host}/ws`);\n ws.onopen = ()=>{\n setConnected(true);\n // 心跳\n const heartbeat = setInterval(()=>{\n if (ws.readyState === WebSocket.OPEN) ws.send(\"ping\");\n }, 30000);\n ws.addEventListener(\"close\", ()=>clearInterval(heartbeat));\n };\n ws.onmessage = (event)=>{\n if (event.data === \"pong\") return;\n try {\n const data = JSON.parse(event.data);\n onMessage?.(data);\n } catch {\n // ignore\n }\n };\n ws.onclose = ()=>{\n setConnected(false);\n reconnectTimer.current = setTimeout(connect, 5000);\n };\n ws.onerror = ()=>ws.close();\n wsRef.current = ws;\n }, [\n onMessage\n ]);\n (0,react__WEBPACK_IMPORTED_MODULE_0__.useEffect)(()=>{\n connect();\n return ()=>{\n clearTimeout(reconnectTimer.current);\n wsRef.current?.close();\n };\n }, [\n connect\n ]);\n return {\n connected\n };\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvaG9va3MvdXNlLXdlYnNvY2tldC50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7a0VBRWlFO0FBTzFELFNBQVNJLGFBQWFDLFNBQXFDO0lBQ2hFLE1BQU0sQ0FBQ0MsV0FBV0MsYUFBYSxHQUFHTCwrQ0FBUUEsQ0FBQztJQUMzQyxNQUFNTSxRQUFRUCw2Q0FBTUEsQ0FBbUI7SUFDdkMsTUFBTVEsaUJBQWlCUiw2Q0FBTUE7SUFFN0IsTUFBTVMsVUFBVVAsa0RBQVdBLENBQUM7UUFDMUIsTUFBTVEsV0FBV0MsT0FBT0MsUUFBUSxDQUFDRixRQUFRLEtBQUssV0FBVyxTQUFTO1FBQ2xFLE1BQU1HLEtBQUssSUFBSUMsVUFBVSxDQUFDLEVBQUVKLFNBQVMsRUFBRSxFQUFFQyxPQUFPQyxRQUFRLENBQUNHLElBQUksQ0FBQyxHQUFHLENBQUM7UUFFbEVGLEdBQUdHLE1BQU0sR0FBRztZQUNWVixhQUFhO1lBQ2IsS0FBSztZQUNMLE1BQU1XLFlBQVlDLFlBQVk7Z0JBQzVCLElBQUlMLEdBQUdNLFVBQVUsS0FBS0wsVUFBVU0sSUFBSSxFQUFFUCxHQUFHUSxJQUFJLENBQUM7WUFDaEQsR0FBRztZQUNIUixHQUFHUyxnQkFBZ0IsQ0FBQyxTQUFTLElBQU1DLGNBQWNOO1FBQ25EO1FBRUFKLEdBQUdXLFNBQVMsR0FBRyxDQUFDQztZQUNkLElBQUlBLE1BQU1DLElBQUksS0FBSyxRQUFRO1lBQzNCLElBQUk7Z0JBQ0YsTUFBTUEsT0FBT0MsS0FBS0MsS0FBSyxDQUFDSCxNQUFNQyxJQUFJO2dCQUNsQ3RCLFlBQVlzQjtZQUNkLEVBQUUsT0FBTTtZQUNOLFNBQVM7WUFDWDtRQUNGO1FBRUFiLEdBQUdnQixPQUFPLEdBQUc7WUFDWHZCLGFBQWE7WUFDYkUsZUFBZXNCLE9BQU8sR0FBR0MsV0FBV3RCLFNBQVM7UUFDL0M7UUFFQUksR0FBR21CLE9BQU8sR0FBRyxJQUFNbkIsR0FBR29CLEtBQUs7UUFDM0IxQixNQUFNdUIsT0FBTyxHQUFHakI7SUFDbEIsR0FBRztRQUFDVDtLQUFVO0lBRWRMLGdEQUFTQSxDQUFDO1FBQ1JVO1FBQ0EsT0FBTztZQUNMeUIsYUFBYTFCLGVBQWVzQixPQUFPO1lBQ25DdkIsTUFBTXVCLE9BQU8sRUFBRUc7UUFDakI7SUFDRixHQUFHO1FBQUN4QjtLQUFRO0lBRVosT0FBTztRQUFFSjtJQUFVO0FBQ3JCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0b2NrLWFnZW50LWZyb250ZW5kLy4vc3JjL2hvb2tzL3VzZS13ZWJzb2NrZXQudHM/NzkzMSJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IHsgdXNlRWZmZWN0LCB1c2VSZWYsIHVzZVN0YXRlLCB1c2VDYWxsYmFjayB9IGZyb20gXCJyZWFjdFwiO1xuXG5pbnRlcmZhY2UgV1NNZXNzYWdlIHtcbiAgdHlwZTogc3RyaW5nO1xuICBba2V5OiBzdHJpbmddOiB1bmtub3duO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlV2ViU29ja2V0KG9uTWVzc2FnZT86IChkYXRhOiBXU01lc3NhZ2UpID0+IHZvaWQpIHtcbiAgY29uc3QgW2Nvbm5lY3RlZCwgc2V0Q29ubmVjdGVkXSA9IHVzZVN0YXRlKGZhbHNlKTtcbiAgY29uc3Qgd3NSZWYgPSB1c2VSZWY8V2ViU29ja2V0IHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IHJlY29ubmVjdFRpbWVyID0gdXNlUmVmPE5vZGVKUy5UaW1lb3V0PigpO1xuXG4gIGNvbnN0IGNvbm5lY3QgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY29uc3QgcHJvdG9jb2wgPSB3aW5kb3cubG9jYXRpb24ucHJvdG9jb2wgPT09IFwiaHR0cHM6XCIgPyBcIndzczpcIiA6IFwid3M6XCI7XG4gICAgY29uc3Qgd3MgPSBuZXcgV2ViU29ja2V0KGAke3Byb3RvY29sfS8vJHt3aW5kb3cubG9jYXRpb24uaG9zdH0vd3NgKTtcblxuICAgIHdzLm9ub3BlbiA9ICgpID0+IHtcbiAgICAgIHNldENvbm5lY3RlZCh0cnVlKTtcbiAgICAgIC8vIOW/g+i3s1xuICAgICAgY29uc3QgaGVhcnRiZWF0ID0gc2V0SW50ZXJ2YWwoKCkgPT4ge1xuICAgICAgICBpZiAod3MucmVhZHlTdGF0ZSA9PT0gV2ViU29ja2V0Lk9QRU4pIHdzLnNlbmQoXCJwaW5nXCIpO1xuICAgICAgfSwgMzAwMDApO1xuICAgICAgd3MuYWRkRXZlbnRMaXN0ZW5lcihcImNsb3NlXCIsICgpID0+IGNsZWFySW50ZXJ2YWwoaGVhcnRiZWF0KSk7XG4gICAgfTtcblxuICAgIHdzLm9ubWVzc2FnZSA9IChldmVudCkgPT4ge1xuICAgICAgaWYgKGV2ZW50LmRhdGEgPT09IFwicG9uZ1wiKSByZXR1cm47XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCBkYXRhID0gSlNPTi5wYXJzZShldmVudC5kYXRhKTtcbiAgICAgICAgb25NZXNzYWdlPy4oZGF0YSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gaWdub3JlXG4gICAgICB9XG4gICAgfTtcblxuICAgIHdzLm9uY2xvc2UgPSAoKSA9PiB7XG4gICAgICBzZXRDb25uZWN0ZWQoZmFsc2UpO1xuICAgICAgcmVjb25uZWN0VGltZXIuY3VycmVudCA9IHNldFRpbWVvdXQoY29ubmVjdCwgNTAwMCk7XG4gICAgfTtcblxuICAgIHdzLm9uZXJyb3IgPSAoKSA9PiB3cy5jbG9zZSgpO1xuICAgIHdzUmVmLmN1cnJlbnQgPSB3cztcbiAgfSwgW29uTWVzc2FnZV0pO1xuXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgY29ubmVjdCgpO1xuICAgIHJldHVybiAoKSA9PiB7XG4gICAgICBjbGVhclRpbWVvdXQocmVjb25uZWN0VGltZXIuY3VycmVudCk7XG4gICAgICB3c1JlZi5jdXJyZW50Py5jbG9zZSgpO1xuICAgIH07XG4gIH0sIFtjb25uZWN0XSk7XG5cbiAgcmV0dXJuIHsgY29ubmVjdGVkIH07XG59XG4iXSwibmFtZXMiOlsidXNlRWZmZWN0IiwidXNlUmVmIiwidXNlU3RhdGUiLCJ1c2VDYWxsYmFjayIsInVzZVdlYlNvY2tldCIsIm9uTWVzc2FnZSIsImNvbm5lY3RlZCIsInNldENvbm5lY3RlZCIsIndzUmVmIiwicmVjb25uZWN0VGltZXIiLCJjb25uZWN0IiwicHJvdG9jb2wiLCJ3aW5kb3ciLCJsb2NhdGlvbiIsIndzIiwiV2ViU29ja2V0IiwiaG9zdCIsIm9ub3BlbiIsImhlYXJ0YmVhdCIsInNldEludGVydmFsIiwicmVhZHlTdGF0ZSIsIk9QRU4iLCJzZW5kIiwiYWRkRXZlbnRMaXN0ZW5lciIsImNsZWFySW50ZXJ2YWwiLCJvbm1lc3NhZ2UiLCJldmVudCIsImRhdGEiLCJKU09OIiwicGFyc2UiLCJvbmNsb3NlIiwiY3VycmVudCIsInNldFRpbWVvdXQiLCJvbmVycm9yIiwiY2xvc2UiLCJjbGVhclRpbWVvdXQiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./src/hooks/use-websocket.ts\n");
/***/ }),
/***/ "(ssr)/./src/lib/api.ts":
/*!************************!*\
!*** ./src/lib/api.ts ***!
\************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ fetchAPI: () => (/* binding */ fetchAPI),\n/* harmony export */ postAPI: () => (/* binding */ postAPI),\n/* harmony export */ streamChat: () => (/* binding */ streamChat)\n/* harmony export */ });\nconst API_BASE = \"\";\nasync function fetchAPI(path) {\n const res = await fetch(`${API_BASE}${path}`);\n if (!res.ok) throw new Error(`API error: ${res.status}`);\n return res.json();\n}\nasync function postAPI(path, body) {\n const res = await fetch(`${API_BASE}${path}`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: body ? JSON.stringify(body) : undefined\n });\n if (!res.ok) throw new Error(`API error: ${res.status}`);\n return res.json();\n}\nasync function* streamChat(messages) {\n const res = await fetch(`${API_BASE}/api/chat/stream`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n messages\n })\n });\n if (!res.ok) throw new Error(`Chat API error: ${res.status}`);\n if (!res.body) throw new Error(\"No response body\");\n const reader = res.body.getReader();\n const decoder = new TextDecoder();\n let buffer = \"\";\n while(true){\n const { done, value } = await reader.read();\n if (done) break;\n buffer += decoder.decode(value, {\n stream: true\n });\n const lines = buffer.split(\"\\n\");\n buffer = lines.pop() || \"\";\n for (const line of lines){\n if (line.startsWith(\"data: \")) {\n const data = line.slice(6).trim();\n if (data === \"[DONE]\") return;\n try {\n const parsed = JSON.parse(data);\n yield parsed;\n } catch {\n // ignore malformed lines\n }\n }\n }\n }\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvbGliL2FwaS50cyIsIm1hcHBpbmdzIjoiOzs7Ozs7QUFBQSxNQUFNQSxXQUFXO0FBRVYsZUFBZUMsU0FBWUMsSUFBWTtJQUM1QyxNQUFNQyxNQUFNLE1BQU1DLE1BQU0sQ0FBQyxFQUFFSixTQUFTLEVBQUVFLEtBQUssQ0FBQztJQUM1QyxJQUFJLENBQUNDLElBQUlFLEVBQUUsRUFBRSxNQUFNLElBQUlDLE1BQU0sQ0FBQyxXQUFXLEVBQUVILElBQUlJLE1BQU0sQ0FBQyxDQUFDO0lBQ3ZELE9BQU9KLElBQUlLLElBQUk7QUFDakI7QUFFTyxlQUFlQyxRQUFXUCxJQUFZLEVBQUVRLElBQWM7SUFDM0QsTUFBTVAsTUFBTSxNQUFNQyxNQUFNLENBQUMsRUFBRUosU0FBUyxFQUFFRSxLQUFLLENBQUMsRUFBRTtRQUM1Q1MsUUFBUTtRQUNSQyxTQUFTO1lBQUUsZ0JBQWdCO1FBQW1CO1FBQzlDRixNQUFNQSxPQUFPRyxLQUFLQyxTQUFTLENBQUNKLFFBQVFLO0lBQ3RDO0lBQ0EsSUFBSSxDQUFDWixJQUFJRSxFQUFFLEVBQUUsTUFBTSxJQUFJQyxNQUFNLENBQUMsV0FBVyxFQUFFSCxJQUFJSSxNQUFNLENBQUMsQ0FBQztJQUN2RCxPQUFPSixJQUFJSyxJQUFJO0FBQ2pCO0FBNERPLGdCQUFnQlEsV0FDckJDLFFBQXVCO0lBRXZCLE1BQU1kLE1BQU0sTUFBTUMsTUFBTSxDQUFDLEVBQUVKLFNBQVMsZ0JBQWdCLENBQUMsRUFBRTtRQUNyRFcsUUFBUTtRQUNSQyxTQUFTO1lBQUUsZ0JBQWdCO1FBQW1CO1FBQzlDRixNQUFNRyxLQUFLQyxTQUFTLENBQUM7WUFBRUc7UUFBUztJQUNsQztJQUVBLElBQUksQ0FBQ2QsSUFBSUUsRUFBRSxFQUFFLE1BQU0sSUFBSUMsTUFBTSxDQUFDLGdCQUFnQixFQUFFSCxJQUFJSSxNQUFNLENBQUMsQ0FBQztJQUM1RCxJQUFJLENBQUNKLElBQUlPLElBQUksRUFBRSxNQUFNLElBQUlKLE1BQU07SUFFL0IsTUFBTVksU0FBU2YsSUFBSU8sSUFBSSxDQUFDUyxTQUFTO0lBQ2pDLE1BQU1DLFVBQVUsSUFBSUM7SUFDcEIsSUFBSUMsU0FBUztJQUViLE1BQU8sS0FBTTtRQUNYLE1BQU0sRUFBRUMsSUFBSSxFQUFFQyxLQUFLLEVBQUUsR0FBRyxNQUFNTixPQUFPTyxJQUFJO1FBQ3pDLElBQUlGLE1BQU07UUFFVkQsVUFBVUYsUUFBUU0sTUFBTSxDQUFDRixPQUFPO1lBQUVHLFFBQVE7UUFBSztRQUMvQyxNQUFNQyxRQUFRTixPQUFPTyxLQUFLLENBQUM7UUFDM0JQLFNBQVNNLE1BQU1FLEdBQUcsTUFBTTtRQUV4QixLQUFLLE1BQU1DLFFBQVFILE1BQU87WUFDeEIsSUFBSUcsS0FBS0MsVUFBVSxDQUFDLFdBQVc7Z0JBQzdCLE1BQU1DLE9BQU9GLEtBQUtHLEtBQUssQ0FBQyxHQUFHQyxJQUFJO2dCQUMvQixJQUFJRixTQUFTLFVBQVU7Z0JBQ3ZCLElBQUk7b0JBQ0YsTUFBTUcsU0FBU3ZCLEtBQUt3QixLQUFLLENBQUNKO29CQUMxQixNQUFNRztnQkFDUixFQUFFLE9BQU07Z0JBQ04seUJBQXlCO2dCQUMzQjtZQUNGO1FBQ0Y7SUFDRjtBQUNGIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0b2NrLWFnZW50LWZyb250ZW5kLy4vc3JjL2xpYi9hcGkudHM/MmZhYiJdLCJzb3VyY2VzQ29udGVudCI6WyJjb25zdCBBUElfQkFTRSA9IFwiXCI7XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBmZXRjaEFQSTxUPihwYXRoOiBzdHJpbmcpOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7QVBJX0JBU0V9JHtwYXRofWApO1xuICBpZiAoIXJlcy5vaykgdGhyb3cgbmV3IEVycm9yKGBBUEkgZXJyb3I6ICR7cmVzLnN0YXR1c31gKTtcbiAgcmV0dXJuIHJlcy5qc29uKCk7XG59XG5cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBwb3N0QVBJPFQ+KHBhdGg6IHN0cmluZywgYm9keT86IHVua25vd24pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7QVBJX0JBU0V9JHtwYXRofWAsIHtcbiAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICBib2R5OiBib2R5ID8gSlNPTi5zdHJpbmdpZnkoYm9keSkgOiB1bmRlZmluZWQsXG4gIH0pO1xuICBpZiAoIXJlcy5vaykgdGhyb3cgbmV3IEVycm9yKGBBUEkgZXJyb3I6ICR7cmVzLnN0YXR1c31gKTtcbiAgcmV0dXJuIHJlcy5qc29uKCk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgTWFya2V0VGVtcGVyYXR1cmVEYXRhIHtcbiAgdHJhZGVfZGF0ZTogc3RyaW5nO1xuICB0ZW1wZXJhdHVyZTogbnVtYmVyO1xuICB1cF9jb3VudDogbnVtYmVyO1xuICBkb3duX2NvdW50OiBudW1iZXI7XG4gIGxpbWl0X3VwX2NvdW50OiBudW1iZXI7XG4gIGxpbWl0X2Rvd25fY291bnQ/OiBudW1iZXI7XG4gIG1heF9zdHJlYWs/OiBudW1iZXI7XG4gIGJyb2tlbl9yYXRlPzogbnVtYmVyO1xuICBpbmRleF9hYm92ZV9tYTIwPzogYm9vbGVhbjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBSZWNvbW1lbmRhdGlvbkRhdGEge1xuICB0c19jb2RlOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgc2VjdG9yOiBzdHJpbmc7XG4gIHNjb3JlOiBudW1iZXI7XG4gIGxldmVsOiBzdHJpbmc7XG4gIHNpZ25hbDogc3RyaW5nO1xuICBtYXJrZXRfdGVtcF9zY29yZTogbnVtYmVyO1xuICBzZWN0b3Jfc2NvcmU6IG51bWJlcjtcbiAgY2FwaXRhbF9zY29yZTogbnVtYmVyO1xuICB0ZWNobmljYWxfc2NvcmU6IG51bWJlcjtcbiAgZW50cnlfcHJpY2U6IG51bWJlciB8IG51bGw7XG4gIHRhcmdldF9wcmljZTogbnVtYmVyIHwgbnVsbDtcbiAgc3RvcF9sb3NzOiBudW1iZXIgfCBudWxsO1xuICByZWFzb25zOiBzdHJpbmdbXTtcbiAgcmlza19ub3RlOiBzdHJpbmc7XG4gIGxsbV9hbmFseXNpcz86IHN0cmluZztcbiAgc2Nhbl9zZXNzaW9uOiBzdHJpbmc7XG4gIGNyZWF0ZWRfYXQ6IHN0cmluZyB8IG51bGw7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2VjdG9yRGF0YSB7XG4gIHNlY3Rvcl9jb2RlOiBzdHJpbmc7XG4gIHNlY3Rvcl9uYW1lOiBzdHJpbmc7XG4gIHBjdF9jaGFuZ2U6IG51bWJlcjtcbiAgY2FwaXRhbF9pbmZsb3c6IG51bWJlcjtcbiAgbGltaXRfdXBfY291bnQ6IG51bWJlcjtcbiAgZGF5c19jb250aW51b3VzOiBudW1iZXI7XG4gIGhlYXRfc2NvcmU6IG51bWJlcjtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXRlc3RSZXN1bHQge1xuICBtYXJrZXRfdGVtcGVyYXR1cmU6IE1hcmtldFRlbXBlcmF0dXJlRGF0YSB8IG51bGw7XG4gIHJlY29tbWVuZGF0aW9uczogUmVjb21tZW5kYXRpb25EYXRhW107XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ2hhdE1lc3NhZ2Uge1xuICByb2xlOiBcInVzZXJcIiB8IFwiYXNzaXN0YW50XCI7XG4gIGNvbnRlbnQ6IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTdHJlYW1FdmVudCB7XG4gIHR5cGU6IFwiY29udGVudFwiIHwgXCJzdGF0dXNcIjtcbiAgY29udGVudDogc3RyaW5nO1xufVxuXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24qIHN0cmVhbUNoYXQoXG4gIG1lc3NhZ2VzOiBDaGF0TWVzc2FnZVtdXG4pOiBBc3luY0dlbmVyYXRvcjxTdHJlYW1FdmVudCwgdm9pZCwgdW5kZWZpbmVkPiB7XG4gIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFfS9hcGkvY2hhdC9zdHJlYW1gLCB7XG4gICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICBoZWFkZXJzOiB7IFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiIH0sXG4gICAgYm9keTogSlNPTi5zdHJpbmdpZnkoeyBtZXNzYWdlcyB9KSxcbiAgfSk7XG5cbiAgaWYgKCFyZXMub2spIHRocm93IG5ldyBFcnJvcihgQ2hhdCBBUEkgZXJyb3I6ICR7cmVzLnN0YXR1c31gKTtcbiAgaWYgKCFyZXMuYm9keSkgdGhyb3cgbmV3IEVycm9yKFwiTm8gcmVzcG9uc2UgYm9keVwiKTtcblxuICBjb25zdCByZWFkZXIgPSByZXMuYm9keS5nZXRSZWFkZXIoKTtcbiAgY29uc3QgZGVjb2RlciA9IG5ldyBUZXh0RGVjb2RlcigpO1xuICBsZXQgYnVmZmVyID0gXCJcIjtcblxuICB3aGlsZSAodHJ1ZSkge1xuICAgIGNvbnN0IHsgZG9uZSwgdmFsdWUgfSA9IGF3YWl0IHJlYWRlci5yZWFkKCk7XG4gICAgaWYgKGRvbmUpIGJyZWFrO1xuXG4gICAgYnVmZmVyICs9IGRlY29kZXIuZGVjb2RlKHZhbHVlLCB7IHN0cmVhbTogdHJ1ZSB9KTtcbiAgICBjb25zdCBsaW5lcyA9IGJ1ZmZlci5zcGxpdChcIlxcblwiKTtcbiAgICBidWZmZXIgPSBsaW5lcy5wb3AoKSB8fCBcIlwiO1xuXG4gICAgZm9yIChjb25zdCBsaW5lIG9mIGxpbmVzKSB7XG4gICAgICBpZiAobGluZS5zdGFydHNXaXRoKFwiZGF0YTogXCIpKSB7XG4gICAgICAgIGNvbnN0IGRhdGEgPSBsaW5lLnNsaWNlKDYpLnRyaW0oKTtcbiAgICAgICAgaWYgKGRhdGEgPT09IFwiW0RPTkVdXCIpIHJldHVybjtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBjb25zdCBwYXJzZWQgPSBKU09OLnBhcnNlKGRhdGEpIGFzIFN0cmVhbUV2ZW50O1xuICAgICAgICAgIHlpZWxkIHBhcnNlZDtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgLy8gaWdub3JlIG1hbGZvcm1lZCBsaW5lc1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG59XG4iXSwibmFtZXMiOlsiQVBJX0JBU0UiLCJmZXRjaEFQSSIsInBhdGgiLCJyZXMiLCJmZXRjaCIsIm9rIiwiRXJyb3IiLCJzdGF0dXMiLCJqc29uIiwicG9zdEFQSSIsImJvZHkiLCJtZXRob2QiLCJoZWFkZXJzIiwiSlNPTiIsInN0cmluZ2lmeSIsInVuZGVmaW5lZCIsInN0cmVhbUNoYXQiLCJtZXNzYWdlcyIsInJlYWRlciIsImdldFJlYWRlciIsImRlY29kZXIiLCJUZXh0RGVjb2RlciIsImJ1ZmZlciIsImRvbmUiLCJ2YWx1ZSIsInJlYWQiLCJkZWNvZGUiLCJzdHJlYW0iLCJsaW5lcyIsInNwbGl0IiwicG9wIiwibGluZSIsInN0YXJ0c1dpdGgiLCJkYXRhIiwic2xpY2UiLCJ0cmltIiwicGFyc2VkIiwicGFyc2UiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./src/lib/api.ts\n");
/***/ }),
/***/ "(ssr)/./src/lib/utils.ts":
/*!**************************!*\
!*** ./src/lib/utils.ts ***!
\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ cn: () => (/* binding */ cn),\n/* harmony export */ formatNumber: () => (/* binding */ formatNumber),\n/* harmony export */ getLevelBadge: () => (/* binding */ getLevelBadge),\n/* harmony export */ getScoreColor: () => (/* binding */ getScoreColor),\n/* harmony export */ getSignalColor: () => (/* binding */ getSignalColor),\n/* harmony export */ getTempColor: () => (/* binding */ getTempColor),\n/* harmony export */ getTempLabel: () => (/* binding */ getTempLabel)\n/* harmony export */ });\nfunction cn(...classes) {\n return classes.filter(Boolean).join(\" \");\n}\nfunction formatNumber(n) {\n if (Math.abs(n) >= 10000) return (n / 10000).toFixed(2) + \"亿\";\n if (Math.abs(n) >= 1) return n.toFixed(2) + \"万\";\n return n.toFixed(2);\n}\nfunction getScoreColor(score) {\n if (score >= 80) return \"text-red-400\";\n if (score >= 60) return \"text-orange-400\";\n if (score >= 40) return \"text-yellow-400\";\n return \"text-gray-400\";\n}\nfunction getLevelBadge(level) {\n switch(level){\n case \"强烈推荐\":\n return {\n bg: \"bg-red-500/20\",\n text: \"text-red-400\"\n };\n case \"推荐\":\n return {\n bg: \"bg-orange-500/20\",\n text: \"text-orange-400\"\n };\n case \"观望\":\n return {\n bg: \"bg-yellow-500/20\",\n text: \"text-yellow-400\"\n };\n default:\n return {\n bg: \"bg-gray-500/20\",\n text: \"text-gray-400\"\n };\n }\n}\nfunction getSignalColor(signal) {\n if (signal === \"BUY\") return \"text-red-400\";\n if (signal === \"SELL\") return \"text-green-400\";\n return \"text-gray-400\";\n}\nfunction getTempColor(temp) {\n if (temp >= 70) return \"#ef4444\";\n if (temp >= 50) return \"#f97316\";\n if (temp >= 30) return \"#eab308\";\n return \"#22c55e\";\n}\nfunction getTempLabel(temp) {\n if (temp >= 70) return \"火热\";\n if (temp >= 50) return \"温和\";\n if (temp >= 30) return \"偏冷\";\n return \"冰点\";\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9zcmMvbGliL3V0aWxzLnRzIiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFBTyxTQUFTQSxHQUFHLEdBQUdDLE9BQThDO0lBQ2xFLE9BQU9BLFFBQVFDLE1BQU0sQ0FBQ0MsU0FBU0MsSUFBSSxDQUFDO0FBQ3RDO0FBRU8sU0FBU0MsYUFBYUMsQ0FBUztJQUNwQyxJQUFJQyxLQUFLQyxHQUFHLENBQUNGLE1BQU0sT0FBTyxPQUFPLENBQUNBLElBQUksS0FBSSxFQUFHRyxPQUFPLENBQUMsS0FBSztJQUMxRCxJQUFJRixLQUFLQyxHQUFHLENBQUNGLE1BQU0sR0FBRyxPQUFPQSxFQUFFRyxPQUFPLENBQUMsS0FBSztJQUM1QyxPQUFPSCxFQUFFRyxPQUFPLENBQUM7QUFDbkI7QUFFTyxTQUFTQyxjQUFjQyxLQUFhO0lBQ3pDLElBQUlBLFNBQVMsSUFBSSxPQUFPO0lBQ3hCLElBQUlBLFNBQVMsSUFBSSxPQUFPO0lBQ3hCLElBQUlBLFNBQVMsSUFBSSxPQUFPO0lBQ3hCLE9BQU87QUFDVDtBQUVPLFNBQVNDLGNBQWNDLEtBQWE7SUFDekMsT0FBUUE7UUFDTixLQUFLO1lBQ0gsT0FBTztnQkFBRUMsSUFBSTtnQkFBaUJDLE1BQU07WUFBZTtRQUNyRCxLQUFLO1lBQ0gsT0FBTztnQkFBRUQsSUFBSTtnQkFBb0JDLE1BQU07WUFBa0I7UUFDM0QsS0FBSztZQUNILE9BQU87Z0JBQUVELElBQUk7Z0JBQW9CQyxNQUFNO1lBQWtCO1FBQzNEO1lBQ0UsT0FBTztnQkFBRUQsSUFBSTtnQkFBa0JDLE1BQU07WUFBZ0I7SUFDekQ7QUFDRjtBQUVPLFNBQVNDLGVBQWVDLE1BQWM7SUFDM0MsSUFBSUEsV0FBVyxPQUFPLE9BQU87SUFDN0IsSUFBSUEsV0FBVyxRQUFRLE9BQU87SUFDOUIsT0FBTztBQUNUO0FBRU8sU0FBU0MsYUFBYUMsSUFBWTtJQUN2QyxJQUFJQSxRQUFRLElBQUksT0FBTztJQUN2QixJQUFJQSxRQUFRLElBQUksT0FBTztJQUN2QixJQUFJQSxRQUFRLElBQUksT0FBTztJQUN2QixPQUFPO0FBQ1Q7QUFFTyxTQUFTQyxhQUFhRCxJQUFZO0lBQ3ZDLElBQUlBLFFBQVEsSUFBSSxPQUFPO0lBQ3ZCLElBQUlBLFFBQVEsSUFBSSxPQUFPO0lBQ3ZCLElBQUlBLFFBQVEsSUFBSSxPQUFPO0lBQ3ZCLE9BQU87QUFDVCIsInNvdXJjZXMiOlsid2VicGFjazovL2FzdG9jay1hZ2VudC1mcm9udGVuZC8uL3NyYy9saWIvdXRpbHMudHM/N2MxYyJdLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgZnVuY3Rpb24gY24oLi4uY2xhc3NlczogKHN0cmluZyB8IGZhbHNlIHwgdW5kZWZpbmVkIHwgbnVsbClbXSkge1xuICByZXR1cm4gY2xhc3Nlcy5maWx0ZXIoQm9vbGVhbikuam9pbihcIiBcIik7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXROdW1iZXIobjogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKE1hdGguYWJzKG4pID49IDEwMDAwKSByZXR1cm4gKG4gLyAxMDAwMCkudG9GaXhlZCgyKSArIFwi5Lq/XCI7XG4gIGlmIChNYXRoLmFicyhuKSA+PSAxKSByZXR1cm4gbi50b0ZpeGVkKDIpICsgXCLkuIdcIjtcbiAgcmV0dXJuIG4udG9GaXhlZCgyKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNjb3JlQ29sb3Ioc2NvcmU6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmIChzY29yZSA+PSA4MCkgcmV0dXJuIFwidGV4dC1yZWQtNDAwXCI7XG4gIGlmIChzY29yZSA+PSA2MCkgcmV0dXJuIFwidGV4dC1vcmFuZ2UtNDAwXCI7XG4gIGlmIChzY29yZSA+PSA0MCkgcmV0dXJuIFwidGV4dC15ZWxsb3ctNDAwXCI7XG4gIHJldHVybiBcInRleHQtZ3JheS00MDBcIjtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldExldmVsQmFkZ2UobGV2ZWw6IHN0cmluZyk6IHsgYmc6IHN0cmluZzsgdGV4dDogc3RyaW5nIH0ge1xuICBzd2l0Y2ggKGxldmVsKSB7XG4gICAgY2FzZSBcIuW8uueDiOaOqOiNkFwiOlxuICAgICAgcmV0dXJuIHsgYmc6IFwiYmctcmVkLTUwMC8yMFwiLCB0ZXh0OiBcInRleHQtcmVkLTQwMFwiIH07XG4gICAgY2FzZSBcIuaOqOiNkFwiOlxuICAgICAgcmV0dXJuIHsgYmc6IFwiYmctb3JhbmdlLTUwMC8yMFwiLCB0ZXh0OiBcInRleHQtb3JhbmdlLTQwMFwiIH07XG4gICAgY2FzZSBcIuinguacm1wiOlxuICAgICAgcmV0dXJuIHsgYmc6IFwiYmcteWVsbG93LTUwMC8yMFwiLCB0ZXh0OiBcInRleHQteWVsbG93LTQwMFwiIH07XG4gICAgZGVmYXVsdDpcbiAgICAgIHJldHVybiB7IGJnOiBcImJnLWdyYXktNTAwLzIwXCIsIHRleHQ6IFwidGV4dC1ncmF5LTQwMFwiIH07XG4gIH1cbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGdldFNpZ25hbENvbG9yKHNpZ25hbDogc3RyaW5nKTogc3RyaW5nIHtcbiAgaWYgKHNpZ25hbCA9PT0gXCJCVVlcIikgcmV0dXJuIFwidGV4dC1yZWQtNDAwXCI7XG4gIGlmIChzaWduYWwgPT09IFwiU0VMTFwiKSByZXR1cm4gXCJ0ZXh0LWdyZWVuLTQwMFwiO1xuICByZXR1cm4gXCJ0ZXh0LWdyYXktNDAwXCI7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBnZXRUZW1wQ29sb3IodGVtcDogbnVtYmVyKTogc3RyaW5nIHtcbiAgaWYgKHRlbXAgPj0gNzApIHJldHVybiBcIiNlZjQ0NDRcIjtcbiAgaWYgKHRlbXAgPj0gNTApIHJldHVybiBcIiNmOTczMTZcIjtcbiAgaWYgKHRlbXAgPj0gMzApIHJldHVybiBcIiNlYWIzMDhcIjtcbiAgcmV0dXJuIFwiIzIyYzU1ZVwiO1xufVxuXG5leHBvcnQgZnVuY3Rpb24gZ2V0VGVtcExhYmVsKHRlbXA6IG51bWJlcik6IHN0cmluZyB7XG4gIGlmICh0ZW1wID49IDcwKSByZXR1cm4gXCLngavng61cIjtcbiAgaWYgKHRlbXAgPj0gNTApIHJldHVybiBcIua4qeWSjFwiO1xuICBpZiAodGVtcCA+PSAzMCkgcmV0dXJuIFwi5YGP5Ya3XCI7XG4gIHJldHVybiBcIuWGsOeCuVwiO1xufVxuIl0sIm5hbWVzIjpbImNuIiwiY2xhc3NlcyIsImZpbHRlciIsIkJvb2xlYW4iLCJqb2luIiwiZm9ybWF0TnVtYmVyIiwibiIsIk1hdGgiLCJhYnMiLCJ0b0ZpeGVkIiwiZ2V0U2NvcmVDb2xvciIsInNjb3JlIiwiZ2V0TGV2ZWxCYWRnZSIsImxldmVsIiwiYmciLCJ0ZXh0IiwiZ2V0U2lnbmFsQ29sb3IiLCJzaWduYWwiLCJnZXRUZW1wQ29sb3IiLCJ0ZW1wIiwiZ2V0VGVtcExhYmVsIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(ssr)/./src/lib/utils.ts\n");
/***/ }),
/***/ "(rsc)/./src/app/globals.css":
/*!*****************************!*\
!*** ./src/app/globals.css ***!
\*****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (__WEBPACK_DEFAULT_EXPORT__)\n/* harmony export */ });\n/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (\"d712fb99c6a4\");\nif (false) {}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHJzYykvLi9zcmMvYXBwL2dsb2JhbHMuY3NzIiwibWFwcGluZ3MiOiI7Ozs7QUFBQSxpRUFBZSxjQUFjO0FBQzdCLElBQUksS0FBVSxFQUFFLEVBQXVCIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vYXN0b2NrLWFnZW50LWZyb250ZW5kLy4vc3JjL2FwcC9nbG9iYWxzLmNzcz9mZTNiIl0sInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBkZWZhdWx0IFwiZDcxMmZiOTljNmE0XCJcbmlmIChtb2R1bGUuaG90KSB7IG1vZHVsZS5ob3QuYWNjZXB0KCkgfVxuIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(rsc)/./src/app/globals.css\n");
/***/ }),
/***/ "(rsc)/./src/app/layout.tsx":
/*!****************************!*\
!*** ./src/app/layout.tsx ***!
\****************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout),\n/* harmony export */ metadata: () => (/* binding */ metadata),\n/* harmony export */ viewport: () => (/* binding */ viewport)\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(rsc)/./node_modules/next/dist/server/future/route-modules/app-page/vendored/rsc/react-jsx-dev-runtime.js\");\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(rsc)/./src/app/globals.css\");\n\n\nconst metadata = {\n title: \"Dragon AI Agent\",\n description: \"基于资金驱动的四层漏斗模型盘中实时分析推荐A股\"\n};\nconst viewport = {\n width: \"device-width\",\n initialScale: 1,\n maximumScale: 1,\n userScalable: false\n};\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"zh-CN\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"min-h-screen bg-bg-primary text-text-primary font-display\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex min-h-screen\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"aside\", {\n className: \"hidden md:flex flex-col w-60 glass-sidebar fixed inset-y-0 left-0 z-40\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"px-6 pt-7 pb-5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-8 h-8 rounded-lg bg-gradient-to-br from-orange-500 to-amber-600 flex items-center justify-center text-sm font-bold text-white shadow-glow-sm\",\n children: \"D\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 31,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-sm font-semibold tracking-tight\",\n children: \"Dragon AI Agent\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 35,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-[10px] text-text-muted mt-0.5 font-light tracking-wide\",\n children: \"资金驱动 \\xb7 四层漏斗模型\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 36,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 34,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 30,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 29,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-5 h-px bg-gradient-to-r from-transparent via-slate-700/50 to-transparent\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 42,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"flex-1 py-5 px-3 space-y-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SideNavItem, {\n href: \"/\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DashboardIcon, {}, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 46,\n columnNumber: 43\n }, void 0),\n label: \"总览\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 46,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SideNavItem, {\n href: \"/recommendations\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(TargetIcon, {}, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 47,\n columnNumber: 58\n }, void 0),\n label: \"推荐列表\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 47,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SideNavItem, {\n href: \"/sectors\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(FireIcon, {}, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 48,\n columnNumber: 50\n }, void 0),\n label: \"板块分析\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 48,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(SideNavItem, {\n href: \"/chat\",\n icon: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ChatIcon, {}, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 49,\n columnNumber: 47\n }, void 0),\n label: \"AI 对话\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 49,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 45,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"px-6 py-5 border-t border-slate-800/50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-[10px] text-text-muted leading-relaxed\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1.5 mb-1\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1 h-1 rounded-full bg-emerald-500\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 56,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"Tushare Pro + 腾讯行情\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 57,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 55,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex items-center gap-1.5\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"w-1 h-1 rounded-full bg-accent-indigo\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 60,\n columnNumber: 19\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n children: \"AI 引擎: DeepSeek\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 61,\n columnNumber: 19\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 59,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 54,\n columnNumber: 15\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 53,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 27,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex-1 md:ml-60 pb-16 md:pb-0 min-h-screen\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 68,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 25,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MobileNav, {}, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 74,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 23,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 22,\n columnNumber: 5\n }, this);\n}\nfunction MobileNav() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"fixed bottom-0 left-0 right-0 md:hidden z-50 bg-bg-secondary/95 backdrop-blur-xl border-t border-slate-800/50\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-around py-2 pb-[max(0.5rem,env(safe-area-inset-bottom))]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MobileNavItem, {\n href: \"/\",\n label: \"总览\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(DashboardIcon, {}, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 85,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 84,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MobileNavItem, {\n href: \"/recommendations\",\n label: \"推荐\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(TargetIcon, {}, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 88,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 87,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MobileNavItem, {\n href: \"/sectors\",\n label: \"板块\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(FireIcon, {}, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 91,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 90,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(MobileNavItem, {\n href: \"/chat\",\n label: \"对话\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(ChatIcon, {}, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 94,\n columnNumber: 11\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 93,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 83,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 82,\n columnNumber: 5\n }, this);\n}\nfunction MobileNavItem({ href, label, children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: href,\n className: \"flex flex-col items-center gap-1 text-text-muted hover:text-text-primary transition-colors active:scale-95\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-lg\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 107,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-[10px] font-medium\",\n children: label\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 108,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 103,\n columnNumber: 5\n }, this);\n}\nfunction SideNavItem({ href, icon, label }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"a\", {\n href: href,\n className: \"flex items-center gap-3 px-4 py-2.5 rounded-xl text-sm text-text-secondary hover:text-text-primary hover:bg-white/[0.04] transition-all duration-200\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-base opacity-70\",\n children: icon\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 119,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"font-medium\",\n children: label\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 120,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 115,\n columnNumber: 5\n }, this);\n}\n/* SVG Icons - clean, minimal */ function DashboardIcon() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.8\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"rect\", {\n x: \"3\",\n y: \"3\",\n width: \"7\",\n height: \"7\",\n rx: \"1.5\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 129,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"rect\", {\n x: \"14\",\n y: \"3\",\n width: \"7\",\n height: \"7\",\n rx: \"1.5\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 130,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"rect\", {\n x: \"3\",\n y: \"14\",\n width: \"7\",\n height: \"7\",\n rx: \"1.5\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 131,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"rect\", {\n x: \"14\",\n y: \"14\",\n width: \"7\",\n height: \"7\",\n rx: \"1.5\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 132,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 128,\n columnNumber: 5\n }, this);\n}\nfunction TargetIcon() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.8\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"10\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 140,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"6\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 141,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"12\",\n cy: \"12\",\n r: \"2\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 142,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 139,\n columnNumber: 5\n }, this);\n}\nfunction FireIcon() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.8\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M12 2c.5 2.5-.5 5-2 7 1 0 2.5.5 3 2.5.5-2 2-3 3-4-1 3-1 6-4 8.5-1.5 1-3.5 1.5-5 1-1.5-.5-2.5-2-2.5-3.5 0-3 3-5 5-7.5C10 5 11 3.5 12 2z\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 150,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 149,\n columnNumber: 5\n }, this);\n}\nfunction ChatIcon() {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n width: \"18\",\n height: \"18\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: \"1.8\",\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n d: \"M21 15a2 2 0 0 1-2 2H7l-4 4V5a2 2 0 0 1 2-2h14a2 2 0 0 1 2 2z\"\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 158,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/aaron/source_code/astock-agent/frontend/src/app/layout.tsx\",\n lineNumber: 157,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,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QixRQUFPO1FBQUtDLFNBQVE7UUFBWUMsTUFBSztRQUFPQyxRQUFPO1FBQWVDLGFBQVk7UUFBTUMsZUFBYztRQUFRQyxnQkFBZTtrQkFDdkksNEVBQUNTO1lBQUtDLEdBQUU7Ozs7Ozs7Ozs7O0FBR2Q7QUFFQSxTQUFTdkI7SUFDUCxxQkFDRSw4REFBQ007UUFBSTVCLE9BQU07UUFBSzZCLFFBQU87UUFBS0MsU0FBUTtRQUFZQyxNQUFLO1FBQU9DLFFBQU87UUFBZUMsYUFBWTtRQUFNQyxlQUFjO1FBQVFDLGdCQUFlO2tCQUN2SSw0RUFBQ1M7WUFBS0MsR0FBRTs7Ozs7Ozs7Ozs7QUFHZCIsInNvdXJjZXMiOlsid2VicGFjazovL2FzdG9jay1hZ2VudC1mcm9udGVuZC8uL3NyYy9hcHAvbGF5b3V0LnRzeD81N2E5Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB0eXBlIHsgTWV0YWRhdGEsIFZpZXdwb3J0IH0gZnJvbSBcIm5leHRcIjtcbmltcG9ydCBcIi4vZ2xvYmFscy5jc3NcIjtcblxuZXhwb3J0IGNvbnN0IG1ldGFkYXRhOiBNZXRhZGF0YSA9IHtcbiAgdGl0bGU6IFwiRHJhZ29uIEFJIEFnZW50XCIsXG4gIGRlc2NyaXB0aW9uOiBcIuWfuuS6jui1hOmHkempseWKqOeahOWbm+Wxgua8j+aWl+aooeWei++8jOebmOS4reWunuaXtuWIhuaekOaOqOiNkEHogqFcIixcbn07XG5cbmV4cG9ydCBjb25zdCB2aWV3cG9ydDogVmlld3BvcnQgPSB7XG4gIHdpZHRoOiBcImRldmljZS13aWR0aFwiLFxuICBpbml0aWFsU2NhbGU6IDEsXG4gIG1heGltdW1TY2FsZTogMSxcbiAgdXNlclNjYWxhYmxlOiBmYWxzZSxcbn07XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJvb3RMYXlvdXQoe1xuICBjaGlsZHJlbixcbn06IHtcbiAgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZTtcbn0pIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbCBsYW5nPVwiemgtQ05cIj5cbiAgICAgIDxib2R5IGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlbiBiZy1iZy1wcmltYXJ5IHRleHQtdGV4dC1wcmltYXJ5IGZvbnQtZGlzcGxheVwiPlxuICAgICAgICB7LyogRGVza3RvcDogc2lkZWJhciArIG1haW4gKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBtaW4taC1zY3JlZW5cIj5cbiAgICAgICAgICB7LyogRGVza3RvcCBzaWRlYmFyICovfVxuICAgICAgICAgIDxhc2lkZSBjbGFzc05hbWU9XCJoaWRkZW4gbWQ6ZmxleCBmbGV4LWNvbCB3LTYwIGdsYXNzLXNpZGViYXIgZml4ZWQgaW5zZXQteS0wIGxlZnQtMCB6LTQwXCI+XG4gICAgICAgICAgICB7LyogQnJhbmQgKi99XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInB4LTYgcHQtNyBwYi01XCI+XG4gICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctOCBoLTggcm91bmRlZC1sZyBiZy1ncmFkaWVudC10by1iciBmcm9tLW9yYW5nZS01MDAgdG8tYW1iZXItNjAwIGZsZXggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHRleHQtc20gZm9udC1ib2xkIHRleHQtd2hpdGUgc2hhZG93LWdsb3ctc21cIj5cbiAgICAgICAgICAgICAgICAgIERcbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICA8ZGl2PlxuICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtc20gZm9udC1zZW1pYm9sZCB0cmFja2luZy10aWdodFwiPkRyYWdvbiBBSSBBZ2VudDwvaDE+XG4gICAgICAgICAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LVsxMHB4XSB0ZXh0LXRleHQtbXV0ZWQgbXQtMC41IGZvbnQtbGlnaHQgdHJhY2tpbmctd2lkZVwiPui1hOmHkempseWKqCDCtyDlm5vlsYLmvI/mlpfmqKHlnos8L3A+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG5cbiAgICAgICAgICAgIHsvKiBEaXZpZGVyICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC01IGgtcHggYmctZ3JhZGllbnQtdG8tciBmcm9tLXRyYW5zcGFyZW50IHZpYS1zbGF0ZS03MDAvNTAgdG8tdHJhbnNwYXJlbnRcIiAvPlxuXG4gICAgICAgICAgICB7LyogTmF2ICovfVxuICAgICAgICAgICAgPG5hdiBjbGFzc05hbWU9XCJmbGV4LTEgcHktNSBweC0zIHNwYWNlLXktMVwiPlxuICAgICAgICAgICAgICA8U2lkZU5hdkl0ZW0gaHJlZj1cIi9cIiBpY29uPXs8RGFzaGJvYXJkSWNvbiAvPn0gbGFiZWw9XCLmgLvop4hcIiAvPlxuICAgICAgICAgICAgICA8U2lkZU5hdkl0ZW0gaHJlZj1cIi9yZWNvbW1lbmRhdGlvbnNcIiBpY29uPXs8VGFyZ2V0SWNvbiAvPn0gbGFiZWw9XCLmjqjojZDliJfooahcIiAvPlxuICAgICAgICAgICAgICA8U2lkZU5hdkl0ZW0gaHJlZj1cIi9zZWN0b3JzXCIgaWNvbj17PEZpcmVJY29uIC8+fSBsYWJlbD1cIuadv+Wdl+WIhuaekFwiIC8+XG4gICAgICAgICAgICAgIDxTaWRlTmF2SXRlbSBocmVmPVwiL2NoYXRcIiBpY29uPXs8Q2hhdEljb24gLz59IGxhYmVsPVwiQUkg5a+56K+dXCIgLz5cbiAgICAgICAgICAgIDwvbmF2PlxuXG4gICAgICAgICAgICB7LyogRm9vdGVyICovfVxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJweC02IHB5LTUgYm9yZGVyLXQgYm9yZGVyLXNsYXRlLTgwMC81MFwiPlxuICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInRleHQtWzEwcHhdIHRleHQtdGV4dC1tdXRlZCBsZWFkaW5nLXJlbGF4ZWRcIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0xLjUgbWItMVwiPlxuICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidy0xIGgtMSByb3VuZGVkLWZ1bGwgYmctZW1lcmFsZC01MDBcIiAvPlxuICAgICAgICAgICAgICAgICAgPHNwYW4+VHVzaGFyZSBQcm8gKyDohb7orq/ooYzmg4U8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMS41XCI+XG4gICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ3LTEgaC0xIHJvdW5kZWQtZnVsbCBiZy1hY2NlbnQtaW5kaWdvXCIgLz5cbiAgICAgICAgICAgICAgICAgIDxzcGFuPkFJIOW8leaTjjogRGVlcFNlZWs8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPC9hc2lkZT5cblxuICAgICAgICAgIHsvKiBNYWluIGNvbnRlbnQgYXJlYSAqL31cbiAgICAgICAgICA8bWFpbiBjbGFzc05hbWU9XCJmbGV4LTEgbWQ6bWwtNjAgcGItMTYgbWQ6cGItMCBtaW4taC1zY3JlZW5cIj5cbiAgICAgICAgICAgIHtjaGlsZHJlbn1cbiAgICAgICAgICA8L21haW4+XG4gICAgICAgIDwvZGl2PlxuXG4gICAgICAgIHsvKiBNb2JpbGUgYm90dG9tIG5hdiAqL31cbiAgICAgICAgPE1vYmlsZU5hdiAvPlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn1cblxuZnVuY3Rpb24gTW9iaWxlTmF2KCkge1xuICByZXR1cm4gKFxuICAgIDxuYXYgY2xhc3NOYW1lPVwiZml4ZWQgYm90dG9tLTAgbGVmdC0wIHJpZ2h0LTAgbWQ6aGlkZGVuIHotNTAgYmctYmctc2Vjb25kYXJ5Lzk1IGJhY2tkcm9wLWJsdXIteGwgYm9yZGVyLXQgYm9yZGVyLXNsYXRlLTgwMC81MFwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGp1c3RpZnktYXJvdW5kIHB5LTIgcGItW21heCgwLjVyZW0sZW52KHNhZmUtYXJlYS1pbnNldC1ib3R0b20pKV1cIj5cbiAgICAgICAgPE1vYmlsZU5hdkl0ZW0gaHJlZj1cIi9cIiBsYWJlbD1cIuaAu+iniFwiPlxuICAgICAgICAgIDxEYXNoYm9hcmRJY29uIC8+XG4gICAgICAgIDwvTW9iaWxlTmF2SXRlbT5cbiAgICAgICAgPE1vYmlsZU5hdkl0ZW0gaHJlZj1cIi9yZWNvbW1lbmRhdGlvbnNcIiBsYWJlbD1cIuaOqOiNkFwiPlxuICAgICAgICAgIDxUYXJnZXRJY29uIC8+XG4gICAgICAgIDwvTW9iaWxlTmF2SXRlbT5cbiAgICAgICAgPE1vYmlsZU5hdkl0ZW0gaHJlZj1cIi9zZWN0b3JzXCIgbGFiZWw9XCLmnb/lnZdcIj5cbiAgICAgICAgICA8RmlyZUljb24gLz5cbiAgICAgICAgPC9Nb2JpbGVOYXZJdGVtPlxuICAgICAgICA8TW9iaWxlTmF2SXRlbSBocmVmPVwiL2NoYXRcIiBsYWJlbD1cIuWvueivnVwiPlxuICAgICAgICAgIDxDaGF0SWNvbiAvPlxuICAgICAgICA8L01vYmlsZU5hdkl0ZW0+XG4gICAgICA8L2Rpdj5cbiAgICA8L25hdj5cbiAgKTtcbn1cblxuZnVuY3Rpb24gTW9iaWxlTmF2SXRlbSh7IGhyZWYsIGxhYmVsLCBjaGlsZHJlbiB9OiB7IGhyZWY6IHN0cmluZzsgbGFiZWw6IHN0cmluZzsgY2hpbGRyZW46IFJlYWN0LlJlYWN0Tm9kZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGhyZWY9e2hyZWZ9XG4gICAgICBjbGFzc05hbWU9XCJmbGV4IGZsZXgtY29sIGl0ZW1zLWNlbnRlciBnYXAtMSB0ZXh0LXRleHQtbXV0ZWQgaG92ZXI6dGV4dC10ZXh0LXByaW1hcnkgdHJhbnNpdGlvbi1jb2xvcnMgYWN0aXZlOnNjYWxlLTk1XCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWxnXCI+e2NoaWxkcmVufTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtWzEwcHhdIGZvbnQtbWVkaXVtXCI+e2xhYmVsfTwvc3Bhbj5cbiAgICA8L2E+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFNpZGVOYXZJdGVtKHsgaHJlZiwgaWNvbiwgbGFiZWwgfTogeyBocmVmOiBzdHJpbmc7IGljb246IFJlYWN0LlJlYWN0Tm9kZTsgbGFiZWw6IHN0cmluZyB9KSB7XG4gIHJldHVybiAoXG4gICAgPGFcbiAgICAgIGhyZWY9e2hyZWZ9XG4gICAgICBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtMyBweC00IHB5LTIuNSByb3VuZGVkLXhsIHRleHQtc20gdGV4dC10ZXh0LXNlY29uZGFyeSBob3Zlcjp0ZXh0LXRleHQtcHJpbWFyeSBob3ZlcjpiZy13aGl0ZS9bMC4wNF0gdHJhbnNpdGlvbi1hbGwgZHVyYXRpb24tMjAwXCJcbiAgICA+XG4gICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LWJhc2Ugb3BhY2l0eS03MFwiPntpY29ufTwvc3Bhbj5cbiAgICAgIDxzcGFuIGNsYXNzTmFtZT1cImZvbnQtbWVkaXVtXCI+e2xhYmVsfTwvc3Bhbj5cbiAgICA8L2E+XG4gICk7XG59XG5cbi8qIFNWRyBJY29ucyAtIGNsZWFuLCBtaW5pbWFsICovXG5mdW5jdGlvbiBEYXNoYm9hcmRJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjhcIiBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCI+XG4gICAgICA8cmVjdCB4PVwiM1wiIHk9XCIzXCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiN1wiIHJ4PVwiMS41XCIgLz5cbiAgICAgIDxyZWN0IHg9XCIxNFwiIHk9XCIzXCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiN1wiIHJ4PVwiMS41XCIgLz5cbiAgICAgIDxyZWN0IHg9XCIzXCIgeT1cIjE0XCIgd2lkdGg9XCI3XCIgaGVpZ2h0PVwiN1wiIHJ4PVwiMS41XCIgLz5cbiAgICAgIDxyZWN0IHg9XCIxNFwiIHk9XCIxNFwiIHdpZHRoPVwiN1wiIGhlaWdodD1cIjdcIiByeD1cIjEuNVwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG5cbmZ1bmN0aW9uIFRhcmdldEljb24oKSB7XG4gIHJldHVybiAoXG4gICAgPHN2ZyB3aWR0aD1cIjE4XCIgaGVpZ2h0PVwiMThcIiB2aWV3Qm94PVwiMCAwIDI0IDI0XCIgZmlsbD1cIm5vbmVcIiBzdHJva2U9XCJjdXJyZW50Q29sb3JcIiBzdHJva2VXaWR0aD1cIjEuOFwiIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIj5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMTBcIiAvPlxuICAgICAgPGNpcmNsZSBjeD1cIjEyXCIgY3k9XCIxMlwiIHI9XCI2XCIgLz5cbiAgICAgIDxjaXJjbGUgY3g9XCIxMlwiIGN5PVwiMTJcIiByPVwiMlwiIC8+XG4gICAgPC9zdmc+XG4gICk7XG59XG5cbmZ1bmN0aW9uIEZpcmVJY29uKCkge1xuICByZXR1cm4gKFxuICAgIDxzdmcgd2lkdGg9XCIxOFwiIGhlaWdodD1cIjE4XCIgdmlld0JveD1cIjAgMCAyNCAyNFwiIGZpbGw9XCJub25lXCIgc3Ryb2tlPVwiY3VycmVudENvbG9yXCIgc3Ryb2tlV2lkdGg9XCIxLjhcIiBzdHJva2VMaW5lY2FwPVwicm91bmRcIiBzdHJva2VMaW5lam9pbj1cInJvdW5kXCI+XG4gICAgICA8cGF0aCBkPVwiTTEyIDJjLjUgMi41LS41IDUtMiA3IDEgMCAyLjUuNSAzIDIuNS41LTIgMi0zIDMtNC0xIDMtMSA2LTQgOC41LTEuNSAxLTMuNSAxLjUtNSAxLTEuNS0uNS0yLjUtMi0yLjUtMy41IDAtMyAzLTUgNS03LjVDMTAgNSAxMSAzLjUgMTIgMnpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuXG5mdW5jdGlvbiBDaGF0SWNvbigpIHtcbiAgcmV0dXJuIChcbiAgICA8c3ZnIHdpZHRoPVwiMThcIiBoZWlnaHQ9XCIxOFwiIHZpZXdCb3g9XCIwIDAgMjQgMjRcIiBmaWxsPVwibm9uZVwiIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiIHN0cm9rZVdpZHRoPVwiMS44XCIgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCIgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiPlxuICAgICAgPHBhdGggZD1cIk0yMSAxNWEyIDIgMCAwIDEtMiAySDdsLTQgNFY1YTIgMiAwIDAgMSAyLTJoMTRhMiAyIDAgMCAxIDIgMnpcIiAvPlxuICAgIDwvc3ZnPlxuICApO1xufVxuIl0sIm5hbWVzIjpbIm1ldGFkYXRhIiwidGl0bGUiLCJkZXNjcmlwdGlvbiIsInZpZXdwb3J0Iiwid2lkdGgiLCJpbml0aWFsU2NhbGUiLCJtYXhpbXVtU2NhbGUiLCJ1c2VyU2NhbGFibGUiLCJSb290TGF5b3V0IiwiY2hpbGRyZW4iLCJodG1sIiwibGFuZyIsImJvZHkiLCJjbGFzc05hbWUiLCJkaXYiLCJhc2lkZSIsImgxIiwicCIsIm5hdiIsIlNpZGVOYXZJdGVtIiwiaHJlZiIsImljb24iLCJEYXNoYm9hcmRJY29uIiwibGFiZWwiLCJUYXJnZXRJY29uIiwiRmlyZUljb24iLCJDaGF0SWNvbiIsInNwYW4iLCJtYWluIiwiTW9iaWxlTmF2IiwiTW9iaWxlTmF2SXRlbSIsImEiLCJzdmciLCJoZWlnaHQiLCJ2aWV3Qm94IiwiZmlsbCIsInN0cm9rZSIsInN0cm9rZVdpZHRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwicmVjdCIsIngiLCJ5IiwicngiLCJjaXJjbGUiLCJjeCIsImN5IiwiciIsInBhdGgiLCJkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(rsc)/./src/app/layout.tsx\n");
/***/ }),
/***/ "(rsc)/./src/app/page.tsx":
/*!**************************!*\
!*** ./src/app/page.tsx ***!
\**************************/
/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
"use strict";
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
/* harmony export */ });
/* harmony import */ var next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! next/dist/build/webpack/loaders/next-flight-loader/module-proxy */ "(rsc)/./node_modules/next/dist/build/webpack/loaders/next-flight-loader/module-proxy.js");
/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = ((0,next_dist_build_webpack_loaders_next_flight_loader_module_proxy__WEBPACK_IMPORTED_MODULE_0__.createProxy)(String.raw`/Users/aaron/source_code/astock-agent/frontend/src/app/page.tsx#default`));
/***/ })
};
;
// load runtime
var __webpack_require__ = require("../webpack-runtime.js");
__webpack_require__.C(exports);
var __webpack_exec__ = (moduleId) => (__webpack_require__(__webpack_require__.s = moduleId))
var __webpack_exports__ = __webpack_require__.X(0, ["vendor-chunks/next","vendor-chunks/@swc"], () => (__webpack_exec__("(rsc)/./node_modules/next/dist/build/webpack/loaders/next-app-loader.js?name=app%2Fpage&page=%2Fpage&appPaths=%2Fpage&pagePath=private-next-app-dir%2Fpage.tsx&appDir=%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend%2Fsrc%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Faaron%2Fsource_code%2Fastock-agent%2Ffrontend&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!")));
module.exports = __webpack_exports__;
})();