diff --git a/.next/app-build-manifest.json b/.next/app-build-manifest.json index e34f4d6..51393ec 100644 --- a/.next/app-build-manifest.json +++ b/.next/app-build-manifest.json @@ -1,9 +1,9 @@ { "pages": { - "/gunbuilder/page": [ + "/admin/gunbuilder/part-role-mappings/page": [ "static/chunks/webpack.js", "static/chunks/main-app.js", - "static/chunks/app/gunbuilder/page.js" + "static/chunks/app/admin/gunbuilder/part-role-mappings/page.js" ], "/layout": [ "static/chunks/webpack.js", @@ -11,6 +11,21 @@ "static/css/app/layout.css", "static/chunks/app/layout.js" ], + "/admin/page": [ + "static/chunks/webpack.js", + "static/chunks/main-app.js", + "static/chunks/app/admin/page.js" + ], + "/gunbuilder/page": [ + "static/chunks/webpack.js", + "static/chunks/main-app.js", + "static/chunks/app/gunbuilder/page.js" + ], + "/admin/gunbuilder/merchant-category-mappings/page": [ + "static/chunks/webpack.js", + "static/chunks/main-app.js", + "static/chunks/app/admin/gunbuilder/merchant-category-mappings/page.js" + ], "/_not-found/page": [ "static/chunks/webpack.js", "static/chunks/main-app.js", diff --git a/.next/cache/webpack/client-development-fallback/0.pack.gz b/.next/cache/webpack/client-development-fallback/0.pack.gz index e1ce7e9..28660ab 100644 Binary files a/.next/cache/webpack/client-development-fallback/0.pack.gz and b/.next/cache/webpack/client-development-fallback/0.pack.gz differ diff --git a/.next/cache/webpack/client-development-fallback/index.pack.gz b/.next/cache/webpack/client-development-fallback/index.pack.gz index 0f58fe8..a15d3c3 100644 Binary files a/.next/cache/webpack/client-development-fallback/index.pack.gz and b/.next/cache/webpack/client-development-fallback/index.pack.gz differ diff --git a/.next/cache/webpack/client-development/0.pack.gz b/.next/cache/webpack/client-development/0.pack.gz index d0909cb..e5d51c4 100644 Binary files a/.next/cache/webpack/client-development/0.pack.gz and b/.next/cache/webpack/client-development/0.pack.gz differ diff --git a/.next/cache/webpack/client-development/1.pack.gz b/.next/cache/webpack/client-development/1.pack.gz index 414f5c6..98f7a72 100644 Binary files a/.next/cache/webpack/client-development/1.pack.gz and b/.next/cache/webpack/client-development/1.pack.gz differ diff --git a/.next/cache/webpack/client-development/10.pack.gz b/.next/cache/webpack/client-development/10.pack.gz index 4ac9222..314b5c9 100644 Binary files a/.next/cache/webpack/client-development/10.pack.gz and b/.next/cache/webpack/client-development/10.pack.gz differ diff --git a/.next/cache/webpack/client-development/11.pack.gz b/.next/cache/webpack/client-development/11.pack.gz index 61f1091..047ba63 100644 Binary files a/.next/cache/webpack/client-development/11.pack.gz and b/.next/cache/webpack/client-development/11.pack.gz differ diff --git a/.next/cache/webpack/client-development/12.pack.gz b/.next/cache/webpack/client-development/12.pack.gz index 694ce7b..30f9786 100644 Binary files a/.next/cache/webpack/client-development/12.pack.gz and b/.next/cache/webpack/client-development/12.pack.gz differ diff --git a/.next/cache/webpack/client-development/13.pack.gz b/.next/cache/webpack/client-development/13.pack.gz index 71ce988..9a6844e 100644 Binary files a/.next/cache/webpack/client-development/13.pack.gz and b/.next/cache/webpack/client-development/13.pack.gz differ diff --git a/.next/cache/webpack/client-development/14.pack.gz b/.next/cache/webpack/client-development/14.pack.gz index 819f712..d10bee8 100644 Binary files a/.next/cache/webpack/client-development/14.pack.gz and b/.next/cache/webpack/client-development/14.pack.gz differ diff --git a/.next/cache/webpack/client-development/15.pack.gz b/.next/cache/webpack/client-development/15.pack.gz index 75ab4ff..e398cc9 100644 Binary files a/.next/cache/webpack/client-development/15.pack.gz and b/.next/cache/webpack/client-development/15.pack.gz differ diff --git a/.next/cache/webpack/client-development/16.pack.gz b/.next/cache/webpack/client-development/16.pack.gz index 4060edc..941e61e 100644 Binary files a/.next/cache/webpack/client-development/16.pack.gz and b/.next/cache/webpack/client-development/16.pack.gz differ diff --git a/.next/cache/webpack/client-development/17.pack.gz b/.next/cache/webpack/client-development/17.pack.gz index 36aa6b0..7220bc6 100644 Binary files a/.next/cache/webpack/client-development/17.pack.gz and b/.next/cache/webpack/client-development/17.pack.gz differ diff --git a/.next/cache/webpack/client-development/18.pack.gz b/.next/cache/webpack/client-development/18.pack.gz index 2cbf808..c820589 100644 Binary files a/.next/cache/webpack/client-development/18.pack.gz and b/.next/cache/webpack/client-development/18.pack.gz differ diff --git a/.next/cache/webpack/client-development/19.pack.gz b/.next/cache/webpack/client-development/19.pack.gz index f62a27a..25e14c9 100644 Binary files a/.next/cache/webpack/client-development/19.pack.gz and b/.next/cache/webpack/client-development/19.pack.gz differ diff --git a/.next/cache/webpack/client-development/2.pack.gz b/.next/cache/webpack/client-development/2.pack.gz index 00e9398..68f7208 100644 Binary files a/.next/cache/webpack/client-development/2.pack.gz and b/.next/cache/webpack/client-development/2.pack.gz differ diff --git a/.next/cache/webpack/client-development/20.pack.gz b/.next/cache/webpack/client-development/20.pack.gz index adfd0ec..e1b8d4d 100644 Binary files a/.next/cache/webpack/client-development/20.pack.gz and b/.next/cache/webpack/client-development/20.pack.gz differ diff --git a/.next/cache/webpack/client-development/22.pack.gz b/.next/cache/webpack/client-development/22.pack.gz index 82b63bd..4d29716 100644 Binary files a/.next/cache/webpack/client-development/22.pack.gz and b/.next/cache/webpack/client-development/22.pack.gz differ diff --git a/.next/cache/webpack/client-development/3.pack.gz b/.next/cache/webpack/client-development/3.pack.gz index fe6ce24..f5dc7bb 100644 Binary files a/.next/cache/webpack/client-development/3.pack.gz and b/.next/cache/webpack/client-development/3.pack.gz differ diff --git a/.next/cache/webpack/client-development/4.pack.gz b/.next/cache/webpack/client-development/4.pack.gz index 6799b63..802e371 100644 Binary files a/.next/cache/webpack/client-development/4.pack.gz and b/.next/cache/webpack/client-development/4.pack.gz differ diff --git a/.next/cache/webpack/client-development/5.pack.gz b/.next/cache/webpack/client-development/5.pack.gz index f38283b..b9d655a 100644 Binary files a/.next/cache/webpack/client-development/5.pack.gz and b/.next/cache/webpack/client-development/5.pack.gz differ diff --git a/.next/cache/webpack/client-development/6.pack.gz b/.next/cache/webpack/client-development/6.pack.gz index 956a1a6..7178c07 100644 Binary files a/.next/cache/webpack/client-development/6.pack.gz and b/.next/cache/webpack/client-development/6.pack.gz differ diff --git a/.next/cache/webpack/client-development/7.pack.gz b/.next/cache/webpack/client-development/7.pack.gz index fdeadd7..0e498dc 100644 Binary files a/.next/cache/webpack/client-development/7.pack.gz and b/.next/cache/webpack/client-development/7.pack.gz differ diff --git a/.next/cache/webpack/client-development/8.pack.gz b/.next/cache/webpack/client-development/8.pack.gz index 4239ae5..55cf597 100644 Binary files a/.next/cache/webpack/client-development/8.pack.gz and b/.next/cache/webpack/client-development/8.pack.gz differ diff --git a/.next/cache/webpack/client-development/9.pack.gz b/.next/cache/webpack/client-development/9.pack.gz index c6b11cc..6fea2d1 100644 Binary files a/.next/cache/webpack/client-development/9.pack.gz and b/.next/cache/webpack/client-development/9.pack.gz differ diff --git a/.next/cache/webpack/client-development/index.pack.gz b/.next/cache/webpack/client-development/index.pack.gz index bee015c..56cb1d0 100644 Binary files a/.next/cache/webpack/client-development/index.pack.gz and b/.next/cache/webpack/client-development/index.pack.gz differ diff --git a/.next/cache/webpack/client-development/index.pack.gz.old b/.next/cache/webpack/client-development/index.pack.gz.old index cbf231d..a1cbf9f 100644 Binary files a/.next/cache/webpack/client-development/index.pack.gz.old and b/.next/cache/webpack/client-development/index.pack.gz.old differ diff --git a/.next/cache/webpack/server-development/0.pack.gz b/.next/cache/webpack/server-development/0.pack.gz index b191468..b83b79b 100644 Binary files a/.next/cache/webpack/server-development/0.pack.gz and b/.next/cache/webpack/server-development/0.pack.gz differ diff --git a/.next/cache/webpack/server-development/1.pack.gz b/.next/cache/webpack/server-development/1.pack.gz index ab702dd..edfd2c8 100644 Binary files a/.next/cache/webpack/server-development/1.pack.gz and b/.next/cache/webpack/server-development/1.pack.gz differ diff --git a/.next/cache/webpack/server-development/10.pack.gz b/.next/cache/webpack/server-development/10.pack.gz index 70e716b..45e0640 100644 Binary files a/.next/cache/webpack/server-development/10.pack.gz and b/.next/cache/webpack/server-development/10.pack.gz differ diff --git a/.next/cache/webpack/server-development/11.pack.gz b/.next/cache/webpack/server-development/11.pack.gz index 104a090..14caa51 100644 Binary files a/.next/cache/webpack/server-development/11.pack.gz and b/.next/cache/webpack/server-development/11.pack.gz differ diff --git a/.next/cache/webpack/server-development/12.pack.gz b/.next/cache/webpack/server-development/12.pack.gz index 77d0f0a..94a22b2 100644 Binary files a/.next/cache/webpack/server-development/12.pack.gz and b/.next/cache/webpack/server-development/12.pack.gz differ diff --git a/.next/cache/webpack/server-development/13.pack.gz b/.next/cache/webpack/server-development/13.pack.gz index c3d2a83..3774ca9 100644 Binary files a/.next/cache/webpack/server-development/13.pack.gz and b/.next/cache/webpack/server-development/13.pack.gz differ diff --git a/.next/cache/webpack/server-development/14.pack.gz b/.next/cache/webpack/server-development/14.pack.gz index 2dc9680..2e1d199 100644 Binary files a/.next/cache/webpack/server-development/14.pack.gz and b/.next/cache/webpack/server-development/14.pack.gz differ diff --git a/.next/cache/webpack/server-development/2.pack.gz b/.next/cache/webpack/server-development/2.pack.gz index f93897f..aae7fc6 100644 Binary files a/.next/cache/webpack/server-development/2.pack.gz and b/.next/cache/webpack/server-development/2.pack.gz differ diff --git a/.next/cache/webpack/server-development/3.pack.gz b/.next/cache/webpack/server-development/3.pack.gz index 910837b..6cc2993 100644 Binary files a/.next/cache/webpack/server-development/3.pack.gz and b/.next/cache/webpack/server-development/3.pack.gz differ diff --git a/.next/cache/webpack/server-development/4.pack.gz b/.next/cache/webpack/server-development/4.pack.gz index 36570e3..6ef8b76 100644 Binary files a/.next/cache/webpack/server-development/4.pack.gz and b/.next/cache/webpack/server-development/4.pack.gz differ diff --git a/.next/cache/webpack/server-development/5.pack.gz b/.next/cache/webpack/server-development/5.pack.gz index 41bca2a..8e757fb 100644 Binary files a/.next/cache/webpack/server-development/5.pack.gz and b/.next/cache/webpack/server-development/5.pack.gz differ diff --git a/.next/cache/webpack/server-development/6.pack.gz b/.next/cache/webpack/server-development/6.pack.gz index 30c21c2..7726a25 100644 Binary files a/.next/cache/webpack/server-development/6.pack.gz and b/.next/cache/webpack/server-development/6.pack.gz differ diff --git a/.next/cache/webpack/server-development/7.pack.gz b/.next/cache/webpack/server-development/7.pack.gz index d705741..578f4c0 100644 Binary files a/.next/cache/webpack/server-development/7.pack.gz and b/.next/cache/webpack/server-development/7.pack.gz differ diff --git a/.next/cache/webpack/server-development/8.pack.gz b/.next/cache/webpack/server-development/8.pack.gz index 82edbcd..fe04715 100644 Binary files a/.next/cache/webpack/server-development/8.pack.gz and b/.next/cache/webpack/server-development/8.pack.gz differ diff --git a/.next/cache/webpack/server-development/9.pack.gz b/.next/cache/webpack/server-development/9.pack.gz index 6e0836b..1c32ae0 100644 Binary files a/.next/cache/webpack/server-development/9.pack.gz and b/.next/cache/webpack/server-development/9.pack.gz differ diff --git a/.next/cache/webpack/server-development/index.pack.gz b/.next/cache/webpack/server-development/index.pack.gz index ecaf349..03de4c0 100644 Binary files a/.next/cache/webpack/server-development/index.pack.gz and b/.next/cache/webpack/server-development/index.pack.gz differ diff --git a/.next/cache/webpack/server-development/index.pack.gz.old b/.next/cache/webpack/server-development/index.pack.gz.old index e13bb63..156562f 100644 Binary files a/.next/cache/webpack/server-development/index.pack.gz.old and b/.next/cache/webpack/server-development/index.pack.gz.old differ diff --git a/.next/server/app-paths-manifest.json b/.next/server/app-paths-manifest.json index 8ba7112..e229f11 100644 --- a/.next/server/app-paths-manifest.json +++ b/.next/server/app-paths-manifest.json @@ -1,4 +1,7 @@ { "/_not-found/page": "app/_not-found/page.js", - "/gunbuilder/page": "app/gunbuilder/page.js" + "/admin/gunbuilder/part-role-mappings/page": "app/admin/gunbuilder/part-role-mappings/page.js", + "/gunbuilder/page": "app/gunbuilder/page.js", + "/admin/page": "app/admin/page.js", + "/admin/gunbuilder/merchant-category-mappings/page": "app/admin/gunbuilder/merchant-category-mappings/page.js" } \ No newline at end of file diff --git a/.next/server/app/_not-found/page.js b/.next/server/app/_not-found/page.js index d63153c..e296b64 100644 --- a/.next/server/app/_not-found/page.js +++ b/.next/server/app/_not-found/page.js @@ -127,7 +127,7 @@ eval("Promise.resolve(/*! import() eager */).then(__webpack_require__.t.bind(__w /***/ ((__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 */ });\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 _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(ssr)/./app/globals.css\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(ssr)/./context/AuthContext.tsx\");\n/* harmony import */ var _components_TopNav__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/TopNav */ \"(ssr)/./components/TopNav.tsx\");\n/* harmony import */ var _components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/BuilderNav */ \"(ssr)/./components/BuilderNav.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n // or default import if that's how you exported it\n\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-black text-zinc-100\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_TopNav__WEBPACK_IMPORTED_MODULE_3__.TopNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 15,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__.BuilderNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 16,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 17,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 14,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUV1QjtBQUU4QjtBQUNSLENBQUMsa0RBQWtEO0FBQzNDO0FBRXRDLFNBQVNHLFdBQVcsRUFBRUMsUUFBUSxFQUEyQjtJQUN0RSxxQkFDRSw4REFBQ0M7UUFBS0MsTUFBSztrQkFDVCw0RUFBQ0M7WUFBS0MsV0FBVTtzQkFFZCw0RUFBQ1IsOERBQVlBOztrQ0FDWCw4REFBQ0Msc0RBQU1BOzs7OztrQ0FDUCw4REFBQ0MsOERBQVVBOzs7OztrQ0FDWCw4REFBQ087d0JBQUtELFdBQVU7a0NBQWdCSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUsxQyIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vYXBwL2xheW91dC50c3g/OTk4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IFwiLi9nbG9iYWxzLmNzc1wiO1xuaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gXCJAL2NvbnRleHQvQXV0aENvbnRleHRcIjtcbmltcG9ydCB7IFRvcE5hdiB9IGZyb20gXCJAL2NvbXBvbmVudHMvVG9wTmF2XCI7IC8vIG9yIGRlZmF1bHQgaW1wb3J0IGlmIHRoYXQncyBob3cgeW91IGV4cG9ydGVkIGl0XG5pbXBvcnQgeyBCdWlsZGVyTmF2IH0gZnJvbSBcIkAvY29tcG9uZW50cy9CdWlsZGVyTmF2XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJvb3RMYXlvdXQoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxodG1sIGxhbmc9XCJlblwiPlxuICAgICAgPGJvZHkgY2xhc3NOYW1lPVwiYmctYmxhY2sgdGV4dC16aW5jLTEwMFwiPlxuICAgICAgICB7LyogQXV0aFByb3ZpZGVyIHdyYXBzIGV2ZXJ5dGhpbmcgdGhhdCB1c2VzIHVzZUF1dGggKi99XG4gICAgICAgIDxBdXRoUHJvdmlkZXI+XG4gICAgICAgICAgPFRvcE5hdiAvPlxuICAgICAgICAgIDxCdWlsZGVyTmF2IC8+XG4gICAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuXCI+e2NoaWxkcmVufTwvbWFpbj5cbiAgICAgICAgPC9BdXRoUHJvdmlkZXI+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICApO1xufSJdLCJuYW1lcyI6WyJBdXRoUHJvdmlkZXIiLCJUb3BOYXYiLCJCdWlsZGVyTmF2IiwiUm9vdExheW91dCIsImNoaWxkcmVuIiwiaHRtbCIsImxhbmciLCJib2R5IiwiY2xhc3NOYW1lIiwibWFpbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/layout.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout)\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 _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(ssr)/./app/globals.css\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(ssr)/./context/AuthContext.tsx\");\n/* harmony import */ var _components_TopNav__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/TopNav */ \"(ssr)/./components/TopNav.tsx\");\n/* harmony import */ var _components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/BuilderNav */ \"(ssr)/./components/BuilderNav.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-black text-zinc-100\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_TopNav__WEBPACK_IMPORTED_MODULE_3__.TopNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 14,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__.BuilderNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 15,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 16,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 13,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUV1QjtBQUU4QjtBQUNSO0FBQ1E7QUFFdEMsU0FBU0csV0FBVyxFQUFFQyxRQUFRLEVBQTJCO0lBQ3RFLHFCQUNFLDhEQUFDQztRQUFLQyxNQUFLO2tCQUNULDRFQUFDQztZQUFLQyxXQUFVO3NCQUNkLDRFQUFDUiw4REFBWUE7O2tDQUNYLDhEQUFDQyxzREFBTUE7Ozs7O2tDQUNQLDhEQUFDQyw4REFBVUE7Ozs7O2tDQUNYLDhEQUFDTzt3QkFBS0QsV0FBVTtrQ0FBZ0JKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSzFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9hcHAvbGF5b3V0LnRzeD85OTg4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgXCIuL2dsb2JhbHMuY3NzXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQXV0aFByb3ZpZGVyIH0gZnJvbSBcIkAvY29udGV4dC9BdXRoQ29udGV4dFwiO1xuaW1wb3J0IHsgVG9wTmF2IH0gZnJvbSBcIkAvY29tcG9uZW50cy9Ub3BOYXZcIjtcbmltcG9ydCB7IEJ1aWxkZXJOYXYgfSBmcm9tIFwiQC9jb21wb25lbnRzL0J1aWxkZXJOYXZcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUm9vdExheW91dCh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8Ym9keSBjbGFzc05hbWU9XCJiZy1ibGFjayB0ZXh0LXppbmMtMTAwXCI+XG4gICAgICAgIDxBdXRoUHJvdmlkZXI+XG4gICAgICAgICAgPFRvcE5hdiAvPlxuICAgICAgICAgIDxCdWlsZGVyTmF2IC8+XG4gICAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuXCI+e2NoaWxkcmVufTwvbWFpbj5cbiAgICAgICAgPC9BdXRoUHJvdmlkZXI+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICApO1xufSJdLCJuYW1lcyI6WyJBdXRoUHJvdmlkZXIiLCJUb3BOYXYiLCJCdWlsZGVyTmF2IiwiUm9vdExheW91dCIsImNoaWxkcmVuIiwiaHRtbCIsImxhbmciLCJib2R5IiwiY2xhc3NOYW1lIiwibWFpbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/layout.tsx\n"); /***/ }), @@ -149,7 +149,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__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 */ TopNav: () => (/* binding */ TopNav)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(ssr)/./context/AuthContext.tsx\");\n// components/TopNav.tsx\n/* __next_internal_client_entry_do_not_use__ TopNav auto */ \n\n\nfunction TopNav() {\n const { user, logout, loading } = (0,_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.useAuth)();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"border-b border-zinc-800 bg-black/95 backdrop-blur\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-amber-500/20 bg-amber-500/5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl flex-col gap-1 px-4 py-2 text-[0.75rem] text-amber-100 md:flex-row md:items-center md:justify-between\",\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: \"rounded-sm bg-amber-500/20 px-2 py-0.5 text-[0.65rem] font-semibold uppercase tracking-[0.18em] text-amber-300\",\n children: \"Early Access Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 15,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-amber-100/90 md:inline\",\n children: \"You're using an early-access prototype of The Armory. Data, pricing, and available parts are still evolving.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 18,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 14,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-100/90 md:hidden\",\n children: \"Early-access prototype. Data and pricing may change.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 23,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 13,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl items-center justify-between px-4 py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/\",\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-400\",\n children: \"The Build Bench\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 30,\n columnNumber: 9\n }, this),\n /*#__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)(\"button\", {\n type: \"button\",\n className: \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-zinc-700 bg-zinc-900/60 text-zinc-400 hover:text-zinc-200 hover:bg-zinc-800 hover:border-zinc-500 transition-colors\",\n \"aria-label\": \"Search (coming soon)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"h-4 w-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"11\",\n cy: \"11\",\n r: \"6\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 55,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"16.5\",\n y1: \"16.5\",\n x2: \"21\",\n y2: \"21\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 45,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 40,\n columnNumber: 11\n }, this),\n loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500\",\n children: \"Checking session…\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 61,\n columnNumber: 13\n }, this) : user ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-300\",\n children: user.displayName || user.email\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 64,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: logout,\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log Out\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 67,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/login\",\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log In\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 77,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/register\",\n className: \"rounded-md border border-amber-400/70 bg-amber-400/10 px-3 py-1.5 text-xs font-semibold text-amber-200 hover:bg-amber-400/20 transition-colors\",\n children: \"Join Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 83,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 38,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 28,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL1RvcE5hdi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSx3QkFBd0I7O0FBR0s7QUFDbUI7QUFFekMsU0FBU0U7SUFDZCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0osNkRBQU9BO0lBRXpDLHFCQUNFLDhEQUFDSztRQUFPQyxXQUFVOzswQkFDaEIsOERBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0U7b0NBQUtGLFdBQVU7OENBQWlIOzs7Ozs7OENBR2pJLDhEQUFDRTtvQ0FBS0YsV0FBVTs4Q0FBcUM7Ozs7Ozs7Ozs7OztzQ0FLdkQsOERBQUNFOzRCQUFLRixXQUFVO3NDQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBS2xELDhEQUFDQztnQkFBSUQsV0FBVTs7a0NBRWIsOERBQUNQLGlEQUFJQTt3QkFDSFUsTUFBSzt3QkFDTEgsV0FBVTtrQ0FDWDs7Ozs7O2tDQUtELDhEQUFDQzt3QkFBSUQsV0FBVTs7MENBRWIsOERBQUNJO2dDQUNDQyxNQUFLO2dDQUNMTCxXQUFVO2dDQUNWTSxjQUFXOzBDQUVYLDRFQUFDQztvQ0FDQ0MsT0FBTTtvQ0FDTkMsU0FBUTtvQ0FDUkMsTUFBSztvQ0FDTEMsUUFBTztvQ0FDUEMsYUFBYTtvQ0FDYkMsZUFBYztvQ0FDZEMsZ0JBQWU7b0NBQ2ZkLFdBQVU7O3NEQUVWLDhEQUFDZTs0Q0FBT0MsSUFBRzs0Q0FBS0MsSUFBRzs0Q0FBS0MsR0FBRTs7Ozs7O3NEQUMxQiw4REFBQ0M7NENBQUtDLElBQUc7NENBQU9DLElBQUc7NENBQU9DLElBQUc7NENBQUtDLElBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQUl4Q3pCLHdCQUNDLDhEQUFDSTtnQ0FBS0YsV0FBVTswQ0FBd0I7Ozs7O3VDQUN0Q0oscUJBQ0Y7O2tEQUNFLDhEQUFDTTt3Q0FBS0YsV0FBVTtrREFDYkosS0FBSzRCLFdBQVcsSUFBSTVCLEtBQUs2QixLQUFLOzs7Ozs7a0RBRWpDLDhEQUFDckI7d0NBQ0NDLE1BQUs7d0NBQ0xxQixTQUFTN0I7d0NBQ1RHLFdBQVU7a0RBQ1g7Ozs7Ozs7NkRBS0g7O2tEQUNFLDhEQUFDUCxpREFBSUE7d0NBQ0hVLE1BQUs7d0NBQ0xILFdBQVU7a0RBQ1g7Ozs7OztrREFHRCw4REFBQ1AsaURBQUlBO3dDQUNIVSxNQUFLO3dDQUNMSCxXQUFVO2tEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9jb21wb25lbnRzL1RvcE5hdi50c3g/ZGY1NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjb21wb25lbnRzL1RvcE5hdi50c3hcblwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcIkAvY29udGV4dC9BdXRoQ29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gVG9wTmF2KCkge1xuICBjb25zdCB7IHVzZXIsIGxvZ291dCwgbG9hZGluZyB9ID0gdXNlQXV0aCgpO1xuXG4gIHJldHVybiAoXG4gICAgPGhlYWRlciBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItemluYy04MDAgYmctYmxhY2svOTUgYmFja2Ryb3AtYmx1clwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItYW1iZXItNTAwLzIwIGJnLWFtYmVyLTUwMC81XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBmbGV4IG1heC13LTZ4bCBmbGV4LWNvbCBnYXAtMSBweC00IHB5LTIgdGV4dC1bMC43NXJlbV0gdGV4dC1hbWJlci0xMDAgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJvdW5kZWQtc20gYmctYW1iZXItNTAwLzIwIHB4LTIgcHktMC41IHRleHQtWzAuNjVyZW1dIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLVswLjE4ZW1dIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgIEVhcmx5IEFjY2VzcyBCZXRhXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdGV4dC1hbWJlci0xMDAvOTAgbWQ6aW5saW5lXCI+XG4gICAgICAgICAgICAgIFlvdSZhcG9zO3JlIHVzaW5nIGFuIGVhcmx5LWFjY2VzcyBwcm90b3R5cGUgb2YgVGhlIEFybW9yeS4gRGF0YSxcbiAgICAgICAgICAgICAgcHJpY2luZywgYW5kIGF2YWlsYWJsZSBwYXJ0cyBhcmUgc3RpbGwgZXZvbHZpbmcuXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0xMDAvOTAgbWQ6aGlkZGVuXCI+XG4gICAgICAgICAgICBFYXJseS1hY2Nlc3MgcHJvdG90eXBlLiBEYXRhIGFuZCBwcmljaW5nIG1heSBjaGFuZ2UuXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctNnhsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0yXCI+XG4gICAgICAgIHsvKiBCcmFuZCAvIEhvbWUgbGluayAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBocmVmPVwiL1wiXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy00MDBcIlxuICAgICAgICA+XG4gICAgICAgICAgVGhlIEJ1aWxkIEJlbmNoXG4gICAgICAgIDwvTGluaz5cblxuICAgICAgICB7LyogUmlnaHQgc2lkZSBhY3Rpb25zICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgey8qIFNlYXJjaCBwbGFjZWhvbGRlciAqL31cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzYwIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTIwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaCAoY29taW5nIHNvb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjZcIiAvPlxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjE2LjVcIiB5MT1cIjE2LjVcIiB4Mj1cIjIxXCIgeTI9XCIyMVwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+Q2hlY2tpbmcgc2Vzc2lvbuKApjwvc3Bhbj5cbiAgICAgICAgICApIDogdXNlciA/IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTMwMFwiPlxuICAgICAgICAgICAgICAgIHt1c2VyLmRpc3BsYXlOYW1lIHx8IHVzZXIuZW1haWx9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2xvZ291dH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTEwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBMb2cgT3V0XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9sb2dpblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0xMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9nIEluXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL3JlZ2lzdGVyXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzcwIGJnLWFtYmVyLTQwMC8xMCBweC0zIHB5LTEuNSB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzIwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEpvaW4gQmV0YVxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICApO1xufSJdLCJuYW1lcyI6WyJMaW5rIiwidXNlQXV0aCIsIlRvcE5hdiIsInVzZXIiLCJsb2dvdXQiLCJsb2FkaW5nIiwiaGVhZGVyIiwiY2xhc3NOYW1lIiwiZGl2Iiwic3BhbiIsImhyZWYiLCJidXR0b24iLCJ0eXBlIiwiYXJpYS1sYWJlbCIsInN2ZyIsInhtbG5zIiwidmlld0JveCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImNpcmNsZSIsImN4IiwiY3kiLCJyIiwibGluZSIsIngxIiwieTEiLCJ4MiIsInkyIiwiZGlzcGxheU5hbWUiLCJlbWFpbCIsIm9uQ2xpY2siXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./components/TopNav.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TopNav: () => (/* binding */ TopNav)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(ssr)/./context/AuthContext.tsx\");\n// components/TopNav.tsx\n/* __next_internal_client_entry_do_not_use__ TopNav auto */ \n\n\nfunction TopNav() {\n const { user, logout, loading } = (0,_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.useAuth)();\n const isAuthenticated = !!user;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"border-b border-zinc-800 bg-black/95 backdrop-blur\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-amber-500/20 bg-amber-500/5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl flex-col gap-1 px-4 py-2 text-[0.75rem] text-amber-100 md:flex-row md:items-center md:justify-between\",\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: \"rounded-sm bg-amber-500/20 px-2 py-0.5 text-[0.65rem] font-semibold uppercase tracking-[0.18em] text-amber-300\",\n children: \"Early Access Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 18,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-amber-100/90 md:inline\",\n children: \"You're using an early-access prototype of The Armory. Data, pricing, and available parts are still evolving.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 21,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 17,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-100/90 md:hidden\",\n children: \"Early-access prototype. Data and pricing may change.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 26,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 16,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl items-center justify-between px-4 py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/\",\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-400\",\n children: \"The Build Bench\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 35,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"hidden items-center gap-4 md:flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs font-medium text-zinc-300 hover:text-zinc-50 transition-colors\",\n children: \"Builder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 44,\n columnNumber: 11\n }, this),\n isAuthenticated && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/admin\",\n className: \"text-xs font-medium text-emerald-400 hover:text-emerald-300 transition-colors\",\n children: \"Admin\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 43,\n columnNumber: 9\n }, this),\n /*#__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)(\"button\", {\n type: \"button\",\n className: \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-zinc-700 bg-zinc-900/60 text-zinc-400 hover:text-zinc-200 hover:bg-zinc-800 hover:border-zinc-500 transition-colors\",\n \"aria-label\": \"Search (coming soon)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"h-4 w-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"11\",\n cy: \"11\",\n r: \"6\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 79,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"16.5\",\n y1: \"16.5\",\n x2: \"21\",\n y2: \"21\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 80,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 69,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 64,\n columnNumber: 11\n }, this),\n loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500\",\n children: \"Checking session…\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this) : isAuthenticated ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-xs text-zinc-300 sm:inline\",\n children: user.displayName || user.email\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 88,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: logout,\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log Out\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 91,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/login\",\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log In\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 101,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/register\",\n className: \"rounded-md border border-amber-400/70 bg-amber-400/10 px-3 py-1.5 text-xs font-semibold text-amber-200 hover:bg-amber-400/20 transition-colors\",\n children: \"Join Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 107,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 62,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 33,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 13,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL1RvcE5hdi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSx3QkFBd0I7O0FBR0s7QUFDbUI7QUFFekMsU0FBU0U7SUFDZCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0osNkRBQU9BO0lBRXpDLE1BQU1LLGtCQUFrQixDQUFDLENBQUNIO0lBRTFCLHFCQUNFLDhEQUFDSTtRQUFPQyxXQUFVOzswQkFFaEIsOERBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0U7b0NBQUtGLFdBQVU7OENBQWlIOzs7Ozs7OENBR2pJLDhEQUFDRTtvQ0FBS0YsV0FBVTs4Q0FBcUM7Ozs7Ozs7Ozs7OztzQ0FLdkQsOERBQUNFOzRCQUFLRixXQUFVO3NDQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBT2xELDhEQUFDQztnQkFBSUQsV0FBVTs7a0NBRWIsOERBQUNSLGlEQUFJQTt3QkFDSFcsTUFBSzt3QkFDTEgsV0FBVTtrQ0FDWDs7Ozs7O2tDQUtELDhEQUFDSTt3QkFBSUosV0FBVTs7MENBQ2IsOERBQUNSLGlEQUFJQTtnQ0FDSFcsTUFBSztnQ0FDTEgsV0FBVTswQ0FDWDs7Ozs7OzRCQUlBRixpQ0FDQyw4REFBQ04saURBQUlBO2dDQUNIVyxNQUFLO2dDQUNMSCxXQUFVOzBDQUNYOzs7Ozs7Ozs7Ozs7a0NBT0wsOERBQUNDO3dCQUFJRCxXQUFVOzswQ0FFYiw4REFBQ0s7Z0NBQ0NDLE1BQUs7Z0NBQ0xOLFdBQVU7Z0NBQ1ZPLGNBQVc7MENBRVgsNEVBQUNDO29DQUNDQyxPQUFNO29DQUNOQyxTQUFRO29DQUNSQyxNQUFLO29DQUNMQyxRQUFPO29DQUNQQyxhQUFhO29DQUNiQyxlQUFjO29DQUNkQyxnQkFBZTtvQ0FDZmYsV0FBVTs7c0RBRVYsOERBQUNnQjs0Q0FBT0MsSUFBRzs0Q0FBS0MsSUFBRzs0Q0FBS0MsR0FBRTs7Ozs7O3NEQUMxQiw4REFBQ0M7NENBQUtDLElBQUc7NENBQU9DLElBQUc7NENBQU9DLElBQUc7NENBQUtDLElBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQUl4QzNCLHdCQUNDLDhEQUFDSztnQ0FBS0YsV0FBVTswQ0FBd0I7Ozs7O3VDQUN0Q0YsZ0NBQ0Y7O2tEQUNFLDhEQUFDSTt3Q0FBS0YsV0FBVTtrREFDYkwsS0FBSzhCLFdBQVcsSUFBSTlCLEtBQUsrQixLQUFLOzs7Ozs7a0RBRWpDLDhEQUFDckI7d0NBQ0NDLE1BQUs7d0NBQ0xxQixTQUFTL0I7d0NBQ1RJLFdBQVU7a0RBQ1g7Ozs7Ozs7NkRBS0g7O2tEQUNFLDhEQUFDUixpREFBSUE7d0NBQ0hXLE1BQUs7d0NBQ0xILFdBQVU7a0RBQ1g7Ozs7OztrREFHRCw4REFBQ1IsaURBQUlBO3dDQUNIVyxNQUFLO3dDQUNMSCxXQUFVO2tEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9jb21wb25lbnRzL1RvcE5hdi50c3g/ZGY1NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjb21wb25lbnRzL1RvcE5hdi50c3hcblwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcIkAvY29udGV4dC9BdXRoQ29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gVG9wTmF2KCkge1xuICBjb25zdCB7IHVzZXIsIGxvZ291dCwgbG9hZGluZyB9ID0gdXNlQXV0aCgpO1xuXG4gIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9ICEhdXNlcjtcblxuICByZXR1cm4gKFxuICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLXppbmMtODAwIGJnLWJsYWNrLzk1IGJhY2tkcm9wLWJsdXJcIj5cbiAgICAgIHsvKiBFYXJseSBhY2Nlc3MgYmFyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItYW1iZXItNTAwLzIwIGJnLWFtYmVyLTUwMC81XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBmbGV4IG1heC13LTZ4bCBmbGV4LWNvbCBnYXAtMSBweC00IHB5LTIgdGV4dC1bMC43NXJlbV0gdGV4dC1hbWJlci0xMDAgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJvdW5kZWQtc20gYmctYW1iZXItNTAwLzIwIHB4LTIgcHktMC41IHRleHQtWzAuNjVyZW1dIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLVswLjE4ZW1dIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgIEVhcmx5IEFjY2VzcyBCZXRhXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdGV4dC1hbWJlci0xMDAvOTAgbWQ6aW5saW5lXCI+XG4gICAgICAgICAgICAgIFlvdSZhcG9zO3JlIHVzaW5nIGFuIGVhcmx5LWFjY2VzcyBwcm90b3R5cGUgb2YgVGhlIEFybW9yeS4gRGF0YSxcbiAgICAgICAgICAgICAgcHJpY2luZywgYW5kIGF2YWlsYWJsZSBwYXJ0cyBhcmUgc3RpbGwgZXZvbHZpbmcuXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0xMDAvOTAgbWQ6aGlkZGVuXCI+XG4gICAgICAgICAgICBFYXJseS1hY2Nlc3MgcHJvdG90eXBlLiBEYXRhIGFuZCBwcmljaW5nIG1heSBjaGFuZ2UuXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogTWFpbiBuYXYgcm93ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctNnhsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0yXCI+XG4gICAgICAgIHsvKiBMZWZ0OiBCcmFuZCAvIEhvbWUgKi99XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIFRoZSBCdWlsZCBCZW5jaFxuICAgICAgICA8L0xpbms+XG5cbiAgICAgICAgey8qIENlbnRlcjogbWFpbiBuYXYgKEJ1aWxkZXIgLyBBZG1pbikgKi99XG4gICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiaGlkZGVuIGl0ZW1zLWNlbnRlciBnYXAtNCBtZDpmbGV4XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6dGV4dC16aW5jLTUwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBCdWlsZGVyXG4gICAgICAgICAgPC9MaW5rPlxuXG4gICAgICAgICAge2lzQXV0aGVudGljYXRlZCAmJiAoXG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPVwiL2FkbWluXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LWVtZXJhbGQtNDAwIGhvdmVyOnRleHQtZW1lcmFsZC0zMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBZG1pblxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvbmF2PlxuXG4gICAgICAgIHsvKiBSaWdodCBzaWRlIGFjdGlvbnMgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICB7LyogU2VhcmNoIHBsYWNlaG9sZGVyICovfVxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNjAgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMjAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTUwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIChjb21pbmcgc29vbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC00IHctNFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiNlwiIC8+XG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTYuNVwiIHkxPVwiMTYuNVwiIHgyPVwiMjFcIiB5Mj1cIjIxXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDBcIj5DaGVja2luZyBzZXNzaW9u4oCmPC9zcGFuPlxuICAgICAgICAgICkgOiBpc0F1dGhlbnRpY2F0ZWQgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdGV4dC14cyB0ZXh0LXppbmMtMzAwIHNtOmlubGluZVwiPlxuICAgICAgICAgICAgICAgIHt1c2VyLmRpc3BsYXlOYW1lIHx8IHVzZXIuZW1haWx9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2xvZ291dH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTEwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBMb2cgT3V0XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9sb2dpblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0xMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9nIEluXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL3JlZ2lzdGVyXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzcwIGJnLWFtYmVyLTQwMC8xMCBweC0zIHB5LTEuNSB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzIwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEpvaW4gQmV0YVxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICApO1xufSJdLCJuYW1lcyI6WyJMaW5rIiwidXNlQXV0aCIsIlRvcE5hdiIsInVzZXIiLCJsb2dvdXQiLCJsb2FkaW5nIiwiaXNBdXRoZW50aWNhdGVkIiwiaGVhZGVyIiwiY2xhc3NOYW1lIiwiZGl2Iiwic3BhbiIsImhyZWYiLCJuYXYiLCJidXR0b24iLCJ0eXBlIiwiYXJpYS1sYWJlbCIsInN2ZyIsInhtbG5zIiwidmlld0JveCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImNpcmNsZSIsImN4IiwiY3kiLCJyIiwibGluZSIsIngxIiwieTEiLCJ4MiIsInkyIiwiZGlzcGxheU5hbWUiLCJlbWFpbCIsIm9uQ2xpY2siXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./components/TopNav.tsx\n"); /***/ }), @@ -160,7 +160,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__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 */ AuthProvider: () => (/* binding */ AuthProvider),\n/* harmony export */ useAuth: () => (/* binding */ useAuth)\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/* __next_internal_client_entry_do_not_use__ AuthProvider,useAuth auto */ \n\nconst API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ?? \"http://localhost:8080\";\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);\nconst TOKEN_KEY = \"ballistic_auth_token\";\nconst USER_KEY = \"ballistic_auth_user\";\nfunction AuthProvider({ children }) {\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [token, setToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true); // start true while we hydrate + reuse for calls\n // hydrate from localStorage\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n try {\n if (true) return;\n const storedToken = window.localStorage.getItem(TOKEN_KEY);\n const storedUser = window.localStorage.getItem(USER_KEY);\n if (storedToken && storedUser) {\n setToken(storedToken);\n setUser(JSON.parse(storedUser));\n }\n } catch {\n // ignore\n } finally{\n setLoading(false);\n }\n }, []);\n const setSession = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((newToken, newUser)=>{\n setToken(newToken);\n setUser(newUser);\n if (false) {}\n }, []);\n const clearSession = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n setToken(null);\n setUser(null);\n if (false) {}\n }, []);\n const register = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async (params)=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/api/auth/register`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email: params.email,\n password: params.password,\n displayName: params.displayName\n })\n });\n if (!res.ok) {\n const text = await res.text();\n throw new Error(text || \"Failed to create account\");\n }\n const data = await res.json();\n setSession(data.token, {\n email: data.email,\n displayName: data.displayName ?? null,\n role: data.role\n });\n } finally{\n setLoading(false);\n }\n }, [\n setSession\n ]);\n const login = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async (params)=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/api/auth/login`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email: params.email,\n password: params.password\n })\n });\n if (!res.ok) {\n const text = await res.text();\n throw new Error(text || \"Failed to log in\");\n }\n const data = await res.json();\n setSession(data.token, {\n email: data.email,\n displayName: data.displayName ?? null,\n role: data.role\n });\n } finally{\n setLoading(false);\n }\n }, [\n setSession\n ]);\n const logout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n clearSession();\n }, [\n clearSession\n ]);\n const getAuthHeaders = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n if (!token) return {};\n return {\n Authorization: `Bearer ${token}`\n };\n }, [\n token\n ]);\n const value = {\n user,\n token,\n loading,\n login,\n register,\n logout,\n getAuthHeaders\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AuthContext.Provider, {\n value: value,\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx\",\n lineNumber: 183,\n columnNumber: 10\n }, this);\n}\nfunction useAuth() {\n const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AuthContext);\n if (!ctx) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return ctx;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb250ZXh0L0F1dGhDb250ZXh0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBU2U7QUFFZixNQUFNSyxlQUNKQyxRQUFRQyxHQUFHLENBQUNDLHdCQUF3QixJQUFJO0FBc0IxQyxNQUFNQyw0QkFBY1Qsb0RBQWFBLENBQStCVTtBQUVoRSxNQUFNQyxZQUFZO0FBQ2xCLE1BQU1DLFdBQVc7QUFFVixTQUFTQyxhQUFhLEVBQUVDLFFBQVEsRUFBMkI7SUFDaEUsTUFBTSxDQUFDQyxNQUFNQyxRQUFRLEdBQUdaLCtDQUFRQSxDQUFXO0lBQzNDLE1BQU0sQ0FBQ2EsT0FBT0MsU0FBUyxHQUFHZCwrQ0FBUUEsQ0FBZ0I7SUFDbEQsTUFBTSxDQUFDZSxTQUFTQyxXQUFXLEdBQUdoQiwrQ0FBUUEsQ0FBQyxPQUFPLGdEQUFnRDtJQUU5Riw0QkFBNEI7SUFDNUJELGdEQUFTQSxDQUFDO1FBQ1IsSUFBSTtZQUNGLElBQUksSUFBNkIsRUFBRTtZQUVuQyxNQUFNa0IsY0FBY0MsT0FBT0MsWUFBWSxDQUFDQyxPQUFPLENBQUNiO1lBQ2hELE1BQU1jLGFBQWFILE9BQU9DLFlBQVksQ0FBQ0MsT0FBTyxDQUFDWjtZQUUvQyxJQUFJUyxlQUFlSSxZQUFZO2dCQUM3QlAsU0FBU0c7Z0JBQ1RMLFFBQVFVLEtBQUtDLEtBQUssQ0FBQ0Y7WUFDckI7UUFDRixFQUFFLE9BQU07UUFDTixTQUFTO1FBQ1gsU0FBVTtZQUNSTCxXQUFXO1FBQ2I7SUFDRixHQUFHLEVBQUU7SUFFTCxNQUFNUSxhQUFhM0Isa0RBQVdBLENBQUMsQ0FBQzRCLFVBQWtCQztRQUNoRFosU0FBU1c7UUFDVGIsUUFBUWM7UUFFUixJQUFJLEtBQTZCLEVBQUUsRUFHbEM7SUFDSCxHQUFHLEVBQUU7SUFFTCxNQUFNRyxlQUFlaEMsa0RBQVdBLENBQUM7UUFDL0JpQixTQUFTO1FBQ1RGLFFBQVE7UUFDUixJQUFJLEtBQTZCLEVBQUUsRUFHbEM7SUFDSCxHQUFHLEVBQUU7SUFFTCxNQUFNbUIsV0FBV2xDLGtEQUFXQSxDQUMxQixPQUFPbUM7UUFDTGhCLFdBQVc7UUFDWCxJQUFJO1lBQ0YsTUFBTWlCLE1BQU0sTUFBTUMsTUFBTSxDQUFDLEVBQUVqQyxhQUFhLGtCQUFrQixDQUFDLEVBQUU7Z0JBQzNEa0MsUUFBUTtnQkFDUkMsU0FBUztvQkFDUCxnQkFBZ0I7Z0JBQ2xCO2dCQUNBQyxNQUFNZixLQUFLTSxTQUFTLENBQUM7b0JBQ25CVSxPQUFPTixPQUFPTSxLQUFLO29CQUNuQkMsVUFBVVAsT0FBT08sUUFBUTtvQkFDekJDLGFBQWFSLE9BQU9RLFdBQVc7Z0JBQ2pDO1lBQ0Y7WUFFQSxJQUFJLENBQUNQLElBQUlRLEVBQUUsRUFBRTtnQkFDWCxNQUFNQyxPQUFPLE1BQU1ULElBQUlTLElBQUk7Z0JBQzNCLE1BQU0sSUFBSUMsTUFBTUQsUUFBUTtZQUMxQjtZQUVBLE1BQU1FLE9BS0YsTUFBTVgsSUFBSVksSUFBSTtZQUVsQnJCLFdBQVdvQixLQUFLL0IsS0FBSyxFQUFFO2dCQUNyQnlCLE9BQU9NLEtBQUtOLEtBQUs7Z0JBQ2pCRSxhQUFhSSxLQUFLSixXQUFXLElBQUk7Z0JBQ2pDTSxNQUFNRixLQUFLRSxJQUFJO1lBQ2pCO1FBQ0YsU0FBVTtZQUNSOUIsV0FBVztRQUNiO0lBQ0YsR0FDQTtRQUFDUTtLQUFXO0lBR2QsTUFBTXVCLFFBQVFsRCxrREFBV0EsQ0FDdkIsT0FBT21DO1FBQ0xoQixXQUFXO1FBQ1gsSUFBSTtZQUNGLE1BQU1pQixNQUFNLE1BQU1DLE1BQU0sQ0FBQyxFQUFFakMsYUFBYSxlQUFlLENBQUMsRUFBRTtnQkFDeERrQyxRQUFRO2dCQUNSQyxTQUFTO29CQUNQLGdCQUFnQjtnQkFDbEI7Z0JBQ0FDLE1BQU1mLEtBQUtNLFNBQVMsQ0FBQztvQkFDbkJVLE9BQU9OLE9BQU9NLEtBQUs7b0JBQ25CQyxVQUFVUCxPQUFPTyxRQUFRO2dCQUMzQjtZQUNGO1lBRUEsSUFBSSxDQUFDTixJQUFJUSxFQUFFLEVBQUU7Z0JBQ1gsTUFBTUMsT0FBTyxNQUFNVCxJQUFJUyxJQUFJO2dCQUMzQixNQUFNLElBQUlDLE1BQU1ELFFBQVE7WUFDMUI7WUFFQSxNQUFNRSxPQUtGLE1BQU1YLElBQUlZLElBQUk7WUFFbEJyQixXQUFXb0IsS0FBSy9CLEtBQUssRUFBRTtnQkFDckJ5QixPQUFPTSxLQUFLTixLQUFLO2dCQUNqQkUsYUFBYUksS0FBS0osV0FBVyxJQUFJO2dCQUNqQ00sTUFBTUYsS0FBS0UsSUFBSTtZQUNqQjtRQUNGLFNBQVU7WUFDUjlCLFdBQVc7UUFDYjtJQUNGLEdBQ0E7UUFBQ1E7S0FBVztJQUdkLE1BQU13QixTQUFTbkQsa0RBQVdBLENBQUM7UUFDekJnQztJQUNGLEdBQUc7UUFBQ0E7S0FBYTtJQUVqQixNQUFNb0IsaUJBQWlCcEQsa0RBQVdBLENBQUM7UUFDakMsSUFBSSxDQUFDZ0IsT0FBTyxPQUFPLENBQUM7UUFDcEIsT0FBTztZQUNMcUMsZUFBZSxDQUFDLE9BQU8sRUFBRXJDLE1BQU0sQ0FBQztRQUNsQztJQUNGLEdBQUc7UUFBQ0E7S0FBTTtJQUVWLE1BQU1zQyxRQUEwQjtRQUM5QnhDO1FBQ0FFO1FBQ0FFO1FBQ0FnQztRQUNBaEI7UUFDQWlCO1FBQ0FDO0lBQ0Y7SUFFQSxxQkFBTyw4REFBQzVDLFlBQVkrQyxRQUFRO1FBQUNELE9BQU9BO2tCQUFRekM7Ozs7OztBQUM5QztBQUVPLFNBQVMyQztJQUNkLE1BQU1DLE1BQU14RCxpREFBVUEsQ0FBQ087SUFDdkIsSUFBSSxDQUFDaUQsS0FBSztRQUNSLE1BQU0sSUFBSVgsTUFBTTtJQUNsQjtJQUNBLE9BQU9XO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2NvbnRleHQvQXV0aENvbnRleHQudHN4P2ZkZmYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxuICBSZWFjdE5vZGUsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBBUElfQkFTRV9VUkwgPVxuICBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19BUElfQkFTRV9VUkwgPz8gXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIjtcblxudHlwZSBBdXRoVXNlciA9IHtcbiAgZW1haWw6IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICByb2xlOiBzdHJpbmc7XG59IHwgbnVsbDtcblxudHlwZSBBdXRoQ29udGV4dFZhbHVlID0ge1xuICB1c2VyOiBBdXRoVXNlcjtcbiAgdG9rZW46IHN0cmluZyB8IG51bGw7IFxuICBsb2FkaW5nOiBib29sZWFuOyAvLyBjb3ZlcnMgaW5pdGlhbCBoeWRyYXRlICsgYWN0aXZlIGF1dGggcmVxdWVzdHNcbiAgbG9naW46IChwYXJhbXM6IHsgZW1haWw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9KSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWdpc3RlcjogKHBhcmFtczoge1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IHN0cmluZztcbiAgfSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbG9nb3V0OiAoKSA9PiB2b2lkO1xuICBnZXRBdXRoSGVhZGVyczogKCkgPT4gSGVhZGVyc0luaXQ7XG59O1xuXG5jb25zdCBBdXRoQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8QXV0aENvbnRleHRWYWx1ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuY29uc3QgVE9LRU5fS0VZID0gXCJiYWxsaXN0aWNfYXV0aF90b2tlblwiO1xuY29uc3QgVVNFUl9LRVkgPSBcImJhbGxpc3RpY19hdXRoX3VzZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIEF1dGhQcm92aWRlcih7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IFt1c2VyLCBzZXRVc2VyXSA9IHVzZVN0YXRlPEF1dGhVc2VyPihudWxsKTtcbiAgY29uc3QgW3Rva2VuLCBzZXRUb2tlbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7IC8vIHN0YXJ0IHRydWUgd2hpbGUgd2UgaHlkcmF0ZSArIHJldXNlIGZvciBjYWxsc1xuXG4gIC8vIGh5ZHJhdGUgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcblxuICAgICAgY29uc3Qgc3RvcmVkVG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVE9LRU5fS0VZKTtcbiAgICAgIGNvbnN0IHN0b3JlZFVzZXIgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVVNFUl9LRVkpO1xuXG4gICAgICBpZiAoc3RvcmVkVG9rZW4gJiYgc3RvcmVkVXNlcikge1xuICAgICAgICBzZXRUb2tlbihzdG9yZWRUb2tlbik7XG4gICAgICAgIHNldFVzZXIoSlNPTi5wYXJzZShzdG9yZWRVc2VyKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgY29uc3Qgc2V0U2Vzc2lvbiA9IHVzZUNhbGxiYWNrKChuZXdUb2tlbjogc3RyaW5nLCBuZXdVc2VyOiBBdXRoVXNlcikgPT4ge1xuICAgIHNldFRva2VuKG5ld1Rva2VuKTtcbiAgICBzZXRVc2VyKG5ld1VzZXIpO1xuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShUT0tFTl9LRVksIG5ld1Rva2VuKTtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShVU0VSX0tFWSwgSlNPTi5zdHJpbmdpZnkobmV3VXNlcikpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IGNsZWFyU2Vzc2lvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRUb2tlbihudWxsKTtcbiAgICBzZXRVc2VyKG51bGwpO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVE9LRU5fS0VZKTtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShVU0VSX0tFWSk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgY29uc3QgcmVnaXN0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocGFyYW1zOiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGRpc3BsYXlOYW1lPzogc3RyaW5nIH0pID0+IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHtBUElfQkFTRV9VUkx9L2FwaS9hdXRoL3JlZ2lzdGVyYCwge1xuICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBlbWFpbDogcGFyYW1zLmVtYWlsLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHBhcmFtcy5wYXNzd29yZCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBwYXJhbXMuZGlzcGxheU5hbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KCk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRleHQgfHwgXCJGYWlsZWQgdG8gY3JlYXRlIGFjY291bnRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhOiB7XG4gICAgICAgICAgdG9rZW46IHN0cmluZztcbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgICAgIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICAgICAgICAgIHJvbGU6IHN0cmluZztcbiAgICAgICAgfSA9IGF3YWl0IHJlcy5qc29uKCk7XG5cbiAgICAgICAgc2V0U2Vzc2lvbihkYXRhLnRva2VuLCB7XG4gICAgICAgICAgZW1haWw6IGRhdGEuZW1haWwsXG4gICAgICAgICAgZGlzcGxheU5hbWU6IGRhdGEuZGlzcGxheU5hbWUgPz8gbnVsbCxcbiAgICAgICAgICByb2xlOiBkYXRhLnJvbGUsXG4gICAgICAgIH0pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2V0U2Vzc2lvbl0sXG4gICk7XG5cbiAgY29uc3QgbG9naW4gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocGFyYW1zOiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFX1VSTH0vYXBpL2F1dGgvbG9naW5gLCB7XG4gICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGVtYWlsOiBwYXJhbXMuZW1haWwsXG4gICAgICAgICAgICBwYXNzd29yZDogcGFyYW1zLnBhc3N3b3JkLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0IHx8IFwiRmFpbGVkIHRvIGxvZyBpblwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGE6IHtcbiAgICAgICAgICB0b2tlbjogc3RyaW5nO1xuICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgcm9sZTogc3RyaW5nO1xuICAgICAgICB9ID0gYXdhaXQgcmVzLmpzb24oKTtcblxuICAgICAgICBzZXRTZXNzaW9uKGRhdGEudG9rZW4sIHtcbiAgICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogZGF0YS5kaXNwbGF5TmFtZSA/PyBudWxsLFxuICAgICAgICAgIHJvbGU6IGRhdGEucm9sZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXRTZXNzaW9uXSxcbiAgKTtcblxuICBjb25zdCBsb2dvdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2xlYXJTZXNzaW9uKCk7XG4gIH0sIFtjbGVhclNlc3Npb25dKTtcblxuICBjb25zdCBnZXRBdXRoSGVhZGVycyA9IHVzZUNhbGxiYWNrKCgpOiBIZWFkZXJzSW5pdCA9PiB7XG4gICAgaWYgKCF0b2tlbikgcmV0dXJuIHt9O1xuICAgIHJldHVybiB7XG4gICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICB9O1xuICB9LCBbdG9rZW5dKTtcblxuICBjb25zdCB2YWx1ZTogQXV0aENvbnRleHRWYWx1ZSA9IHtcbiAgICB1c2VyLFxuICAgIHRva2VuLFxuICAgIGxvYWRpbmcsXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgbG9nb3V0LFxuICAgIGdldEF1dGhIZWFkZXJzLFxuICB9O1xuXG4gIHJldHVybiA8QXV0aENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9BdXRoQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBdXRoKCk6IEF1dGhDb250ZXh0VmFsdWUge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KEF1dGhDb250ZXh0KTtcbiAgaWYgKCFjdHgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBdXRoIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gQXV0aFByb3ZpZGVyXCIpO1xuICB9XG4gIHJldHVybiBjdHg7XG59Il0sIm5hbWVzIjpbImNyZWF0ZUNvbnRleHQiLCJ1c2VDYWxsYmFjayIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkFQSV9CQVNFX1VSTCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1BVQkxJQ19BUElfQkFTRV9VUkwiLCJBdXRoQ29udGV4dCIsInVuZGVmaW5lZCIsIlRPS0VOX0tFWSIsIlVTRVJfS0VZIiwiQXV0aFByb3ZpZGVyIiwiY2hpbGRyZW4iLCJ1c2VyIiwic2V0VXNlciIsInRva2VuIiwic2V0VG9rZW4iLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsInN0b3JlZFRva2VuIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInN0b3JlZFVzZXIiLCJKU09OIiwicGFyc2UiLCJzZXRTZXNzaW9uIiwibmV3VG9rZW4iLCJuZXdVc2VyIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImNsZWFyU2Vzc2lvbiIsInJlbW92ZUl0ZW0iLCJyZWdpc3RlciIsInBhcmFtcyIsInJlcyIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJlbWFpbCIsInBhc3N3b3JkIiwiZGlzcGxheU5hbWUiLCJvayIsInRleHQiLCJFcnJvciIsImRhdGEiLCJqc29uIiwicm9sZSIsImxvZ2luIiwibG9nb3V0IiwiZ2V0QXV0aEhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwidmFsdWUiLCJQcm92aWRlciIsInVzZUF1dGgiLCJjdHgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./context/AuthContext.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AuthProvider: () => (/* binding */ AuthProvider),\n/* harmony export */ useAuth: () => (/* binding */ useAuth)\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/* __next_internal_client_entry_do_not_use__ AuthProvider,useAuth auto */ \n\nconst API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ?? \"http://localhost:8080\";\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);\nconst TOKEN_KEY = \"ballistic_auth_token\";\nconst USER_KEY = \"ballistic_auth_user\";\nfunction AuthProvider({ children }) {\n const [token, setToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n // Hydrate from localStorage on first load\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (true) return;\n const storedToken = window.localStorage.getItem(TOKEN_KEY);\n const storedUser = window.localStorage.getItem(USER_KEY);\n if (storedToken) {\n setToken(storedToken);\n }\n if (storedUser) {\n try {\n setUser(JSON.parse(storedUser));\n } catch {\n // bad JSON? wipe it\n window.localStorage.removeItem(USER_KEY);\n }\n }\n setLoading(false);\n }, []);\n const persistAuth = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((nextToken, nextUser)=>{\n if (true) return;\n if (nextToken) {\n window.localStorage.setItem(TOKEN_KEY, nextToken);\n } else {\n window.localStorage.removeItem(TOKEN_KEY);\n }\n if (nextUser) {\n window.localStorage.setItem(USER_KEY, JSON.stringify(nextUser));\n } else {\n window.localStorage.removeItem(USER_KEY);\n }\n }, []);\n const login = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ({ email, password })=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/auth/login`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n password\n })\n });\n if (!res.ok) {\n const text = await res.text().catch(()=>res.statusText);\n throw new Error(text || \"Login failed\");\n }\n const data = await res.json();\n // Adjust these to match your backend response shape\n const nextToken = data.token ?? data.accessToken;\n const nextUser = data.user ?? {\n email: data.email ?? email,\n displayName: data.displayName ?? null,\n role: data.role ?? \"USER\"\n };\n setToken(nextToken);\n setUser(nextUser);\n persistAuth(nextToken, nextUser);\n } finally{\n setLoading(false);\n }\n }, [\n persistAuth\n ]);\n const register = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ({ email, password, displayName })=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/auth/register`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n password,\n displayName\n })\n });\n if (!res.ok) {\n const text = await res.text().catch(()=>res.statusText);\n throw new Error(text || \"Registration failed\");\n }\n const data = await res.json();\n const nextToken = data.token ?? data.accessToken;\n const nextUser = data.user ?? {\n email: data.email ?? email,\n displayName: data.displayName ?? displayName ?? null,\n role: data.role ?? \"USER\"\n };\n setToken(nextToken);\n setUser(nextUser);\n persistAuth(nextToken, nextUser);\n } finally{\n setLoading(false);\n }\n }, [\n persistAuth\n ]);\n const logout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n setToken(null);\n setUser(null);\n persistAuth(null, null);\n }, [\n persistAuth\n ]);\n const getAuthHeaders = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n return token ? {\n Authorization: `Bearer ${token}`\n } : {};\n }, [\n token\n ]);\n const value = {\n user,\n token,\n loading,\n login,\n register,\n logout,\n getAuthHeaders\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AuthContext.Provider, {\n value: value,\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx\",\n lineNumber: 185,\n columnNumber: 10\n }, this);\n}\n// 🔑 This is what your useApi hook imports\nfunction useAuth() {\n const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AuthContext);\n if (!ctx) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return ctx;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb250ZXh0L0F1dGhDb250ZXh0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBU2U7QUFFZixNQUFNSyxlQUNKQyxRQUFRQyxHQUFHLENBQUNDLHdCQUF3QixJQUFJO0FBc0IxQyxNQUFNQyw0QkFBY1Qsb0RBQWFBLENBQStCVTtBQUVoRSxNQUFNQyxZQUFZO0FBQ2xCLE1BQU1DLFdBQVc7QUFFVixTQUFTQyxhQUFhLEVBQUVDLFFBQVEsRUFBMkI7SUFDaEUsTUFBTSxDQUFDQyxPQUFPQyxTQUFTLEdBQUdaLCtDQUFRQSxDQUFnQjtJQUNsRCxNQUFNLENBQUNhLE1BQU1DLFFBQVEsR0FBR2QsK0NBQVFBLENBQVc7SUFDM0MsTUFBTSxDQUFDZSxTQUFTQyxXQUFXLEdBQUdoQiwrQ0FBUUEsQ0FBVTtJQUVoRCwwQ0FBMEM7SUFDMUNELGdEQUFTQSxDQUFDO1FBQ1IsSUFBSSxJQUE2QixFQUFFO1FBRW5DLE1BQU1rQixjQUFjQyxPQUFPQyxZQUFZLENBQUNDLE9BQU8sQ0FBQ2I7UUFDaEQsTUFBTWMsYUFBYUgsT0FBT0MsWUFBWSxDQUFDQyxPQUFPLENBQUNaO1FBRS9DLElBQUlTLGFBQWE7WUFDZkwsU0FBU0s7UUFDWDtRQUVBLElBQUlJLFlBQVk7WUFDZCxJQUFJO2dCQUNGUCxRQUFRUSxLQUFLQyxLQUFLLENBQUNGO1lBQ3JCLEVBQUUsT0FBTTtnQkFDTixvQkFBb0I7Z0JBQ3BCSCxPQUFPQyxZQUFZLENBQUNLLFVBQVUsQ0FBQ2hCO1lBQ2pDO1FBQ0Y7UUFFQVEsV0FBVztJQUNiLEdBQUcsRUFBRTtJQUVMLE1BQU1TLGNBQWM1QixrREFBV0EsQ0FBQyxDQUFDNkIsV0FBMEJDO1FBQ3pELElBQUksSUFBNkIsRUFBRTtRQUVuQyxJQUFJRCxXQUFXO1lBQ2JSLE9BQU9DLFlBQVksQ0FBQ1MsT0FBTyxDQUFDckIsV0FBV21CO1FBQ3pDLE9BQU87WUFDTFIsT0FBT0MsWUFBWSxDQUFDSyxVQUFVLENBQUNqQjtRQUNqQztRQUVBLElBQUlvQixVQUFVO1lBQ1pULE9BQU9DLFlBQVksQ0FBQ1MsT0FBTyxDQUFDcEIsVUFBVWMsS0FBS08sU0FBUyxDQUFDRjtRQUN2RCxPQUFPO1lBQ0xULE9BQU9DLFlBQVksQ0FBQ0ssVUFBVSxDQUFDaEI7UUFDakM7SUFDRixHQUFHLEVBQUU7SUFFTCxNQUFNc0IsUUFBUWpDLGtEQUFXQSxDQUN2QixPQUFPLEVBQUVrQyxLQUFLLEVBQUVDLFFBQVEsRUFBdUM7UUFDN0RoQixXQUFXO1FBQ1gsSUFBSTtZQUNGLE1BQU1pQixNQUFNLE1BQU1DLE1BQU0sQ0FBQyxFQUFFakMsYUFBYSxXQUFXLENBQUMsRUFBRTtnQkFDcERrQyxRQUFRO2dCQUNSQyxTQUFTO29CQUFFLGdCQUFnQjtnQkFBbUI7Z0JBQzlDQyxNQUFNZixLQUFLTyxTQUFTLENBQUM7b0JBQUVFO29CQUFPQztnQkFBUztZQUN6QztZQUVBLElBQUksQ0FBQ0MsSUFBSUssRUFBRSxFQUFFO2dCQUNYLE1BQU1DLE9BQU8sTUFBTU4sSUFBSU0sSUFBSSxHQUFHQyxLQUFLLENBQUMsSUFBTVAsSUFBSVEsVUFBVTtnQkFDeEQsTUFBTSxJQUFJQyxNQUFNSCxRQUFRO1lBQzFCO1lBRUEsTUFBTUksT0FBTyxNQUFNVixJQUFJVyxJQUFJO1lBRTNCLG9EQUFvRDtZQUNwRCxNQUFNbEIsWUFBb0JpQixLQUFLaEMsS0FBSyxJQUFJZ0MsS0FBS0UsV0FBVztZQUN4RCxNQUFNbEIsV0FDSmdCLEtBQUs5QixJQUFJLElBQ1I7Z0JBQ0NrQixPQUFPWSxLQUFLWixLQUFLLElBQUlBO2dCQUNyQmUsYUFBYUgsS0FBS0csV0FBVyxJQUFJO2dCQUNqQ0MsTUFBTUosS0FBS0ksSUFBSSxJQUFJO1lBQ3JCO1lBRUZuQyxTQUFTYztZQUNUWixRQUFRYTtZQUNSRixZQUFZQyxXQUFXQztRQUN6QixTQUFVO1lBQ1JYLFdBQVc7UUFDYjtJQUNGLEdBQ0E7UUFBQ1M7S0FBWTtJQUdmLE1BQU11QixXQUFXbkQsa0RBQVdBLENBQzFCLE9BQU8sRUFDTGtDLEtBQUssRUFDTEMsUUFBUSxFQUNSYyxXQUFXLEVBS1o7UUFDQzlCLFdBQVc7UUFDWCxJQUFJO1lBQ0YsTUFBTWlCLE1BQU0sTUFBTUMsTUFBTSxDQUFDLEVBQUVqQyxhQUFhLGNBQWMsQ0FBQyxFQUFFO2dCQUN2RGtDLFFBQVE7Z0JBQ1JDLFNBQVM7b0JBQUUsZ0JBQWdCO2dCQUFtQjtnQkFDOUNDLE1BQU1mLEtBQUtPLFNBQVMsQ0FBQztvQkFBRUU7b0JBQU9DO29CQUFVYztnQkFBWTtZQUN0RDtZQUVBLElBQUksQ0FBQ2IsSUFBSUssRUFBRSxFQUFFO2dCQUNYLE1BQU1DLE9BQU8sTUFBTU4sSUFBSU0sSUFBSSxHQUFHQyxLQUFLLENBQUMsSUFBTVAsSUFBSVEsVUFBVTtnQkFDeEQsTUFBTSxJQUFJQyxNQUFNSCxRQUFRO1lBQzFCO1lBRUEsTUFBTUksT0FBTyxNQUFNVixJQUFJVyxJQUFJO1lBRTNCLE1BQU1sQixZQUFvQmlCLEtBQUtoQyxLQUFLLElBQUlnQyxLQUFLRSxXQUFXO1lBQ3hELE1BQU1sQixXQUNKZ0IsS0FBSzlCLElBQUksSUFDUjtnQkFDQ2tCLE9BQU9ZLEtBQUtaLEtBQUssSUFBSUE7Z0JBQ3JCZSxhQUFhSCxLQUFLRyxXQUFXLElBQUlBLGVBQWU7Z0JBQ2hEQyxNQUFNSixLQUFLSSxJQUFJLElBQUk7WUFDckI7WUFFRm5DLFNBQVNjO1lBQ1RaLFFBQVFhO1lBQ1JGLFlBQVlDLFdBQVdDO1FBQ3pCLFNBQVU7WUFDUlgsV0FBVztRQUNiO0lBQ0YsR0FDQTtRQUFDUztLQUFZO0lBR2YsTUFBTXdCLFNBQVNwRCxrREFBV0EsQ0FBQztRQUN6QmUsU0FBUztRQUNURSxRQUFRO1FBQ1JXLFlBQVksTUFBTTtJQUNwQixHQUFHO1FBQUNBO0tBQVk7SUFFaEIsTUFBTXlCLGlCQUFpQnJELGtEQUFXQSxDQUFDO1FBQ2pDLE9BQU9jLFFBQVE7WUFBRXdDLGVBQWUsQ0FBQyxPQUFPLEVBQUV4QyxNQUFNLENBQUM7UUFBQyxJQUFJLENBQUM7SUFDekQsR0FBRztRQUFDQTtLQUFNO0lBRVYsTUFBTXlDLFFBQTBCO1FBQzlCdkM7UUFDQUY7UUFDQUk7UUFDQWU7UUFDQWtCO1FBQ0FDO1FBQ0FDO0lBQ0Y7SUFFQSxxQkFBTyw4REFBQzdDLFlBQVlnRCxRQUFRO1FBQUNELE9BQU9BO2tCQUFRMUM7Ozs7OztBQUM5QztBQUVBLDJDQUEyQztBQUNwQyxTQUFTNEM7SUFDZCxNQUFNQyxNQUFNekQsaURBQVVBLENBQUNPO0lBQ3ZCLElBQUksQ0FBQ2tELEtBQUs7UUFDUixNQUFNLElBQUliLE1BQU07SUFDbEI7SUFDQSxPQUFPYTtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9jb250ZXh0L0F1dGhDb250ZXh0LnRzeD9mZGZmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQge1xuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbiAgUmVhY3ROb2RlLFxufSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgQVBJX0JBU0VfVVJMID1cbiAgcHJvY2Vzcy5lbnYuTkVYVF9QVUJMSUNfQVBJX0JBU0VfVVJMID8/IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCI7XG5cbnR5cGUgQXV0aFVzZXIgPSB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgcm9sZTogc3RyaW5nO1xufSB8IG51bGw7XG5cbnR5cGUgQXV0aENvbnRleHRWYWx1ZSA9IHtcbiAgdXNlcjogQXV0aFVzZXI7XG4gIHRva2VuOiBzdHJpbmcgfCBudWxsO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBsb2dpbjogKHBhcmFtczogeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0pID0+IFByb21pc2U8dm9pZD47XG4gIHJlZ2lzdGVyOiAocGFyYW1zOiB7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICB9KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsb2dvdXQ6ICgpID0+IHZvaWQ7XG4gIGdldEF1dGhIZWFkZXJzOiAoKSA9PiBIZWFkZXJzSW5pdDtcbn07XG5cbmNvbnN0IEF1dGhDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxBdXRoQ29udGV4dFZhbHVlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5jb25zdCBUT0tFTl9LRVkgPSBcImJhbGxpc3RpY19hdXRoX3Rva2VuXCI7XG5jb25zdCBVU0VSX0tFWSA9IFwiYmFsbGlzdGljX2F1dGhfdXNlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gQXV0aFByb3ZpZGVyKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgW3Rva2VuLCBzZXRUb2tlbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3VzZXIsIHNldFVzZXJdID0gdXNlU3RhdGU8QXV0aFVzZXI+KG51bGwpO1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPih0cnVlKTtcblxuICAvLyBIeWRyYXRlIGZyb20gbG9jYWxTdG9yYWdlIG9uIGZpcnN0IGxvYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RvcmVkVG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVE9LRU5fS0VZKTtcbiAgICBjb25zdCBzdG9yZWRVc2VyID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFVTRVJfS0VZKTtcblxuICAgIGlmIChzdG9yZWRUb2tlbikge1xuICAgICAgc2V0VG9rZW4oc3RvcmVkVG9rZW4pO1xuICAgIH1cblxuICAgIGlmIChzdG9yZWRVc2VyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXRVc2VyKEpTT04ucGFyc2Uoc3RvcmVkVXNlcikpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGJhZCBKU09OPyB3aXBlIGl0XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShVU0VSX0tFWSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBwZXJzaXN0QXV0aCA9IHVzZUNhbGxiYWNrKChuZXh0VG9rZW46IHN0cmluZyB8IG51bGwsIG5leHRVc2VyOiBBdXRoVXNlcikgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG5cbiAgICBpZiAobmV4dFRva2VuKSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oVE9LRU5fS0VZLCBuZXh0VG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVE9LRU5fS0VZKTtcbiAgICB9XG5cbiAgICBpZiAobmV4dFVzZXIpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShVU0VSX0tFWSwgSlNPTi5zdHJpbmdpZnkobmV4dFVzZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFVTRVJfS0VZKTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICBjb25zdCBsb2dpbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGVtYWlsLCBwYXNzd29yZCB9OiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFX1VSTH0vYXV0aC9sb2dpbmAsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsLCBwYXNzd29yZCB9KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKS5jYXRjaCgoKSA9PiByZXMuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRleHQgfHwgXCJMb2dpbiBmYWlsZWRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcblxuICAgICAgICAvLyBBZGp1c3QgdGhlc2UgdG8gbWF0Y2ggeW91ciBiYWNrZW5kIHJlc3BvbnNlIHNoYXBlXG4gICAgICAgIGNvbnN0IG5leHRUb2tlbjogc3RyaW5nID0gZGF0YS50b2tlbiA/PyBkYXRhLmFjY2Vzc1Rva2VuO1xuICAgICAgICBjb25zdCBuZXh0VXNlcjogQXV0aFVzZXIgPVxuICAgICAgICAgIGRhdGEudXNlciA/P1xuICAgICAgICAgICh7XG4gICAgICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCA/PyBlbWFpbCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBkYXRhLmRpc3BsYXlOYW1lID8/IG51bGwsXG4gICAgICAgICAgICByb2xlOiBkYXRhLnJvbGUgPz8gXCJVU0VSXCIsXG4gICAgICAgICAgfSBhcyBBdXRoVXNlcik7XG5cbiAgICAgICAgc2V0VG9rZW4obmV4dFRva2VuKTtcbiAgICAgICAgc2V0VXNlcihuZXh0VXNlcik7XG4gICAgICAgIHBlcnNpc3RBdXRoKG5leHRUb2tlbiwgbmV4dFVzZXIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcGVyc2lzdEF1dGhdXG4gICk7XG5cbiAgY29uc3QgcmVnaXN0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgZW1haWwsXG4gICAgICBwYXNzd29yZCxcbiAgICAgIGRpc3BsYXlOYW1lLFxuICAgIH06IHtcbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gICAgfSkgPT4ge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFX1VSTH0vYXV0aC9yZWdpc3RlcmAsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsLCBwYXNzd29yZCwgZGlzcGxheU5hbWUgfSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KCkuY2F0Y2goKCkgPT4gcmVzLnN0YXR1c1RleHQpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0IHx8IFwiUmVnaXN0cmF0aW9uIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuXG4gICAgICAgIGNvbnN0IG5leHRUb2tlbjogc3RyaW5nID0gZGF0YS50b2tlbiA/PyBkYXRhLmFjY2Vzc1Rva2VuO1xuICAgICAgICBjb25zdCBuZXh0VXNlcjogQXV0aFVzZXIgPVxuICAgICAgICAgIGRhdGEudXNlciA/P1xuICAgICAgICAgICh7XG4gICAgICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCA/PyBlbWFpbCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBkYXRhLmRpc3BsYXlOYW1lID8/IGRpc3BsYXlOYW1lID8/IG51bGwsXG4gICAgICAgICAgICByb2xlOiBkYXRhLnJvbGUgPz8gXCJVU0VSXCIsXG4gICAgICAgICAgfSBhcyBBdXRoVXNlcik7XG5cbiAgICAgICAgc2V0VG9rZW4obmV4dFRva2VuKTtcbiAgICAgICAgc2V0VXNlcihuZXh0VXNlcik7XG4gICAgICAgIHBlcnNpc3RBdXRoKG5leHRUb2tlbiwgbmV4dFVzZXIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcGVyc2lzdEF1dGhdXG4gICk7XG5cbiAgY29uc3QgbG9nb3V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFRva2VuKG51bGwpO1xuICAgIHNldFVzZXIobnVsbCk7XG4gICAgcGVyc2lzdEF1dGgobnVsbCwgbnVsbCk7XG4gIH0sIFtwZXJzaXN0QXV0aF0pO1xuXG4gIGNvbnN0IGdldEF1dGhIZWFkZXJzID0gdXNlQ2FsbGJhY2soKCk6IEhlYWRlcnNJbml0ID0+IHtcbiAgICByZXR1cm4gdG9rZW4gPyB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gIH0gOiB7fTtcbiAgfSwgW3Rva2VuXSk7XG5cbiAgY29uc3QgdmFsdWU6IEF1dGhDb250ZXh0VmFsdWUgPSB7XG4gICAgdXNlcixcbiAgICB0b2tlbixcbiAgICBsb2FkaW5nLFxuICAgIGxvZ2luLFxuICAgIHJlZ2lzdGVyLFxuICAgIGxvZ291dCxcbiAgICBnZXRBdXRoSGVhZGVycyxcbiAgfTtcblxuICByZXR1cm4gPEF1dGhDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvQXV0aENvbnRleHQuUHJvdmlkZXI+O1xufVxuXG4vLyDwn5SRIFRoaXMgaXMgd2hhdCB5b3VyIHVzZUFwaSBob29rIGltcG9ydHNcbmV4cG9ydCBmdW5jdGlvbiB1c2VBdXRoKCk6IEF1dGhDb250ZXh0VmFsdWUge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KEF1dGhDb250ZXh0KTtcbiAgaWYgKCFjdHgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBdXRoIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gQXV0aFByb3ZpZGVyXCIpO1xuICB9XG4gIHJldHVybiBjdHg7XG59Il0sIm5hbWVzIjpbImNyZWF0ZUNvbnRleHQiLCJ1c2VDYWxsYmFjayIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkFQSV9CQVNFX1VSTCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1BVQkxJQ19BUElfQkFTRV9VUkwiLCJBdXRoQ29udGV4dCIsInVuZGVmaW5lZCIsIlRPS0VOX0tFWSIsIlVTRVJfS0VZIiwiQXV0aFByb3ZpZGVyIiwiY2hpbGRyZW4iLCJ0b2tlbiIsInNldFRva2VuIiwidXNlciIsInNldFVzZXIiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsInN0b3JlZFRva2VuIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInN0b3JlZFVzZXIiLCJKU09OIiwicGFyc2UiLCJyZW1vdmVJdGVtIiwicGVyc2lzdEF1dGgiLCJuZXh0VG9rZW4iLCJuZXh0VXNlciIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJsb2dpbiIsImVtYWlsIiwicGFzc3dvcmQiLCJyZXMiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5Iiwib2siLCJ0ZXh0IiwiY2F0Y2giLCJzdGF0dXNUZXh0IiwiRXJyb3IiLCJkYXRhIiwianNvbiIsImFjY2Vzc1Rva2VuIiwiZGlzcGxheU5hbWUiLCJyb2xlIiwicmVnaXN0ZXIiLCJsb2dvdXQiLCJnZXRBdXRoSGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJ2YWx1ZSIsIlByb3ZpZGVyIiwidXNlQXV0aCIsImN0eCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./context/AuthContext.tsx\n"); /***/ }), diff --git a/.next/server/app/_not-found/page_client-reference-manifest.js b/.next/server/app/_not-found/page_client-reference-manifest.js index 574981d..e033e72 100644 --- a/.next/server/app/_not-found/page_client-reference-manifest.js +++ b/.next/server/app/_not-found/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/layout.tsx":{"*":{"id":"(ssr)/./app/layout.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx":{"id":"(app-pages-browser)/./app/layout.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/_not-found/page":[]}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/_not-found/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./app/admin/gunbuilder/part-role-mappings/page.tsx":{"*":{"id":"(ssr)/./app/admin/gunbuilder/part-role-mappings/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/layout.tsx":{"*":{"id":"(ssr)/./app/layout.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/page.tsx":{"*":{"id":"(ssr)/./app/admin/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/gunbuilder/merchant-category-mappings/page.tsx":{"*":{"id":"(ssr)/./app/admin/gunbuilder/merchant-category-mappings/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/app/admin/gunbuilder/part-role-mappings/page.tsx":{"id":"(app-pages-browser)/./app/admin/gunbuilder/part-role-mappings/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx":{"id":"(app-pages-browser)/./app/layout.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/page.tsx":{"id":"(app-pages-browser)/./app/admin/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/gunbuilder/merchant-category-mappings/page.tsx":{"id":"(app-pages-browser)/./app/admin/gunbuilder/merchant-category-mappings/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/_not-found/page":[]}} \ No newline at end of file diff --git a/.next/server/app/gunbuilder/page.js b/.next/server/app/gunbuilder/page.js index b98bb36..3bad511 100644 --- a/.next/server/app/gunbuilder/page.js +++ b/.next/server/app/gunbuilder/page.js @@ -148,7 +148,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__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 */ });\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 _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(ssr)/./app/globals.css\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(ssr)/./context/AuthContext.tsx\");\n/* harmony import */ var _components_TopNav__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/TopNav */ \"(ssr)/./components/TopNav.tsx\");\n/* harmony import */ var _components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/BuilderNav */ \"(ssr)/./components/BuilderNav.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n // or default import if that's how you exported it\n\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-black text-zinc-100\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_TopNav__WEBPACK_IMPORTED_MODULE_3__.TopNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 15,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__.BuilderNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 16,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 17,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 14,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUV1QjtBQUU4QjtBQUNSLENBQUMsa0RBQWtEO0FBQzNDO0FBRXRDLFNBQVNHLFdBQVcsRUFBRUMsUUFBUSxFQUEyQjtJQUN0RSxxQkFDRSw4REFBQ0M7UUFBS0MsTUFBSztrQkFDVCw0RUFBQ0M7WUFBS0MsV0FBVTtzQkFFZCw0RUFBQ1IsOERBQVlBOztrQ0FDWCw4REFBQ0Msc0RBQU1BOzs7OztrQ0FDUCw4REFBQ0MsOERBQVVBOzs7OztrQ0FDWCw4REFBQ087d0JBQUtELFdBQVU7a0NBQWdCSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUsxQyIsInNvdXJjZXMiOlsid2VicGFjazovL2d1bmJ1aWxkZXItcHJvdG90eXBlLy4vYXBwL2xheW91dC50c3g/OTk4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IFwiLi9nbG9iYWxzLmNzc1wiO1xuaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gXCJAL2NvbnRleHQvQXV0aENvbnRleHRcIjtcbmltcG9ydCB7IFRvcE5hdiB9IGZyb20gXCJAL2NvbXBvbmVudHMvVG9wTmF2XCI7IC8vIG9yIGRlZmF1bHQgaW1wb3J0IGlmIHRoYXQncyBob3cgeW91IGV4cG9ydGVkIGl0XG5pbXBvcnQgeyBCdWlsZGVyTmF2IH0gZnJvbSBcIkAvY29tcG9uZW50cy9CdWlsZGVyTmF2XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJvb3RMYXlvdXQoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxodG1sIGxhbmc9XCJlblwiPlxuICAgICAgPGJvZHkgY2xhc3NOYW1lPVwiYmctYmxhY2sgdGV4dC16aW5jLTEwMFwiPlxuICAgICAgICB7LyogQXV0aFByb3ZpZGVyIHdyYXBzIGV2ZXJ5dGhpbmcgdGhhdCB1c2VzIHVzZUF1dGggKi99XG4gICAgICAgIDxBdXRoUHJvdmlkZXI+XG4gICAgICAgICAgPFRvcE5hdiAvPlxuICAgICAgICAgIDxCdWlsZGVyTmF2IC8+XG4gICAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuXCI+e2NoaWxkcmVufTwvbWFpbj5cbiAgICAgICAgPC9BdXRoUHJvdmlkZXI+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICApO1xufSJdLCJuYW1lcyI6WyJBdXRoUHJvdmlkZXIiLCJUb3BOYXYiLCJCdWlsZGVyTmF2IiwiUm9vdExheW91dCIsImNoaWxkcmVuIiwiaHRtbCIsImxhbmciLCJib2R5IiwiY2xhc3NOYW1lIiwibWFpbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/layout.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": () => (/* binding */ RootLayout)\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 _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(ssr)/./app/globals.css\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(ssr)/./context/AuthContext.tsx\");\n/* harmony import */ var _components_TopNav__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/TopNav */ \"(ssr)/./components/TopNav.tsx\");\n/* harmony import */ var _components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/BuilderNav */ \"(ssr)/./components/BuilderNav.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\nfunction RootLayout({ children }) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-black text-zinc-100\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_TopNav__WEBPACK_IMPORTED_MODULE_3__.TopNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 14,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__.BuilderNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 15,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 16,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 13,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9hcHAvbGF5b3V0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7OztBQUV1QjtBQUU4QjtBQUNSO0FBQ1E7QUFFdEMsU0FBU0csV0FBVyxFQUFFQyxRQUFRLEVBQTJCO0lBQ3RFLHFCQUNFLDhEQUFDQztRQUFLQyxNQUFLO2tCQUNULDRFQUFDQztZQUFLQyxXQUFVO3NCQUNkLDRFQUFDUiw4REFBWUE7O2tDQUNYLDhEQUFDQyxzREFBTUE7Ozs7O2tDQUNQLDhEQUFDQyw4REFBVUE7Ozs7O2tDQUNYLDhEQUFDTzt3QkFBS0QsV0FBVTtrQ0FBZ0JKOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBSzFDIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9hcHAvbGF5b3V0LnRzeD85OTg4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgXCIuL2dsb2JhbHMuY3NzXCI7XG5pbXBvcnQgdHlwZSB7IFJlYWN0Tm9kZSB9IGZyb20gXCJyZWFjdFwiO1xuaW1wb3J0IHsgQXV0aFByb3ZpZGVyIH0gZnJvbSBcIkAvY29udGV4dC9BdXRoQ29udGV4dFwiO1xuaW1wb3J0IHsgVG9wTmF2IH0gZnJvbSBcIkAvY29tcG9uZW50cy9Ub3BOYXZcIjtcbmltcG9ydCB7IEJ1aWxkZXJOYXYgfSBmcm9tIFwiQC9jb21wb25lbnRzL0J1aWxkZXJOYXZcIjtcblxuZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gUm9vdExheW91dCh7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSB7XG4gIHJldHVybiAoXG4gICAgPGh0bWwgbGFuZz1cImVuXCI+XG4gICAgICA8Ym9keSBjbGFzc05hbWU9XCJiZy1ibGFjayB0ZXh0LXppbmMtMTAwXCI+XG4gICAgICAgIDxBdXRoUHJvdmlkZXI+XG4gICAgICAgICAgPFRvcE5hdiAvPlxuICAgICAgICAgIDxCdWlsZGVyTmF2IC8+XG4gICAgICAgICAgPG1haW4gY2xhc3NOYW1lPVwibWluLWgtc2NyZWVuXCI+e2NoaWxkcmVufTwvbWFpbj5cbiAgICAgICAgPC9BdXRoUHJvdmlkZXI+XG4gICAgICA8L2JvZHk+XG4gICAgPC9odG1sPlxuICApO1xufSJdLCJuYW1lcyI6WyJBdXRoUHJvdmlkZXIiLCJUb3BOYXYiLCJCdWlsZGVyTmF2IiwiUm9vdExheW91dCIsImNoaWxkcmVuIiwiaHRtbCIsImxhbmciLCJib2R5IiwiY2xhc3NOYW1lIiwibWFpbiJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./app/layout.tsx\n"); /***/ }), @@ -170,7 +170,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__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 */ TopNav: () => (/* binding */ TopNav)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(ssr)/./context/AuthContext.tsx\");\n// components/TopNav.tsx\n/* __next_internal_client_entry_do_not_use__ TopNav auto */ \n\n\nfunction TopNav() {\n const { user, logout, loading } = (0,_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.useAuth)();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"border-b border-zinc-800 bg-black/95 backdrop-blur\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-amber-500/20 bg-amber-500/5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl flex-col gap-1 px-4 py-2 text-[0.75rem] text-amber-100 md:flex-row md:items-center md:justify-between\",\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: \"rounded-sm bg-amber-500/20 px-2 py-0.5 text-[0.65rem] font-semibold uppercase tracking-[0.18em] text-amber-300\",\n children: \"Early Access Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 15,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-amber-100/90 md:inline\",\n children: \"You're using an early-access prototype of The Armory. Data, pricing, and available parts are still evolving.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 18,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 14,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-100/90 md:hidden\",\n children: \"Early-access prototype. Data and pricing may change.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 23,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 13,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl items-center justify-between px-4 py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/\",\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-400\",\n children: \"The Build Bench\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 30,\n columnNumber: 9\n }, this),\n /*#__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)(\"button\", {\n type: \"button\",\n className: \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-zinc-700 bg-zinc-900/60 text-zinc-400 hover:text-zinc-200 hover:bg-zinc-800 hover:border-zinc-500 transition-colors\",\n \"aria-label\": \"Search (coming soon)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"h-4 w-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"11\",\n cy: \"11\",\n r: \"6\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 55,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"16.5\",\n y1: \"16.5\",\n x2: \"21\",\n y2: \"21\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 45,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 40,\n columnNumber: 11\n }, this),\n loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500\",\n children: \"Checking session…\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 61,\n columnNumber: 13\n }, this) : user ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-300\",\n children: user.displayName || user.email\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 64,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: logout,\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log Out\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 67,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/login\",\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log In\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 77,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/register\",\n className: \"rounded-md border border-amber-400/70 bg-amber-400/10 px-3 py-1.5 text-xs font-semibold text-amber-200 hover:bg-amber-400/20 transition-colors\",\n children: \"Join Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 83,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 38,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 28,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL1RvcE5hdi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSx3QkFBd0I7O0FBR0s7QUFDbUI7QUFFekMsU0FBU0U7SUFDZCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0osNkRBQU9BO0lBRXpDLHFCQUNFLDhEQUFDSztRQUFPQyxXQUFVOzswQkFDaEIsOERBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0U7b0NBQUtGLFdBQVU7OENBQWlIOzs7Ozs7OENBR2pJLDhEQUFDRTtvQ0FBS0YsV0FBVTs4Q0FBcUM7Ozs7Ozs7Ozs7OztzQ0FLdkQsOERBQUNFOzRCQUFLRixXQUFVO3NDQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBS2xELDhEQUFDQztnQkFBSUQsV0FBVTs7a0NBRWIsOERBQUNQLGlEQUFJQTt3QkFDSFUsTUFBSzt3QkFDTEgsV0FBVTtrQ0FDWDs7Ozs7O2tDQUtELDhEQUFDQzt3QkFBSUQsV0FBVTs7MENBRWIsOERBQUNJO2dDQUNDQyxNQUFLO2dDQUNMTCxXQUFVO2dDQUNWTSxjQUFXOzBDQUVYLDRFQUFDQztvQ0FDQ0MsT0FBTTtvQ0FDTkMsU0FBUTtvQ0FDUkMsTUFBSztvQ0FDTEMsUUFBTztvQ0FDUEMsYUFBYTtvQ0FDYkMsZUFBYztvQ0FDZEMsZ0JBQWU7b0NBQ2ZkLFdBQVU7O3NEQUVWLDhEQUFDZTs0Q0FBT0MsSUFBRzs0Q0FBS0MsSUFBRzs0Q0FBS0MsR0FBRTs7Ozs7O3NEQUMxQiw4REFBQ0M7NENBQUtDLElBQUc7NENBQU9DLElBQUc7NENBQU9DLElBQUc7NENBQUtDLElBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQUl4Q3pCLHdCQUNDLDhEQUFDSTtnQ0FBS0YsV0FBVTswQ0FBd0I7Ozs7O3VDQUN0Q0oscUJBQ0Y7O2tEQUNFLDhEQUFDTTt3Q0FBS0YsV0FBVTtrREFDYkosS0FBSzRCLFdBQVcsSUFBSTVCLEtBQUs2QixLQUFLOzs7Ozs7a0RBRWpDLDhEQUFDckI7d0NBQ0NDLE1BQUs7d0NBQ0xxQixTQUFTN0I7d0NBQ1RHLFdBQVU7a0RBQ1g7Ozs7Ozs7NkRBS0g7O2tEQUNFLDhEQUFDUCxpREFBSUE7d0NBQ0hVLE1BQUs7d0NBQ0xILFdBQVU7a0RBQ1g7Ozs7OztrREFHRCw4REFBQ1AsaURBQUlBO3dDQUNIVSxNQUFLO3dDQUNMSCxXQUFVO2tEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9jb21wb25lbnRzL1RvcE5hdi50c3g/ZGY1NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjb21wb25lbnRzL1RvcE5hdi50c3hcblwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcIkAvY29udGV4dC9BdXRoQ29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gVG9wTmF2KCkge1xuICBjb25zdCB7IHVzZXIsIGxvZ291dCwgbG9hZGluZyB9ID0gdXNlQXV0aCgpO1xuXG4gIHJldHVybiAoXG4gICAgPGhlYWRlciBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItemluYy04MDAgYmctYmxhY2svOTUgYmFja2Ryb3AtYmx1clwiPlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItYW1iZXItNTAwLzIwIGJnLWFtYmVyLTUwMC81XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBmbGV4IG1heC13LTZ4bCBmbGV4LWNvbCBnYXAtMSBweC00IHB5LTIgdGV4dC1bMC43NXJlbV0gdGV4dC1hbWJlci0xMDAgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJvdW5kZWQtc20gYmctYW1iZXItNTAwLzIwIHB4LTIgcHktMC41IHRleHQtWzAuNjVyZW1dIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLVswLjE4ZW1dIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgIEVhcmx5IEFjY2VzcyBCZXRhXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdGV4dC1hbWJlci0xMDAvOTAgbWQ6aW5saW5lXCI+XG4gICAgICAgICAgICAgIFlvdSZhcG9zO3JlIHVzaW5nIGFuIGVhcmx5LWFjY2VzcyBwcm90b3R5cGUgb2YgVGhlIEFybW9yeS4gRGF0YSxcbiAgICAgICAgICAgICAgcHJpY2luZywgYW5kIGF2YWlsYWJsZSBwYXJ0cyBhcmUgc3RpbGwgZXZvbHZpbmcuXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0xMDAvOTAgbWQ6aGlkZGVuXCI+XG4gICAgICAgICAgICBFYXJseS1hY2Nlc3MgcHJvdG90eXBlLiBEYXRhIGFuZCBwcmljaW5nIG1heSBjaGFuZ2UuXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctNnhsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0yXCI+XG4gICAgICAgIHsvKiBCcmFuZCAvIEhvbWUgbGluayAqL31cbiAgICAgICAgPExpbmtcbiAgICAgICAgICBocmVmPVwiL1wiXG4gICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LXNlbWlib2xkIHRyYWNraW5nLVswLjJlbV0gdXBwZXJjYXNlIHRleHQtemluYy00MDBcIlxuICAgICAgICA+XG4gICAgICAgICAgVGhlIEJ1aWxkIEJlbmNoXG4gICAgICAgIDwvTGluaz5cblxuICAgICAgICB7LyogUmlnaHQgc2lkZSBhY3Rpb25zICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgey8qIFNlYXJjaCBwbGFjZWhvbGRlciAqL31cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzYwIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTIwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaCAoY29taW5nIHNvb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjZcIiAvPlxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjE2LjVcIiB5MT1cIjE2LjVcIiB4Mj1cIjIxXCIgeTI9XCIyMVwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+Q2hlY2tpbmcgc2Vzc2lvbuKApjwvc3Bhbj5cbiAgICAgICAgICApIDogdXNlciA/IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTMwMFwiPlxuICAgICAgICAgICAgICAgIHt1c2VyLmRpc3BsYXlOYW1lIHx8IHVzZXIuZW1haWx9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2xvZ291dH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTEwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBMb2cgT3V0XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9sb2dpblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0xMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9nIEluXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL3JlZ2lzdGVyXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzcwIGJnLWFtYmVyLTQwMC8xMCBweC0zIHB5LTEuNSB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzIwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEpvaW4gQmV0YVxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICApO1xufSJdLCJuYW1lcyI6WyJMaW5rIiwidXNlQXV0aCIsIlRvcE5hdiIsInVzZXIiLCJsb2dvdXQiLCJsb2FkaW5nIiwiaGVhZGVyIiwiY2xhc3NOYW1lIiwiZGl2Iiwic3BhbiIsImhyZWYiLCJidXR0b24iLCJ0eXBlIiwiYXJpYS1sYWJlbCIsInN2ZyIsInhtbG5zIiwidmlld0JveCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImNpcmNsZSIsImN4IiwiY3kiLCJyIiwibGluZSIsIngxIiwieTEiLCJ4MiIsInkyIiwiZGlzcGxheU5hbWUiLCJlbWFpbCIsIm9uQ2xpY2siXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./components/TopNav.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TopNav: () => (/* binding */ TopNav)\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 next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(ssr)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(ssr)/./context/AuthContext.tsx\");\n// components/TopNav.tsx\n/* __next_internal_client_entry_do_not_use__ TopNav auto */ \n\n\nfunction TopNav() {\n const { user, logout, loading } = (0,_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.useAuth)();\n const isAuthenticated = !!user;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"border-b border-zinc-800 bg-black/95 backdrop-blur\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-amber-500/20 bg-amber-500/5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl flex-col gap-1 px-4 py-2 text-[0.75rem] text-amber-100 md:flex-row md:items-center md:justify-between\",\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: \"rounded-sm bg-amber-500/20 px-2 py-0.5 text-[0.65rem] font-semibold uppercase tracking-[0.18em] text-amber-300\",\n children: \"Early Access Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 18,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-amber-100/90 md:inline\",\n children: \"You're using an early-access prototype of The Armory. Data, pricing, and available parts are still evolving.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 21,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 17,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-100/90 md:hidden\",\n children: \"Early-access prototype. Data and pricing may change.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 26,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 16,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl items-center justify-between px-4 py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/\",\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-400\",\n children: \"The Build Bench\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 35,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"hidden items-center gap-4 md:flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs font-medium text-zinc-300 hover:text-zinc-50 transition-colors\",\n children: \"Builder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 44,\n columnNumber: 11\n }, this),\n isAuthenticated && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/admin\",\n className: \"text-xs font-medium text-emerald-400 hover:text-emerald-300 transition-colors\",\n children: \"Admin\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 43,\n columnNumber: 9\n }, this),\n /*#__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)(\"button\", {\n type: \"button\",\n className: \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-zinc-700 bg-zinc-900/60 text-zinc-400 hover:text-zinc-200 hover:bg-zinc-800 hover:border-zinc-500 transition-colors\",\n \"aria-label\": \"Search (coming soon)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"h-4 w-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"11\",\n cy: \"11\",\n r: \"6\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 79,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"16.5\",\n y1: \"16.5\",\n x2: \"21\",\n y2: \"21\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 80,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 69,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 64,\n columnNumber: 11\n }, this),\n loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500\",\n children: \"Checking session…\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this) : isAuthenticated ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-xs text-zinc-300 sm:inline\",\n children: user.displayName || user.email\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 88,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: logout,\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log Out\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 91,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/login\",\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log In\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 101,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/register\",\n className: \"rounded-md border border-amber-400/70 bg-amber-400/10 px-3 py-1.5 text-xs font-semibold text-amber-200 hover:bg-amber-400/20 transition-colors\",\n children: \"Join Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 107,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 62,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 33,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 13,\n columnNumber: 5\n }, this);\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb21wb25lbnRzL1RvcE5hdi50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7QUFBQSx3QkFBd0I7O0FBR0s7QUFDbUI7QUFFekMsU0FBU0U7SUFDZCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0osNkRBQU9BO0lBRXpDLE1BQU1LLGtCQUFrQixDQUFDLENBQUNIO0lBRTFCLHFCQUNFLDhEQUFDSTtRQUFPQyxXQUFVOzswQkFFaEIsOERBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0U7b0NBQUtGLFdBQVU7OENBQWlIOzs7Ozs7OENBR2pJLDhEQUFDRTtvQ0FBS0YsV0FBVTs4Q0FBcUM7Ozs7Ozs7Ozs7OztzQ0FLdkQsOERBQUNFOzRCQUFLRixXQUFVO3NDQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBT2xELDhEQUFDQztnQkFBSUQsV0FBVTs7a0NBRWIsOERBQUNSLGlEQUFJQTt3QkFDSFcsTUFBSzt3QkFDTEgsV0FBVTtrQ0FDWDs7Ozs7O2tDQUtELDhEQUFDSTt3QkFBSUosV0FBVTs7MENBQ2IsOERBQUNSLGlEQUFJQTtnQ0FDSFcsTUFBSztnQ0FDTEgsV0FBVTswQ0FDWDs7Ozs7OzRCQUlBRixpQ0FDQyw4REFBQ04saURBQUlBO2dDQUNIVyxNQUFLO2dDQUNMSCxXQUFVOzBDQUNYOzs7Ozs7Ozs7Ozs7a0NBT0wsOERBQUNDO3dCQUFJRCxXQUFVOzswQ0FFYiw4REFBQ0s7Z0NBQ0NDLE1BQUs7Z0NBQ0xOLFdBQVU7Z0NBQ1ZPLGNBQVc7MENBRVgsNEVBQUNDO29DQUNDQyxPQUFNO29DQUNOQyxTQUFRO29DQUNSQyxNQUFLO29DQUNMQyxRQUFPO29DQUNQQyxhQUFhO29DQUNiQyxlQUFjO29DQUNkQyxnQkFBZTtvQ0FDZmYsV0FBVTs7c0RBRVYsOERBQUNnQjs0Q0FBT0MsSUFBRzs0Q0FBS0MsSUFBRzs0Q0FBS0MsR0FBRTs7Ozs7O3NEQUMxQiw4REFBQ0M7NENBQUtDLElBQUc7NENBQU9DLElBQUc7NENBQU9DLElBQUc7NENBQUtDLElBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQUl4QzNCLHdCQUNDLDhEQUFDSztnQ0FBS0YsV0FBVTswQ0FBd0I7Ozs7O3VDQUN0Q0YsZ0NBQ0Y7O2tEQUNFLDhEQUFDSTt3Q0FBS0YsV0FBVTtrREFDYkwsS0FBSzhCLFdBQVcsSUFBSTlCLEtBQUsrQixLQUFLOzs7Ozs7a0RBRWpDLDhEQUFDckI7d0NBQ0NDLE1BQUs7d0NBQ0xxQixTQUFTL0I7d0NBQ1RJLFdBQVU7a0RBQ1g7Ozs7Ozs7NkRBS0g7O2tEQUNFLDhEQUFDUixpREFBSUE7d0NBQ0hXLE1BQUs7d0NBQ0xILFdBQVU7a0RBQ1g7Ozs7OztrREFHRCw4REFBQ1IsaURBQUlBO3dDQUNIVyxNQUFLO3dDQUNMSCxXQUFVO2tEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9jb21wb25lbnRzL1RvcE5hdi50c3g/ZGY1NiJdLCJzb3VyY2VzQ29udGVudCI6WyIvLyBjb21wb25lbnRzL1RvcE5hdi50c3hcblwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgeyB1c2VBdXRoIH0gZnJvbSBcIkAvY29udGV4dC9BdXRoQ29udGV4dFwiO1xuXG5leHBvcnQgZnVuY3Rpb24gVG9wTmF2KCkge1xuICBjb25zdCB7IHVzZXIsIGxvZ291dCwgbG9hZGluZyB9ID0gdXNlQXV0aCgpO1xuXG4gIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9ICEhdXNlcjtcblxuICByZXR1cm4gKFxuICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLXppbmMtODAwIGJnLWJsYWNrLzk1IGJhY2tkcm9wLWJsdXJcIj5cbiAgICAgIHsvKiBFYXJseSBhY2Nlc3MgYmFyICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJib3JkZXItYiBib3JkZXItYW1iZXItNTAwLzIwIGJnLWFtYmVyLTUwMC81XCI+XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBmbGV4IG1heC13LTZ4bCBmbGV4LWNvbCBnYXAtMSBweC00IHB5LTIgdGV4dC1bMC43NXJlbV0gdGV4dC1hbWJlci0xMDAgbWQ6ZmxleC1yb3cgbWQ6aXRlbXMtY2VudGVyIG1kOmp1c3RpZnktYmV0d2VlblwiPlxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTJcIj5cbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInJvdW5kZWQtc20gYmctYW1iZXItNTAwLzIwIHB4LTIgcHktMC41IHRleHQtWzAuNjVyZW1dIGZvbnQtc2VtaWJvbGQgdXBwZXJjYXNlIHRyYWNraW5nLVswLjE4ZW1dIHRleHQtYW1iZXItMzAwXCI+XG4gICAgICAgICAgICAgIEVhcmx5IEFjY2VzcyBCZXRhXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdGV4dC1hbWJlci0xMDAvOTAgbWQ6aW5saW5lXCI+XG4gICAgICAgICAgICAgIFlvdSZhcG9zO3JlIHVzaW5nIGFuIGVhcmx5LWFjY2VzcyBwcm90b3R5cGUgb2YgVGhlIEFybW9yeS4gRGF0YSxcbiAgICAgICAgICAgICAgcHJpY2luZywgYW5kIGF2YWlsYWJsZSBwYXJ0cyBhcmUgc3RpbGwgZXZvbHZpbmcuXG4gICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci0xMDAvOTAgbWQ6aGlkZGVuXCI+XG4gICAgICAgICAgICBFYXJseS1hY2Nlc3MgcHJvdG90eXBlLiBEYXRhIGFuZCBwcmljaW5nIG1heSBjaGFuZ2UuXG4gICAgICAgICAgPC9zcGFuPlxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuXG4gICAgICB7LyogTWFpbiBuYXYgcm93ICovfVxuICAgICAgPGRpdiBjbGFzc05hbWU9XCJteC1hdXRvIGZsZXggbWF4LXctNnhsIGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gcHgtNCBweS0yXCI+XG4gICAgICAgIHsvKiBMZWZ0OiBCcmFuZCAvIEhvbWUgKi99XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIFRoZSBCdWlsZCBCZW5jaFxuICAgICAgICA8L0xpbms+XG5cbiAgICAgICAgey8qIENlbnRlcjogbWFpbiBuYXYgKEJ1aWxkZXIgLyBBZG1pbikgKi99XG4gICAgICAgIDxuYXYgY2xhc3NOYW1lPVwiaGlkZGVuIGl0ZW1zLWNlbnRlciBnYXAtNCBtZDpmbGV4XCI+XG4gICAgICAgICAgPExpbmtcbiAgICAgICAgICAgIGhyZWY9XCIvZ3VuYnVpbGRlclwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy0zMDAgaG92ZXI6dGV4dC16aW5jLTUwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICBCdWlsZGVyXG4gICAgICAgICAgPC9MaW5rPlxuXG4gICAgICAgICAge2lzQXV0aGVudGljYXRlZCAmJiAoXG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPVwiL2FkbWluXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LWVtZXJhbGQtNDAwIGhvdmVyOnRleHQtZW1lcmFsZC0zMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICBBZG1pblxuICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICl9XG4gICAgICAgIDwvbmF2PlxuXG4gICAgICAgIHsvKiBSaWdodCBzaWRlIGFjdGlvbnMgKi99XG4gICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICB7LyogU2VhcmNoIHBsYWNlaG9sZGVyICovfVxuICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwiaW5saW5lLWZsZXggaC04IHctOCBpdGVtcy1jZW50ZXIganVzdGlmeS1jZW50ZXIgcm91bmRlZC1mdWxsIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNjAgdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMjAwIGhvdmVyOmJnLXppbmMtODAwIGhvdmVyOmJvcmRlci16aW5jLTUwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICBhcmlhLWxhYmVsPVwiU2VhcmNoIChjb21pbmcgc29vbilcIlxuICAgICAgICAgID5cbiAgICAgICAgICAgIDxzdmdcbiAgICAgICAgICAgICAgeG1sbnM9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAwL3N2Z1wiXG4gICAgICAgICAgICAgIHZpZXdCb3g9XCIwIDAgMjQgMjRcIlxuICAgICAgICAgICAgICBmaWxsPVwibm9uZVwiXG4gICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgIHN0cm9rZVdpZHRoPXsyfVxuICAgICAgICAgICAgICBzdHJva2VMaW5lY2FwPVwicm91bmRcIlxuICAgICAgICAgICAgICBzdHJva2VMaW5lam9pbj1cInJvdW5kXCJcbiAgICAgICAgICAgICAgY2xhc3NOYW1lPVwiaC00IHctNFwiXG4gICAgICAgICAgICA+XG4gICAgICAgICAgICAgIDxjaXJjbGUgY3g9XCIxMVwiIGN5PVwiMTFcIiByPVwiNlwiIC8+XG4gICAgICAgICAgICAgIDxsaW5lIHgxPVwiMTYuNVwiIHkxPVwiMTYuNVwiIHgyPVwiMjFcIiB5Mj1cIjIxXCIgLz5cbiAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgIDwvYnV0dG9uPlxuXG4gICAgICAgICAge2xvYWRpbmcgPyAoXG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDBcIj5DaGVja2luZyBzZXNzaW9u4oCmPC9zcGFuPlxuICAgICAgICAgICkgOiBpc0F1dGhlbnRpY2F0ZWQgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJoaWRkZW4gdGV4dC14cyB0ZXh0LXppbmMtMzAwIHNtOmlubGluZVwiPlxuICAgICAgICAgICAgICAgIHt1c2VyLmRpc3BsYXlOYW1lIHx8IHVzZXIuZW1haWx9XG4gICAgICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgICAgIHR5cGU9XCJidXR0b25cIlxuICAgICAgICAgICAgICAgIG9uQ2xpY2s9e2xvZ291dH1cbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtbWVkaXVtIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTEwMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBMb2cgT3V0XG4gICAgICAgICAgICAgIDwvYnV0dG9uPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKSA6IChcbiAgICAgICAgICAgIDw+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9sb2dpblwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0xMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9nIEluXG4gICAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgICBocmVmPVwiL3JlZ2lzdGVyXCJcbiAgICAgICAgICAgICAgICBjbGFzc05hbWU9XCJyb3VuZGVkLW1kIGJvcmRlciBib3JkZXItYW1iZXItNDAwLzcwIGJnLWFtYmVyLTQwMC8xMCBweC0zIHB5LTEuNSB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdGV4dC1hbWJlci0yMDAgaG92ZXI6YmctYW1iZXItNDAwLzIwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIEpvaW4gQmV0YVxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICA8Lz5cbiAgICAgICAgICApfVxuICAgICAgICA8L2Rpdj5cbiAgICAgIDwvZGl2PlxuICAgIDwvaGVhZGVyPlxuICApO1xufSJdLCJuYW1lcyI6WyJMaW5rIiwidXNlQXV0aCIsIlRvcE5hdiIsInVzZXIiLCJsb2dvdXQiLCJsb2FkaW5nIiwiaXNBdXRoZW50aWNhdGVkIiwiaGVhZGVyIiwiY2xhc3NOYW1lIiwiZGl2Iiwic3BhbiIsImhyZWYiLCJuYXYiLCJidXR0b24iLCJ0eXBlIiwiYXJpYS1sYWJlbCIsInN2ZyIsInhtbG5zIiwidmlld0JveCIsImZpbGwiLCJzdHJva2UiLCJzdHJva2VXaWR0aCIsInN0cm9rZUxpbmVjYXAiLCJzdHJva2VMaW5lam9pbiIsImNpcmNsZSIsImN4IiwiY3kiLCJyIiwibGluZSIsIngxIiwieTEiLCJ4MiIsInkyIiwiZGlzcGxheU5hbWUiLCJlbWFpbCIsIm9uQ2xpY2siXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./components/TopNav.tsx\n"); /***/ }), @@ -181,7 +181,7 @@ eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpac /***/ ((__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 */ AuthProvider: () => (/* binding */ AuthProvider),\n/* harmony export */ useAuth: () => (/* binding */ useAuth)\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/* __next_internal_client_entry_do_not_use__ AuthProvider,useAuth auto */ \n\nconst API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ?? \"http://localhost:8080\";\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);\nconst TOKEN_KEY = \"ballistic_auth_token\";\nconst USER_KEY = \"ballistic_auth_user\";\nfunction AuthProvider({ children }) {\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [token, setToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true); // start true while we hydrate + reuse for calls\n // hydrate from localStorage\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n try {\n if (true) return;\n const storedToken = window.localStorage.getItem(TOKEN_KEY);\n const storedUser = window.localStorage.getItem(USER_KEY);\n if (storedToken && storedUser) {\n setToken(storedToken);\n setUser(JSON.parse(storedUser));\n }\n } catch {\n // ignore\n } finally{\n setLoading(false);\n }\n }, []);\n const setSession = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((newToken, newUser)=>{\n setToken(newToken);\n setUser(newUser);\n if (false) {}\n }, []);\n const clearSession = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n setToken(null);\n setUser(null);\n if (false) {}\n }, []);\n const register = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async (params)=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/api/auth/register`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email: params.email,\n password: params.password,\n displayName: params.displayName\n })\n });\n if (!res.ok) {\n const text = await res.text();\n throw new Error(text || \"Failed to create account\");\n }\n const data = await res.json();\n setSession(data.token, {\n email: data.email,\n displayName: data.displayName ?? null,\n role: data.role\n });\n } finally{\n setLoading(false);\n }\n }, [\n setSession\n ]);\n const login = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async (params)=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/api/auth/login`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email: params.email,\n password: params.password\n })\n });\n if (!res.ok) {\n const text = await res.text();\n throw new Error(text || \"Failed to log in\");\n }\n const data = await res.json();\n setSession(data.token, {\n email: data.email,\n displayName: data.displayName ?? null,\n role: data.role\n });\n } finally{\n setLoading(false);\n }\n }, [\n setSession\n ]);\n const logout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n clearSession();\n }, [\n clearSession\n ]);\n const getAuthHeaders = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n if (!token) return {};\n return {\n Authorization: `Bearer ${token}`\n };\n }, [\n token\n ]);\n const value = {\n user,\n token,\n loading,\n login,\n register,\n logout,\n getAuthHeaders\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AuthContext.Provider, {\n value: value,\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx\",\n lineNumber: 183,\n columnNumber: 10\n }, this);\n}\nfunction useAuth() {\n const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AuthContext);\n if (!ctx) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return ctx;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb250ZXh0L0F1dGhDb250ZXh0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBU2U7QUFFZixNQUFNSyxlQUNKQyxRQUFRQyxHQUFHLENBQUNDLHdCQUF3QixJQUFJO0FBc0IxQyxNQUFNQyw0QkFBY1Qsb0RBQWFBLENBQStCVTtBQUVoRSxNQUFNQyxZQUFZO0FBQ2xCLE1BQU1DLFdBQVc7QUFFVixTQUFTQyxhQUFhLEVBQUVDLFFBQVEsRUFBMkI7SUFDaEUsTUFBTSxDQUFDQyxNQUFNQyxRQUFRLEdBQUdaLCtDQUFRQSxDQUFXO0lBQzNDLE1BQU0sQ0FBQ2EsT0FBT0MsU0FBUyxHQUFHZCwrQ0FBUUEsQ0FBZ0I7SUFDbEQsTUFBTSxDQUFDZSxTQUFTQyxXQUFXLEdBQUdoQiwrQ0FBUUEsQ0FBQyxPQUFPLGdEQUFnRDtJQUU5Riw0QkFBNEI7SUFDNUJELGdEQUFTQSxDQUFDO1FBQ1IsSUFBSTtZQUNGLElBQUksSUFBNkIsRUFBRTtZQUVuQyxNQUFNa0IsY0FBY0MsT0FBT0MsWUFBWSxDQUFDQyxPQUFPLENBQUNiO1lBQ2hELE1BQU1jLGFBQWFILE9BQU9DLFlBQVksQ0FBQ0MsT0FBTyxDQUFDWjtZQUUvQyxJQUFJUyxlQUFlSSxZQUFZO2dCQUM3QlAsU0FBU0c7Z0JBQ1RMLFFBQVFVLEtBQUtDLEtBQUssQ0FBQ0Y7WUFDckI7UUFDRixFQUFFLE9BQU07UUFDTixTQUFTO1FBQ1gsU0FBVTtZQUNSTCxXQUFXO1FBQ2I7SUFDRixHQUFHLEVBQUU7SUFFTCxNQUFNUSxhQUFhM0Isa0RBQVdBLENBQUMsQ0FBQzRCLFVBQWtCQztRQUNoRFosU0FBU1c7UUFDVGIsUUFBUWM7UUFFUixJQUFJLEtBQTZCLEVBQUUsRUFHbEM7SUFDSCxHQUFHLEVBQUU7SUFFTCxNQUFNRyxlQUFlaEMsa0RBQVdBLENBQUM7UUFDL0JpQixTQUFTO1FBQ1RGLFFBQVE7UUFDUixJQUFJLEtBQTZCLEVBQUUsRUFHbEM7SUFDSCxHQUFHLEVBQUU7SUFFTCxNQUFNbUIsV0FBV2xDLGtEQUFXQSxDQUMxQixPQUFPbUM7UUFDTGhCLFdBQVc7UUFDWCxJQUFJO1lBQ0YsTUFBTWlCLE1BQU0sTUFBTUMsTUFBTSxDQUFDLEVBQUVqQyxhQUFhLGtCQUFrQixDQUFDLEVBQUU7Z0JBQzNEa0MsUUFBUTtnQkFDUkMsU0FBUztvQkFDUCxnQkFBZ0I7Z0JBQ2xCO2dCQUNBQyxNQUFNZixLQUFLTSxTQUFTLENBQUM7b0JBQ25CVSxPQUFPTixPQUFPTSxLQUFLO29CQUNuQkMsVUFBVVAsT0FBT08sUUFBUTtvQkFDekJDLGFBQWFSLE9BQU9RLFdBQVc7Z0JBQ2pDO1lBQ0Y7WUFFQSxJQUFJLENBQUNQLElBQUlRLEVBQUUsRUFBRTtnQkFDWCxNQUFNQyxPQUFPLE1BQU1ULElBQUlTLElBQUk7Z0JBQzNCLE1BQU0sSUFBSUMsTUFBTUQsUUFBUTtZQUMxQjtZQUVBLE1BQU1FLE9BS0YsTUFBTVgsSUFBSVksSUFBSTtZQUVsQnJCLFdBQVdvQixLQUFLL0IsS0FBSyxFQUFFO2dCQUNyQnlCLE9BQU9NLEtBQUtOLEtBQUs7Z0JBQ2pCRSxhQUFhSSxLQUFLSixXQUFXLElBQUk7Z0JBQ2pDTSxNQUFNRixLQUFLRSxJQUFJO1lBQ2pCO1FBQ0YsU0FBVTtZQUNSOUIsV0FBVztRQUNiO0lBQ0YsR0FDQTtRQUFDUTtLQUFXO0lBR2QsTUFBTXVCLFFBQVFsRCxrREFBV0EsQ0FDdkIsT0FBT21DO1FBQ0xoQixXQUFXO1FBQ1gsSUFBSTtZQUNGLE1BQU1pQixNQUFNLE1BQU1DLE1BQU0sQ0FBQyxFQUFFakMsYUFBYSxlQUFlLENBQUMsRUFBRTtnQkFDeERrQyxRQUFRO2dCQUNSQyxTQUFTO29CQUNQLGdCQUFnQjtnQkFDbEI7Z0JBQ0FDLE1BQU1mLEtBQUtNLFNBQVMsQ0FBQztvQkFDbkJVLE9BQU9OLE9BQU9NLEtBQUs7b0JBQ25CQyxVQUFVUCxPQUFPTyxRQUFRO2dCQUMzQjtZQUNGO1lBRUEsSUFBSSxDQUFDTixJQUFJUSxFQUFFLEVBQUU7Z0JBQ1gsTUFBTUMsT0FBTyxNQUFNVCxJQUFJUyxJQUFJO2dCQUMzQixNQUFNLElBQUlDLE1BQU1ELFFBQVE7WUFDMUI7WUFFQSxNQUFNRSxPQUtGLE1BQU1YLElBQUlZLElBQUk7WUFFbEJyQixXQUFXb0IsS0FBSy9CLEtBQUssRUFBRTtnQkFDckJ5QixPQUFPTSxLQUFLTixLQUFLO2dCQUNqQkUsYUFBYUksS0FBS0osV0FBVyxJQUFJO2dCQUNqQ00sTUFBTUYsS0FBS0UsSUFBSTtZQUNqQjtRQUNGLFNBQVU7WUFDUjlCLFdBQVc7UUFDYjtJQUNGLEdBQ0E7UUFBQ1E7S0FBVztJQUdkLE1BQU13QixTQUFTbkQsa0RBQVdBLENBQUM7UUFDekJnQztJQUNGLEdBQUc7UUFBQ0E7S0FBYTtJQUVqQixNQUFNb0IsaUJBQWlCcEQsa0RBQVdBLENBQUM7UUFDakMsSUFBSSxDQUFDZ0IsT0FBTyxPQUFPLENBQUM7UUFDcEIsT0FBTztZQUNMcUMsZUFBZSxDQUFDLE9BQU8sRUFBRXJDLE1BQU0sQ0FBQztRQUNsQztJQUNGLEdBQUc7UUFBQ0E7S0FBTTtJQUVWLE1BQU1zQyxRQUEwQjtRQUM5QnhDO1FBQ0FFO1FBQ0FFO1FBQ0FnQztRQUNBaEI7UUFDQWlCO1FBQ0FDO0lBQ0Y7SUFFQSxxQkFBTyw4REFBQzVDLFlBQVkrQyxRQUFRO1FBQUNELE9BQU9BO2tCQUFRekM7Ozs7OztBQUM5QztBQUVPLFNBQVMyQztJQUNkLE1BQU1DLE1BQU14RCxpREFBVUEsQ0FBQ087SUFDdkIsSUFBSSxDQUFDaUQsS0FBSztRQUNSLE1BQU0sSUFBSVgsTUFBTTtJQUNsQjtJQUNBLE9BQU9XO0FBQ1QiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9ndW5idWlsZGVyLXByb3RvdHlwZS8uL2NvbnRleHQvQXV0aENvbnRleHQudHN4P2ZkZmYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxuICBSZWFjdE5vZGUsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBBUElfQkFTRV9VUkwgPVxuICBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19BUElfQkFTRV9VUkwgPz8gXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIjtcblxudHlwZSBBdXRoVXNlciA9IHtcbiAgZW1haWw6IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICByb2xlOiBzdHJpbmc7XG59IHwgbnVsbDtcblxudHlwZSBBdXRoQ29udGV4dFZhbHVlID0ge1xuICB1c2VyOiBBdXRoVXNlcjtcbiAgdG9rZW46IHN0cmluZyB8IG51bGw7IFxuICBsb2FkaW5nOiBib29sZWFuOyAvLyBjb3ZlcnMgaW5pdGlhbCBoeWRyYXRlICsgYWN0aXZlIGF1dGggcmVxdWVzdHNcbiAgbG9naW46IChwYXJhbXM6IHsgZW1haWw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9KSA9PiBQcm9taXNlPHZvaWQ+O1xuICByZWdpc3RlcjogKHBhcmFtczoge1xuICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgcGFzc3dvcmQ6IHN0cmluZztcbiAgICBkaXNwbGF5TmFtZT86IHN0cmluZztcbiAgfSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgbG9nb3V0OiAoKSA9PiB2b2lkO1xuICBnZXRBdXRoSGVhZGVyczogKCkgPT4gSGVhZGVyc0luaXQ7XG59O1xuXG5jb25zdCBBdXRoQ29udGV4dCA9IGNyZWF0ZUNvbnRleHQ8QXV0aENvbnRleHRWYWx1ZSB8IHVuZGVmaW5lZD4odW5kZWZpbmVkKTtcblxuY29uc3QgVE9LRU5fS0VZID0gXCJiYWxsaXN0aWNfYXV0aF90b2tlblwiO1xuY29uc3QgVVNFUl9LRVkgPSBcImJhbGxpc3RpY19hdXRoX3VzZXJcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIEF1dGhQcm92aWRlcih7IGNoaWxkcmVuIH06IHsgY2hpbGRyZW46IFJlYWN0Tm9kZSB9KSB7XG4gIGNvbnN0IFt1c2VyLCBzZXRVc2VyXSA9IHVzZVN0YXRlPEF1dGhVc2VyPihudWxsKTtcbiAgY29uc3QgW3Rva2VuLCBzZXRUb2tlbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW2xvYWRpbmcsIHNldExvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7IC8vIHN0YXJ0IHRydWUgd2hpbGUgd2UgaHlkcmF0ZSArIHJldXNlIGZvciBjYWxsc1xuXG4gIC8vIGh5ZHJhdGUgZnJvbSBsb2NhbFN0b3JhZ2VcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICB0cnkge1xuICAgICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcblxuICAgICAgY29uc3Qgc3RvcmVkVG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVE9LRU5fS0VZKTtcbiAgICAgIGNvbnN0IHN0b3JlZFVzZXIgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVVNFUl9LRVkpO1xuXG4gICAgICBpZiAoc3RvcmVkVG9rZW4gJiYgc3RvcmVkVXNlcikge1xuICAgICAgICBzZXRUb2tlbihzdG9yZWRUb2tlbik7XG4gICAgICAgIHNldFVzZXIoSlNPTi5wYXJzZShzdG9yZWRVc2VyKSk7XG4gICAgICB9XG4gICAgfSBjYXRjaCB7XG4gICAgICAvLyBpZ25vcmVcbiAgICB9IGZpbmFsbHkge1xuICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgY29uc3Qgc2V0U2Vzc2lvbiA9IHVzZUNhbGxiYWNrKChuZXdUb2tlbjogc3RyaW5nLCBuZXdVc2VyOiBBdXRoVXNlcikgPT4ge1xuICAgIHNldFRva2VuKG5ld1Rva2VuKTtcbiAgICBzZXRVc2VyKG5ld1VzZXIpO1xuXG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgIT09IFwidW5kZWZpbmVkXCIpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShUT0tFTl9LRVksIG5ld1Rva2VuKTtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShVU0VSX0tFWSwgSlNPTi5zdHJpbmdpZnkobmV3VXNlcikpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IGNsZWFyU2Vzc2lvbiA9IHVzZUNhbGxiYWNrKCgpID0+IHtcbiAgICBzZXRUb2tlbihudWxsKTtcbiAgICBzZXRVc2VyKG51bGwpO1xuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVE9LRU5fS0VZKTtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShVU0VSX0tFWSk7XG4gICAgfVxuICB9LCBbXSk7XG5cbiAgY29uc3QgcmVnaXN0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocGFyYW1zOiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmc7IGRpc3BsYXlOYW1lPzogc3RyaW5nIH0pID0+IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHtBUElfQkFTRV9VUkx9L2FwaS9hdXRoL3JlZ2lzdGVyYCwge1xuICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBlbWFpbDogcGFyYW1zLmVtYWlsLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHBhcmFtcy5wYXNzd29yZCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBwYXJhbXMuZGlzcGxheU5hbWUsXG4gICAgICAgICAgfSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KCk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRleHQgfHwgXCJGYWlsZWQgdG8gY3JlYXRlIGFjY291bnRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhOiB7XG4gICAgICAgICAgdG9rZW46IHN0cmluZztcbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgICAgIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICAgICAgICAgIHJvbGU6IHN0cmluZztcbiAgICAgICAgfSA9IGF3YWl0IHJlcy5qc29uKCk7XG5cbiAgICAgICAgc2V0U2Vzc2lvbihkYXRhLnRva2VuLCB7XG4gICAgICAgICAgZW1haWw6IGRhdGEuZW1haWwsXG4gICAgICAgICAgZGlzcGxheU5hbWU6IGRhdGEuZGlzcGxheU5hbWUgPz8gbnVsbCxcbiAgICAgICAgICByb2xlOiBkYXRhLnJvbGUsXG4gICAgICAgIH0pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2V0U2Vzc2lvbl0sXG4gICk7XG5cbiAgY29uc3QgbG9naW4gPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAocGFyYW1zOiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFX1VSTH0vYXBpL2F1dGgvbG9naW5gLCB7XG4gICAgICAgICAgbWV0aG9kOiBcIlBPU1RcIixcbiAgICAgICAgICBoZWFkZXJzOiB7XG4gICAgICAgICAgICBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIixcbiAgICAgICAgICB9LFxuICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHtcbiAgICAgICAgICAgIGVtYWlsOiBwYXJhbXMuZW1haWwsXG4gICAgICAgICAgICBwYXNzd29yZDogcGFyYW1zLnBhc3N3b3JkLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0IHx8IFwiRmFpbGVkIHRvIGxvZyBpblwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGE6IHtcbiAgICAgICAgICB0b2tlbjogc3RyaW5nO1xuICAgICAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gICAgICAgICAgcm9sZTogc3RyaW5nO1xuICAgICAgICB9ID0gYXdhaXQgcmVzLmpzb24oKTtcblxuICAgICAgICBzZXRTZXNzaW9uKGRhdGEudG9rZW4sIHtcbiAgICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCxcbiAgICAgICAgICBkaXNwbGF5TmFtZTogZGF0YS5kaXNwbGF5TmFtZSA/PyBudWxsLFxuICAgICAgICAgIHJvbGU6IGRhdGEucm9sZSxcbiAgICAgICAgfSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtzZXRTZXNzaW9uXSxcbiAgKTtcblxuICBjb25zdCBsb2dvdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgY2xlYXJTZXNzaW9uKCk7XG4gIH0sIFtjbGVhclNlc3Npb25dKTtcblxuICBjb25zdCBnZXRBdXRoSGVhZGVycyA9IHVzZUNhbGxiYWNrKCgpOiBIZWFkZXJzSW5pdCA9PiB7XG4gICAgaWYgKCF0b2tlbikgcmV0dXJuIHt9O1xuICAgIHJldHVybiB7XG4gICAgICBBdXRob3JpemF0aW9uOiBgQmVhcmVyICR7dG9rZW59YCxcbiAgICB9O1xuICB9LCBbdG9rZW5dKTtcblxuICBjb25zdCB2YWx1ZTogQXV0aENvbnRleHRWYWx1ZSA9IHtcbiAgICB1c2VyLFxuICAgIHRva2VuLFxuICAgIGxvYWRpbmcsXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgbG9nb3V0LFxuICAgIGdldEF1dGhIZWFkZXJzLFxuICB9O1xuXG4gIHJldHVybiA8QXV0aENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9BdXRoQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbmV4cG9ydCBmdW5jdGlvbiB1c2VBdXRoKCk6IEF1dGhDb250ZXh0VmFsdWUge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KEF1dGhDb250ZXh0KTtcbiAgaWYgKCFjdHgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBdXRoIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gQXV0aFByb3ZpZGVyXCIpO1xuICB9XG4gIHJldHVybiBjdHg7XG59Il0sIm5hbWVzIjpbImNyZWF0ZUNvbnRleHQiLCJ1c2VDYWxsYmFjayIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkFQSV9CQVNFX1VSTCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1BVQkxJQ19BUElfQkFTRV9VUkwiLCJBdXRoQ29udGV4dCIsInVuZGVmaW5lZCIsIlRPS0VOX0tFWSIsIlVTRVJfS0VZIiwiQXV0aFByb3ZpZGVyIiwiY2hpbGRyZW4iLCJ1c2VyIiwic2V0VXNlciIsInRva2VuIiwic2V0VG9rZW4iLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsInN0b3JlZFRva2VuIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInN0b3JlZFVzZXIiLCJKU09OIiwicGFyc2UiLCJzZXRTZXNzaW9uIiwibmV3VG9rZW4iLCJuZXdVc2VyIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImNsZWFyU2Vzc2lvbiIsInJlbW92ZUl0ZW0iLCJyZWdpc3RlciIsInBhcmFtcyIsInJlcyIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJlbWFpbCIsInBhc3N3b3JkIiwiZGlzcGxheU5hbWUiLCJvayIsInRleHQiLCJFcnJvciIsImRhdGEiLCJqc29uIiwicm9sZSIsImxvZ2luIiwibG9nb3V0IiwiZ2V0QXV0aEhlYWRlcnMiLCJBdXRob3JpemF0aW9uIiwidmFsdWUiLCJQcm92aWRlciIsInVzZUF1dGgiLCJjdHgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(ssr)/./context/AuthContext.tsx\n"); +eval("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AuthProvider: () => (/* binding */ AuthProvider),\n/* harmony export */ useAuth: () => (/* binding */ useAuth)\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/* __next_internal_client_entry_do_not_use__ AuthProvider,useAuth auto */ \n\nconst API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL ?? \"http://localhost:8080\";\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);\nconst TOKEN_KEY = \"ballistic_auth_token\";\nconst USER_KEY = \"ballistic_auth_user\";\nfunction AuthProvider({ children }) {\n const [token, setToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n // Hydrate from localStorage on first load\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (true) return;\n const storedToken = window.localStorage.getItem(TOKEN_KEY);\n const storedUser = window.localStorage.getItem(USER_KEY);\n if (storedToken) {\n setToken(storedToken);\n }\n if (storedUser) {\n try {\n setUser(JSON.parse(storedUser));\n } catch {\n // bad JSON? wipe it\n window.localStorage.removeItem(USER_KEY);\n }\n }\n setLoading(false);\n }, []);\n const persistAuth = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((nextToken, nextUser)=>{\n if (true) return;\n if (nextToken) {\n window.localStorage.setItem(TOKEN_KEY, nextToken);\n } else {\n window.localStorage.removeItem(TOKEN_KEY);\n }\n if (nextUser) {\n window.localStorage.setItem(USER_KEY, JSON.stringify(nextUser));\n } else {\n window.localStorage.removeItem(USER_KEY);\n }\n }, []);\n const login = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ({ email, password })=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/auth/login`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n password\n })\n });\n if (!res.ok) {\n const text = await res.text().catch(()=>res.statusText);\n throw new Error(text || \"Login failed\");\n }\n const data = await res.json();\n // Adjust these to match your backend response shape\n const nextToken = data.token ?? data.accessToken;\n const nextUser = data.user ?? {\n email: data.email ?? email,\n displayName: data.displayName ?? null,\n role: data.role ?? \"USER\"\n };\n setToken(nextToken);\n setUser(nextUser);\n persistAuth(nextToken, nextUser);\n } finally{\n setLoading(false);\n }\n }, [\n persistAuth\n ]);\n const register = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async ({ email, password, displayName })=>{\n setLoading(true);\n try {\n const res = await fetch(`${API_BASE_URL}/auth/register`, {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n password,\n displayName\n })\n });\n if (!res.ok) {\n const text = await res.text().catch(()=>res.statusText);\n throw new Error(text || \"Registration failed\");\n }\n const data = await res.json();\n const nextToken = data.token ?? data.accessToken;\n const nextUser = data.user ?? {\n email: data.email ?? email,\n displayName: data.displayName ?? displayName ?? null,\n role: data.role ?? \"USER\"\n };\n setToken(nextToken);\n setUser(nextUser);\n persistAuth(nextToken, nextUser);\n } finally{\n setLoading(false);\n }\n }, [\n persistAuth\n ]);\n const logout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n setToken(null);\n setUser(null);\n persistAuth(null, null);\n }, [\n persistAuth\n ]);\n const getAuthHeaders = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n return token ? {\n Authorization: `Bearer ${token}`\n } : {};\n }, [\n token\n ]);\n const value = {\n user,\n token,\n loading,\n login,\n register,\n logout,\n getAuthHeaders\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AuthContext.Provider, {\n value: value,\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx\",\n lineNumber: 185,\n columnNumber: 10\n }, this);\n}\n// 🔑 This is what your useApi hook imports\nfunction useAuth() {\n const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AuthContext);\n if (!ctx) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return ctx;\n}\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKHNzcikvLi9jb250ZXh0L0F1dGhDb250ZXh0LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBU2U7QUFFZixNQUFNSyxlQUNKQyxRQUFRQyxHQUFHLENBQUNDLHdCQUF3QixJQUFJO0FBc0IxQyxNQUFNQyw0QkFBY1Qsb0RBQWFBLENBQStCVTtBQUVoRSxNQUFNQyxZQUFZO0FBQ2xCLE1BQU1DLFdBQVc7QUFFVixTQUFTQyxhQUFhLEVBQUVDLFFBQVEsRUFBMkI7SUFDaEUsTUFBTSxDQUFDQyxPQUFPQyxTQUFTLEdBQUdaLCtDQUFRQSxDQUFnQjtJQUNsRCxNQUFNLENBQUNhLE1BQU1DLFFBQVEsR0FBR2QsK0NBQVFBLENBQVc7SUFDM0MsTUFBTSxDQUFDZSxTQUFTQyxXQUFXLEdBQUdoQiwrQ0FBUUEsQ0FBVTtJQUVoRCwwQ0FBMEM7SUFDMUNELGdEQUFTQSxDQUFDO1FBQ1IsSUFBSSxJQUE2QixFQUFFO1FBRW5DLE1BQU1rQixjQUFjQyxPQUFPQyxZQUFZLENBQUNDLE9BQU8sQ0FBQ2I7UUFDaEQsTUFBTWMsYUFBYUgsT0FBT0MsWUFBWSxDQUFDQyxPQUFPLENBQUNaO1FBRS9DLElBQUlTLGFBQWE7WUFDZkwsU0FBU0s7UUFDWDtRQUVBLElBQUlJLFlBQVk7WUFDZCxJQUFJO2dCQUNGUCxRQUFRUSxLQUFLQyxLQUFLLENBQUNGO1lBQ3JCLEVBQUUsT0FBTTtnQkFDTixvQkFBb0I7Z0JBQ3BCSCxPQUFPQyxZQUFZLENBQUNLLFVBQVUsQ0FBQ2hCO1lBQ2pDO1FBQ0Y7UUFFQVEsV0FBVztJQUNiLEdBQUcsRUFBRTtJQUVMLE1BQU1TLGNBQWM1QixrREFBV0EsQ0FBQyxDQUFDNkIsV0FBMEJDO1FBQ3pELElBQUksSUFBNkIsRUFBRTtRQUVuQyxJQUFJRCxXQUFXO1lBQ2JSLE9BQU9DLFlBQVksQ0FBQ1MsT0FBTyxDQUFDckIsV0FBV21CO1FBQ3pDLE9BQU87WUFDTFIsT0FBT0MsWUFBWSxDQUFDSyxVQUFVLENBQUNqQjtRQUNqQztRQUVBLElBQUlvQixVQUFVO1lBQ1pULE9BQU9DLFlBQVksQ0FBQ1MsT0FBTyxDQUFDcEIsVUFBVWMsS0FBS08sU0FBUyxDQUFDRjtRQUN2RCxPQUFPO1lBQ0xULE9BQU9DLFlBQVksQ0FBQ0ssVUFBVSxDQUFDaEI7UUFDakM7SUFDRixHQUFHLEVBQUU7SUFFTCxNQUFNc0IsUUFBUWpDLGtEQUFXQSxDQUN2QixPQUFPLEVBQUVrQyxLQUFLLEVBQUVDLFFBQVEsRUFBdUM7UUFDN0RoQixXQUFXO1FBQ1gsSUFBSTtZQUNGLE1BQU1pQixNQUFNLE1BQU1DLE1BQU0sQ0FBQyxFQUFFakMsYUFBYSxXQUFXLENBQUMsRUFBRTtnQkFDcERrQyxRQUFRO2dCQUNSQyxTQUFTO29CQUFFLGdCQUFnQjtnQkFBbUI7Z0JBQzlDQyxNQUFNZixLQUFLTyxTQUFTLENBQUM7b0JBQUVFO29CQUFPQztnQkFBUztZQUN6QztZQUVBLElBQUksQ0FBQ0MsSUFBSUssRUFBRSxFQUFFO2dCQUNYLE1BQU1DLE9BQU8sTUFBTU4sSUFBSU0sSUFBSSxHQUFHQyxLQUFLLENBQUMsSUFBTVAsSUFBSVEsVUFBVTtnQkFDeEQsTUFBTSxJQUFJQyxNQUFNSCxRQUFRO1lBQzFCO1lBRUEsTUFBTUksT0FBTyxNQUFNVixJQUFJVyxJQUFJO1lBRTNCLG9EQUFvRDtZQUNwRCxNQUFNbEIsWUFBb0JpQixLQUFLaEMsS0FBSyxJQUFJZ0MsS0FBS0UsV0FBVztZQUN4RCxNQUFNbEIsV0FDSmdCLEtBQUs5QixJQUFJLElBQ1I7Z0JBQ0NrQixPQUFPWSxLQUFLWixLQUFLLElBQUlBO2dCQUNyQmUsYUFBYUgsS0FBS0csV0FBVyxJQUFJO2dCQUNqQ0MsTUFBTUosS0FBS0ksSUFBSSxJQUFJO1lBQ3JCO1lBRUZuQyxTQUFTYztZQUNUWixRQUFRYTtZQUNSRixZQUFZQyxXQUFXQztRQUN6QixTQUFVO1lBQ1JYLFdBQVc7UUFDYjtJQUNGLEdBQ0E7UUFBQ1M7S0FBWTtJQUdmLE1BQU11QixXQUFXbkQsa0RBQVdBLENBQzFCLE9BQU8sRUFDTGtDLEtBQUssRUFDTEMsUUFBUSxFQUNSYyxXQUFXLEVBS1o7UUFDQzlCLFdBQVc7UUFDWCxJQUFJO1lBQ0YsTUFBTWlCLE1BQU0sTUFBTUMsTUFBTSxDQUFDLEVBQUVqQyxhQUFhLGNBQWMsQ0FBQyxFQUFFO2dCQUN2RGtDLFFBQVE7Z0JBQ1JDLFNBQVM7b0JBQUUsZ0JBQWdCO2dCQUFtQjtnQkFDOUNDLE1BQU1mLEtBQUtPLFNBQVMsQ0FBQztvQkFBRUU7b0JBQU9DO29CQUFVYztnQkFBWTtZQUN0RDtZQUVBLElBQUksQ0FBQ2IsSUFBSUssRUFBRSxFQUFFO2dCQUNYLE1BQU1DLE9BQU8sTUFBTU4sSUFBSU0sSUFBSSxHQUFHQyxLQUFLLENBQUMsSUFBTVAsSUFBSVEsVUFBVTtnQkFDeEQsTUFBTSxJQUFJQyxNQUFNSCxRQUFRO1lBQzFCO1lBRUEsTUFBTUksT0FBTyxNQUFNVixJQUFJVyxJQUFJO1lBRTNCLE1BQU1sQixZQUFvQmlCLEtBQUtoQyxLQUFLLElBQUlnQyxLQUFLRSxXQUFXO1lBQ3hELE1BQU1sQixXQUNKZ0IsS0FBSzlCLElBQUksSUFDUjtnQkFDQ2tCLE9BQU9ZLEtBQUtaLEtBQUssSUFBSUE7Z0JBQ3JCZSxhQUFhSCxLQUFLRyxXQUFXLElBQUlBLGVBQWU7Z0JBQ2hEQyxNQUFNSixLQUFLSSxJQUFJLElBQUk7WUFDckI7WUFFRm5DLFNBQVNjO1lBQ1RaLFFBQVFhO1lBQ1JGLFlBQVlDLFdBQVdDO1FBQ3pCLFNBQVU7WUFDUlgsV0FBVztRQUNiO0lBQ0YsR0FDQTtRQUFDUztLQUFZO0lBR2YsTUFBTXdCLFNBQVNwRCxrREFBV0EsQ0FBQztRQUN6QmUsU0FBUztRQUNURSxRQUFRO1FBQ1JXLFlBQVksTUFBTTtJQUNwQixHQUFHO1FBQUNBO0tBQVk7SUFFaEIsTUFBTXlCLGlCQUFpQnJELGtEQUFXQSxDQUFDO1FBQ2pDLE9BQU9jLFFBQVE7WUFBRXdDLGVBQWUsQ0FBQyxPQUFPLEVBQUV4QyxNQUFNLENBQUM7UUFBQyxJQUFJLENBQUM7SUFDekQsR0FBRztRQUFDQTtLQUFNO0lBRVYsTUFBTXlDLFFBQTBCO1FBQzlCdkM7UUFDQUY7UUFDQUk7UUFDQWU7UUFDQWtCO1FBQ0FDO1FBQ0FDO0lBQ0Y7SUFFQSxxQkFBTyw4REFBQzdDLFlBQVlnRCxRQUFRO1FBQUNELE9BQU9BO2tCQUFRMUM7Ozs7OztBQUM5QztBQUVBLDJDQUEyQztBQUNwQyxTQUFTNEM7SUFDZCxNQUFNQyxNQUFNekQsaURBQVVBLENBQUNPO0lBQ3ZCLElBQUksQ0FBQ2tELEtBQUs7UUFDUixNQUFNLElBQUliLE1BQU07SUFDbEI7SUFDQSxPQUFPYTtBQUNUIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vZ3VuYnVpbGRlci1wcm90b3R5cGUvLi9jb250ZXh0L0F1dGhDb250ZXh0LnRzeD9mZGZmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQge1xuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbiAgUmVhY3ROb2RlLFxufSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgQVBJX0JBU0VfVVJMID1cbiAgcHJvY2Vzcy5lbnYuTkVYVF9QVUJMSUNfQVBJX0JBU0VfVVJMID8/IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCI7XG5cbnR5cGUgQXV0aFVzZXIgPSB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgcm9sZTogc3RyaW5nO1xufSB8IG51bGw7XG5cbnR5cGUgQXV0aENvbnRleHRWYWx1ZSA9IHtcbiAgdXNlcjogQXV0aFVzZXI7XG4gIHRva2VuOiBzdHJpbmcgfCBudWxsO1xuICBsb2FkaW5nOiBib29sZWFuO1xuICBsb2dpbjogKHBhcmFtczogeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0pID0+IFByb21pc2U8dm9pZD47XG4gIHJlZ2lzdGVyOiAocGFyYW1zOiB7XG4gICAgZW1haWw6IHN0cmluZztcbiAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICB9KSA9PiBQcm9taXNlPHZvaWQ+O1xuICBsb2dvdXQ6ICgpID0+IHZvaWQ7XG4gIGdldEF1dGhIZWFkZXJzOiAoKSA9PiBIZWFkZXJzSW5pdDtcbn07XG5cbmNvbnN0IEF1dGhDb250ZXh0ID0gY3JlYXRlQ29udGV4dDxBdXRoQ29udGV4dFZhbHVlIHwgdW5kZWZpbmVkPih1bmRlZmluZWQpO1xuXG5jb25zdCBUT0tFTl9LRVkgPSBcImJhbGxpc3RpY19hdXRoX3Rva2VuXCI7XG5jb25zdCBVU0VSX0tFWSA9IFwiYmFsbGlzdGljX2F1dGhfdXNlclwiO1xuXG5leHBvcnQgZnVuY3Rpb24gQXV0aFByb3ZpZGVyKHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pIHtcbiAgY29uc3QgW3Rva2VuLCBzZXRUb2tlbl0gPSB1c2VTdGF0ZTxzdHJpbmcgfCBudWxsPihudWxsKTtcbiAgY29uc3QgW3VzZXIsIHNldFVzZXJdID0gdXNlU3RhdGU8QXV0aFVzZXI+KG51bGwpO1xuICBjb25zdCBbbG9hZGluZywgc2V0TG9hZGluZ10gPSB1c2VTdGF0ZTxib29sZWFuPih0cnVlKTtcblxuICAvLyBIeWRyYXRlIGZyb20gbG9jYWxTdG9yYWdlIG9uIGZpcnN0IGxvYWRcbiAgdXNlRWZmZWN0KCgpID0+IHtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyA9PT0gXCJ1bmRlZmluZWRcIikgcmV0dXJuO1xuXG4gICAgY29uc3Qgc3RvcmVkVG9rZW4gPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVE9LRU5fS0VZKTtcbiAgICBjb25zdCBzdG9yZWRVc2VyID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFVTRVJfS0VZKTtcblxuICAgIGlmIChzdG9yZWRUb2tlbikge1xuICAgICAgc2V0VG9rZW4oc3RvcmVkVG9rZW4pO1xuICAgIH1cblxuICAgIGlmIChzdG9yZWRVc2VyKSB7XG4gICAgICB0cnkge1xuICAgICAgICBzZXRVc2VyKEpTT04ucGFyc2Uoc3RvcmVkVXNlcikpO1xuICAgICAgfSBjYXRjaCB7XG4gICAgICAgIC8vIGJhZCBKU09OPyB3aXBlIGl0XG4gICAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShVU0VSX0tFWSk7XG4gICAgICB9XG4gICAgfVxuXG4gICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gIH0sIFtdKTtcblxuICBjb25zdCBwZXJzaXN0QXV0aCA9IHVzZUNhbGxiYWNrKChuZXh0VG9rZW46IHN0cmluZyB8IG51bGwsIG5leHRVc2VyOiBBdXRoVXNlcikgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG5cbiAgICBpZiAobmV4dFRva2VuKSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oVE9LRU5fS0VZLCBuZXh0VG9rZW4pO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVE9LRU5fS0VZKTtcbiAgICB9XG5cbiAgICBpZiAobmV4dFVzZXIpIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShVU0VSX0tFWSwgSlNPTi5zdHJpbmdpZnkobmV4dFVzZXIpKTtcbiAgICB9IGVsc2Uge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFVTRVJfS0VZKTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICBjb25zdCBsb2dpbiA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7IGVtYWlsLCBwYXNzd29yZCB9OiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4ge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFX1VSTH0vYXV0aC9sb2dpbmAsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsLCBwYXNzd29yZCB9KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKS5jYXRjaCgoKSA9PiByZXMuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRleHQgfHwgXCJMb2dpbiBmYWlsZWRcIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhID0gYXdhaXQgcmVzLmpzb24oKTtcblxuICAgICAgICAvLyBBZGp1c3QgdGhlc2UgdG8gbWF0Y2ggeW91ciBiYWNrZW5kIHJlc3BvbnNlIHNoYXBlXG4gICAgICAgIGNvbnN0IG5leHRUb2tlbjogc3RyaW5nID0gZGF0YS50b2tlbiA/PyBkYXRhLmFjY2Vzc1Rva2VuO1xuICAgICAgICBjb25zdCBuZXh0VXNlcjogQXV0aFVzZXIgPVxuICAgICAgICAgIGRhdGEudXNlciA/P1xuICAgICAgICAgICh7XG4gICAgICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCA/PyBlbWFpbCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBkYXRhLmRpc3BsYXlOYW1lID8/IG51bGwsXG4gICAgICAgICAgICByb2xlOiBkYXRhLnJvbGUgPz8gXCJVU0VSXCIsXG4gICAgICAgICAgfSBhcyBBdXRoVXNlcik7XG5cbiAgICAgICAgc2V0VG9rZW4obmV4dFRva2VuKTtcbiAgICAgICAgc2V0VXNlcihuZXh0VXNlcik7XG4gICAgICAgIHBlcnNpc3RBdXRoKG5leHRUb2tlbiwgbmV4dFVzZXIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcGVyc2lzdEF1dGhdXG4gICk7XG5cbiAgY29uc3QgcmVnaXN0ZXIgPSB1c2VDYWxsYmFjayhcbiAgICBhc3luYyAoe1xuICAgICAgZW1haWwsXG4gICAgICBwYXNzd29yZCxcbiAgICAgIGRpc3BsYXlOYW1lLFxuICAgIH06IHtcbiAgICAgIGVtYWlsOiBzdHJpbmc7XG4gICAgICBwYXNzd29yZDogc3RyaW5nO1xuICAgICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gICAgfSkgPT4ge1xuICAgICAgc2V0TG9hZGluZyh0cnVlKTtcbiAgICAgIHRyeSB7XG4gICAgICAgIGNvbnN0IHJlcyA9IGF3YWl0IGZldGNoKGAke0FQSV9CQVNFX1VSTH0vYXV0aC9yZWdpc3RlcmAsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGhlYWRlcnM6IHsgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7IGVtYWlsLCBwYXNzd29yZCwgZGlzcGxheU5hbWUgfSksXG4gICAgICAgIH0pO1xuXG4gICAgICAgIGlmICghcmVzLm9rKSB7XG4gICAgICAgICAgY29uc3QgdGV4dCA9IGF3YWl0IHJlcy50ZXh0KCkuY2F0Y2goKCkgPT4gcmVzLnN0YXR1c1RleHQpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0IHx8IFwiUmVnaXN0cmF0aW9uIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuXG4gICAgICAgIGNvbnN0IG5leHRUb2tlbjogc3RyaW5nID0gZGF0YS50b2tlbiA/PyBkYXRhLmFjY2Vzc1Rva2VuO1xuICAgICAgICBjb25zdCBuZXh0VXNlcjogQXV0aFVzZXIgPVxuICAgICAgICAgIGRhdGEudXNlciA/P1xuICAgICAgICAgICh7XG4gICAgICAgICAgICBlbWFpbDogZGF0YS5lbWFpbCA/PyBlbWFpbCxcbiAgICAgICAgICAgIGRpc3BsYXlOYW1lOiBkYXRhLmRpc3BsYXlOYW1lID8/IGRpc3BsYXlOYW1lID8/IG51bGwsXG4gICAgICAgICAgICByb2xlOiBkYXRhLnJvbGUgPz8gXCJVU0VSXCIsXG4gICAgICAgICAgfSBhcyBBdXRoVXNlcik7XG5cbiAgICAgICAgc2V0VG9rZW4obmV4dFRva2VuKTtcbiAgICAgICAgc2V0VXNlcihuZXh0VXNlcik7XG4gICAgICAgIHBlcnNpc3RBdXRoKG5leHRUb2tlbiwgbmV4dFVzZXIpO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbcGVyc2lzdEF1dGhdXG4gICk7XG5cbiAgY29uc3QgbG9nb3V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIHNldFRva2VuKG51bGwpO1xuICAgIHNldFVzZXIobnVsbCk7XG4gICAgcGVyc2lzdEF1dGgobnVsbCwgbnVsbCk7XG4gIH0sIFtwZXJzaXN0QXV0aF0pO1xuXG4gIGNvbnN0IGdldEF1dGhIZWFkZXJzID0gdXNlQ2FsbGJhY2soKCk6IEhlYWRlcnNJbml0ID0+IHtcbiAgICByZXR1cm4gdG9rZW4gPyB7IEF1dGhvcml6YXRpb246IGBCZWFyZXIgJHt0b2tlbn1gIH0gOiB7fTtcbiAgfSwgW3Rva2VuXSk7XG5cbiAgY29uc3QgdmFsdWU6IEF1dGhDb250ZXh0VmFsdWUgPSB7XG4gICAgdXNlcixcbiAgICB0b2tlbixcbiAgICBsb2FkaW5nLFxuICAgIGxvZ2luLFxuICAgIHJlZ2lzdGVyLFxuICAgIGxvZ291dCxcbiAgICBnZXRBdXRoSGVhZGVycyxcbiAgfTtcblxuICByZXR1cm4gPEF1dGhDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvQXV0aENvbnRleHQuUHJvdmlkZXI+O1xufVxuXG4vLyDwn5SRIFRoaXMgaXMgd2hhdCB5b3VyIHVzZUFwaSBob29rIGltcG9ydHNcbmV4cG9ydCBmdW5jdGlvbiB1c2VBdXRoKCk6IEF1dGhDb250ZXh0VmFsdWUge1xuICBjb25zdCBjdHggPSB1c2VDb250ZXh0KEF1dGhDb250ZXh0KTtcbiAgaWYgKCFjdHgpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXCJ1c2VBdXRoIG11c3QgYmUgdXNlZCB3aXRoaW4gYW4gQXV0aFByb3ZpZGVyXCIpO1xuICB9XG4gIHJldHVybiBjdHg7XG59Il0sIm5hbWVzIjpbImNyZWF0ZUNvbnRleHQiLCJ1c2VDYWxsYmFjayIsInVzZUNvbnRleHQiLCJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkFQSV9CQVNFX1VSTCIsInByb2Nlc3MiLCJlbnYiLCJORVhUX1BVQkxJQ19BUElfQkFTRV9VUkwiLCJBdXRoQ29udGV4dCIsInVuZGVmaW5lZCIsIlRPS0VOX0tFWSIsIlVTRVJfS0VZIiwiQXV0aFByb3ZpZGVyIiwiY2hpbGRyZW4iLCJ0b2tlbiIsInNldFRva2VuIiwidXNlciIsInNldFVzZXIiLCJsb2FkaW5nIiwic2V0TG9hZGluZyIsInN0b3JlZFRva2VuIiwid2luZG93IiwibG9jYWxTdG9yYWdlIiwiZ2V0SXRlbSIsInN0b3JlZFVzZXIiLCJKU09OIiwicGFyc2UiLCJyZW1vdmVJdGVtIiwicGVyc2lzdEF1dGgiLCJuZXh0VG9rZW4iLCJuZXh0VXNlciIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJsb2dpbiIsImVtYWlsIiwicGFzc3dvcmQiLCJyZXMiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5Iiwib2siLCJ0ZXh0IiwiY2F0Y2giLCJzdGF0dXNUZXh0IiwiRXJyb3IiLCJkYXRhIiwianNvbiIsImFjY2Vzc1Rva2VuIiwiZGlzcGxheU5hbWUiLCJyb2xlIiwicmVnaXN0ZXIiLCJsb2dvdXQiLCJnZXRBdXRoSGVhZGVycyIsIkF1dGhvcml6YXRpb24iLCJ2YWx1ZSIsIlByb3ZpZGVyIiwidXNlQXV0aCIsImN0eCJdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(ssr)/./context/AuthContext.tsx\n"); /***/ }), diff --git a/.next/server/app/gunbuilder/page_client-reference-manifest.js b/.next/server/app/gunbuilder/page_client-reference-manifest.js index 2b42044..44eda52 100644 --- a/.next/server/app/gunbuilder/page_client-reference-manifest.js +++ b/.next/server/app/gunbuilder/page_client-reference-manifest.js @@ -1 +1 @@ -globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/gunbuilder/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/layout.tsx":{"*":{"id":"(ssr)/./app/layout.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":["app/gunbuilder/page","static/chunks/app/gunbuilder/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx":{"id":"(app-pages-browser)/./app/layout.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page":[]}} \ No newline at end of file +globalThis.__RSC_MANIFEST=(globalThis.__RSC_MANIFEST||{});globalThis.__RSC_MANIFEST["/gunbuilder/page"]={"moduleLoading":{"prefix":"/_next/","crossOrigin":null},"ssrModuleMapping":{"(app-pages-browser)/./app/admin/gunbuilder/part-role-mappings/page.tsx":{"*":{"id":"(ssr)/./app/admin/gunbuilder/part-role-mappings/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/layout.tsx":{"*":{"id":"(ssr)/./app/layout.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js":{"*":{"id":"(ssr)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/page.tsx":{"*":{"id":"(ssr)/./app/admin/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/gunbuilder/page.tsx":{"*":{"id":"(ssr)/./app/gunbuilder/page.tsx","name":"*","chunks":[],"async":false}},"(app-pages-browser)/./app/admin/gunbuilder/merchant-category-mappings/page.tsx":{"*":{"id":"(ssr)/./app/admin/gunbuilder/merchant-category-mappings/page.tsx","name":"*","chunks":[],"async":false}}},"edgeSSRModuleMapping":{},"clientModules":{"/Users/sean/Dev/gunbuilder-prototype/app/admin/gunbuilder/part-role-mappings/page.tsx":{"id":"(app-pages-browser)/./app/admin/gunbuilder/part-role-mappings/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx":{"id":"(app-pages-browser)/./app/layout.tsx","name":"*","chunks":["app/layout","static/chunks/app/layout.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/app-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/app-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/client-page.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/client-page.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/error-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/error-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/layout-router.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/layout-router.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/not-found-boundary.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/not-found-boundary.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/esm/client/components/render-from-template-context.js":{"id":"(app-pages-browser)/./node_modules/next/dist/client/components/render-from-template-context.js","name":"*","chunks":["app-pages-internals","static/chunks/app-pages-internals.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/page.tsx":{"id":"(app-pages-browser)/./app/admin/page.tsx","name":"*","chunks":[],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page.tsx":{"id":"(app-pages-browser)/./app/gunbuilder/page.tsx","name":"*","chunks":["app/gunbuilder/page","static/chunks/app/gunbuilder/page.js"],"async":false},"/Users/sean/Dev/gunbuilder-prototype/app/admin/gunbuilder/merchant-category-mappings/page.tsx":{"id":"(app-pages-browser)/./app/admin/gunbuilder/merchant-category-mappings/page.tsx","name":"*","chunks":[],"async":false}},"entryCSSFiles":{"/Users/sean/Dev/gunbuilder-prototype/":[],"/Users/sean/Dev/gunbuilder-prototype/app/layout":["static/css/app/layout.css"],"/Users/sean/Dev/gunbuilder-prototype/app/gunbuilder/page":[]}} \ No newline at end of file diff --git a/.next/server/server-reference-manifest.js b/.next/server/server-reference-manifest.js index 1b2fe33..03e23cf 100644 --- a/.next/server/server-reference-manifest.js +++ b/.next/server/server-reference-manifest.js @@ -1 +1 @@ -self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"1xFGN5nb3mbeAQPPAywQxDx1Ue0O/Rg+NJlfm52KEi4=\"\n}" \ No newline at end of file +self.__RSC_SERVER_MANIFEST="{\n \"node\": {},\n \"edge\": {},\n \"encryptionKey\": \"8FrZQAkdSCaOE1KMpFoj5rwrLq2kj7eoZ32XbwDLK30=\"\n}" \ No newline at end of file diff --git a/.next/server/server-reference-manifest.json b/.next/server/server-reference-manifest.json index 8170beb..21e4517 100644 --- a/.next/server/server-reference-manifest.json +++ b/.next/server/server-reference-manifest.json @@ -1,5 +1,5 @@ { "node": {}, "edge": {}, - "encryptionKey": "1xFGN5nb3mbeAQPPAywQxDx1Ue0O/Rg+NJlfm52KEi4=" + "encryptionKey": "8FrZQAkdSCaOE1KMpFoj5rwrLq2kj7eoZ32XbwDLK30=" } \ No newline at end of file diff --git a/.next/server/webpack-runtime.js b/.next/server/webpack-runtime.js index bb849e7..664d98a 100644 --- a/.next/server/webpack-runtime.js +++ b/.next/server/webpack-runtime.js @@ -125,7 +125,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ (() => { -/******/ __webpack_require__.h = () => ("2d054b747f45013d") +/******/ __webpack_require__.h = () => ("37970ea9607f304f") /******/ })(); /******/ /******/ /* webpack/runtime/hasOwnProperty shorthand */ diff --git a/.next/static/chunks/app/layout.js b/.next/static/chunks/app/layout.js index 06e7a4a..fd99473 100644 --- a/.next/static/chunks/app/layout.js +++ b/.next/static/chunks/app/layout.js @@ -68,7 +68,7 @@ eval(__webpack_require__.ts("var __dirname = \"/\";\n(function(){var e={229:func /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"3c8bb83e80c4\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCIzYzhiYjgzZTgwYzRcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"aaa49504ef1d\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCJhYWE0OTUwNGVmMWRcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); /***/ }), @@ -79,7 +79,7 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ RootLayout; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(app-pages-browser)/./app/globals.css\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(app-pages-browser)/./context/AuthContext.tsx\");\n/* harmony import */ var _components_TopNav__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/TopNav */ \"(app-pages-browser)/./components/TopNav.tsx\");\n/* harmony import */ var _components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/BuilderNav */ \"(app-pages-browser)/./components/BuilderNav.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n // or default import if that's how you exported it\n\nfunction RootLayout(param) {\n let { children } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-black text-zinc-100\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_TopNav__WEBPACK_IMPORTED_MODULE_3__.TopNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 15,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__.BuilderNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 16,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 17,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 14,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n_c = RootLayout;\nvar _c;\n$RefreshReg$(_c, \"RootLayout\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9sYXlvdXQudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFFdUI7QUFFOEI7QUFDUixDQUFDLGtEQUFrRDtBQUMzQztBQUV0QyxTQUFTRyxXQUFXLEtBQXFDO1FBQXJDLEVBQUVDLFFBQVEsRUFBMkIsR0FBckM7SUFDakMscUJBQ0UsOERBQUNDO1FBQUtDLE1BQUs7a0JBQ1QsNEVBQUNDO1lBQUtDLFdBQVU7c0JBRWQsNEVBQUNSLDhEQUFZQTs7a0NBQ1gsOERBQUNDLHNEQUFNQTs7Ozs7a0NBQ1AsOERBQUNDLDhEQUFVQTs7Ozs7a0NBQ1gsOERBQUNPO3dCQUFLRCxXQUFVO2tDQUFnQko7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFLMUM7S0Fid0JEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2FwcC9sYXlvdXQudHN4Pzk5ODgiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCBcIi4vZ2xvYmFscy5jc3NcIjtcbmltcG9ydCB0eXBlIHsgUmVhY3ROb2RlIH0gZnJvbSBcInJlYWN0XCI7XG5pbXBvcnQgeyBBdXRoUHJvdmlkZXIgfSBmcm9tIFwiQC9jb250ZXh0L0F1dGhDb250ZXh0XCI7XG5pbXBvcnQgeyBUb3BOYXYgfSBmcm9tIFwiQC9jb21wb25lbnRzL1RvcE5hdlwiOyAvLyBvciBkZWZhdWx0IGltcG9ydCBpZiB0aGF0J3MgaG93IHlvdSBleHBvcnRlZCBpdFxuaW1wb3J0IHsgQnVpbGRlck5hdiB9IGZyb20gXCJAL2NvbXBvbmVudHMvQnVpbGRlck5hdlwiO1xuXG5leHBvcnQgZGVmYXVsdCBmdW5jdGlvbiBSb290TGF5b3V0KHsgY2hpbGRyZW4gfTogeyBjaGlsZHJlbjogUmVhY3ROb2RlIH0pIHtcbiAgcmV0dXJuIChcbiAgICA8aHRtbCBsYW5nPVwiZW5cIj5cbiAgICAgIDxib2R5IGNsYXNzTmFtZT1cImJnLWJsYWNrIHRleHQtemluYy0xMDBcIj5cbiAgICAgICAgey8qIEF1dGhQcm92aWRlciB3cmFwcyBldmVyeXRoaW5nIHRoYXQgdXNlcyB1c2VBdXRoICovfVxuICAgICAgICA8QXV0aFByb3ZpZGVyPlxuICAgICAgICAgIDxUb3BOYXYgLz5cbiAgICAgICAgICA8QnVpbGRlck5hdiAvPlxuICAgICAgICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlblwiPntjaGlsZHJlbn08L21haW4+XG4gICAgICAgIDwvQXV0aFByb3ZpZGVyPlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn0iXSwibmFtZXMiOlsiQXV0aFByb3ZpZGVyIiwiVG9wTmF2IiwiQnVpbGRlck5hdiIsIlJvb3RMYXlvdXQiLCJjaGlsZHJlbiIsImh0bWwiLCJsYW5nIiwiYm9keSIsImNsYXNzTmFtZSIsIm1haW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/layout.tsx\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ \"default\": function() { return /* binding */ RootLayout; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var _globals_css__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./globals.css */ \"(app-pages-browser)/./app/globals.css\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(app-pages-browser)/./context/AuthContext.tsx\");\n/* harmony import */ var _components_TopNav__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/TopNav */ \"(app-pages-browser)/./components/TopNav.tsx\");\n/* harmony import */ var _components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/components/BuilderNav */ \"(app-pages-browser)/./components/BuilderNav.tsx\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \n\n\n\n\nfunction RootLayout(param) {\n let { children } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"html\", {\n lang: \"en\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"body\", {\n className: \"bg-black text-zinc-100\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.AuthProvider, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_TopNav__WEBPACK_IMPORTED_MODULE_3__.TopNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 14,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_BuilderNav__WEBPACK_IMPORTED_MODULE_4__.BuilderNav, {}, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 15,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"min-h-screen\",\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 16,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 13,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n_c = RootLayout;\nvar _c;\n$RefreshReg$(_c, \"RootLayout\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9sYXlvdXQudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7QUFFdUI7QUFFOEI7QUFDUjtBQUNRO0FBRXRDLFNBQVNHLFdBQVcsS0FBcUM7UUFBckMsRUFBRUMsUUFBUSxFQUEyQixHQUFyQztJQUNqQyxxQkFDRSw4REFBQ0M7UUFBS0MsTUFBSztrQkFDVCw0RUFBQ0M7WUFBS0MsV0FBVTtzQkFDZCw0RUFBQ1IsOERBQVlBOztrQ0FDWCw4REFBQ0Msc0RBQU1BOzs7OztrQ0FDUCw4REFBQ0MsOERBQVVBOzs7OztrQ0FDWCw4REFBQ087d0JBQUtELFdBQVU7a0NBQWdCSjs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQUsxQztLQVp3QkQiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2xheW91dC50c3g/OTk4OCJdLCJzb3VyY2VzQ29udGVudCI6WyJcInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IFwiLi9nbG9iYWxzLmNzc1wiO1xuaW1wb3J0IHR5cGUgeyBSZWFjdE5vZGUgfSBmcm9tIFwicmVhY3RcIjtcbmltcG9ydCB7IEF1dGhQcm92aWRlciB9IGZyb20gXCJAL2NvbnRleHQvQXV0aENvbnRleHRcIjtcbmltcG9ydCB7IFRvcE5hdiB9IGZyb20gXCJAL2NvbXBvbmVudHMvVG9wTmF2XCI7XG5pbXBvcnQgeyBCdWlsZGVyTmF2IH0gZnJvbSBcIkAvY29tcG9uZW50cy9CdWlsZGVyTmF2XCI7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIFJvb3RMYXlvdXQoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICByZXR1cm4gKFxuICAgIDxodG1sIGxhbmc9XCJlblwiPlxuICAgICAgPGJvZHkgY2xhc3NOYW1lPVwiYmctYmxhY2sgdGV4dC16aW5jLTEwMFwiPlxuICAgICAgICA8QXV0aFByb3ZpZGVyPlxuICAgICAgICAgIDxUb3BOYXYgLz5cbiAgICAgICAgICA8QnVpbGRlck5hdiAvPlxuICAgICAgICAgIDxtYWluIGNsYXNzTmFtZT1cIm1pbi1oLXNjcmVlblwiPntjaGlsZHJlbn08L21haW4+XG4gICAgICAgIDwvQXV0aFByb3ZpZGVyPlxuICAgICAgPC9ib2R5PlxuICAgIDwvaHRtbD5cbiAgKTtcbn0iXSwibmFtZXMiOlsiQXV0aFByb3ZpZGVyIiwiVG9wTmF2IiwiQnVpbGRlck5hdiIsIlJvb3RMYXlvdXQiLCJjaGlsZHJlbiIsImh0bWwiLCJsYW5nIiwiYm9keSIsImNsYXNzTmFtZSIsIm1haW4iXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/layout.tsx\n")); /***/ }), @@ -101,7 +101,7 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TopNav: function() { return /* binding */ TopNav; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(app-pages-browser)/./context/AuthContext.tsx\");\n// components/TopNav.tsx\n/* __next_internal_client_entry_do_not_use__ TopNav auto */ \nvar _s = $RefreshSig$();\n\n\nfunction TopNav() {\n _s();\n const { user, logout, loading } = (0,_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.useAuth)();\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"border-b border-zinc-800 bg-black/95 backdrop-blur\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-amber-500/20 bg-amber-500/5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl flex-col gap-1 px-4 py-2 text-[0.75rem] text-amber-100 md:flex-row md:items-center md:justify-between\",\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: \"rounded-sm bg-amber-500/20 px-2 py-0.5 text-[0.65rem] font-semibold uppercase tracking-[0.18em] text-amber-300\",\n children: \"Early Access Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 15,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-amber-100/90 md:inline\",\n children: \"You're using an early-access prototype of The Armory. Data, pricing, and available parts are still evolving.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 18,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 14,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-100/90 md:hidden\",\n children: \"Early-access prototype. Data and pricing may change.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 23,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 13,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 12,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl items-center justify-between px-4 py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/\",\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-400\",\n children: \"The Build Bench\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 30,\n columnNumber: 9\n }, this),\n /*#__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)(\"button\", {\n type: \"button\",\n className: \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-zinc-700 bg-zinc-900/60 text-zinc-400 hover:text-zinc-200 hover:bg-zinc-800 hover:border-zinc-500 transition-colors\",\n \"aria-label\": \"Search (coming soon)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"h-4 w-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"11\",\n cy: \"11\",\n r: \"6\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 55,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"16.5\",\n y1: \"16.5\",\n x2: \"21\",\n y2: \"21\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 56,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 45,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 40,\n columnNumber: 11\n }, this),\n loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500\",\n children: \"Checking session…\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 61,\n columnNumber: 13\n }, this) : user ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-300\",\n children: user.displayName || user.email\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 64,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: logout,\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log Out\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 67,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/login\",\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log In\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 77,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/register\",\n className: \"rounded-md border border-amber-400/70 bg-amber-400/10 px-3 py-1.5 text-xs font-semibold text-amber-200 hover:bg-amber-400/20 transition-colors\",\n children: \"Join Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 83,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 38,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 28,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 11,\n columnNumber: 5\n }, this);\n}\n_s(TopNav, \"Wu+csSnf+1aKI+hP/dR6ZNNX/Cc=\", false, function() {\n return [\n _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.useAuth\n ];\n});\n_c = TopNav;\nvar _c;\n$RefreshReg$(_c, \"TopNav\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvVG9wTmF2LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsd0JBQXdCOzs7QUFHSztBQUNtQjtBQUV6QyxTQUFTRTs7SUFDZCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0osNkRBQU9BO0lBRXpDLHFCQUNFLDhEQUFDSztRQUFPQyxXQUFVOzswQkFDaEIsOERBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0U7b0NBQUtGLFdBQVU7OENBQWlIOzs7Ozs7OENBR2pJLDhEQUFDRTtvQ0FBS0YsV0FBVTs4Q0FBcUM7Ozs7Ozs7Ozs7OztzQ0FLdkQsOERBQUNFOzRCQUFLRixXQUFVO3NDQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBS2xELDhEQUFDQztnQkFBSUQsV0FBVTs7a0NBRWIsOERBQUNQLGlEQUFJQTt3QkFDSFUsTUFBSzt3QkFDTEgsV0FBVTtrQ0FDWDs7Ozs7O2tDQUtELDhEQUFDQzt3QkFBSUQsV0FBVTs7MENBRWIsOERBQUNJO2dDQUNDQyxNQUFLO2dDQUNMTCxXQUFVO2dDQUNWTSxjQUFXOzBDQUVYLDRFQUFDQztvQ0FDQ0MsT0FBTTtvQ0FDTkMsU0FBUTtvQ0FDUkMsTUFBSztvQ0FDTEMsUUFBTztvQ0FDUEMsYUFBYTtvQ0FDYkMsZUFBYztvQ0FDZEMsZ0JBQWU7b0NBQ2ZkLFdBQVU7O3NEQUVWLDhEQUFDZTs0Q0FBT0MsSUFBRzs0Q0FBS0MsSUFBRzs0Q0FBS0MsR0FBRTs7Ozs7O3NEQUMxQiw4REFBQ0M7NENBQUtDLElBQUc7NENBQU9DLElBQUc7NENBQU9DLElBQUc7NENBQUtDLElBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQUl4Q3pCLHdCQUNDLDhEQUFDSTtnQ0FBS0YsV0FBVTswQ0FBd0I7Ozs7O3VDQUN0Q0oscUJBQ0Y7O2tEQUNFLDhEQUFDTTt3Q0FBS0YsV0FBVTtrREFDYkosS0FBSzRCLFdBQVcsSUFBSTVCLEtBQUs2QixLQUFLOzs7Ozs7a0RBRWpDLDhEQUFDckI7d0NBQ0NDLE1BQUs7d0NBQ0xxQixTQUFTN0I7d0NBQ1RHLFdBQVU7a0RBQ1g7Ozs7Ozs7NkRBS0g7O2tEQUNFLDhEQUFDUCxpREFBSUE7d0NBQ0hVLE1BQUs7d0NBQ0xILFdBQVU7a0RBQ1g7Ozs7OztrREFHRCw4REFBQ1AsaURBQUlBO3dDQUNIVSxNQUFLO3dDQUNMSCxXQUFVO2tEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmO0dBeEZnQkw7O1FBQ29CRCx5REFBT0E7OztLQUQzQkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9Ub3BOYXYudHN4P2RmNTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gY29tcG9uZW50cy9Ub3BOYXYudHN4XG5cInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gXCJAL2NvbnRleHQvQXV0aENvbnRleHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFRvcE5hdigpIHtcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQsIGxvYWRpbmcgfSA9IHVzZUF1dGgoKTtcblxuICByZXR1cm4gKFxuICAgIDxoZWFkZXIgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLXppbmMtODAwIGJnLWJsYWNrLzk1IGJhY2tkcm9wLWJsdXJcIj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLWFtYmVyLTUwMC8yMCBiZy1hbWJlci01MDAvNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gZmxleCBtYXgtdy02eGwgZmxleC1jb2wgZ2FwLTEgcHgtNCBweS0yIHRleHQtWzAuNzVyZW1dIHRleHQtYW1iZXItMTAwIG1kOmZsZXgtcm93IG1kOml0ZW1zLWNlbnRlciBtZDpqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyb3VuZGVkLXNtIGJnLWFtYmVyLTUwMC8yMCBweC0yIHB5LTAuNSB0ZXh0LVswLjY1cmVtXSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy1bMC4xOGVtXSB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgICBFYXJseSBBY2Nlc3MgQmV0YVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaGlkZGVuIHRleHQtYW1iZXItMTAwLzkwIG1kOmlubGluZVwiPlxuICAgICAgICAgICAgICBZb3UmYXBvcztyZSB1c2luZyBhbiBlYXJseS1hY2Nlc3MgcHJvdG90eXBlIG9mIFRoZSBBcm1vcnkuIERhdGEsXG4gICAgICAgICAgICAgIHByaWNpbmcsIGFuZCBhdmFpbGFibGUgcGFydHMgYXJlIHN0aWxsIGV2b2x2aW5nLlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMTAwLzkwIG1kOmhpZGRlblwiPlxuICAgICAgICAgICAgRWFybHktYWNjZXNzIHByb3RvdHlwZS4gRGF0YSBhbmQgcHJpY2luZyBtYXkgY2hhbmdlLlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBmbGV4IG1heC13LTZ4bCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTQgcHktMlwiPlxuICAgICAgICB7LyogQnJhbmQgLyBIb21lIGxpbmsgKi99XG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgaHJlZj1cIi9cIlxuICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4yZW1dIHVwcGVyY2FzZSB0ZXh0LXppbmMtNDAwXCJcbiAgICAgICAgPlxuICAgICAgICAgIFRoZSBCdWlsZCBCZW5jaFxuICAgICAgICA8L0xpbms+XG5cbiAgICAgICAgey8qIFJpZ2h0IHNpZGUgYWN0aW9ucyAqL31cbiAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJmbGV4IGl0ZW1zLWNlbnRlciBnYXAtM1wiPlxuICAgICAgICAgIHsvKiBTZWFyY2ggcGxhY2Vob2xkZXIgKi99XG4gICAgICAgICAgPGJ1dHRvblxuICAgICAgICAgICAgdHlwZT1cImJ1dHRvblwiXG4gICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBoLTggdy04IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWNlbnRlciByb3VuZGVkLWZ1bGwgYm9yZGVyIGJvcmRlci16aW5jLTcwMCBiZy16aW5jLTkwMC82MCB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0yMDAgaG92ZXI6YmctemluYy04MDAgaG92ZXI6Ym9yZGVyLXppbmMtNTAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgIGFyaWEtbGFiZWw9XCJTZWFyY2ggKGNvbWluZyBzb29uKVwiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgPHN2Z1xuICAgICAgICAgICAgICB4bWxucz1cImh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnXCJcbiAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgIGZpbGw9XCJub25lXCJcbiAgICAgICAgICAgICAgc3Ryb2tlPVwiY3VycmVudENvbG9yXCJcbiAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezJ9XG4gICAgICAgICAgICAgIHN0cm9rZUxpbmVjYXA9XCJyb3VuZFwiXG4gICAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJoLTQgdy00XCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgPGNpcmNsZSBjeD1cIjExXCIgY3k9XCIxMVwiIHI9XCI2XCIgLz5cbiAgICAgICAgICAgICAgPGxpbmUgeDE9XCIxNi41XCIgeTE9XCIxNi41XCIgeDI9XCIyMVwiIHkyPVwiMjFcIiAvPlxuICAgICAgICAgICAgPC9zdmc+XG4gICAgICAgICAgPC9idXR0b24+XG5cbiAgICAgICAgICB7bG9hZGluZyA/IChcbiAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQteHMgdGV4dC16aW5jLTUwMFwiPkNoZWNraW5nIHNlc3Npb27igKY8L3NwYW4+XG4gICAgICAgICAgKSA6IHVzZXIgPyAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy0zMDBcIj5cbiAgICAgICAgICAgICAgICB7dXNlci5kaXNwbGF5TmFtZSB8fCB1c2VyLmVtYWlsfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtsb2dvdXR9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0xMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9nIE91dFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgIGhyZWY9XCIvbG9naW5cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMTAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIExvZyBJblxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9yZWdpc3RlclwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC83MCBiZy1hbWJlci00MDAvMTAgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMjAwIGhvdmVyOmJnLWFtYmVyLTQwMC8yMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBKb2luIEJldGFcbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgKTtcbn0iXSwibmFtZXMiOlsiTGluayIsInVzZUF1dGgiLCJUb3BOYXYiLCJ1c2VyIiwibG9nb3V0IiwibG9hZGluZyIsImhlYWRlciIsImNsYXNzTmFtZSIsImRpdiIsInNwYW4iLCJocmVmIiwiYnV0dG9uIiwidHlwZSIsImFyaWEtbGFiZWwiLCJzdmciLCJ4bWxucyIsInZpZXdCb3giLCJmaWxsIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJjaXJjbGUiLCJjeCIsImN5IiwiciIsImxpbmUiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImRpc3BsYXlOYW1lIiwiZW1haWwiLCJvbkNsaWNrIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/TopNav.tsx\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ TopNav: function() { return /* binding */ TopNav; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var next_link__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! next/link */ \"(app-pages-browser)/./node_modules/next/dist/api/link.js\");\n/* harmony import */ var _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/context/AuthContext */ \"(app-pages-browser)/./context/AuthContext.tsx\");\n// components/TopNav.tsx\n/* __next_internal_client_entry_do_not_use__ TopNav auto */ \nvar _s = $RefreshSig$();\n\n\nfunction TopNav() {\n _s();\n const { user, logout, loading } = (0,_context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.useAuth)();\n const isAuthenticated = !!user;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"border-b border-zinc-800 bg-black/95 backdrop-blur\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"border-b border-amber-500/20 bg-amber-500/5\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl flex-col gap-1 px-4 py-2 text-[0.75rem] text-amber-100 md:flex-row md:items-center md:justify-between\",\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: \"rounded-sm bg-amber-500/20 px-2 py-0.5 text-[0.65rem] font-semibold uppercase tracking-[0.18em] text-amber-300\",\n children: \"Early Access Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 18,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-amber-100/90 md:inline\",\n children: \"You're using an early-access prototype of The Armory. Data, pricing, and available parts are still evolving.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 21,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 17,\n columnNumber: 11\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-100/90 md:hidden\",\n children: \"Early-access prototype. Data and pricing may change.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 26,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 16,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 15,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mx-auto flex max-w-6xl items-center justify-between px-4 py-2\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/\",\n className: \"text-xs font-semibold tracking-[0.2em] uppercase text-zinc-400\",\n children: \"The Build Bench\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 35,\n columnNumber: 9\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"nav\", {\n className: \"hidden items-center gap-4 md:flex\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/gunbuilder\",\n className: \"text-xs font-medium text-zinc-300 hover:text-zinc-50 transition-colors\",\n children: \"Builder\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 44,\n columnNumber: 11\n }, this),\n isAuthenticated && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/admin\",\n className: \"text-xs font-medium text-emerald-400 hover:text-emerald-300 transition-colors\",\n children: \"Admin\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 52,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 43,\n columnNumber: 9\n }, this),\n /*#__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)(\"button\", {\n type: \"button\",\n className: \"inline-flex h-8 w-8 items-center justify-center rounded-full border border-zinc-700 bg-zinc-900/60 text-zinc-400 hover:text-zinc-200 hover:bg-zinc-800 hover:border-zinc-500 transition-colors\",\n \"aria-label\": \"Search (coming soon)\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 24 24\",\n fill: \"none\",\n stroke: \"currentColor\",\n strokeWidth: 2,\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n className: \"h-4 w-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"circle\", {\n cx: \"11\",\n cy: \"11\",\n r: \"6\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 79,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"line\", {\n x1: \"16.5\",\n y1: \"16.5\",\n x2: \"21\",\n y2: \"21\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 80,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 69,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 64,\n columnNumber: 11\n }, this),\n loading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-500\",\n children: \"Checking session…\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 85,\n columnNumber: 13\n }, this) : isAuthenticated ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"hidden text-xs text-zinc-300 sm:inline\",\n children: user.displayName || user.email\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 88,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"button\", {\n type: \"button\",\n onClick: logout,\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log Out\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 91,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.Fragment, {\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/login\",\n className: \"text-xs font-medium text-zinc-400 hover:text-zinc-100 transition-colors\",\n children: \"Log In\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 101,\n columnNumber: 15\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/register\",\n className: \"rounded-md border border-amber-400/70 bg-amber-400/10 px-3 py-1.5 text-xs font-semibold text-amber-200 hover:bg-amber-400/20 transition-colors\",\n children: \"Join Beta\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 107,\n columnNumber: 15\n }, this)\n ]\n }, void 0, true)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 62,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 33,\n columnNumber: 7\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/TopNav.tsx\",\n lineNumber: 13,\n columnNumber: 5\n }, this);\n}\n_s(TopNav, \"Wu+csSnf+1aKI+hP/dR6ZNNX/Cc=\", false, function() {\n return [\n _context_AuthContext__WEBPACK_IMPORTED_MODULE_2__.useAuth\n ];\n});\n_c = TopNav;\nvar _c;\n$RefreshReg$(_c, \"TopNav\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvVG9wTmF2LnRzeCIsIm1hcHBpbmdzIjoiOzs7Ozs7O0FBQUEsd0JBQXdCOzs7QUFHSztBQUNtQjtBQUV6QyxTQUFTRTs7SUFDZCxNQUFNLEVBQUVDLElBQUksRUFBRUMsTUFBTSxFQUFFQyxPQUFPLEVBQUUsR0FBR0osNkRBQU9BO0lBRXpDLE1BQU1LLGtCQUFrQixDQUFDLENBQUNIO0lBRTFCLHFCQUNFLDhEQUFDSTtRQUFPQyxXQUFVOzswQkFFaEIsOERBQUNDO2dCQUFJRCxXQUFVOzBCQUNiLDRFQUFDQztvQkFBSUQsV0FBVTs7c0NBQ2IsOERBQUNDOzRCQUFJRCxXQUFVOzs4Q0FDYiw4REFBQ0U7b0NBQUtGLFdBQVU7OENBQWlIOzs7Ozs7OENBR2pJLDhEQUFDRTtvQ0FBS0YsV0FBVTs4Q0FBcUM7Ozs7Ozs7Ozs7OztzQ0FLdkQsOERBQUNFOzRCQUFLRixXQUFVO3NDQUE4Qjs7Ozs7Ozs7Ozs7Ozs7Ozs7MEJBT2xELDhEQUFDQztnQkFBSUQsV0FBVTs7a0NBRWIsOERBQUNSLGlEQUFJQTt3QkFDSFcsTUFBSzt3QkFDTEgsV0FBVTtrQ0FDWDs7Ozs7O2tDQUtELDhEQUFDSTt3QkFBSUosV0FBVTs7MENBQ2IsOERBQUNSLGlEQUFJQTtnQ0FDSFcsTUFBSztnQ0FDTEgsV0FBVTswQ0FDWDs7Ozs7OzRCQUlBRixpQ0FDQyw4REFBQ04saURBQUlBO2dDQUNIVyxNQUFLO2dDQUNMSCxXQUFVOzBDQUNYOzs7Ozs7Ozs7Ozs7a0NBT0wsOERBQUNDO3dCQUFJRCxXQUFVOzswQ0FFYiw4REFBQ0s7Z0NBQ0NDLE1BQUs7Z0NBQ0xOLFdBQVU7Z0NBQ1ZPLGNBQVc7MENBRVgsNEVBQUNDO29DQUNDQyxPQUFNO29DQUNOQyxTQUFRO29DQUNSQyxNQUFLO29DQUNMQyxRQUFPO29DQUNQQyxhQUFhO29DQUNiQyxlQUFjO29DQUNkQyxnQkFBZTtvQ0FDZmYsV0FBVTs7c0RBRVYsOERBQUNnQjs0Q0FBT0MsSUFBRzs0Q0FBS0MsSUFBRzs0Q0FBS0MsR0FBRTs7Ozs7O3NEQUMxQiw4REFBQ0M7NENBQUtDLElBQUc7NENBQU9DLElBQUc7NENBQU9DLElBQUc7NENBQUtDLElBQUc7Ozs7Ozs7Ozs7Ozs7Ozs7OzRCQUl4QzNCLHdCQUNDLDhEQUFDSztnQ0FBS0YsV0FBVTswQ0FBd0I7Ozs7O3VDQUN0Q0YsZ0NBQ0Y7O2tEQUNFLDhEQUFDSTt3Q0FBS0YsV0FBVTtrREFDYkwsS0FBSzhCLFdBQVcsSUFBSTlCLEtBQUsrQixLQUFLOzs7Ozs7a0RBRWpDLDhEQUFDckI7d0NBQ0NDLE1BQUs7d0NBQ0xxQixTQUFTL0I7d0NBQ1RJLFdBQVU7a0RBQ1g7Ozs7Ozs7NkRBS0g7O2tEQUNFLDhEQUFDUixpREFBSUE7d0NBQ0hXLE1BQUs7d0NBQ0xILFdBQVU7a0RBQ1g7Ozs7OztrREFHRCw4REFBQ1IsaURBQUlBO3dDQUNIVyxNQUFLO3dDQUNMSCxXQUFVO2tEQUNYOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQVNmO0dBaEhnQk47O1FBQ29CRCx5REFBT0E7OztLQUQzQkMiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vY29tcG9uZW50cy9Ub3BOYXYudHN4P2RmNTYiXSwic291cmNlc0NvbnRlbnQiOlsiLy8gY29tcG9uZW50cy9Ub3BOYXYudHN4XG5cInVzZSBjbGllbnRcIjtcblxuaW1wb3J0IExpbmsgZnJvbSBcIm5leHQvbGlua1wiO1xuaW1wb3J0IHsgdXNlQXV0aCB9IGZyb20gXCJAL2NvbnRleHQvQXV0aENvbnRleHRcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIFRvcE5hdigpIHtcbiAgY29uc3QgeyB1c2VyLCBsb2dvdXQsIGxvYWRpbmcgfSA9IHVzZUF1dGgoKTtcblxuICBjb25zdCBpc0F1dGhlbnRpY2F0ZWQgPSAhIXVzZXI7XG5cbiAgcmV0dXJuIChcbiAgICA8aGVhZGVyIGNsYXNzTmFtZT1cImJvcmRlci1iIGJvcmRlci16aW5jLTgwMCBiZy1ibGFjay85NSBiYWNrZHJvcC1ibHVyXCI+XG4gICAgICB7LyogRWFybHkgYWNjZXNzIGJhciAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwiYm9yZGVyLWIgYm9yZGVyLWFtYmVyLTUwMC8yMCBiZy1hbWJlci01MDAvNVwiPlxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm14LWF1dG8gZmxleCBtYXgtdy02eGwgZmxleC1jb2wgZ2FwLTEgcHgtNCBweS0yIHRleHQtWzAuNzVyZW1dIHRleHQtYW1iZXItMTAwIG1kOmZsZXgtcm93IG1kOml0ZW1zLWNlbnRlciBtZDpqdXN0aWZ5LWJldHdlZW5cIj5cbiAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0yXCI+XG4gICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJyb3VuZGVkLXNtIGJnLWFtYmVyLTUwMC8yMCBweC0yIHB5LTAuNSB0ZXh0LVswLjY1cmVtXSBmb250LXNlbWlib2xkIHVwcGVyY2FzZSB0cmFja2luZy1bMC4xOGVtXSB0ZXh0LWFtYmVyLTMwMFwiPlxuICAgICAgICAgICAgICBFYXJseSBBY2Nlc3MgQmV0YVxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaGlkZGVuIHRleHQtYW1iZXItMTAwLzkwIG1kOmlubGluZVwiPlxuICAgICAgICAgICAgICBZb3UmYXBvcztyZSB1c2luZyBhbiBlYXJseS1hY2Nlc3MgcHJvdG90eXBlIG9mIFRoZSBBcm1vcnkuIERhdGEsXG4gICAgICAgICAgICAgIHByaWNpbmcsIGFuZCBhdmFpbGFibGUgcGFydHMgYXJlIHN0aWxsIGV2b2x2aW5nLlxuICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInRleHQtYW1iZXItMTAwLzkwIG1kOmhpZGRlblwiPlxuICAgICAgICAgICAgRWFybHktYWNjZXNzIHByb3RvdHlwZS4gRGF0YSBhbmQgcHJpY2luZyBtYXkgY2hhbmdlLlxuICAgICAgICAgIDwvc3Bhbj5cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cblxuICAgICAgey8qIE1haW4gbmF2IHJvdyAqL31cbiAgICAgIDxkaXYgY2xhc3NOYW1lPVwibXgtYXV0byBmbGV4IG1heC13LTZ4bCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuIHB4LTQgcHktMlwiPlxuICAgICAgICB7LyogTGVmdDogQnJhbmQgLyBIb21lICovfVxuICAgICAgICA8TGlua1xuICAgICAgICAgIGhyZWY9XCIvXCJcbiAgICAgICAgICBjbGFzc05hbWU9XCJ0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgdHJhY2tpbmctWzAuMmVtXSB1cHBlcmNhc2UgdGV4dC16aW5jLTQwMFwiXG4gICAgICAgID5cbiAgICAgICAgICBUaGUgQnVpbGQgQmVuY2hcbiAgICAgICAgPC9MaW5rPlxuXG4gICAgICAgIHsvKiBDZW50ZXI6IG1haW4gbmF2IChCdWlsZGVyIC8gQWRtaW4pICovfVxuICAgICAgICA8bmF2IGNsYXNzTmFtZT1cImhpZGRlbiBpdGVtcy1jZW50ZXIgZ2FwLTQgbWQ6ZmxleFwiPlxuICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICBocmVmPVwiL2d1bmJ1aWxkZXJcIlxuICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtMzAwIGhvdmVyOnRleHQtemluYy01MCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgPlxuICAgICAgICAgICAgQnVpbGRlclxuICAgICAgICAgIDwvTGluaz5cblxuICAgICAgICAgIHtpc0F1dGhlbnRpY2F0ZWQgJiYgKFxuICAgICAgICAgICAgPExpbmtcbiAgICAgICAgICAgICAgaHJlZj1cIi9hZG1pblwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tZWRpdW0gdGV4dC1lbWVyYWxkLTQwMCBob3Zlcjp0ZXh0LWVtZXJhbGQtMzAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgQWRtaW5cbiAgICAgICAgICAgIDwvTGluaz5cbiAgICAgICAgICApfVxuICAgICAgICA8L25hdj5cblxuICAgICAgICB7LyogUmlnaHQgc2lkZSBhY3Rpb25zICovfVxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggaXRlbXMtY2VudGVyIGdhcC0zXCI+XG4gICAgICAgICAgey8qIFNlYXJjaCBwbGFjZWhvbGRlciAqL31cbiAgICAgICAgICA8YnV0dG9uXG4gICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgIGNsYXNzTmFtZT1cImlubGluZS1mbGV4IGgtOCB3LTggaXRlbXMtY2VudGVyIGp1c3RpZnktY2VudGVyIHJvdW5kZWQtZnVsbCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzYwIHRleHQtemluYy00MDAgaG92ZXI6dGV4dC16aW5jLTIwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgYXJpYS1sYWJlbD1cIlNlYXJjaCAoY29taW5nIHNvb24pXCJcbiAgICAgICAgICA+XG4gICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgIHhtbG5zPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmdcIlxuICAgICAgICAgICAgICB2aWV3Qm94PVwiMCAwIDI0IDI0XCJcbiAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICBzdHJva2U9XCJjdXJyZW50Q29sb3JcIlxuICAgICAgICAgICAgICBzdHJva2VXaWR0aD17Mn1cbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgc3Ryb2tlTGluZWpvaW49XCJyb3VuZFwiXG4gICAgICAgICAgICAgIGNsYXNzTmFtZT1cImgtNCB3LTRcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8Y2lyY2xlIGN4PVwiMTFcIiBjeT1cIjExXCIgcj1cIjZcIiAvPlxuICAgICAgICAgICAgICA8bGluZSB4MT1cIjE2LjVcIiB5MT1cIjE2LjVcIiB4Mj1cIjIxXCIgeTI9XCIyMVwiIC8+XG4gICAgICAgICAgICA8L3N2Zz5cbiAgICAgICAgICA8L2J1dHRvbj5cblxuICAgICAgICAgIHtsb2FkaW5nID8gKFxuICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwidGV4dC14cyB0ZXh0LXppbmMtNTAwXCI+Q2hlY2tpbmcgc2Vzc2lvbuKApjwvc3Bhbj5cbiAgICAgICAgICApIDogaXNBdXRoZW50aWNhdGVkID8gKFxuICAgICAgICAgICAgPD5cbiAgICAgICAgICAgICAgPHNwYW4gY2xhc3NOYW1lPVwiaGlkZGVuIHRleHQteHMgdGV4dC16aW5jLTMwMCBzbTppbmxpbmVcIj5cbiAgICAgICAgICAgICAgICB7dXNlci5kaXNwbGF5TmFtZSB8fCB1c2VyLmVtYWlsfVxuICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgIDxidXR0b25cbiAgICAgICAgICAgICAgICB0eXBlPVwiYnV0dG9uXCJcbiAgICAgICAgICAgICAgICBvbkNsaWNrPXtsb2dvdXR9XG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidGV4dC14cyBmb250LW1lZGl1bSB0ZXh0LXppbmMtNDAwIGhvdmVyOnRleHQtemluYy0xMDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgICA+XG4gICAgICAgICAgICAgICAgTG9nIE91dFxuICAgICAgICAgICAgICA8L2J1dHRvbj5cbiAgICAgICAgICAgIDwvPlxuICAgICAgICAgICkgOiAoXG4gICAgICAgICAgICA8PlxuICAgICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICAgIGhyZWY9XCIvbG9naW5cIlxuICAgICAgICAgICAgICAgIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTQwMCBob3Zlcjp0ZXh0LXppbmMtMTAwIHRyYW5zaXRpb24tY29sb3JzXCJcbiAgICAgICAgICAgICAgPlxuICAgICAgICAgICAgICAgIExvZyBJblxuICAgICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgICAgIDxMaW5rXG4gICAgICAgICAgICAgICAgaHJlZj1cIi9yZWdpc3RlclwiXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwicm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLWFtYmVyLTQwMC83MCBiZy1hbWJlci00MDAvMTAgcHgtMyBweS0xLjUgdGV4dC14cyBmb250LXNlbWlib2xkIHRleHQtYW1iZXItMjAwIGhvdmVyOmJnLWFtYmVyLTQwMC8yMCB0cmFuc2l0aW9uLWNvbG9yc1wiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICBKb2luIEJldGFcbiAgICAgICAgICAgICAgPC9MaW5rPlxuICAgICAgICAgICAgPC8+XG4gICAgICAgICAgKX1cbiAgICAgICAgPC9kaXY+XG4gICAgICA8L2Rpdj5cbiAgICA8L2hlYWRlcj5cbiAgKTtcbn0iXSwibmFtZXMiOlsiTGluayIsInVzZUF1dGgiLCJUb3BOYXYiLCJ1c2VyIiwibG9nb3V0IiwibG9hZGluZyIsImlzQXV0aGVudGljYXRlZCIsImhlYWRlciIsImNsYXNzTmFtZSIsImRpdiIsInNwYW4iLCJocmVmIiwibmF2IiwiYnV0dG9uIiwidHlwZSIsImFyaWEtbGFiZWwiLCJzdmciLCJ4bWxucyIsInZpZXdCb3giLCJmaWxsIiwic3Ryb2tlIiwic3Ryb2tlV2lkdGgiLCJzdHJva2VMaW5lY2FwIiwic3Ryb2tlTGluZWpvaW4iLCJjaXJjbGUiLCJjeCIsImN5IiwiciIsImxpbmUiLCJ4MSIsInkxIiwieDIiLCJ5MiIsImRpc3BsYXlOYW1lIiwiZW1haWwiLCJvbkNsaWNrIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/TopNav.tsx\n")); /***/ }), @@ -112,7 +112,7 @@ eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* har /***/ (function(module, __webpack_exports__, __webpack_require__) { "use strict"; -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AuthProvider: function() { return /* binding */ AuthProvider; },\n/* harmony export */ useAuth: function() { return /* binding */ useAuth; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"(app-pages-browser)/./node_modules/next/dist/build/polyfills/process.js\");\n/* __next_internal_client_entry_do_not_use__ AuthProvider,useAuth auto */ \nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\nvar _process_env_NEXT_PUBLIC_API_BASE_URL;\nconst API_BASE_URL = (_process_env_NEXT_PUBLIC_API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL) !== null && _process_env_NEXT_PUBLIC_API_BASE_URL !== void 0 ? _process_env_NEXT_PUBLIC_API_BASE_URL : \"http://localhost:8080\";\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);\nconst TOKEN_KEY = \"ballistic_auth_token\";\nconst USER_KEY = \"ballistic_auth_user\";\nfunction AuthProvider(param) {\n let { children } = param;\n _s();\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [token, setToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true); // start true while we hydrate + reuse for calls\n // hydrate from localStorage\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n try {\n if (false) {}\n const storedToken = window.localStorage.getItem(TOKEN_KEY);\n const storedUser = window.localStorage.getItem(USER_KEY);\n if (storedToken && storedUser) {\n setToken(storedToken);\n setUser(JSON.parse(storedUser));\n }\n } catch (e) {\n // ignore\n } finally{\n setLoading(false);\n }\n }, []);\n const setSession = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((newToken, newUser)=>{\n setToken(newToken);\n setUser(newUser);\n if (true) {\n window.localStorage.setItem(TOKEN_KEY, newToken);\n window.localStorage.setItem(USER_KEY, JSON.stringify(newUser));\n }\n }, []);\n const clearSession = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n setToken(null);\n setUser(null);\n if (true) {\n window.localStorage.removeItem(TOKEN_KEY);\n window.localStorage.removeItem(USER_KEY);\n }\n }, []);\n const register = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async (params)=>{\n setLoading(true);\n try {\n const res = await fetch(\"\".concat(API_BASE_URL, \"/api/auth/register\"), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email: params.email,\n password: params.password,\n displayName: params.displayName\n })\n });\n if (!res.ok) {\n const text = await res.text();\n throw new Error(text || \"Failed to create account\");\n }\n const data = await res.json();\n var _data_displayName;\n setSession(data.token, {\n email: data.email,\n displayName: (_data_displayName = data.displayName) !== null && _data_displayName !== void 0 ? _data_displayName : null,\n role: data.role\n });\n } finally{\n setLoading(false);\n }\n }, [\n setSession\n ]);\n const login = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async (params)=>{\n setLoading(true);\n try {\n const res = await fetch(\"\".concat(API_BASE_URL, \"/api/auth/login\"), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email: params.email,\n password: params.password\n })\n });\n if (!res.ok) {\n const text = await res.text();\n throw new Error(text || \"Failed to log in\");\n }\n const data = await res.json();\n var _data_displayName;\n setSession(data.token, {\n email: data.email,\n displayName: (_data_displayName = data.displayName) !== null && _data_displayName !== void 0 ? _data_displayName : null,\n role: data.role\n });\n } finally{\n setLoading(false);\n }\n }, [\n setSession\n ]);\n const logout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n clearSession();\n }, [\n clearSession\n ]);\n const getAuthHeaders = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n if (!token) return {};\n return {\n Authorization: \"Bearer \".concat(token)\n };\n }, [\n token\n ]);\n const value = {\n user,\n token,\n loading,\n login,\n register,\n logout,\n getAuthHeaders\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AuthContext.Provider, {\n value: value,\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx\",\n lineNumber: 183,\n columnNumber: 10\n }, this);\n}\n_s(AuthProvider, \"FyBF3GfQ0aSoDuYjEKqpAbOwwL4=\");\n_c = AuthProvider;\nfunction useAuth() {\n _s1();\n const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AuthContext);\n if (!ctx) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return ctx;\n}\n_s1(useAuth, \"/dMy7t63NXD4eYACoT93CePwGrg=\");\nvar _c;\n$RefreshReg$(_c, \"AuthProvider\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbnRleHQvQXV0aENvbnRleHQudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBU2U7SUFHYks7QUFERixNQUFNQyxlQUNKRCxDQUFBQSx3Q0FBQUEsT0FBT0EsQ0FBQ0UsR0FBRyxDQUFDQyx3QkFBd0IsY0FBcENILG1EQUFBQSx3Q0FBd0M7QUFzQjFDLE1BQU1JLDRCQUFjVCxvREFBYUEsQ0FBK0JVO0FBRWhFLE1BQU1DLFlBQVk7QUFDbEIsTUFBTUMsV0FBVztBQUVWLFNBQVNDLGFBQWEsS0FBcUM7UUFBckMsRUFBRUMsUUFBUSxFQUEyQixHQUFyQzs7SUFDM0IsTUFBTSxDQUFDQyxNQUFNQyxRQUFRLEdBQUdaLCtDQUFRQSxDQUFXO0lBQzNDLE1BQU0sQ0FBQ2EsT0FBT0MsU0FBUyxHQUFHZCwrQ0FBUUEsQ0FBZ0I7SUFDbEQsTUFBTSxDQUFDZSxTQUFTQyxXQUFXLEdBQUdoQiwrQ0FBUUEsQ0FBQyxPQUFPLGdEQUFnRDtJQUU5Riw0QkFBNEI7SUFDNUJELGdEQUFTQSxDQUFDO1FBQ1IsSUFBSTtZQUNGLElBQUksS0FBNkIsRUFBRSxFQUFPO1lBRTFDLE1BQU1rQixjQUFjQyxPQUFPQyxZQUFZLENBQUNDLE9BQU8sQ0FBQ2I7WUFDaEQsTUFBTWMsYUFBYUgsT0FBT0MsWUFBWSxDQUFDQyxPQUFPLENBQUNaO1lBRS9DLElBQUlTLGVBQWVJLFlBQVk7Z0JBQzdCUCxTQUFTRztnQkFDVEwsUUFBUVUsS0FBS0MsS0FBSyxDQUFDRjtZQUNyQjtRQUNGLEVBQUUsVUFBTTtRQUNOLFNBQVM7UUFDWCxTQUFVO1lBQ1JMLFdBQVc7UUFDYjtJQUNGLEdBQUcsRUFBRTtJQUVMLE1BQU1RLGFBQWEzQixrREFBV0EsQ0FBQyxDQUFDNEIsVUFBa0JDO1FBQ2hEWixTQUFTVztRQUNUYixRQUFRYztRQUVSLElBQUksSUFBNkIsRUFBRTtZQUNqQ1IsT0FBT0MsWUFBWSxDQUFDUSxPQUFPLENBQUNwQixXQUFXa0I7WUFDdkNQLE9BQU9DLFlBQVksQ0FBQ1EsT0FBTyxDQUFDbkIsVUFBVWMsS0FBS00sU0FBUyxDQUFDRjtRQUN2RDtJQUNGLEdBQUcsRUFBRTtJQUVMLE1BQU1HLGVBQWVoQyxrREFBV0EsQ0FBQztRQUMvQmlCLFNBQVM7UUFDVEYsUUFBUTtRQUNSLElBQUksSUFBNkIsRUFBRTtZQUNqQ00sT0FBT0MsWUFBWSxDQUFDVyxVQUFVLENBQUN2QjtZQUMvQlcsT0FBT0MsWUFBWSxDQUFDVyxVQUFVLENBQUN0QjtRQUNqQztJQUNGLEdBQUcsRUFBRTtJQUVMLE1BQU11QixXQUFXbEMsa0RBQVdBLENBQzFCLE9BQU9tQztRQUNMaEIsV0FBVztRQUNYLElBQUk7WUFDRixNQUFNaUIsTUFBTSxNQUFNQyxNQUFNLEdBQWdCLE9BQWJoQyxjQUFhLHVCQUFxQjtnQkFDM0RpQyxRQUFRO2dCQUNSQyxTQUFTO29CQUNQLGdCQUFnQjtnQkFDbEI7Z0JBQ0FDLE1BQU1mLEtBQUtNLFNBQVMsQ0FBQztvQkFDbkJVLE9BQU9OLE9BQU9NLEtBQUs7b0JBQ25CQyxVQUFVUCxPQUFPTyxRQUFRO29CQUN6QkMsYUFBYVIsT0FBT1EsV0FBVztnQkFDakM7WUFDRjtZQUVBLElBQUksQ0FBQ1AsSUFBSVEsRUFBRSxFQUFFO2dCQUNYLE1BQU1DLE9BQU8sTUFBTVQsSUFBSVMsSUFBSTtnQkFDM0IsTUFBTSxJQUFJQyxNQUFNRCxRQUFRO1lBQzFCO1lBRUEsTUFBTUUsT0FLRixNQUFNWCxJQUFJWSxJQUFJO2dCQUlIRDtZQUZmcEIsV0FBV29CLEtBQUsvQixLQUFLLEVBQUU7Z0JBQ3JCeUIsT0FBT00sS0FBS04sS0FBSztnQkFDakJFLGFBQWFJLENBQUFBLG9CQUFBQSxLQUFLSixXQUFXLGNBQWhCSSwrQkFBQUEsb0JBQW9CO2dCQUNqQ0UsTUFBTUYsS0FBS0UsSUFBSTtZQUNqQjtRQUNGLFNBQVU7WUFDUjlCLFdBQVc7UUFDYjtJQUNGLEdBQ0E7UUFBQ1E7S0FBVztJQUdkLE1BQU11QixRQUFRbEQsa0RBQVdBLENBQ3ZCLE9BQU9tQztRQUNMaEIsV0FBVztRQUNYLElBQUk7WUFDRixNQUFNaUIsTUFBTSxNQUFNQyxNQUFNLEdBQWdCLE9BQWJoQyxjQUFhLG9CQUFrQjtnQkFDeERpQyxRQUFRO2dCQUNSQyxTQUFTO29CQUNQLGdCQUFnQjtnQkFDbEI7Z0JBQ0FDLE1BQU1mLEtBQUtNLFNBQVMsQ0FBQztvQkFDbkJVLE9BQU9OLE9BQU9NLEtBQUs7b0JBQ25CQyxVQUFVUCxPQUFPTyxRQUFRO2dCQUMzQjtZQUNGO1lBRUEsSUFBSSxDQUFDTixJQUFJUSxFQUFFLEVBQUU7Z0JBQ1gsTUFBTUMsT0FBTyxNQUFNVCxJQUFJUyxJQUFJO2dCQUMzQixNQUFNLElBQUlDLE1BQU1ELFFBQVE7WUFDMUI7WUFFQSxNQUFNRSxPQUtGLE1BQU1YLElBQUlZLElBQUk7Z0JBSUhEO1lBRmZwQixXQUFXb0IsS0FBSy9CLEtBQUssRUFBRTtnQkFDckJ5QixPQUFPTSxLQUFLTixLQUFLO2dCQUNqQkUsYUFBYUksQ0FBQUEsb0JBQUFBLEtBQUtKLFdBQVcsY0FBaEJJLCtCQUFBQSxvQkFBb0I7Z0JBQ2pDRSxNQUFNRixLQUFLRSxJQUFJO1lBQ2pCO1FBQ0YsU0FBVTtZQUNSOUIsV0FBVztRQUNiO0lBQ0YsR0FDQTtRQUFDUTtLQUFXO0lBR2QsTUFBTXdCLFNBQVNuRCxrREFBV0EsQ0FBQztRQUN6QmdDO0lBQ0YsR0FBRztRQUFDQTtLQUFhO0lBRWpCLE1BQU1vQixpQkFBaUJwRCxrREFBV0EsQ0FBQztRQUNqQyxJQUFJLENBQUNnQixPQUFPLE9BQU8sQ0FBQztRQUNwQixPQUFPO1lBQ0xxQyxlQUFlLFVBQWdCLE9BQU5yQztRQUMzQjtJQUNGLEdBQUc7UUFBQ0E7S0FBTTtJQUVWLE1BQU1zQyxRQUEwQjtRQUM5QnhDO1FBQ0FFO1FBQ0FFO1FBQ0FnQztRQUNBaEI7UUFDQWlCO1FBQ0FDO0lBQ0Y7SUFFQSxxQkFBTyw4REFBQzVDLFlBQVkrQyxRQUFRO1FBQUNELE9BQU9BO2tCQUFRekM7Ozs7OztBQUM5QztHQWhKZ0JEO0tBQUFBO0FBa0pULFNBQVM0Qzs7SUFDZCxNQUFNQyxNQUFNeEQsaURBQVVBLENBQUNPO0lBQ3ZCLElBQUksQ0FBQ2lELEtBQUs7UUFDUixNQUFNLElBQUlYLE1BQU07SUFDbEI7SUFDQSxPQUFPVztBQUNUO0lBTmdCRCIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9jb250ZXh0L0F1dGhDb250ZXh0LnRzeD9mZGZmIl0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQge1xuICBjcmVhdGVDb250ZXh0LFxuICB1c2VDYWxsYmFjayxcbiAgdXNlQ29udGV4dCxcbiAgdXNlRWZmZWN0LFxuICB1c2VTdGF0ZSxcbiAgUmVhY3ROb2RlLFxufSBmcm9tIFwicmVhY3RcIjtcblxuY29uc3QgQVBJX0JBU0VfVVJMID1cbiAgcHJvY2Vzcy5lbnYuTkVYVF9QVUJMSUNfQVBJX0JBU0VfVVJMID8/IFwiaHR0cDovL2xvY2FsaG9zdDo4MDgwXCI7XG5cbnR5cGUgQXV0aFVzZXIgPSB7XG4gIGVtYWlsOiBzdHJpbmc7XG4gIGRpc3BsYXlOYW1lPzogc3RyaW5nIHwgbnVsbDtcbiAgcm9sZTogc3RyaW5nO1xufSB8IG51bGw7XG5cbnR5cGUgQXV0aENvbnRleHRWYWx1ZSA9IHtcbiAgdXNlcjogQXV0aFVzZXI7XG4gIHRva2VuOiBzdHJpbmcgfCBudWxsOyBcbiAgbG9hZGluZzogYm9vbGVhbjsgLy8gY292ZXJzIGluaXRpYWwgaHlkcmF0ZSArIGFjdGl2ZSBhdXRoIHJlcXVlc3RzXG4gIGxvZ2luOiAocGFyYW1zOiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVnaXN0ZXI6IChwYXJhbXM6IHtcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gIH0pID0+IFByb21pc2U8dm9pZD47XG4gIGxvZ291dDogKCkgPT4gdm9pZDtcbiAgZ2V0QXV0aEhlYWRlcnM6ICgpID0+IEhlYWRlcnNJbml0O1xufTtcblxuY29uc3QgQXV0aENvbnRleHQgPSBjcmVhdGVDb250ZXh0PEF1dGhDb250ZXh0VmFsdWUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmNvbnN0IFRPS0VOX0tFWSA9IFwiYmFsbGlzdGljX2F1dGhfdG9rZW5cIjtcbmNvbnN0IFVTRVJfS0VZID0gXCJiYWxsaXN0aWNfYXV0aF91c2VyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBBdXRoUHJvdmlkZXIoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZTxBdXRoVXNlcj4obnVsbCk7XG4gIGNvbnN0IFt0b2tlbiwgc2V0VG9rZW5dID0gdXNlU3RhdGU8c3RyaW5nIHwgbnVsbD4obnVsbCk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlKHRydWUpOyAvLyBzdGFydCB0cnVlIHdoaWxlIHdlIGh5ZHJhdGUgKyByZXVzZSBmb3IgY2FsbHNcblxuICAvLyBoeWRyYXRlIGZyb20gbG9jYWxTdG9yYWdlXG4gIHVzZUVmZmVjdCgoKSA9PiB7XG4gICAgdHJ5IHtcbiAgICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG5cbiAgICAgIGNvbnN0IHN0b3JlZFRva2VuID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFRPS0VOX0tFWSk7XG4gICAgICBjb25zdCBzdG9yZWRVc2VyID0gd2luZG93LmxvY2FsU3RvcmFnZS5nZXRJdGVtKFVTRVJfS0VZKTtcblxuICAgICAgaWYgKHN0b3JlZFRva2VuICYmIHN0b3JlZFVzZXIpIHtcbiAgICAgICAgc2V0VG9rZW4oc3RvcmVkVG9rZW4pO1xuICAgICAgICBzZXRVc2VyKEpTT04ucGFyc2Uoc3RvcmVkVXNlcikpO1xuICAgICAgfVxuICAgIH0gY2F0Y2gge1xuICAgICAgLy8gaWdub3JlXG4gICAgfSBmaW5hbGx5IHtcbiAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IHNldFNlc3Npb24gPSB1c2VDYWxsYmFjaygobmV3VG9rZW46IHN0cmluZywgbmV3VXNlcjogQXV0aFVzZXIpID0+IHtcbiAgICBzZXRUb2tlbihuZXdUb2tlbik7XG4gICAgc2V0VXNlcihuZXdVc2VyKTtcblxuICAgIGlmICh0eXBlb2Ygd2luZG93ICE9PSBcInVuZGVmaW5lZFwiKSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oVE9LRU5fS0VZLCBuZXdUb2tlbik7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnNldEl0ZW0oVVNFUl9LRVksIEpTT04uc3RyaW5naWZ5KG5ld1VzZXIpKTtcbiAgICB9XG4gIH0sIFtdKTtcblxuICBjb25zdCBjbGVhclNlc3Npb24gPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VG9rZW4obnVsbCk7XG4gICAgc2V0VXNlcihudWxsKTtcbiAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIikge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFRPS0VOX0tFWSk7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVVNFUl9LRVkpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IHJlZ2lzdGVyID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBhcmFtczogeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nOyBkaXNwbGF5TmFtZT86IHN0cmluZyB9KSA9PiB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7QVBJX0JBU0VfVVJMfS9hcGkvYXV0aC9yZWdpc3RlcmAsIHtcbiAgICAgICAgICBtZXRob2Q6IFwiUE9TVFwiLFxuICAgICAgICAgIGhlYWRlcnM6IHtcbiAgICAgICAgICAgIFwiQ29udGVudC1UeXBlXCI6IFwiYXBwbGljYXRpb24vanNvblwiLFxuICAgICAgICAgIH0sXG4gICAgICAgICAgYm9keTogSlNPTi5zdHJpbmdpZnkoe1xuICAgICAgICAgICAgZW1haWw6IHBhcmFtcy5lbWFpbCxcbiAgICAgICAgICAgIHBhc3N3b3JkOiBwYXJhbXMucGFzc3dvcmQsXG4gICAgICAgICAgICBkaXNwbGF5TmFtZTogcGFyYW1zLmRpc3BsYXlOYW1lLFxuICAgICAgICAgIH0pLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpO1xuICAgICAgICAgIHRocm93IG5ldyBFcnJvcih0ZXh0IHx8IFwiRmFpbGVkIHRvIGNyZWF0ZSBhY2NvdW50XCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YToge1xuICAgICAgICAgIHRva2VuOiBzdHJpbmc7XG4gICAgICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgICAgICBkaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICAgICAgICByb2xlOiBzdHJpbmc7XG4gICAgICAgIH0gPSBhd2FpdCByZXMuanNvbigpO1xuXG4gICAgICAgIHNldFNlc3Npb24oZGF0YS50b2tlbiwge1xuICAgICAgICAgIGVtYWlsOiBkYXRhLmVtYWlsLFxuICAgICAgICAgIGRpc3BsYXlOYW1lOiBkYXRhLmRpc3BsYXlOYW1lID8/IG51bGwsXG4gICAgICAgICAgcm9sZTogZGF0YS5yb2xlLFxuICAgICAgICB9KTtcbiAgICAgIH0gZmluYWxseSB7XG4gICAgICAgIHNldExvYWRpbmcoZmFsc2UpO1xuICAgICAgfVxuICAgIH0sXG4gICAgW3NldFNlc3Npb25dLFxuICApO1xuXG4gIGNvbnN0IGxvZ2luID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHBhcmFtczogeyBlbWFpbDogc3RyaW5nOyBwYXNzd29yZDogc3RyaW5nIH0pID0+IHtcbiAgICAgIHNldExvYWRpbmcodHJ1ZSk7XG4gICAgICB0cnkge1xuICAgICAgICBjb25zdCByZXMgPSBhd2FpdCBmZXRjaChgJHtBUElfQkFTRV9VUkx9L2FwaS9hdXRoL2xvZ2luYCwge1xuICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgaGVhZGVyczoge1xuICAgICAgICAgICAgXCJDb250ZW50LVR5cGVcIjogXCJhcHBsaWNhdGlvbi9qc29uXCIsXG4gICAgICAgICAgfSxcbiAgICAgICAgICBib2R5OiBKU09OLnN0cmluZ2lmeSh7XG4gICAgICAgICAgICBlbWFpbDogcGFyYW1zLmVtYWlsLFxuICAgICAgICAgICAgcGFzc3dvcmQ6IHBhcmFtcy5wYXNzd29yZCxcbiAgICAgICAgICB9KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGV4dCB8fCBcIkZhaWxlZCB0byBsb2cgaW5cIik7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBkYXRhOiB7XG4gICAgICAgICAgdG9rZW46IHN0cmluZztcbiAgICAgICAgICBlbWFpbDogc3RyaW5nO1xuICAgICAgICAgIGRpc3BsYXlOYW1lPzogc3RyaW5nO1xuICAgICAgICAgIHJvbGU6IHN0cmluZztcbiAgICAgICAgfSA9IGF3YWl0IHJlcy5qc29uKCk7XG5cbiAgICAgICAgc2V0U2Vzc2lvbihkYXRhLnRva2VuLCB7XG4gICAgICAgICAgZW1haWw6IGRhdGEuZW1haWwsXG4gICAgICAgICAgZGlzcGxheU5hbWU6IGRhdGEuZGlzcGxheU5hbWUgPz8gbnVsbCxcbiAgICAgICAgICByb2xlOiBkYXRhLnJvbGUsXG4gICAgICAgIH0pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgc2V0TG9hZGluZyhmYWxzZSk7XG4gICAgICB9XG4gICAgfSxcbiAgICBbc2V0U2Vzc2lvbl0sXG4gICk7XG5cbiAgY29uc3QgbG9nb3V0ID0gdXNlQ2FsbGJhY2soKCkgPT4ge1xuICAgIGNsZWFyU2Vzc2lvbigpO1xuICB9LCBbY2xlYXJTZXNzaW9uXSk7XG5cbiAgY29uc3QgZ2V0QXV0aEhlYWRlcnMgPSB1c2VDYWxsYmFjaygoKTogSGVhZGVyc0luaXQgPT4ge1xuICAgIGlmICghdG9rZW4pIHJldHVybiB7fTtcbiAgICByZXR1cm4ge1xuICAgICAgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAsXG4gICAgfTtcbiAgfSwgW3Rva2VuXSk7XG5cbiAgY29uc3QgdmFsdWU6IEF1dGhDb250ZXh0VmFsdWUgPSB7XG4gICAgdXNlcixcbiAgICB0b2tlbixcbiAgICBsb2FkaW5nLFxuICAgIGxvZ2luLFxuICAgIHJlZ2lzdGVyLFxuICAgIGxvZ291dCxcbiAgICBnZXRBdXRoSGVhZGVycyxcbiAgfTtcblxuICByZXR1cm4gPEF1dGhDb250ZXh0LlByb3ZpZGVyIHZhbHVlPXt2YWx1ZX0+e2NoaWxkcmVufTwvQXV0aENvbnRleHQuUHJvdmlkZXI+O1xufVxuXG5leHBvcnQgZnVuY3Rpb24gdXNlQXV0aCgpOiBBdXRoQ29udGV4dFZhbHVlIHtcbiAgY29uc3QgY3R4ID0gdXNlQ29udGV4dChBdXRoQ29udGV4dCk7XG4gIGlmICghY3R4KSB7XG4gICAgdGhyb3cgbmV3IEVycm9yKFwidXNlQXV0aCBtdXN0IGJlIHVzZWQgd2l0aGluIGFuIEF1dGhQcm92aWRlclwiKTtcbiAgfVxuICByZXR1cm4gY3R4O1xufSJdLCJuYW1lcyI6WyJjcmVhdGVDb250ZXh0IiwidXNlQ2FsbGJhY2siLCJ1c2VDb250ZXh0IiwidXNlRWZmZWN0IiwidXNlU3RhdGUiLCJwcm9jZXNzIiwiQVBJX0JBU0VfVVJMIiwiZW52IiwiTkVYVF9QVUJMSUNfQVBJX0JBU0VfVVJMIiwiQXV0aENvbnRleHQiLCJ1bmRlZmluZWQiLCJUT0tFTl9LRVkiLCJVU0VSX0tFWSIsIkF1dGhQcm92aWRlciIsImNoaWxkcmVuIiwidXNlciIsInNldFVzZXIiLCJ0b2tlbiIsInNldFRva2VuIiwibG9hZGluZyIsInNldExvYWRpbmciLCJzdG9yZWRUb2tlbiIsIndpbmRvdyIsImxvY2FsU3RvcmFnZSIsImdldEl0ZW0iLCJzdG9yZWRVc2VyIiwiSlNPTiIsInBhcnNlIiwic2V0U2Vzc2lvbiIsIm5ld1Rva2VuIiwibmV3VXNlciIsInNldEl0ZW0iLCJzdHJpbmdpZnkiLCJjbGVhclNlc3Npb24iLCJyZW1vdmVJdGVtIiwicmVnaXN0ZXIiLCJwYXJhbXMiLCJyZXMiLCJmZXRjaCIsIm1ldGhvZCIsImhlYWRlcnMiLCJib2R5IiwiZW1haWwiLCJwYXNzd29yZCIsImRpc3BsYXlOYW1lIiwib2siLCJ0ZXh0IiwiRXJyb3IiLCJkYXRhIiwianNvbiIsInJvbGUiLCJsb2dpbiIsImxvZ291dCIsImdldEF1dGhIZWFkZXJzIiwiQXV0aG9yaXphdGlvbiIsInZhbHVlIiwiUHJvdmlkZXIiLCJ1c2VBdXRoIiwiY3R4Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./context/AuthContext.tsx\n")); +eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ AuthProvider: function() { return /* binding */ AuthProvider; },\n/* harmony export */ useAuth: function() { return /* binding */ useAuth; }\n/* harmony export */ });\n/* harmony import */ var react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react/jsx-dev-runtime */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/jsx-dev-runtime.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react */ \"(app-pages-browser)/./node_modules/next/dist/compiled/react/index.js\");\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_1__);\n/* provided dependency */ var process = __webpack_require__(/*! process */ \"(app-pages-browser)/./node_modules/next/dist/build/polyfills/process.js\");\n/* __next_internal_client_entry_do_not_use__ AuthProvider,useAuth auto */ \nvar _s = $RefreshSig$(), _s1 = $RefreshSig$();\n\nvar _process_env_NEXT_PUBLIC_API_BASE_URL;\nconst API_BASE_URL = (_process_env_NEXT_PUBLIC_API_BASE_URL = process.env.NEXT_PUBLIC_API_BASE_URL) !== null && _process_env_NEXT_PUBLIC_API_BASE_URL !== void 0 ? _process_env_NEXT_PUBLIC_API_BASE_URL : \"http://localhost:8080\";\nconst AuthContext = /*#__PURE__*/ (0,react__WEBPACK_IMPORTED_MODULE_1__.createContext)(undefined);\nconst TOKEN_KEY = \"ballistic_auth_token\";\nconst USER_KEY = \"ballistic_auth_user\";\nfunction AuthProvider(param) {\n let { children } = param;\n _s();\n const [token, setToken] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [user, setUser] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(null);\n const [loading, setLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n // Hydrate from localStorage on first load\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n if (false) {}\n const storedToken = window.localStorage.getItem(TOKEN_KEY);\n const storedUser = window.localStorage.getItem(USER_KEY);\n if (storedToken) {\n setToken(storedToken);\n }\n if (storedUser) {\n try {\n setUser(JSON.parse(storedUser));\n } catch (e) {\n // bad JSON? wipe it\n window.localStorage.removeItem(USER_KEY);\n }\n }\n setLoading(false);\n }, []);\n const persistAuth = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)((nextToken, nextUser)=>{\n if (false) {}\n if (nextToken) {\n window.localStorage.setItem(TOKEN_KEY, nextToken);\n } else {\n window.localStorage.removeItem(TOKEN_KEY);\n }\n if (nextUser) {\n window.localStorage.setItem(USER_KEY, JSON.stringify(nextUser));\n } else {\n window.localStorage.removeItem(USER_KEY);\n }\n }, []);\n const login = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async (param)=>{\n let { email, password } = param;\n setLoading(true);\n try {\n const res = await fetch(\"\".concat(API_BASE_URL, \"/auth/login\"), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n password\n })\n });\n if (!res.ok) {\n const text = await res.text().catch(()=>res.statusText);\n throw new Error(text || \"Login failed\");\n }\n const data = await res.json();\n var _data_token;\n // Adjust these to match your backend response shape\n const nextToken = (_data_token = data.token) !== null && _data_token !== void 0 ? _data_token : data.accessToken;\n var _data_email, _data_displayName, _data_role, _data_user;\n const nextUser = (_data_user = data.user) !== null && _data_user !== void 0 ? _data_user : {\n email: (_data_email = data.email) !== null && _data_email !== void 0 ? _data_email : email,\n displayName: (_data_displayName = data.displayName) !== null && _data_displayName !== void 0 ? _data_displayName : null,\n role: (_data_role = data.role) !== null && _data_role !== void 0 ? _data_role : \"USER\"\n };\n setToken(nextToken);\n setUser(nextUser);\n persistAuth(nextToken, nextUser);\n } finally{\n setLoading(false);\n }\n }, [\n persistAuth\n ]);\n const register = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(async (param)=>{\n let { email, password, displayName } = param;\n setLoading(true);\n try {\n const res = await fetch(\"\".concat(API_BASE_URL, \"/auth/register\"), {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\"\n },\n body: JSON.stringify({\n email,\n password,\n displayName\n })\n });\n if (!res.ok) {\n const text = await res.text().catch(()=>res.statusText);\n throw new Error(text || \"Registration failed\");\n }\n const data = await res.json();\n var _data_token;\n const nextToken = (_data_token = data.token) !== null && _data_token !== void 0 ? _data_token : data.accessToken;\n var _data_email, _data_displayName, _ref, _data_role, _data_user;\n const nextUser = (_data_user = data.user) !== null && _data_user !== void 0 ? _data_user : {\n email: (_data_email = data.email) !== null && _data_email !== void 0 ? _data_email : email,\n displayName: (_ref = (_data_displayName = data.displayName) !== null && _data_displayName !== void 0 ? _data_displayName : displayName) !== null && _ref !== void 0 ? _ref : null,\n role: (_data_role = data.role) !== null && _data_role !== void 0 ? _data_role : \"USER\"\n };\n setToken(nextToken);\n setUser(nextUser);\n persistAuth(nextToken, nextUser);\n } finally{\n setLoading(false);\n }\n }, [\n persistAuth\n ]);\n const logout = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n setToken(null);\n setUser(null);\n persistAuth(null, null);\n }, [\n persistAuth\n ]);\n const getAuthHeaders = (0,react__WEBPACK_IMPORTED_MODULE_1__.useCallback)(()=>{\n return token ? {\n Authorization: \"Bearer \".concat(token)\n } : {};\n }, [\n token\n ]);\n const value = {\n user,\n token,\n loading,\n login,\n register,\n logout,\n getAuthHeaders\n };\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(AuthContext.Provider, {\n value: value,\n children: children\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/context/AuthContext.tsx\",\n lineNumber: 185,\n columnNumber: 10\n }, this);\n}\n_s(AuthProvider, \"YvzuORZ3CEvgPzp1OY8vf9+JLQg=\");\n_c = AuthProvider;\n// 🔑 This is what your useApi hook imports\nfunction useAuth() {\n _s1();\n const ctx = (0,react__WEBPACK_IMPORTED_MODULE_1__.useContext)(AuthContext);\n if (!ctx) {\n throw new Error(\"useAuth must be used within an AuthProvider\");\n }\n return ctx;\n}\n_s1(useAuth, \"/dMy7t63NXD4eYACoT93CePwGrg=\");\nvar _c;\n$RefreshReg$(_c, \"AuthProvider\");\n\n\n;\n // Wrapped in an IIFE to avoid polluting the global scope\n ;\n (function () {\n var _a, _b;\n // Legacy CSS implementations will `eval` browser code in a Node.js context\n // to extract CSS. For backwards compatibility, we need to check we're in a\n // browser context before continuing.\n if (typeof self !== 'undefined' &&\n // AMP / No-JS mode does not inject these helpers:\n '$RefreshHelpers$' in self) {\n // @ts-ignore __webpack_module__ is global\n var currentExports = module.exports;\n // @ts-ignore __webpack_module__ is global\n var prevSignature = (_b = (_a = module.hot.data) === null || _a === void 0 ? void 0 : _a.prevSignature) !== null && _b !== void 0 ? _b : null;\n // This cannot happen in MainTemplate because the exports mismatch between\n // templating and execution.\n self.$RefreshHelpers$.registerExportsForReactRefresh(currentExports, module.id);\n // A module can be accepted automatically based on its exports, e.g. when\n // it is a Refresh Boundary.\n if (self.$RefreshHelpers$.isReactRefreshBoundary(currentExports)) {\n // Save the previous exports signature on update so we can compare the boundary\n // signatures. We avoid saving exports themselves since it causes memory leaks (https://github.com/vercel/next.js/pull/53797)\n module.hot.dispose(function (data) {\n data.prevSignature =\n self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports);\n });\n // Unconditionally accept an update to this module, we'll check if it's\n // still a Refresh Boundary later.\n // @ts-ignore importMeta is replaced in the loader\n module.hot.accept();\n // This field is set when the previous version of this module was a\n // Refresh Boundary, letting us know we need to check for invalidation or\n // enqueue an update.\n if (prevSignature !== null) {\n // A boundary can become ineligible if its exports are incompatible\n // with the previous exports.\n //\n // For example, if you add/remove/change exports, we'll want to\n // re-execute the importing modules, and force those components to\n // re-render. Similarly, if you convert a class component to a\n // function, we want to invalidate the boundary.\n if (self.$RefreshHelpers$.shouldInvalidateReactRefreshBoundary(prevSignature, self.$RefreshHelpers$.getRefreshBoundarySignature(currentExports))) {\n module.hot.invalidate();\n }\n else {\n self.$RefreshHelpers$.scheduleUpdate();\n }\n }\n }\n else {\n // Since we just executed the code for the module, it's possible that the\n // new exports made it ineligible for being a boundary.\n // We only care about the case when we were _previously_ a boundary,\n // because we already accepted this update (accidental side effect).\n var isNoLongerABoundary = prevSignature !== null;\n if (isNoLongerABoundary) {\n module.hot.invalidate();\n }\n }\n }\n })();\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbnRleHQvQXV0aENvbnRleHQudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0FBU2U7SUFHYks7QUFERixNQUFNQyxlQUNKRCxDQUFBQSx3Q0FBQUEsT0FBT0EsQ0FBQ0UsR0FBRyxDQUFDQyx3QkFBd0IsY0FBcENILG1EQUFBQSx3Q0FBd0M7QUFzQjFDLE1BQU1JLDRCQUFjVCxvREFBYUEsQ0FBK0JVO0FBRWhFLE1BQU1DLFlBQVk7QUFDbEIsTUFBTUMsV0FBVztBQUVWLFNBQVNDLGFBQWEsS0FBcUM7UUFBckMsRUFBRUMsUUFBUSxFQUEyQixHQUFyQzs7SUFDM0IsTUFBTSxDQUFDQyxPQUFPQyxTQUFTLEdBQUdaLCtDQUFRQSxDQUFnQjtJQUNsRCxNQUFNLENBQUNhLE1BQU1DLFFBQVEsR0FBR2QsK0NBQVFBLENBQVc7SUFDM0MsTUFBTSxDQUFDZSxTQUFTQyxXQUFXLEdBQUdoQiwrQ0FBUUEsQ0FBVTtJQUVoRCwwQ0FBMEM7SUFDMUNELGdEQUFTQSxDQUFDO1FBQ1IsSUFBSSxLQUE2QixFQUFFLEVBQU87UUFFMUMsTUFBTWtCLGNBQWNDLE9BQU9DLFlBQVksQ0FBQ0MsT0FBTyxDQUFDYjtRQUNoRCxNQUFNYyxhQUFhSCxPQUFPQyxZQUFZLENBQUNDLE9BQU8sQ0FBQ1o7UUFFL0MsSUFBSVMsYUFBYTtZQUNmTCxTQUFTSztRQUNYO1FBRUEsSUFBSUksWUFBWTtZQUNkLElBQUk7Z0JBQ0ZQLFFBQVFRLEtBQUtDLEtBQUssQ0FBQ0Y7WUFDckIsRUFBRSxVQUFNO2dCQUNOLG9CQUFvQjtnQkFDcEJILE9BQU9DLFlBQVksQ0FBQ0ssVUFBVSxDQUFDaEI7WUFDakM7UUFDRjtRQUVBUSxXQUFXO0lBQ2IsR0FBRyxFQUFFO0lBRUwsTUFBTVMsY0FBYzVCLGtEQUFXQSxDQUFDLENBQUM2QixXQUEwQkM7UUFDekQsSUFBSSxLQUE2QixFQUFFLEVBQU87UUFFMUMsSUFBSUQsV0FBVztZQUNiUixPQUFPQyxZQUFZLENBQUNTLE9BQU8sQ0FBQ3JCLFdBQVdtQjtRQUN6QyxPQUFPO1lBQ0xSLE9BQU9DLFlBQVksQ0FBQ0ssVUFBVSxDQUFDakI7UUFDakM7UUFFQSxJQUFJb0IsVUFBVTtZQUNaVCxPQUFPQyxZQUFZLENBQUNTLE9BQU8sQ0FBQ3BCLFVBQVVjLEtBQUtPLFNBQVMsQ0FBQ0Y7UUFDdkQsT0FBTztZQUNMVCxPQUFPQyxZQUFZLENBQUNLLFVBQVUsQ0FBQ2hCO1FBQ2pDO0lBQ0YsR0FBRyxFQUFFO0lBRUwsTUFBTXNCLFFBQVFqQyxrREFBV0EsQ0FDdkI7WUFBTyxFQUFFa0MsS0FBSyxFQUFFQyxRQUFRLEVBQXVDO1FBQzdEaEIsV0FBVztRQUNYLElBQUk7WUFDRixNQUFNaUIsTUFBTSxNQUFNQyxNQUFNLEdBQWdCLE9BQWJoQyxjQUFhLGdCQUFjO2dCQUNwRGlDLFFBQVE7Z0JBQ1JDLFNBQVM7b0JBQUUsZ0JBQWdCO2dCQUFtQjtnQkFDOUNDLE1BQU1mLEtBQUtPLFNBQVMsQ0FBQztvQkFBRUU7b0JBQU9DO2dCQUFTO1lBQ3pDO1lBRUEsSUFBSSxDQUFDQyxJQUFJSyxFQUFFLEVBQUU7Z0JBQ1gsTUFBTUMsT0FBTyxNQUFNTixJQUFJTSxJQUFJLEdBQUdDLEtBQUssQ0FBQyxJQUFNUCxJQUFJUSxVQUFVO2dCQUN4RCxNQUFNLElBQUlDLE1BQU1ILFFBQVE7WUFDMUI7WUFFQSxNQUFNSSxPQUFPLE1BQU1WLElBQUlXLElBQUk7Z0JBR0REO1lBRDFCLG9EQUFvRDtZQUNwRCxNQUFNakIsWUFBb0JpQixDQUFBQSxjQUFBQSxLQUFLaEMsS0FBSyxjQUFWZ0MseUJBQUFBLGNBQWNBLEtBQUtFLFdBQVc7Z0JBSTdDRixhQUNNQSxtQkFDUEEsWUFKUkE7WUFERixNQUFNaEIsV0FDSmdCLENBQUFBLGFBQUFBLEtBQUs5QixJQUFJLGNBQVQ4Qix3QkFBQUEsYUFDQztnQkFDQ1osT0FBT1ksQ0FBQUEsY0FBQUEsS0FBS1osS0FBSyxjQUFWWSx5QkFBQUEsY0FBY1o7Z0JBQ3JCZSxhQUFhSCxDQUFBQSxvQkFBQUEsS0FBS0csV0FBVyxjQUFoQkgsK0JBQUFBLG9CQUFvQjtnQkFDakNJLE1BQU1KLENBQUFBLGFBQUFBLEtBQUtJLElBQUksY0FBVEosd0JBQUFBLGFBQWE7WUFDckI7WUFFRi9CLFNBQVNjO1lBQ1RaLFFBQVFhO1lBQ1JGLFlBQVlDLFdBQVdDO1FBQ3pCLFNBQVU7WUFDUlgsV0FBVztRQUNiO0lBQ0YsR0FDQTtRQUFDUztLQUFZO0lBR2YsTUFBTXVCLFdBQVduRCxrREFBV0EsQ0FDMUI7WUFBTyxFQUNMa0MsS0FBSyxFQUNMQyxRQUFRLEVBQ1JjLFdBQVcsRUFLWjtRQUNDOUIsV0FBVztRQUNYLElBQUk7WUFDRixNQUFNaUIsTUFBTSxNQUFNQyxNQUFNLEdBQWdCLE9BQWJoQyxjQUFhLG1CQUFpQjtnQkFDdkRpQyxRQUFRO2dCQUNSQyxTQUFTO29CQUFFLGdCQUFnQjtnQkFBbUI7Z0JBQzlDQyxNQUFNZixLQUFLTyxTQUFTLENBQUM7b0JBQUVFO29CQUFPQztvQkFBVWM7Z0JBQVk7WUFDdEQ7WUFFQSxJQUFJLENBQUNiLElBQUlLLEVBQUUsRUFBRTtnQkFDWCxNQUFNQyxPQUFPLE1BQU1OLElBQUlNLElBQUksR0FBR0MsS0FBSyxDQUFDLElBQU1QLElBQUlRLFVBQVU7Z0JBQ3hELE1BQU0sSUFBSUMsTUFBTUgsUUFBUTtZQUMxQjtZQUVBLE1BQU1JLE9BQU8sTUFBTVYsSUFBSVcsSUFBSTtnQkFFREQ7WUFBMUIsTUFBTWpCLFlBQW9CaUIsQ0FBQUEsY0FBQUEsS0FBS2hDLEtBQUssY0FBVmdDLHlCQUFBQSxjQUFjQSxLQUFLRSxXQUFXO2dCQUk3Q0YsYUFDTUEsbUJBQUFBLE1BQ1BBLFlBSlJBO1lBREYsTUFBTWhCLFdBQ0pnQixDQUFBQSxhQUFBQSxLQUFLOUIsSUFBSSxjQUFUOEIsd0JBQUFBLGFBQ0M7Z0JBQ0NaLE9BQU9ZLENBQUFBLGNBQUFBLEtBQUtaLEtBQUssY0FBVlkseUJBQUFBLGNBQWNaO2dCQUNyQmUsYUFBYUgsQ0FBQUEsT0FBQUEsQ0FBQUEsb0JBQUFBLEtBQUtHLFdBQVcsY0FBaEJILCtCQUFBQSxvQkFBb0JHLHlCQUFwQkgsa0JBQUFBLE9BQW1DO2dCQUNoREksTUFBTUosQ0FBQUEsYUFBQUEsS0FBS0ksSUFBSSxjQUFUSix3QkFBQUEsYUFBYTtZQUNyQjtZQUVGL0IsU0FBU2M7WUFDVFosUUFBUWE7WUFDUkYsWUFBWUMsV0FBV0M7UUFDekIsU0FBVTtZQUNSWCxXQUFXO1FBQ2I7SUFDRixHQUNBO1FBQUNTO0tBQVk7SUFHZixNQUFNd0IsU0FBU3BELGtEQUFXQSxDQUFDO1FBQ3pCZSxTQUFTO1FBQ1RFLFFBQVE7UUFDUlcsWUFBWSxNQUFNO0lBQ3BCLEdBQUc7UUFBQ0E7S0FBWTtJQUVoQixNQUFNeUIsaUJBQWlCckQsa0RBQVdBLENBQUM7UUFDakMsT0FBT2MsUUFBUTtZQUFFd0MsZUFBZSxVQUFnQixPQUFOeEM7UUFBUSxJQUFJLENBQUM7SUFDekQsR0FBRztRQUFDQTtLQUFNO0lBRVYsTUFBTXlDLFFBQTBCO1FBQzlCdkM7UUFDQUY7UUFDQUk7UUFDQWU7UUFDQWtCO1FBQ0FDO1FBQ0FDO0lBQ0Y7SUFFQSxxQkFBTyw4REFBQzdDLFlBQVlnRCxRQUFRO1FBQUNELE9BQU9BO2tCQUFRMUM7Ozs7OztBQUM5QztHQWxKZ0JEO0tBQUFBO0FBb0poQiwyQ0FBMkM7QUFDcEMsU0FBUzZDOztJQUNkLE1BQU1DLE1BQU16RCxpREFBVUEsQ0FBQ087SUFDdkIsSUFBSSxDQUFDa0QsS0FBSztRQUNSLE1BQU0sSUFBSWIsTUFBTTtJQUNsQjtJQUNBLE9BQU9hO0FBQ1Q7SUFOZ0JEIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL2NvbnRleHQvQXV0aENvbnRleHQudHN4P2ZkZmYiXSwic291cmNlc0NvbnRlbnQiOlsiXCJ1c2UgY2xpZW50XCI7XG5cbmltcG9ydCB7XG4gIGNyZWF0ZUNvbnRleHQsXG4gIHVzZUNhbGxiYWNrLFxuICB1c2VDb250ZXh0LFxuICB1c2VFZmZlY3QsXG4gIHVzZVN0YXRlLFxuICBSZWFjdE5vZGUsXG59IGZyb20gXCJyZWFjdFwiO1xuXG5jb25zdCBBUElfQkFTRV9VUkwgPVxuICBwcm9jZXNzLmVudi5ORVhUX1BVQkxJQ19BUElfQkFTRV9VUkwgPz8gXCJodHRwOi8vbG9jYWxob3N0OjgwODBcIjtcblxudHlwZSBBdXRoVXNlciA9IHtcbiAgZW1haWw6IHN0cmluZztcbiAgZGlzcGxheU5hbWU/OiBzdHJpbmcgfCBudWxsO1xuICByb2xlOiBzdHJpbmc7XG59IHwgbnVsbDtcblxudHlwZSBBdXRoQ29udGV4dFZhbHVlID0ge1xuICB1c2VyOiBBdXRoVXNlcjtcbiAgdG9rZW46IHN0cmluZyB8IG51bGw7XG4gIGxvYWRpbmc6IGJvb2xlYW47XG4gIGxvZ2luOiAocGFyYW1zOiB7IGVtYWlsOiBzdHJpbmc7IHBhc3N3b3JkOiBzdHJpbmcgfSkgPT4gUHJvbWlzZTx2b2lkPjtcbiAgcmVnaXN0ZXI6IChwYXJhbXM6IHtcbiAgICBlbWFpbDogc3RyaW5nO1xuICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgZGlzcGxheU5hbWU/OiBzdHJpbmc7XG4gIH0pID0+IFByb21pc2U8dm9pZD47XG4gIGxvZ291dDogKCkgPT4gdm9pZDtcbiAgZ2V0QXV0aEhlYWRlcnM6ICgpID0+IEhlYWRlcnNJbml0O1xufTtcblxuY29uc3QgQXV0aENvbnRleHQgPSBjcmVhdGVDb250ZXh0PEF1dGhDb250ZXh0VmFsdWUgfCB1bmRlZmluZWQ+KHVuZGVmaW5lZCk7XG5cbmNvbnN0IFRPS0VOX0tFWSA9IFwiYmFsbGlzdGljX2F1dGhfdG9rZW5cIjtcbmNvbnN0IFVTRVJfS0VZID0gXCJiYWxsaXN0aWNfYXV0aF91c2VyXCI7XG5cbmV4cG9ydCBmdW5jdGlvbiBBdXRoUHJvdmlkZXIoeyBjaGlsZHJlbiB9OiB7IGNoaWxkcmVuOiBSZWFjdE5vZGUgfSkge1xuICBjb25zdCBbdG9rZW4sIHNldFRva2VuXSA9IHVzZVN0YXRlPHN0cmluZyB8IG51bGw+KG51bGwpO1xuICBjb25zdCBbdXNlciwgc2V0VXNlcl0gPSB1c2VTdGF0ZTxBdXRoVXNlcj4obnVsbCk7XG4gIGNvbnN0IFtsb2FkaW5nLCBzZXRMb2FkaW5nXSA9IHVzZVN0YXRlPGJvb2xlYW4+KHRydWUpO1xuXG4gIC8vIEh5ZHJhdGUgZnJvbSBsb2NhbFN0b3JhZ2Ugb24gZmlyc3QgbG9hZFxuICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgIGlmICh0eXBlb2Ygd2luZG93ID09PSBcInVuZGVmaW5lZFwiKSByZXR1cm47XG5cbiAgICBjb25zdCBzdG9yZWRUb2tlbiA9IHdpbmRvdy5sb2NhbFN0b3JhZ2UuZ2V0SXRlbShUT0tFTl9LRVkpO1xuICAgIGNvbnN0IHN0b3JlZFVzZXIgPSB3aW5kb3cubG9jYWxTdG9yYWdlLmdldEl0ZW0oVVNFUl9LRVkpO1xuXG4gICAgaWYgKHN0b3JlZFRva2VuKSB7XG4gICAgICBzZXRUb2tlbihzdG9yZWRUb2tlbik7XG4gICAgfVxuXG4gICAgaWYgKHN0b3JlZFVzZXIpIHtcbiAgICAgIHRyeSB7XG4gICAgICAgIHNldFVzZXIoSlNPTi5wYXJzZShzdG9yZWRVc2VyKSk7XG4gICAgICB9IGNhdGNoIHtcbiAgICAgICAgLy8gYmFkIEpTT04/IHdpcGUgaXRcbiAgICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5yZW1vdmVJdGVtKFVTRVJfS0VZKTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgfSwgW10pO1xuXG4gIGNvbnN0IHBlcnNpc3RBdXRoID0gdXNlQ2FsbGJhY2soKG5leHRUb2tlbjogc3RyaW5nIHwgbnVsbCwgbmV4dFVzZXI6IEF1dGhVc2VyKSA9PiB7XG4gICAgaWYgKHR5cGVvZiB3aW5kb3cgPT09IFwidW5kZWZpbmVkXCIpIHJldHVybjtcblxuICAgIGlmIChuZXh0VG9rZW4pIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2Uuc2V0SXRlbShUT0tFTl9LRVksIG5leHRUb2tlbik7XG4gICAgfSBlbHNlIHtcbiAgICAgIHdpbmRvdy5sb2NhbFN0b3JhZ2UucmVtb3ZlSXRlbShUT0tFTl9LRVkpO1xuICAgIH1cblxuICAgIGlmIChuZXh0VXNlcikge1xuICAgICAgd2luZG93LmxvY2FsU3RvcmFnZS5zZXRJdGVtKFVTRVJfS0VZLCBKU09OLnN0cmluZ2lmeShuZXh0VXNlcikpO1xuICAgIH0gZWxzZSB7XG4gICAgICB3aW5kb3cubG9jYWxTdG9yYWdlLnJlbW92ZUl0ZW0oVVNFUl9LRVkpO1xuICAgIH1cbiAgfSwgW10pO1xuXG4gIGNvbnN0IGxvZ2luID0gdXNlQ2FsbGJhY2soXG4gICAgYXN5bmMgKHsgZW1haWwsIHBhc3N3b3JkIH06IHsgZW1haWw6IHN0cmluZzsgcGFzc3dvcmQ6IHN0cmluZyB9KSA9PiB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7QVBJX0JBU0VfVVJMfS9hdXRoL2xvZ2luYCwge1xuICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZW1haWwsIHBhc3N3b3JkIH0pLFxuICAgICAgICB9KTtcblxuICAgICAgICBpZiAoIXJlcy5vaykge1xuICAgICAgICAgIGNvbnN0IHRleHQgPSBhd2FpdCByZXMudGV4dCgpLmNhdGNoKCgpID0+IHJlcy5zdGF0dXNUZXh0KTtcbiAgICAgICAgICB0aHJvdyBuZXcgRXJyb3IodGV4dCB8fCBcIkxvZ2luIGZhaWxlZFwiKTtcbiAgICAgICAgfVxuXG4gICAgICAgIGNvbnN0IGRhdGEgPSBhd2FpdCByZXMuanNvbigpO1xuXG4gICAgICAgIC8vIEFkanVzdCB0aGVzZSB0byBtYXRjaCB5b3VyIGJhY2tlbmQgcmVzcG9uc2Ugc2hhcGVcbiAgICAgICAgY29uc3QgbmV4dFRva2VuOiBzdHJpbmcgPSBkYXRhLnRva2VuID8/IGRhdGEuYWNjZXNzVG9rZW47XG4gICAgICAgIGNvbnN0IG5leHRVc2VyOiBBdXRoVXNlciA9XG4gICAgICAgICAgZGF0YS51c2VyID8/XG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIGVtYWlsOiBkYXRhLmVtYWlsID8/IGVtYWlsLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGRhdGEuZGlzcGxheU5hbWUgPz8gbnVsbCxcbiAgICAgICAgICAgIHJvbGU6IGRhdGEucm9sZSA/PyBcIlVTRVJcIixcbiAgICAgICAgICB9IGFzIEF1dGhVc2VyKTtcblxuICAgICAgICBzZXRUb2tlbihuZXh0VG9rZW4pO1xuICAgICAgICBzZXRVc2VyKG5leHRVc2VyKTtcbiAgICAgICAgcGVyc2lzdEF1dGgobmV4dFRva2VuLCBuZXh0VXNlcik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwZXJzaXN0QXV0aF1cbiAgKTtcblxuICBjb25zdCByZWdpc3RlciA9IHVzZUNhbGxiYWNrKFxuICAgIGFzeW5jICh7XG4gICAgICBlbWFpbCxcbiAgICAgIHBhc3N3b3JkLFxuICAgICAgZGlzcGxheU5hbWUsXG4gICAgfToge1xuICAgICAgZW1haWw6IHN0cmluZztcbiAgICAgIHBhc3N3b3JkOiBzdHJpbmc7XG4gICAgICBkaXNwbGF5TmFtZT86IHN0cmluZztcbiAgICB9KSA9PiB7XG4gICAgICBzZXRMb2FkaW5nKHRydWUpO1xuICAgICAgdHJ5IHtcbiAgICAgICAgY29uc3QgcmVzID0gYXdhaXQgZmV0Y2goYCR7QVBJX0JBU0VfVVJMfS9hdXRoL3JlZ2lzdGVyYCwge1xuICAgICAgICAgIG1ldGhvZDogXCJQT1NUXCIsXG4gICAgICAgICAgaGVhZGVyczogeyBcIkNvbnRlbnQtVHlwZVwiOiBcImFwcGxpY2F0aW9uL2pzb25cIiB9LFxuICAgICAgICAgIGJvZHk6IEpTT04uc3RyaW5naWZ5KHsgZW1haWwsIHBhc3N3b3JkLCBkaXNwbGF5TmFtZSB9KSxcbiAgICAgICAgfSk7XG5cbiAgICAgICAgaWYgKCFyZXMub2spIHtcbiAgICAgICAgICBjb25zdCB0ZXh0ID0gYXdhaXQgcmVzLnRleHQoKS5jYXRjaCgoKSA9PiByZXMuc3RhdHVzVGV4dCk7XG4gICAgICAgICAgdGhyb3cgbmV3IEVycm9yKHRleHQgfHwgXCJSZWdpc3RyYXRpb24gZmFpbGVkXCIpO1xuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgZGF0YSA9IGF3YWl0IHJlcy5qc29uKCk7XG5cbiAgICAgICAgY29uc3QgbmV4dFRva2VuOiBzdHJpbmcgPSBkYXRhLnRva2VuID8/IGRhdGEuYWNjZXNzVG9rZW47XG4gICAgICAgIGNvbnN0IG5leHRVc2VyOiBBdXRoVXNlciA9XG4gICAgICAgICAgZGF0YS51c2VyID8/XG4gICAgICAgICAgKHtcbiAgICAgICAgICAgIGVtYWlsOiBkYXRhLmVtYWlsID8/IGVtYWlsLFxuICAgICAgICAgICAgZGlzcGxheU5hbWU6IGRhdGEuZGlzcGxheU5hbWUgPz8gZGlzcGxheU5hbWUgPz8gbnVsbCxcbiAgICAgICAgICAgIHJvbGU6IGRhdGEucm9sZSA/PyBcIlVTRVJcIixcbiAgICAgICAgICB9IGFzIEF1dGhVc2VyKTtcblxuICAgICAgICBzZXRUb2tlbihuZXh0VG9rZW4pO1xuICAgICAgICBzZXRVc2VyKG5leHRVc2VyKTtcbiAgICAgICAgcGVyc2lzdEF1dGgobmV4dFRva2VuLCBuZXh0VXNlcik7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBzZXRMb2FkaW5nKGZhbHNlKTtcbiAgICAgIH1cbiAgICB9LFxuICAgIFtwZXJzaXN0QXV0aF1cbiAgKTtcblxuICBjb25zdCBsb2dvdXQgPSB1c2VDYWxsYmFjaygoKSA9PiB7XG4gICAgc2V0VG9rZW4obnVsbCk7XG4gICAgc2V0VXNlcihudWxsKTtcbiAgICBwZXJzaXN0QXV0aChudWxsLCBudWxsKTtcbiAgfSwgW3BlcnNpc3RBdXRoXSk7XG5cbiAgY29uc3QgZ2V0QXV0aEhlYWRlcnMgPSB1c2VDYWxsYmFjaygoKTogSGVhZGVyc0luaXQgPT4ge1xuICAgIHJldHVybiB0b2tlbiA/IHsgQXV0aG9yaXphdGlvbjogYEJlYXJlciAke3Rva2VufWAgfSA6IHt9O1xuICB9LCBbdG9rZW5dKTtcblxuICBjb25zdCB2YWx1ZTogQXV0aENvbnRleHRWYWx1ZSA9IHtcbiAgICB1c2VyLFxuICAgIHRva2VuLFxuICAgIGxvYWRpbmcsXG4gICAgbG9naW4sXG4gICAgcmVnaXN0ZXIsXG4gICAgbG9nb3V0LFxuICAgIGdldEF1dGhIZWFkZXJzLFxuICB9O1xuXG4gIHJldHVybiA8QXV0aENvbnRleHQuUHJvdmlkZXIgdmFsdWU9e3ZhbHVlfT57Y2hpbGRyZW59PC9BdXRoQ29udGV4dC5Qcm92aWRlcj47XG59XG5cbi8vIPCflJEgVGhpcyBpcyB3aGF0IHlvdXIgdXNlQXBpIGhvb2sgaW1wb3J0c1xuZXhwb3J0IGZ1bmN0aW9uIHVzZUF1dGgoKTogQXV0aENvbnRleHRWYWx1ZSB7XG4gIGNvbnN0IGN0eCA9IHVzZUNvbnRleHQoQXV0aENvbnRleHQpO1xuICBpZiAoIWN0eCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcInVzZUF1dGggbXVzdCBiZSB1c2VkIHdpdGhpbiBhbiBBdXRoUHJvdmlkZXJcIik7XG4gIH1cbiAgcmV0dXJuIGN0eDtcbn0iXSwibmFtZXMiOlsiY3JlYXRlQ29udGV4dCIsInVzZUNhbGxiYWNrIiwidXNlQ29udGV4dCIsInVzZUVmZmVjdCIsInVzZVN0YXRlIiwicHJvY2VzcyIsIkFQSV9CQVNFX1VSTCIsImVudiIsIk5FWFRfUFVCTElDX0FQSV9CQVNFX1VSTCIsIkF1dGhDb250ZXh0IiwidW5kZWZpbmVkIiwiVE9LRU5fS0VZIiwiVVNFUl9LRVkiLCJBdXRoUHJvdmlkZXIiLCJjaGlsZHJlbiIsInRva2VuIiwic2V0VG9rZW4iLCJ1c2VyIiwic2V0VXNlciIsImxvYWRpbmciLCJzZXRMb2FkaW5nIiwic3RvcmVkVG9rZW4iLCJ3aW5kb3ciLCJsb2NhbFN0b3JhZ2UiLCJnZXRJdGVtIiwic3RvcmVkVXNlciIsIkpTT04iLCJwYXJzZSIsInJlbW92ZUl0ZW0iLCJwZXJzaXN0QXV0aCIsIm5leHRUb2tlbiIsIm5leHRVc2VyIiwic2V0SXRlbSIsInN0cmluZ2lmeSIsImxvZ2luIiwiZW1haWwiLCJwYXNzd29yZCIsInJlcyIsImZldGNoIiwibWV0aG9kIiwiaGVhZGVycyIsImJvZHkiLCJvayIsInRleHQiLCJjYXRjaCIsInN0YXR1c1RleHQiLCJFcnJvciIsImRhdGEiLCJqc29uIiwiYWNjZXNzVG9rZW4iLCJkaXNwbGF5TmFtZSIsInJvbGUiLCJyZWdpc3RlciIsImxvZ291dCIsImdldEF1dGhIZWFkZXJzIiwiQXV0aG9yaXphdGlvbiIsInZhbHVlIiwiUHJvdmlkZXIiLCJ1c2VBdXRoIiwiY3R4Il0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./context/AuthContext.tsx\n")); /***/ }), diff --git a/.next/static/chunks/webpack.js b/.next/static/chunks/webpack.js index 4752178..fb2611d 100644 --- a/.next/static/chunks/webpack.js +++ b/.next/static/chunks/webpack.js @@ -192,7 +192,7 @@ /******/ /******/ /* webpack/runtime/getFullHash */ /******/ !function() { -/******/ __webpack_require__.h = function() { return "949aaca34b45e9ed"; } +/******/ __webpack_require__.h = function() { return "a0aa921b182f0e3a"; } /******/ }(); /******/ /******/ /* webpack/runtime/global */ diff --git a/.next/static/css/app/layout.css b/.next/static/css/app/layout.css index 54affaf..e4ed59c 100644 --- a/.next/static/css/app/layout.css +++ b/.next/static/css/app/layout.css @@ -605,9 +605,6 @@ video { .hidden { display: none; } -.h-3 { - height: 0.75rem; -} .h-32 { height: 8rem; } @@ -626,8 +623,8 @@ video { .min-h-screen { min-height: 100vh; } -.w-3 { - width: 0.75rem; +.w-28 { + width: 7rem; } .w-4 { width: 1rem; @@ -818,9 +815,6 @@ video { .border-emerald-500\/40 { border-color: rgb(16 185 129 / 0.4); } -.border-emerald-500\/60 { - border-color: rgb(16 185 129 / 0.6); -} .border-green-500 { --tw-border-opacity: 1; border-color: rgb(34 197 94 / var(--tw-border-opacity)); @@ -846,6 +840,13 @@ video { .border-red-500\/60 { border-color: rgb(239 68 68 / 0.6); } +.border-red-700 { + --tw-border-opacity: 1; + border-color: rgb(185 28 28 / var(--tw-border-opacity)); +} +.border-red-700\/70 { + border-color: rgb(185 28 28 / 0.7); +} .border-zinc-600 { --tw-border-opacity: 1; border-color: rgb(82 82 91 / var(--tw-border-opacity)); @@ -858,6 +859,9 @@ video { --tw-border-opacity: 1; border-color: rgb(39 39 42 / var(--tw-border-opacity)); } +.border-zinc-800\/70 { + border-color: rgb(39 39 42 / 0.7); +} .border-zinc-900 { --tw-border-opacity: 1; border-color: rgb(24 24 27 / var(--tw-border-opacity)); @@ -888,6 +892,10 @@ video { .bg-emerald-500\/10 { background-color: rgb(16 185 129 / 0.1); } +.bg-emerald-600 { + --tw-bg-opacity: 1; + background-color: rgb(5 150 105 / var(--tw-bg-opacity)); +} .bg-green-500\/10 { background-color: rgb(34 197 94 / 0.1); } @@ -901,8 +909,11 @@ video { .bg-red-500\/20 { background-color: rgb(239 68 68 / 0.2); } -.bg-zinc-700\/40 { - background-color: rgb(63 63 70 / 0.4); +.bg-red-900\/40 { + background-color: rgb(127 29 29 / 0.4); +} +.bg-red-950\/30 { + background-color: rgb(69 10 10 / 0.3); } .bg-zinc-800 { --tw-bg-opacity: 1; @@ -959,6 +970,9 @@ video { .p-4 { padding: 1rem; } +.p-6 { + padding: 1.5rem; +} .px-1 { padding-left: 0.25rem; padding-right: 0.25rem; @@ -1046,9 +1060,6 @@ video { .pr-3 { padding-right: 0.75rem; } -.pr-4 { - padding-right: 1rem; -} .pr-6 { padding-right: 1.5rem; } @@ -1124,6 +1135,9 @@ video { .leading-none { line-height: 1; } +.leading-snug { + line-height: 1.375; +} .tracking-\[0\.15em\] { letter-spacing: 0.15em; } @@ -1172,9 +1186,9 @@ video { --tw-text-opacity: 1; color: rgb(167 243 208 / var(--tw-text-opacity)); } -.text-emerald-300 { +.text-emerald-400 { --tw-text-opacity: 1; - color: rgb(110 231 183 / var(--tw-text-opacity)); + color: rgb(52 211 153 / var(--tw-text-opacity)); } .text-green-400 { --tw-text-opacity: 1; @@ -1200,10 +1214,18 @@ video { --tw-text-opacity: 1; color: rgb(254 202 202 / var(--tw-text-opacity)); } +.text-red-300 { + --tw-text-opacity: 1; + color: rgb(252 165 165 / var(--tw-text-opacity)); +} .text-red-400 { --tw-text-opacity: 1; color: rgb(248 113 113 / var(--tw-text-opacity)); } +.text-red-500 { + --tw-text-opacity: 1; + color: rgb(239 68 68 / var(--tw-text-opacity)); +} .text-white { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); @@ -1302,14 +1324,14 @@ body { color: rgb(250 250 250 / var(--tw-text-opacity)); } -.last\:border-b-0:last-child { - border-bottom-width: 0px; -} - .hover\:border-amber-400\/60:hover { border-color: rgb(251 191 36 / 0.6); } +.hover\:border-emerald-500\/70:hover { + border-color: rgb(16 185 129 / 0.7); +} + .hover\:border-zinc-500:hover { --tw-border-opacity: 1; border-color: rgb(113 113 122 / var(--tw-border-opacity)); @@ -1341,11 +1363,20 @@ body { background-color: rgb(251 191 36 / 0.3); } +.hover\:bg-emerald-500:hover { + --tw-bg-opacity: 1; + background-color: rgb(16 185 129 / var(--tw-bg-opacity)); +} + .hover\:bg-neutral-800:hover { --tw-bg-opacity: 1; background-color: rgb(38 38 38 / var(--tw-bg-opacity)); } +.hover\:bg-red-900\/40:hover { + background-color: rgb(127 29 29 / 0.4); +} + .hover\:bg-zinc-700:hover { --tw-bg-opacity: 1; background-color: rgb(63 63 70 / var(--tw-bg-opacity)); @@ -1360,11 +1391,20 @@ body { background-color: rgb(24 24 27 / 0.6); } +.hover\:bg-zinc-900\/80:hover { + background-color: rgb(24 24 27 / 0.8); +} + .hover\:text-amber-200:hover { --tw-text-opacity: 1; color: rgb(253 230 138 / var(--tw-text-opacity)); } +.hover\:text-emerald-300:hover { + --tw-text-opacity: 1; + color: rgb(110 231 183 / var(--tw-text-opacity)); +} + .hover\:text-white:hover { --tw-text-opacity: 1; color: rgb(255 255 255 / var(--tw-text-opacity)); @@ -1385,6 +1425,11 @@ body { color: rgb(212 212 216 / var(--tw-text-opacity)); } +.hover\:text-zinc-50:hover { + --tw-text-opacity: 1; + color: rgb(250 250 250 / var(--tw-text-opacity)); +} + .focus\:border-amber-400\/70:focus { border-color: rgb(251 191 36 / 0.7); } @@ -1423,16 +1468,29 @@ body { visibility: visible; } +.group:hover .group-hover\:text-white { + --tw-text-opacity: 1; + color: rgb(255 255 255 / var(--tw-text-opacity)); +} + .group:hover .group-hover\:opacity-100 { opacity: 1; } @media (min-width: 640px) { + .sm\:inline { + display: inline; + } + .sm\:w-auto { width: auto; } + .sm\:grid-cols-3 { + grid-template-columns: repeat(3, minmax(0, 1fr)); + } + .sm\:flex-row { flex-direction: row; } @@ -1464,6 +1522,10 @@ body { display: inline; } + .md\:flex { + display: flex; + } + .md\:inline-flex { display: inline-flex; } diff --git a/.next/static/webpack/5b0a280f0cdf65cb.webpack.hot-update.json b/.next/static/webpack/5b0a280f0cdf65cb.webpack.hot-update.json deleted file mode 100644 index 5c82546..0000000 --- a/.next/static/webpack/5b0a280f0cdf65cb.webpack.hot-update.json +++ /dev/null @@ -1 +0,0 @@ -{"c":["app/layout","webpack"],"r":[],"m":[]} \ No newline at end of file diff --git a/.next/static/webpack/app/layout.5b0a280f0cdf65cb.hot-update.js b/.next/static/webpack/app/layout.5b0a280f0cdf65cb.hot-update.js deleted file mode 100644 index 1e1050b..0000000 --- a/.next/static/webpack/app/layout.5b0a280f0cdf65cb.hot-update.js +++ /dev/null @@ -1,22 +0,0 @@ -"use strict"; -/* - * 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/). - */ -self["webpackHotUpdate_N_E"]("app/layout",{ - -/***/ "(app-pages-browser)/./app/globals.css": -/*!*************************!*\ - !*** ./app/globals.css ***! - \*************************/ -/***/ (function(module, __webpack_exports__, __webpack_require__) { - -eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony default export */ __webpack_exports__[\"default\"] = (\"32ab11c94444\");\nif (true) { module.hot.accept() }\n//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2FwcC9nbG9iYWxzLmNzcyIsIm1hcHBpbmdzIjoiO0FBQUEsK0RBQWUsY0FBYztBQUM3QixJQUFJLElBQVUsSUFBSSxpQkFBaUIiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLy4vYXBwL2dsb2JhbHMuY3NzPzk1YWEiXSwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGRlZmF1bHQgXCIzMmFiMTFjOTQ0NDRcIlxuaWYgKG1vZHVsZS5ob3QpIHsgbW9kdWxlLmhvdC5hY2NlcHQoKSB9XG4iXSwibmFtZXMiOltdLCJzb3VyY2VSb290IjoiIn0=\n//# sourceURL=webpack-internal:///(app-pages-browser)/./app/globals.css\n")); - -/***/ }) - -}); \ No newline at end of file diff --git a/.next/static/webpack/webpack.5b0a280f0cdf65cb.hot-update.js b/.next/static/webpack/webpack.5b0a280f0cdf65cb.hot-update.js deleted file mode 100644 index 64cb2b1..0000000 --- a/.next/static/webpack/webpack.5b0a280f0cdf65cb.hot-update.js +++ /dev/null @@ -1,18 +0,0 @@ -"use strict"; -/* - * 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/). - */ -self["webpackHotUpdate_N_E"]("webpack",{}, -/******/ function(__webpack_require__) { // webpackRuntimeModules -/******/ /* webpack/runtime/getFullHash */ -/******/ !function() { -/******/ __webpack_require__.h = function() { return "e6c287ee061905c3"; } -/******/ }(); -/******/ -/******/ } -); \ No newline at end of file diff --git a/.next/trace b/.next/trace index be527e9..b7ea0af 100644 --- a/.next/trace +++ b/.next/trace @@ -1,4 +1,8 @@ -[{"name":"hot-reloader","duration":26,"timestamp":141412348660,"id":3,"tags":{"version":"14.2.3","isTurbopack":false},"startTime":1764813377433,"traceId":"459ad2413a28a771"},{"name":"start","duration":0,"timestamp":141412349066,"id":4,"parentId":3,"tags":{},"startTime":1764813377433,"traceId":"459ad2413a28a771"},{"name":"get-version-info","duration":429295,"timestamp":141412349151,"id":5,"parentId":4,"tags":{},"startTime":1764813377434,"traceId":"459ad2413a28a771"},{"name":"clean","duration":3988,"timestamp":141412778500,"id":6,"parentId":4,"tags":{},"startTime":1764813377863,"traceId":"459ad2413a28a771"},{"name":"create-pages-mapping","duration":95,"timestamp":141412783047,"id":8,"parentId":7,"tags":{},"startTime":1764813377867,"traceId":"459ad2413a28a771"},{"name":"create-entrypoints","duration":12633,"timestamp":141412783157,"id":9,"parentId":7,"tags":{},"startTime":1764813377868,"traceId":"459ad2413a28a771"},{"name":"generate-webpack-config","duration":54230,"timestamp":141412795820,"id":10,"parentId":7,"tags":{},"startTime":1764813377880,"traceId":"459ad2413a28a771"},{"name":"get-webpack-config","duration":67056,"timestamp":141412783004,"id":7,"parentId":4,"tags":{},"startTime":1764813377867,"traceId":"459ad2413a28a771"},{"name":"make","duration":498,"timestamp":141412887873,"id":12,"parentId":11,"tags":{},"startTime":1764813377972,"traceId":"459ad2413a28a771"},{"name":"chunk-graph","duration":333,"timestamp":141412889193,"id":14,"parentId":13,"tags":{},"startTime":1764813377974,"traceId":"459ad2413a28a771"},{"name":"optimize-modules","duration":9,"timestamp":141412889558,"id":16,"parentId":13,"tags":{},"startTime":1764813377974,"traceId":"459ad2413a28a771"},{"name":"optimize-chunks","duration":60,"timestamp":141412889607,"id":17,"parentId":13,"tags":{},"startTime":1764813377974,"traceId":"459ad2413a28a771"},{"name":"optimize-tree","duration":9,"timestamp":141412889688,"id":18,"parentId":13,"tags":{},"startTime":1764813377974,"traceId":"459ad2413a28a771"},{"name":"optimize-chunk-modules","duration":4,"timestamp":141412889760,"id":19,"parentId":13,"tags":{},"startTime":1764813377974,"traceId":"459ad2413a28a771"},{"name":"optimize","duration":256,"timestamp":141412889547,"id":15,"parentId":13,"tags":{},"startTime":1764813377974,"traceId":"459ad2413a28a771"},{"name":"module-hash","duration":46,"timestamp":141412890072,"id":20,"parentId":13,"tags":{},"startTime":1764813377974,"traceId":"459ad2413a28a771"},{"name":"code-generation","duration":70,"timestamp":141412890127,"id":21,"parentId":13,"tags":{},"startTime":1764813377974,"traceId":"459ad2413a28a771"},{"name":"hash","duration":207,"timestamp":141412890314,"id":22,"parentId":13,"tags":{},"startTime":1764813377975,"traceId":"459ad2413a28a771"},{"name":"code-generation-jobs","duration":25,"timestamp":141412890520,"id":23,"parentId":13,"tags":{},"startTime":1764813377975,"traceId":"459ad2413a28a771"},{"name":"module-assets","duration":33,"timestamp":141412890535,"id":24,"parentId":13,"tags":{},"startTime":1764813377975,"traceId":"459ad2413a28a771"},{"name":"create-chunk-assets","duration":122,"timestamp":141412890572,"id":25,"parentId":13,"tags":{},"startTime":1764813377975,"traceId":"459ad2413a28a771"},{"name":"NextJsBuildManifest-generateClientManifest","duration":530,"timestamp":141412927096,"id":27,"parentId":11,"tags":{},"startTime":1764813378011,"traceId":"459ad2413a28a771"},{"name":"NextJsBuildManifest-createassets","duration":821,"timestamp":141412926816,"id":26,"parentId":11,"tags":{},"startTime":1764813378011,"traceId":"459ad2413a28a771"},{"name":"seal","duration":39301,"timestamp":141412889116,"id":13,"parentId":11,"tags":{},"startTime":1764813377973,"traceId":"459ad2413a28a771"},{"name":"webpack-compilation","duration":42194,"timestamp":141412886348,"id":11,"parentId":3,"tags":{"name":"client"},"startTime":1764813377971,"traceId":"459ad2413a28a771"},{"name":"emit","duration":5132,"timestamp":141412928751,"id":28,"parentId":3,"tags":{},"startTime":1764813378013,"traceId":"459ad2413a28a771"},{"name":"make","duration":604,"timestamp":141412937123,"id":30,"parentId":29,"tags":{},"startTime":1764813378021,"traceId":"459ad2413a28a771"},{"name":"chunk-graph","duration":12,"timestamp":141412937898,"id":32,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"optimize-modules","duration":2,"timestamp":141412937920,"id":34,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"optimize-chunks","duration":19,"timestamp":141412937948,"id":35,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"optimize-tree","duration":2,"timestamp":141412937972,"id":36,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"optimize-chunk-modules","duration":2,"timestamp":141412937985,"id":37,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"optimize","duration":78,"timestamp":141412937917,"id":33,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"module-hash","duration":4,"timestamp":141412938037,"id":38,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"code-generation","duration":3,"timestamp":141412938045,"id":39,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"hash","duration":25,"timestamp":141412938063,"id":40,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"code-generation-jobs","duration":10,"timestamp":141412938088,"id":41,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"module-assets","duration":10,"timestamp":141412938096,"id":42,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"create-chunk-assets","duration":7,"timestamp":141412938109,"id":43,"parentId":31,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"seal","duration":536,"timestamp":141412937885,"id":31,"parentId":29,"tags":{},"startTime":1764813378022,"traceId":"459ad2413a28a771"},{"name":"webpack-compilation","duration":1781,"timestamp":141412936687,"id":29,"parentId":3,"tags":{"name":"server"},"startTime":1764813378021,"traceId":"459ad2413a28a771"},{"name":"emit","duration":571,"timestamp":141412938484,"id":44,"parentId":3,"tags":{},"startTime":1764813378023,"traceId":"459ad2413a28a771"},{"name":"make","duration":58,"timestamp":141412940525,"id":46,"parentId":45,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"chunk-graph","duration":10,"timestamp":141412940825,"id":48,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"optimize-modules","duration":6,"timestamp":141412940843,"id":50,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"optimize-chunks","duration":3,"timestamp":141412940856,"id":51,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"optimize-tree","duration":2,"timestamp":141412940864,"id":52,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"optimize-chunk-modules","duration":2,"timestamp":141412940876,"id":53,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"optimize","duration":45,"timestamp":141412940840,"id":49,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"module-hash","duration":3,"timestamp":141412940925,"id":54,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"code-generation","duration":3,"timestamp":141412940932,"id":55,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"hash","duration":20,"timestamp":141412940956,"id":56,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"code-generation-jobs","duration":12,"timestamp":141412940977,"id":57,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"module-assets","duration":3,"timestamp":141412940987,"id":58,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"create-chunk-assets","duration":5,"timestamp":141412940993,"id":59,"parentId":47,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"seal","duration":409,"timestamp":141412940813,"id":47,"parentId":45,"tags":{},"startTime":1764813378025,"traceId":"459ad2413a28a771"},{"name":"webpack-compilation","duration":1161,"timestamp":141412940075,"id":45,"parentId":3,"tags":{"name":"edge-server"},"startTime":1764813378024,"traceId":"459ad2413a28a771"},{"name":"emit","duration":590,"timestamp":141412941251,"id":60,"parentId":3,"tags":{},"startTime":1764813378026,"traceId":"459ad2413a28a771"}] -[{"name":"make","duration":155,"timestamp":141413156311,"id":65,"parentId":64,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"chunk-graph","duration":23,"timestamp":141413156601,"id":67,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"optimize-modules","duration":3,"timestamp":141413156647,"id":69,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"optimize-chunks","duration":7,"timestamp":141413156662,"id":70,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"optimize-tree","duration":4,"timestamp":141413156678,"id":71,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"optimize-chunk-modules","duration":4,"timestamp":141413156695,"id":72,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"optimize","duration":76,"timestamp":141413156642,"id":68,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"module-hash","duration":7,"timestamp":141413156839,"id":73,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"code-generation","duration":4,"timestamp":141413156855,"id":74,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"hash","duration":32,"timestamp":141413156876,"id":75,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"code-generation-jobs","duration":9,"timestamp":141413156908,"id":76,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"module-assets","duration":4,"timestamp":141413156915,"id":77,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"create-chunk-assets","duration":9,"timestamp":141413156922,"id":78,"parentId":66,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"NextJsBuildManifest-generateClientManifest","duration":49,"timestamp":141413157036,"id":80,"parentId":64,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"NextJsBuildManifest-createassets","duration":82,"timestamp":141413157005,"id":79,"parentId":64,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"seal","duration":576,"timestamp":141413156576,"id":66,"parentId":64,"tags":{},"startTime":1764813378241,"traceId":"459ad2413a28a771"},{"name":"webpack-compilation","duration":1394,"timestamp":141413155772,"id":64,"parentId":61,"tags":{"name":"client"},"startTime":1764813378240,"traceId":"459ad2413a28a771"},{"name":"setup-dev-bundler","duration":930786,"timestamp":141412250904,"id":2,"parentId":1,"tags":{},"startTime":1764813377335,"traceId":"459ad2413a28a771"},{"name":"emit","duration":25047,"timestamp":141413157183,"id":81,"parentId":61,"tags":{},"startTime":1764813378242,"traceId":"459ad2413a28a771"},{"name":"webpack-invalidated-client","duration":30912,"timestamp":141413151758,"id":61,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764813378236,"traceId":"459ad2413a28a771"},{"name":"make","duration":119,"timestamp":141413183650,"id":83,"parentId":82,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"chunk-graph","duration":15,"timestamp":141413183860,"id":85,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"optimize-modules","duration":2,"timestamp":141413183883,"id":87,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"optimize-chunks","duration":21,"timestamp":141413183892,"id":88,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"optimize-tree","duration":3,"timestamp":141413183918,"id":89,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"optimize-chunk-modules","duration":2,"timestamp":141413183929,"id":90,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"optimize","duration":60,"timestamp":141413183880,"id":86,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"module-hash","duration":5,"timestamp":141413183993,"id":91,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"code-generation","duration":3,"timestamp":141413184002,"id":92,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"hash","duration":19,"timestamp":141413184019,"id":93,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"code-generation-jobs","duration":7,"timestamp":141413184039,"id":94,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"module-assets","duration":3,"timestamp":141413184044,"id":95,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"create-chunk-assets","duration":7,"timestamp":141413184051,"id":96,"parentId":84,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"seal","duration":302,"timestamp":141413183847,"id":84,"parentId":82,"tags":{},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"webpack-compilation","duration":851,"timestamp":141413183322,"id":82,"parentId":62,"tags":{"name":"server"},"startTime":1764813378268,"traceId":"459ad2413a28a771"},{"name":"run-instrumentation-hook","duration":25,"timestamp":141413201239,"id":98,"parentId":1,"tags":{},"startTime":1764813378286,"traceId":"459ad2413a28a771"},{"name":"start-dev-server","duration":1151614,"timestamp":141412053151,"id":1,"tags":{"cpus":"16","platform":"darwin","memory.freeMem":"1448558592","memory.totalMem":"68719476736","memory.heapSizeLimit":"34561064960","isTurbopack":false,"memory.rss":"253788160","memory.heapTotal":"107855872","memory.heapUsed":"91623304"},"startTime":1764813377138,"traceId":"459ad2413a28a771"},{"name":"emit","duration":20750,"timestamp":141413184183,"id":97,"parentId":62,"tags":{},"startTime":1764813378269,"traceId":"459ad2413a28a771"},{"name":"webpack-invalidated-server","duration":53343,"timestamp":141413151854,"id":62,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764813378236,"traceId":"459ad2413a28a771"},{"name":"make","duration":83,"timestamp":141413206209,"id":100,"parentId":99,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"chunk-graph","duration":14,"timestamp":141413206393,"id":102,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"optimize-modules","duration":2,"timestamp":141413206414,"id":104,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"optimize-chunks","duration":5,"timestamp":141413206423,"id":105,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"optimize-tree","duration":2,"timestamp":141413206433,"id":106,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"optimize-chunk-modules","duration":2,"timestamp":141413206450,"id":107,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"optimize","duration":49,"timestamp":141413206411,"id":103,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"module-hash","duration":5,"timestamp":141413206504,"id":108,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"code-generation","duration":3,"timestamp":141413206512,"id":109,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"hash","duration":23,"timestamp":141413206530,"id":110,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"code-generation-jobs","duration":7,"timestamp":141413206553,"id":111,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"module-assets","duration":3,"timestamp":141413206558,"id":112,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"create-chunk-assets","duration":6,"timestamp":141413206564,"id":113,"parentId":101,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"seal","duration":499,"timestamp":141413206359,"id":101,"parentId":99,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"webpack-compilation","duration":957,"timestamp":141413205937,"id":99,"parentId":63,"tags":{"name":"edge-server"},"startTime":1764813378290,"traceId":"459ad2413a28a771"},{"name":"emit","duration":983,"timestamp":141413206938,"id":114,"parentId":63,"tags":{},"startTime":1764813378291,"traceId":"459ad2413a28a771"},{"name":"webpack-invalidated-edge-server","duration":56528,"timestamp":141413151867,"id":63,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764813378236,"traceId":"459ad2413a28a771"}] -[{"name":"next-swc-transform","duration":2379,"timestamp":141414342361,"id":123,"parentId":122,"tags":{},"startTime":1764813379427,"traceId":"459ad2413a28a771"},{"name":"next-swc-loader","duration":2855,"timestamp":141414341901,"id":122,"parentId":121,"tags":{},"startTime":1764813379426,"traceId":"459ad2413a28a771"},{"name":"build-module-tsx","duration":9434,"timestamp":141414340002,"id":121,"parentId":118,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx","layer":"rsc"},"startTime":1764813379424,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":90425,"timestamp":141414259274,"id":120,"parentId":119,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764813379344,"traceId":"459ad2413a28a771"},{"name":"next-swc-transform","duration":3724,"timestamp":141414360406,"id":130,"parentId":129,"tags":{},"startTime":1764813379445,"traceId":"459ad2413a28a771"},{"name":"next-swc-loader","duration":3899,"timestamp":141414360238,"id":129,"parentId":128,"tags":{},"startTime":1764813379445,"traceId":"459ad2413a28a771"},{"name":"build-module-tsx","duration":6617,"timestamp":141414359487,"id":128,"parentId":118,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx","layer":"ssr"},"startTime":1764813379444,"traceId":"459ad2413a28a771"},{"name":"next-swc-transform","duration":1560,"timestamp":141414400680,"id":133,"parentId":132,"tags":{},"startTime":1764813379485,"traceId":"459ad2413a28a771"},{"name":"next-swc-loader","duration":1719,"timestamp":141414400528,"id":132,"parentId":131,"tags":{},"startTime":1764813379485,"traceId":"459ad2413a28a771"},{"name":"build-module-tsx","duration":5420,"timestamp":141414400349,"id":131,"parentId":128,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx","layer":"ssr"},"startTime":1764813379485,"traceId":"459ad2413a28a771"},{"name":"make","duration":150318,"timestamp":141414256570,"id":119,"parentId":118,"tags":{},"startTime":1764813379341,"traceId":"459ad2413a28a771"},{"name":"chunk-graph","duration":2396,"timestamp":141414411146,"id":135,"parentId":134,"tags":{},"startTime":1764813379496,"traceId":"459ad2413a28a771"},{"name":"optimize-modules","duration":3,"timestamp":141414413558,"id":137,"parentId":134,"tags":{},"startTime":1764813379498,"traceId":"459ad2413a28a771"},{"name":"optimize-chunks","duration":1621,"timestamp":141414413584,"id":138,"parentId":134,"tags":{},"startTime":1764813379498,"traceId":"459ad2413a28a771"},{"name":"optimize-tree","duration":4,"timestamp":141414415220,"id":139,"parentId":134,"tags":{},"startTime":1764813379500,"traceId":"459ad2413a28a771"},{"name":"optimize-chunk-modules","duration":2,"timestamp":141414415230,"id":140,"parentId":134,"tags":{},"startTime":1764813379500,"traceId":"459ad2413a28a771"},{"name":"optimize","duration":1951,"timestamp":141414413553,"id":136,"parentId":134,"tags":{},"startTime":1764813379498,"traceId":"459ad2413a28a771"},{"name":"module-hash","duration":3041,"timestamp":141414417124,"id":141,"parentId":134,"tags":{},"startTime":1764813379501,"traceId":"459ad2413a28a771"},{"name":"code-generation","duration":2744,"timestamp":141414420174,"id":142,"parentId":134,"tags":{},"startTime":1764813379505,"traceId":"459ad2413a28a771"},{"name":"hash","duration":2163,"timestamp":141414424456,"id":143,"parentId":134,"tags":{},"startTime":1764813379509,"traceId":"459ad2413a28a771"},{"name":"code-generation-jobs","duration":82,"timestamp":141414426619,"id":144,"parentId":134,"tags":{},"startTime":1764813379511,"traceId":"459ad2413a28a771"},{"name":"module-assets","duration":68,"timestamp":141414426691,"id":145,"parentId":134,"tags":{},"startTime":1764813379511,"traceId":"459ad2413a28a771"},{"name":"create-chunk-assets","duration":12300,"timestamp":141414426763,"id":146,"parentId":134,"tags":{},"startTime":1764813379511,"traceId":"459ad2413a28a771"},{"name":"seal","duration":29803,"timestamp":141414410782,"id":134,"parentId":118,"tags":{},"startTime":1764813379495,"traceId":"459ad2413a28a771"},{"name":"webpack-compilation","duration":185862,"timestamp":141414255641,"id":118,"parentId":116,"tags":{"name":"server"},"startTime":1764813379340,"traceId":"459ad2413a28a771"},{"name":"emit","duration":6097,"timestamp":141414441520,"id":147,"parentId":116,"tags":{},"startTime":1764813379526,"traceId":"459ad2413a28a771"},{"name":"webpack-invalidated-server","duration":194346,"timestamp":141414253642,"id":116,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764813379338,"traceId":"459ad2413a28a771"},{"name":"next-swc-transform","duration":1619,"timestamp":141414476702,"id":157,"parentId":156,"tags":{},"startTime":1764813379561,"traceId":"459ad2413a28a771"},{"name":"next-swc-loader","duration":1839,"timestamp":141414476488,"id":156,"parentId":155,"tags":{},"startTime":1764813379561,"traceId":"459ad2413a28a771"},{"name":"build-module-tsx","duration":5565,"timestamp":141414475183,"id":155,"parentId":148,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/layout.tsx","layer":"app-pages-browser"},"startTime":1764813379560,"traceId":"459ad2413a28a771"},{"name":"next-swc-transform","duration":4919,"timestamp":141414484526,"id":160,"parentId":159,"tags":{},"startTime":1764813379569,"traceId":"459ad2413a28a771"},{"name":"next-swc-loader","duration":5054,"timestamp":141414484398,"id":159,"parentId":158,"tags":{},"startTime":1764813379569,"traceId":"459ad2413a28a771"},{"name":"build-module-tsx","duration":8017,"timestamp":141414483919,"id":158,"parentId":155,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/components/BuilderNav.tsx","layer":"app-pages-browser"},"startTime":1764813379568,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":66846,"timestamp":141414451874,"id":150,"parentId":149,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764813379536,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":89344,"timestamp":141414451945,"id":152,"parentId":149,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764813379536,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":100810,"timestamp":141414451971,"id":154,"parentId":149,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%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%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764813379536,"traceId":"459ad2413a28a771"},{"name":"read-resource","duration":8418,"timestamp":141414545464,"id":163,"parentId":162,"tags":{},"startTime":1764813379630,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":112893,"timestamp":141414451930,"id":151,"parentId":149,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764813379536,"traceId":"459ad2413a28a771"},{"name":"postcss-process","duration":154743,"timestamp":141414698393,"id":165,"parentId":164,"tags":{},"startTime":1764813379783,"traceId":"459ad2413a28a771"},{"name":"postcss-loader","duration":299839,"timestamp":141414554032,"id":164,"parentId":162,"tags":{},"startTime":1764813379638,"traceId":"459ad2413a28a771"},{"name":"css-loader","duration":19749,"timestamp":141414853983,"id":166,"parentId":162,"tags":{"astUsed":"true"},"startTime":1764813379938,"traceId":"459ad2413a28a771"},{"name":"build-module-css","duration":332152,"timestamp":141414542918,"id":162,"parentId":161,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764813379627,"traceId":"459ad2413a28a771"},{"name":"build-module-css","duration":349495,"timestamp":141414531120,"id":161,"parentId":155,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764813379615,"traceId":"459ad2413a28a771"},{"name":"build-module","duration":54,"timestamp":141414880831,"id":167,"parentId":161,"tags":{},"startTime":1764813379965,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":428958,"timestamp":141414451961,"id":153,"parentId":149,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Flayout.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764813379536,"traceId":"459ad2413a28a771"},{"name":"make","duration":431487,"timestamp":141414449481,"id":149,"parentId":148,"tags":{},"startTime":1764813379534,"traceId":"459ad2413a28a771"},{"name":"chunk-graph","duration":1661,"timestamp":141414883761,"id":169,"parentId":168,"tags":{},"startTime":1764813379968,"traceId":"459ad2413a28a771"},{"name":"optimize-modules","duration":3,"timestamp":141414885439,"id":171,"parentId":168,"tags":{},"startTime":1764813379970,"traceId":"459ad2413a28a771"},{"name":"optimize-chunks","duration":37,"timestamp":141414885478,"id":172,"parentId":168,"tags":{},"startTime":1764813379970,"traceId":"459ad2413a28a771"},{"name":"optimize-tree","duration":4,"timestamp":141414885526,"id":173,"parentId":168,"tags":{},"startTime":1764813379970,"traceId":"459ad2413a28a771"},{"name":"optimize-chunk-modules","duration":2,"timestamp":141414885539,"id":174,"parentId":168,"tags":{},"startTime":1764813379970,"traceId":"459ad2413a28a771"},{"name":"optimize","duration":373,"timestamp":141414885432,"id":170,"parentId":168,"tags":{},"startTime":1764813379970,"traceId":"459ad2413a28a771"},{"name":"module-hash","duration":2552,"timestamp":141414886943,"id":175,"parentId":168,"tags":{},"startTime":1764813379971,"traceId":"459ad2413a28a771"},{"name":"code-generation","duration":1028,"timestamp":141414889503,"id":176,"parentId":168,"tags":{},"startTime":1764813379974,"traceId":"459ad2413a28a771"},{"name":"hash","duration":4564,"timestamp":141414892086,"id":177,"parentId":168,"tags":{},"startTime":1764813379976,"traceId":"459ad2413a28a771"},{"name":"code-generation-jobs","duration":145,"timestamp":141414896645,"id":178,"parentId":168,"tags":{},"startTime":1764813379981,"traceId":"459ad2413a28a771"},{"name":"module-assets","duration":48,"timestamp":141414896779,"id":179,"parentId":168,"tags":{},"startTime":1764813379981,"traceId":"459ad2413a28a771"},{"name":"create-chunk-assets","duration":3290,"timestamp":141414896831,"id":180,"parentId":168,"tags":{},"startTime":1764813379981,"traceId":"459ad2413a28a771"},{"name":"NextJsBuildManifest-generateClientManifest","duration":235,"timestamp":141414901215,"id":182,"parentId":148,"tags":{},"startTime":1764813379986,"traceId":"459ad2413a28a771"},{"name":"NextJsBuildManifest-createassets","duration":524,"timestamp":141414900930,"id":181,"parentId":148,"tags":{},"startTime":1764813379985,"traceId":"459ad2413a28a771"},{"name":"seal","duration":19668,"timestamp":141414883399,"id":168,"parentId":148,"tags":{},"startTime":1764813379968,"traceId":"459ad2413a28a771"},{"name":"webpack-compilation","duration":453849,"timestamp":141414449245,"id":148,"parentId":127,"tags":{"name":"client"},"startTime":1764813379534,"traceId":"459ad2413a28a771"},{"name":"emit","duration":5453,"timestamp":141414903110,"id":183,"parentId":127,"tags":{},"startTime":1764813379987,"traceId":"459ad2413a28a771"},{"name":"compile-path","duration":655741,"timestamp":141414253730,"id":117,"tags":{"trigger":"/gunbuilder","isTurbopack":false},"startTime":1764813379338,"traceId":"459ad2413a28a771"},{"name":"webpack-invalidated-client","duration":552026,"timestamp":141414357784,"id":127,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764813379442,"traceId":"459ad2413a28a771"}] -[{"name":"handle-request","duration":748228,"timestamp":141414243705,"id":115,"tags":{"url":"/gunbuilder","isTurbopack":false},"startTime":1764813379328,"traceId":"459ad2413a28a771"},{"name":"memory-usage","duration":0,"timestamp":141414991976,"id":184,"parentId":115,"tags":{"url":"/gunbuilder","memory.rss":"590266368","memory.heapUsed":"166516064","memory.heapTotal":"290226176"},"startTime":1764813380076,"traceId":"459ad2413a28a771"},{"name":"client-success","duration":4,"timestamp":141415179708,"id":185,"parentId":3,"tags":{},"startTime":1764813380264,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":35259,"timestamp":141935095555,"id":192,"parentId":191,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764813900179,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":37754,"timestamp":141935095645,"id":196,"parentId":191,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%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%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764813900179,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":44920,"timestamp":141935095634,"id":194,"parentId":191,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764813900179,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":45562,"timestamp":141935095625,"id":193,"parentId":191,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764813900179,"traceId":"459ad2413a28a771"},{"name":"read-resource","duration":8474,"timestamp":141935132814,"id":200,"parentId":199,"tags":{},"startTime":1764813900216,"traceId":"459ad2413a28a771"},{"name":"postcss-process","duration":25032,"timestamp":141935141338,"id":202,"parentId":201,"tags":{},"startTime":1764813900225,"traceId":"459ad2413a28a771"},{"name":"postcss-loader","duration":25624,"timestamp":141935141311,"id":201,"parentId":199,"tags":{},"startTime":1764813900225,"traceId":"459ad2413a28a771"},{"name":"css-loader","duration":4630,"timestamp":141935166971,"id":203,"parentId":199,"tags":{"astUsed":"true"},"startTime":1764813900251,"traceId":"459ad2413a28a771"},{"name":"build-module-css","duration":41995,"timestamp":141935132689,"id":199,"parentId":198,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css.webpack[javascript/auto]!=!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/css-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[2]!/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/build/webpack/loaders/postcss-loader/src/index.js??ruleSet[1].rules[13].oneOf[12].use[3]!/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":null},"startTime":1764813900216,"traceId":"459ad2413a28a771"},{"name":"build-module-css","duration":49724,"timestamp":141935130344,"id":198,"parentId":190,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/app/globals.css","layer":"app-pages-browser"},"startTime":1764813900214,"traceId":"459ad2413a28a771"},{"name":"build-module","duration":38,"timestamp":141935180305,"id":204,"parentId":198,"tags":{},"startTime":1764813900264,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":84839,"timestamp":141935095640,"id":195,"parentId":191,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Flayout.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764813900179,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":84845,"timestamp":141935095650,"id":197,"parentId":191,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1764813900179,"traceId":"459ad2413a28a771"},{"name":"make","duration":86405,"timestamp":141935094120,"id":191,"parentId":190,"tags":{},"startTime":1764813900178,"traceId":"459ad2413a28a771"},{"name":"chunk-graph","duration":1230,"timestamp":141935182336,"id":206,"parentId":205,"tags":{},"startTime":1764813900266,"traceId":"459ad2413a28a771"},{"name":"optimize-modules","duration":6,"timestamp":141935183624,"id":208,"parentId":205,"tags":{},"startTime":1764813900267,"traceId":"459ad2413a28a771"},{"name":"optimize-chunks","duration":45,"timestamp":141935183678,"id":209,"parentId":205,"tags":{},"startTime":1764813900267,"traceId":"459ad2413a28a771"},{"name":"optimize-tree","duration":82,"timestamp":141935183750,"id":210,"parentId":205,"tags":{},"startTime":1764813900267,"traceId":"459ad2413a28a771"},{"name":"optimize-chunk-modules","duration":2,"timestamp":141935183864,"id":211,"parentId":205,"tags":{},"startTime":1764813900267,"traceId":"459ad2413a28a771"},{"name":"optimize","duration":629,"timestamp":141935183611,"id":207,"parentId":205,"tags":{},"startTime":1764813900267,"traceId":"459ad2413a28a771"},{"name":"module-hash","duration":249,"timestamp":141935185011,"id":212,"parentId":205,"tags":{},"startTime":1764813900269,"traceId":"459ad2413a28a771"},{"name":"code-generation","duration":816,"timestamp":141935185275,"id":213,"parentId":205,"tags":{},"startTime":1764813900269,"traceId":"459ad2413a28a771"},{"name":"hash","duration":2463,"timestamp":141935188064,"id":214,"parentId":205,"tags":{},"startTime":1764813900272,"traceId":"459ad2413a28a771"},{"name":"code-generation-jobs","duration":90,"timestamp":141935190527,"id":215,"parentId":205,"tags":{},"startTime":1764813900274,"traceId":"459ad2413a28a771"},{"name":"module-assets","duration":42,"timestamp":141935190612,"id":216,"parentId":205,"tags":{},"startTime":1764813900274,"traceId":"459ad2413a28a771"},{"name":"create-chunk-assets","duration":1880,"timestamp":141935190657,"id":217,"parentId":205,"tags":{},"startTime":1764813900274,"traceId":"459ad2413a28a771"},{"name":"NextJsBuildManifest-generateClientManifest","duration":192,"timestamp":141935193751,"id":219,"parentId":190,"tags":{},"startTime":1764813900277,"traceId":"459ad2413a28a771"},{"name":"NextJsBuildManifest-createassets","duration":382,"timestamp":141935193563,"id":218,"parentId":190,"tags":{},"startTime":1764813900277,"traceId":"459ad2413a28a771"},{"name":"seal","duration":13323,"timestamp":141935181986,"id":205,"parentId":190,"tags":{},"startTime":1764813900266,"traceId":"459ad2413a28a771"},{"name":"webpack-compilation","duration":107878,"timestamp":141935087510,"id":190,"parentId":187,"tags":{"name":"client"},"startTime":1764813900171,"traceId":"459ad2413a28a771"},{"name":"emit","duration":2781,"timestamp":141935195532,"id":220,"parentId":187,"tags":{},"startTime":1764813900279,"traceId":"459ad2413a28a771"},{"name":"webpack-invalidated-client","duration":121188,"timestamp":141935077909,"id":187,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764813900161,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":7915,"timestamp":141935203193,"id":224,"parentId":222,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764813900287,"traceId":"459ad2413a28a771"},{"name":"add-entry","duration":16910,"timestamp":141935203163,"id":223,"parentId":222,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764813900287,"traceId":"459ad2413a28a771"},{"name":"make","duration":21515,"timestamp":141935201454,"id":222,"parentId":221,"tags":{},"startTime":1764813900285,"traceId":"459ad2413a28a771"},{"name":"chunk-graph","duration":810,"timestamp":141935224201,"id":231,"parentId":230,"tags":{},"startTime":1764813900308,"traceId":"459ad2413a28a771"},{"name":"optimize-modules","duration":3,"timestamp":141935225022,"id":233,"parentId":230,"tags":{},"startTime":1764813900309,"traceId":"459ad2413a28a771"},{"name":"optimize-chunks","duration":956,"timestamp":141935225060,"id":234,"parentId":230,"tags":{},"startTime":1764813900309,"traceId":"459ad2413a28a771"},{"name":"optimize-tree","duration":3,"timestamp":141935226025,"id":235,"parentId":230,"tags":{},"startTime":1764813900310,"traceId":"459ad2413a28a771"},{"name":"optimize-chunk-modules","duration":3,"timestamp":141935226038,"id":236,"parentId":230,"tags":{},"startTime":1764813900310,"traceId":"459ad2413a28a771"},{"name":"optimize","duration":1185,"timestamp":141935225019,"id":232,"parentId":230,"tags":{},"startTime":1764813900309,"traceId":"459ad2413a28a771"},{"name":"module-hash","duration":170,"timestamp":141935226712,"id":237,"parentId":230,"tags":{},"startTime":1764813900310,"traceId":"459ad2413a28a771"},{"name":"code-generation","duration":365,"timestamp":141935226889,"id":238,"parentId":230,"tags":{},"startTime":1764813900310,"traceId":"459ad2413a28a771"},{"name":"hash","duration":939,"timestamp":141935227779,"id":239,"parentId":230,"tags":{},"startTime":1764813900311,"traceId":"459ad2413a28a771"},{"name":"code-generation-jobs","duration":37,"timestamp":141935228718,"id":240,"parentId":230,"tags":{},"startTime":1764813900312,"traceId":"459ad2413a28a771"},{"name":"module-assets","duration":23,"timestamp":141935228751,"id":241,"parentId":230,"tags":{},"startTime":1764813900312,"traceId":"459ad2413a28a771"},{"name":"create-chunk-assets","duration":357,"timestamp":141935228776,"id":242,"parentId":230,"tags":{},"startTime":1764813900312,"traceId":"459ad2413a28a771"},{"name":"seal","duration":5945,"timestamp":141935224017,"id":230,"parentId":221,"tags":{},"startTime":1764813900308,"traceId":"459ad2413a28a771"},{"name":"webpack-compilation","duration":29860,"timestamp":141935201103,"id":221,"parentId":189,"tags":{"name":"server"},"startTime":1764813900285,"traceId":"459ad2413a28a771"},{"name":"emit","duration":1055,"timestamp":141935230978,"id":243,"parentId":189,"tags":{},"startTime":1764813900315,"traceId":"459ad2413a28a771"},{"name":"compile-path","duration":154472,"timestamp":141935078065,"id":188,"tags":{"trigger":"/_not-found","isTurbopack":false},"startTime":1764813900162,"traceId":"459ad2413a28a771"},{"name":"webpack-invalidated-server","duration":154654,"timestamp":141935078219,"id":189,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764813900162,"traceId":"459ad2413a28a771"}] +[{"name":"hot-reloader","duration":21,"timestamp":205991098518,"id":3,"tags":{"version":"14.2.3","isTurbopack":false},"startTime":1764877956046,"traceId":"500d2a2ef717ad05"},{"name":"start","duration":0,"timestamp":205991098862,"id":4,"parentId":3,"tags":{},"startTime":1764877956047,"traceId":"500d2a2ef717ad05"},{"name":"get-version-info","duration":380057,"timestamp":205991098919,"id":5,"parentId":4,"tags":{},"startTime":1764877956047,"traceId":"500d2a2ef717ad05"},{"name":"clean","duration":5928,"timestamp":205991479048,"id":6,"parentId":4,"tags":{},"startTime":1764877956427,"traceId":"500d2a2ef717ad05"},{"name":"create-pages-mapping","duration":142,"timestamp":205991485885,"id":8,"parentId":7,"tags":{},"startTime":1764877956434,"traceId":"500d2a2ef717ad05"},{"name":"create-entrypoints","duration":16967,"timestamp":205991486041,"id":9,"parentId":7,"tags":{},"startTime":1764877956434,"traceId":"500d2a2ef717ad05"},{"name":"generate-webpack-config","duration":52680,"timestamp":205991503036,"id":10,"parentId":7,"tags":{},"startTime":1764877956451,"traceId":"500d2a2ef717ad05"},{"name":"get-webpack-config","duration":69913,"timestamp":205991485812,"id":7,"parentId":4,"tags":{},"startTime":1764877956434,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":479,"timestamp":205991591162,"id":12,"parentId":11,"tags":{},"startTime":1764877956539,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":389,"timestamp":205991592678,"id":14,"parentId":13,"tags":{},"startTime":1764877956540,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":13,"timestamp":205991593105,"id":16,"parentId":13,"tags":{},"startTime":1764877956541,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":72,"timestamp":205991593169,"id":17,"parentId":13,"tags":{},"startTime":1764877956541,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":9,"timestamp":205991593264,"id":18,"parentId":13,"tags":{},"startTime":1764877956541,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":4,"timestamp":205991593337,"id":19,"parentId":13,"tags":{},"startTime":1764877956541,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":288,"timestamp":205991593095,"id":15,"parentId":13,"tags":{},"startTime":1764877956541,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":39,"timestamp":205991593636,"id":20,"parentId":13,"tags":{},"startTime":1764877956541,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":66,"timestamp":205991593684,"id":21,"parentId":13,"tags":{},"startTime":1764877956541,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":195,"timestamp":205991593854,"id":22,"parentId":13,"tags":{},"startTime":1764877956542,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":24,"timestamp":205991594049,"id":23,"parentId":13,"tags":{},"startTime":1764877956542,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":30,"timestamp":205991594064,"id":24,"parentId":13,"tags":{},"startTime":1764877956542,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":119,"timestamp":205991594098,"id":25,"parentId":13,"tags":{},"startTime":1764877956542,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-generateClientManifest","duration":390,"timestamp":205991623226,"id":27,"parentId":11,"tags":{},"startTime":1764877956571,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-createassets","duration":637,"timestamp":205991622987,"id":26,"parentId":11,"tags":{},"startTime":1764877956571,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":31515,"timestamp":205991592582,"id":13,"parentId":11,"tags":{},"startTime":1764877956540,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":34424,"timestamp":205991589768,"id":11,"parentId":3,"tags":{"name":"client"},"startTime":1764877956538,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":5098,"timestamp":205991624353,"id":28,"parentId":3,"tags":{},"startTime":1764877956572,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":644,"timestamp":205991633182,"id":30,"parentId":29,"tags":{},"startTime":1764877956581,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":11,"timestamp":205991634000,"id":32,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":3,"timestamp":205991634019,"id":34,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":20,"timestamp":205991634050,"id":35,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":5,"timestamp":205991634076,"id":36,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":2,"timestamp":205991634092,"id":37,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":85,"timestamp":205991634017,"id":33,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":3,"timestamp":205991634149,"id":38,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":6,"timestamp":205991634156,"id":39,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":23,"timestamp":205991634176,"id":40,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":10,"timestamp":205991634200,"id":41,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":6,"timestamp":205991634207,"id":42,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":7,"timestamp":205991634218,"id":43,"parentId":31,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":566,"timestamp":205991633987,"id":31,"parentId":29,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":1909,"timestamp":205991632695,"id":29,"parentId":3,"tags":{"name":"server"},"startTime":1764877956580,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":525,"timestamp":205991634622,"id":44,"parentId":3,"tags":{},"startTime":1764877956582,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":89,"timestamp":205991636878,"id":46,"parentId":45,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":11,"timestamp":205991637277,"id":48,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":9,"timestamp":205991637298,"id":50,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":3,"timestamp":205991637315,"id":51,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":2,"timestamp":205991637323,"id":52,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":2,"timestamp":205991637336,"id":53,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":56,"timestamp":205991637295,"id":49,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":4,"timestamp":205991637393,"id":54,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":3,"timestamp":205991637400,"id":55,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":29,"timestamp":205991637421,"id":56,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":10,"timestamp":205991637451,"id":57,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":4,"timestamp":205991637458,"id":58,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":5,"timestamp":205991637465,"id":59,"parentId":47,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":466,"timestamp":205991637263,"id":47,"parentId":45,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":1445,"timestamp":205991636300,"id":45,"parentId":3,"tags":{"name":"edge-server"},"startTime":1764877956584,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":454,"timestamp":205991637761,"id":60,"parentId":3,"tags":{},"startTime":1764877956585,"traceId":"500d2a2ef717ad05"}] +[{"name":"make","duration":174,"timestamp":205991861351,"id":65,"parentId":64,"tags":{},"startTime":1764877956809,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":37,"timestamp":205991861688,"id":67,"parentId":66,"tags":{},"startTime":1764877956809,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":4,"timestamp":205991861747,"id":69,"parentId":66,"tags":{},"startTime":1764877956809,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":7,"timestamp":205991861765,"id":70,"parentId":66,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":4,"timestamp":205991861782,"id":71,"parentId":66,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":3,"timestamp":205991861801,"id":72,"parentId":66,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":89,"timestamp":205991861742,"id":68,"parentId":66,"tags":{},"startTime":1764877956809,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":8,"timestamp":205991861915,"id":73,"parentId":66,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":6,"timestamp":205991861929,"id":74,"parentId":66,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":49,"timestamp":205991861963,"id":75,"parentId":66,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":15,"timestamp":205991862011,"id":76,"parentId":66,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":7,"timestamp":205991862022,"id":77,"parentId":66,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":12,"timestamp":205991862033,"id":78,"parentId":66,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-generateClientManifest","duration":84,"timestamp":205991862205,"id":80,"parentId":64,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-createassets","duration":132,"timestamp":205991862159,"id":79,"parentId":64,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":739,"timestamp":205991861660,"id":66,"parentId":64,"tags":{},"startTime":1764877956809,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":1753,"timestamp":205991860672,"id":64,"parentId":61,"tags":{"name":"client"},"startTime":1764877956808,"traceId":"500d2a2ef717ad05"},{"name":"setup-dev-bundler","duration":883922,"timestamp":205991010730,"id":2,"parentId":1,"tags":{},"startTime":1764877955958,"traceId":"500d2a2ef717ad05"},{"name":"run-instrumentation-hook","duration":32,"timestamp":205991907599,"id":82,"parentId":1,"tags":{},"startTime":1764877956855,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":45674,"timestamp":205991862450,"id":81,"parentId":61,"tags":{},"startTime":1764877956810,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-client","duration":53052,"timestamp":205991855590,"id":61,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764877956803,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":161,"timestamp":205991909915,"id":84,"parentId":83,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":47,"timestamp":205991910190,"id":86,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":5,"timestamp":205991910246,"id":88,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":32,"timestamp":205991910258,"id":89,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":3,"timestamp":205991910296,"id":90,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":2,"timestamp":205991910313,"id":91,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":85,"timestamp":205991910243,"id":87,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":6,"timestamp":205991910394,"id":92,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":4,"timestamp":205991910404,"id":93,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":20,"timestamp":205991910427,"id":94,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":13,"timestamp":205991910448,"id":95,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":4,"timestamp":205991910457,"id":96,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":9,"timestamp":205991910465,"id":97,"parentId":85,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":422,"timestamp":205991910172,"id":85,"parentId":83,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":1142,"timestamp":205991909474,"id":83,"parentId":62,"tags":{"name":"server"},"startTime":1764877956857,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":779,"timestamp":205991910630,"id":98,"parentId":62,"tags":{},"startTime":1764877956858,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-server","duration":55752,"timestamp":205991855859,"id":62,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764877956804,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":88,"timestamp":205991912630,"id":100,"parentId":99,"tags":{},"startTime":1764877956860,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":15,"timestamp":205991912835,"id":102,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":4,"timestamp":205991912860,"id":104,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":5,"timestamp":205991912871,"id":105,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":2,"timestamp":205991912881,"id":106,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":3,"timestamp":205991912892,"id":107,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":52,"timestamp":205991912855,"id":103,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":4,"timestamp":205991912956,"id":108,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":3,"timestamp":205991912964,"id":109,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":27,"timestamp":205991912982,"id":110,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":8,"timestamp":205991913010,"id":111,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":3,"timestamp":205991913016,"id":112,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":7,"timestamp":205991913024,"id":113,"parentId":101,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":362,"timestamp":205991912784,"id":101,"parentId":99,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":814,"timestamp":205991912346,"id":99,"parentId":63,"tags":{"name":"edge-server"},"startTime":1764877956860,"traceId":"500d2a2ef717ad05"},{"name":"start-dev-server","duration":1053325,"timestamp":205990861464,"id":1,"tags":{"cpus":"16","platform":"darwin","memory.freeMem":"5459705856","memory.totalMem":"68719476736","memory.heapSizeLimit":"34561064960","isTurbopack":false,"memory.rss":"247791616","memory.heapTotal":"105218048","memory.heapUsed":"89734616"},"startTime":1764877955809,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":2854,"timestamp":205991913176,"id":114,"parentId":63,"tags":{},"startTime":1764877956861,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-edge-server","duration":60605,"timestamp":205991855896,"id":63,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764877956804,"traceId":"500d2a2ef717ad05"}] +[{"name":"add-entry","duration":79867,"timestamp":205997355789,"id":120,"parentId":119,"tags":{"request":"next-app-loader?name=app%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&page=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&appPaths=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&pagePath=private-next-app-dir%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764877962304,"traceId":"500d2a2ef717ad05"},{"name":"next-swc-transform","duration":2895,"timestamp":205997489851,"id":127,"parentId":126,"tags":{},"startTime":1764877962438,"traceId":"500d2a2ef717ad05"},{"name":"next-swc-loader","duration":3354,"timestamp":205997489402,"id":126,"parentId":125,"tags":{},"startTime":1764877962437,"traceId":"500d2a2ef717ad05"},{"name":"build-module-ts","duration":11320,"timestamp":205997487819,"id":125,"parentId":118,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/lib/api/adminCategoryMappings.ts","layer":"ssr"},"startTime":1764877962436,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":145916,"timestamp":205997353283,"id":119,"parentId":118,"tags":{},"startTime":1764877962301,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":2195,"timestamp":205997503205,"id":129,"parentId":128,"tags":{},"startTime":1764877962451,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":2,"timestamp":205997505412,"id":131,"parentId":128,"tags":{},"startTime":1764877962453,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":1471,"timestamp":205997505423,"id":132,"parentId":128,"tags":{},"startTime":1764877962453,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":3,"timestamp":205997506906,"id":133,"parentId":128,"tags":{},"startTime":1764877962455,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":2,"timestamp":205997506916,"id":134,"parentId":128,"tags":{},"startTime":1764877962455,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":1715,"timestamp":205997505409,"id":130,"parentId":128,"tags":{},"startTime":1764877962453,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":3353,"timestamp":205997508545,"id":135,"parentId":128,"tags":{},"startTime":1764877962456,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":1467,"timestamp":205997511909,"id":136,"parentId":128,"tags":{},"startTime":1764877962460,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":2016,"timestamp":205997514850,"id":137,"parentId":128,"tags":{},"startTime":1764877962463,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":108,"timestamp":205997516866,"id":138,"parentId":128,"tags":{},"startTime":1764877962465,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":53,"timestamp":205997516967,"id":139,"parentId":128,"tags":{},"startTime":1764877962465,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":3799,"timestamp":205997517024,"id":140,"parentId":128,"tags":{},"startTime":1764877962465,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":19402,"timestamp":205997502854,"id":128,"parentId":118,"tags":{},"startTime":1764877962451,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":170483,"timestamp":205997352625,"id":118,"parentId":116,"tags":{"name":"server"},"startTime":1764877962300,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":2181,"timestamp":205997523130,"id":141,"parentId":116,"tags":{},"startTime":1764877962471,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-server","duration":174870,"timestamp":205997350752,"id":116,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764877962298,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":59288,"timestamp":205997531019,"id":144,"parentId":143,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764877962479,"traceId":"500d2a2ef717ad05"},{"name":"next-swc-transform","duration":9299,"timestamp":205997598825,"id":151,"parentId":150,"tags":{},"startTime":1764877962547,"traceId":"500d2a2ef717ad05"},{"name":"next-swc-loader","duration":9531,"timestamp":205997598601,"id":150,"parentId":149,"tags":{},"startTime":1764877962546,"traceId":"500d2a2ef717ad05"},{"name":"build-module-ts","duration":15847,"timestamp":205997596940,"id":149,"parentId":142,"tags":{"name":"/Users/sean/Dev/gunbuilder-prototype/lib/api/adminCategoryMappings.ts","layer":"app-pages-browser"},"startTime":1764877962545,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":97998,"timestamp":205997531094,"id":146,"parentId":143,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764877962479,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":103675,"timestamp":205997531127,"id":148,"parentId":143,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%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%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764877962479,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":105288,"timestamp":205997531078,"id":145,"parentId":143,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764877962479,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":105937,"timestamp":205997531115,"id":147,"parentId":143,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Flayout.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764877962479,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":109982,"timestamp":205997527087,"id":143,"parentId":142,"tags":{},"startTime":1764877962475,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":1268,"timestamp":205997639236,"id":153,"parentId":152,"tags":{},"startTime":1764877962587,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":3,"timestamp":205997640518,"id":155,"parentId":152,"tags":{},"startTime":1764877962588,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":24,"timestamp":205997640533,"id":156,"parentId":152,"tags":{},"startTime":1764877962588,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":3,"timestamp":205997640564,"id":157,"parentId":152,"tags":{},"startTime":1764877962588,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":1,"timestamp":205997640573,"id":158,"parentId":152,"tags":{},"startTime":1764877962588,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":284,"timestamp":205997640515,"id":154,"parentId":152,"tags":{},"startTime":1764877962588,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":2549,"timestamp":205997641924,"id":159,"parentId":152,"tags":{},"startTime":1764877962590,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":1024,"timestamp":205997644483,"id":160,"parentId":152,"tags":{},"startTime":1764877962592,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":3657,"timestamp":205997647137,"id":161,"parentId":152,"tags":{},"startTime":1764877962595,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":89,"timestamp":205997650793,"id":162,"parentId":152,"tags":{},"startTime":1764877962599,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":45,"timestamp":205997650872,"id":163,"parentId":152,"tags":{},"startTime":1764877962599,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":2451,"timestamp":205997650920,"id":164,"parentId":152,"tags":{},"startTime":1764877962599,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-generateClientManifest","duration":64,"timestamp":205997653867,"id":166,"parentId":142,"tags":{},"startTime":1764877962602,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-createassets","duration":198,"timestamp":205997653736,"id":165,"parentId":142,"tags":{},"startTime":1764877962601,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":16388,"timestamp":205997639006,"id":152,"parentId":142,"tags":{},"startTime":1764877962587,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":128557,"timestamp":205997526862,"id":142,"parentId":124,"tags":{"name":"client"},"startTime":1764877962475,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":2118,"timestamp":205997655435,"id":167,"parentId":124,"tags":{},"startTime":1764877962603,"traceId":"500d2a2ef717ad05"},{"name":"compile-path","duration":307320,"timestamp":205997350804,"id":117,"tags":{"trigger":"/admin/gunbuilder/part-role-mappings","isTurbopack":false},"startTime":1764877962299,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-client","duration":214815,"timestamp":205997443521,"id":124,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764877962391,"traceId":"500d2a2ef717ad05"}] +[{"name":"handle-request","duration":389589,"timestamp":205997340656,"id":115,"tags":{"url":"/admin/gunbuilder/part-role-mappings","isTurbopack":false},"startTime":1764877962288,"traceId":"500d2a2ef717ad05"},{"name":"memory-usage","duration":0,"timestamp":205997730273,"id":168,"parentId":115,"tags":{"url":"/admin/gunbuilder/part-role-mappings","memory.rss":"456294400","memory.heapUsed":"163150416","memory.heapTotal":"207749120"},"startTime":1764877962678,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":8710,"timestamp":205997773588,"id":175,"parentId":174,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764877962721,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":14474,"timestamp":205997773756,"id":177,"parentId":174,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764877962721,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":16334,"timestamp":205997773776,"id":179,"parentId":174,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%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%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764877962722,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":17385,"timestamp":205997773769,"id":178,"parentId":174,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Flayout.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764877962721,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":18310,"timestamp":205997773719,"id":176,"parentId":174,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764877962721,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":18252,"timestamp":205997773784,"id":180,"parentId":174,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1764877962722,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":21819,"timestamp":205997770246,"id":174,"parentId":173,"tags":{},"startTime":1764877962718,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":973,"timestamp":205997793366,"id":182,"parentId":181,"tags":{},"startTime":1764877962741,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":2,"timestamp":205997794354,"id":184,"parentId":181,"tags":{},"startTime":1764877962742,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":22,"timestamp":205997794365,"id":185,"parentId":181,"tags":{},"startTime":1764877962742,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":3,"timestamp":205997794397,"id":186,"parentId":181,"tags":{},"startTime":1764877962742,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":4,"timestamp":205997794409,"id":187,"parentId":181,"tags":{},"startTime":1764877962742,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":266,"timestamp":205997794350,"id":183,"parentId":181,"tags":{},"startTime":1764877962742,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":639,"timestamp":205997795751,"id":188,"parentId":181,"tags":{},"startTime":1764877962743,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":1591,"timestamp":205997796401,"id":189,"parentId":181,"tags":{},"startTime":1764877962744,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":2152,"timestamp":205997799181,"id":190,"parentId":181,"tags":{},"startTime":1764877962747,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":112,"timestamp":205997801332,"id":191,"parentId":181,"tags":{},"startTime":1764877962749,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":56,"timestamp":205997801438,"id":192,"parentId":181,"tags":{},"startTime":1764877962749,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":1342,"timestamp":205997801497,"id":193,"parentId":181,"tags":{},"startTime":1764877962749,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-generateClientManifest","duration":35,"timestamp":205997803896,"id":195,"parentId":173,"tags":{},"startTime":1764877962752,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-createassets","duration":85,"timestamp":205997803851,"id":194,"parentId":173,"tags":{},"startTime":1764877962752,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":11897,"timestamp":205997793085,"id":181,"parentId":173,"tags":{},"startTime":1764877962741,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":35423,"timestamp":205997769592,"id":173,"parentId":170,"tags":{"name":"client"},"startTime":1764877962717,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":5259,"timestamp":205997805035,"id":196,"parentId":170,"tags":{},"startTime":1764877962753,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-client","duration":45147,"timestamp":205997765464,"id":170,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764877962713,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":6202,"timestamp":205997814137,"id":200,"parentId":198,"tags":{"request":"next-app-loader?name=app%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&page=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&appPaths=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&pagePath=private-next-app-dir%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764877962762,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":6815,"timestamp":205997814114,"id":199,"parentId":198,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764877962762,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":12717,"timestamp":205997812929,"id":198,"parentId":197,"tags":{},"startTime":1764877962761,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":952,"timestamp":205997827177,"id":207,"parentId":206,"tags":{},"startTime":1764877962775,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":6,"timestamp":205997828158,"id":209,"parentId":206,"tags":{},"startTime":1764877962776,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":1167,"timestamp":205997828175,"id":210,"parentId":206,"tags":{},"startTime":1764877962776,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":6,"timestamp":205997829363,"id":211,"parentId":206,"tags":{},"startTime":1764877962777,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":3,"timestamp":205997829380,"id":212,"parentId":206,"tags":{},"startTime":1764877962777,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":1610,"timestamp":205997828151,"id":208,"parentId":206,"tags":{},"startTime":1764877962776,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":378,"timestamp":205997830365,"id":213,"parentId":206,"tags":{},"startTime":1764877962778,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":589,"timestamp":205997830761,"id":214,"parentId":206,"tags":{},"startTime":1764877962778,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":757,"timestamp":205997831967,"id":215,"parentId":206,"tags":{},"startTime":1764877962780,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":58,"timestamp":205997832724,"id":216,"parentId":206,"tags":{},"startTime":1764877962780,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":53,"timestamp":205997832777,"id":217,"parentId":206,"tags":{},"startTime":1764877962781,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":181,"timestamp":205997832834,"id":218,"parentId":206,"tags":{},"startTime":1764877962781,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":7732,"timestamp":205997826919,"id":206,"parentId":197,"tags":{},"startTime":1764877962775,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":23407,"timestamp":205997812629,"id":197,"parentId":172,"tags":{"name":"server"},"startTime":1764877962760,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":1811,"timestamp":205997836098,"id":219,"parentId":172,"tags":{},"startTime":1764877962784,"traceId":"500d2a2ef717ad05"},{"name":"compile-path","duration":73053,"timestamp":205997765508,"id":171,"tags":{"trigger":"/_not-found","isTurbopack":false},"startTime":1764877962713,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-server","duration":73104,"timestamp":205997765540,"id":172,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764877962713,"traceId":"500d2a2ef717ad05"}] +[{"name":"client-success","duration":11,"timestamp":205998158977,"id":220,"parentId":3,"tags":{},"startTime":1764877963107,"traceId":"500d2a2ef717ad05"},{"name":"handle-request","duration":35978,"timestamp":205999573314,"id":221,"tags":{"url":"/admin/gunbuilder/part-role-mappings","isTurbopack":false},"startTime":1764877964521,"traceId":"500d2a2ef717ad05"},{"name":"memory-usage","duration":1,"timestamp":205999609363,"id":222,"parentId":221,"tags":{"url":"/admin/gunbuilder/part-role-mappings","memory.rss":"503398400","memory.heapUsed":"124303352","memory.heapTotal":"233947136"},"startTime":1764877964557,"traceId":"500d2a2ef717ad05"},{"name":"client-success","duration":18,"timestamp":205999945856,"id":224,"parentId":3,"tags":{},"startTime":1764877964894,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":25739,"timestamp":206000516842,"id":231,"parentId":229,"tags":{"request":"next-app-loader?name=app%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&page=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&appPaths=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&pagePath=private-next-app-dir%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764877965465,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":32803,"timestamp":206000516780,"id":230,"parentId":229,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764877965465,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":32912,"timestamp":206000516850,"id":232,"parentId":229,"tags":{"request":"next-app-loader?name=app%2Fadmin%2Fpage&page=%2Fadmin%2Fpage&appPaths=%2Fadmin%2Fpage&pagePath=private-next-app-dir%2Fadmin%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764877965465,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":39099,"timestamp":206000515559,"id":229,"parentId":228,"tags":{},"startTime":1764877965463,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":919,"timestamp":206000555758,"id":243,"parentId":242,"tags":{},"startTime":1764877965503,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":2,"timestamp":206000556693,"id":245,"parentId":242,"tags":{},"startTime":1764877965504,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":930,"timestamp":206000556706,"id":246,"parentId":242,"tags":{},"startTime":1764877965504,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":5,"timestamp":206000557656,"id":247,"parentId":242,"tags":{},"startTime":1764877965505,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":2,"timestamp":206000557677,"id":248,"parentId":242,"tags":{},"startTime":1764877965505,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":1232,"timestamp":206000556690,"id":244,"parentId":242,"tags":{},"startTime":1764877965504,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":224,"timestamp":206000558451,"id":249,"parentId":242,"tags":{},"startTime":1764877965506,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":371,"timestamp":206000558681,"id":250,"parentId":242,"tags":{},"startTime":1764877965506,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":895,"timestamp":206000559625,"id":251,"parentId":242,"tags":{},"startTime":1764877965507,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":70,"timestamp":206000560519,"id":252,"parentId":242,"tags":{},"startTime":1764877965508,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":53,"timestamp":206000560584,"id":253,"parentId":242,"tags":{},"startTime":1764877965508,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":248,"timestamp":206000560640,"id":254,"parentId":242,"tags":{},"startTime":1764877965508,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":6354,"timestamp":206000555588,"id":242,"parentId":228,"tags":{},"startTime":1764877965503,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":48615,"timestamp":206000514874,"id":228,"parentId":226,"tags":{"name":"server"},"startTime":1764877965463,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":1332,"timestamp":206000563504,"id":255,"parentId":226,"tags":{},"startTime":1764877965511,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-server","duration":54919,"timestamp":206000510220,"id":226,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764877965458,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":2505,"timestamp":206000569481,"id":264,"parentId":257,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1764877965517,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":2720,"timestamp":206000569442,"id":258,"parentId":257,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764877965517,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":4147,"timestamp":206000569473,"id":260,"parentId":257,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764877965517,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":7884,"timestamp":206000569477,"id":262,"parentId":257,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%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%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764877965517,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":8082,"timestamp":206000569470,"id":259,"parentId":257,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764877965517,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":8102,"timestamp":206000569475,"id":261,"parentId":257,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Flayout.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764877965517,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":12006,"timestamp":206000569479,"id":263,"parentId":257,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fadmin%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764877965517,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":14968,"timestamp":206000566558,"id":257,"parentId":256,"tags":{},"startTime":1764877965514,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":800,"timestamp":206000582526,"id":266,"parentId":265,"tags":{},"startTime":1764877965530,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":2,"timestamp":206000583338,"id":268,"parentId":265,"tags":{},"startTime":1764877965531,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":17,"timestamp":206000583349,"id":269,"parentId":265,"tags":{},"startTime":1764877965531,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":2,"timestamp":206000583375,"id":270,"parentId":265,"tags":{},"startTime":1764877965531,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":2,"timestamp":206000583385,"id":271,"parentId":265,"tags":{},"startTime":1764877965531,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":322,"timestamp":206000583335,"id":267,"parentId":265,"tags":{},"startTime":1764877965531,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":245,"timestamp":206000584158,"id":272,"parentId":265,"tags":{},"startTime":1764877965532,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":591,"timestamp":206000584409,"id":273,"parentId":265,"tags":{},"startTime":1764877965532,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":1471,"timestamp":206000593067,"id":274,"parentId":265,"tags":{},"startTime":1764877965541,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":71,"timestamp":206000594538,"id":275,"parentId":265,"tags":{},"startTime":1764877965542,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":41,"timestamp":206000594605,"id":276,"parentId":265,"tags":{},"startTime":1764877965542,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":806,"timestamp":206000594648,"id":277,"parentId":265,"tags":{},"startTime":1764877965542,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-generateClientManifest","duration":51,"timestamp":206000595944,"id":279,"parentId":256,"tags":{},"startTime":1764877965544,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-createassets","duration":124,"timestamp":206000595876,"id":278,"parentId":256,"tags":{},"startTime":1764877965544,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":14857,"timestamp":206000582264,"id":265,"parentId":256,"tags":{},"startTime":1764877965530,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":30847,"timestamp":206000566293,"id":256,"parentId":241,"tags":{"name":"client"},"startTime":1764877965514,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":1847,"timestamp":206000597156,"id":280,"parentId":241,"tags":{},"startTime":1764877965545,"traceId":"500d2a2ef717ad05"},{"name":"compile-path","duration":89131,"timestamp":206000510264,"id":227,"tags":{"trigger":"/admin","isTurbopack":false},"startTime":1764877965458,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-client","duration":48606,"timestamp":206000551070,"id":241,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764877965499,"traceId":"500d2a2ef717ad05"}] +[{"name":"client-success","duration":8,"timestamp":206000600818,"id":281,"parentId":3,"tags":{},"startTime":1764877965549,"traceId":"500d2a2ef717ad05"},{"name":"handle-request","duration":100586,"timestamp":206000508221,"id":225,"tags":{"url":"/admin?_rsc=1m3zv","isTurbopack":false},"startTime":1764877965456,"traceId":"500d2a2ef717ad05"},{"name":"memory-usage","duration":0,"timestamp":206000608839,"id":282,"parentId":225,"tags":{"url":"/admin?_rsc=1m3zv","memory.rss":"512212992","memory.heapUsed":"131686928","memory.heapTotal":"220921856"},"startTime":1764877965557,"traceId":"500d2a2ef717ad05"},{"name":"client-hmr-latency","duration":61000,"timestamp":206000551729,"id":283,"parentId":3,"tags":{"updatedModules":[],"page":"/admin/gunbuilder/part-role-mappings","isPageHidden":false},"startTime":1764877965560,"traceId":"500d2a2ef717ad05"},{"name":"handle-request","duration":6188,"timestamp":206000612899,"id":284,"tags":{"url":"/admin?_rsc=1njkv","isTurbopack":false},"startTime":1764877965561,"traceId":"500d2a2ef717ad05"},{"name":"memory-usage","duration":0,"timestamp":206000619121,"id":285,"parentId":284,"tags":{"url":"/admin?_rsc=1njkv","memory.rss":"512229376","memory.heapUsed":"132360472","memory.heapTotal":"220921856"},"startTime":1764877965567,"traceId":"500d2a2ef717ad05"},{"name":"handle-request","duration":73744,"timestamp":206670127413,"id":286,"tags":{"url":"/admin/gunbuilder/part-role-mappings","isTurbopack":false},"startTime":1764878635077,"traceId":"500d2a2ef717ad05"},{"name":"memory-usage","duration":0,"timestamp":206670201240,"id":287,"parentId":286,"tags":{"url":"/admin/gunbuilder/part-role-mappings","memory.rss":"355385344","memory.heapUsed":"121762944","memory.heapTotal":"127909888"},"startTime":1764878635151,"traceId":"500d2a2ef717ad05"},{"name":"client-success","duration":16,"timestamp":206670591831,"id":289,"parentId":3,"tags":{},"startTime":1764878635542,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":59007,"timestamp":206672642033,"id":296,"parentId":294,"tags":{"request":"next-app-loader?name=app%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&page=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&appPaths=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&pagePath=private-next-app-dir%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878637592,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":60531,"timestamp":206672641931,"id":295,"parentId":294,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878637592,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":61913,"timestamp":206672642041,"id":297,"parentId":294,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878637592,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":70930,"timestamp":206672637769,"id":294,"parentId":293,"tags":{},"startTime":1764878637588,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":946,"timestamp":206672710207,"id":308,"parentId":307,"tags":{},"startTime":1764878637660,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":2,"timestamp":206672711166,"id":310,"parentId":307,"tags":{},"startTime":1764878637661,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":923,"timestamp":206672711202,"id":311,"parentId":307,"tags":{},"startTime":1764878637661,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":4,"timestamp":206672712153,"id":312,"parentId":307,"tags":{},"startTime":1764878637662,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":5,"timestamp":206672712181,"id":313,"parentId":307,"tags":{},"startTime":1764878637662,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":1276,"timestamp":206672711162,"id":309,"parentId":307,"tags":{},"startTime":1764878637661,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":266,"timestamp":206672713001,"id":314,"parentId":307,"tags":{},"startTime":1764878637663,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":471,"timestamp":206672713272,"id":315,"parentId":307,"tags":{},"startTime":1764878637663,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":1073,"timestamp":206672714734,"id":316,"parentId":307,"tags":{},"startTime":1764878637665,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":80,"timestamp":206672715807,"id":317,"parentId":307,"tags":{},"startTime":1764878637666,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":41,"timestamp":206672715882,"id":318,"parentId":307,"tags":{},"startTime":1764878637666,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":335,"timestamp":206672715926,"id":319,"parentId":307,"tags":{},"startTime":1764878637666,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":7911,"timestamp":206672709963,"id":307,"parentId":293,"tags":{},"startTime":1764878637660,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":82779,"timestamp":206672636481,"id":293,"parentId":291,"tags":{"name":"server"},"startTime":1764878637586,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":1288,"timestamp":206672719281,"id":320,"parentId":291,"tags":{},"startTime":1764878637669,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-server","duration":92315,"timestamp":206672628589,"id":291,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764878637578,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":2161,"timestamp":206672726939,"id":330,"parentId":322,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1764878637677,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":2413,"timestamp":206672726909,"id":323,"parentId":322,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764878637677,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":3995,"timestamp":206672726932,"id":326,"parentId":322,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Flayout.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878637677,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":4092,"timestamp":206672726931,"id":325,"parentId":322,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878637677,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":8382,"timestamp":206672726934,"id":327,"parentId":322,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%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%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878637677,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":8470,"timestamp":206672726927,"id":324,"parentId":322,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764878637677,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":8470,"timestamp":206672726936,"id":328,"parentId":322,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fadmin%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878637677,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":20139,"timestamp":206672726937,"id":329,"parentId":322,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878637677,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":24210,"timestamp":206672722926,"id":322,"parentId":321,"tags":{},"startTime":1764878637673,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":729,"timestamp":206672748149,"id":332,"parentId":331,"tags":{},"startTime":1764878637698,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":2,"timestamp":206672748888,"id":334,"parentId":331,"tags":{},"startTime":1764878637699,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":16,"timestamp":206672748919,"id":335,"parentId":331,"tags":{},"startTime":1764878637699,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":3,"timestamp":206672748944,"id":336,"parentId":331,"tags":{},"startTime":1764878637699,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":2,"timestamp":206672748962,"id":337,"parentId":331,"tags":{},"startTime":1764878637699,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":317,"timestamp":206672748885,"id":333,"parentId":331,"tags":{},"startTime":1764878637699,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":193,"timestamp":206672749615,"id":338,"parentId":331,"tags":{},"startTime":1764878637700,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":391,"timestamp":206672749814,"id":339,"parentId":331,"tags":{},"startTime":1764878637700,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":2088,"timestamp":206672751152,"id":340,"parentId":331,"tags":{},"startTime":1764878637701,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":71,"timestamp":206672753240,"id":341,"parentId":331,"tags":{},"startTime":1764878637703,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":33,"timestamp":206672753307,"id":342,"parentId":331,"tags":{},"startTime":1764878637703,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":971,"timestamp":206672753343,"id":343,"parentId":331,"tags":{},"startTime":1764878637703,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-generateClientManifest","duration":164,"timestamp":206672755135,"id":345,"parentId":321,"tags":{},"startTime":1764878637705,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-createassets","duration":291,"timestamp":206672755010,"id":344,"parentId":321,"tags":{},"startTime":1764878637705,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":8091,"timestamp":206672747930,"id":331,"parentId":321,"tags":{},"startTime":1764878637698,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":33744,"timestamp":206672722287,"id":321,"parentId":306,"tags":{"name":"client"},"startTime":1764878637672,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":1873,"timestamp":206672756041,"id":346,"parentId":306,"tags":{},"startTime":1764878637706,"traceId":"500d2a2ef717ad05"},{"name":"compile-path","duration":129678,"timestamp":206672628655,"id":292,"tags":{"trigger":"/gunbuilder","isTurbopack":false},"startTime":1764878637579,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-client","duration":53987,"timestamp":206672704733,"id":306,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764878637655,"traceId":"500d2a2ef717ad05"}] +[{"name":"client-success","duration":2,"timestamp":206672759690,"id":347,"parentId":3,"tags":{},"startTime":1764878637710,"traceId":"500d2a2ef717ad05"},{"name":"handle-request","duration":148557,"timestamp":206672624493,"id":290,"tags":{"url":"/gunbuilder?_rsc=1m3zv","isTurbopack":false},"startTime":1764878637574,"traceId":"500d2a2ef717ad05"},{"name":"memory-usage","duration":0,"timestamp":206672773085,"id":348,"parentId":290,"tags":{"url":"/gunbuilder?_rsc=1m3zv","memory.rss":"383877120","memory.heapUsed":"141916280","memory.heapTotal":"152731648"},"startTime":1764878637723,"traceId":"500d2a2ef717ad05"},{"name":"client-hmr-latency","duration":75000,"timestamp":206672705016,"id":350,"parentId":3,"tags":{"updatedModules":[],"page":"/admin/gunbuilder/part-role-mappings","isPageHidden":false},"startTime":1764878637732,"traceId":"500d2a2ef717ad05"},{"name":"handle-request","duration":5384,"timestamp":206672777979,"id":349,"tags":{"url":"/gunbuilder?_rsc=52fbb","isTurbopack":false},"startTime":1764878637728,"traceId":"500d2a2ef717ad05"},{"name":"memory-usage","duration":0,"timestamp":206672783386,"id":351,"parentId":349,"tags":{"url":"/gunbuilder?_rsc=52fbb","memory.rss":"383696896","memory.heapUsed":"130199072","memory.heapTotal":"152633344"},"startTime":1764878637733,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":13466,"timestamp":206673265865,"id":358,"parentId":356,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878638216,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":13483,"timestamp":206673265874,"id":359,"parentId":356,"tags":{"request":"next-app-loader?name=app%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&page=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&appPaths=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&pagePath=private-next-app-dir%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878638216,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":13961,"timestamp":206673265880,"id":360,"parentId":356,"tags":{"request":"next-app-loader?name=app%2Fadmin%2Fpage&page=%2Fadmin%2Fpage&appPaths=%2Fadmin%2Fpage&pagePath=private-next-app-dir%2Fadmin%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878638216,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":14668,"timestamp":206673265809,"id":357,"parentId":356,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878638216,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":23989,"timestamp":206673264276,"id":356,"parentId":355,"tags":{},"startTime":1764878638214,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":2117,"timestamp":206673290566,"id":373,"parentId":372,"tags":{},"startTime":1764878638240,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":2,"timestamp":206673292702,"id":375,"parentId":372,"tags":{},"startTime":1764878638243,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":1331,"timestamp":206673292718,"id":376,"parentId":372,"tags":{},"startTime":1764878638243,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":4,"timestamp":206673294066,"id":377,"parentId":372,"tags":{},"startTime":1764878638244,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":2,"timestamp":206673294081,"id":378,"parentId":372,"tags":{},"startTime":1764878638244,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":1626,"timestamp":206673292698,"id":374,"parentId":372,"tags":{},"startTime":1764878638243,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":268,"timestamp":206673294948,"id":379,"parentId":372,"tags":{},"startTime":1764878638245,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":537,"timestamp":206673295223,"id":380,"parentId":372,"tags":{},"startTime":1764878638245,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":1162,"timestamp":206673297537,"id":381,"parentId":372,"tags":{},"startTime":1764878638247,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":73,"timestamp":206673298699,"id":382,"parentId":372,"tags":{},"startTime":1764878638249,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":52,"timestamp":206673298765,"id":383,"parentId":372,"tags":{},"startTime":1764878638249,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":225,"timestamp":206673298822,"id":384,"parentId":372,"tags":{},"startTime":1764878638249,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":9822,"timestamp":206673290213,"id":372,"parentId":355,"tags":{},"startTime":1764878638240,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":38824,"timestamp":206673263744,"id":355,"parentId":353,"tags":{"name":"server"},"startTime":1764878638214,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":1412,"timestamp":206673302584,"id":385,"parentId":353,"tags":{},"startTime":1764878638252,"traceId":"500d2a2ef717ad05"},{"name":"compile-path","duration":43044,"timestamp":206673261300,"id":354,"tags":{"trigger":"/admin","isTurbopack":false},"startTime":1764878638211,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-server","duration":43168,"timestamp":206673261262,"id":353,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764878638211,"traceId":"500d2a2ef717ad05"}] +[{"name":"handle-request","duration":57971,"timestamp":206673258217,"id":352,"tags":{"url":"/admin?_rsc=1acsq","isTurbopack":false},"startTime":1764878638208,"traceId":"500d2a2ef717ad05"},{"name":"memory-usage","duration":0,"timestamp":206673316224,"id":386,"parentId":352,"tags":{"url":"/admin?_rsc=1acsq","memory.rss":"399147008","memory.heapUsed":"143205912","memory.heapTotal":"168198144"},"startTime":1764878638266,"traceId":"500d2a2ef717ad05"},{"name":"handle-request","duration":7265,"timestamp":206673319560,"id":387,"tags":{"url":"/admin?_rsc=1njkv","isTurbopack":false},"startTime":1764878638269,"traceId":"500d2a2ef717ad05"},{"name":"memory-usage","duration":1,"timestamp":206673326857,"id":388,"parentId":387,"tags":{"url":"/admin?_rsc=1njkv","memory.rss":"399196160","memory.heapUsed":"144323728","memory.heapTotal":"168198144"},"startTime":1764878638277,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":25346,"timestamp":206677344831,"id":395,"parentId":393,"tags":{"request":"next-app-loader?name=app%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&page=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&appPaths=%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage&pagePath=private-next-app-dir%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878642295,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":25356,"timestamp":206677344837,"id":396,"parentId":393,"tags":{"request":"next-app-loader?name=app%2Fgunbuilder%2Fpage&page=%2Fgunbuilder%2Fpage&appPaths=%2Fgunbuilder%2Fpage&pagePath=private-next-app-dir%2Fgunbuilder%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878642295,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":25358,"timestamp":206677344840,"id":397,"parentId":393,"tags":{"request":"next-app-loader?name=app%2Fadmin%2Fpage&page=%2Fadmin%2Fpage&appPaths=%2Fadmin%2Fpage&pagePath=private-next-app-dir%2Fadmin%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878642295,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":28149,"timestamp":206677344782,"id":394,"parentId":393,"tags":{"request":"next-app-loader?name=app%2F_not-found%2Fpage&page=%2F_not-found%2Fpage&appPaths=&pagePath=node_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878642295,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":38289,"timestamp":206677344846,"id":398,"parentId":393,"tags":{"request":"next-app-loader?name=app%2Fadmin%2Fgunbuilder%2Fmerchant-category-mappings%2Fpage&page=%2Fadmin%2Fgunbuilder%2Fmerchant-category-mappings%2Fpage&appPaths=%2Fadmin%2Fgunbuilder%2Fmerchant-category-mappings%2Fpage&pagePath=private-next-app-dir%2Fadmin%2Fgunbuilder%2Fmerchant-category-mappings%2Fpage.tsx&appDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp&pageExtensions=tsx&pageExtensions=ts&pageExtensions=jsx&pageExtensions=js&rootDir=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype&isDev=true&tsconfigPath=tsconfig.json&basePath=&assetPrefix=&nextConfigOutput=&preferredRegion=&middlewareConfig=e30%3D!"},"startTime":1764878642295,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":50956,"timestamp":206677337894,"id":393,"parentId":392,"tags":{},"startTime":1764878642288,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":1187,"timestamp":206677390062,"id":415,"parentId":414,"tags":{},"startTime":1764878642340,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":2,"timestamp":206677391290,"id":417,"parentId":414,"tags":{},"startTime":1764878642341,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":900,"timestamp":206677391299,"id":418,"parentId":414,"tags":{},"startTime":1764878642341,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":3,"timestamp":206677392207,"id":419,"parentId":414,"tags":{},"startTime":1764878642342,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":1,"timestamp":206677392215,"id":420,"parentId":414,"tags":{},"startTime":1764878642342,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":1121,"timestamp":206677391262,"id":416,"parentId":414,"tags":{},"startTime":1764878642341,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":171,"timestamp":206677392804,"id":421,"parentId":414,"tags":{},"startTime":1764878642343,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":318,"timestamp":206677392980,"id":422,"parentId":414,"tags":{},"startTime":1764878642343,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":452,"timestamp":206677393734,"id":423,"parentId":414,"tags":{},"startTime":1764878642344,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":36,"timestamp":206677394186,"id":424,"parentId":414,"tags":{},"startTime":1764878642344,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":26,"timestamp":206677394220,"id":425,"parentId":414,"tags":{},"startTime":1764878642344,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":126,"timestamp":206677394248,"id":426,"parentId":414,"tags":{},"startTime":1764878642344,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":5778,"timestamp":206677389870,"id":414,"parentId":392,"tags":{},"startTime":1764878642340,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":60749,"timestamp":206677337535,"id":392,"parentId":390,"tags":{"name":"server"},"startTime":1764878642287,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":1511,"timestamp":206677398294,"id":427,"parentId":390,"tags":{},"startTime":1764878642348,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-server","duration":67624,"timestamp":206677332515,"id":390,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764878642282,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":2546,"timestamp":206677405673,"id":438,"parentId":429,"tags":{"request":"next-client-pages-loader?absolutePagePath=%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fnot-found-error.js&page=%2F_not-found%2Fpage!"},"startTime":1764878642356,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":2779,"timestamp":206677405629,"id":430,"parentId":429,"tags":{"request":"/Users/sean/Dev/gunbuilder-prototype/node_modules/next/dist/compiled/@next/react-refresh-utils/dist/runtime.js"},"startTime":1764878642356,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":3455,"timestamp":206677405661,"id":432,"parentId":429,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fadmin%2Fgunbuilder%2Fpart-role-mappings%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878642356,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":3650,"timestamp":206677405670,"id":436,"parentId":429,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fgunbuilder%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878642356,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":4270,"timestamp":206677405663,"id":433,"parentId":429,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Flayout.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878642356,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":5494,"timestamp":206677405664,"id":434,"parentId":429,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fapp-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Fclient-page.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Ferror-boundary.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Flayout-router.js%22%2C%22ids%22%3A%5B%5D%7D&modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%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%2Fsean%2FDev%2Fgunbuilder-prototype%2Fnode_modules%2Fnext%2Fdist%2Fclient%2Fcomponents%2Frender-from-template-context.js%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878642356,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":5549,"timestamp":206677405656,"id":431,"parentId":429,"tags":{"request":"./node_modules/next/dist/client/app-next-dev.js"},"startTime":1764878642356,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":5541,"timestamp":206677405668,"id":435,"parentId":429,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fadmin%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878642356,"traceId":"500d2a2ef717ad05"},{"name":"add-entry","duration":18921,"timestamp":206677405671,"id":437,"parentId":429,"tags":{"request":"next-flight-client-entry-loader?modules=%7B%22request%22%3A%22%2FUsers%2Fsean%2FDev%2Fgunbuilder-prototype%2Fapp%2Fadmin%2Fgunbuilder%2Fmerchant-category-mappings%2Fpage.tsx%22%2C%22ids%22%3A%5B%5D%7D&server=false!"},"startTime":1764878642356,"traceId":"500d2a2ef717ad05"},{"name":"make","duration":23268,"timestamp":206677401350,"id":429,"parentId":428,"tags":{},"startTime":1764878642351,"traceId":"500d2a2ef717ad05"},{"name":"chunk-graph","duration":855,"timestamp":206677425534,"id":440,"parentId":439,"tags":{},"startTime":1764878642375,"traceId":"500d2a2ef717ad05"},{"name":"optimize-modules","duration":3,"timestamp":206677426400,"id":442,"parentId":439,"tags":{},"startTime":1764878642376,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunks","duration":34,"timestamp":206677426410,"id":443,"parentId":439,"tags":{},"startTime":1764878642376,"traceId":"500d2a2ef717ad05"},{"name":"optimize-tree","duration":3,"timestamp":206677426456,"id":444,"parentId":439,"tags":{},"startTime":1764878642376,"traceId":"500d2a2ef717ad05"},{"name":"optimize-chunk-modules","duration":2,"timestamp":206677426469,"id":445,"parentId":439,"tags":{},"startTime":1764878642376,"traceId":"500d2a2ef717ad05"},{"name":"optimize","duration":293,"timestamp":206677426397,"id":441,"parentId":439,"tags":{},"startTime":1764878642376,"traceId":"500d2a2ef717ad05"},{"name":"module-hash","duration":188,"timestamp":206677427118,"id":446,"parentId":439,"tags":{},"startTime":1764878642377,"traceId":"500d2a2ef717ad05"},{"name":"code-generation","duration":369,"timestamp":206677427311,"id":447,"parentId":439,"tags":{},"startTime":1764878642377,"traceId":"500d2a2ef717ad05"},{"name":"hash","duration":1240,"timestamp":206677428360,"id":448,"parentId":439,"tags":{},"startTime":1764878642378,"traceId":"500d2a2ef717ad05"},{"name":"code-generation-jobs","duration":61,"timestamp":206677429600,"id":449,"parentId":439,"tags":{},"startTime":1764878642380,"traceId":"500d2a2ef717ad05"},{"name":"module-assets","duration":40,"timestamp":206677429659,"id":450,"parentId":439,"tags":{},"startTime":1764878642380,"traceId":"500d2a2ef717ad05"},{"name":"create-chunk-assets","duration":874,"timestamp":206677429702,"id":451,"parentId":439,"tags":{},"startTime":1764878642380,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-generateClientManifest","duration":44,"timestamp":206677430888,"id":453,"parentId":428,"tags":{},"startTime":1764878642381,"traceId":"500d2a2ef717ad05"},{"name":"NextJsBuildManifest-createassets","duration":76,"timestamp":206677430858,"id":452,"parentId":428,"tags":{},"startTime":1764878642381,"traceId":"500d2a2ef717ad05"},{"name":"seal","duration":6307,"timestamp":206677425299,"id":439,"parentId":428,"tags":{},"startTime":1764878642375,"traceId":"500d2a2ef717ad05"},{"name":"webpack-compilation","duration":30493,"timestamp":206677401124,"id":428,"parentId":413,"tags":{"name":"client"},"startTime":1764878642351,"traceId":"500d2a2ef717ad05"},{"name":"emit","duration":1915,"timestamp":206677431627,"id":454,"parentId":413,"tags":{},"startTime":1764878642382,"traceId":"500d2a2ef717ad05"},{"name":"compile-path","duration":101362,"timestamp":206677332580,"id":391,"tags":{"trigger":"/admin/gunbuilder/merchant-category-mappings","isTurbopack":false},"startTime":1764878642282,"traceId":"500d2a2ef717ad05"},{"name":"webpack-invalidated-client","duration":49885,"timestamp":206677384299,"id":413,"parentId":3,"tags":{"trigger":"manual"},"startTime":1764878642334,"traceId":"500d2a2ef717ad05"}] diff --git a/app/admin/gunbuilder/categories/page.tsx b/app/admin/gunbuilder/categories/page.tsx new file mode 100644 index 0000000..f394cf6 --- /dev/null +++ b/app/admin/gunbuilder/categories/page.tsx @@ -0,0 +1,125 @@ +// app/admin/categories/page.tsx +"use client"; + +import { useEffect, useState } from "react"; +import { useAuth } from "@/context/AuthContext"; +import { + fetchAdminCategories, + type AdminCategory, +} from "@/lib/api/adminCategoryMappings"; + +export default function AdminCategoriesPage() { + const { token } = useAuth(); + const [categories, setCategories] = useState([]); + const [loading, setLoading] = useState(true); + const [error, setError] = useState(null); + + useEffect(() => { + if (!token) return; + + const load = async () => { + try { + setLoading(true); + const cats = await fetchAdminCategories(token); + setCategories(cats); + } catch (e: any) { + console.error(e); + setError(e?.message ?? "Failed to load categories"); + } finally { + setLoading(false); + } + }; + + load(); + }, [token]); + + if (!token) { + return ( +
+ You must be logged in to view this page. +
+ ); + } + + return ( +
+ {/* Header */} +
+
+

+ Canonical categories +

+

+ These are your standardized builder categories and their groupings. +

+
+ {/* Placeholder for future actions (add/edit) */} + {/* */} +
+ + {/* Error */} + {error && ( +
+ {error} +
+ )} + + {/* Table */} + {loading ? ( +
Loading…
+ ) : ( +
+ + + + + + + + + + + + {categories.map((cat) => ( + + + + + + + + ))} + + {categories.length === 0 && ( + + + + )} + +
GroupNameSlugSort orderDescription
+ {cat.groupName ?? "—"} + {cat.name} + {cat.slug} + + {cat.sortOrder ?? "—"} + + {cat.description || ( + No description + )} +
+ No categories found. Seed the part_categories{" "} + table to get started. +
+
+ )} +
+ ); +} \ No newline at end of file diff --git a/app/admin/gunbuilder/merchant-category-mappings/page.tsx b/app/admin/gunbuilder/merchant-category-mappings/page.tsx new file mode 100644 index 0000000..ee2dc14 --- /dev/null +++ b/app/admin/gunbuilder/merchant-category-mappings/page.tsx @@ -0,0 +1,241 @@ +"use client"; + +import { useEffect, useState } from "react"; +import { useApi } from "@/lib/useApi"; + +type Merchant = { + id: number; + name: string; +}; + +type CategoryMapping = { + id: number; + merchantId: number; + merchantName: string; + rawCategoryPath: string; + partCategoryId: number | null; + partCategoryName?: string | null; +}; + +// Matches the Spring MerchantCategoryMappingDto record +type MerchantCategoryMappingDto = { + id: number; + merchantId: number; + merchantName: string; + rawCategoryPath: string; + partCategoryId: number | null; + partCategoryName?: string | null; +}; + +export default function MerchantCategoryMappingPage() { + const { get, post } = useApi(); + + const [merchants, setMerchants] = useState([]); + const [selectedMerchantId, setSelectedMerchantId] = useState( + null + ); + const [mappings, setMappings] = useState([]); + const [loadingMerchants, setLoadingMerchants] = useState(false); + const [loadingMappings, setLoadingMappings] = useState(false); + const [savingId, setSavingId] = useState(null); + const [error, setError] = useState(null); + + // 1) Load merchants for the dropdown + useEffect(() => { + setLoadingMerchants(true); + setError(null); + + get("/api/admin/category-mappings/merchants") + .then((data) => { + setMerchants(data); + if (data.length > 0 && selectedMerchantId == null) { + setSelectedMerchantId(data[0].id); + } + }) + .catch((err: any) => { + console.error("Failed to load merchants", err); + setError( + err instanceof Error ? err.message : "Failed to load merchants" + ); + }) + .finally(() => setLoadingMerchants(false)); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + // 2) Load mappings when merchant changes (THIS sends merchantId) + useEffect(() => { + if (selectedMerchantId == null) return; + + setLoadingMappings(true); + setError(null); + + get( + `/api/admin/category-mappings?merchantId=${selectedMerchantId}` + ) + .then((data) => { + setMappings(data); + }) + .catch((err: any) => { + console.error("Failed to load category mappings", err); + setError( + err instanceof Error ? err.message : "Failed to load category mappings" + ); + }) + .finally(() => setLoadingMappings(false)); + }, [selectedMerchantId]); + + // 3) Save a single mapping row (adjust endpoint if yours differs) + const handleSaveMapping = async ( + mappingId: number, + updated: { partCategoryId: number | null } + ) => { + setSavingId(mappingId); + setError(null); + try { + const updatedMapping = await post( + `/api/admin/category-mappings/${mappingId}`, + { + partCategoryId: updated.partCategoryId, + } + ); + + setMappings((prev) => + prev.map((m) => (m.id === mappingId ? { + ...m, + // map Java DTO fields back into your UI model + merchantId: updatedMapping.merchantId, + merchantName: updatedMapping.merchantName, + rawCategoryPath: updatedMapping.rawCategoryPath, + partCategoryId: updatedMapping.partCategoryId, + partCategoryName: updatedMapping.partCategoryName, + } : m)) + ); + } catch (err: any) { + console.error("Failed to save mapping", err); + setError( + err instanceof Error ? err.message : "Failed to save mapping" + ); + } finally { + setSavingId(null); + } + }; + + return ( +
+
+

+ Merchant Category Mapping +

+ +
+ Merchant: + +
+
+ + {error && ( +
+ {error} +
+ )} + +
+
+ Category Mappings +
+ + {loadingMappings ? ( +
Loading mappings…
+ ) : mappings.length === 0 ? ( +
+ No mappings found for this merchant. +
+ ) : ( + + + + + + + + + + {mappings.map((m) => ( + + + + + + ))} + +
+ Merchant Category + + Global Category + + Actions +
+ {m.rawCategoryPath} + + {/* For now, simple text input for partCategoryId. + You can swap this for a select populated from /api/admin/categories */} + { + const value = e.target.value + ? Number(e.target.value) + : null; + setMappings((prev) => + prev.map((row) => + row.id === m.id + ? { ...row, partCategoryId: value } + : row + ) + ); + }} + /> + {m.partCategoryName && ( +
+ {m.partCategoryName} +
+ )} +
+ +
+ )} +
+
+ ); +} \ No newline at end of file diff --git a/app/gunbuilder/admin/merchants/page.tsx b/app/admin/gunbuilder/merchants/page.tsx similarity index 100% rename from app/gunbuilder/admin/merchants/page.tsx rename to app/admin/gunbuilder/merchants/page.tsx diff --git a/app/admin/gunbuilder/part-role-mappings/page.tsx b/app/admin/gunbuilder/part-role-mappings/page.tsx new file mode 100644 index 0000000..294bf48 --- /dev/null +++ b/app/admin/gunbuilder/part-role-mappings/page.tsx @@ -0,0 +1,228 @@ +// app/admin/category-mappings/page.tsx +"use client"; + +import { useEffect, useState } from "react"; +import { useAuth } from "@/context/AuthContext"; +import { + fetchAdminCategories, + fetchPartRoleMappings, + createPartRoleMapping, + updatePartRoleMapping, + deletePartRoleMapping, + type AdminCategory, + type AdminPartRoleMapping, +} from "@/lib/api/adminCategoryMappings"; + +export default function AdminCategoryMappingsPage() { + const { token } = useAuth(); + const [categories, setCategories] = useState([]); + const [mappings, setMappings] = useState([]); + const [platform, setPlatform] = useState("AR-15"); + const [loading, setLoading] = useState(true); + const [saving, setSaving] = useState(false); + const [error, setError] = useState(null); + + useEffect(() => { + if (!token) return; + + const load = async () => { + try { + setLoading(true); + const [cats, maps] = await Promise.all([ + fetchAdminCategories(token), + fetchPartRoleMappings(token, platform), + ]); + setCategories(cats); + setMappings(maps); + } catch (e: any) { + console.error(e); + setError(e?.message ?? "Failed to load mappings"); + } finally { + setLoading(false); + } + }; + + load(); + }, [token, platform]); + + const handleCreate = async () => { + if (!token) return; + const defaultCategory = categories[0]; + if (!defaultCategory) return; + + try { + setSaving(true); + const created = await createPartRoleMapping(token, { + platform, + partRole: "NEW_PART_ROLE", + categorySlug: defaultCategory.slug, + }); + setMappings((prev) => [...prev, created]); + } catch (e: any) { + console.error(e); + setError(e?.message ?? "Failed to create mapping"); + } finally { + setSaving(false); + } + }; + + const handleUpdate = async (row: AdminPartRoleMapping, updates: Partial) => { + if (!token) return; + try { + setSaving(true); + const updated = await updatePartRoleMapping(token, row.id, { + platform: updates.platform ?? row.platform, + partRole: updates.partRole ?? row.partRole, + categorySlug: updates.categorySlug ?? row.categorySlug, + notes: updates.notes ?? row.notes ?? undefined, + }); + setMappings((prev) => prev.map((m) => (m.id === row.id ? updated : m))); + } catch (e: any) { + console.error(e); + setError(e?.message ?? "Failed to update mapping"); + } finally { + setSaving(false); + } + }; + + const handleDelete = async (row: AdminPartRoleMapping) => { + if (!token) return; + if (!confirm(`Delete mapping for ${row.partRole}?`)) return; + + try { + setSaving(true); + await deletePartRoleMapping(token, row.id); + setMappings((prev) => prev.filter((m) => m.id !== row.id)); + } catch (e: any) { + console.error(e); + setError(e?.message ?? "Failed to delete mapping"); + } finally { + setSaving(false); + } + }; + + if (!token) { + return
You must be logged in to view this page.
; + } + + return ( +
+
+

+ Part role → category mappings +

+

+ FOR LATER! Advanced mapping: defines which canonical category each builder part role + uses for a given platform. +

+
+ + +
+
+ + {error && ( +
+ {error} +
+ )} + + {loading ? ( +
Loading…
+ ) : ( +
+ + + + + + + + + + + + + {mappings.map((row) => ( + + + + + + + + + ))} + + {mappings.length === 0 && ( + + + + )} + +
PlatformPart roleCategoryGroupNotesActions
{row.platform} + { + if (e.target.value !== row.partRole) { + handleUpdate(row, { partRole: e.target.value }); + } + }} + /> + + + {row.groupName} + { + if (e.target.value !== (row.notes ?? "")) { + handleUpdate(row, { notes: e.target.value }); + } + }} + /> + + +
+ No mappings yet for {platform}. Click “Add mapping” to get started. +
+
+ )} +
+ ); +} \ No newline at end of file diff --git a/app/admin/page.tsx b/app/admin/page.tsx new file mode 100644 index 0000000..11287db --- /dev/null +++ b/app/admin/page.tsx @@ -0,0 +1,67 @@ +"use client"; + +import Link from "next/link"; +import { useAuth } from "@/context/AuthContext"; + +export default function AdminHomePage() { + const { token } = useAuth(); + + if (!token) { + return ( +
+ You must be logged in to view this page. +
+ ); + } + + const cards = [ + { + title: "Canonical categories", + href: "admin/gunbuilder/categories", + description: + "Manage the core builder categories and their group/grouping + sort order.", + }, + { + title: "Part role mappings", + href: "/admin/gunbuilder/part-role-mappings", + description: + "Advanced: map logical builder part roles to canonical categories per platform.", + }, + { + title: "Merchant category mappings", + href: "/admin/gunbuilder/merchant-category-mappings", + description: + "Map raw merchant feed categories to your canonical categories.", + }, + ]; + + return ( +
+
+

+ Admin +

+

+ Internal tools to keep your builder data clean and consistent. +

+
+ +
+ {cards.map((card) => ( + +

+ {card.title} +

+

+ {card.description} +

+ + ))} +
+
+ ); +} \ No newline at end of file diff --git a/app/gunbuilder/admin/category-mappings/page.tsx b/app/gunbuilder/admin/category-mappings/page.tsx deleted file mode 100644 index 29d0d1c..0000000 --- a/app/gunbuilder/admin/category-mappings/page.tsx +++ /dev/null @@ -1,356 +0,0 @@ -"use client"; - -import { useEffect, useState, useMemo } from "react"; - -const API_BASE_URL = - process.env.NEXT_PUBLIC_API_BASE_URL ?? "http://localhost:8080"; - -type Merchant = { - id: number; - name: string; -}; - -type Mapping = { - id: number | null; // might be null if just created client-side - merchantId: number; - merchantName: string; - rawCategory: string; - mappedPartRole: string | null; -}; - -type UpsertRequest = { - merchantId: number; - rawCategory: string; - mappedPartRole: string | null; -}; - -// Keep this in sync with your backend `partRole` values -const PART_ROLE_OPTIONS = [ - { value: "", label: "— Unmapped —" }, - // Lower / fire control - { value: "lower-receiver", label: "Lower Receiver" }, - { value: "lower-parts-kit", label: "Lower Parts Kit" }, - { value: "trigger", label: "Trigger / Trigger Kit" }, - { value: "pistol-grip", label: "Pistol Grip" }, - { value: "safety-selector", label: "Safety Selector" }, - - // Upper - { value: "upper-receiver", label: "Upper Receiver" }, - { value: "barrel", label: "Barrel" }, - { value: "handguard", label: "Handguard" }, - { value: "gas-system", label: "Gas System / Gas Block" }, - { value: "muzzle-device", label: "Muzzle Device" }, - { value: "suppressor", label: "Suppressor" }, - - // Furniture / sights / optics - { value: "stock", label: "Stock" }, - { value: "buffer-kit", label: "Buffer Kit" }, - { value: "charging-handle", label: "Charging Handle" }, - { value: "sight", label: "Iron / Backup Sight" }, - { value: "optic", label: "Optic" }, - { value: "other", label: "Other / Ignore" }, -]; - -export default function CategoryMappingsPage() { - const [merchants, setMerchants] = useState([]); - const [selectedMerchantId, setSelectedMerchantId] = useState( - null, - ); - const [mappings, setMappings] = useState([]); - const [loadingMappings, setLoadingMappings] = useState(false); - const [saving, setSaving] = useState(false); - const [error, setError] = useState(null); - const [successMessage, setSuccessMessage] = useState(null); - const [showOnlyUnmapped, setShowOnlyUnmapped] = useState(false); - - const sortedMappings = useMemo(() => { - // Mapped rows first, then unmapped; within each group, alpha by rawCategory - return [...mappings].sort((a, b) => { - const aMapped = !!a.mappedPartRole; - const bMapped = !!b.mappedPartRole; - - if (aMapped !== bMapped) { - return aMapped ? -1 : 1; // mapped first - } - - return a.rawCategory.localeCompare(b.rawCategory); - }); - }, [mappings]); - - const visibleMappings = useMemo( - () => - showOnlyUnmapped - ? sortedMappings.filter((m) => !m.mappedPartRole) - : sortedMappings, - [sortedMappings, showOnlyUnmapped], - ); - - // Load merchants - useEffect(() => { - async function fetchMerchants() { - try { - const res = await fetch(`${API_BASE_URL}/admin/merchants`); - if (!res.ok) { - throw new Error(`Failed to load merchants (${res.status})`); - } - const data: Merchant[] = await res.json(); - setMerchants(data); - - // Auto-select the first merchant if you want - if (data.length > 0 && selectedMerchantId === null) { - setSelectedMerchantId(data[0].id); - } - } catch (err: any) { - console.error(err); - setError(err.message ?? "Failed to load merchants"); - } - } - - fetchMerchants(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - // Load mappings for selected merchant - useEffect(() => { - if (!selectedMerchantId) return; - - const controller = new AbortController(); - - async function fetchMappings() { - try { - setLoadingMappings(true); - setError(null); - setSuccessMessage(null); - - const url = `${API_BASE_URL}/admin/merchant-category-mappings?merchantId=${selectedMerchantId}`; - const res = await fetch(url, { signal: controller.signal }); - - if (!res.ok) { - throw new Error(`Failed to load mappings (${res.status})`); - } - - const data = (await res.json()) as Mapping[]; - setMappings(data); - } catch (err: any) { - if (err.name === "AbortError") return; - console.error(err); - setError(err.message ?? "Failed to load mappings"); - } finally { - setLoadingMappings(false); - } - } - - fetchMappings(); - - return () => controller.abort(); - }, [selectedMerchantId]); - - const handleChangePartRole = (rawCategory: string, newRole: string) => { - setMappings((prev) => - prev.map((m) => - m.rawCategory === rawCategory - ? { ...m, mappedPartRole: newRole || null } - : m, - ), - ); - }; - - const handleSave = async () => { - if (!selectedMerchantId) return; - setSaving(true); - setError(null); - setSuccessMessage(null); - - try { - // Save each mapping in parallel - const requests: Promise[] = mappings.map((m) => { - const payload: UpsertRequest = { - merchantId: selectedMerchantId, - rawCategory: m.rawCategory, - mappedPartRole: m.mappedPartRole, - }; - - return fetch(`${API_BASE_URL}/admin/merchant-category-mappings`, { - method: "POST", - headers: { - "Content-Type": "application/json", - }, - body: JSON.stringify(payload), - }); - }); - - const responses = await Promise.all(requests); - const failed = responses.filter((r) => !r.ok); - - if (failed.length > 0) { - throw new Error(`Some mappings failed to save (${failed.length})`); - } - - setSuccessMessage("Mappings saved. Re-run the import to apply changes."); - } catch (err: any) { - console.error(err); - setError(err.message ?? "Failed to save mappings"); - } finally { - setSaving(false); - } - }; - - const selectedMerchantName = - merchants.find((m) => m.id === selectedMerchantId)?.name ?? "—"; - - return ( -
-
-
-
-

- Shadow Standard / Admin -

-

- Merchant Category Mapping -

-

- Normalize each merchant's category names into your internal - part roles (upper, barrel, handguard, etc.). Unmapped categories - will be skipped during import until they are mapped here. -

-
- -
- - -
-
- -
- {error && ( -
- {error} -
- )} - {successMessage && ( -
- {successMessage} -
- )} - - {!selectedMerchantId ? ( -

- Choose a merchant above to view category mappings. -

- ) : loadingMappings ? ( -

- Loading mappings for {selectedMerchantName}… -

- ) : mappings.length === 0 ? ( -

- No category rows yet for this merchant. Once you run an import, - discovered categories will appear here automatically. -

- ) : ( - <> -
-
- Mappings for{" "} - {selectedMerchantName}.{" "} - Set a part role for each raw category. Unmapped categories will - be skipped by the importer. -
- -
- -
- - - - - - - - - - {visibleMappings.map((m) => ( - - - - - - ))} - -
Raw CategoryMapped Part RoleStatus
- {m.rawCategory} - - - - {m.mappedPartRole ? ( - - Mapped - - ) : ( - - Unmapped / Ignored - - )} -
-
- -
- -
- - )} -
-
-
- ); -} \ No newline at end of file diff --git a/app/layout.tsx b/app/layout.tsx index dc9a196..76906c9 100644 --- a/app/layout.tsx +++ b/app/layout.tsx @@ -3,14 +3,13 @@ import "./globals.css"; import type { ReactNode } from "react"; import { AuthProvider } from "@/context/AuthContext"; -import { TopNav } from "@/components/TopNav"; // or default import if that's how you exported it +import { TopNav } from "@/components/TopNav"; import { BuilderNav } from "@/components/BuilderNav"; export default function RootLayout({ children }: { children: ReactNode }) { return ( - {/* AuthProvider wraps everything that uses useAuth */} diff --git a/app/lib/api/adminCategoryMappings.ts b/app/lib/api/adminCategoryMappings.ts deleted file mode 100644 index 5dd60d7..0000000 --- a/app/lib/api/adminCategoryMappings.ts +++ /dev/null @@ -1,73 +0,0 @@ -import { apiFetch } from "@/lib/useApi"; - -export type AdminCategory = { - id: number; - slug: string; - name: string; - description?: string | null; - groupName?: string | null; - sortOrder?: number | null; -}; - -export type AdminPartRoleMapping = { - id: number; - platform: string; - partRole: string; - categorySlug: string; - categoryName: string; - groupName?: string | null; - notes?: string | null; -}; - -export async function fetchAdminCategories(token: string) { - return apiFetch("/api/admin/categories", { - token, - }); -} - -export async function fetchPartRoleMappings(token: string, platform = "AR-15") { - const params = new URLSearchParams({ platform }); - return apiFetch(`/api/admin/category-mappings?${params.toString()}`, { - token, - }); -} - -export async function createPartRoleMapping( - token: string, - payload: { - platform: string; - partRole: string; - categorySlug: string; - notes?: string; - }, -) { - return apiFetch("/api/admin/category-mappings", { - method: "POST", - token, - body: payload, - }); -} - -export async function updatePartRoleMapping( - token: string, - id: number, - payload: { - platform: string; - partRole: string; - categorySlug: string; - notes?: string; - }, -) { - return apiFetch(`/api/admin/category-mappings/${id}`, { - method: "PUT", - token, - body: payload, - }); -} - -export async function deletePartRoleMapping(token: string, id: number) { - await apiFetch(`/api/admin/category-mappings/${id}`, { - method: "DELETE", - token, - }); -} \ No newline at end of file diff --git a/components/TopNav.tsx b/components/TopNav.tsx index f848c69..332caa5 100644 --- a/components/TopNav.tsx +++ b/components/TopNav.tsx @@ -7,8 +7,11 @@ import { useAuth } from "@/context/AuthContext"; export function TopNav() { const { user, logout, loading } = useAuth(); + const isAuthenticated = !!user; + return (
+ {/* Early access bar */}
@@ -25,8 +28,10 @@ export function TopNav() {
+ + {/* Main nav row */}
- {/* Brand / Home link */} + {/* Left: Brand / Home */} + {/* Center: main nav (Builder / Admin) */} + + {/* Right side actions */}
{/* Search placeholder */} @@ -59,9 +83,9 @@ export function TopNav() { {loading ? ( Checking session… - ) : user ? ( + ) : isAuthenticated ? ( <> - + {user.displayName || user.email}