Files
Dramlog-Prod/.next/static/webpack/app/page.6ac7239f7a74e597.hot-update.js
2025-12-17 23:12:53 +01:00

43 lines
35 KiB
JavaScript

/*
* 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/page",{
/***/ "(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp%2Fpage.tsx&server=false!":
/*!*****************************************************************************************************************************************************************************!*\
!*** ./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp%2Fpage.tsx&server=false! ***!
\*****************************************************************************************************************************************************************************/
/***/ (function(__unused_webpack_module, __unused_webpack_exports, __webpack_require__) {
eval(__webpack_require__.ts("Promise.resolve(/*! import() eager */).then(__webpack_require__.bind(__webpack_require__, /*! ./src/app/page.tsx */ \"(app-pages-browser)/./src/app/page.tsx\"))//# sourceURL=[module]\n//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL25vZGVfbW9kdWxlcy9uZXh0L2Rpc3QvYnVpbGQvd2VicGFjay9sb2FkZXJzL25leHQtZmxpZ2h0LWNsaWVudC1lbnRyeS1sb2FkZXIuanM/bW9kdWxlcz0lMkZob21lJTJGcm9iaW4lMkZBSSUyRkNvZGluZyUyRldoaXNreSUyRnNyYyUyRmFwcCUyRnBhZ2UudHN4JnNlcnZlcj1mYWxzZSEiLCJtYXBwaW5ncyI6IkFBQUEiLCJzb3VyY2VzIjpbIndlYnBhY2s6Ly9fTl9FLz9lNTE3Il0sInNvdXJjZXNDb250ZW50IjpbImltcG9ydCgvKiB3ZWJwYWNrTW9kZTogXCJlYWdlclwiICovIFwiL2hvbWUvcm9iaW4vQUkvQ29kaW5nL1doaXNreS9zcmMvYXBwL3BhZ2UudHN4XCIpIl0sIm5hbWVzIjpbXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./node_modules/next/dist/build/webpack/loaders/next-flight-client-entry-loader.js?modules=%2Fhome%2Frobin%2FAI%2FCoding%2FWhisky%2Fsrc%2Fapp%2Fpage.tsx&server=false!\n"));
/***/ }),
/***/ "(app-pages-browser)/./src/app/page.tsx":
/*!**************************!*\
!*** ./src/app/page.tsx ***!
\**************************/
/***/ (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 */ Home; }\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/* harmony import */ var _components_CameraCapture__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @/components/CameraCapture */ \"(app-pages-browser)/./src/components/CameraCapture.tsx\");\n/* harmony import */ var _components_BottleGrid__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @/components/BottleGrid */ \"(app-pages-browser)/./src/components/BottleGrid.tsx\");\n/* harmony import */ var _lib_supabase__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @/lib/supabase */ \"(app-pages-browser)/./src/lib/supabase.ts\");\n/* __next_internal_client_entry_do_not_use__ default auto */ \nvar _s = $RefreshSig$();\n\n\n\n\nfunction Home() {\n _s();\n const [bottles, setBottles] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)([]);\n const [isLoading, setIsLoading] = (0,react__WEBPACK_IMPORTED_MODULE_1__.useState)(true);\n const fetchCollection = async ()=>{\n setIsLoading(true);\n try {\n const { data, error } = await _lib_supabase__WEBPACK_IMPORTED_MODULE_4__.supabase.from(\"bottles\").select(\"*\").order(\"created_at\", {\n ascending: false\n });\n if (error) throw error;\n setBottles(data || []);\n } catch (err) {\n console.error(\"Error fetching collection:\", err);\n } finally{\n setIsLoading(false);\n }\n };\n (0,react__WEBPACK_IMPORTED_MODULE_1__.useEffect)(()=>{\n fetchCollection();\n }, []);\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"main\", {\n className: \"flex min-h-screen flex-col items-center gap-12 p-6 md:p-24 bg-zinc-50 dark:bg-black\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"z-10 max-w-5xl w-full flex flex-col items-center gap-8\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"header\", {\n className: \"w-full flex justify-between items-center\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h1\", {\n className: \"text-4xl font-black text-zinc-900 dark:text-white tracking-tighter\",\n children: [\n \"WHISKY\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-amber-600\",\n children: \"VAULT\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 38,\n columnNumber: 31\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 37,\n columnNumber: 21\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 36,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_CameraCapture__WEBPACK_IMPORTED_MODULE_2__[\"default\"], {\n onSaveComplete: fetchCollection\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 42,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"w-full mt-12\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h2\", {\n className: \"text-2xl font-bold mb-6 text-zinc-800 dark:text-zinc-100 flex items-center gap-3\",\n children: [\n \"Deine Sammlung\",\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-sm font-normal text-zinc-500 bg-zinc-100 dark:bg-zinc-800 px-3 py-1 rounded-full\",\n children: bottles.length\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 47,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 45,\n columnNumber: 21\n }, this),\n isLoading ? /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"flex justify-center py-12\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"animate-spin rounded-full h-8 w-8 border-b-2 border-amber-600\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 54,\n columnNumber: 29\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 53,\n columnNumber: 25\n }, this) : /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(_components_BottleGrid__WEBPACK_IMPORTED_MODULE_3__[\"default\"], {\n bottles: bottles\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 57,\n columnNumber: 25\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 44,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 35,\n columnNumber: 13\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/app/page.tsx\",\n lineNumber: 34,\n columnNumber: 9\n }, this);\n}\n_s(Home, \"tqcd/4e4Bk1WiKkIiIceCvaM4dQ=\");\n_c = Home;\nvar _c;\n$RefreshReg$(_c, \"Home\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9hcHAvcGFnZS50c3giLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7O0FBRTRDO0FBQ1c7QUFDTjtBQUNQO0FBRTNCLFNBQVNLOztJQUNwQixNQUFNLENBQUNDLFNBQVNDLFdBQVcsR0FBR04sK0NBQVFBLENBQVEsRUFBRTtJQUNoRCxNQUFNLENBQUNPLFdBQVdDLGFBQWEsR0FBR1IsK0NBQVFBLENBQUM7SUFFM0MsTUFBTVMsa0JBQWtCO1FBQ3BCRCxhQUFhO1FBQ2IsSUFBSTtZQUNBLE1BQU0sRUFBRUUsSUFBSSxFQUFFQyxLQUFLLEVBQUUsR0FBRyxNQUFNUixtREFBUUEsQ0FDakNTLElBQUksQ0FBQyxXQUNMQyxNQUFNLENBQUMsS0FDUEMsS0FBSyxDQUFDLGNBQWM7Z0JBQUVDLFdBQVc7WUFBTTtZQUU1QyxJQUFJSixPQUFPLE1BQU1BO1lBQ2pCTCxXQUFXSSxRQUFRLEVBQUU7UUFDekIsRUFBRSxPQUFPTSxLQUFLO1lBQ1ZDLFFBQVFOLEtBQUssQ0FBQyw4QkFBOEJLO1FBQ2hELFNBQVU7WUFDTlIsYUFBYTtRQUNqQjtJQUNKO0lBRUFULGdEQUFTQSxDQUFDO1FBQ05VO0lBQ0osR0FBRyxFQUFFO0lBRUwscUJBQ0ksOERBQUNTO1FBQUtDLFdBQVU7a0JBQ1osNEVBQUNDO1lBQUlELFdBQVU7OzhCQUNYLDhEQUFDRTtvQkFBT0YsV0FBVTs4QkFDZCw0RUFBQ0c7d0JBQUdILFdBQVU7OzRCQUFxRTswQ0FDekUsOERBQUNJO2dDQUFLSixXQUFVOzBDQUFpQjs7Ozs7Ozs7Ozs7Ozs7Ozs7OEJBSS9DLDhEQUFDbEIsaUVBQWFBO29CQUFDdUIsZ0JBQWdCZjs7Ozs7OzhCQUUvQiw4REFBQ1c7b0JBQUlELFdBQVU7O3NDQUNYLDhEQUFDTTs0QkFBR04sV0FBVTs7Z0NBQW1GOzhDQUU3Riw4REFBQ0k7b0NBQUtKLFdBQVU7OENBQ1hkLFFBQVFxQixNQUFNOzs7Ozs7Ozs7Ozs7d0JBSXRCbkIsMEJBQ0csOERBQUNhOzRCQUFJRCxXQUFVO3NDQUNYLDRFQUFDQztnQ0FBSUQsV0FBVTs7Ozs7Ozs7OztpREFHbkIsOERBQUNqQiw4REFBVUE7NEJBQUNHLFNBQVNBOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU03QztHQXZEd0JEO0tBQUFBIiwic291cmNlcyI6WyJ3ZWJwYWNrOi8vX05fRS8uL3NyYy9hcHAvcGFnZS50c3g/ZjY4YSJdLCJzb3VyY2VzQ29udGVudCI6WyIndXNlIGNsaWVudCc7XG5cbmltcG9ydCB7IHVzZUVmZmVjdCwgdXNlU3RhdGUgfSBmcm9tICdyZWFjdCc7XG5pbXBvcnQgQ2FtZXJhQ2FwdHVyZSBmcm9tIFwiQC9jb21wb25lbnRzL0NhbWVyYUNhcHR1cmVcIjtcbmltcG9ydCBCb3R0bGVHcmlkIGZyb20gXCJAL2NvbXBvbmVudHMvQm90dGxlR3JpZFwiO1xuaW1wb3J0IHsgc3VwYWJhc2UgfSBmcm9tICdAL2xpYi9zdXBhYmFzZSc7XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEhvbWUoKSB7XG4gICAgY29uc3QgW2JvdHRsZXMsIHNldEJvdHRsZXNdID0gdXNlU3RhdGU8YW55W10+KFtdKTtcbiAgICBjb25zdCBbaXNMb2FkaW5nLCBzZXRJc0xvYWRpbmddID0gdXNlU3RhdGUodHJ1ZSk7XG5cbiAgICBjb25zdCBmZXRjaENvbGxlY3Rpb24gPSBhc3luYyAoKSA9PiB7XG4gICAgICAgIHNldElzTG9hZGluZyh0cnVlKTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICAgIGNvbnN0IHsgZGF0YSwgZXJyb3IgfSA9IGF3YWl0IHN1cGFiYXNlXG4gICAgICAgICAgICAgICAgLmZyb20oJ2JvdHRsZXMnKVxuICAgICAgICAgICAgICAgIC5zZWxlY3QoJyonKVxuICAgICAgICAgICAgICAgIC5vcmRlcignY3JlYXRlZF9hdCcsIHsgYXNjZW5kaW5nOiBmYWxzZSB9KTtcblxuICAgICAgICAgICAgaWYgKGVycm9yKSB0aHJvdyBlcnJvcjtcbiAgICAgICAgICAgIHNldEJvdHRsZXMoZGF0YSB8fCBbXSk7XG4gICAgICAgIH0gY2F0Y2ggKGVycikge1xuICAgICAgICAgICAgY29uc29sZS5lcnJvcignRXJyb3IgZmV0Y2hpbmcgY29sbGVjdGlvbjonLCBlcnIpO1xuICAgICAgICB9IGZpbmFsbHkge1xuICAgICAgICAgICAgc2V0SXNMb2FkaW5nKGZhbHNlKTtcbiAgICAgICAgfVxuICAgIH07XG5cbiAgICB1c2VFZmZlY3QoKCkgPT4ge1xuICAgICAgICBmZXRjaENvbGxlY3Rpb24oKTtcbiAgICB9LCBbXSk7XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8bWFpbiBjbGFzc05hbWU9XCJmbGV4IG1pbi1oLXNjcmVlbiBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLTEyIHAtNiBtZDpwLTI0IGJnLXppbmMtNTAgZGFyazpiZy1ibGFja1wiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ6LTEwIG1heC13LTV4bCB3LWZ1bGwgZmxleCBmbGV4LWNvbCBpdGVtcy1jZW50ZXIgZ2FwLThcIj5cbiAgICAgICAgICAgICAgICA8aGVhZGVyIGNsYXNzTmFtZT1cInctZnVsbCBmbGV4IGp1c3RpZnktYmV0d2VlbiBpdGVtcy1jZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgPGgxIGNsYXNzTmFtZT1cInRleHQtNHhsIGZvbnQtYmxhY2sgdGV4dC16aW5jLTkwMCBkYXJrOnRleHQtd2hpdGUgdHJhY2tpbmctdGlnaHRlclwiPlxuICAgICAgICAgICAgICAgICAgICAgICAgV0hJU0tZPHNwYW4gY2xhc3NOYW1lPVwidGV4dC1hbWJlci02MDBcIj5WQVVMVDwvc3Bhbj5cbiAgICAgICAgICAgICAgICAgICAgPC9oMT5cbiAgICAgICAgICAgICAgICA8L2hlYWRlcj5cblxuICAgICAgICAgICAgICAgIDxDYW1lcmFDYXB0dXJlIG9uU2F2ZUNvbXBsZXRlPXtmZXRjaENvbGxlY3Rpb259IC8+XG5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cInctZnVsbCBtdC0xMlwiPlxuICAgICAgICAgICAgICAgICAgICA8aDIgY2xhc3NOYW1lPVwidGV4dC0yeGwgZm9udC1ib2xkIG1iLTYgdGV4dC16aW5jLTgwMCBkYXJrOnRleHQtemluYy0xMDAgZmxleCBpdGVtcy1jZW50ZXIgZ2FwLTNcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIERlaW5lIFNhbW1sdW5nXG4gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXNtIGZvbnQtbm9ybWFsIHRleHQtemluYy01MDAgYmctemluYy0xMDAgZGFyazpiZy16aW5jLTgwMCBweC0zIHB5LTEgcm91bmRlZC1mdWxsXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge2JvdHRsZXMubGVuZ3RofVxuICAgICAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8L2gyPlxuXG4gICAgICAgICAgICAgICAgICAgIHtpc0xvYWRpbmcgPyAoXG4gICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImZsZXgganVzdGlmeS1jZW50ZXIgcHktMTJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImFuaW1hdGUtc3BpbiByb3VuZGVkLWZ1bGwgaC04IHctOCBib3JkZXItYi0yIGJvcmRlci1hbWJlci02MDBcIj48L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICApIDogKFxuICAgICAgICAgICAgICAgICAgICAgICAgPEJvdHRsZUdyaWQgYm90dGxlcz17Ym90dGxlc30gLz5cbiAgICAgICAgICAgICAgICAgICAgKX1cbiAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICA8L21haW4+XG4gICAgKTtcbn1cbiJdLCJuYW1lcyI6WyJ1c2VFZmZlY3QiLCJ1c2VTdGF0ZSIsIkNhbWVyYUNhcHR1cmUiLCJCb3R0bGVHcmlkIiwic3VwYWJhc2UiLCJIb21lIiwiYm90dGxlcyIsInNldEJvdHRsZXMiLCJpc0xvYWRpbmciLCJzZXRJc0xvYWRpbmciLCJmZXRjaENvbGxlY3Rpb24iLCJkYXRhIiwiZXJyb3IiLCJmcm9tIiwic2VsZWN0Iiwib3JkZXIiLCJhc2NlbmRpbmciLCJlcnIiLCJjb25zb2xlIiwibWFpbiIsImNsYXNzTmFtZSIsImRpdiIsImhlYWRlciIsImgxIiwic3BhbiIsIm9uU2F2ZUNvbXBsZXRlIiwiaDIiLCJsZW5ndGgiXSwic291cmNlUm9vdCI6IiJ9\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/app/page.tsx\n"));
/***/ }),
/***/ "(app-pages-browser)/./src/components/BottleGrid.tsx":
/*!***************************************!*\
!*** ./src/components/BottleGrid.tsx ***!
\***************************************/
/***/ (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 */ BottleGrid; }\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/* __next_internal_client_entry_do_not_use__ default auto */ \n\nfunction BottleCard(param) {\n let { bottle } = param;\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"bg-white dark:bg-zinc-900 rounded-2xl overflow-hidden border border-zinc-200 dark:border-zinc-800 shadow-md transition-all hover:scale-[1.02]\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"aspect-[3/2] overflow-hidden bg-zinc-100 dark:bg-zinc-800\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"img\", {\n src: bottle.image_url,\n alt: bottle.name,\n className: \"w-full h-full object-cover\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 14,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 13,\n columnNumber: 13\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"p-4\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"h3\", {\n className: \"font-bold text-lg text-zinc-800 dark:text-zinc-100 truncate\",\n children: bottle.name\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 21,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-zinc-500 text-sm truncate\",\n children: bottle.distillery\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 22,\n columnNumber: 17\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"mt-3 flex items-center justify-between\",\n children: [\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"px-2 py-1 bg-amber-100 dark:bg-amber-900/30 text-amber-700 dark:text-amber-400 text-xs font-semibold rounded-md\",\n children: bottle.category\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 24,\n columnNumber: 21\n }, this),\n /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"span\", {\n className: \"text-xs text-zinc-400\",\n children: [\n bottle.abv,\n \"% Vol.\"\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 27,\n columnNumber: 21\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 23,\n columnNumber: 17\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 20,\n columnNumber: 13\n }, this)\n ]\n }, void 0, true, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 12,\n columnNumber: 9\n }, this);\n}\n_c = BottleCard;\nfunction BottleGrid(param) {\n let { bottles } = param;\n if (!bottles || bottles.length === 0) {\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"text-center py-12 p-8 bg-zinc-50 dark:bg-zinc-900/50 rounded-3xl border-2 border-dashed border-zinc-200 dark:border-zinc-800\",\n children: /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"p\", {\n className: \"text-zinc-500\",\n children: \"Noch keine Flaschen im Vault. Zeit f\\xfcr den ersten Scan! \\uD83E\\uDD43\"\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 44,\n columnNumber: 17\n }, this)\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 43,\n columnNumber: 13\n }, this);\n }\n return /*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(\"div\", {\n className: \"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-3 gap-6 w-full max-w-6xl mx-auto px-4\",\n children: bottles.map((bottle)=>/*#__PURE__*/ (0,react_jsx_dev_runtime__WEBPACK_IMPORTED_MODULE_0__.jsxDEV)(BottleCard, {\n bottle: bottle\n }, bottle.id, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 52,\n columnNumber: 17\n }, this))\n }, void 0, false, {\n fileName: \"/home/robin/AI/Coding/Whisky/src/components/BottleGrid.tsx\",\n lineNumber: 50,\n columnNumber: 9\n }, this);\n}\n_c1 = BottleGrid;\nvar _c, _c1;\n$RefreshReg$(_c, \"BottleCard\");\n$RefreshReg$(_c1, \"BottleGrid\");\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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiKGFwcC1wYWdlcy1icm93c2VyKS8uL3NyYy9jb21wb25lbnRzL0JvdHRsZUdyaWQudHN4IiwibWFwcGluZ3MiOiI7Ozs7Ozs7O0FBRTBCO0FBTzFCLFNBQVNDLFdBQVcsS0FBMkI7UUFBM0IsRUFBRUMsTUFBTSxFQUFtQixHQUEzQjtJQUNoQixxQkFDSSw4REFBQ0M7UUFBSUMsV0FBVTs7MEJBQ1gsOERBQUNEO2dCQUFJQyxXQUFVOzBCQUNYLDRFQUFDQztvQkFDR0MsS0FBS0osT0FBT0ssU0FBUztvQkFDckJDLEtBQUtOLE9BQU9PLElBQUk7b0JBQ2hCTCxXQUFVOzs7Ozs7Ozs7OzswQkFHbEIsOERBQUNEO2dCQUFJQyxXQUFVOztrQ0FDWCw4REFBQ007d0JBQUdOLFdBQVU7a0NBQStERixPQUFPTyxJQUFJOzs7Ozs7a0NBQ3hGLDhEQUFDRTt3QkFBRVAsV0FBVTtrQ0FBa0NGLE9BQU9VLFVBQVU7Ozs7OztrQ0FDaEUsOERBQUNUO3dCQUFJQyxXQUFVOzswQ0FDWCw4REFBQ1M7Z0NBQUtULFdBQVU7MENBQ1hGLE9BQU9ZLFFBQVE7Ozs7OzswQ0FFcEIsOERBQUNEO2dDQUFLVCxXQUFVOztvQ0FDWEYsT0FBT2EsR0FBRztvQ0FBQzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7OztBQU1wQztLQXhCU2Q7QUE4Qk0sU0FBU2UsV0FBVyxLQUE0QjtRQUE1QixFQUFFQyxPQUFPLEVBQW1CLEdBQTVCO0lBQy9CLElBQUksQ0FBQ0EsV0FBV0EsUUFBUUMsTUFBTSxLQUFLLEdBQUc7UUFDbEMscUJBQ0ksOERBQUNmO1lBQUlDLFdBQVU7c0JBQ1gsNEVBQUNPO2dCQUFFUCxXQUFVOzBCQUFnQjs7Ozs7Ozs7Ozs7SUFHekM7SUFFQSxxQkFDSSw4REFBQ0Q7UUFBSUMsV0FBVTtrQkFDVmEsUUFBUUUsR0FBRyxDQUFDLENBQUNqQix1QkFDViw4REFBQ0Q7Z0JBQTJCQyxRQUFRQTtlQUFuQkEsT0FBT2tCLEVBQUU7Ozs7Ozs7Ozs7QUFJMUM7TUFoQndCSiIsInNvdXJjZXMiOlsid2VicGFjazovL19OX0UvLi9zcmMvY29tcG9uZW50cy9Cb3R0bGVHcmlkLnRzeD82MmI5Il0sInNvdXJjZXNDb250ZW50IjpbIid1c2UgY2xpZW50JztcblxuaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCB7IEJvdHRsZU1ldGFkYXRhIH0gZnJvbSAnQC90eXBlcy93aGlza3knO1xuXG5pbnRlcmZhY2UgQm90dGxlQ2FyZFByb3BzIHtcbiAgICBib3R0bGU6IGFueTsgLy8gV2UgY2FuIGltcHJvdmUgdGhpcyB3aXRoIGEgcHJvcGVyIERCIHR5cGUgbGF0ZXJcbn1cblxuZnVuY3Rpb24gQm90dGxlQ2FyZCh7IGJvdHRsZSB9OiBCb3R0bGVDYXJkUHJvcHMpIHtcbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImJnLXdoaXRlIGRhcms6YmctemluYy05MDAgcm91bmRlZC0yeGwgb3ZlcmZsb3ctaGlkZGVuIGJvcmRlciBib3JkZXItemluYy0yMDAgZGFyazpib3JkZXItemluYy04MDAgc2hhZG93LW1kIHRyYW5zaXRpb24tYWxsIGhvdmVyOnNjYWxlLVsxLjAyXVwiPlxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJhc3BlY3QtWzMvMl0gb3ZlcmZsb3ctaGlkZGVuIGJnLXppbmMtMTAwIGRhcms6YmctemluYy04MDBcIj5cbiAgICAgICAgICAgICAgICA8aW1nXG4gICAgICAgICAgICAgICAgICAgIHNyYz17Ym90dGxlLmltYWdlX3VybH1cbiAgICAgICAgICAgICAgICAgICAgYWx0PXtib3R0bGUubmFtZX1cbiAgICAgICAgICAgICAgICAgICAgY2xhc3NOYW1lPVwidy1mdWxsIGgtZnVsbCBvYmplY3QtY292ZXJcIlxuICAgICAgICAgICAgICAgIC8+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicC00XCI+XG4gICAgICAgICAgICAgICAgPGgzIGNsYXNzTmFtZT1cImZvbnQtYm9sZCB0ZXh0LWxnIHRleHQtemluYy04MDAgZGFyazp0ZXh0LXppbmMtMTAwIHRydW5jYXRlXCI+e2JvdHRsZS5uYW1lfTwvaDM+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC16aW5jLTUwMCB0ZXh0LXNtIHRydW5jYXRlXCI+e2JvdHRsZS5kaXN0aWxsZXJ5fTwvcD5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm10LTMgZmxleCBpdGVtcy1jZW50ZXIganVzdGlmeS1iZXR3ZWVuXCI+XG4gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzTmFtZT1cInB4LTIgcHktMSBiZy1hbWJlci0xMDAgZGFyazpiZy1hbWJlci05MDAvMzAgdGV4dC1hbWJlci03MDAgZGFyazp0ZXh0LWFtYmVyLTQwMCB0ZXh0LXhzIGZvbnQtc2VtaWJvbGQgcm91bmRlZC1tZFwiPlxuICAgICAgICAgICAgICAgICAgICAgICAge2JvdHRsZS5jYXRlZ29yeX1cbiAgICAgICAgICAgICAgICAgICAgPC9zcGFuPlxuICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzc05hbWU9XCJ0ZXh0LXhzIHRleHQtemluYy00MDBcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIHtib3R0bGUuYWJ2fSUgVm9sLlxuICAgICAgICAgICAgICAgICAgICA8L3NwYW4+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9kaXY+XG4gICAgKTtcbn1cblxuaW50ZXJmYWNlIEJvdHRsZUdyaWRQcm9wcyB7XG4gICAgYm90dGxlczogYW55W107XG59XG5cbmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIEJvdHRsZUdyaWQoeyBib3R0bGVzIH06IEJvdHRsZUdyaWRQcm9wcykge1xuICAgIGlmICghYm90dGxlcyB8fCBib3R0bGVzLmxlbmd0aCA9PT0gMCkge1xuICAgICAgICByZXR1cm4gKFxuICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJ0ZXh0LWNlbnRlciBweS0xMiBwLTggYmctemluYy01MCBkYXJrOmJnLXppbmMtOTAwLzUwIHJvdW5kZWQtM3hsIGJvcmRlci0yIGJvcmRlci1kYXNoZWQgYm9yZGVyLXppbmMtMjAwIGRhcms6Ym9yZGVyLXppbmMtODAwXCI+XG4gICAgICAgICAgICAgICAgPHAgY2xhc3NOYW1lPVwidGV4dC16aW5jLTUwMFwiPk5vY2gga2VpbmUgRmxhc2NoZW4gaW0gVmF1bHQuIFplaXQgZsO8ciBkZW4gZXJzdGVuIFNjYW4hIPCfpYM8L3A+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgKTtcbiAgICB9XG5cbiAgICByZXR1cm4gKFxuICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImdyaWQgZ3JpZC1jb2xzLTEgc206Z3JpZC1jb2xzLTIgbGc6Z3JpZC1jb2xzLTMgZ2FwLTYgdy1mdWxsIG1heC13LTZ4bCBteC1hdXRvIHB4LTRcIj5cbiAgICAgICAgICAgIHtib3R0bGVzLm1hcCgoYm90dGxlKSA9PiAoXG4gICAgICAgICAgICAgICAgPEJvdHRsZUNhcmQga2V5PXtib3R0bGUuaWR9IGJvdHRsZT17Ym90dGxlfSAvPlxuICAgICAgICAgICAgKSl9XG4gICAgICAgIDwvZGl2PlxuICAgICk7XG59XG4iXSwibmFtZXMiOlsiUmVhY3QiLCJCb3R0bGVDYXJkIiwiYm90dGxlIiwiZGl2IiwiY2xhc3NOYW1lIiwiaW1nIiwic3JjIiwiaW1hZ2VfdXJsIiwiYWx0IiwibmFtZSIsImgzIiwicCIsImRpc3RpbGxlcnkiLCJzcGFuIiwiY2F0ZWdvcnkiLCJhYnYiLCJCb3R0bGVHcmlkIiwiYm90dGxlcyIsImxlbmd0aCIsIm1hcCIsImlkIl0sInNvdXJjZVJvb3QiOiIifQ==\n//# sourceURL=webpack-internal:///(app-pages-browser)/./src/components/BottleGrid.tsx\n"));
/***/ })
});