diff --git a/.gitignore b/.gitignore index 6103043..34ac192 100644 --- a/.gitignore +++ b/.gitignore @@ -11,9 +11,6 @@ # testing /coverage -# production -/build - # misc .DS_Store .env.local diff --git a/build/asset-manifest.json b/build/asset-manifest.json new file mode 100644 index 0000000..3ea1c77 --- /dev/null +++ b/build/asset-manifest.json @@ -0,0 +1,20 @@ +{ + "files": { + "main.css": "/static/css/main.c1cb6f51.css", + "main.js": "/static/js/main.834bfcdf.js", + "static/js/453.bb108b7c.chunk.js": "/static/js/453.bb108b7c.chunk.js", + "static/media/YoonGothic530.woff2": "/static/media/YoonGothic530.794ced64dc2bfbcb60cb.woff2", + "static/media/slick.svg": "/static/media/slick.2630a3e3eab21c607e21.svg", + "static/media/slick.eot": "/static/media/slick.a4e97f5a2a64f0ab1323.eot", + "static/media/slick.ttf": "/static/media/slick.c94f7671dcc99dce43e2.ttf", + "static/media/slick.woff": "/static/media/slick.295183786cd8a1389865.woff", + "index.html": "/index.html", + "main.c1cb6f51.css.map": "/static/css/main.c1cb6f51.css.map", + "main.834bfcdf.js.map": "/static/js/main.834bfcdf.js.map", + "453.bb108b7c.chunk.js.map": "/static/js/453.bb108b7c.chunk.js.map" + }, + "entrypoints": [ + "static/css/main.c1cb6f51.css", + "static/js/main.834bfcdf.js" + ] +} \ No newline at end of file diff --git a/build/favicon.ico b/build/favicon.ico new file mode 100644 index 0000000..a11777c Binary files /dev/null and b/build/favicon.ico differ diff --git a/build/images/Argentina.png b/build/images/Argentina.png new file mode 100644 index 0000000..7c3f729 Binary files /dev/null and b/build/images/Argentina.png differ diff --git a/build/images/Belgium.png b/build/images/Belgium.png new file mode 100644 index 0000000..2cc316e Binary files /dev/null and b/build/images/Belgium.png differ diff --git a/build/images/Brazil.png b/build/images/Brazil.png new file mode 100644 index 0000000..d6bfa9a Binary files /dev/null and b/build/images/Brazil.png differ diff --git a/build/images/Croatia.png b/build/images/Croatia.png new file mode 100644 index 0000000..34e89f5 Binary files /dev/null and b/build/images/Croatia.png differ diff --git a/build/images/England.png b/build/images/England.png new file mode 100644 index 0000000..e508786 Binary files /dev/null and b/build/images/England.png differ diff --git a/build/images/Germany.png b/build/images/Germany.png new file mode 100644 index 0000000..eeffec5 Binary files /dev/null and b/build/images/Germany.png differ diff --git a/build/images/Netherlands.png b/build/images/Netherlands.png new file mode 100644 index 0000000..c3c6b7a Binary files /dev/null and b/build/images/Netherlands.png differ diff --git a/build/images/Norway.png b/build/images/Norway.png new file mode 100644 index 0000000..5f49df9 Binary files /dev/null and b/build/images/Norway.png differ diff --git a/build/images/Portugal.png b/build/images/Portugal.png new file mode 100644 index 0000000..3443cd6 Binary files /dev/null and b/build/images/Portugal.png differ diff --git a/build/images/Spain.png b/build/images/Spain.png new file mode 100644 index 0000000..9ccd6d4 Binary files /dev/null and b/build/images/Spain.png differ diff --git a/build/images/Switzerland.png b/build/images/Switzerland.png new file mode 100644 index 0000000..7e30c16 Binary files /dev/null and b/build/images/Switzerland.png differ diff --git a/build/images/card_bg.png b/build/images/card_bg.png new file mode 100644 index 0000000..ce8e464 Binary files /dev/null and b/build/images/card_bg.png differ diff --git a/build/images/card_icon.png b/build/images/card_icon.png new file mode 100644 index 0000000..db384be Binary files /dev/null and b/build/images/card_icon.png differ diff --git a/build/images/city_logo_mini.png b/build/images/city_logo_mini.png new file mode 100644 index 0000000..2d3626f Binary files /dev/null and b/build/images/city_logo_mini.png differ diff --git a/build/images/profile_icon_0.png b/build/images/profile_icon_0.png new file mode 100644 index 0000000..4ce1ef2 Binary files /dev/null and b/build/images/profile_icon_0.png differ diff --git a/build/images/profile_icon_10.png b/build/images/profile_icon_10.png new file mode 100644 index 0000000..c863271 Binary files /dev/null and b/build/images/profile_icon_10.png differ diff --git a/build/images/profile_icon_11.png b/build/images/profile_icon_11.png new file mode 100644 index 0000000..74ed092 Binary files /dev/null and b/build/images/profile_icon_11.png differ diff --git a/build/images/profile_icon_16.png b/build/images/profile_icon_16.png new file mode 100644 index 0000000..f5a8bc0 Binary files /dev/null and b/build/images/profile_icon_16.png differ diff --git a/build/images/profile_icon_17.png b/build/images/profile_icon_17.png new file mode 100644 index 0000000..dcfb8e9 Binary files /dev/null and b/build/images/profile_icon_17.png differ diff --git a/build/images/profile_icon_18.png b/build/images/profile_icon_18.png new file mode 100644 index 0000000..4e3b31e Binary files /dev/null and b/build/images/profile_icon_18.png differ diff --git a/build/images/profile_icon_19.png b/build/images/profile_icon_19.png new file mode 100644 index 0000000..0cb81d5 Binary files /dev/null and b/build/images/profile_icon_19.png differ diff --git a/build/images/profile_icon_2.png b/build/images/profile_icon_2.png new file mode 100644 index 0000000..0819164 Binary files /dev/null and b/build/images/profile_icon_2.png differ diff --git a/build/images/profile_icon_20.png b/build/images/profile_icon_20.png new file mode 100644 index 0000000..79482ec Binary files /dev/null and b/build/images/profile_icon_20.png differ diff --git a/build/images/profile_icon_24.png b/build/images/profile_icon_24.png new file mode 100644 index 0000000..5890880 Binary files /dev/null and b/build/images/profile_icon_24.png differ diff --git a/build/images/profile_icon_25.png b/build/images/profile_icon_25.png new file mode 100644 index 0000000..99cf536 Binary files /dev/null and b/build/images/profile_icon_25.png differ diff --git a/build/images/profile_icon_26.png b/build/images/profile_icon_26.png new file mode 100644 index 0000000..4346483 Binary files /dev/null and b/build/images/profile_icon_26.png differ diff --git a/build/images/profile_icon_27.png b/build/images/profile_icon_27.png new file mode 100644 index 0000000..c49db3b Binary files /dev/null and b/build/images/profile_icon_27.png differ diff --git a/build/images/profile_icon_3.png b/build/images/profile_icon_3.png new file mode 100644 index 0000000..08f9ab9 Binary files /dev/null and b/build/images/profile_icon_3.png differ diff --git a/build/images/profile_icon_31.png b/build/images/profile_icon_31.png new file mode 100644 index 0000000..e48faf8 Binary files /dev/null and b/build/images/profile_icon_31.png differ diff --git a/build/images/profile_icon_32.png b/build/images/profile_icon_32.png new file mode 100644 index 0000000..82a9911 Binary files /dev/null and b/build/images/profile_icon_32.png differ diff --git a/build/images/profile_icon_33.png b/build/images/profile_icon_33.png new file mode 100644 index 0000000..bf18123 Binary files /dev/null and b/build/images/profile_icon_33.png differ diff --git a/build/images/profile_icon_4.png b/build/images/profile_icon_4.png new file mode 100644 index 0000000..6c8edbc Binary files /dev/null and b/build/images/profile_icon_4.png differ diff --git a/build/images/profile_icon_47.png b/build/images/profile_icon_47.png new file mode 100644 index 0000000..c95f470 Binary files /dev/null and b/build/images/profile_icon_47.png differ diff --git a/build/images/profile_icon_5.png b/build/images/profile_icon_5.png new file mode 100644 index 0000000..ff0daa0 Binary files /dev/null and b/build/images/profile_icon_5.png differ diff --git a/build/images/profile_icon_52.png b/build/images/profile_icon_52.png new file mode 100644 index 0000000..4921e39 Binary files /dev/null and b/build/images/profile_icon_52.png differ diff --git a/build/images/profile_icon_6.png b/build/images/profile_icon_6.png new file mode 100644 index 0000000..317e145 Binary files /dev/null and b/build/images/profile_icon_6.png differ diff --git a/build/images/profile_icon_8.png b/build/images/profile_icon_8.png new file mode 100644 index 0000000..ed1b75d Binary files /dev/null and b/build/images/profile_icon_8.png differ diff --git a/build/images/profile_icon_82.png b/build/images/profile_icon_82.png new file mode 100644 index 0000000..f8e41a2 Binary files /dev/null and b/build/images/profile_icon_82.png differ diff --git a/build/images/profile_icon_87.png b/build/images/profile_icon_87.png new file mode 100644 index 0000000..6bb5874 Binary files /dev/null and b/build/images/profile_icon_87.png differ diff --git a/build/images/profile_icon_9.png b/build/images/profile_icon_9.png new file mode 100644 index 0000000..84d3029 Binary files /dev/null and b/build/images/profile_icon_9.png differ diff --git a/build/images/profile_icon_97.png b/build/images/profile_icon_97.png new file mode 100644 index 0000000..4c00f69 Binary files /dev/null and b/build/images/profile_icon_97.png differ diff --git a/build/images/test.jpg b/build/images/test.jpg new file mode 100644 index 0000000..55c4281 Binary files /dev/null and b/build/images/test.jpg differ diff --git a/build/images/test2.jpg b/build/images/test2.jpg new file mode 100644 index 0000000..8ff98fa Binary files /dev/null and b/build/images/test2.jpg differ diff --git a/build/images/toty_icon.png b/build/images/toty_icon.png new file mode 100644 index 0000000..ea2fee1 Binary files /dev/null and b/build/images/toty_icon.png differ diff --git a/build/index.html b/build/index.html new file mode 100644 index 0000000..34fadc0 --- /dev/null +++ b/build/index.html @@ -0,0 +1 @@ +
a||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","var camel2hyphen = function (str) {\n return str\n .replace(/[A-Z]/g, function (match) {\n return '-' + match.toLowerCase();\n })\n .toLowerCase();\n};\n\nmodule.exports = camel2hyphen;","/*!\n\tCopyright (c) 2018 Jed Watson.\n\tLicensed under the MIT License (MIT), see\n\thttp://jedwatson.github.io/classnames\n*/\n/* global define */\n\n(function () {\n\t'use strict';\n\n\tvar hasOwn = {}.hasOwnProperty;\n\n\tfunction classNames () {\n\t\tvar classes = '';\n\n\t\tfor (var i = 0; i < arguments.length; i++) {\n\t\t\tvar arg = arguments[i];\n\t\t\tif (arg) {\n\t\t\t\tclasses = appendClass(classes, parseValue(arg));\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction parseValue (arg) {\n\t\tif (typeof arg === 'string' || typeof arg === 'number') {\n\t\t\treturn arg;\n\t\t}\n\n\t\tif (typeof arg !== 'object') {\n\t\t\treturn '';\n\t\t}\n\n\t\tif (Array.isArray(arg)) {\n\t\t\treturn classNames.apply(null, arg);\n\t\t}\n\n\t\tif (arg.toString !== Object.prototype.toString && !arg.toString.toString().includes('[native code]')) {\n\t\t\treturn arg.toString();\n\t\t}\n\n\t\tvar classes = '';\n\n\t\tfor (var key in arg) {\n\t\t\tif (hasOwn.call(arg, key) && arg[key]) {\n\t\t\t\tclasses = appendClass(classes, key);\n\t\t\t}\n\t\t}\n\n\t\treturn classes;\n\t}\n\n\tfunction appendClass (value, newClass) {\n\t\tif (!newClass) {\n\t\t\treturn value;\n\t\t}\n\t\n\t\tif (value) {\n\t\t\treturn value + ' ' + newClass;\n\t\t}\n\t\n\t\treturn value + newClass;\n\t}\n\n\tif (typeof module !== 'undefined' && module.exports) {\n\t\tclassNames.default = classNames;\n\t\tmodule.exports = classNames;\n\t} else if (typeof define === 'function' && typeof define.amd === 'object' && define.amd) {\n\t\t// register as 'classnames', consistent with npm package name\n\t\tdefine('classnames', [], function () {\n\t\t\treturn classNames;\n\t\t});\n\t} else {\n\t\twindow.classNames = classNames;\n\t}\n}());\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","var getProto = Object.getPrototypeOf ? (obj) => (Object.getPrototypeOf(obj)) : (obj) => (obj.__proto__);\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach((key) => (def[key] = () => (value[key])));\n\t}\n\tdef['default'] = () => (value);\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"static/js/\" + chunkId + \".\" + \"bb108b7c\" + \".chunk.js\";\n};","// This function allow to reference async chunks\n__webpack_require__.miniCssF = (chunkId) => {\n\t// return url for filenames based on template\n\treturn undefined;\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","var inProgress = {};\nvar dataWebpackPrefix = \"mancity:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.p = \"/\";","// no baseURI\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t792: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n// no on chunks loaded\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar chunkIds = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunkmancity\"] = self[\"webpackChunkmancity\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n// TODO: (v7) Change the Location generic default from `any` to `unknown` and\n// remove Remix `useLocation` wrapper.\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location