"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/gunbuilder/page",{ /***/ "(app-pages-browser)/./components/CategoryColumn.tsx": /*!***************************************!*\ !*** ./components/CategoryColumn.tsx ***! \***************************************/ /***/ (function(module, __webpack_exports__, __webpack_require__) { eval(__webpack_require__.ts("__webpack_require__.r(__webpack_exports__);\n/* harmony export */ __webpack_require__.d(__webpack_exports__, {\n/* harmony export */ CategoryColumn: function() { return /* binding */ CategoryColumn; }\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 _components_PartCard__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/PartCard */ \"(app-pages-browser)/./components/PartCard.tsx\");\n/* __next_internal_client_entry_do_not_use__ CategoryColumn auto */ \n\n\nfunction CategoryColumn(param) {\n let { category, parts, selectedPartId, onSelectPart } = param;\n // Show selected part if available, otherwise show placeholder\n const displayedPart = selectedPartId ? parts.find((p)=>p.id === selectedPartId) : null;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex flex-col h-full\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mb-3\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-xs font-semibold tracking-[0.15em] text-zinc-400 uppercase\",\n children: category.name\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 28,\n columnNumber: 9\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 27,\n columnNumber: 7\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex-1 overflow-y-auto pr-1\",\n children: [\n parts.length === 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-xs text-zinc-500\",\n children: \"No parts available yet.\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 34,\n columnNumber: 11\n }, this),\n !displayedPart && parts.length > 0 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full border border-zinc-700 rounded-md p-3 mb-2 flex items-center justify-between gap-3\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-sm text-zinc-500\",\n children: \"No part selected\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 38,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/gunbuilder/\".concat(category.id),\n className: \"inline-flex items-center gap-2 rounded-md border border-zinc-700 bg-zinc-900/60 px-3 py-1.5 text-xs font-medium text-zinc-200 hover:bg-zinc-800 hover:border-zinc-500 transition-colors\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"svg\", {\n className: \"w-4 h-4\",\n fill: \"none\",\n stroke: \"currentColor\",\n viewBox: \"0 0 24 24\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"path\", {\n strokeLinecap: \"round\",\n strokeLinejoin: \"round\",\n strokeWidth: 2,\n d: \"M12 4v16m8-8H4\"\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 49,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 43,\n columnNumber: 15\n }, this),\n \"Choose a Part\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 39,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 37,\n columnNumber: 11\n }, this),\n displayedPart && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_PartCard__WEBPACK_IMPORTED_MODULE_2__.PartCard, {\n part: displayedPart,\n selected: displayedPart.id === selectedPartId,\n onSelect: ()=>onSelectPart(displayedPart.id)\n }, displayedPart.id, false, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 61,\n columnNumber: 11\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 32,\n columnNumber: 7\n }, this),\n parts.length >= 1 && /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(next_link__WEBPACK_IMPORTED_MODULE_1__[\"default\"], {\n href: \"/gunbuilder/\".concat(category.id),\n className: \"mt-2 w-full rounded-md border border-zinc-700 bg-zinc-900/50 px-3 py-2 text-xs font-medium text-zinc-300 hover:bg-zinc-800 hover:border-zinc-600 transition-colors text-center\",\n children: [\n \"View All (\",\n parts.length,\n \")\"\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 70,\n columnNumber: 9\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/Users/sean/Dev/gunbuilder-prototype/components/CategoryColumn.tsx\",\n lineNumber: 26,\n columnNumber: 5\n }, this);\n}\n_c = CategoryColumn;\nvar _c;\n$RefreshReg$(_c, \"CategoryColumn\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL2NvbXBvbmVudHMvQ2F0ZWdvcnlDb2x1bW4udHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRTZCO0FBRW9CO0FBUzFDLFNBQVNFLGVBQWUsS0FLVDtRQUxTLEVBQzdCQyxRQUFRLEVBQ1JDLEtBQUssRUFDTEMsY0FBYyxFQUNkQyxZQUFZLEVBQ1EsR0FMUztJQU03Qiw4REFBOEQ7SUFDOUQsTUFBTUMsZ0JBQWdCRixpQkFDbEJELE1BQU1JLElBQUksQ0FBQyxDQUFDQyxJQUFNQSxFQUFFQyxFQUFFLEtBQUtMLGtCQUMzQjtJQUVKLHFCQUNFLDhEQUFDTTtRQUFJQyxXQUFVOzswQkFDYiw4REFBQ0Q7Z0JBQUlDLFdBQVU7MEJBQ2IsNEVBQUNDO29CQUFHRCxXQUFVOzhCQUNYVCxTQUFTVyxJQUFJOzs7Ozs7Ozs7OzswQkFHbEIsOERBQUNIO2dCQUFJQyxXQUFVOztvQkFDWlIsTUFBTVcsTUFBTSxLQUFLLG1CQUNoQiw4REFBQ047d0JBQUVHLFdBQVU7a0NBQXdCOzs7Ozs7b0JBRXRDLENBQUNMLGlCQUFpQkgsTUFBTVcsTUFBTSxHQUFHLG1CQUNoQyw4REFBQ0o7d0JBQUlDLFdBQVU7OzBDQUNiLDhEQUFDSDtnQ0FBRUcsV0FBVTswQ0FBd0I7Ozs7OzswQ0FDckMsOERBQUNaLGlEQUFJQTtnQ0FDSGdCLE1BQU0sZUFBMkIsT0FBWmIsU0FBU08sRUFBRTtnQ0FDaENFLFdBQVU7O2tEQUVWLDhEQUFDSzt3Q0FDQ0wsV0FBVTt3Q0FDVk0sTUFBSzt3Q0FDTEMsUUFBTzt3Q0FDUEMsU0FBUTtrREFFUiw0RUFBQ0M7NENBQ0NDLGVBQWM7NENBQ2RDLGdCQUFlOzRDQUNmQyxhQUFhOzRDQUNiQyxHQUFFOzs7Ozs7Ozs7OztvQ0FFQTs7Ozs7Ozs7Ozs7OztvQkFLWGxCLCtCQUNDLDhEQUFDTiwwREFBUUE7d0JBRVB5QixNQUFNbkI7d0JBQ05vQixVQUFVcEIsY0FBY0csRUFBRSxLQUFLTDt3QkFDL0J1QixVQUFVLElBQU10QixhQUFhQyxjQUFjRyxFQUFFO3VCQUh4Q0gsY0FBY0csRUFBRTs7Ozs7Ozs7Ozs7WUFPMUJOLE1BQU1XLE1BQU0sSUFBSSxtQkFDZiw4REFBQ2YsaURBQUlBO2dCQUNIZ0IsTUFBTSxlQUEyQixPQUFaYixTQUFTTyxFQUFFO2dCQUNoQ0UsV0FBVTs7b0JBQ1g7b0JBQ1lSLE1BQU1XLE1BQU07b0JBQUM7Ozs7Ozs7Ozs7Ozs7QUFLbEM7S0FqRWdCYiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9jb21wb25lbnRzL0NhdGVnb3J5Q29sdW1uLnRzeD85YzE4Il0sInNvdXJjZXNDb250ZW50IjpbIlwidXNlIGNsaWVudFwiO1xuXG5pbXBvcnQgTGluayBmcm9tIFwibmV4dC9saW5rXCI7XG5pbXBvcnQgdHlwZSB7IENhdGVnb3J5LCBQYXJ0IH0gZnJvbSBcIkAvdHlwZXMvZ3VuYnVpbGRlclwiO1xuaW1wb3J0IHsgUGFydENhcmQgfSBmcm9tIFwiQC9jb21wb25lbnRzL1BhcnRDYXJkXCI7XG5cbmludGVyZmFjZSBDYXRlZ29yeUNvbHVtblByb3BzIHtcbiAgY2F0ZWdvcnk6IENhdGVnb3J5O1xuICBwYXJ0czogUGFydFtdO1xuICBzZWxlY3RlZFBhcnRJZD86IHN0cmluZztcbiAgb25TZWxlY3RQYXJ0OiAocGFydElkOiBzdHJpbmcpID0+IHZvaWQ7XG59XG5cbmV4cG9ydCBmdW5jdGlvbiBDYXRlZ29yeUNvbHVtbih7XG4gIGNhdGVnb3J5LFxuICBwYXJ0cyxcbiAgc2VsZWN0ZWRQYXJ0SWQsXG4gIG9uU2VsZWN0UGFydCxcbn06IENhdGVnb3J5Q29sdW1uUHJvcHMpIHtcbiAgLy8gU2hvdyBzZWxlY3RlZCBwYXJ0IGlmIGF2YWlsYWJsZSwgb3RoZXJ3aXNlIHNob3cgcGxhY2Vob2xkZXJcbiAgY29uc3QgZGlzcGxheWVkUGFydCA9IHNlbGVjdGVkUGFydElkXG4gICAgPyBwYXJ0cy5maW5kKChwKSA9PiBwLmlkID09PSBzZWxlY3RlZFBhcnRJZClcbiAgICA6IG51bGw7XG5cbiAgcmV0dXJuIChcbiAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXggZmxleC1jb2wgaC1mdWxsXCI+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1iLTNcIj5cbiAgICAgICAgPGgyIGNsYXNzTmFtZT1cInRleHQteHMgZm9udC1zZW1pYm9sZCB0cmFja2luZy1bMC4xNWVtXSB0ZXh0LXppbmMtNDAwIHVwcGVyY2FzZVwiPlxuICAgICAgICAgIHtjYXRlZ29yeS5uYW1lfVxuICAgICAgICA8L2gyPlxuICAgICAgPC9kaXY+XG4gICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgtMSBvdmVyZmxvdy15LWF1dG8gcHItMVwiPlxuICAgICAgICB7cGFydHMubGVuZ3RoID09PSAwICYmIChcbiAgICAgICAgICA8cCBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy01MDBcIj5ObyBwYXJ0cyBhdmFpbGFibGUgeWV0LjwvcD5cbiAgICAgICAgKX1cbiAgICAgICAgeyFkaXNwbGF5ZWRQYXJ0ICYmIHBhcnRzLmxlbmd0aCA+IDAgJiYgKFxuICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwidy1mdWxsIGJvcmRlciBib3JkZXItemluYy03MDAgcm91bmRlZC1tZCBwLTMgbWItMiBmbGV4IGl0ZW1zLWNlbnRlciBqdXN0aWZ5LWJldHdlZW4gZ2FwLTNcIj5cbiAgICAgICAgICAgIDxwIGNsYXNzTmFtZT1cInRleHQtc20gdGV4dC16aW5jLTUwMFwiPk5vIHBhcnQgc2VsZWN0ZWQ8L3A+XG4gICAgICAgICAgICA8TGlua1xuICAgICAgICAgICAgICBocmVmPXtgL2d1bmJ1aWxkZXIvJHtjYXRlZ29yeS5pZH1gfVxuICAgICAgICAgICAgICBjbGFzc05hbWU9XCJpbmxpbmUtZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTIgcm91bmRlZC1tZCBib3JkZXIgYm9yZGVyLXppbmMtNzAwIGJnLXppbmMtOTAwLzYwIHB4LTMgcHktMS41IHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTIwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy01MDAgdHJhbnNpdGlvbi1jb2xvcnNcIlxuICAgICAgICAgICAgPlxuICAgICAgICAgICAgICA8c3ZnXG4gICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy00IGgtNFwiXG4gICAgICAgICAgICAgICAgZmlsbD1cIm5vbmVcIlxuICAgICAgICAgICAgICAgIHN0cm9rZT1cImN1cnJlbnRDb2xvclwiXG4gICAgICAgICAgICAgICAgdmlld0JveD1cIjAgMCAyNCAyNFwiXG4gICAgICAgICAgICAgID5cbiAgICAgICAgICAgICAgICA8cGF0aFxuICAgICAgICAgICAgICAgICAgc3Ryb2tlTGluZWNhcD1cInJvdW5kXCJcbiAgICAgICAgICAgICAgICAgIHN0cm9rZUxpbmVqb2luPVwicm91bmRcIlxuICAgICAgICAgICAgICAgICAgc3Ryb2tlV2lkdGg9ezJ9XG4gICAgICAgICAgICAgICAgICBkPVwiTTEyIDR2MTZtOC04SDRcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICAgIDwvc3ZnPlxuICAgICAgICAgICAgICBDaG9vc2UgYSBQYXJ0XG4gICAgICAgICAgICA8L0xpbms+XG4gICAgICAgICAgPC9kaXY+XG4gICAgICAgICl9XG4gICAgICAgIHtkaXNwbGF5ZWRQYXJ0ICYmIChcbiAgICAgICAgICA8UGFydENhcmRcbiAgICAgICAgICAgIGtleT17ZGlzcGxheWVkUGFydC5pZH1cbiAgICAgICAgICAgIHBhcnQ9e2Rpc3BsYXllZFBhcnR9XG4gICAgICAgICAgICBzZWxlY3RlZD17ZGlzcGxheWVkUGFydC5pZCA9PT0gc2VsZWN0ZWRQYXJ0SWR9XG4gICAgICAgICAgICBvblNlbGVjdD17KCkgPT4gb25TZWxlY3RQYXJ0KGRpc3BsYXllZFBhcnQuaWQpfVxuICAgICAgICAgIC8+XG4gICAgICAgICl9XG4gICAgICA8L2Rpdj5cbiAgICAgIHtwYXJ0cy5sZW5ndGggPj0gMSAmJiAoXG4gICAgICAgIDxMaW5rXG4gICAgICAgICAgaHJlZj17YC9ndW5idWlsZGVyLyR7Y2F0ZWdvcnkuaWR9YH1cbiAgICAgICAgICBjbGFzc05hbWU9XCJtdC0yIHctZnVsbCByb3VuZGVkLW1kIGJvcmRlciBib3JkZXItemluYy03MDAgYmctemluYy05MDAvNTAgcHgtMyBweS0yIHRleHQteHMgZm9udC1tZWRpdW0gdGV4dC16aW5jLTMwMCBob3ZlcjpiZy16aW5jLTgwMCBob3Zlcjpib3JkZXItemluYy02MDAgdHJhbnNpdGlvbi1jb2xvcnMgdGV4dC1jZW50ZXJcIlxuICAgICAgICA+XG4gICAgICAgICAgVmlldyBBbGwgKHtwYXJ0cy5sZW5ndGh9KVxuICAgICAgICA8L0xpbms+XG4gICAgICApfVxuICAgIDwvZGl2PlxuICApO1xufVxuIl0sIm5hbWVzIjpbIkxpbmsiLCJQYXJ0Q2FyZCIsIkNhdGVnb3J5Q29sdW1uIiwiY2F0ZWdvcnkiLCJwYXJ0cyIsInNlbGVjdGVkUGFydElkIiwib25TZWxlY3RQYXJ0IiwiZGlzcGxheWVkUGFydCIsImZpbmQiLCJwIiwiaWQiLCJkaXYiLCJjbGFzc05hbWUiLCJoMiIsIm5hbWUiLCJsZW5ndGgiLCJocmVmIiwic3ZnIiwiZmlsbCIsInN0cm9rZSIsInZpZXdCb3giLCJwYXRoIiwic3Ryb2tlTGluZWNhcCIsInN0cm9rZUxpbmVqb2luIiwic3Ryb2tlV2lkdGgiLCJkIiwicGFydCIsInNlbGVjdGVkIiwib25TZWxlY3QiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./components/CategoryColumn.tsx\n")); /***/ }) });