(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined, "[project]/node_modules/next/navigation.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { module.exports = __turbopack_context__.r("[project]/node_modules/next/dist/client/components/navigation.js [app-client] (ecmascript)"); }), "[project]/node_modules/@vercel/analytics/dist/next/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Analytics", ()=>Analytics2 ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); // src/nextjs/index.tsx var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); // src/nextjs/utils.ts var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/navigation.js [app-client] (ecmascript)"); "use client"; ; ; // package.json var name = "@vercel/analytics"; var version = "1.6.1"; // src/queue.ts var initQueue = ()=>{ if (window.va) return; window.va = function a(...params) { (window.vaq = window.vaq || []).push(params); }; }; // src/utils.ts function isBrowser() { return typeof window !== "undefined"; } function detectEnvironment() { try { const env = ("TURBOPACK compile-time value", "development"); if ("TURBOPACK compile-time truthy", 1) { return "development"; } } catch (e) {} return "production"; } function setMode(mode = "auto") { if (mode === "auto") { window.vam = detectEnvironment(); return; } window.vam = mode; } function getMode() { const mode = isBrowser() ? window.vam : detectEnvironment(); return mode || "production"; } function isDevelopment() { return getMode() === "development"; } function computeRoute(pathname, pathParams) { if (!pathname || !pathParams) { return pathname; } let result = pathname; try { const entries = Object.entries(pathParams); for (const [key, value] of entries){ if (!Array.isArray(value)) { const matcher = turnValueToRegExp(value); if (matcher.test(result)) { result = result.replace(matcher, `/[${key}]`); } } } for (const [key, value] of entries){ if (Array.isArray(value)) { const matcher = turnValueToRegExp(value.join("/")); if (matcher.test(result)) { result = result.replace(matcher, `/[...${key}]`); } } } return result; } catch (e) { return pathname; } } function turnValueToRegExp(value) { return new RegExp(`/${escapeRegExp(value)}(?=[/?#]|$)`); } function escapeRegExp(string) { return string.replace(/[.*+?^${}()|[\]\\]/g, "\\$&"); } function getScriptSrc(props) { if (props.scriptSrc) { return props.scriptSrc; } if (isDevelopment()) { return "https://va.vercel-scripts.com/v1/script.debug.js"; } if (props.basePath) { return `${props.basePath}/insights/script.js`; } return "/_vercel/insights/script.js"; } // src/generic.ts function inject(props = { debug: true }) { var _a; if (!isBrowser()) return; setMode(props.mode); initQueue(); if (props.beforeSend) { (_a = window.va) == null ? void 0 : _a.call(window, "beforeSend", props.beforeSend); } const src = getScriptSrc(props); if (document.head.querySelector(`script[src*="${src}"]`)) return; const script = document.createElement("script"); script.src = src; script.defer = true; script.dataset.sdkn = name + (props.framework ? `/${props.framework}` : ""); script.dataset.sdkv = version; if (props.disableAutoTrack) { script.dataset.disableAutoTrack = "1"; } if (props.endpoint) { script.dataset.endpoint = props.endpoint; } else if (props.basePath) { script.dataset.endpoint = `${props.basePath}/insights`; } if (props.dsn) { script.dataset.dsn = props.dsn; } script.onerror = ()=>{ const errorMessage = isDevelopment() ? "Please check if any ad blockers are enabled and try again." : "Be sure to enable Web Analytics for your project and deploy again. See https://vercel.com/docs/analytics/quickstart for more information."; console.log(`[Vercel Web Analytics] Failed to load script from ${src}. ${errorMessage}`); }; if (isDevelopment() && props.debug === false) { script.dataset.debug = "false"; } document.head.appendChild(script); } function pageview({ route, path }) { var _a; (_a = window.va) == null ? void 0 : _a.call(window, "pageview", { route, path }); } // src/react/utils.ts function getBasePath() { if (typeof __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] === "undefined" || typeof __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env === "undefined") { return void 0; } return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env.REACT_APP_VERCEL_OBSERVABILITY_BASEPATH; } // src/react/index.tsx function Analytics(props) { (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "Analytics.useEffect": ()=>{ var _a; if (props.beforeSend) { (_a = window.va) == null ? void 0 : _a.call(window, "beforeSend", props.beforeSend); } } }["Analytics.useEffect"], [ props.beforeSend ]); (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "Analytics.useEffect": ()=>{ inject({ framework: props.framework || "react", basePath: props.basePath ?? getBasePath(), ...props.route !== void 0 && { disableAutoTrack: true }, ...props }); } }["Analytics.useEffect"], []); (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"])({ "Analytics.useEffect": ()=>{ if (props.route && props.path) { pageview({ route: props.route, path: props.path }); } } }["Analytics.useEffect"], [ props.route, props.path ]); return null; } ; var useRoute = ()=>{ const params = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useParams"])(); const searchParams = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useSearchParams"])(); const path = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$navigation$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["usePathname"])(); if (!params) { return { route: null, path }; } const finalParams = Object.keys(params).length ? params : Object.fromEntries(searchParams.entries()); return { route: computeRoute(path, finalParams), path }; }; function getBasePath2() { if (typeof __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] === "undefined" || typeof __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env === "undefined") { return void 0; } return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].env.NEXT_PUBLIC_VERCEL_OBSERVABILITY_BASEPATH; } // src/nextjs/index.tsx function AnalyticsComponent(props) { const { route, path } = useRoute(); return /* @__PURE__ */ __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].createElement(Analytics, { path, route, ...props, basePath: getBasePath2(), framework: "next" }); } function Analytics2(props) { return /* @__PURE__ */ __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].createElement(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Suspense"], { fallback: null }, /* @__PURE__ */ __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].createElement(AnalyticsComponent, { ...props })); } ; //# sourceMappingURL=index.mjs.map }), "[project]/node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; /** * @license React * react-jsx-dev-runtime.development.js * * Copyright (c) Meta Platforms, Inc. and affiliates. * * This source code is licensed under the MIT license found in the * LICENSE file in the root directory of this source tree. */ var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); "use strict"; "production" !== ("TURBOPACK compile-time value", "development") && function() { function getComponentNameFromType(type) { if (null == type) return null; if ("function" === typeof type) return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null; if ("string" === typeof type) return type; switch(type){ case REACT_FRAGMENT_TYPE: return "Fragment"; case REACT_PROFILER_TYPE: return "Profiler"; case REACT_STRICT_MODE_TYPE: return "StrictMode"; case REACT_SUSPENSE_TYPE: return "Suspense"; case REACT_SUSPENSE_LIST_TYPE: return "SuspenseList"; case REACT_ACTIVITY_TYPE: return "Activity"; case REACT_VIEW_TRANSITION_TYPE: return "ViewTransition"; } if ("object" === typeof type) switch("number" === typeof type.tag && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), type.$$typeof){ case REACT_PORTAL_TYPE: return "Portal"; case REACT_CONTEXT_TYPE: return type.displayName || "Context"; case REACT_CONSUMER_TYPE: return (type._context.displayName || "Context") + ".Consumer"; case REACT_FORWARD_REF_TYPE: var innerType = type.render; type = type.displayName; type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef"); return type; case REACT_MEMO_TYPE: return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo"; case REACT_LAZY_TYPE: innerType = type._payload; type = type._init; try { return getComponentNameFromType(type(innerType)); } catch (x) {} } return null; } function testStringCoercion(value) { return "" + value; } function checkKeyStringCoercion(value) { try { testStringCoercion(value); var JSCompiler_inline_result = !1; } catch (e) { JSCompiler_inline_result = !0; } if (JSCompiler_inline_result) { JSCompiler_inline_result = console; var JSCompiler_temp_const = JSCompiler_inline_result.error; var JSCompiler_inline_result$jscomp$0 = "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object"; JSCompiler_temp_const.call(JSCompiler_inline_result, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", JSCompiler_inline_result$jscomp$0); return testStringCoercion(value); } } function getTaskName(type) { if (type === REACT_FRAGMENT_TYPE) return "<>"; if ("object" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE) return "<...>"; try { var name = getComponentNameFromType(type); return name ? "<" + name + ">" : "<...>"; } catch (x) { return "<...>"; } } function getOwner() { var dispatcher = ReactSharedInternals.A; return null === dispatcher ? null : dispatcher.getOwner(); } function UnknownOwner() { return Error("react-stack-top-frame"); } function hasValidKey(config) { if (hasOwnProperty.call(config, "key")) { var getter = Object.getOwnPropertyDescriptor(config, "key").get; if (getter && getter.isReactWarning) return !1; } return void 0 !== config.key; } function defineKeyPropWarningGetter(props, displayName) { function warnAboutAccessingKey() { specialPropKeyWarningShown || (specialPropKeyWarningShown = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", displayName)); } warnAboutAccessingKey.isReactWarning = !0; Object.defineProperty(props, "key", { get: warnAboutAccessingKey, configurable: !0 }); } function elementRefGetterWithDeprecationWarning() { var componentName = getComponentNameFromType(this.type); didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release.")); componentName = this.props.ref; return void 0 !== componentName ? componentName : null; } function ReactElement(type, key, props, owner, debugStack, debugTask) { var refProp = props.ref; type = { $$typeof: REACT_ELEMENT_TYPE, type: type, key: key, props: props, _owner: owner }; null !== (void 0 !== refProp ? refProp : null) ? Object.defineProperty(type, "ref", { enumerable: !1, get: elementRefGetterWithDeprecationWarning }) : Object.defineProperty(type, "ref", { enumerable: !1, value: null }); type._store = {}; Object.defineProperty(type._store, "validated", { configurable: !1, enumerable: !1, writable: !0, value: 0 }); Object.defineProperty(type, "_debugInfo", { configurable: !1, enumerable: !1, writable: !0, value: null }); Object.defineProperty(type, "_debugStack", { configurable: !1, enumerable: !1, writable: !0, value: debugStack }); Object.defineProperty(type, "_debugTask", { configurable: !1, enumerable: !1, writable: !0, value: debugTask }); Object.freeze && (Object.freeze(type.props), Object.freeze(type)); return type; } function jsxDEVImpl(type, config, maybeKey, isStaticChildren, debugStack, debugTask) { var children = config.children; if (void 0 !== children) if (isStaticChildren) if (isArrayImpl(children)) { for(isStaticChildren = 0; isStaticChildren < children.length; isStaticChildren++)validateChildKeys(children[isStaticChildren]); Object.freeze && Object.freeze(children); } else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead."); else validateChildKeys(children); if (hasOwnProperty.call(config, "key")) { children = getComponentNameFromType(type); var keys = Object.keys(config).filter(function(k) { return "key" !== k; }); isStaticChildren = 0 < keys.length ? "{key: someKey, " + keys.join(": ..., ") + ": ...}" : "{key: someKey}"; didWarnAboutKeySpread[children + isStaticChildren] || (keys = 0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}", console.error('A props object containing a "key" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />', isStaticChildren, children, keys, children), didWarnAboutKeySpread[children + isStaticChildren] = !0); } children = null; void 0 !== maybeKey && (checkKeyStringCoercion(maybeKey), children = "" + maybeKey); hasValidKey(config) && (checkKeyStringCoercion(config.key), children = "" + config.key); if ("key" in config) { maybeKey = {}; for(var propName in config)"key" !== propName && (maybeKey[propName] = config[propName]); } else maybeKey = config; children && defineKeyPropWarningGetter(maybeKey, "function" === typeof type ? type.displayName || type.name || "Unknown" : type); return ReactElement(type, children, maybeKey, getOwner(), debugStack, debugTask); } function validateChildKeys(node) { isValidElement(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1)); } function isValidElement(object) { return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE; } var React = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), REACT_VIEW_TRANSITION_TYPE = Symbol.for("react.view_transition"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() { return null; }; React = { react_stack_bottom_frame: function(callStackForError) { return callStackForError(); } }; var specialPropKeyWarningShown; var didWarnAboutElementRef = {}; var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(React, UnknownOwner)(); var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner)); var didWarnAboutKeySpread = {}; exports.Fragment = REACT_FRAGMENT_TYPE; exports.jsxDEV = function(type, config, maybeKey, isStaticChildren) { var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++; if (trackActualOwner) { var previousStackTraceLimit = Error.stackTraceLimit; Error.stackTraceLimit = 10; var debugStackDEV = Error("react-stack-top-frame"); Error.stackTraceLimit = previousStackTraceLimit; } else debugStackDEV = unknownOwnerDebugStack; return jsxDEVImpl(type, config, maybeKey, isStaticChildren, debugStackDEV, trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask); }; }(); }), "[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); 'use strict'; if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; else { module.exports = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js [app-client] (ecmascript)"); } }), "[project]/node_modules/next/dist/shared/lib/router/utils/querystring.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { assign: null, searchParamsToUrlQuery: null, urlQueryToSearchParams: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { assign: function() { return assign; }, searchParamsToUrlQuery: function() { return searchParamsToUrlQuery; }, urlQueryToSearchParams: function() { return urlQueryToSearchParams; } }); function searchParamsToUrlQuery(searchParams) { const query = {}; for (const [key, value] of searchParams.entries()){ const existing = query[key]; if (typeof existing === 'undefined') { query[key] = value; } else if (Array.isArray(existing)) { existing.push(value); } else { query[key] = [ existing, value ]; } } return query; } function stringifyUrlQueryParam(param) { if (typeof param === 'string') { return param; } if (typeof param === 'number' && !isNaN(param) || typeof param === 'boolean') { return String(param); } else { return ''; } } function urlQueryToSearchParams(query) { const searchParams = new URLSearchParams(); for (const [key, value] of Object.entries(query)){ if (Array.isArray(value)) { for (const item of value){ searchParams.append(key, stringifyUrlQueryParam(item)); } } else { searchParams.set(key, stringifyUrlQueryParam(value)); } } return searchParams; } function assign(target, ...searchParamsList) { for (const searchParams of searchParamsList){ for (const key of searchParams.keys()){ target.delete(key); } for (const [key, value] of searchParams.entries()){ target.append(key, value); } } return target; } //# sourceMappingURL=querystring.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/format-url.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; // Format function modified from nodejs // Copyright Joyent, Inc. and other Node contributors. // // Permission is hereby granted, free of charge, to any person obtaining a // copy of this software and associated documentation files (the // "Software"), to deal in the Software without restriction, including // without limitation the rights to use, copy, modify, merge, publish, // distribute, sublicense, and/or sell copies of the Software, and to permit // persons to whom the Software is furnished to do so, subject to the // following conditions: // // The above copyright notice and this permission notice shall be included // in all copies or substantial portions of the Software. // // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS // OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF // MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN // NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, // DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR // OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE // USE OR OTHER DEALINGS IN THE SOFTWARE. var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { formatUrl: null, formatWithValidation: null, urlObjectKeys: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { formatUrl: function() { return formatUrl; }, formatWithValidation: function() { return formatWithValidation; }, urlObjectKeys: function() { return urlObjectKeys; } }); const _interop_require_wildcard = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs [app-client] (ecmascript)"); const _querystring = /*#__PURE__*/ _interop_require_wildcard._(__turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/querystring.js [app-client] (ecmascript)")); const slashedProtocols = /https?|ftp|gopher|file/; function formatUrl(urlObj) { let { auth, hostname } = urlObj; let protocol = urlObj.protocol || ''; let pathname = urlObj.pathname || ''; let hash = urlObj.hash || ''; let query = urlObj.query || ''; let host = false; auth = auth ? encodeURIComponent(auth).replace(/%3A/i, ':') + '@' : ''; if (urlObj.host) { host = auth + urlObj.host; } else if (hostname) { host = auth + (~hostname.indexOf(':') ? `[${hostname}]` : hostname); if (urlObj.port) { host += ':' + urlObj.port; } } if (query && typeof query === 'object') { query = String(_querystring.urlQueryToSearchParams(query)); } let search = urlObj.search || query && `?${query}` || ''; if (protocol && !protocol.endsWith(':')) protocol += ':'; if (urlObj.slashes || (!protocol || slashedProtocols.test(protocol)) && host !== false) { host = '//' + (host || ''); if (pathname && pathname[0] !== '/') pathname = '/' + pathname; } else if (!host) { host = ''; } if (hash && hash[0] !== '#') hash = '#' + hash; if (search && search[0] !== '?') search = '?' + search; pathname = pathname.replace(/[?#]/g, encodeURIComponent); search = search.replace('#', '%23'); return `${protocol}${host}${pathname}${search}${hash}`; } const urlObjectKeys = [ 'auth', 'hash', 'host', 'hostname', 'href', 'path', 'pathname', 'port', 'protocol', 'query', 'search', 'slashes' ]; function formatWithValidation(url) { if ("TURBOPACK compile-time truthy", 1) { if (url !== null && typeof url === 'object') { Object.keys(url).forEach((key)=>{ if (!urlObjectKeys.includes(key)) { console.warn(`Unknown key passed via urlObject into url.format: ${key}`); } }); } } return formatUrl(url); } //# sourceMappingURL=format-url.js.map }), "[project]/node_modules/next/dist/client/use-merged-ref.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "useMergedRef", { enumerable: true, get: function() { return useMergedRef; } }); const _react = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); function useMergedRef(refA, refB) { const cleanupA = (0, _react.useRef)(null); const cleanupB = (0, _react.useRef)(null); // NOTE: In theory, we could skip the wrapping if only one of the refs is non-null. // (this happens often if the user doesn't pass a ref to Link/Form/Image) // But this can cause us to leak a cleanup-ref into user code (previously via ``), // and the user might pass that ref into ref-merging library that doesn't support cleanup refs // (because it hasn't been updated for React 19) // which can then cause things to blow up, because a cleanup-returning ref gets called with `null`. // So in practice, it's safer to be defensive and always wrap the ref, even on React 19. return (0, _react.useCallback)((current)=>{ if (current === null) { const cleanupFnA = cleanupA.current; if (cleanupFnA) { cleanupA.current = null; cleanupFnA(); } const cleanupFnB = cleanupB.current; if (cleanupFnB) { cleanupB.current = null; cleanupFnB(); } } else { if (refA) { cleanupA.current = applyRef(refA, current); } if (refB) { cleanupB.current = applyRef(refB, current); } } }, [ refA, refB ]); } function applyRef(refA, current) { if (typeof refA === 'function') { const cleanup = refA(current); if (typeof cleanup === 'function') { return cleanup; } else { return ()=>refA(null); } } else { refA.current = current; return ()=>{ refA.current = null; }; } } if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=use-merged-ref.js.map }), "[project]/node_modules/next/dist/shared/lib/utils.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { DecodeError: null, MiddlewareNotFoundError: null, MissingStaticPage: null, NormalizeError: null, PageNotFoundError: null, SP: null, ST: null, WEB_VITALS: null, execOnce: null, getDisplayName: null, getLocationOrigin: null, getURL: null, isAbsoluteUrl: null, isResSent: null, loadGetInitialProps: null, normalizeRepeatedSlashes: null, stringifyError: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { DecodeError: function() { return DecodeError; }, MiddlewareNotFoundError: function() { return MiddlewareNotFoundError; }, MissingStaticPage: function() { return MissingStaticPage; }, NormalizeError: function() { return NormalizeError; }, PageNotFoundError: function() { return PageNotFoundError; }, SP: function() { return SP; }, ST: function() { return ST; }, WEB_VITALS: function() { return WEB_VITALS; }, execOnce: function() { return execOnce; }, getDisplayName: function() { return getDisplayName; }, getLocationOrigin: function() { return getLocationOrigin; }, getURL: function() { return getURL; }, isAbsoluteUrl: function() { return isAbsoluteUrl; }, isResSent: function() { return isResSent; }, loadGetInitialProps: function() { return loadGetInitialProps; }, normalizeRepeatedSlashes: function() { return normalizeRepeatedSlashes; }, stringifyError: function() { return stringifyError; } }); const WEB_VITALS = [ 'CLS', 'FCP', 'FID', 'INP', 'LCP', 'TTFB' ]; function execOnce(fn) { let used = false; let result; return (...args)=>{ if (!used) { used = true; result = fn(...args); } return result; }; } // Scheme: https://tools.ietf.org/html/rfc3986#section-3.1 // Absolute URL: https://tools.ietf.org/html/rfc3986#section-4.3 const ABSOLUTE_URL_REGEX = /^[a-zA-Z][a-zA-Z\d+\-.]*?:/; const isAbsoluteUrl = (url)=>ABSOLUTE_URL_REGEX.test(url); function getLocationOrigin() { const { protocol, hostname, port } = window.location; return `${protocol}//${hostname}${port ? ':' + port : ''}`; } function getURL() { const { href } = window.location; const origin = getLocationOrigin(); return href.substring(origin.length); } function getDisplayName(Component) { return typeof Component === 'string' ? Component : Component.displayName || Component.name || 'Unknown'; } function isResSent(res) { return res.finished || res.headersSent; } function normalizeRepeatedSlashes(url) { const urlParts = url.split('?'); const urlNoQuery = urlParts[0]; return urlNoQuery // first we replace any non-encoded backslashes with forward // then normalize repeated forward slashes .replace(/\\/g, '/').replace(/\/\/+/g, '/') + (urlParts[1] ? `?${urlParts.slice(1).join('?')}` : ''); } async function loadGetInitialProps(App, ctx) { if ("TURBOPACK compile-time truthy", 1) { if (App.prototype?.getInitialProps) { const message = `"${getDisplayName(App)}.getInitialProps()" is defined as an instance method - visit https://nextjs.org/docs/messages/get-initial-props-as-an-instance-method for more information.`; throw Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { value: "E394", enumerable: false, configurable: true }); } } // when called from _app `ctx` is nested in `ctx` const res = ctx.res || ctx.ctx && ctx.ctx.res; if (!App.getInitialProps) { if (ctx.ctx && ctx.Component) { // @ts-ignore pageProps default return { pageProps: await loadGetInitialProps(ctx.Component, ctx.ctx) }; } return {}; } const props = await App.getInitialProps(ctx); if (res && isResSent(res)) { return props; } if (!props) { const message = `"${getDisplayName(App)}.getInitialProps()" should resolve to an object. But found "${props}" instead.`; throw Object.defineProperty(new Error(message), "__NEXT_ERROR_CODE", { value: "E394", enumerable: false, configurable: true }); } if ("TURBOPACK compile-time truthy", 1) { if (Object.keys(props).length === 0 && !ctx.ctx) { console.warn(`${getDisplayName(App)} returned an empty object from \`getInitialProps\`. This de-optimizes and prevents automatic static optimization. https://nextjs.org/docs/messages/empty-object-getInitialProps`); } } return props; } const SP = typeof performance !== 'undefined'; const ST = SP && [ 'mark', 'measure', 'getEntriesByName' ].every((method)=>typeof performance[method] === 'function'); class DecodeError extends Error { } class NormalizeError extends Error { } class PageNotFoundError extends Error { constructor(page){ super(); this.code = 'ENOENT'; this.name = 'PageNotFoundError'; this.message = `Cannot find module for page: ${page}`; } } class MissingStaticPage extends Error { constructor(page, message){ super(); this.message = `Failed to load static file for page: ${page} ${message}`; } } class MiddlewareNotFoundError extends Error { constructor(){ super(); this.code = 'ENOENT'; this.message = `Cannot find the middleware module`; } } function stringifyError(error) { return JSON.stringify({ message: error.message, stack: error.stack }); } //# sourceMappingURL=utils.js.map }), "[project]/node_modules/next/dist/shared/lib/router/utils/is-local-url.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "isLocalURL", { enumerable: true, get: function() { return isLocalURL; } }); const _utils = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils.js [app-client] (ecmascript)"); const _hasbasepath = __turbopack_context__.r("[project]/node_modules/next/dist/client/has-base-path.js [app-client] (ecmascript)"); function isLocalURL(url) { // prevent a hydration mismatch on href for url with anchor refs if (!(0, _utils.isAbsoluteUrl)(url)) return true; try { // absolute urls can be local if they are on the same origin const locationOrigin = (0, _utils.getLocationOrigin)(); const resolved = new URL(url, locationOrigin); return resolved.origin === locationOrigin && (0, _hasbasepath.hasBasePath)(resolved.pathname); } catch (_) { return false; } } //# sourceMappingURL=is-local-url.js.map }), "[project]/node_modules/next/dist/shared/lib/utils/error-once.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "errorOnce", { enumerable: true, get: function() { return errorOnce; } }); let errorOnce = (_)=>{}; if ("TURBOPACK compile-time truthy", 1) { const errors = new Set(); errorOnce = (msg)=>{ if (!errors.has(msg)) { console.error(msg); } errors.add(msg); }; } //# sourceMappingURL=error-once.js.map }), "[project]/node_modules/next/dist/client/app-dir/link.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); 'use client'; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { default: null, useLinkStatus: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { /** * A React component that extends the HTML `` element to provide * [prefetching](https://nextjs.org/docs/app/building-your-application/routing/linking-and-navigating#2-prefetching) * and client-side navigation. This is the primary way to navigate between routes in Next.js. * * @remarks * - Prefetching is only enabled in production. * * @see https://nextjs.org/docs/app/api-reference/components/link */ default: function() { return LinkComponent; }, useLinkStatus: function() { return useLinkStatus; } }); const _interop_require_wildcard = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs [app-client] (ecmascript)"); const _jsxruntime = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)"); const _react = /*#__PURE__*/ _interop_require_wildcard._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)")); const _formaturl = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/format-url.js [app-client] (ecmascript)"); const _approutercontextsharedruntime = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/app-router-context.shared-runtime.js [app-client] (ecmascript)"); const _usemergedref = __turbopack_context__.r("[project]/node_modules/next/dist/client/use-merged-ref.js [app-client] (ecmascript)"); const _utils = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils.js [app-client] (ecmascript)"); const _addbasepath = __turbopack_context__.r("[project]/node_modules/next/dist/client/add-base-path.js [app-client] (ecmascript)"); const _warnonce = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils/warn-once.js [app-client] (ecmascript)"); const _links = __turbopack_context__.r("[project]/node_modules/next/dist/client/components/links.js [app-client] (ecmascript)"); const _islocalurl = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router/utils/is-local-url.js [app-client] (ecmascript)"); const _types = __turbopack_context__.r("[project]/node_modules/next/dist/client/components/segment-cache/types.js [app-client] (ecmascript)"); const _erroronce = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils/error-once.js [app-client] (ecmascript)"); function isModifiedEvent(event) { const eventTarget = event.currentTarget; const target = eventTarget.getAttribute('target'); return target && target !== '_self' || event.metaKey || event.ctrlKey || event.shiftKey || event.altKey || // triggers resource download event.nativeEvent && event.nativeEvent.which === 2; } function linkClicked(e, href, as, linkInstanceRef, replace, scroll, onNavigate) { if (typeof window !== 'undefined') { const { nodeName } = e.currentTarget; // anchors inside an svg have a lowercase nodeName const isAnchorNodeName = nodeName.toUpperCase() === 'A'; if (isAnchorNodeName && isModifiedEvent(e) || e.currentTarget.hasAttribute('download')) { // ignore click for browser’s default behavior return; } if (!(0, _islocalurl.isLocalURL)(href)) { if (replace) { // browser default behavior does not replace the history state // so we need to do it manually e.preventDefault(); location.replace(href); } // ignore click for browser’s default behavior return; } e.preventDefault(); if (onNavigate) { let isDefaultPrevented = false; onNavigate({ preventDefault: ()=>{ isDefaultPrevented = true; } }); if (isDefaultPrevented) { return; } } const { dispatchNavigateAction } = __turbopack_context__.r("[project]/node_modules/next/dist/client/components/app-router-instance.js [app-client] (ecmascript)"); _react.default.startTransition(()=>{ dispatchNavigateAction(as || href, replace ? 'replace' : 'push', scroll ?? true, linkInstanceRef.current); }); } } function formatStringOrUrl(urlObjOrString) { if (typeof urlObjOrString === 'string') { return urlObjOrString; } return (0, _formaturl.formatUrl)(urlObjOrString); } function LinkComponent(props) { const [linkStatus, setOptimisticLinkStatus] = (0, _react.useOptimistic)(_links.IDLE_LINK_STATUS); let children; const linkInstanceRef = (0, _react.useRef)(null); const { href: hrefProp, as: asProp, children: childrenProp, prefetch: prefetchProp = null, passHref, replace, shallow, scroll, onClick, onMouseEnter: onMouseEnterProp, onTouchStart: onTouchStartProp, legacyBehavior = false, onNavigate, ref: forwardedRef, unstable_dynamicOnHover, ...restProps } = props; children = childrenProp; if (legacyBehavior && (typeof children === 'string' || typeof children === 'number')) { children = /*#__PURE__*/ (0, _jsxruntime.jsx)("a", { children: children }); } const router = _react.default.useContext(_approutercontextsharedruntime.AppRouterContext); const prefetchEnabled = prefetchProp !== false; const fetchStrategy = prefetchProp !== false ? getFetchStrategyFromPrefetchProp(prefetchProp) : _types.FetchStrategy.PPR; if ("TURBOPACK compile-time truthy", 1) { function createPropError(args) { return Object.defineProperty(new Error(`Failed prop type: The prop \`${args.key}\` expects a ${args.expected} in \`\`, but got \`${args.actual}\` instead.` + (typeof window !== 'undefined' ? "\nOpen your browser's console to view the Component stack trace." : '')), "__NEXT_ERROR_CODE", { value: "E319", enumerable: false, configurable: true }); } // TypeScript trick for type-guarding: const requiredPropsGuard = { href: true }; const requiredProps = Object.keys(requiredPropsGuard); requiredProps.forEach((key)=>{ if (key === 'href') { if (props[key] == null || typeof props[key] !== 'string' && typeof props[key] !== 'object') { throw createPropError({ key, expected: '`string` or `object`', actual: props[key] === null ? 'null' : typeof props[key] }); } } else { // TypeScript trick for type-guarding: const _ = key; } }); // TypeScript trick for type-guarding: const optionalPropsGuard = { as: true, replace: true, scroll: true, shallow: true, passHref: true, prefetch: true, unstable_dynamicOnHover: true, onClick: true, onMouseEnter: true, onTouchStart: true, legacyBehavior: true, onNavigate: true }; const optionalProps = Object.keys(optionalPropsGuard); optionalProps.forEach((key)=>{ const valType = typeof props[key]; if (key === 'as') { if (props[key] && valType !== 'string' && valType !== 'object') { throw createPropError({ key, expected: '`string` or `object`', actual: valType }); } } else if (key === 'onClick' || key === 'onMouseEnter' || key === 'onTouchStart' || key === 'onNavigate') { if (props[key] && valType !== 'function') { throw createPropError({ key, expected: '`function`', actual: valType }); } } else if (key === 'replace' || key === 'scroll' || key === 'shallow' || key === 'passHref' || key === 'legacyBehavior' || key === 'unstable_dynamicOnHover') { if (props[key] != null && valType !== 'boolean') { throw createPropError({ key, expected: '`boolean`', actual: valType }); } } else if (key === 'prefetch') { if (props[key] != null && valType !== 'boolean' && props[key] !== 'auto') { throw createPropError({ key, expected: '`boolean | "auto"`', actual: valType }); } } else { // TypeScript trick for type-guarding: const _ = key; } }); } if ("TURBOPACK compile-time truthy", 1) { if (props.locale) { (0, _warnonce.warnOnce)('The `locale` prop is not supported in `next/link` while using the `app` router. Read more about app router internalization: https://nextjs.org/docs/app/building-your-application/routing/internationalization'); } if (!asProp) { let href; if (typeof hrefProp === 'string') { href = hrefProp; } else if (typeof hrefProp === 'object' && typeof hrefProp.pathname === 'string') { href = hrefProp.pathname; } if (href) { const hasDynamicSegment = href.split('/').some((segment)=>segment.startsWith('[') && segment.endsWith(']')); if (hasDynamicSegment) { throw Object.defineProperty(new Error(`Dynamic href \`${href}\` found in while using the \`/app\` router, this is not supported. Read more: https://nextjs.org/docs/messages/app-dir-dynamic-href`), "__NEXT_ERROR_CODE", { value: "E267", enumerable: false, configurable: true }); } } } } const { href, as } = _react.default.useMemo({ "LinkComponent.useMemo": ()=>{ const resolvedHref = formatStringOrUrl(hrefProp); return { href: resolvedHref, as: asProp ? formatStringOrUrl(asProp) : resolvedHref }; } }["LinkComponent.useMemo"], [ hrefProp, asProp ]); // This will return the first child, if multiple are provided it will throw an error let child; if (legacyBehavior) { if (children?.$$typeof === Symbol.for('react.lazy')) { throw Object.defineProperty(new Error(`\`\` received a direct child that is either a Server Component, or JSX that was loaded with React.lazy(). This is not supported. Either remove legacyBehavior, or make the direct child a Client Component that renders the Link's \`\` tag.`), "__NEXT_ERROR_CODE", { value: "E863", enumerable: false, configurable: true }); } if ("TURBOPACK compile-time truthy", 1) { if (onClick) { console.warn(`"onClick" was passed to with \`href\` of \`${hrefProp}\` but "legacyBehavior" was set. The legacy behavior requires onClick be set on the child of next/link`); } if (onMouseEnterProp) { console.warn(`"onMouseEnter" was passed to with \`href\` of \`${hrefProp}\` but "legacyBehavior" was set. The legacy behavior requires onMouseEnter be set on the child of next/link`); } try { child = _react.default.Children.only(children); } catch (err) { if (!children) { throw Object.defineProperty(new Error(`No children were passed to with \`href\` of \`${hrefProp}\` but one child is required https://nextjs.org/docs/messages/link-no-children`), "__NEXT_ERROR_CODE", { value: "E320", enumerable: false, configurable: true }); } throw Object.defineProperty(new Error(`Multiple children were passed to with \`href\` of \`${hrefProp}\` but only one child is supported https://nextjs.org/docs/messages/link-multiple-children` + (typeof window !== 'undefined' ? " \nOpen your browser's console to view the Component stack trace." : '')), "__NEXT_ERROR_CODE", { value: "E266", enumerable: false, configurable: true }); } } else //TURBOPACK unreachable ; } else { if ("TURBOPACK compile-time truthy", 1) { if (children?.type === 'a') { throw Object.defineProperty(new Error('Invalid with child. Please remove or use .\nLearn more: https://nextjs.org/docs/messages/invalid-new-link-with-extra-anchor'), "__NEXT_ERROR_CODE", { value: "E209", enumerable: false, configurable: true }); } } } const childRef = legacyBehavior ? child && typeof child === 'object' && child.ref : forwardedRef; // Use a callback ref to attach an IntersectionObserver to the anchor tag on // mount. In the future we will also use this to keep track of all the // currently mounted instances, e.g. so we can re-prefetch them after // a revalidation or refresh. const observeLinkVisibilityOnMount = _react.default.useCallback({ "LinkComponent.useCallback[observeLinkVisibilityOnMount]": (element)=>{ if (router !== null) { linkInstanceRef.current = (0, _links.mountLinkInstance)(element, href, router, fetchStrategy, prefetchEnabled, setOptimisticLinkStatus); } return ({ "LinkComponent.useCallback[observeLinkVisibilityOnMount]": ()=>{ if (linkInstanceRef.current) { (0, _links.unmountLinkForCurrentNavigation)(linkInstanceRef.current); linkInstanceRef.current = null; } (0, _links.unmountPrefetchableInstance)(element); } })["LinkComponent.useCallback[observeLinkVisibilityOnMount]"]; } }["LinkComponent.useCallback[observeLinkVisibilityOnMount]"], [ prefetchEnabled, href, router, fetchStrategy, setOptimisticLinkStatus ]); const mergedRef = (0, _usemergedref.useMergedRef)(observeLinkVisibilityOnMount, childRef); const childProps = { ref: mergedRef, onClick (e) { if ("TURBOPACK compile-time truthy", 1) { if (!e) { throw Object.defineProperty(new Error(`Component rendered inside next/link has to pass click event to "onClick" prop.`), "__NEXT_ERROR_CODE", { value: "E312", enumerable: false, configurable: true }); } } if (!legacyBehavior && typeof onClick === 'function') { onClick(e); } if (legacyBehavior && child.props && typeof child.props.onClick === 'function') { child.props.onClick(e); } if (!router) { return; } if (e.defaultPrevented) { return; } linkClicked(e, href, as, linkInstanceRef, replace, scroll, onNavigate); }, onMouseEnter (e) { if (!legacyBehavior && typeof onMouseEnterProp === 'function') { onMouseEnterProp(e); } if (legacyBehavior && child.props && typeof child.props.onMouseEnter === 'function') { child.props.onMouseEnter(e); } if (!router) { return; } if ("TURBOPACK compile-time truthy", 1) { return; } //TURBOPACK unreachable ; const upgradeToDynamicPrefetch = undefined; }, onTouchStart: ("TURBOPACK compile-time falsy", 0) ? "TURBOPACK unreachable" : function onTouchStart(e) { if (!legacyBehavior && typeof onTouchStartProp === 'function') { onTouchStartProp(e); } if (legacyBehavior && child.props && typeof child.props.onTouchStart === 'function') { child.props.onTouchStart(e); } if (!router) { return; } if (!prefetchEnabled) { return; } const upgradeToDynamicPrefetch = unstable_dynamicOnHover === true; (0, _links.onNavigationIntent)(e.currentTarget, upgradeToDynamicPrefetch); } }; // If the url is absolute, we can bypass the logic to prepend the basePath. if ((0, _utils.isAbsoluteUrl)(as)) { childProps.href = as; } else if (!legacyBehavior || passHref || child.type === 'a' && !('href' in child.props)) { childProps.href = (0, _addbasepath.addBasePath)(as); } let link; if (legacyBehavior) { if ("TURBOPACK compile-time truthy", 1) { (0, _erroronce.errorOnce)('`legacyBehavior` is deprecated and will be removed in a future ' + 'release. A codemod is available to upgrade your components:\n\n' + 'npx @next/codemod@latest new-link .\n\n' + 'Learn more: https://nextjs.org/docs/app/building-your-application/upgrading/codemods#remove-a-tags-from-link-components'); } link = /*#__PURE__*/ _react.default.cloneElement(child, childProps); } else { link = /*#__PURE__*/ (0, _jsxruntime.jsx)("a", { ...restProps, ...childProps, children: children }); } return /*#__PURE__*/ (0, _jsxruntime.jsx)(LinkStatusContext.Provider, { value: linkStatus, children: link }); } const LinkStatusContext = /*#__PURE__*/ (0, _react.createContext)(_links.IDLE_LINK_STATUS); const useLinkStatus = ()=>{ return (0, _react.useContext)(LinkStatusContext); }; function getFetchStrategyFromPrefetchProp(prefetchProp) { if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable ; else { return prefetchProp === null || prefetchProp === 'auto' ? _types.FetchStrategy.PPR : // (although invalid values should've been filtered out by prop validation in dev) _types.FetchStrategy.Full; } } if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=link.js.map }), "[project]/node_modules/lucide-react/dist/esm/shared/src/utils.js [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * @license lucide-react v0.454.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ __turbopack_context__.s([ "mergeClasses", ()=>mergeClasses, "toKebabCase", ()=>toKebabCase ]); const toKebabCase = (string)=>string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase(); const mergeClasses = (...classes)=>classes.filter((className, index, array)=>{ return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index; }).join(" ").trim(); ; //# sourceMappingURL=utils.js.map }), "[project]/node_modules/lucide-react/dist/esm/defaultAttributes.js [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * @license lucide-react v0.454.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ __turbopack_context__.s([ "default", ()=>defaultAttributes ]); var defaultAttributes = { xmlns: "http://www.w3.org/2000/svg", width: 24, height: 24, viewBox: "0 0 24 24", fill: "none", stroke: "currentColor", strokeWidth: 2, strokeLinecap: "round", strokeLinejoin: "round" }; ; //# sourceMappingURL=defaultAttributes.js.map }), "[project]/node_modules/lucide-react/dist/esm/Icon.js [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * @license lucide-react v0.454.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ __turbopack_context__.s([ "default", ()=>Icon ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$defaultAttributes$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/defaultAttributes.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/shared/src/utils.js [app-client] (ecmascript)"); ; ; ; const Icon = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"])(({ color = "currentColor", size = 24, strokeWidth = 2, absoluteStrokeWidth, className = "", children, iconNode, ...rest }, ref)=>{ return (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createElement"])("svg", { ref, ...__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$defaultAttributes$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], width: size, height: size, stroke: color, strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth, className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["mergeClasses"])("lucide", className), ...rest }, [ ...iconNode.map(([tag, attrs])=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createElement"])(tag, attrs)), ...Array.isArray(children) ? children : [ children ] ]); }); ; //# sourceMappingURL=Icon.js.map }), "[project]/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * @license lucide-react v0.454.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ __turbopack_context__.s([ "default", ()=>createLucideIcon ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/shared/src/utils.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$Icon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/Icon.js [app-client] (ecmascript)"); ; ; ; const createLucideIcon = (iconName, iconNode)=>{ const Component = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"])(({ className, ...props }, ref)=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createElement"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$Icon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], { ref, iconNode, className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["mergeClasses"])(`lucide-${(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["toKebabCase"])(iconName)}`, className), ...props })); Component.displayName = `${iconName}`; return Component; }; ; //# sourceMappingURL=createLucideIcon.js.map }), "[project]/node_modules/lucide-react/dist/esm/icons/house.js [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * @license lucide-react v0.454.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ __turbopack_context__.s([ "default", ()=>House ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)"); ; const House = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("House", [ [ "path", { d: "M15 21v-8a1 1 0 0 0-1-1h-4a1 1 0 0 0-1 1v8", key: "5wwlr5" } ], [ "path", { d: "M3 10a2 2 0 0 1 .709-1.528l7-5.999a2 2 0 0 1 2.582 0l7 5.999A2 2 0 0 1 21 10v9a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2z", key: "1d0kgt" } ] ]); ; //# sourceMappingURL=house.js.map }), "[project]/node_modules/lucide-react/dist/esm/icons/house.js [app-client] (ecmascript) ", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Home", ()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$house$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$house$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/house.js [app-client] (ecmascript)"); }), "[project]/node_modules/lucide-react/dist/esm/icons/message-circle.js [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * @license lucide-react v0.454.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ __turbopack_context__.s([ "default", ()=>MessageCircle ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)"); ; const MessageCircle = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("MessageCircle", [ [ "path", { d: "M7.9 20A9 9 0 1 0 4 16.1L2 22Z", key: "vv11sd" } ] ]); ; //# sourceMappingURL=message-circle.js.map }), "[project]/node_modules/lucide-react/dist/esm/icons/message-circle.js [app-client] (ecmascript) ", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "MessageCircle", ()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$message$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$message$2d$circle$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/message-circle.js [app-client] (ecmascript)"); }), "[project]/node_modules/lucide-react/dist/esm/icons/user.js [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * @license lucide-react v0.454.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ __turbopack_context__.s([ "default", ()=>User ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)"); ; const User = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("User", [ [ "path", { d: "M19 21v-2a4 4 0 0 0-4-4H9a4 4 0 0 0-4 4v2", key: "975kel" } ], [ "circle", { cx: "12", cy: "7", r: "4", key: "17ys0d" } ] ]); ; //# sourceMappingURL=user.js.map }), "[project]/node_modules/lucide-react/dist/esm/icons/user.js [app-client] (ecmascript) ", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "User", ()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$user$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/user.js [app-client] (ecmascript)"); }), "[project]/node_modules/lucide-react/dist/esm/icons/x.js [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * @license lucide-react v0.454.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ __turbopack_context__.s([ "default", ()=>X ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)"); ; const X = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("X", [ [ "path", { d: "M18 6 6 18", key: "1bl5f8" } ], [ "path", { d: "m6 6 12 12", key: "d8bk6v" } ] ]); ; //# sourceMappingURL=x.js.map }), "[project]/node_modules/lucide-react/dist/esm/icons/x.js [app-client] (ecmascript) ", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "X", ()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/x.js [app-client] (ecmascript)"); }), "[project]/node_modules/lucide-react/dist/esm/icons/users.js [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * @license lucide-react v0.454.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ __turbopack_context__.s([ "default", ()=>Users ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)"); ; const Users = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("Users", [ [ "path", { d: "M16 21v-2a4 4 0 0 0-4-4H6a4 4 0 0 0-4 4v2", key: "1yyitq" } ], [ "circle", { cx: "9", cy: "7", r: "4", key: "nufk8" } ], [ "path", { d: "M22 21v-2a4 4 0 0 0-3-3.87", key: "kshegd" } ], [ "path", { d: "M16 3.13a4 4 0 0 1 0 7.75", key: "1da9ce" } ] ]); ; //# sourceMappingURL=users.js.map }), "[project]/node_modules/lucide-react/dist/esm/icons/users.js [app-client] (ecmascript) ", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Users", ()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$users$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$users$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/users.js [app-client] (ecmascript)"); }), "[project]/node_modules/lucide-react/dist/esm/icons/music.js [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * @license lucide-react v0.454.0 - ISC * * This source code is licensed under the ISC license. * See the LICENSE file in the root directory of this source tree. */ __turbopack_context__.s([ "default", ()=>Music ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)"); ; const Music = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("Music", [ [ "path", { d: "M9 18V5l12-2v13", key: "1jmyc2" } ], [ "circle", { cx: "6", cy: "18", r: "3", key: "fqmcym" } ], [ "circle", { cx: "18", cy: "16", r: "3", key: "1hluhg" } ] ]); ; //# sourceMappingURL=music.js.map }), "[project]/node_modules/lucide-react/dist/esm/icons/music.js [app-client] (ecmascript) ", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "Music", ()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$music$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$music$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/music.js [app-client] (ecmascript)"); }), "[project]/node_modules/zustand/esm/vanilla.mjs [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "createStore", ()=>createStore ]); const createStoreImpl = (createState)=>{ let state; const listeners = /* @__PURE__ */ new Set(); const setState = (partial, replace)=>{ const nextState = typeof partial === "function" ? partial(state) : partial; if (!Object.is(nextState, state)) { const previousState = state; state = (replace != null ? replace : typeof nextState !== "object" || nextState === null) ? nextState : Object.assign({}, state, nextState); listeners.forEach((listener)=>listener(state, previousState)); } }; const getState = ()=>state; const getInitialState = ()=>initialState; const subscribe = (listener)=>{ listeners.add(listener); return ()=>listeners.delete(listener); }; const api = { setState, getState, getInitialState, subscribe }; const initialState = state = createState(setState, getState, api); return api; }; const createStore = (createState)=>createState ? createStoreImpl(createState) : createStoreImpl; ; }), "[project]/node_modules/zustand/esm/react.mjs [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "create", ()=>create, "useStore", ()=>useStore ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$zustand$2f$esm$2f$vanilla$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/zustand/esm/vanilla.mjs [app-client] (ecmascript)"); ; ; const identity = (arg)=>arg; function useStore(api, selector = identity) { const slice = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useSyncExternalStore(api.subscribe, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useCallback({ "useStore.useSyncExternalStore[slice]": ()=>selector(api.getState()) }["useStore.useSyncExternalStore[slice]"], [ api, selector ]), __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useCallback({ "useStore.useSyncExternalStore[slice]": ()=>selector(api.getInitialState()) }["useStore.useSyncExternalStore[slice]"], [ api, selector ])); __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useDebugValue(slice); return slice; } const createImpl = (createState)=>{ const api = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$zustand$2f$esm$2f$vanilla$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createStore"])(createState); const useBoundStore = (selector)=>useStore(api, selector); Object.assign(useBoundStore, api); return useBoundStore; }; const create = (createState)=>createState ? createImpl(createState) : createImpl; ; }), "[project]/node_modules/zustand/esm/middleware.mjs [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "combine", ()=>combine, "createJSONStorage", ()=>createJSONStorage, "devtools", ()=>devtools, "persist", ()=>persist, "redux", ()=>redux, "subscribeWithSelector", ()=>subscribeWithSelector, "unstable_ssrSafe", ()=>ssrSafe ]); const __TURBOPACK__import$2e$meta__ = { get url () { return `file://${__turbopack_context__.P("node_modules/zustand/esm/middleware.mjs")}`; } }; const reduxImpl = (reducer, initial)=>(set, _get, api)=>{ api.dispatch = (action)=>{ set((state)=>reducer(state, action), false, action); return action; }; api.dispatchFromDevtools = true; return { dispatch: (...args)=>api.dispatch(...args), ...initial }; }; const redux = reduxImpl; const trackedConnections = /* @__PURE__ */ new Map(); const getTrackedConnectionState = (name)=>{ const api = trackedConnections.get(name); if (!api) return {}; return Object.fromEntries(Object.entries(api.stores).map(([key, api2])=>[ key, api2.getState() ])); }; const extractConnectionInformation = (store, extensionConnector, options)=>{ if (store === void 0) { return { type: "untracked", connection: extensionConnector.connect(options) }; } const existingConnection = trackedConnections.get(options.name); if (existingConnection) { return { type: "tracked", store, ...existingConnection }; } const newConnection = { connection: extensionConnector.connect(options), stores: {} }; trackedConnections.set(options.name, newConnection); return { type: "tracked", store, ...newConnection }; }; const removeStoreFromTrackedConnections = (name, store)=>{ if (store === void 0) return; const connectionInfo = trackedConnections.get(name); if (!connectionInfo) return; delete connectionInfo.stores[store]; if (Object.keys(connectionInfo.stores).length === 0) { trackedConnections.delete(name); } }; const findCallerName = (stack)=>{ var _a, _b; if (!stack) return void 0; const traceLines = stack.split("\n"); const apiSetStateLineIndex = traceLines.findIndex((traceLine)=>traceLine.includes("api.setState")); if (apiSetStateLineIndex < 0) return void 0; const callerLine = ((_a = traceLines[apiSetStateLineIndex + 1]) == null ? void 0 : _a.trim()) || ""; return (_b = /.+ (.+) .+/.exec(callerLine)) == null ? void 0 : _b[1]; }; const devtoolsImpl = (fn, devtoolsOptions = {})=>(set, get, api)=>{ const { enabled, anonymousActionType, store, ...options } = devtoolsOptions; let extensionConnector; try { extensionConnector = (enabled != null ? enabled : (__TURBOPACK__import$2e$meta__.env ? __TURBOPACK__import$2e$meta__.env.MODE : void 0) !== "production") && window.__REDUX_DEVTOOLS_EXTENSION__; } catch (e) {} if (!extensionConnector) { return fn(set, get, api); } const { connection, ...connectionInformation } = extractConnectionInformation(store, extensionConnector, options); let isRecording = true; api.setState = (state, replace, nameOrAction)=>{ const r = set(state, replace); if (!isRecording) return r; const action = nameOrAction === void 0 ? { type: anonymousActionType || findCallerName(new Error().stack) || "anonymous" } : typeof nameOrAction === "string" ? { type: nameOrAction } : nameOrAction; if (store === void 0) { connection == null ? void 0 : connection.send(action, get()); return r; } connection == null ? void 0 : connection.send({ ...action, type: `${store}/${action.type}` }, { ...getTrackedConnectionState(options.name), [store]: api.getState() }); return r; }; api.devtools = { cleanup: ()=>{ if (connection && typeof connection.unsubscribe === "function") { connection.unsubscribe(); } removeStoreFromTrackedConnections(options.name, store); } }; const setStateFromDevtools = (...a)=>{ const originalIsRecording = isRecording; isRecording = false; set(...a); isRecording = originalIsRecording; }; const initialState = fn(api.setState, get, api); if (connectionInformation.type === "untracked") { connection == null ? void 0 : connection.init(initialState); } else { connectionInformation.stores[connectionInformation.store] = api; connection == null ? void 0 : connection.init(Object.fromEntries(Object.entries(connectionInformation.stores).map(([key, store2])=>[ key, key === connectionInformation.store ? initialState : store2.getState() ]))); } if (api.dispatchFromDevtools && typeof api.dispatch === "function") { let didWarnAboutReservedActionType = false; const originalDispatch = api.dispatch; api.dispatch = (...args)=>{ if ((__TURBOPACK__import$2e$meta__.env ? __TURBOPACK__import$2e$meta__.env.MODE : void 0) !== "production" && args[0].type === "__setState" && !didWarnAboutReservedActionType) { console.warn('[zustand devtools middleware] "__setState" action type is reserved to set state from the devtools. Avoid using it.'); didWarnAboutReservedActionType = true; } originalDispatch(...args); }; } connection.subscribe((message)=>{ var _a; switch(message.type){ case "ACTION": if (typeof message.payload !== "string") { console.error("[zustand devtools middleware] Unsupported action format"); return; } return parseJsonThen(message.payload, (action)=>{ if (action.type === "__setState") { if (store === void 0) { setStateFromDevtools(action.state); return; } if (Object.keys(action.state).length !== 1) { console.error(` [zustand devtools middleware] Unsupported __setState action format. When using 'store' option in devtools(), the 'state' should have only one key, which is a value of 'store' that was passed in devtools(), and value of this only key should be a state object. Example: { "type": "__setState", "state": { "abc123Store": { "foo": "bar" } } } `); } const stateFromDevtools = action.state[store]; if (stateFromDevtools === void 0 || stateFromDevtools === null) { return; } if (JSON.stringify(api.getState()) !== JSON.stringify(stateFromDevtools)) { setStateFromDevtools(stateFromDevtools); } return; } if (!api.dispatchFromDevtools) return; if (typeof api.dispatch !== "function") return; api.dispatch(action); }); case "DISPATCH": switch(message.payload.type){ case "RESET": setStateFromDevtools(initialState); if (store === void 0) { return connection == null ? void 0 : connection.init(api.getState()); } return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name)); case "COMMIT": if (store === void 0) { connection == null ? void 0 : connection.init(api.getState()); return; } return connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name)); case "ROLLBACK": return parseJsonThen(message.state, (state)=>{ if (store === void 0) { setStateFromDevtools(state); connection == null ? void 0 : connection.init(api.getState()); return; } setStateFromDevtools(state[store]); connection == null ? void 0 : connection.init(getTrackedConnectionState(options.name)); }); case "JUMP_TO_STATE": case "JUMP_TO_ACTION": return parseJsonThen(message.state, (state)=>{ if (store === void 0) { setStateFromDevtools(state); return; } if (JSON.stringify(api.getState()) !== JSON.stringify(state[store])) { setStateFromDevtools(state[store]); } }); case "IMPORT_STATE": { const { nextLiftedState } = message.payload; const lastComputedState = (_a = nextLiftedState.computedStates.slice(-1)[0]) == null ? void 0 : _a.state; if (!lastComputedState) return; if (store === void 0) { setStateFromDevtools(lastComputedState); } else { setStateFromDevtools(lastComputedState[store]); } connection == null ? void 0 : connection.send(null, // FIXME no-any nextLiftedState); return; } case "PAUSE_RECORDING": return isRecording = !isRecording; } return; } }); return initialState; }; const devtools = devtoolsImpl; const parseJsonThen = (stringified, fn)=>{ let parsed; try { parsed = JSON.parse(stringified); } catch (e) { console.error("[zustand devtools middleware] Could not parse the received json", e); } if (parsed !== void 0) fn(parsed); }; const subscribeWithSelectorImpl = (fn)=>(set, get, api)=>{ const origSubscribe = api.subscribe; api.subscribe = (selector, optListener, options)=>{ let listener = selector; if (optListener) { const equalityFn = (options == null ? void 0 : options.equalityFn) || Object.is; let currentSlice = selector(api.getState()); listener = (state)=>{ const nextSlice = selector(state); if (!equalityFn(currentSlice, nextSlice)) { const previousSlice = currentSlice; optListener(currentSlice = nextSlice, previousSlice); } }; if (options == null ? void 0 : options.fireImmediately) { optListener(currentSlice, currentSlice); } } return origSubscribe(listener); }; const initialState = fn(set, get, api); return initialState; }; const subscribeWithSelector = subscribeWithSelectorImpl; function combine(initialState, create) { return (...args)=>Object.assign({}, initialState, create(...args)); } function createJSONStorage(getStorage, options) { let storage; try { storage = getStorage(); } catch (e) { return; } const persistStorage = { getItem: (name)=>{ var _a; const parse = (str2)=>{ if (str2 === null) { return null; } return JSON.parse(str2, options == null ? void 0 : options.reviver); }; const str = (_a = storage.getItem(name)) != null ? _a : null; if (str instanceof Promise) { return str.then(parse); } return parse(str); }, setItem: (name, newValue)=>storage.setItem(name, JSON.stringify(newValue, options == null ? void 0 : options.replacer)), removeItem: (name)=>storage.removeItem(name) }; return persistStorage; } const toThenable = (fn)=>(input)=>{ try { const result = fn(input); if (result instanceof Promise) { return result; } return { then (onFulfilled) { return toThenable(onFulfilled)(result); }, catch (_onRejected) { return this; } }; } catch (e) { return { then (_onFulfilled) { return this; }, catch (onRejected) { return toThenable(onRejected)(e); } }; } }; const persistImpl = (config, baseOptions)=>(set, get, api)=>{ let options = { storage: createJSONStorage(()=>localStorage), partialize: (state)=>state, version: 0, merge: (persistedState, currentState)=>({ ...currentState, ...persistedState }), ...baseOptions }; let hasHydrated = false; const hydrationListeners = /* @__PURE__ */ new Set(); const finishHydrationListeners = /* @__PURE__ */ new Set(); let storage = options.storage; if (!storage) { return config((...args)=>{ console.warn(`[zustand persist middleware] Unable to update item '${options.name}', the given storage is currently unavailable.`); set(...args); }, get, api); } const setItem = ()=>{ const state = options.partialize({ ...get() }); return storage.setItem(options.name, { state, version: options.version }); }; const savedSetState = api.setState; api.setState = (state, replace)=>{ savedSetState(state, replace); return setItem(); }; const configResult = config((...args)=>{ set(...args); return setItem(); }, get, api); api.getInitialState = ()=>configResult; let stateFromStorage; const hydrate = ()=>{ var _a, _b; if (!storage) return; hasHydrated = false; hydrationListeners.forEach((cb)=>{ var _a2; return cb((_a2 = get()) != null ? _a2 : configResult); }); const postRehydrationCallback = ((_b = options.onRehydrateStorage) == null ? void 0 : _b.call(options, (_a = get()) != null ? _a : configResult)) || void 0; return toThenable(storage.getItem.bind(storage))(options.name).then((deserializedStorageValue)=>{ if (deserializedStorageValue) { if (typeof deserializedStorageValue.version === "number" && deserializedStorageValue.version !== options.version) { if (options.migrate) { const migration = options.migrate(deserializedStorageValue.state, deserializedStorageValue.version); if (migration instanceof Promise) { return migration.then((result)=>[ true, result ]); } return [ true, migration ]; } console.error(`State loaded from storage couldn't be migrated since no migrate function was provided`); } else { return [ false, deserializedStorageValue.state ]; } } return [ false, void 0 ]; }).then((migrationResult)=>{ var _a2; const [migrated, migratedState] = migrationResult; stateFromStorage = options.merge(migratedState, (_a2 = get()) != null ? _a2 : configResult); set(stateFromStorage, true); if (migrated) { return setItem(); } }).then(()=>{ postRehydrationCallback == null ? void 0 : postRehydrationCallback(stateFromStorage, void 0); stateFromStorage = get(); hasHydrated = true; finishHydrationListeners.forEach((cb)=>cb(stateFromStorage)); }).catch((e)=>{ postRehydrationCallback == null ? void 0 : postRehydrationCallback(void 0, e); }); }; api.persist = { setOptions: (newOptions)=>{ options = { ...options, ...newOptions }; if (newOptions.storage) { storage = newOptions.storage; } }, clearStorage: ()=>{ storage == null ? void 0 : storage.removeItem(options.name); }, getOptions: ()=>options, rehydrate: ()=>hydrate(), hasHydrated: ()=>hasHydrated, onHydrate: (cb)=>{ hydrationListeners.add(cb); return ()=>{ hydrationListeners.delete(cb); }; }, onFinishHydration: (cb)=>{ finishHydrationListeners.add(cb); return ()=>{ finishHydrationListeners.delete(cb); }; } }; if (!options.skipHydration) { hydrate(); } return stateFromStorage || configResult; }; const persist = persistImpl; function ssrSafe(config, isSSR = typeof window === "undefined") { return (set, get, api)=>{ if (!isSSR) { return config(set, get, api); } const ssrSet = ()=>{ throw new Error("Cannot set state of Zustand store in SSR"); }; api.setState = ssrSet; return config(ssrSet, get, api); }; } ; }), "[project]/node_modules/@radix-ui/react-compose-refs/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; // packages/react/compose-refs/src/composeRefs.tsx __turbopack_context__.s([ "composeRefs", ()=>composeRefs, "useComposedRefs", ()=>useComposedRefs ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); ; function setRef(ref, value) { if (typeof ref === "function") { return ref(value); } else if (ref !== null && ref !== void 0) { ref.current = value; } } function composeRefs(...refs) { return (node)=>{ let hasCleanup = false; const cleanups = refs.map((ref)=>{ const cleanup = setRef(ref, node); if (!hasCleanup && typeof cleanup == "function") { hasCleanup = true; } return cleanup; }); if (hasCleanup) { return ()=>{ for(let i = 0; i < cleanups.length; i++){ const cleanup = cleanups[i]; if (typeof cleanup == "function") { cleanup(); } else { setRef(refs[i], null); } } }; } }; } function useComposedRefs(...refs) { return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"](composeRefs(...refs), refs); } ; //# sourceMappingURL=index.mjs.map }), "[project]/node_modules/@radix-ui/react-slot/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; // packages/react/slot/src/Slot.tsx __turbopack_context__.s([ "Root", ()=>Root, "Slot", ()=>Slot, "Slottable", ()=>Slottable ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-compose-refs/dist/index.mjs [app-client] (ecmascript)"); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)"); ; ; ; var Slot = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{ const { children, ...slotProps } = props; const childrenArray = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].toArray(children); const slottable = childrenArray.find(isSlottable); if (slottable) { const newElement = slottable.props.children; const newChildren = childrenArray.map((child)=>{ if (child === slottable) { if (__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].count(newElement) > 1) return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].only(null); return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](newElement) ? newElement.props.children : null; } else { return child; } }); return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(SlotClone, { ...slotProps, ref: forwardedRef, children: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](newElement) ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cloneElement"](newElement, void 0, newChildren) : null }); } return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(SlotClone, { ...slotProps, ref: forwardedRef, children }); }); Slot.displayName = "Slot"; var SlotClone = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{ const { children, ...slotProps } = props; if (__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](children)) { const childrenRef = getElementRef(children); return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cloneElement"](children, { ...mergeProps(slotProps, children.props), // @ts-ignore ref: forwardedRef ? (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeRefs"])(forwardedRef, childrenRef) : childrenRef }); } return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].count(children) > 1 ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].only(null) : null; }); SlotClone.displayName = "SlotClone"; var Slottable = ({ children })=>{ return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], { children }); }; function isSlottable(child) { return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](child) && child.type === Slottable; } function mergeProps(slotProps, childProps) { const overrideProps = { ...childProps }; for(const propName in childProps){ const slotPropValue = slotProps[propName]; const childPropValue = childProps[propName]; const isHandler = /^on[A-Z]/.test(propName); if (isHandler) { if (slotPropValue && childPropValue) { overrideProps[propName] = (...args)=>{ childPropValue(...args); slotPropValue(...args); }; } else if (slotPropValue) { overrideProps[propName] = slotPropValue; } } else if (propName === "style") { overrideProps[propName] = { ...slotPropValue, ...childPropValue }; } else if (propName === "className") { overrideProps[propName] = [ slotPropValue, childPropValue ].filter(Boolean).join(" "); } } return { ...slotProps, ...overrideProps }; } function getElementRef(element) { let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get; let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; if (mayWarn) { return element.ref; } getter = Object.getOwnPropertyDescriptor(element, "ref")?.get; mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning; if (mayWarn) { return element.props.ref; } return element.props.ref || element.ref; } var Root = Slot; ; //# sourceMappingURL=index.mjs.map }), "[project]/node_modules/clsx/dist/clsx.mjs [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "clsx", ()=>clsx, "default", ()=>__TURBOPACK__default__export__ ]); function r(e) { var t, f, n = ""; if ("string" == typeof e || "number" == typeof e) n += e; else if ("object" == typeof e) if (Array.isArray(e)) { var o = e.length; for(t = 0; t < o; t++)e[t] && (f = r(e[t])) && (n && (n += " "), n += f); } else for(f in e)e[f] && (n && (n += " "), n += f); return n; } function clsx() { for(var e, t, f = 0, n = "", o = arguments.length; f < o; f++)(e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t); return n; } const __TURBOPACK__default__export__ = clsx; }), "[project]/node_modules/class-variance-authority/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; /** * Copyright 2022 Joe Bell. All rights reserved. * * This file is licensed to you under the Apache License, Version 2.0 * (the "License"); you may not use this file except in compliance with the * License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the * License for the specific language governing permissions and limitations under * the License. */ __turbopack_context__.s([ "cva", ()=>cva, "cx", ()=>cx ]); var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$clsx$2f$dist$2f$clsx$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/clsx/dist/clsx.mjs [app-client] (ecmascript)"); ; const falsyToString = (value)=>typeof value === "boolean" ? `${value}` : value === 0 ? "0" : value; const cx = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$clsx$2f$dist$2f$clsx$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["clsx"]; const cva = (base, config)=>(props)=>{ var _config_compoundVariants; if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className); const { variants, defaultVariants } = config; const getVariantClassNames = Object.keys(variants).map((variant)=>{ const variantProp = props === null || props === void 0 ? void 0 : props[variant]; const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant]; if (variantProp === null) return null; const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp); return variants[variant][variantKey]; }); const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{ let [key, value] = param; if (value === undefined) { return acc; } acc[key] = value; return acc; }, {}); const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{ let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param; return Object.entries(compoundVariantOptions).every((param)=>{ let [key, value] = param; return Array.isArray(value) ? value.includes({ ...defaultVariants, ...propsWithoutUndefined }[key]) : ({ ...defaultVariants, ...propsWithoutUndefined })[key] === value; }) ? [ ...acc, cvClass, cvClassName ] : acc; }, []); return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className); }; }), "[project]/node_modules/tailwind-merge/dist/bundle-mjs.mjs [app-client] (ecmascript)", ((__turbopack_context__) => { "use strict"; __turbopack_context__.s([ "createTailwindMerge", ()=>createTailwindMerge, "extendTailwindMerge", ()=>extendTailwindMerge, "fromTheme", ()=>fromTheme, "getDefaultConfig", ()=>getDefaultConfig, "mergeConfigs", ()=>mergeConfigs, "twJoin", ()=>twJoin, "twMerge", ()=>twMerge, "validators", ()=>validators ]); const CLASS_PART_SEPARATOR = '-'; const createClassGroupUtils = (config)=>{ const classMap = createClassMap(config); const { conflictingClassGroups, conflictingClassGroupModifiers } = config; const getClassGroupId = (className)=>{ const classParts = className.split(CLASS_PART_SEPARATOR); // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts. if (classParts[0] === '' && classParts.length !== 1) { classParts.shift(); } return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className); }; const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier)=>{ const conflicts = conflictingClassGroups[classGroupId] || []; if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) { return [ ...conflicts, ...conflictingClassGroupModifiers[classGroupId] ]; } return conflicts; }; return { getClassGroupId, getConflictingClassGroupIds }; }; const getGroupRecursive = (classParts, classPartObject)=>{ if (classParts.length === 0) { return classPartObject.classGroupId; } const currentClassPart = classParts[0]; const nextClassPartObject = classPartObject.nextPart.get(currentClassPart); const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined; if (classGroupFromNextClassPart) { return classGroupFromNextClassPart; } if (classPartObject.validators.length === 0) { return undefined; } const classRest = classParts.join(CLASS_PART_SEPARATOR); return classPartObject.validators.find(({ validator })=>validator(classRest))?.classGroupId; }; const arbitraryPropertyRegex = /^\[(.+)\]$/; const getGroupIdForArbitraryProperty = (className)=>{ if (arbitraryPropertyRegex.test(className)) { const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1]; const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':')); if (property) { // I use two dots here because one dot is used as prefix for class groups in plugins return 'arbitrary..' + property; } } }; /** * Exported for testing only */ const createClassMap = (config)=>{ const { theme, prefix } = config; const classMap = { nextPart: new Map(), validators: [] }; const prefixedClassGroupEntries = getPrefixedClassGroupEntries(Object.entries(config.classGroups), prefix); prefixedClassGroupEntries.forEach(([classGroupId, classGroup])=>{ processClassesRecursively(classGroup, classMap, classGroupId, theme); }); return classMap; }; const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme)=>{ classGroup.forEach((classDefinition)=>{ if (typeof classDefinition === 'string') { const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition); classPartObjectToEdit.classGroupId = classGroupId; return; } if (typeof classDefinition === 'function') { if (isThemeGetter(classDefinition)) { processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme); return; } classPartObject.validators.push({ validator: classDefinition, classGroupId }); return; } Object.entries(classDefinition).forEach(([key, classGroup])=>{ processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme); }); }); }; const getPart = (classPartObject, path)=>{ let currentClassPartObject = classPartObject; path.split(CLASS_PART_SEPARATOR).forEach((pathPart)=>{ if (!currentClassPartObject.nextPart.has(pathPart)) { currentClassPartObject.nextPart.set(pathPart, { nextPart: new Map(), validators: [] }); } currentClassPartObject = currentClassPartObject.nextPart.get(pathPart); }); return currentClassPartObject; }; const isThemeGetter = (func)=>func.isThemeGetter; const getPrefixedClassGroupEntries = (classGroupEntries, prefix)=>{ if (!prefix) { return classGroupEntries; } return classGroupEntries.map(([classGroupId, classGroup])=>{ const prefixedClassGroup = classGroup.map((classDefinition)=>{ if (typeof classDefinition === 'string') { return prefix + classDefinition; } if (typeof classDefinition === 'object') { return Object.fromEntries(Object.entries(classDefinition).map(([key, value])=>[ prefix + key, value ])); } return classDefinition; }); return [ classGroupId, prefixedClassGroup ]; }); }; // LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance const createLruCache = (maxCacheSize)=>{ if (maxCacheSize < 1) { return { get: ()=>undefined, set: ()=>{} }; } let cacheSize = 0; let cache = new Map(); let previousCache = new Map(); const update = (key, value)=>{ cache.set(key, value); cacheSize++; if (cacheSize > maxCacheSize) { cacheSize = 0; previousCache = cache; cache = new Map(); } }; return { get (key) { let value = cache.get(key); if (value !== undefined) { return value; } if ((value = previousCache.get(key)) !== undefined) { update(key, value); return value; } }, set (key, value) { if (cache.has(key)) { cache.set(key, value); } else { update(key, value); } } }; }; const IMPORTANT_MODIFIER = '!'; const createParseClassName = (config)=>{ const { separator, experimentalParseClassName } = config; const isSeparatorSingleCharacter = separator.length === 1; const firstSeparatorCharacter = separator[0]; const separatorLength = separator.length; // parseClassName inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js const parseClassName = (className)=>{ const modifiers = []; let bracketDepth = 0; let modifierStart = 0; let postfixModifierPosition; for(let index = 0; index < className.length; index++){ let currentCharacter = className[index]; if (bracketDepth === 0) { if (currentCharacter === firstSeparatorCharacter && (isSeparatorSingleCharacter || className.slice(index, index + separatorLength) === separator)) { modifiers.push(className.slice(modifierStart, index)); modifierStart = index + separatorLength; continue; } if (currentCharacter === '/') { postfixModifierPosition = index; continue; } } if (currentCharacter === '[') { bracketDepth++; } else if (currentCharacter === ']') { bracketDepth--; } } const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart); const hasImportantModifier = baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER); const baseClassName = hasImportantModifier ? baseClassNameWithImportantModifier.substring(1) : baseClassNameWithImportantModifier; const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined; return { modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition }; }; if (experimentalParseClassName) { return (className)=>experimentalParseClassName({ className, parseClassName }); } return parseClassName; }; /** * Sorts modifiers according to following schema: * - Predefined modifiers are sorted alphabetically * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it */ const sortModifiers = (modifiers)=>{ if (modifiers.length <= 1) { return modifiers; } const sortedModifiers = []; let unsortedModifiers = []; modifiers.forEach((modifier)=>{ const isArbitraryVariant = modifier[0] === '['; if (isArbitraryVariant) { sortedModifiers.push(...unsortedModifiers.sort(), modifier); unsortedModifiers = []; } else { unsortedModifiers.push(modifier); } }); sortedModifiers.push(...unsortedModifiers.sort()); return sortedModifiers; }; const createConfigUtils = (config)=>({ cache: createLruCache(config.cacheSize), parseClassName: createParseClassName(config), ...createClassGroupUtils(config) }); const SPLIT_CLASSES_REGEX = /\s+/; const mergeClassList = (classList, configUtils)=>{ const { parseClassName, getClassGroupId, getConflictingClassGroupIds } = configUtils; /** * Set of classGroupIds in following format: * `{importantModifier}{variantModifiers}{classGroupId}` * @example 'float' * @example 'hover:focus:bg-color' * @example 'md:!pr' */ const classGroupsInConflict = []; const classNames = classList.trim().split(SPLIT_CLASSES_REGEX); let result = ''; for(let index = classNames.length - 1; index >= 0; index -= 1){ const originalClassName = classNames[index]; const { modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } = parseClassName(originalClassName); let hasPostfixModifier = Boolean(maybePostfixModifierPosition); let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName); if (!classGroupId) { if (!hasPostfixModifier) { // Not a Tailwind class result = originalClassName + (result.length > 0 ? ' ' + result : result); continue; } classGroupId = getClassGroupId(baseClassName); if (!classGroupId) { // Not a Tailwind class result = originalClassName + (result.length > 0 ? ' ' + result : result); continue; } hasPostfixModifier = false; } const variantModifier = sortModifiers(modifiers).join(':'); const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier; const classId = modifierId + classGroupId; if (classGroupsInConflict.includes(classId)) { continue; } classGroupsInConflict.push(classId); const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier); for(let i = 0; i < conflictGroups.length; ++i){ const group = conflictGroups[i]; classGroupsInConflict.push(modifierId + group); } // Tailwind class not in conflict result = originalClassName + (result.length > 0 ? ' ' + result : result); } return result; }; /** * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better. * * Specifically: * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts * * Original code has MIT license: Copyright (c) Luke Edwards (lukeed.com) */ function twJoin() { let index = 0; let argument; let resolvedValue; let string = ''; while(index < arguments.length){ if (argument = arguments[index++]) { if (resolvedValue = toValue(argument)) { string && (string += ' '); string += resolvedValue; } } } return string; } const toValue = (mix)=>{ if (typeof mix === 'string') { return mix; } let resolvedValue; let string = ''; for(let k = 0; k < mix.length; k++){ if (mix[k]) { if (resolvedValue = toValue(mix[k])) { string && (string += ' '); string += resolvedValue; } } } return string; }; function createTailwindMerge(createConfigFirst, ...createConfigRest) { let configUtils; let cacheGet; let cacheSet; let functionToCall = initTailwindMerge; function initTailwindMerge(classList) { const config = createConfigRest.reduce((previousConfig, createConfigCurrent)=>createConfigCurrent(previousConfig), createConfigFirst()); configUtils = createConfigUtils(config); cacheGet = configUtils.cache.get; cacheSet = configUtils.cache.set; functionToCall = tailwindMerge; return tailwindMerge(classList); } function tailwindMerge(classList) { const cachedResult = cacheGet(classList); if (cachedResult) { return cachedResult; } const result = mergeClassList(classList, configUtils); cacheSet(classList, result); return result; } return function callTailwindMerge() { return functionToCall(twJoin.apply(null, arguments)); }; } const fromTheme = (key)=>{ const themeGetter = (theme)=>theme[key] || []; themeGetter.isThemeGetter = true; return themeGetter; }; const arbitraryValueRegex = /^\[(?:([a-z-]+):)?(.+)\]$/i; const fractionRegex = /^\d+\/\d+$/; const stringLengths = /*#__PURE__*/ new Set([ 'px', 'full', 'screen' ]); const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/; const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/; const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/; // Shadow always begins with x and y offset separated by underscore optionally prepended by inset const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/; const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/; const isLength = (value)=>isNumber(value) || stringLengths.has(value) || fractionRegex.test(value); const isArbitraryLength = (value)=>getIsArbitraryValue(value, 'length', isLengthOnly); const isNumber = (value)=>Boolean(value) && !Number.isNaN(Number(value)); const isArbitraryNumber = (value)=>getIsArbitraryValue(value, 'number', isNumber); const isInteger = (value)=>Boolean(value) && Number.isInteger(Number(value)); const isPercent = (value)=>value.endsWith('%') && isNumber(value.slice(0, -1)); const isArbitraryValue = (value)=>arbitraryValueRegex.test(value); const isTshirtSize = (value)=>tshirtUnitRegex.test(value); const sizeLabels = /*#__PURE__*/ new Set([ 'length', 'size', 'percentage' ]); const isArbitrarySize = (value)=>getIsArbitraryValue(value, sizeLabels, isNever); const isArbitraryPosition = (value)=>getIsArbitraryValue(value, 'position', isNever); const imageLabels = /*#__PURE__*/ new Set([ 'image', 'url' ]); const isArbitraryImage = (value)=>getIsArbitraryValue(value, imageLabels, isImage); const isArbitraryShadow = (value)=>getIsArbitraryValue(value, '', isShadow); const isAny = ()=>true; const getIsArbitraryValue = (value, label, testValue)=>{ const result = arbitraryValueRegex.exec(value); if (result) { if (result[1]) { return typeof label === 'string' ? result[1] === label : label.has(result[1]); } return testValue(result[2]); } return false; }; const isLengthOnly = (value)=>// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths. // For example, `hsl(0 0% 0%)` would be classified as a length without this check. // I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough. lengthUnitRegex.test(value) && !colorFunctionRegex.test(value); const isNever = ()=>false; const isShadow = (value)=>shadowRegex.test(value); const isImage = (value)=>imageRegex.test(value); const validators = /*#__PURE__*/ Object.defineProperty({ __proto__: null, isAny, isArbitraryImage, isArbitraryLength, isArbitraryNumber, isArbitraryPosition, isArbitraryShadow, isArbitrarySize, isArbitraryValue, isInteger, isLength, isNumber, isPercent, isTshirtSize }, Symbol.toStringTag, { value: 'Module' }); const getDefaultConfig = ()=>{ const colors = fromTheme('colors'); const spacing = fromTheme('spacing'); const blur = fromTheme('blur'); const brightness = fromTheme('brightness'); const borderColor = fromTheme('borderColor'); const borderRadius = fromTheme('borderRadius'); const borderSpacing = fromTheme('borderSpacing'); const borderWidth = fromTheme('borderWidth'); const contrast = fromTheme('contrast'); const grayscale = fromTheme('grayscale'); const hueRotate = fromTheme('hueRotate'); const invert = fromTheme('invert'); const gap = fromTheme('gap'); const gradientColorStops = fromTheme('gradientColorStops'); const gradientColorStopPositions = fromTheme('gradientColorStopPositions'); const inset = fromTheme('inset'); const margin = fromTheme('margin'); const opacity = fromTheme('opacity'); const padding = fromTheme('padding'); const saturate = fromTheme('saturate'); const scale = fromTheme('scale'); const sepia = fromTheme('sepia'); const skew = fromTheme('skew'); const space = fromTheme('space'); const translate = fromTheme('translate'); const getOverscroll = ()=>[ 'auto', 'contain', 'none' ]; const getOverflow = ()=>[ 'auto', 'hidden', 'clip', 'visible', 'scroll' ]; const getSpacingWithAutoAndArbitrary = ()=>[ 'auto', isArbitraryValue, spacing ]; const getSpacingWithArbitrary = ()=>[ isArbitraryValue, spacing ]; const getLengthWithEmptyAndArbitrary = ()=>[ '', isLength, isArbitraryLength ]; const getNumberWithAutoAndArbitrary = ()=>[ 'auto', isNumber, isArbitraryValue ]; const getPositions = ()=>[ 'bottom', 'center', 'left', 'left-bottom', 'left-top', 'right', 'right-bottom', 'right-top', 'top' ]; const getLineStyles = ()=>[ 'solid', 'dashed', 'dotted', 'double', 'none' ]; const getBlendModes = ()=>[ 'normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity' ]; const getAlign = ()=>[ 'start', 'end', 'center', 'between', 'around', 'evenly', 'stretch' ]; const getZeroAndEmpty = ()=>[ '', '0', isArbitraryValue ]; const getBreaks = ()=>[ 'auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column' ]; const getNumberAndArbitrary = ()=>[ isNumber, isArbitraryValue ]; return { cacheSize: 500, separator: ':', theme: { colors: [ isAny ], spacing: [ isLength, isArbitraryLength ], blur: [ 'none', '', isTshirtSize, isArbitraryValue ], brightness: getNumberAndArbitrary(), borderColor: [ colors ], borderRadius: [ 'none', '', 'full', isTshirtSize, isArbitraryValue ], borderSpacing: getSpacingWithArbitrary(), borderWidth: getLengthWithEmptyAndArbitrary(), contrast: getNumberAndArbitrary(), grayscale: getZeroAndEmpty(), hueRotate: getNumberAndArbitrary(), invert: getZeroAndEmpty(), gap: getSpacingWithArbitrary(), gradientColorStops: [ colors ], gradientColorStopPositions: [ isPercent, isArbitraryLength ], inset: getSpacingWithAutoAndArbitrary(), margin: getSpacingWithAutoAndArbitrary(), opacity: getNumberAndArbitrary(), padding: getSpacingWithArbitrary(), saturate: getNumberAndArbitrary(), scale: getNumberAndArbitrary(), sepia: getZeroAndEmpty(), skew: getNumberAndArbitrary(), space: getSpacingWithArbitrary(), translate: getSpacingWithArbitrary() }, classGroups: { // Layout /** * Aspect Ratio * @see https://tailwindcss.com/docs/aspect-ratio */ aspect: [ { aspect: [ 'auto', 'square', 'video', isArbitraryValue ] } ], /** * Container * @see https://tailwindcss.com/docs/container */ container: [ 'container' ], /** * Columns * @see https://tailwindcss.com/docs/columns */ columns: [ { columns: [ isTshirtSize ] } ], /** * Break After * @see https://tailwindcss.com/docs/break-after */ 'break-after': [ { 'break-after': getBreaks() } ], /** * Break Before * @see https://tailwindcss.com/docs/break-before */ 'break-before': [ { 'break-before': getBreaks() } ], /** * Break Inside * @see https://tailwindcss.com/docs/break-inside */ 'break-inside': [ { 'break-inside': [ 'auto', 'avoid', 'avoid-page', 'avoid-column' ] } ], /** * Box Decoration Break * @see https://tailwindcss.com/docs/box-decoration-break */ 'box-decoration': [ { 'box-decoration': [ 'slice', 'clone' ] } ], /** * Box Sizing * @see https://tailwindcss.com/docs/box-sizing */ box: [ { box: [ 'border', 'content' ] } ], /** * Display * @see https://tailwindcss.com/docs/display */ display: [ 'block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden' ], /** * Floats * @see https://tailwindcss.com/docs/float */ float: [ { float: [ 'right', 'left', 'none', 'start', 'end' ] } ], /** * Clear * @see https://tailwindcss.com/docs/clear */ clear: [ { clear: [ 'left', 'right', 'both', 'none', 'start', 'end' ] } ], /** * Isolation * @see https://tailwindcss.com/docs/isolation */ isolation: [ 'isolate', 'isolation-auto' ], /** * Object Fit * @see https://tailwindcss.com/docs/object-fit */ 'object-fit': [ { object: [ 'contain', 'cover', 'fill', 'none', 'scale-down' ] } ], /** * Object Position * @see https://tailwindcss.com/docs/object-position */ 'object-position': [ { object: [ ...getPositions(), isArbitraryValue ] } ], /** * Overflow * @see https://tailwindcss.com/docs/overflow */ overflow: [ { overflow: getOverflow() } ], /** * Overflow X * @see https://tailwindcss.com/docs/overflow */ 'overflow-x': [ { 'overflow-x': getOverflow() } ], /** * Overflow Y * @see https://tailwindcss.com/docs/overflow */ 'overflow-y': [ { 'overflow-y': getOverflow() } ], /** * Overscroll Behavior * @see https://tailwindcss.com/docs/overscroll-behavior */ overscroll: [ { overscroll: getOverscroll() } ], /** * Overscroll Behavior X * @see https://tailwindcss.com/docs/overscroll-behavior */ 'overscroll-x': [ { 'overscroll-x': getOverscroll() } ], /** * Overscroll Behavior Y * @see https://tailwindcss.com/docs/overscroll-behavior */ 'overscroll-y': [ { 'overscroll-y': getOverscroll() } ], /** * Position * @see https://tailwindcss.com/docs/position */ position: [ 'static', 'fixed', 'absolute', 'relative', 'sticky' ], /** * Top / Right / Bottom / Left * @see https://tailwindcss.com/docs/top-right-bottom-left */ inset: [ { inset: [ inset ] } ], /** * Right / Left * @see https://tailwindcss.com/docs/top-right-bottom-left */ 'inset-x': [ { 'inset-x': [ inset ] } ], /** * Top / Bottom * @see https://tailwindcss.com/docs/top-right-bottom-left */ 'inset-y': [ { 'inset-y': [ inset ] } ], /** * Start * @see https://tailwindcss.com/docs/top-right-bottom-left */ start: [ { start: [ inset ] } ], /** * End * @see https://tailwindcss.com/docs/top-right-bottom-left */ end: [ { end: [ inset ] } ], /** * Top * @see https://tailwindcss.com/docs/top-right-bottom-left */ top: [ { top: [ inset ] } ], /** * Right * @see https://tailwindcss.com/docs/top-right-bottom-left */ right: [ { right: [ inset ] } ], /** * Bottom * @see https://tailwindcss.com/docs/top-right-bottom-left */ bottom: [ { bottom: [ inset ] } ], /** * Left * @see https://tailwindcss.com/docs/top-right-bottom-left */ left: [ { left: [ inset ] } ], /** * Visibility * @see https://tailwindcss.com/docs/visibility */ visibility: [ 'visible', 'invisible', 'collapse' ], /** * Z-Index * @see https://tailwindcss.com/docs/z-index */ z: [ { z: [ 'auto', isInteger, isArbitraryValue ] } ], // Flexbox and Grid /** * Flex Basis * @see https://tailwindcss.com/docs/flex-basis */ basis: [ { basis: getSpacingWithAutoAndArbitrary() } ], /** * Flex Direction * @see https://tailwindcss.com/docs/flex-direction */ 'flex-direction': [ { flex: [ 'row', 'row-reverse', 'col', 'col-reverse' ] } ], /** * Flex Wrap * @see https://tailwindcss.com/docs/flex-wrap */ 'flex-wrap': [ { flex: [ 'wrap', 'wrap-reverse', 'nowrap' ] } ], /** * Flex * @see https://tailwindcss.com/docs/flex */ flex: [ { flex: [ '1', 'auto', 'initial', 'none', isArbitraryValue ] } ], /** * Flex Grow * @see https://tailwindcss.com/docs/flex-grow */ grow: [ { grow: getZeroAndEmpty() } ], /** * Flex Shrink * @see https://tailwindcss.com/docs/flex-shrink */ shrink: [ { shrink: getZeroAndEmpty() } ], /** * Order * @see https://tailwindcss.com/docs/order */ order: [ { order: [ 'first', 'last', 'none', isInteger, isArbitraryValue ] } ], /** * Grid Template Columns * @see https://tailwindcss.com/docs/grid-template-columns */ 'grid-cols': [ { 'grid-cols': [ isAny ] } ], /** * Grid Column Start / End * @see https://tailwindcss.com/docs/grid-column */ 'col-start-end': [ { col: [ 'auto', { span: [ 'full', isInteger, isArbitraryValue ] }, isArbitraryValue ] } ], /** * Grid Column Start * @see https://tailwindcss.com/docs/grid-column */ 'col-start': [ { 'col-start': getNumberWithAutoAndArbitrary() } ], /** * Grid Column End * @see https://tailwindcss.com/docs/grid-column */ 'col-end': [ { 'col-end': getNumberWithAutoAndArbitrary() } ], /** * Grid Template Rows * @see https://tailwindcss.com/docs/grid-template-rows */ 'grid-rows': [ { 'grid-rows': [ isAny ] } ], /** * Grid Row Start / End * @see https://tailwindcss.com/docs/grid-row */ 'row-start-end': [ { row: [ 'auto', { span: [ isInteger, isArbitraryValue ] }, isArbitraryValue ] } ], /** * Grid Row Start * @see https://tailwindcss.com/docs/grid-row */ 'row-start': [ { 'row-start': getNumberWithAutoAndArbitrary() } ], /** * Grid Row End * @see https://tailwindcss.com/docs/grid-row */ 'row-end': [ { 'row-end': getNumberWithAutoAndArbitrary() } ], /** * Grid Auto Flow * @see https://tailwindcss.com/docs/grid-auto-flow */ 'grid-flow': [ { 'grid-flow': [ 'row', 'col', 'dense', 'row-dense', 'col-dense' ] } ], /** * Grid Auto Columns * @see https://tailwindcss.com/docs/grid-auto-columns */ 'auto-cols': [ { 'auto-cols': [ 'auto', 'min', 'max', 'fr', isArbitraryValue ] } ], /** * Grid Auto Rows * @see https://tailwindcss.com/docs/grid-auto-rows */ 'auto-rows': [ { 'auto-rows': [ 'auto', 'min', 'max', 'fr', isArbitraryValue ] } ], /** * Gap * @see https://tailwindcss.com/docs/gap */ gap: [ { gap: [ gap ] } ], /** * Gap X * @see https://tailwindcss.com/docs/gap */ 'gap-x': [ { 'gap-x': [ gap ] } ], /** * Gap Y * @see https://tailwindcss.com/docs/gap */ 'gap-y': [ { 'gap-y': [ gap ] } ], /** * Justify Content * @see https://tailwindcss.com/docs/justify-content */ 'justify-content': [ { justify: [ 'normal', ...getAlign() ] } ], /** * Justify Items * @see https://tailwindcss.com/docs/justify-items */ 'justify-items': [ { 'justify-items': [ 'start', 'end', 'center', 'stretch' ] } ], /** * Justify Self * @see https://tailwindcss.com/docs/justify-self */ 'justify-self': [ { 'justify-self': [ 'auto', 'start', 'end', 'center', 'stretch' ] } ], /** * Align Content * @see https://tailwindcss.com/docs/align-content */ 'align-content': [ { content: [ 'normal', ...getAlign(), 'baseline' ] } ], /** * Align Items * @see https://tailwindcss.com/docs/align-items */ 'align-items': [ { items: [ 'start', 'end', 'center', 'baseline', 'stretch' ] } ], /** * Align Self * @see https://tailwindcss.com/docs/align-self */ 'align-self': [ { self: [ 'auto', 'start', 'end', 'center', 'stretch', 'baseline' ] } ], /** * Place Content * @see https://tailwindcss.com/docs/place-content */ 'place-content': [ { 'place-content': [ ...getAlign(), 'baseline' ] } ], /** * Place Items * @see https://tailwindcss.com/docs/place-items */ 'place-items': [ { 'place-items': [ 'start', 'end', 'center', 'baseline', 'stretch' ] } ], /** * Place Self * @see https://tailwindcss.com/docs/place-self */ 'place-self': [ { 'place-self': [ 'auto', 'start', 'end', 'center', 'stretch' ] } ], // Spacing /** * Padding * @see https://tailwindcss.com/docs/padding */ p: [ { p: [ padding ] } ], /** * Padding X * @see https://tailwindcss.com/docs/padding */ px: [ { px: [ padding ] } ], /** * Padding Y * @see https://tailwindcss.com/docs/padding */ py: [ { py: [ padding ] } ], /** * Padding Start * @see https://tailwindcss.com/docs/padding */ ps: [ { ps: [ padding ] } ], /** * Padding End * @see https://tailwindcss.com/docs/padding */ pe: [ { pe: [ padding ] } ], /** * Padding Top * @see https://tailwindcss.com/docs/padding */ pt: [ { pt: [ padding ] } ], /** * Padding Right * @see https://tailwindcss.com/docs/padding */ pr: [ { pr: [ padding ] } ], /** * Padding Bottom * @see https://tailwindcss.com/docs/padding */ pb: [ { pb: [ padding ] } ], /** * Padding Left * @see https://tailwindcss.com/docs/padding */ pl: [ { pl: [ padding ] } ], /** * Margin * @see https://tailwindcss.com/docs/margin */ m: [ { m: [ margin ] } ], /** * Margin X * @see https://tailwindcss.com/docs/margin */ mx: [ { mx: [ margin ] } ], /** * Margin Y * @see https://tailwindcss.com/docs/margin */ my: [ { my: [ margin ] } ], /** * Margin Start * @see https://tailwindcss.com/docs/margin */ ms: [ { ms: [ margin ] } ], /** * Margin End * @see https://tailwindcss.com/docs/margin */ me: [ { me: [ margin ] } ], /** * Margin Top * @see https://tailwindcss.com/docs/margin */ mt: [ { mt: [ margin ] } ], /** * Margin Right * @see https://tailwindcss.com/docs/margin */ mr: [ { mr: [ margin ] } ], /** * Margin Bottom * @see https://tailwindcss.com/docs/margin */ mb: [ { mb: [ margin ] } ], /** * Margin Left * @see https://tailwindcss.com/docs/margin */ ml: [ { ml: [ margin ] } ], /** * Space Between X * @see https://tailwindcss.com/docs/space */ 'space-x': [ { 'space-x': [ space ] } ], /** * Space Between X Reverse * @see https://tailwindcss.com/docs/space */ 'space-x-reverse': [ 'space-x-reverse' ], /** * Space Between Y * @see https://tailwindcss.com/docs/space */ 'space-y': [ { 'space-y': [ space ] } ], /** * Space Between Y Reverse * @see https://tailwindcss.com/docs/space */ 'space-y-reverse': [ 'space-y-reverse' ], // Sizing /** * Width * @see https://tailwindcss.com/docs/width */ w: [ { w: [ 'auto', 'min', 'max', 'fit', 'svw', 'lvw', 'dvw', isArbitraryValue, spacing ] } ], /** * Min-Width * @see https://tailwindcss.com/docs/min-width */ 'min-w': [ { 'min-w': [ isArbitraryValue, spacing, 'min', 'max', 'fit' ] } ], /** * Max-Width * @see https://tailwindcss.com/docs/max-width */ 'max-w': [ { 'max-w': [ isArbitraryValue, spacing, 'none', 'full', 'min', 'max', 'fit', 'prose', { screen: [ isTshirtSize ] }, isTshirtSize ] } ], /** * Height * @see https://tailwindcss.com/docs/height */ h: [ { h: [ isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit', 'svh', 'lvh', 'dvh' ] } ], /** * Min-Height * @see https://tailwindcss.com/docs/min-height */ 'min-h': [ { 'min-h': [ isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh' ] } ], /** * Max-Height * @see https://tailwindcss.com/docs/max-height */ 'max-h': [ { 'max-h': [ isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh' ] } ], /** * Size * @see https://tailwindcss.com/docs/size */ size: [ { size: [ isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit' ] } ], // Typography /** * Font Size * @see https://tailwindcss.com/docs/font-size */ 'font-size': [ { text: [ 'base', isTshirtSize, isArbitraryLength ] } ], /** * Font Smoothing * @see https://tailwindcss.com/docs/font-smoothing */ 'font-smoothing': [ 'antialiased', 'subpixel-antialiased' ], /** * Font Style * @see https://tailwindcss.com/docs/font-style */ 'font-style': [ 'italic', 'not-italic' ], /** * Font Weight * @see https://tailwindcss.com/docs/font-weight */ 'font-weight': [ { font: [ 'thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black', isArbitraryNumber ] } ], /** * Font Family * @see https://tailwindcss.com/docs/font-family */ 'font-family': [ { font: [ isAny ] } ], /** * Font Variant Numeric * @see https://tailwindcss.com/docs/font-variant-numeric */ 'fvn-normal': [ 'normal-nums' ], /** * Font Variant Numeric * @see https://tailwindcss.com/docs/font-variant-numeric */ 'fvn-ordinal': [ 'ordinal' ], /** * Font Variant Numeric * @see https://tailwindcss.com/docs/font-variant-numeric */ 'fvn-slashed-zero': [ 'slashed-zero' ], /** * Font Variant Numeric * @see https://tailwindcss.com/docs/font-variant-numeric */ 'fvn-figure': [ 'lining-nums', 'oldstyle-nums' ], /** * Font Variant Numeric * @see https://tailwindcss.com/docs/font-variant-numeric */ 'fvn-spacing': [ 'proportional-nums', 'tabular-nums' ], /** * Font Variant Numeric * @see https://tailwindcss.com/docs/font-variant-numeric */ 'fvn-fraction': [ 'diagonal-fractions', 'stacked-fractions' ], /** * Letter Spacing * @see https://tailwindcss.com/docs/letter-spacing */ tracking: [ { tracking: [ 'tighter', 'tight', 'normal', 'wide', 'wider', 'widest', isArbitraryValue ] } ], /** * Line Clamp * @see https://tailwindcss.com/docs/line-clamp */ 'line-clamp': [ { 'line-clamp': [ 'none', isNumber, isArbitraryNumber ] } ], /** * Line Height * @see https://tailwindcss.com/docs/line-height */ leading: [ { leading: [ 'none', 'tight', 'snug', 'normal', 'relaxed', 'loose', isLength, isArbitraryValue ] } ], /** * List Style Image * @see https://tailwindcss.com/docs/list-style-image */ 'list-image': [ { 'list-image': [ 'none', isArbitraryValue ] } ], /** * List Style Type * @see https://tailwindcss.com/docs/list-style-type */ 'list-style-type': [ { list: [ 'none', 'disc', 'decimal', isArbitraryValue ] } ], /** * List Style Position * @see https://tailwindcss.com/docs/list-style-position */ 'list-style-position': [ { list: [ 'inside', 'outside' ] } ], /** * Placeholder Color * @deprecated since Tailwind CSS v3.0.0 * @see https://tailwindcss.com/docs/placeholder-color */ 'placeholder-color': [ { placeholder: [ colors ] } ], /** * Placeholder Opacity * @see https://tailwindcss.com/docs/placeholder-opacity */ 'placeholder-opacity': [ { 'placeholder-opacity': [ opacity ] } ], /** * Text Alignment * @see https://tailwindcss.com/docs/text-align */ 'text-alignment': [ { text: [ 'left', 'center', 'right', 'justify', 'start', 'end' ] } ], /** * Text Color * @see https://tailwindcss.com/docs/text-color */ 'text-color': [ { text: [ colors ] } ], /** * Text Opacity * @see https://tailwindcss.com/docs/text-opacity */ 'text-opacity': [ { 'text-opacity': [ opacity ] } ], /** * Text Decoration * @see https://tailwindcss.com/docs/text-decoration */ 'text-decoration': [ 'underline', 'overline', 'line-through', 'no-underline' ], /** * Text Decoration Style * @see https://tailwindcss.com/docs/text-decoration-style */ 'text-decoration-style': [ { decoration: [ ...getLineStyles(), 'wavy' ] } ], /** * Text Decoration Thickness * @see https://tailwindcss.com/docs/text-decoration-thickness */ 'text-decoration-thickness': [ { decoration: [ 'auto', 'from-font', isLength, isArbitraryLength ] } ], /** * Text Underline Offset * @see https://tailwindcss.com/docs/text-underline-offset */ 'underline-offset': [ { 'underline-offset': [ 'auto', isLength, isArbitraryValue ] } ], /** * Text Decoration Color * @see https://tailwindcss.com/docs/text-decoration-color */ 'text-decoration-color': [ { decoration: [ colors ] } ], /** * Text Transform * @see https://tailwindcss.com/docs/text-transform */ 'text-transform': [ 'uppercase', 'lowercase', 'capitalize', 'normal-case' ], /** * Text Overflow * @see https://tailwindcss.com/docs/text-overflow */ 'text-overflow': [ 'truncate', 'text-ellipsis', 'text-clip' ], /** * Text Wrap * @see https://tailwindcss.com/docs/text-wrap */ 'text-wrap': [ { text: [ 'wrap', 'nowrap', 'balance', 'pretty' ] } ], /** * Text Indent * @see https://tailwindcss.com/docs/text-indent */ indent: [ { indent: getSpacingWithArbitrary() } ], /** * Vertical Alignment * @see https://tailwindcss.com/docs/vertical-align */ 'vertical-align': [ { align: [ 'baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryValue ] } ], /** * Whitespace * @see https://tailwindcss.com/docs/whitespace */ whitespace: [ { whitespace: [ 'normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces' ] } ], /** * Word Break * @see https://tailwindcss.com/docs/word-break */ break: [ { break: [ 'normal', 'words', 'all', 'keep' ] } ], /** * Hyphens * @see https://tailwindcss.com/docs/hyphens */ hyphens: [ { hyphens: [ 'none', 'manual', 'auto' ] } ], /** * Content * @see https://tailwindcss.com/docs/content */ content: [ { content: [ 'none', isArbitraryValue ] } ], // Backgrounds /** * Background Attachment * @see https://tailwindcss.com/docs/background-attachment */ 'bg-attachment': [ { bg: [ 'fixed', 'local', 'scroll' ] } ], /** * Background Clip * @see https://tailwindcss.com/docs/background-clip */ 'bg-clip': [ { 'bg-clip': [ 'border', 'padding', 'content', 'text' ] } ], /** * Background Opacity * @deprecated since Tailwind CSS v3.0.0 * @see https://tailwindcss.com/docs/background-opacity */ 'bg-opacity': [ { 'bg-opacity': [ opacity ] } ], /** * Background Origin * @see https://tailwindcss.com/docs/background-origin */ 'bg-origin': [ { 'bg-origin': [ 'border', 'padding', 'content' ] } ], /** * Background Position * @see https://tailwindcss.com/docs/background-position */ 'bg-position': [ { bg: [ ...getPositions(), isArbitraryPosition ] } ], /** * Background Repeat * @see https://tailwindcss.com/docs/background-repeat */ 'bg-repeat': [ { bg: [ 'no-repeat', { repeat: [ '', 'x', 'y', 'round', 'space' ] } ] } ], /** * Background Size * @see https://tailwindcss.com/docs/background-size */ 'bg-size': [ { bg: [ 'auto', 'cover', 'contain', isArbitrarySize ] } ], /** * Background Image * @see https://tailwindcss.com/docs/background-image */ 'bg-image': [ { bg: [ 'none', { 'gradient-to': [ 't', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl' ] }, isArbitraryImage ] } ], /** * Background Color * @see https://tailwindcss.com/docs/background-color */ 'bg-color': [ { bg: [ colors ] } ], /** * Gradient Color Stops From Position * @see https://tailwindcss.com/docs/gradient-color-stops */ 'gradient-from-pos': [ { from: [ gradientColorStopPositions ] } ], /** * Gradient Color Stops Via Position * @see https://tailwindcss.com/docs/gradient-color-stops */ 'gradient-via-pos': [ { via: [ gradientColorStopPositions ] } ], /** * Gradient Color Stops To Position * @see https://tailwindcss.com/docs/gradient-color-stops */ 'gradient-to-pos': [ { to: [ gradientColorStopPositions ] } ], /** * Gradient Color Stops From * @see https://tailwindcss.com/docs/gradient-color-stops */ 'gradient-from': [ { from: [ gradientColorStops ] } ], /** * Gradient Color Stops Via * @see https://tailwindcss.com/docs/gradient-color-stops */ 'gradient-via': [ { via: [ gradientColorStops ] } ], /** * Gradient Color Stops To * @see https://tailwindcss.com/docs/gradient-color-stops */ 'gradient-to': [ { to: [ gradientColorStops ] } ], // Borders /** * Border Radius * @see https://tailwindcss.com/docs/border-radius */ rounded: [ { rounded: [ borderRadius ] } ], /** * Border Radius Start * @see https://tailwindcss.com/docs/border-radius */ 'rounded-s': [ { 'rounded-s': [ borderRadius ] } ], /** * Border Radius End * @see https://tailwindcss.com/docs/border-radius */ 'rounded-e': [ { 'rounded-e': [ borderRadius ] } ], /** * Border Radius Top * @see https://tailwindcss.com/docs/border-radius */ 'rounded-t': [ { 'rounded-t': [ borderRadius ] } ], /** * Border Radius Right * @see https://tailwindcss.com/docs/border-radius */ 'rounded-r': [ { 'rounded-r': [ borderRadius ] } ], /** * Border Radius Bottom * @see https://tailwindcss.com/docs/border-radius */ 'rounded-b': [ { 'rounded-b': [ borderRadius ] } ], /** * Border Radius Left * @see https://tailwindcss.com/docs/border-radius */ 'rounded-l': [ { 'rounded-l': [ borderRadius ] } ], /** * Border Radius Start Start * @see https://tailwindcss.com/docs/border-radius */ 'rounded-ss': [ { 'rounded-ss': [ borderRadius ] } ], /** * Border Radius Start End * @see https://tailwindcss.com/docs/border-radius */ 'rounded-se': [ { 'rounded-se': [ borderRadius ] } ], /** * Border Radius End End * @see https://tailwindcss.com/docs/border-radius */ 'rounded-ee': [ { 'rounded-ee': [ borderRadius ] } ], /** * Border Radius End Start * @see https://tailwindcss.com/docs/border-radius */ 'rounded-es': [ { 'rounded-es': [ borderRadius ] } ], /** * Border Radius Top Left * @see https://tailwindcss.com/docs/border-radius */ 'rounded-tl': [ { 'rounded-tl': [ borderRadius ] } ], /** * Border Radius Top Right * @see https://tailwindcss.com/docs/border-radius */ 'rounded-tr': [ { 'rounded-tr': [ borderRadius ] } ], /** * Border Radius Bottom Right * @see https://tailwindcss.com/docs/border-radius */ 'rounded-br': [ { 'rounded-br': [ borderRadius ] } ], /** * Border Radius Bottom Left * @see https://tailwindcss.com/docs/border-radius */ 'rounded-bl': [ { 'rounded-bl': [ borderRadius ] } ], /** * Border Width * @see https://tailwindcss.com/docs/border-width */ 'border-w': [ { border: [ borderWidth ] } ], /** * Border Width X * @see https://tailwindcss.com/docs/border-width */ 'border-w-x': [ { 'border-x': [ borderWidth ] } ], /** * Border Width Y * @see https://tailwindcss.com/docs/border-width */ 'border-w-y': [ { 'border-y': [ borderWidth ] } ], /** * Border Width Start * @see https://tailwindcss.com/docs/border-width */ 'border-w-s': [ { 'border-s': [ borderWidth ] } ], /** * Border Width End * @see https://tailwindcss.com/docs/border-width */ 'border-w-e': [ { 'border-e': [ borderWidth ] } ], /** * Border Width Top * @see https://tailwindcss.com/docs/border-width */ 'border-w-t': [ { 'border-t': [ borderWidth ] } ], /** * Border Width Right * @see https://tailwindcss.com/docs/border-width */ 'border-w-r': [ { 'border-r': [ borderWidth ] } ], /** * Border Width Bottom * @see https://tailwindcss.com/docs/border-width */ 'border-w-b': [ { 'border-b': [ borderWidth ] } ], /** * Border Width Left * @see https://tailwindcss.com/docs/border-width */ 'border-w-l': [ { 'border-l': [ borderWidth ] } ], /** * Border Opacity * @see https://tailwindcss.com/docs/border-opacity */ 'border-opacity': [ { 'border-opacity': [ opacity ] } ], /** * Border Style * @see https://tailwindcss.com/docs/border-style */ 'border-style': [ { border: [ ...getLineStyles(), 'hidden' ] } ], /** * Divide Width X * @see https://tailwindcss.com/docs/divide-width */ 'divide-x': [ { 'divide-x': [ borderWidth ] } ], /** * Divide Width X Reverse * @see https://tailwindcss.com/docs/divide-width */ 'divide-x-reverse': [ 'divide-x-reverse' ], /** * Divide Width Y * @see https://tailwindcss.com/docs/divide-width */ 'divide-y': [ { 'divide-y': [ borderWidth ] } ], /** * Divide Width Y Reverse * @see https://tailwindcss.com/docs/divide-width */ 'divide-y-reverse': [ 'divide-y-reverse' ], /** * Divide Opacity * @see https://tailwindcss.com/docs/divide-opacity */ 'divide-opacity': [ { 'divide-opacity': [ opacity ] } ], /** * Divide Style * @see https://tailwindcss.com/docs/divide-style */ 'divide-style': [ { divide: getLineStyles() } ], /** * Border Color * @see https://tailwindcss.com/docs/border-color */ 'border-color': [ { border: [ borderColor ] } ], /** * Border Color X * @see https://tailwindcss.com/docs/border-color */ 'border-color-x': [ { 'border-x': [ borderColor ] } ], /** * Border Color Y * @see https://tailwindcss.com/docs/border-color */ 'border-color-y': [ { 'border-y': [ borderColor ] } ], /** * Border Color S * @see https://tailwindcss.com/docs/border-color */ 'border-color-s': [ { 'border-s': [ borderColor ] } ], /** * Border Color E * @see https://tailwindcss.com/docs/border-color */ 'border-color-e': [ { 'border-e': [ borderColor ] } ], /** * Border Color Top * @see https://tailwindcss.com/docs/border-color */ 'border-color-t': [ { 'border-t': [ borderColor ] } ], /** * Border Color Right * @see https://tailwindcss.com/docs/border-color */ 'border-color-r': [ { 'border-r': [ borderColor ] } ], /** * Border Color Bottom * @see https://tailwindcss.com/docs/border-color */ 'border-color-b': [ { 'border-b': [ borderColor ] } ], /** * Border Color Left * @see https://tailwindcss.com/docs/border-color */ 'border-color-l': [ { 'border-l': [ borderColor ] } ], /** * Divide Color * @see https://tailwindcss.com/docs/divide-color */ 'divide-color': [ { divide: [ borderColor ] } ], /** * Outline Style * @see https://tailwindcss.com/docs/outline-style */ 'outline-style': [ { outline: [ '', ...getLineStyles() ] } ], /** * Outline Offset * @see https://tailwindcss.com/docs/outline-offset */ 'outline-offset': [ { 'outline-offset': [ isLength, isArbitraryValue ] } ], /** * Outline Width * @see https://tailwindcss.com/docs/outline-width */ 'outline-w': [ { outline: [ isLength, isArbitraryLength ] } ], /** * Outline Color * @see https://tailwindcss.com/docs/outline-color */ 'outline-color': [ { outline: [ colors ] } ], /** * Ring Width * @see https://tailwindcss.com/docs/ring-width */ 'ring-w': [ { ring: getLengthWithEmptyAndArbitrary() } ], /** * Ring Width Inset * @see https://tailwindcss.com/docs/ring-width */ 'ring-w-inset': [ 'ring-inset' ], /** * Ring Color * @see https://tailwindcss.com/docs/ring-color */ 'ring-color': [ { ring: [ colors ] } ], /** * Ring Opacity * @see https://tailwindcss.com/docs/ring-opacity */ 'ring-opacity': [ { 'ring-opacity': [ opacity ] } ], /** * Ring Offset Width * @see https://tailwindcss.com/docs/ring-offset-width */ 'ring-offset-w': [ { 'ring-offset': [ isLength, isArbitraryLength ] } ], /** * Ring Offset Color * @see https://tailwindcss.com/docs/ring-offset-color */ 'ring-offset-color': [ { 'ring-offset': [ colors ] } ], // Effects /** * Box Shadow * @see https://tailwindcss.com/docs/box-shadow */ shadow: [ { shadow: [ '', 'inner', 'none', isTshirtSize, isArbitraryShadow ] } ], /** * Box Shadow Color * @see https://tailwindcss.com/docs/box-shadow-color */ 'shadow-color': [ { shadow: [ isAny ] } ], /** * Opacity * @see https://tailwindcss.com/docs/opacity */ opacity: [ { opacity: [ opacity ] } ], /** * Mix Blend Mode * @see https://tailwindcss.com/docs/mix-blend-mode */ 'mix-blend': [ { 'mix-blend': [ ...getBlendModes(), 'plus-lighter', 'plus-darker' ] } ], /** * Background Blend Mode * @see https://tailwindcss.com/docs/background-blend-mode */ 'bg-blend': [ { 'bg-blend': getBlendModes() } ], // Filters /** * Filter * @deprecated since Tailwind CSS v3.0.0 * @see https://tailwindcss.com/docs/filter */ filter: [ { filter: [ '', 'none' ] } ], /** * Blur * @see https://tailwindcss.com/docs/blur */ blur: [ { blur: [ blur ] } ], /** * Brightness * @see https://tailwindcss.com/docs/brightness */ brightness: [ { brightness: [ brightness ] } ], /** * Contrast * @see https://tailwindcss.com/docs/contrast */ contrast: [ { contrast: [ contrast ] } ], /** * Drop Shadow * @see https://tailwindcss.com/docs/drop-shadow */ 'drop-shadow': [ { 'drop-shadow': [ '', 'none', isTshirtSize, isArbitraryValue ] } ], /** * Grayscale * @see https://tailwindcss.com/docs/grayscale */ grayscale: [ { grayscale: [ grayscale ] } ], /** * Hue Rotate * @see https://tailwindcss.com/docs/hue-rotate */ 'hue-rotate': [ { 'hue-rotate': [ hueRotate ] } ], /** * Invert * @see https://tailwindcss.com/docs/invert */ invert: [ { invert: [ invert ] } ], /** * Saturate * @see https://tailwindcss.com/docs/saturate */ saturate: [ { saturate: [ saturate ] } ], /** * Sepia * @see https://tailwindcss.com/docs/sepia */ sepia: [ { sepia: [ sepia ] } ], /** * Backdrop Filter * @deprecated since Tailwind CSS v3.0.0 * @see https://tailwindcss.com/docs/backdrop-filter */ 'backdrop-filter': [ { 'backdrop-filter': [ '', 'none' ] } ], /** * Backdrop Blur * @see https://tailwindcss.com/docs/backdrop-blur */ 'backdrop-blur': [ { 'backdrop-blur': [ blur ] } ], /** * Backdrop Brightness * @see https://tailwindcss.com/docs/backdrop-brightness */ 'backdrop-brightness': [ { 'backdrop-brightness': [ brightness ] } ], /** * Backdrop Contrast * @see https://tailwindcss.com/docs/backdrop-contrast */ 'backdrop-contrast': [ { 'backdrop-contrast': [ contrast ] } ], /** * Backdrop Grayscale * @see https://tailwindcss.com/docs/backdrop-grayscale */ 'backdrop-grayscale': [ { 'backdrop-grayscale': [ grayscale ] } ], /** * Backdrop Hue Rotate * @see https://tailwindcss.com/docs/backdrop-hue-rotate */ 'backdrop-hue-rotate': [ { 'backdrop-hue-rotate': [ hueRotate ] } ], /** * Backdrop Invert * @see https://tailwindcss.com/docs/backdrop-invert */ 'backdrop-invert': [ { 'backdrop-invert': [ invert ] } ], /** * Backdrop Opacity * @see https://tailwindcss.com/docs/backdrop-opacity */ 'backdrop-opacity': [ { 'backdrop-opacity': [ opacity ] } ], /** * Backdrop Saturate * @see https://tailwindcss.com/docs/backdrop-saturate */ 'backdrop-saturate': [ { 'backdrop-saturate': [ saturate ] } ], /** * Backdrop Sepia * @see https://tailwindcss.com/docs/backdrop-sepia */ 'backdrop-sepia': [ { 'backdrop-sepia': [ sepia ] } ], // Tables /** * Border Collapse * @see https://tailwindcss.com/docs/border-collapse */ 'border-collapse': [ { border: [ 'collapse', 'separate' ] } ], /** * Border Spacing * @see https://tailwindcss.com/docs/border-spacing */ 'border-spacing': [ { 'border-spacing': [ borderSpacing ] } ], /** * Border Spacing X * @see https://tailwindcss.com/docs/border-spacing */ 'border-spacing-x': [ { 'border-spacing-x': [ borderSpacing ] } ], /** * Border Spacing Y * @see https://tailwindcss.com/docs/border-spacing */ 'border-spacing-y': [ { 'border-spacing-y': [ borderSpacing ] } ], /** * Table Layout * @see https://tailwindcss.com/docs/table-layout */ 'table-layout': [ { table: [ 'auto', 'fixed' ] } ], /** * Caption Side * @see https://tailwindcss.com/docs/caption-side */ caption: [ { caption: [ 'top', 'bottom' ] } ], // Transitions and Animation /** * Tranisition Property * @see https://tailwindcss.com/docs/transition-property */ transition: [ { transition: [ 'none', 'all', '', 'colors', 'opacity', 'shadow', 'transform', isArbitraryValue ] } ], /** * Transition Duration * @see https://tailwindcss.com/docs/transition-duration */ duration: [ { duration: getNumberAndArbitrary() } ], /** * Transition Timing Function * @see https://tailwindcss.com/docs/transition-timing-function */ ease: [ { ease: [ 'linear', 'in', 'out', 'in-out', isArbitraryValue ] } ], /** * Transition Delay * @see https://tailwindcss.com/docs/transition-delay */ delay: [ { delay: getNumberAndArbitrary() } ], /** * Animation * @see https://tailwindcss.com/docs/animation */ animate: [ { animate: [ 'none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue ] } ], // Transforms /** * Transform * @see https://tailwindcss.com/docs/transform */ transform: [ { transform: [ '', 'gpu', 'none' ] } ], /** * Scale * @see https://tailwindcss.com/docs/scale */ scale: [ { scale: [ scale ] } ], /** * Scale X * @see https://tailwindcss.com/docs/scale */ 'scale-x': [ { 'scale-x': [ scale ] } ], /** * Scale Y * @see https://tailwindcss.com/docs/scale */ 'scale-y': [ { 'scale-y': [ scale ] } ], /** * Rotate * @see https://tailwindcss.com/docs/rotate */ rotate: [ { rotate: [ isInteger, isArbitraryValue ] } ], /** * Translate X * @see https://tailwindcss.com/docs/translate */ 'translate-x': [ { 'translate-x': [ translate ] } ], /** * Translate Y * @see https://tailwindcss.com/docs/translate */ 'translate-y': [ { 'translate-y': [ translate ] } ], /** * Skew X * @see https://tailwindcss.com/docs/skew */ 'skew-x': [ { 'skew-x': [ skew ] } ], /** * Skew Y * @see https://tailwindcss.com/docs/skew */ 'skew-y': [ { 'skew-y': [ skew ] } ], /** * Transform Origin * @see https://tailwindcss.com/docs/transform-origin */ 'transform-origin': [ { origin: [ 'center', 'top', 'top-right', 'right', 'bottom-right', 'bottom', 'bottom-left', 'left', 'top-left', isArbitraryValue ] } ], // Interactivity /** * Accent Color * @see https://tailwindcss.com/docs/accent-color */ accent: [ { accent: [ 'auto', colors ] } ], /** * Appearance * @see https://tailwindcss.com/docs/appearance */ appearance: [ { appearance: [ 'none', 'auto' ] } ], /** * Cursor * @see https://tailwindcss.com/docs/cursor */ cursor: [ { cursor: [ 'auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryValue ] } ], /** * Caret Color * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities */ 'caret-color': [ { caret: [ colors ] } ], /** * Pointer Events * @see https://tailwindcss.com/docs/pointer-events */ 'pointer-events': [ { 'pointer-events': [ 'none', 'auto' ] } ], /** * Resize * @see https://tailwindcss.com/docs/resize */ resize: [ { resize: [ 'none', 'y', 'x', '' ] } ], /** * Scroll Behavior * @see https://tailwindcss.com/docs/scroll-behavior */ 'scroll-behavior': [ { scroll: [ 'auto', 'smooth' ] } ], /** * Scroll Margin * @see https://tailwindcss.com/docs/scroll-margin */ 'scroll-m': [ { 'scroll-m': getSpacingWithArbitrary() } ], /** * Scroll Margin X * @see https://tailwindcss.com/docs/scroll-margin */ 'scroll-mx': [ { 'scroll-mx': getSpacingWithArbitrary() } ], /** * Scroll Margin Y * @see https://tailwindcss.com/docs/scroll-margin */ 'scroll-my': [ { 'scroll-my': getSpacingWithArbitrary() } ], /** * Scroll Margin Start * @see https://tailwindcss.com/docs/scroll-margin */ 'scroll-ms': [ { 'scroll-ms': getSpacingWithArbitrary() } ], /** * Scroll Margin End * @see https://tailwindcss.com/docs/scroll-margin */ 'scroll-me': [ { 'scroll-me': getSpacingWithArbitrary() } ], /** * Scroll Margin Top * @see https://tailwindcss.com/docs/scroll-margin */ 'scroll-mt': [ { 'scroll-mt': getSpacingWithArbitrary() } ], /** * Scroll Margin Right * @see https://tailwindcss.com/docs/scroll-margin */ 'scroll-mr': [ { 'scroll-mr': getSpacingWithArbitrary() } ], /** * Scroll Margin Bottom * @see https://tailwindcss.com/docs/scroll-margin */ 'scroll-mb': [ { 'scroll-mb': getSpacingWithArbitrary() } ], /** * Scroll Margin Left * @see https://tailwindcss.com/docs/scroll-margin */ 'scroll-ml': [ { 'scroll-ml': getSpacingWithArbitrary() } ], /** * Scroll Padding * @see https://tailwindcss.com/docs/scroll-padding */ 'scroll-p': [ { 'scroll-p': getSpacingWithArbitrary() } ], /** * Scroll Padding X * @see https://tailwindcss.com/docs/scroll-padding */ 'scroll-px': [ { 'scroll-px': getSpacingWithArbitrary() } ], /** * Scroll Padding Y * @see https://tailwindcss.com/docs/scroll-padding */ 'scroll-py': [ { 'scroll-py': getSpacingWithArbitrary() } ], /** * Scroll Padding Start * @see https://tailwindcss.com/docs/scroll-padding */ 'scroll-ps': [ { 'scroll-ps': getSpacingWithArbitrary() } ], /** * Scroll Padding End * @see https://tailwindcss.com/docs/scroll-padding */ 'scroll-pe': [ { 'scroll-pe': getSpacingWithArbitrary() } ], /** * Scroll Padding Top * @see https://tailwindcss.com/docs/scroll-padding */ 'scroll-pt': [ { 'scroll-pt': getSpacingWithArbitrary() } ], /** * Scroll Padding Right * @see https://tailwindcss.com/docs/scroll-padding */ 'scroll-pr': [ { 'scroll-pr': getSpacingWithArbitrary() } ], /** * Scroll Padding Bottom * @see https://tailwindcss.com/docs/scroll-padding */ 'scroll-pb': [ { 'scroll-pb': getSpacingWithArbitrary() } ], /** * Scroll Padding Left * @see https://tailwindcss.com/docs/scroll-padding */ 'scroll-pl': [ { 'scroll-pl': getSpacingWithArbitrary() } ], /** * Scroll Snap Align * @see https://tailwindcss.com/docs/scroll-snap-align */ 'snap-align': [ { snap: [ 'start', 'end', 'center', 'align-none' ] } ], /** * Scroll Snap Stop * @see https://tailwindcss.com/docs/scroll-snap-stop */ 'snap-stop': [ { snap: [ 'normal', 'always' ] } ], /** * Scroll Snap Type * @see https://tailwindcss.com/docs/scroll-snap-type */ 'snap-type': [ { snap: [ 'none', 'x', 'y', 'both' ] } ], /** * Scroll Snap Type Strictness * @see https://tailwindcss.com/docs/scroll-snap-type */ 'snap-strictness': [ { snap: [ 'mandatory', 'proximity' ] } ], /** * Touch Action * @see https://tailwindcss.com/docs/touch-action */ touch: [ { touch: [ 'auto', 'none', 'manipulation' ] } ], /** * Touch Action X * @see https://tailwindcss.com/docs/touch-action */ 'touch-x': [ { 'touch-pan': [ 'x', 'left', 'right' ] } ], /** * Touch Action Y * @see https://tailwindcss.com/docs/touch-action */ 'touch-y': [ { 'touch-pan': [ 'y', 'up', 'down' ] } ], /** * Touch Action Pinch Zoom * @see https://tailwindcss.com/docs/touch-action */ 'touch-pz': [ 'touch-pinch-zoom' ], /** * User Select * @see https://tailwindcss.com/docs/user-select */ select: [ { select: [ 'none', 'text', 'all', 'auto' ] } ], /** * Will Change * @see https://tailwindcss.com/docs/will-change */ 'will-change': [ { 'will-change': [ 'auto', 'scroll', 'contents', 'transform', isArbitraryValue ] } ], // SVG /** * Fill * @see https://tailwindcss.com/docs/fill */ fill: [ { fill: [ colors, 'none' ] } ], /** * Stroke Width * @see https://tailwindcss.com/docs/stroke-width */ 'stroke-w': [ { stroke: [ isLength, isArbitraryLength, isArbitraryNumber ] } ], /** * Stroke * @see https://tailwindcss.com/docs/stroke */ stroke: [ { stroke: [ colors, 'none' ] } ], // Accessibility /** * Screen Readers * @see https://tailwindcss.com/docs/screen-readers */ sr: [ 'sr-only', 'not-sr-only' ], /** * Forced Color Adjust * @see https://tailwindcss.com/docs/forced-color-adjust */ 'forced-color-adjust': [ { 'forced-color-adjust': [ 'auto', 'none' ] } ] }, conflictingClassGroups: { overflow: [ 'overflow-x', 'overflow-y' ], overscroll: [ 'overscroll-x', 'overscroll-y' ], inset: [ 'inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left' ], 'inset-x': [ 'right', 'left' ], 'inset-y': [ 'top', 'bottom' ], flex: [ 'basis', 'grow', 'shrink' ], gap: [ 'gap-x', 'gap-y' ], p: [ 'px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl' ], px: [ 'pr', 'pl' ], py: [ 'pt', 'pb' ], m: [ 'mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml' ], mx: [ 'mr', 'ml' ], my: [ 'mt', 'mb' ], size: [ 'w', 'h' ], 'font-size': [ 'leading' ], 'fvn-normal': [ 'fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction' ], 'fvn-ordinal': [ 'fvn-normal' ], 'fvn-slashed-zero': [ 'fvn-normal' ], 'fvn-figure': [ 'fvn-normal' ], 'fvn-spacing': [ 'fvn-normal' ], 'fvn-fraction': [ 'fvn-normal' ], 'line-clamp': [ 'display', 'overflow' ], rounded: [ 'rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl' ], 'rounded-s': [ 'rounded-ss', 'rounded-es' ], 'rounded-e': [ 'rounded-se', 'rounded-ee' ], 'rounded-t': [ 'rounded-tl', 'rounded-tr' ], 'rounded-r': [ 'rounded-tr', 'rounded-br' ], 'rounded-b': [ 'rounded-br', 'rounded-bl' ], 'rounded-l': [ 'rounded-tl', 'rounded-bl' ], 'border-spacing': [ 'border-spacing-x', 'border-spacing-y' ], 'border-w': [ 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l' ], 'border-w-x': [ 'border-w-r', 'border-w-l' ], 'border-w-y': [ 'border-w-t', 'border-w-b' ], 'border-color': [ 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l' ], 'border-color-x': [ 'border-color-r', 'border-color-l' ], 'border-color-y': [ 'border-color-t', 'border-color-b' ], 'scroll-m': [ 'scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml' ], 'scroll-mx': [ 'scroll-mr', 'scroll-ml' ], 'scroll-my': [ 'scroll-mt', 'scroll-mb' ], 'scroll-p': [ 'scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl' ], 'scroll-px': [ 'scroll-pr', 'scroll-pl' ], 'scroll-py': [ 'scroll-pt', 'scroll-pb' ], touch: [ 'touch-x', 'touch-y', 'touch-pz' ], 'touch-x': [ 'touch' ], 'touch-y': [ 'touch' ], 'touch-pz': [ 'touch' ] }, conflictingClassGroupModifiers: { 'font-size': [ 'leading' ] } }; }; /** * @param baseConfig Config where other config will be merged into. This object will be mutated. * @param configExtension Partial config to merge into the `baseConfig`. */ const mergeConfigs = (baseConfig, { cacheSize, prefix, separator, experimentalParseClassName, extend = {}, override = {} })=>{ overrideProperty(baseConfig, 'cacheSize', cacheSize); overrideProperty(baseConfig, 'prefix', prefix); overrideProperty(baseConfig, 'separator', separator); overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName); for(const configKey in override){ overrideConfigProperties(baseConfig[configKey], override[configKey]); } for(const key in extend){ mergeConfigProperties(baseConfig[key], extend[key]); } return baseConfig; }; const overrideProperty = (baseObject, overrideKey, overrideValue)=>{ if (overrideValue !== undefined) { baseObject[overrideKey] = overrideValue; } }; const overrideConfigProperties = (baseObject, overrideObject)=>{ if (overrideObject) { for(const key in overrideObject){ overrideProperty(baseObject, key, overrideObject[key]); } } }; const mergeConfigProperties = (baseObject, mergeObject)=>{ if (mergeObject) { for(const key in mergeObject){ const mergeValue = mergeObject[key]; if (mergeValue !== undefined) { baseObject[key] = (baseObject[key] || []).concat(mergeValue); } } } }; const extendTailwindMerge = (configExtension, ...createConfig)=>typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(()=>mergeConfigs(getDefaultConfig(), configExtension), ...createConfig); const twMerge = /*#__PURE__*/ createTailwindMerge(getDefaultConfig); ; //# sourceMappingURL=bundle-mjs.mjs.map }), "[project]/node_modules/next/dist/shared/lib/image-blur-svg.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; /** * A shared function, used on both client and server, to generate a SVG blur placeholder. */ Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "getImageBlurSvg", { enumerable: true, get: function() { return getImageBlurSvg; } }); function getImageBlurSvg({ widthInt, heightInt, blurWidth, blurHeight, blurDataURL, objectFit }) { const std = 20; const svgWidth = blurWidth ? blurWidth * 40 : widthInt; const svgHeight = blurHeight ? blurHeight * 40 : heightInt; const viewBox = svgWidth && svgHeight ? `viewBox='0 0 ${svgWidth} ${svgHeight}'` : ''; const preserveAspectRatio = viewBox ? 'none' : objectFit === 'contain' ? 'xMidYMid' : objectFit === 'cover' ? 'xMidYMid slice' : 'none'; return `%3Csvg xmlns='http://www.w3.org/2000/svg' ${viewBox}%3E%3Cfilter id='b' color-interpolation-filters='sRGB'%3E%3CfeGaussianBlur stdDeviation='${std}'/%3E%3CfeColorMatrix values='1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 100 -1' result='s'/%3E%3CfeFlood x='0' y='0' width='100%25' height='100%25'/%3E%3CfeComposite operator='out' in='s'/%3E%3CfeComposite in2='SourceGraphic'/%3E%3CfeGaussianBlur stdDeviation='${std}'/%3E%3C/filter%3E%3Cimage width='100%25' height='100%25' x='0' y='0' preserveAspectRatio='${preserveAspectRatio}' style='filter: url(%23b);' href='${blurDataURL}'/%3E%3C/svg%3E`; } //# sourceMappingURL=image-blur-svg.js.map }), "[project]/node_modules/next/dist/shared/lib/image-config.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { VALID_LOADERS: null, imageConfigDefault: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { VALID_LOADERS: function() { return VALID_LOADERS; }, imageConfigDefault: function() { return imageConfigDefault; } }); const VALID_LOADERS = [ 'default', 'imgix', 'cloudinary', 'akamai', 'custom' ]; const imageConfigDefault = { deviceSizes: [ 640, 750, 828, 1080, 1200, 1920, 2048, 3840 ], imageSizes: [ 32, 48, 64, 96, 128, 256, 384 ], path: '/_next/image', loader: 'default', loaderFile: '', /** * @deprecated Use `remotePatterns` instead to protect your application from malicious users. */ domains: [], disableStaticImages: false, minimumCacheTTL: 14400, formats: [ 'image/webp' ], maximumRedirects: 3, dangerouslyAllowLocalIP: false, dangerouslyAllowSVG: false, contentSecurityPolicy: `script-src 'none'; frame-src 'none'; sandbox;`, contentDispositionType: 'attachment', localPatterns: undefined, remotePatterns: [], qualities: [ 75 ], unoptimized: false }; //# sourceMappingURL=image-config.js.map }), "[project]/node_modules/next/dist/shared/lib/get-img-props.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "getImgProps", { enumerable: true, get: function() { return getImgProps; } }); const _warnonce = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils/warn-once.js [app-client] (ecmascript)"); const _imageblursvg = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-blur-svg.js [app-client] (ecmascript)"); const _imageconfig = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-config.js [app-client] (ecmascript)"); const VALID_LOADING_VALUES = [ 'lazy', 'eager', undefined ]; // Object-fit values that are not valid background-size values const INVALID_BACKGROUND_SIZE_VALUES = [ '-moz-initial', 'fill', 'none', 'scale-down', undefined ]; function isStaticRequire(src) { return src.default !== undefined; } function isStaticImageData(src) { return src.src !== undefined; } function isStaticImport(src) { return !!src && typeof src === 'object' && (isStaticRequire(src) || isStaticImageData(src)); } const allImgs = new Map(); let perfObserver; function getInt(x) { if (typeof x === 'undefined') { return x; } if (typeof x === 'number') { return Number.isFinite(x) ? x : NaN; } if (typeof x === 'string' && /^[0-9]+$/.test(x)) { return parseInt(x, 10); } return NaN; } function getWidths({ deviceSizes, allSizes }, width, sizes) { if (sizes) { // Find all the "vw" percent sizes used in the sizes prop const viewportWidthRe = /(^|\s)(1?\d?\d)vw/g; const percentSizes = []; for(let match; match = viewportWidthRe.exec(sizes); match){ percentSizes.push(parseInt(match[2])); } if (percentSizes.length) { const smallestRatio = Math.min(...percentSizes) * 0.01; return { widths: allSizes.filter((s)=>s >= deviceSizes[0] * smallestRatio), kind: 'w' }; } return { widths: allSizes, kind: 'w' }; } if (typeof width !== 'number') { return { widths: deviceSizes, kind: 'w' }; } const widths = [ ...new Set(// > are actually 3x in the green color, but only 1.5x in the red and // > blue colors. Showing a 3x resolution image in the app vs a 2x // > resolution image will be visually the same, though the 3x image // > takes significantly more data. Even true 3x resolution screens are // > wasteful as the human eye cannot see that level of detail without // > something like a magnifying glass. // https://blog.twitter.com/engineering/en_us/topics/infrastructure/2019/capping-image-fidelity-on-ultra-high-resolution-devices.html [ width, width * 2 /*, width * 3*/ ].map((w)=>allSizes.find((p)=>p >= w) || allSizes[allSizes.length - 1])) ]; return { widths, kind: 'x' }; } function generateImgAttrs({ config, src, unoptimized, width, quality, sizes, loader }) { if (unoptimized) { return { src, srcSet: undefined, sizes: undefined }; } const { widths, kind } = getWidths(config, width, sizes); const last = widths.length - 1; return { sizes: !sizes && kind === 'w' ? '100vw' : sizes, srcSet: widths.map((w, i)=>`${loader({ config, src, quality, width: w })} ${kind === 'w' ? w : i + 1}${kind}`).join(', '), // It's intended to keep `src` the last attribute because React updates // attributes in order. If we keep `src` the first one, Safari will // immediately start to fetch `src`, before `sizes` and `srcSet` are even // updated by React. That causes multiple unnecessary requests if `srcSet` // and `sizes` are defined. // This bug cannot be reproduced in Chrome or Firefox. src: loader({ config, src, quality, width: widths[last] }) }; } function getImgProps({ src, sizes, unoptimized = false, priority = false, preload = false, loading, className, quality, width, height, fill = false, style, overrideSrc, onLoad, onLoadingComplete, placeholder = 'empty', blurDataURL, fetchPriority, decoding = 'async', layout, objectFit, objectPosition, lazyBoundary, lazyRoot, ...rest }, _state) { const { imgConf, showAltText, blurComplete, defaultLoader } = _state; let config; let c = imgConf || _imageconfig.imageConfigDefault; if ('allSizes' in c) { config = c; } else { const allSizes = [ ...c.deviceSizes, ...c.imageSizes ].sort((a, b)=>a - b); const deviceSizes = c.deviceSizes.sort((a, b)=>a - b); const qualities = c.qualities?.sort((a, b)=>a - b); config = { ...c, allSizes, deviceSizes, qualities }; } if (typeof defaultLoader === 'undefined') { throw Object.defineProperty(new Error('images.loaderFile detected but the file is missing default export.\nRead more: https://nextjs.org/docs/messages/invalid-images-config'), "__NEXT_ERROR_CODE", { value: "E163", enumerable: false, configurable: true }); } let loader = rest.loader || defaultLoader; // Remove property so it's not spread on element delete rest.loader; delete rest.srcSet; // This special value indicates that the user // didn't define a "loader" prop or "loader" config. const isDefaultLoader = '__next_img_default' in loader; if (isDefaultLoader) { if (config.loader === 'custom') { throw Object.defineProperty(new Error(`Image with src "${src}" is missing "loader" prop.` + `\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader`), "__NEXT_ERROR_CODE", { value: "E252", enumerable: false, configurable: true }); } } else { // The user defined a "loader" prop or config. // Since the config object is internal only, we // must not pass it to the user-defined "loader". const customImageLoader = loader; loader = (obj)=>{ const { config: _, ...opts } = obj; return customImageLoader(opts); }; } if (layout) { if (layout === 'fill') { fill = true; } const layoutToStyle = { intrinsic: { maxWidth: '100%', height: 'auto' }, responsive: { width: '100%', height: 'auto' } }; const layoutToSizes = { responsive: '100vw', fill: '100vw' }; const layoutStyle = layoutToStyle[layout]; if (layoutStyle) { style = { ...style, ...layoutStyle }; } const layoutSizes = layoutToSizes[layout]; if (layoutSizes && !sizes) { sizes = layoutSizes; } } let staticSrc = ''; let widthInt = getInt(width); let heightInt = getInt(height); let blurWidth; let blurHeight; if (isStaticImport(src)) { const staticImageData = isStaticRequire(src) ? src.default : src; if (!staticImageData.src) { throw Object.defineProperty(new Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include src. Received ${JSON.stringify(staticImageData)}`), "__NEXT_ERROR_CODE", { value: "E460", enumerable: false, configurable: true }); } if (!staticImageData.height || !staticImageData.width) { throw Object.defineProperty(new Error(`An object should only be passed to the image component src parameter if it comes from a static image import. It must include height and width. Received ${JSON.stringify(staticImageData)}`), "__NEXT_ERROR_CODE", { value: "E48", enumerable: false, configurable: true }); } blurWidth = staticImageData.blurWidth; blurHeight = staticImageData.blurHeight; blurDataURL = blurDataURL || staticImageData.blurDataURL; staticSrc = staticImageData.src; if (!fill) { if (!widthInt && !heightInt) { widthInt = staticImageData.width; heightInt = staticImageData.height; } else if (widthInt && !heightInt) { const ratio = widthInt / staticImageData.width; heightInt = Math.round(staticImageData.height * ratio); } else if (!widthInt && heightInt) { const ratio = heightInt / staticImageData.height; widthInt = Math.round(staticImageData.width * ratio); } } } src = typeof src === 'string' ? src : staticSrc; let isLazy = !priority && !preload && (loading === 'lazy' || typeof loading === 'undefined'); if (!src || src.startsWith('data:') || src.startsWith('blob:')) { // https://developer.mozilla.org/docs/Web/HTTP/Basics_of_HTTP/Data_URIs unoptimized = true; isLazy = false; } if (config.unoptimized) { unoptimized = true; } if (isDefaultLoader && !config.dangerouslyAllowSVG && src.split('?', 1)[0].endsWith('.svg')) { // Special case to make svg serve as-is to avoid proxying // through the built-in Image Optimization API. unoptimized = true; } const qualityInt = getInt(quality); if ("TURBOPACK compile-time truthy", 1) { if (config.output === 'export' && isDefaultLoader && !unoptimized) { throw Object.defineProperty(new Error(`Image Optimization using the default loader is not compatible with \`{ output: 'export' }\`. Possible solutions: - Remove \`{ output: 'export' }\` and run "next start" to run server mode including the Image Optimization API. - Configure \`{ images: { unoptimized: true } }\` in \`next.config.js\` to disable the Image Optimization API. Read more: https://nextjs.org/docs/messages/export-image-api`), "__NEXT_ERROR_CODE", { value: "E500", enumerable: false, configurable: true }); } if (!src) { // React doesn't show the stack trace and there's // no `src` to help identify which image, so we // instead console.error(ref) during mount. unoptimized = true; } else { if (fill) { if (width) { throw Object.defineProperty(new Error(`Image with src "${src}" has both "width" and "fill" properties. Only one should be used.`), "__NEXT_ERROR_CODE", { value: "E96", enumerable: false, configurable: true }); } if (height) { throw Object.defineProperty(new Error(`Image with src "${src}" has both "height" and "fill" properties. Only one should be used.`), "__NEXT_ERROR_CODE", { value: "E115", enumerable: false, configurable: true }); } if (style?.position && style.position !== 'absolute') { throw Object.defineProperty(new Error(`Image with src "${src}" has both "fill" and "style.position" properties. Images with "fill" always use position absolute - it cannot be modified.`), "__NEXT_ERROR_CODE", { value: "E216", enumerable: false, configurable: true }); } if (style?.width && style.width !== '100%') { throw Object.defineProperty(new Error(`Image with src "${src}" has both "fill" and "style.width" properties. Images with "fill" always use width 100% - it cannot be modified.`), "__NEXT_ERROR_CODE", { value: "E73", enumerable: false, configurable: true }); } if (style?.height && style.height !== '100%') { throw Object.defineProperty(new Error(`Image with src "${src}" has both "fill" and "style.height" properties. Images with "fill" always use height 100% - it cannot be modified.`), "__NEXT_ERROR_CODE", { value: "E404", enumerable: false, configurable: true }); } } else { if (typeof widthInt === 'undefined') { throw Object.defineProperty(new Error(`Image with src "${src}" is missing required "width" property.`), "__NEXT_ERROR_CODE", { value: "E451", enumerable: false, configurable: true }); } else if (isNaN(widthInt)) { throw Object.defineProperty(new Error(`Image with src "${src}" has invalid "width" property. Expected a numeric value in pixels but received "${width}".`), "__NEXT_ERROR_CODE", { value: "E66", enumerable: false, configurable: true }); } if (typeof heightInt === 'undefined') { throw Object.defineProperty(new Error(`Image with src "${src}" is missing required "height" property.`), "__NEXT_ERROR_CODE", { value: "E397", enumerable: false, configurable: true }); } else if (isNaN(heightInt)) { throw Object.defineProperty(new Error(`Image with src "${src}" has invalid "height" property. Expected a numeric value in pixels but received "${height}".`), "__NEXT_ERROR_CODE", { value: "E444", enumerable: false, configurable: true }); } // eslint-disable-next-line no-control-regex if (/^[\x00-\x20]/.test(src)) { throw Object.defineProperty(new Error(`Image with src "${src}" cannot start with a space or control character. Use src.trimStart() to remove it or encodeURIComponent(src) to keep it.`), "__NEXT_ERROR_CODE", { value: "E176", enumerable: false, configurable: true }); } // eslint-disable-next-line no-control-regex if (/[\x00-\x20]$/.test(src)) { throw Object.defineProperty(new Error(`Image with src "${src}" cannot end with a space or control character. Use src.trimEnd() to remove it or encodeURIComponent(src) to keep it.`), "__NEXT_ERROR_CODE", { value: "E21", enumerable: false, configurable: true }); } } } if (!VALID_LOADING_VALUES.includes(loading)) { throw Object.defineProperty(new Error(`Image with src "${src}" has invalid "loading" property. Provided "${loading}" should be one of ${VALID_LOADING_VALUES.map(String).join(',')}.`), "__NEXT_ERROR_CODE", { value: "E357", enumerable: false, configurable: true }); } if (priority && loading === 'lazy') { throw Object.defineProperty(new Error(`Image with src "${src}" has both "priority" and "loading='lazy'" properties. Only one should be used.`), "__NEXT_ERROR_CODE", { value: "E218", enumerable: false, configurable: true }); } if (preload && loading === 'lazy') { throw Object.defineProperty(new Error(`Image with src "${src}" has both "preload" and "loading='lazy'" properties. Only one should be used.`), "__NEXT_ERROR_CODE", { value: "E803", enumerable: false, configurable: true }); } if (preload && priority) { throw Object.defineProperty(new Error(`Image with src "${src}" has both "preload" and "priority" properties. Only "preload" should be used.`), "__NEXT_ERROR_CODE", { value: "E802", enumerable: false, configurable: true }); } if (placeholder !== 'empty' && placeholder !== 'blur' && !placeholder.startsWith('data:image/')) { throw Object.defineProperty(new Error(`Image with src "${src}" has invalid "placeholder" property "${placeholder}".`), "__NEXT_ERROR_CODE", { value: "E431", enumerable: false, configurable: true }); } if (placeholder !== 'empty') { if (widthInt && heightInt && widthInt * heightInt < 1600) { (0, _warnonce.warnOnce)(`Image with src "${src}" is smaller than 40x40. Consider removing the "placeholder" property to improve performance.`); } } if (qualityInt && config.qualities && !config.qualities.includes(qualityInt)) { (0, _warnonce.warnOnce)(`Image with src "${src}" is using quality "${qualityInt}" which is not configured in images.qualities [${config.qualities.join(', ')}]. Please update your config to [${[ ...config.qualities, qualityInt ].sort().join(', ')}].` + `\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-qualities`); } if (placeholder === 'blur' && !blurDataURL) { const VALID_BLUR_EXT = [ 'jpeg', 'png', 'webp', 'avif' ] // should match next-image-loader ; throw Object.defineProperty(new Error(`Image with src "${src}" has "placeholder='blur'" property but is missing the "blurDataURL" property. Possible solutions: - Add a "blurDataURL" property, the contents should be a small Data URL to represent the image - Change the "src" property to a static import with one of the supported file types: ${VALID_BLUR_EXT.join(',')} (animated images not supported) - Remove the "placeholder" property, effectively no blur effect Read more: https://nextjs.org/docs/messages/placeholder-blur-data-url`), "__NEXT_ERROR_CODE", { value: "E371", enumerable: false, configurable: true }); } if ('ref' in rest) { (0, _warnonce.warnOnce)(`Image with src "${src}" is using unsupported "ref" property. Consider using the "onLoad" property instead.`); } if (!unoptimized && !isDefaultLoader) { const urlStr = loader({ config, src, width: widthInt || 400, quality: qualityInt || 75 }); let url; try { url = new URL(urlStr); } catch (err) {} if (urlStr === src || url && url.pathname === src && !url.search) { (0, _warnonce.warnOnce)(`Image with src "${src}" has a "loader" property that does not implement width. Please implement it or use the "unoptimized" property instead.` + `\nRead more: https://nextjs.org/docs/messages/next-image-missing-loader-width`); } } if (onLoadingComplete) { (0, _warnonce.warnOnce)(`Image with src "${src}" is using deprecated "onLoadingComplete" property. Please use the "onLoad" property instead.`); } for (const [legacyKey, legacyValue] of Object.entries({ layout, objectFit, objectPosition, lazyBoundary, lazyRoot })){ if (legacyValue) { (0, _warnonce.warnOnce)(`Image with src "${src}" has legacy prop "${legacyKey}". Did you forget to run the codemod?` + `\nRead more: https://nextjs.org/docs/messages/next-image-upgrade-to-13`); } } if (typeof window !== 'undefined' && !perfObserver && window.PerformanceObserver) { perfObserver = new PerformanceObserver((entryList)=>{ for (const entry of entryList.getEntries()){ // @ts-ignore - missing "LargestContentfulPaint" class with "element" prop const imgSrc = entry?.element?.src || ''; const lcpImage = allImgs.get(imgSrc); if (lcpImage && lcpImage.loading === 'lazy' && lcpImage.placeholder === 'empty' && !lcpImage.src.startsWith('data:') && !lcpImage.src.startsWith('blob:')) { // https://web.dev/lcp/#measure-lcp-in-javascript (0, _warnonce.warnOnce)(`Image with src "${lcpImage.src}" was detected as the Largest Contentful Paint (LCP). Please add the \`loading="eager"\` property if this image is above the fold.` + `\nRead more: https://nextjs.org/docs/app/api-reference/components/image#loading`); } } }); try { perfObserver.observe({ type: 'largest-contentful-paint', buffered: true }); } catch (err) { // Log error but don't crash the app console.error(err); } } } const imgStyle = Object.assign(fill ? { position: 'absolute', height: '100%', width: '100%', left: 0, top: 0, right: 0, bottom: 0, objectFit, objectPosition } : {}, showAltText ? {} : { color: 'transparent' }, style); const backgroundImage = !blurComplete && placeholder !== 'empty' ? placeholder === 'blur' ? `url("data:image/svg+xml;charset=utf-8,${(0, _imageblursvg.getImageBlurSvg)({ widthInt, heightInt, blurWidth, blurHeight, blurDataURL: blurDataURL || '', objectFit: imgStyle.objectFit })}")` : `url("${placeholder}")` // assume `data:image/` : null; const backgroundSize = !INVALID_BACKGROUND_SIZE_VALUES.includes(imgStyle.objectFit) ? imgStyle.objectFit : imgStyle.objectFit === 'fill' ? '100% 100%' // the background-size equivalent of `fill` : 'cover'; let placeholderStyle = backgroundImage ? { backgroundSize, backgroundPosition: imgStyle.objectPosition || '50% 50%', backgroundRepeat: 'no-repeat', backgroundImage } : {}; if ("TURBOPACK compile-time truthy", 1) { if (placeholderStyle.backgroundImage && placeholder === 'blur' && blurDataURL?.startsWith('/')) { // During `next dev`, we don't want to generate blur placeholders with webpack // because it can delay starting the dev server. Instead, `next-image-loader.js` // will inline a special url to lazily generate the blur placeholder at request time. placeholderStyle.backgroundImage = `url("${blurDataURL}")`; } } const imgAttributes = generateImgAttrs({ config, src, unoptimized, width: widthInt, quality: qualityInt, sizes, loader }); const loadingFinal = isLazy ? 'lazy' : loading; if ("TURBOPACK compile-time truthy", 1) { if (typeof window !== 'undefined') { let fullUrl; try { fullUrl = new URL(imgAttributes.src); } catch (e) { fullUrl = new URL(imgAttributes.src, window.location.href); } allImgs.set(fullUrl.href, { src, loading: loadingFinal, placeholder }); } } const props = { ...rest, loading: loadingFinal, fetchPriority, width: widthInt, height: heightInt, decoding, className, style: { ...imgStyle, ...placeholderStyle }, sizes: imgAttributes.sizes, srcSet: imgAttributes.srcSet, src: overrideSrc || imgAttributes.src }; const meta = { unoptimized, preload: preload || priority, placeholder, fill }; return { props, meta }; } //# sourceMappingURL=get-img-props.js.map }), "[project]/node_modules/next/dist/shared/lib/side-effect.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return SideEffect; } }); const _react = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"); const isServer = typeof window === 'undefined'; const useClientOnlyLayoutEffect = isServer ? ()=>{} : _react.useLayoutEffect; const useClientOnlyEffect = isServer ? ()=>{} : _react.useEffect; function SideEffect(props) { const { headManager, reduceComponentsToState } = props; function emitChange() { if (headManager && headManager.mountedInstances) { const headElements = _react.Children.toArray(Array.from(headManager.mountedInstances).filter(Boolean)); headManager.updateHead(reduceComponentsToState(headElements)); } } if (isServer) { headManager?.mountedInstances?.add(props.children); emitChange(); } useClientOnlyLayoutEffect({ "SideEffect.useClientOnlyLayoutEffect": ()=>{ headManager?.mountedInstances?.add(props.children); return ({ "SideEffect.useClientOnlyLayoutEffect": ()=>{ headManager?.mountedInstances?.delete(props.children); } })["SideEffect.useClientOnlyLayoutEffect"]; } }["SideEffect.useClientOnlyLayoutEffect"]); // We need to call `updateHead` method whenever the `SideEffect` is trigger in all // life-cycles: mount, update, unmount. However, if there are multiple `SideEffect`s // being rendered, we only trigger the method from the last one. // This is ensured by keeping the last unflushed `updateHead` in the `_pendingUpdate` // singleton in the layout effect pass, and actually trigger it in the effect pass. useClientOnlyLayoutEffect({ "SideEffect.useClientOnlyLayoutEffect": ()=>{ if (headManager) { headManager._pendingUpdate = emitChange; } return ({ "SideEffect.useClientOnlyLayoutEffect": ()=>{ if (headManager) { headManager._pendingUpdate = emitChange; } } })["SideEffect.useClientOnlyLayoutEffect"]; } }["SideEffect.useClientOnlyLayoutEffect"]); useClientOnlyEffect({ "SideEffect.useClientOnlyEffect": ()=>{ if (headManager && headManager._pendingUpdate) { headManager._pendingUpdate(); headManager._pendingUpdate = null; } return ({ "SideEffect.useClientOnlyEffect": ()=>{ if (headManager && headManager._pendingUpdate) { headManager._pendingUpdate(); headManager._pendingUpdate = null; } } })["SideEffect.useClientOnlyEffect"]; } }["SideEffect.useClientOnlyEffect"]); return null; } //# sourceMappingURL=side-effect.js.map }), "[project]/node_modules/next/dist/shared/lib/head.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); 'use client'; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { default: null, defaultHead: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { default: function() { return _default; }, defaultHead: function() { return defaultHead; } }); const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [app-client] (ecmascript)"); const _interop_require_wildcard = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs [app-client] (ecmascript)"); const _jsxruntime = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)"); const _react = /*#__PURE__*/ _interop_require_wildcard._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)")); const _sideeffect = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/side-effect.js [app-client] (ecmascript)")); const _headmanagercontextsharedruntime = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/head-manager-context.shared-runtime.js [app-client] (ecmascript)"); const _warnonce = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils/warn-once.js [app-client] (ecmascript)"); function defaultHead() { const head = [ /*#__PURE__*/ (0, _jsxruntime.jsx)("meta", { charSet: "utf-8" }, "charset"), /*#__PURE__*/ (0, _jsxruntime.jsx)("meta", { name: "viewport", content: "width=device-width" }, "viewport") ]; return head; } function onlyReactElement(list, child) { // React children can be "string" or "number" in this case we ignore them for backwards compat if (typeof child === 'string' || typeof child === 'number') { return list; } // Adds support for React.Fragment if (child.type === _react.default.Fragment) { return list.concat(_react.default.Children.toArray(child.props.children).reduce((fragmentList, fragmentChild)=>{ if (typeof fragmentChild === 'string' || typeof fragmentChild === 'number') { return fragmentList; } return fragmentList.concat(fragmentChild); }, [])); } return list.concat(child); } const METATYPES = [ 'name', 'httpEquiv', 'charSet', 'itemProp' ]; /* returns a function for filtering head child elements which shouldn't be duplicated, like Also adds support for deduplicated `key` properties */ function unique() { const keys = new Set(); const tags = new Set(); const metaTypes = new Set(); const metaCategories = {}; return (h)=>{ let isUnique = true; let hasKey = false; if (h.key && typeof h.key !== 'number' && h.key.indexOf('$') > 0) { hasKey = true; const key = h.key.slice(h.key.indexOf('$') + 1); if (keys.has(key)) { isUnique = false; } else { keys.add(key); } } // eslint-disable-next-line default-case switch(h.type){ case 'title': case 'base': if (tags.has(h.type)) { isUnique = false; } else { tags.add(h.type); } break; case 'meta': for(let i = 0, len = METATYPES.length; i < len; i++){ const metatype = METATYPES[i]; if (!h.props.hasOwnProperty(metatype)) continue; if (metatype === 'charSet') { if (metaTypes.has(metatype)) { isUnique = false; } else { metaTypes.add(metatype); } } else { const category = h.props[metatype]; const categories = metaCategories[metatype] || new Set(); if ((metatype !== 'name' || !hasKey) && categories.has(category)) { isUnique = false; } else { categories.add(category); metaCategories[metatype] = categories; } } } break; } return isUnique; }; } /** * * @param headChildrenElements List of children of <Head> */ function reduceComponents(headChildrenElements) { return headChildrenElements.reduce(onlyReactElement, []).reverse().concat(defaultHead().reverse()).filter(unique()).reverse().map((c, i)=>{ const key = c.key || i; if ("TURBOPACK compile-time truthy", 1) { // omit JSON-LD structured data snippets from the warning if (c.type === 'script' && c.props['type'] !== 'application/ld+json') { const srcMessage = c.props['src'] ? `<script> tag with src="${c.props['src']}"` : `inline <script>`; (0, _warnonce.warnOnce)(`Do not add <script> tags using next/head (see ${srcMessage}). Use next/script instead. \nSee more info here: https://nextjs.org/docs/messages/no-script-tags-in-head-component`); } else if (c.type === 'link' && c.props['rel'] === 'stylesheet') { (0, _warnonce.warnOnce)(`Do not add stylesheets using next/head (see <link rel="stylesheet"> tag with href="${c.props['href']}"). Use Document instead. \nSee more info here: https://nextjs.org/docs/messages/no-stylesheets-in-head-component`); } } return /*#__PURE__*/ _react.default.cloneElement(c, { key }); }); } /** * This component injects elements to `<head>` of your page. * To avoid duplicated `tags` in `<head>` you can use the `key` property, which will make sure every tag is only rendered once. */ function Head({ children }) { const headManager = (0, _react.useContext)(_headmanagercontextsharedruntime.HeadManagerContext); return /*#__PURE__*/ (0, _jsxruntime.jsx)(_sideeffect.default, { reduceComponentsToState: reduceComponents, headManager: headManager, children: children }); } const _default = Head; if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=head.js.map }), "[project]/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "ImageConfigContext", { enumerable: true, get: function() { return ImageConfigContext; } }); const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [app-client] (ecmascript)"); const _react = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)")); const _imageconfig = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-config.js [app-client] (ecmascript)"); const ImageConfigContext = _react.default.createContext(_imageconfig.imageConfigDefault); if ("TURBOPACK compile-time truthy", 1) { ImageConfigContext.displayName = 'ImageConfigContext'; } //# sourceMappingURL=image-config-context.shared-runtime.js.map }), "[project]/node_modules/next/dist/shared/lib/router-context.shared-runtime.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "RouterContext", { enumerable: true, get: function() { return RouterContext; } }); const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [app-client] (ecmascript)"); const _react = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)")); const RouterContext = _react.default.createContext(null); if ("TURBOPACK compile-time truthy", 1) { RouterContext.displayName = 'RouterContext'; } //# sourceMappingURL=router-context.shared-runtime.js.map }), "[project]/node_modules/next/dist/shared/lib/find-closest-quality.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "findClosestQuality", { enumerable: true, get: function() { return findClosestQuality; } }); function findClosestQuality(quality, config) { const q = quality || 75; if (!config?.qualities?.length) { return q; } return config.qualities.reduce((prev, cur)=>Math.abs(cur - q) < Math.abs(prev - q) ? cur : prev, 0); } //# sourceMappingURL=find-closest-quality.js.map }), "[project]/node_modules/next/dist/compiled/picomatch/index.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); (()=>{ "use strict"; var t = { 170: (t, e, u)=>{ const n = u(510); const isWindows = ()=>{ if (typeof navigator !== "undefined" && navigator.platform) { const t = navigator.platform.toLowerCase(); return t === "win32" || t === "windows"; } if (typeof __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"] !== "undefined" && __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].platform) { return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].platform === "win32"; } return false; }; function picomatch(t, e, u = false) { if (e && (e.windows === null || e.windows === undefined)) { e = { ...e, windows: isWindows() }; } return n(t, e, u); } Object.assign(picomatch, n); t.exports = picomatch; }, 154: (t)=>{ const e = "\\\\/"; const u = `[^${e}]`; const n = "\\."; const o = "\\+"; const s = "\\?"; const r = "\\/"; const a = "(?=.)"; const i = "[^/]"; const c = `(?:${r}|$)`; const p = `(?:^|${r})`; const l = `${n}{1,2}${c}`; const f = `(?!${n})`; const A = `(?!${p}${l})`; const _ = `(?!${n}{0,1}${c})`; const R = `(?!${l})`; const E = `[^.${r}]`; const h = `${i}*?`; const g = "/"; const b = { DOT_LITERAL: n, PLUS_LITERAL: o, QMARK_LITERAL: s, SLASH_LITERAL: r, ONE_CHAR: a, QMARK: i, END_ANCHOR: c, DOTS_SLASH: l, NO_DOT: f, NO_DOTS: A, NO_DOT_SLASH: _, NO_DOTS_SLASH: R, QMARK_NO_DOT: E, STAR: h, START_ANCHOR: p, SEP: g }; const C = { ...b, SLASH_LITERAL: `[${e}]`, QMARK: u, STAR: `${u}*?`, DOTS_SLASH: `${n}{1,2}(?:[${e}]|$)`, NO_DOT: `(?!${n})`, NO_DOTS: `(?!(?:^|[${e}])${n}{1,2}(?:[${e}]|$))`, NO_DOT_SLASH: `(?!${n}{0,1}(?:[${e}]|$))`, NO_DOTS_SLASH: `(?!${n}{1,2}(?:[${e}]|$))`, QMARK_NO_DOT: `[^.${e}]`, START_ANCHOR: `(?:^|[${e}])`, END_ANCHOR: `(?:[${e}]|$)`, SEP: "\\" }; const y = { alnum: "a-zA-Z0-9", alpha: "a-zA-Z", ascii: "\\x00-\\x7F", blank: " \\t", cntrl: "\\x00-\\x1F\\x7F", digit: "0-9", graph: "\\x21-\\x7E", lower: "a-z", print: "\\x20-\\x7E ", punct: "\\-!\"#$%&'()\\*+,./:;<=>?@[\\]^_`{|}~", space: " \\t\\r\\n\\v\\f", upper: "A-Z", word: "A-Za-z0-9_", xdigit: "A-Fa-f0-9" }; t.exports = { MAX_LENGTH: 1024 * 64, POSIX_REGEX_SOURCE: y, REGEX_BACKSLASH: /\\(?![*+?^${}(|)[\]])/g, REGEX_NON_SPECIAL_CHARS: /^[^@![\].,$*+?^{}()|\\/]+/, REGEX_SPECIAL_CHARS: /[-*+?.^${}(|)[\]]/, REGEX_SPECIAL_CHARS_BACKREF: /(\\?)((\W)(\3*))/g, REGEX_SPECIAL_CHARS_GLOBAL: /([-*+?.^${}(|)[\]])/g, REGEX_REMOVE_BACKSLASH: /(?:\[.*?[^\\]\]|\\(?=.))/g, REPLACEMENTS: { "***": "*", "**/**": "**", "**/**/**": "**" }, CHAR_0: 48, CHAR_9: 57, CHAR_UPPERCASE_A: 65, CHAR_LOWERCASE_A: 97, CHAR_UPPERCASE_Z: 90, CHAR_LOWERCASE_Z: 122, CHAR_LEFT_PARENTHESES: 40, CHAR_RIGHT_PARENTHESES: 41, CHAR_ASTERISK: 42, CHAR_AMPERSAND: 38, CHAR_AT: 64, CHAR_BACKWARD_SLASH: 92, CHAR_CARRIAGE_RETURN: 13, CHAR_CIRCUMFLEX_ACCENT: 94, CHAR_COLON: 58, CHAR_COMMA: 44, CHAR_DOT: 46, CHAR_DOUBLE_QUOTE: 34, CHAR_EQUAL: 61, CHAR_EXCLAMATION_MARK: 33, CHAR_FORM_FEED: 12, CHAR_FORWARD_SLASH: 47, CHAR_GRAVE_ACCENT: 96, CHAR_HASH: 35, CHAR_HYPHEN_MINUS: 45, CHAR_LEFT_ANGLE_BRACKET: 60, CHAR_LEFT_CURLY_BRACE: 123, CHAR_LEFT_SQUARE_BRACKET: 91, CHAR_LINE_FEED: 10, CHAR_NO_BREAK_SPACE: 160, CHAR_PERCENT: 37, CHAR_PLUS: 43, CHAR_QUESTION_MARK: 63, CHAR_RIGHT_ANGLE_BRACKET: 62, CHAR_RIGHT_CURLY_BRACE: 125, CHAR_RIGHT_SQUARE_BRACKET: 93, CHAR_SEMICOLON: 59, CHAR_SINGLE_QUOTE: 39, CHAR_SPACE: 32, CHAR_TAB: 9, CHAR_UNDERSCORE: 95, CHAR_VERTICAL_LINE: 124, CHAR_ZERO_WIDTH_NOBREAK_SPACE: 65279, extglobChars (t) { return { "!": { type: "negate", open: "(?:(?!(?:", close: `))${t.STAR})` }, "?": { type: "qmark", open: "(?:", close: ")?" }, "+": { type: "plus", open: "(?:", close: ")+" }, "*": { type: "star", open: "(?:", close: ")*" }, "@": { type: "at", open: "(?:", close: ")" } }; }, globChars (t) { return t === true ? C : b; } }; }, 697: (t, e, u)=>{ const n = u(154); const o = u(96); const { MAX_LENGTH: s, POSIX_REGEX_SOURCE: r, REGEX_NON_SPECIAL_CHARS: a, REGEX_SPECIAL_CHARS_BACKREF: i, REPLACEMENTS: c } = n; const expandRange = (t, e)=>{ if (typeof e.expandRange === "function") { return e.expandRange(...t, e); } t.sort(); const u = `[${t.join("-")}]`; try { new RegExp(u); } catch (e) { return t.map((t)=>o.escapeRegex(t)).join(".."); } return u; }; const syntaxError = (t, e)=>`Missing ${t}: "${e}" - use "\\\\${e}" to match literal characters`; const parse = (t, e)=>{ if (typeof t !== "string") { throw new TypeError("Expected a string"); } t = c[t] || t; const u = { ...e }; const p = typeof u.maxLength === "number" ? Math.min(s, u.maxLength) : s; let l = t.length; if (l > p) { throw new SyntaxError(`Input length: ${l}, exceeds maximum allowed length: ${p}`); } const f = { type: "bos", value: "", output: u.prepend || "" }; const A = [ f ]; const _ = u.capture ? "" : "?:"; const R = n.globChars(u.windows); const E = n.extglobChars(R); const { DOT_LITERAL: h, PLUS_LITERAL: g, SLASH_LITERAL: b, ONE_CHAR: C, DOTS_SLASH: y, NO_DOT: $, NO_DOT_SLASH: x, NO_DOTS_SLASH: S, QMARK: H, QMARK_NO_DOT: v, STAR: d, START_ANCHOR: L } = R; const globstar = (t)=>`(${_}(?:(?!${L}${t.dot ? y : h}).)*?)`; const T = u.dot ? "" : $; const O = u.dot ? H : v; let k = u.bash === true ? globstar(u) : d; if (u.capture) { k = `(${k})`; } if (typeof u.noext === "boolean") { u.noextglob = u.noext; } const m = { input: t, index: -1, start: 0, dot: u.dot === true, consumed: "", output: "", prefix: "", backtrack: false, negated: false, brackets: 0, braces: 0, parens: 0, quotes: 0, globstar: false, tokens: A }; t = o.removePrefix(t, m); l = t.length; const w = []; const N = []; const I = []; let B = f; let G; const eos = ()=>m.index === l - 1; const D = m.peek = (e = 1)=>t[m.index + e]; const M = m.advance = ()=>t[++m.index] || ""; const remaining = ()=>t.slice(m.index + 1); const consume = (t = "", e = 0)=>{ m.consumed += t; m.index += e; }; const append = (t)=>{ m.output += t.output != null ? t.output : t.value; consume(t.value); }; const negate = ()=>{ let t = 1; while(D() === "!" && (D(2) !== "(" || D(3) === "?")){ M(); m.start++; t++; } if (t % 2 === 0) { return false; } m.negated = true; m.start++; return true; }; const increment = (t)=>{ m[t]++; I.push(t); }; const decrement = (t)=>{ m[t]--; I.pop(); }; const push = (t)=>{ if (B.type === "globstar") { const e = m.braces > 0 && (t.type === "comma" || t.type === "brace"); const u = t.extglob === true || w.length && (t.type === "pipe" || t.type === "paren"); if (t.type !== "slash" && t.type !== "paren" && !e && !u) { m.output = m.output.slice(0, -B.output.length); B.type = "star"; B.value = "*"; B.output = k; m.output += B.output; } } if (w.length && t.type !== "paren") { w[w.length - 1].inner += t.value; } if (t.value || t.output) append(t); if (B && B.type === "text" && t.type === "text") { B.output = (B.output || B.value) + t.value; B.value += t.value; return; } t.prev = B; A.push(t); B = t; }; const extglobOpen = (t, e)=>{ const n = { ...E[e], conditions: 1, inner: "" }; n.prev = B; n.parens = m.parens; n.output = m.output; const o = (u.capture ? "(" : "") + n.open; increment("parens"); push({ type: t, value: e, output: m.output ? "" : C }); push({ type: "paren", extglob: true, value: M(), output: o }); w.push(n); }; const extglobClose = (t)=>{ let n = t.close + (u.capture ? ")" : ""); let o; if (t.type === "negate") { let s = k; if (t.inner && t.inner.length > 1 && t.inner.includes("/")) { s = globstar(u); } if (s !== k || eos() || /^\)+$/.test(remaining())) { n = t.close = `)$))${s}`; } if (t.inner.includes("*") && (o = remaining()) && /^\.[^\\/.]+$/.test(o)) { const u = parse(o, { ...e, fastpaths: false }).output; n = t.close = `)${u})${s})`; } if (t.prev.type === "bos") { m.negatedExtglob = true; } } push({ type: "paren", extglob: true, value: G, output: n }); decrement("parens"); }; if (u.fastpaths !== false && !/(^[*!]|[/()[\]{}"])/.test(t)) { let n = false; let s = t.replace(i, (t, e, u, o, s, r)=>{ if (o === "\\") { n = true; return t; } if (o === "?") { if (e) { return e + o + (s ? H.repeat(s.length) : ""); } if (r === 0) { return O + (s ? H.repeat(s.length) : ""); } return H.repeat(u.length); } if (o === ".") { return h.repeat(u.length); } if (o === "*") { if (e) { return e + o + (s ? k : ""); } return k; } return e ? t : `\\${t}`; }); if (n === true) { if (u.unescape === true) { s = s.replace(/\\/g, ""); } else { s = s.replace(/\\+/g, (t)=>t.length % 2 === 0 ? "\\\\" : t ? "\\" : ""); } } if (s === t && u.contains === true) { m.output = t; return m; } m.output = o.wrapOutput(s, m, e); return m; } while(!eos()){ G = M(); if (G === "\0") { continue; } if (G === "\\") { const t = D(); if (t === "/" && u.bash !== true) { continue; } if (t === "." || t === ";") { continue; } if (!t) { G += "\\"; push({ type: "text", value: G }); continue; } const e = /^\\+/.exec(remaining()); let n = 0; if (e && e[0].length > 2) { n = e[0].length; m.index += n; if (n % 2 !== 0) { G += "\\"; } } if (u.unescape === true) { G = M(); } else { G += M(); } if (m.brackets === 0) { push({ type: "text", value: G }); continue; } } if (m.brackets > 0 && (G !== "]" || B.value === "[" || B.value === "[^")) { if (u.posix !== false && G === ":") { const t = B.value.slice(1); if (t.includes("[")) { B.posix = true; if (t.includes(":")) { const t = B.value.lastIndexOf("["); const e = B.value.slice(0, t); const u = B.value.slice(t + 2); const n = r[u]; if (n) { B.value = e + n; m.backtrack = true; M(); if (!f.output && A.indexOf(B) === 1) { f.output = C; } continue; } } } } if (G === "[" && D() !== ":" || G === "-" && D() === "]") { G = `\\${G}`; } if (G === "]" && (B.value === "[" || B.value === "[^")) { G = `\\${G}`; } if (u.posix === true && G === "!" && B.value === "[") { G = "^"; } B.value += G; append({ value: G }); continue; } if (m.quotes === 1 && G !== '"') { G = o.escapeRegex(G); B.value += G; append({ value: G }); continue; } if (G === '"') { m.quotes = m.quotes === 1 ? 0 : 1; if (u.keepQuotes === true) { push({ type: "text", value: G }); } continue; } if (G === "(") { increment("parens"); push({ type: "paren", value: G }); continue; } if (G === ")") { if (m.parens === 0 && u.strictBrackets === true) { throw new SyntaxError(syntaxError("opening", "(")); } const t = w[w.length - 1]; if (t && m.parens === t.parens + 1) { extglobClose(w.pop()); continue; } push({ type: "paren", value: G, output: m.parens ? ")" : "\\)" }); decrement("parens"); continue; } if (G === "[") { if (u.nobracket === true || !remaining().includes("]")) { if (u.nobracket !== true && u.strictBrackets === true) { throw new SyntaxError(syntaxError("closing", "]")); } G = `\\${G}`; } else { increment("brackets"); } push({ type: "bracket", value: G }); continue; } if (G === "]") { if (u.nobracket === true || B && B.type === "bracket" && B.value.length === 1) { push({ type: "text", value: G, output: `\\${G}` }); continue; } if (m.brackets === 0) { if (u.strictBrackets === true) { throw new SyntaxError(syntaxError("opening", "[")); } push({ type: "text", value: G, output: `\\${G}` }); continue; } decrement("brackets"); const t = B.value.slice(1); if (B.posix !== true && t[0] === "^" && !t.includes("/")) { G = `/${G}`; } B.value += G; append({ value: G }); if (u.literalBrackets === false || o.hasRegexChars(t)) { continue; } const e = o.escapeRegex(B.value); m.output = m.output.slice(0, -B.value.length); if (u.literalBrackets === true) { m.output += e; B.value = e; continue; } B.value = `(${_}${e}|${B.value})`; m.output += B.value; continue; } if (G === "{" && u.nobrace !== true) { increment("braces"); const t = { type: "brace", value: G, output: "(", outputIndex: m.output.length, tokensIndex: m.tokens.length }; N.push(t); push(t); continue; } if (G === "}") { const t = N[N.length - 1]; if (u.nobrace === true || !t) { push({ type: "text", value: G, output: G }); continue; } let e = ")"; if (t.dots === true) { const t = A.slice(); const n = []; for(let e = t.length - 1; e >= 0; e--){ A.pop(); if (t[e].type === "brace") { break; } if (t[e].type !== "dots") { n.unshift(t[e].value); } } e = expandRange(n, u); m.backtrack = true; } if (t.comma !== true && t.dots !== true) { const u = m.output.slice(0, t.outputIndex); const n = m.tokens.slice(t.tokensIndex); t.value = t.output = "\\{"; G = e = "\\}"; m.output = u; for (const t of n){ m.output += t.output || t.value; } } push({ type: "brace", value: G, output: e }); decrement("braces"); N.pop(); continue; } if (G === "|") { if (w.length > 0) { w[w.length - 1].conditions++; } push({ type: "text", value: G }); continue; } if (G === ",") { let t = G; const e = N[N.length - 1]; if (e && I[I.length - 1] === "braces") { e.comma = true; t = "|"; } push({ type: "comma", value: G, output: t }); continue; } if (G === "/") { if (B.type === "dot" && m.index === m.start + 1) { m.start = m.index + 1; m.consumed = ""; m.output = ""; A.pop(); B = f; continue; } push({ type: "slash", value: G, output: b }); continue; } if (G === ".") { if (m.braces > 0 && B.type === "dot") { if (B.value === ".") B.output = h; const t = N[N.length - 1]; B.type = "dots"; B.output += G; B.value += G; t.dots = true; continue; } if (m.braces + m.parens === 0 && B.type !== "bos" && B.type !== "slash") { push({ type: "text", value: G, output: h }); continue; } push({ type: "dot", value: G, output: h }); continue; } if (G === "?") { const t = B && B.value === "("; if (!t && u.noextglob !== true && D() === "(" && D(2) !== "?") { extglobOpen("qmark", G); continue; } if (B && B.type === "paren") { const t = D(); let e = G; if (B.value === "(" && !/[!=<:]/.test(t) || t === "<" && !/<([!=]|\w+>)/.test(remaining())) { e = `\\${G}`; } push({ type: "text", value: G, output: e }); continue; } if (u.dot !== true && (B.type === "slash" || B.type === "bos")) { push({ type: "qmark", value: G, output: v }); continue; } push({ type: "qmark", value: G, output: H }); continue; } if (G === "!") { if (u.noextglob !== true && D() === "(") { if (D(2) !== "?" || !/[!=<:]/.test(D(3))) { extglobOpen("negate", G); continue; } } if (u.nonegate !== true && m.index === 0) { negate(); continue; } } if (G === "+") { if (u.noextglob !== true && D() === "(" && D(2) !== "?") { extglobOpen("plus", G); continue; } if (B && B.value === "(" || u.regex === false) { push({ type: "plus", value: G, output: g }); continue; } if (B && (B.type === "bracket" || B.type === "paren" || B.type === "brace") || m.parens > 0) { push({ type: "plus", value: G }); continue; } push({ type: "plus", value: g }); continue; } if (G === "@") { if (u.noextglob !== true && D() === "(" && D(2) !== "?") { push({ type: "at", extglob: true, value: G, output: "" }); continue; } push({ type: "text", value: G }); continue; } if (G !== "*") { if (G === "$" || G === "^") { G = `\\${G}`; } const t = a.exec(remaining()); if (t) { G += t[0]; m.index += t[0].length; } push({ type: "text", value: G }); continue; } if (B && (B.type === "globstar" || B.star === true)) { B.type = "star"; B.star = true; B.value += G; B.output = k; m.backtrack = true; m.globstar = true; consume(G); continue; } let e = remaining(); if (u.noextglob !== true && /^\([^?]/.test(e)) { extglobOpen("star", G); continue; } if (B.type === "star") { if (u.noglobstar === true) { consume(G); continue; } const n = B.prev; const o = n.prev; const s = n.type === "slash" || n.type === "bos"; const r = o && (o.type === "star" || o.type === "globstar"); if (u.bash === true && (!s || e[0] && e[0] !== "/")) { push({ type: "star", value: G, output: "" }); continue; } const a = m.braces > 0 && (n.type === "comma" || n.type === "brace"); const i = w.length && (n.type === "pipe" || n.type === "paren"); if (!s && n.type !== "paren" && !a && !i) { push({ type: "star", value: G, output: "" }); continue; } while(e.slice(0, 3) === "/**"){ const u = t[m.index + 4]; if (u && u !== "/") { break; } e = e.slice(3); consume("/**", 3); } if (n.type === "bos" && eos()) { B.type = "globstar"; B.value += G; B.output = globstar(u); m.output = B.output; m.globstar = true; consume(G); continue; } if (n.type === "slash" && n.prev.type !== "bos" && !r && eos()) { m.output = m.output.slice(0, -(n.output + B.output).length); n.output = `(?:${n.output}`; B.type = "globstar"; B.output = globstar(u) + (u.strictSlashes ? ")" : "|$)"); B.value += G; m.globstar = true; m.output += n.output + B.output; consume(G); continue; } if (n.type === "slash" && n.prev.type !== "bos" && e[0] === "/") { const t = e[1] !== void 0 ? "|$" : ""; m.output = m.output.slice(0, -(n.output + B.output).length); n.output = `(?:${n.output}`; B.type = "globstar"; B.output = `${globstar(u)}${b}|${b}${t})`; B.value += G; m.output += n.output + B.output; m.globstar = true; consume(G + M()); push({ type: "slash", value: "/", output: "" }); continue; } if (n.type === "bos" && e[0] === "/") { B.type = "globstar"; B.value += G; B.output = `(?:^|${b}|${globstar(u)}${b})`; m.output = B.output; m.globstar = true; consume(G + M()); push({ type: "slash", value: "/", output: "" }); continue; } m.output = m.output.slice(0, -B.output.length); B.type = "globstar"; B.output = globstar(u); B.value += G; m.output += B.output; m.globstar = true; consume(G); continue; } const n = { type: "star", value: G, output: k }; if (u.bash === true) { n.output = ".*?"; if (B.type === "bos" || B.type === "slash") { n.output = T + n.output; } push(n); continue; } if (B && (B.type === "bracket" || B.type === "paren") && u.regex === true) { n.output = G; push(n); continue; } if (m.index === m.start || B.type === "slash" || B.type === "dot") { if (B.type === "dot") { m.output += x; B.output += x; } else if (u.dot === true) { m.output += S; B.output += S; } else { m.output += T; B.output += T; } if (D() !== "*") { m.output += C; B.output += C; } } push(n); } while(m.brackets > 0){ if (u.strictBrackets === true) throw new SyntaxError(syntaxError("closing", "]")); m.output = o.escapeLast(m.output, "["); decrement("brackets"); } while(m.parens > 0){ if (u.strictBrackets === true) throw new SyntaxError(syntaxError("closing", ")")); m.output = o.escapeLast(m.output, "("); decrement("parens"); } while(m.braces > 0){ if (u.strictBrackets === true) throw new SyntaxError(syntaxError("closing", "}")); m.output = o.escapeLast(m.output, "{"); decrement("braces"); } if (u.strictSlashes !== true && (B.type === "star" || B.type === "bracket")) { push({ type: "maybe_slash", value: "", output: `${b}?` }); } if (m.backtrack === true) { m.output = ""; for (const t of m.tokens){ m.output += t.output != null ? t.output : t.value; if (t.suffix) { m.output += t.suffix; } } } return m; }; parse.fastpaths = (t, e)=>{ const u = { ...e }; const r = typeof u.maxLength === "number" ? Math.min(s, u.maxLength) : s; const a = t.length; if (a > r) { throw new SyntaxError(`Input length: ${a}, exceeds maximum allowed length: ${r}`); } t = c[t] || t; const { DOT_LITERAL: i, SLASH_LITERAL: p, ONE_CHAR: l, DOTS_SLASH: f, NO_DOT: A, NO_DOTS: _, NO_DOTS_SLASH: R, STAR: E, START_ANCHOR: h } = n.globChars(u.windows); const g = u.dot ? _ : A; const b = u.dot ? R : A; const C = u.capture ? "" : "?:"; const y = { negated: false, prefix: "" }; let $ = u.bash === true ? ".*?" : E; if (u.capture) { $ = `(${$})`; } const globstar = (t)=>{ if (t.noglobstar === true) return $; return `(${C}(?:(?!${h}${t.dot ? f : i}).)*?)`; }; const create = (t)=>{ switch(t){ case "*": return `${g}${l}${$}`; case ".*": return `${i}${l}${$}`; case "*.*": return `${g}${$}${i}${l}${$}`; case "*/*": return `${g}${$}${p}${l}${b}${$}`; case "**": return g + globstar(u); case "**/*": return `(?:${g}${globstar(u)}${p})?${b}${l}${$}`; case "**/*.*": return `(?:${g}${globstar(u)}${p})?${b}${$}${i}${l}${$}`; case "**/.*": return `(?:${g}${globstar(u)}${p})?${i}${l}${$}`; default: { const e = /^(.*?)\.(\w+)$/.exec(t); if (!e) return; const u = create(e[1]); if (!u) return; return u + i + e[2]; } } }; const x = o.removePrefix(t, y); let S = create(x); if (S && u.strictSlashes !== true) { S += `${p}?`; } return S; }; t.exports = parse; }, 510: (t, e, u)=>{ const n = u(716); const o = u(697); const s = u(96); const r = u(154); const isObject = (t)=>t && typeof t === "object" && !Array.isArray(t); const picomatch = (t, e, u = false)=>{ if (Array.isArray(t)) { const n = t.map((t)=>picomatch(t, e, u)); const arrayMatcher = (t)=>{ for (const e of n){ const u = e(t); if (u) return u; } return false; }; return arrayMatcher; } const n = isObject(t) && t.tokens && t.input; if (t === "" || typeof t !== "string" && !n) { throw new TypeError("Expected pattern to be a non-empty string"); } const o = e || {}; const s = o.windows; const r = n ? picomatch.compileRe(t, e) : picomatch.makeRe(t, e, false, true); const a = r.state; delete r.state; let isIgnored = ()=>false; if (o.ignore) { const t = { ...e, ignore: null, onMatch: null, onResult: null }; isIgnored = picomatch(o.ignore, t, u); } const matcher = (u, n = false)=>{ const { isMatch: i, match: c, output: p } = picomatch.test(u, r, e, { glob: t, posix: s }); const l = { glob: t, state: a, regex: r, posix: s, input: u, output: p, match: c, isMatch: i }; if (typeof o.onResult === "function") { o.onResult(l); } if (i === false) { l.isMatch = false; return n ? l : false; } if (isIgnored(u)) { if (typeof o.onIgnore === "function") { o.onIgnore(l); } l.isMatch = false; return n ? l : false; } if (typeof o.onMatch === "function") { o.onMatch(l); } return n ? l : true; }; if (u) { matcher.state = a; } return matcher; }; picomatch.test = (t, e, u, { glob: n, posix: o } = {})=>{ if (typeof t !== "string") { throw new TypeError("Expected input to be a string"); } if (t === "") { return { isMatch: false, output: "" }; } const r = u || {}; const a = r.format || (o ? s.toPosixSlashes : null); let i = t === n; let c = i && a ? a(t) : t; if (i === false) { c = a ? a(t) : t; i = c === n; } if (i === false || r.capture === true) { if (r.matchBase === true || r.basename === true) { i = picomatch.matchBase(t, e, u, o); } else { i = e.exec(c); } } return { isMatch: Boolean(i), match: i, output: c }; }; picomatch.matchBase = (t, e, u)=>{ const n = e instanceof RegExp ? e : picomatch.makeRe(e, u); return n.test(s.basename(t)); }; picomatch.isMatch = (t, e, u)=>picomatch(e, u)(t); picomatch.parse = (t, e)=>{ if (Array.isArray(t)) return t.map((t)=>picomatch.parse(t, e)); return o(t, { ...e, fastpaths: false }); }; picomatch.scan = (t, e)=>n(t, e); picomatch.compileRe = (t, e, u = false, n = false)=>{ if (u === true) { return t.output; } const o = e || {}; const s = o.contains ? "" : "^"; const r = o.contains ? "" : "$"; let a = `${s}(?:${t.output})${r}`; if (t && t.negated === true) { a = `^(?!${a}).*$`; } const i = picomatch.toRegex(a, e); if (n === true) { i.state = t; } return i; }; picomatch.makeRe = (t, e = {}, u = false, n = false)=>{ if (!t || typeof t !== "string") { throw new TypeError("Expected a non-empty string"); } let s = { negated: false, fastpaths: true }; if (e.fastpaths !== false && (t[0] === "." || t[0] === "*")) { s.output = o.fastpaths(t, e); } if (!s.output) { s = o(t, e); } return picomatch.compileRe(s, e, u, n); }; picomatch.toRegex = (t, e)=>{ try { const u = e || {}; return new RegExp(t, u.flags || (u.nocase ? "i" : "")); } catch (t) { if (e && e.debug === true) throw t; return /$^/; } }; picomatch.constants = r; t.exports = picomatch; }, 716: (t, e, u)=>{ const n = u(96); const { CHAR_ASTERISK: o, CHAR_AT: s, CHAR_BACKWARD_SLASH: r, CHAR_COMMA: a, CHAR_DOT: i, CHAR_EXCLAMATION_MARK: c, CHAR_FORWARD_SLASH: p, CHAR_LEFT_CURLY_BRACE: l, CHAR_LEFT_PARENTHESES: f, CHAR_LEFT_SQUARE_BRACKET: A, CHAR_PLUS: _, CHAR_QUESTION_MARK: R, CHAR_RIGHT_CURLY_BRACE: E, CHAR_RIGHT_PARENTHESES: h, CHAR_RIGHT_SQUARE_BRACKET: g } = u(154); const isPathSeparator = (t)=>t === p || t === r; const depth = (t)=>{ if (t.isPrefix !== true) { t.depth = t.isGlobstar ? Infinity : 1; } }; const scan = (t, e)=>{ const u = e || {}; const b = t.length - 1; const C = u.parts === true || u.scanToEnd === true; const y = []; const $ = []; const x = []; let S = t; let H = -1; let v = 0; let d = 0; let L = false; let T = false; let O = false; let k = false; let m = false; let w = false; let N = false; let I = false; let B = false; let G = false; let D = 0; let M; let P; let K = { value: "", depth: 0, isGlob: false }; const eos = ()=>H >= b; const peek = ()=>S.charCodeAt(H + 1); const advance = ()=>{ M = P; return S.charCodeAt(++H); }; while(H < b){ P = advance(); let t; if (P === r) { N = K.backslashes = true; P = advance(); if (P === l) { w = true; } continue; } if (w === true || P === l) { D++; while(eos() !== true && (P = advance())){ if (P === r) { N = K.backslashes = true; advance(); continue; } if (P === l) { D++; continue; } if (w !== true && P === i && (P = advance()) === i) { L = K.isBrace = true; O = K.isGlob = true; G = true; if (C === true) { continue; } break; } if (w !== true && P === a) { L = K.isBrace = true; O = K.isGlob = true; G = true; if (C === true) { continue; } break; } if (P === E) { D--; if (D === 0) { w = false; L = K.isBrace = true; G = true; break; } } } if (C === true) { continue; } break; } if (P === p) { y.push(H); $.push(K); K = { value: "", depth: 0, isGlob: false }; if (G === true) continue; if (M === i && H === v + 1) { v += 2; continue; } d = H + 1; continue; } if (u.noext !== true) { const t = P === _ || P === s || P === o || P === R || P === c; if (t === true && peek() === f) { O = K.isGlob = true; k = K.isExtglob = true; G = true; if (P === c && H === v) { B = true; } if (C === true) { while(eos() !== true && (P = advance())){ if (P === r) { N = K.backslashes = true; P = advance(); continue; } if (P === h) { O = K.isGlob = true; G = true; break; } } continue; } break; } } if (P === o) { if (M === o) m = K.isGlobstar = true; O = K.isGlob = true; G = true; if (C === true) { continue; } break; } if (P === R) { O = K.isGlob = true; G = true; if (C === true) { continue; } break; } if (P === A) { while(eos() !== true && (t = advance())){ if (t === r) { N = K.backslashes = true; advance(); continue; } if (t === g) { T = K.isBracket = true; O = K.isGlob = true; G = true; break; } } if (C === true) { continue; } break; } if (u.nonegate !== true && P === c && H === v) { I = K.negated = true; v++; continue; } if (u.noparen !== true && P === f) { O = K.isGlob = true; if (C === true) { while(eos() !== true && (P = advance())){ if (P === f) { N = K.backslashes = true; P = advance(); continue; } if (P === h) { G = true; break; } } continue; } break; } if (O === true) { G = true; if (C === true) { continue; } break; } } if (u.noext === true) { k = false; O = false; } let U = S; let X = ""; let F = ""; if (v > 0) { X = S.slice(0, v); S = S.slice(v); d -= v; } if (U && O === true && d > 0) { U = S.slice(0, d); F = S.slice(d); } else if (O === true) { U = ""; F = S; } else { U = S; } if (U && U !== "" && U !== "/" && U !== S) { if (isPathSeparator(U.charCodeAt(U.length - 1))) { U = U.slice(0, -1); } } if (u.unescape === true) { if (F) F = n.removeBackslashes(F); if (U && N === true) { U = n.removeBackslashes(U); } } const Q = { prefix: X, input: t, start: v, base: U, glob: F, isBrace: L, isBracket: T, isGlob: O, isExtglob: k, isGlobstar: m, negated: I, negatedExtglob: B }; if (u.tokens === true) { Q.maxDepth = 0; if (!isPathSeparator(P)) { $.push(K); } Q.tokens = $; } if (u.parts === true || u.tokens === true) { let e; for(let n = 0; n < y.length; n++){ const o = e ? e + 1 : v; const s = y[n]; const r = t.slice(o, s); if (u.tokens) { if (n === 0 && v !== 0) { $[n].isPrefix = true; $[n].value = X; } else { $[n].value = r; } depth($[n]); Q.maxDepth += $[n].depth; } if (n !== 0 || r !== "") { x.push(r); } e = s; } if (e && e + 1 < t.length) { const n = t.slice(e + 1); x.push(n); if (u.tokens) { $[$.length - 1].value = n; depth($[$.length - 1]); Q.maxDepth += $[$.length - 1].depth; } } Q.slashes = y; Q.parts = x; } return Q; }; t.exports = scan; }, 96: (t, e, u)=>{ const { REGEX_BACKSLASH: n, REGEX_REMOVE_BACKSLASH: o, REGEX_SPECIAL_CHARS: s, REGEX_SPECIAL_CHARS_GLOBAL: r } = u(154); e.isObject = (t)=>t !== null && typeof t === "object" && !Array.isArray(t); e.hasRegexChars = (t)=>s.test(t); e.isRegexChar = (t)=>t.length === 1 && e.hasRegexChars(t); e.escapeRegex = (t)=>t.replace(r, "\\$1"); e.toPosixSlashes = (t)=>t.replace(n, "/"); e.removeBackslashes = (t)=>t.replace(o, (t)=>t === "\\" ? "" : t); e.escapeLast = (t, u, n)=>{ const o = t.lastIndexOf(u, n); if (o === -1) return t; if (t[o - 1] === "\\") return e.escapeLast(t, u, o - 1); return `${t.slice(0, o)}\\${t.slice(o)}`; }; e.removePrefix = (t, e = {})=>{ let u = t; if (u.startsWith("./")) { u = u.slice(2); e.prefix = "./"; } return u; }; e.wrapOutput = (t, e = {}, u = {})=>{ const n = u.contains ? "" : "^"; const o = u.contains ? "" : "$"; let s = `${n}(?:${t})${o}`; if (e.negated === true) { s = `(?:^(?!${s}).*$)`; } return s; }; e.basename = (t, { windows: e } = {})=>{ const u = t.split(e ? /[\\/]/ : "/"); const n = u[u.length - 1]; if (n === "") { return u[u.length - 2]; } return n; }; } }; var e = {}; function __nccwpck_require__(u) { var n = e[u]; if (n !== undefined) { return n.exports; } var o = e[u] = { exports: {} }; var s = true; try { t[u](o, o.exports, __nccwpck_require__); s = false; } finally{ if (s) delete e[u]; } return o.exports; } if (typeof __nccwpck_require__ !== "undefined") __nccwpck_require__.ab = ("TURBOPACK compile-time value", "/ROOT/node_modules/next/dist/compiled/picomatch") + "/"; var u = __nccwpck_require__(170); module.exports = u; })(); }), "[project]/node_modules/next/dist/shared/lib/match-local-pattern.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { hasLocalMatch: null, matchLocalPattern: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { hasLocalMatch: function() { return hasLocalMatch; }, matchLocalPattern: function() { return matchLocalPattern; } }); const _picomatch = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/picomatch/index.js [app-client] (ecmascript)"); function matchLocalPattern(pattern, url) { if (pattern.search !== undefined) { if (pattern.search !== url.search) { return false; } } if (!(0, _picomatch.makeRe)(pattern.pathname ?? '**', { dot: true }).test(url.pathname)) { return false; } return true; } function hasLocalMatch(localPatterns, urlPathAndQuery) { if (!localPatterns) { // if the user didn't define "localPatterns", we allow all local images return true; } const url = new URL(urlPathAndQuery, 'http://n'); return localPatterns.some((p)=>matchLocalPattern(p, url)); } //# sourceMappingURL=match-local-pattern.js.map }), "[project]/node_modules/next/dist/shared/lib/match-remote-pattern.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { hasRemoteMatch: null, matchRemotePattern: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { hasRemoteMatch: function() { return hasRemoteMatch; }, matchRemotePattern: function() { return matchRemotePattern; } }); const _picomatch = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/picomatch/index.js [app-client] (ecmascript)"); function matchRemotePattern(pattern, url) { if (pattern.protocol !== undefined) { if (pattern.protocol.replace(/:$/, '') !== url.protocol.replace(/:$/, '')) { return false; } } if (pattern.port !== undefined) { if (pattern.port !== url.port) { return false; } } if (pattern.hostname === undefined) { throw Object.defineProperty(new Error(`Pattern should define hostname but found\n${JSON.stringify(pattern)}`), "__NEXT_ERROR_CODE", { value: "E410", enumerable: false, configurable: true }); } else { if (!(0, _picomatch.makeRe)(pattern.hostname).test(url.hostname)) { return false; } } if (pattern.search !== undefined) { if (pattern.search !== url.search) { return false; } } // Should be the same as writeImagesManifest() if (!(0, _picomatch.makeRe)(pattern.pathname ?? '**', { dot: true }).test(url.pathname)) { return false; } return true; } function hasRemoteMatch(domains, remotePatterns, url) { return domains.some((domain)=>url.hostname === domain) || remotePatterns.some((p)=>matchRemotePattern(p, url)); } //# sourceMappingURL=match-remote-pattern.js.map }), "[project]/node_modules/next/dist/shared/lib/image-loader.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "default", { enumerable: true, get: function() { return _default; } }); const _findclosestquality = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/find-closest-quality.js [app-client] (ecmascript)"); function defaultLoader({ config, src, width, quality }) { if (src.startsWith('/') && src.includes('?') && config.localPatterns?.length === 1 && config.localPatterns[0].pathname === '**' && config.localPatterns[0].search === '') { throw Object.defineProperty(new Error(`Image with src "${src}" is using a query string which is not configured in images.localPatterns.` + `\nRead more: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`), "__NEXT_ERROR_CODE", { value: "E871", enumerable: false, configurable: true }); } if ("TURBOPACK compile-time truthy", 1) { const missingValues = []; // these should always be provided but make sure they are if (!src) missingValues.push('src'); if (!width) missingValues.push('width'); if (missingValues.length > 0) { throw Object.defineProperty(new Error(`Next Image Optimization requires ${missingValues.join(', ')} to be provided. Make sure you pass them as props to the \`next/image\` component. Received: ${JSON.stringify({ src, width, quality })}`), "__NEXT_ERROR_CODE", { value: "E188", enumerable: false, configurable: true }); } if (src.startsWith('//')) { throw Object.defineProperty(new Error(`Failed to parse src "${src}" on \`next/image\`, protocol-relative URL (//) must be changed to an absolute URL (http:// or https://)`), "__NEXT_ERROR_CODE", { value: "E360", enumerable: false, configurable: true }); } if (src.startsWith('/') && config.localPatterns) { if ("TURBOPACK compile-time truthy", 1) { // We use dynamic require because this should only error in development const { hasLocalMatch } = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/match-local-pattern.js [app-client] (ecmascript)"); if (!hasLocalMatch(config.localPatterns, src)) { throw Object.defineProperty(new Error(`Invalid src prop (${src}) on \`next/image\` does not match \`images.localPatterns\` configured in your \`next.config.js\`\n` + `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-localpatterns`), "__NEXT_ERROR_CODE", { value: "E426", enumerable: false, configurable: true }); } } } if (!src.startsWith('/') && (config.domains || config.remotePatterns)) { let parsedSrc; try { parsedSrc = new URL(src); } catch (err) { console.error(err); throw Object.defineProperty(new Error(`Failed to parse src "${src}" on \`next/image\`, if using relative image it must start with a leading slash "/" or be an absolute URL (http:// or https://)`), "__NEXT_ERROR_CODE", { value: "E63", enumerable: false, configurable: true }); } if ("TURBOPACK compile-time truthy", 1) { // We use dynamic require because this should only error in development const { hasRemoteMatch } = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/match-remote-pattern.js [app-client] (ecmascript)"); if (!hasRemoteMatch(config.domains, config.remotePatterns, parsedSrc)) { throw Object.defineProperty(new Error(`Invalid src prop (${src}) on \`next/image\`, hostname "${parsedSrc.hostname}" is not configured under images in your \`next.config.js\`\n` + `See more info: https://nextjs.org/docs/messages/next-image-unconfigured-host`), "__NEXT_ERROR_CODE", { value: "E231", enumerable: false, configurable: true }); } } } } const q = (0, _findclosestquality.findClosestQuality)(quality, config); return `${config.path}?url=${encodeURIComponent(src)}&w=${width}&q=${q}${src.startsWith('/_next/static/media/') && ("TURBOPACK compile-time value", false) ? "TURBOPACK unreachable" : ''}`; } // We use this to determine if the import is the default loader // or a custom loader defined by the user in next.config.js defaultLoader.__next_img_default = true; const _default = defaultLoader; //# sourceMappingURL=image-loader.js.map }), "[project]/node_modules/next/dist/client/image-component.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); 'use client'; "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); Object.defineProperty(exports, "Image", { enumerable: true, get: function() { return Image; } }); const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [app-client] (ecmascript)"); const _interop_require_wildcard = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs [app-client] (ecmascript)"); const _jsxruntime = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)"); const _react = /*#__PURE__*/ _interop_require_wildcard._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)")); const _reactdom = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/compiled/react-dom/index.js [app-client] (ecmascript)")); const _head = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/head.js [app-client] (ecmascript)")); const _getimgprops = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/get-img-props.js [app-client] (ecmascript)"); const _imageconfig = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-config.js [app-client] (ecmascript)"); const _imageconfigcontextsharedruntime = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-config-context.shared-runtime.js [app-client] (ecmascript)"); const _warnonce = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/utils/warn-once.js [app-client] (ecmascript)"); const _routercontextsharedruntime = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/router-context.shared-runtime.js [app-client] (ecmascript)"); const _imageloader = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-loader.js [app-client] (ecmascript)")); const _usemergedref = __turbopack_context__.r("[project]/node_modules/next/dist/client/use-merged-ref.js [app-client] (ecmascript)"); // This is replaced by webpack define plugin const configEnv = ("TURBOPACK compile-time value", { "deviceSizes": ("TURBOPACK compile-time value", [ ("TURBOPACK compile-time value", 640), ("TURBOPACK compile-time value", 750), ("TURBOPACK compile-time value", 828), ("TURBOPACK compile-time value", 1080), ("TURBOPACK compile-time value", 1200), ("TURBOPACK compile-time value", 1920), ("TURBOPACK compile-time value", 2048), ("TURBOPACK compile-time value", 3840) ]), "imageSizes": ("TURBOPACK compile-time value", [ ("TURBOPACK compile-time value", 32), ("TURBOPACK compile-time value", 48), ("TURBOPACK compile-time value", 64), ("TURBOPACK compile-time value", 96), ("TURBOPACK compile-time value", 128), ("TURBOPACK compile-time value", 256), ("TURBOPACK compile-time value", 384) ]), "qualities": ("TURBOPACK compile-time value", [ ("TURBOPACK compile-time value", 75) ]), "path": ("TURBOPACK compile-time value", "/_next/image"), "loader": ("TURBOPACK compile-time value", "default"), "dangerouslyAllowSVG": ("TURBOPACK compile-time value", false), "unoptimized": ("TURBOPACK compile-time value", true), "domains": ("TURBOPACK compile-time value", []), "remotePatterns": ("TURBOPACK compile-time value", []), "localPatterns": ("TURBOPACK compile-time value", [ ("TURBOPACK compile-time value", { "pathname": ("TURBOPACK compile-time value", "**"), "search": ("TURBOPACK compile-time value", "") }) ]) }); if (typeof window === 'undefined') { ; globalThis.__NEXT_IMAGE_IMPORTED = true; } // See https://stackoverflow.com/q/39777833/266535 for why we use this ref // handler instead of the img's onLoad attribute. function handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput) { const src = img?.src; if (!img || img['data-loaded-src'] === src) { return; } img['data-loaded-src'] = src; const p = 'decode' in img ? img.decode() : Promise.resolve(); p.catch(()=>{}).then(()=>{ if (!img.parentElement || !img.isConnected) { // Exit early in case of race condition: // - onload() is called // - decode() is called but incomplete // - unmount is called // - decode() completes return; } if (placeholder !== 'empty') { setBlurComplete(true); } if (onLoadRef?.current) { // Since we don't have the SyntheticEvent here, // we must create one with the same shape. // See https://reactjs.org/docs/events.html const event = new Event('load'); Object.defineProperty(event, 'target', { writable: false, value: img }); let prevented = false; let stopped = false; onLoadRef.current({ ...event, nativeEvent: event, currentTarget: img, target: img, isDefaultPrevented: ()=>prevented, isPropagationStopped: ()=>stopped, persist: ()=>{}, preventDefault: ()=>{ prevented = true; event.preventDefault(); }, stopPropagation: ()=>{ stopped = true; event.stopPropagation(); } }); } if (onLoadingCompleteRef?.current) { onLoadingCompleteRef.current(img); } if ("TURBOPACK compile-time truthy", 1) { const origSrc = new URL(src, 'http://n').searchParams.get('url') || src; if (img.getAttribute('data-nimg') === 'fill') { if (!unoptimized && (!sizesInput || sizesInput === '100vw')) { let widthViewportRatio = img.getBoundingClientRect().width / window.innerWidth; if (widthViewportRatio < 0.6) { if (sizesInput === '100vw') { (0, _warnonce.warnOnce)(`Image with src "${origSrc}" has "fill" prop and "sizes" prop of "100vw", but image is not rendered at full viewport width. Please adjust "sizes" to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes`); } else { (0, _warnonce.warnOnce)(`Image with src "${origSrc}" has "fill" but is missing "sizes" prop. Please add it to improve page performance. Read more: https://nextjs.org/docs/api-reference/next/image#sizes`); } } } if (img.parentElement) { const { position } = window.getComputedStyle(img.parentElement); const valid = [ 'absolute', 'fixed', 'relative' ]; if (!valid.includes(position)) { (0, _warnonce.warnOnce)(`Image with src "${origSrc}" has "fill" and parent element with invalid "position". Provided "${position}" should be one of ${valid.map(String).join(',')}.`); } } if (img.height === 0) { (0, _warnonce.warnOnce)(`Image with src "${origSrc}" has "fill" and a height value of 0. This is likely because the parent element of the image has not been styled to have a set height.`); } } const heightModified = img.height.toString() !== img.getAttribute('height'); const widthModified = img.width.toString() !== img.getAttribute('width'); if (heightModified && !widthModified || !heightModified && widthModified) { (0, _warnonce.warnOnce)(`Image with src "${origSrc}" has either width or height modified, but not the other. If you use CSS to change the size of your image, also include the styles 'width: "auto"' or 'height: "auto"' to maintain the aspect ratio.`); } } }); } function getDynamicProps(fetchPriority) { if (Boolean(_react.use)) { // In React 19.0.0 or newer, we must use camelCase // prop to avoid "Warning: Invalid DOM property". // See https://github.com/facebook/react/pull/25927 return { fetchPriority }; } // In React 18.2.0 or older, we must use lowercase prop // to avoid "Warning: Invalid DOM property". return { fetchpriority: fetchPriority }; } const ImageElement = /*#__PURE__*/ (0, _react.forwardRef)(({ src, srcSet, sizes, height, width, decoding, className, style, fetchPriority, placeholder, loading, unoptimized, fill, onLoadRef, onLoadingCompleteRef, setBlurComplete, setShowAltText, sizesInput, onLoad, onError, ...rest }, forwardedRef)=>{ const ownRef = (0, _react.useCallback)((img)=>{ if (!img) { return; } if (onError) { // If the image has an error before react hydrates, then the error is lost. // The workaround is to wait until the image is mounted which is after hydration, // then we set the src again to trigger the error handler (if there was an error). // eslint-disable-next-line no-self-assign img.src = img.src; } if ("TURBOPACK compile-time truthy", 1) { if (!src) { console.error(`Image is missing required "src" property:`, img); } if (img.getAttribute('alt') === null) { console.error(`Image is missing required "alt" property. Please add Alternative Text to describe the image for screen readers and search engines.`); } } if (img.complete) { handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput); } }, [ src, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, onError, unoptimized, sizesInput ]); const ref = (0, _usemergedref.useMergedRef)(forwardedRef, ownRef); return /*#__PURE__*/ (0, _jsxruntime.jsx)("img", { ...rest, ...getDynamicProps(fetchPriority), // It's intended to keep `loading` before `src` because React updates // props in order which causes Safari/Firefox to not lazy load properly. // See https://github.com/facebook/react/issues/25883 loading: loading, width: width, height: height, decoding: decoding, "data-nimg": fill ? 'fill' : '1', className: className, style: style, // It's intended to keep `src` the last attribute because React updates // attributes in order. If we keep `src` the first one, Safari will // immediately start to fetch `src`, before `sizes` and `srcSet` are even // updated by React. That causes multiple unnecessary requests if `srcSet` // and `sizes` are defined. // This bug cannot be reproduced in Chrome or Firefox. sizes: sizes, srcSet: srcSet, src: src, ref: ref, onLoad: (event)=>{ const img = event.currentTarget; handleLoading(img, placeholder, onLoadRef, onLoadingCompleteRef, setBlurComplete, unoptimized, sizesInput); }, onError: (event)=>{ // if the real image fails to load, this will ensure "alt" is visible setShowAltText(true); if (placeholder !== 'empty') { // If the real image fails to load, this will still remove the placeholder. setBlurComplete(true); } if (onError) { onError(event); } } }); }); function ImagePreload({ isAppRouter, imgAttributes }) { const opts = { as: 'image', imageSrcSet: imgAttributes.srcSet, imageSizes: imgAttributes.sizes, crossOrigin: imgAttributes.crossOrigin, referrerPolicy: imgAttributes.referrerPolicy, ...getDynamicProps(imgAttributes.fetchPriority) }; if (isAppRouter && _reactdom.default.preload) { _reactdom.default.preload(imgAttributes.src, opts); return null; } return /*#__PURE__*/ (0, _jsxruntime.jsx)(_head.default, { children: /*#__PURE__*/ (0, _jsxruntime.jsx)("link", { rel: "preload", // Note how we omit the `href` attribute, as it would only be relevant // for browsers that do not support `imagesrcset`, and in those cases // it would cause the incorrect image to be preloaded. // // https://html.spec.whatwg.org/multipage/semantics.html#attr-link-imagesrcset href: imgAttributes.srcSet ? undefined : imgAttributes.src, ...opts }, '__nimg-' + imgAttributes.src + imgAttributes.srcSet + imgAttributes.sizes) }); } const Image = /*#__PURE__*/ (0, _react.forwardRef)((props, forwardedRef)=>{ const pagesRouter = (0, _react.useContext)(_routercontextsharedruntime.RouterContext); // We're in the app directory if there is no pages router. const isAppRouter = !pagesRouter; const configContext = (0, _react.useContext)(_imageconfigcontextsharedruntime.ImageConfigContext); const config = (0, _react.useMemo)(()=>{ const c = configEnv || configContext || _imageconfig.imageConfigDefault; const allSizes = [ ...c.deviceSizes, ...c.imageSizes ].sort((a, b)=>a - b); const deviceSizes = c.deviceSizes.sort((a, b)=>a - b); const qualities = c.qualities?.sort((a, b)=>a - b); return { ...c, allSizes, deviceSizes, qualities, // During the SSR, configEnv (__NEXT_IMAGE_OPTS) does not include // security sensitive configs like `localPatterns`, which is needed // during the server render to ensure it's validated. Therefore use // configContext, which holds the config from the server for validation. localPatterns: typeof window === 'undefined' ? configContext?.localPatterns : c.localPatterns }; }, [ configContext ]); const { onLoad, onLoadingComplete } = props; const onLoadRef = (0, _react.useRef)(onLoad); (0, _react.useEffect)(()=>{ onLoadRef.current = onLoad; }, [ onLoad ]); const onLoadingCompleteRef = (0, _react.useRef)(onLoadingComplete); (0, _react.useEffect)(()=>{ onLoadingCompleteRef.current = onLoadingComplete; }, [ onLoadingComplete ]); const [blurComplete, setBlurComplete] = (0, _react.useState)(false); const [showAltText, setShowAltText] = (0, _react.useState)(false); const { props: imgAttributes, meta: imgMeta } = (0, _getimgprops.getImgProps)(props, { defaultLoader: _imageloader.default, imgConf: config, blurComplete, showAltText }); return /*#__PURE__*/ (0, _jsxruntime.jsxs)(_jsxruntime.Fragment, { children: [ /*#__PURE__*/ (0, _jsxruntime.jsx)(ImageElement, { ...imgAttributes, unoptimized: imgMeta.unoptimized, placeholder: imgMeta.placeholder, fill: imgMeta.fill, onLoadRef: onLoadRef, onLoadingCompleteRef: onLoadingCompleteRef, setBlurComplete: setBlurComplete, setShowAltText: setShowAltText, sizesInput: props.sizes, ref: forwardedRef }), imgMeta.preload ? /*#__PURE__*/ (0, _jsxruntime.jsx)(ImagePreload, { isAppRouter: isAppRouter, imgAttributes: imgAttributes }) : null ] }); }); if ((typeof exports.default === 'function' || typeof exports.default === 'object' && exports.default !== null) && typeof exports.default.__esModule === 'undefined') { Object.defineProperty(exports.default, '__esModule', { value: true }); Object.assign(exports.default, exports); module.exports = exports.default; } //# sourceMappingURL=image-component.js.map }), "[project]/node_modules/next/dist/shared/lib/image-external.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { "use strict"; var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)"); "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); 0 && (module.exports = { default: null, getImageProps: null }); function _export(target, all) { for(var name in all)Object.defineProperty(target, name, { enumerable: true, get: all[name] }); } _export(exports, { default: function() { return _default; }, getImageProps: function() { return getImageProps; } }); const _interop_require_default = __turbopack_context__.r("[project]/node_modules/@swc/helpers/cjs/_interop_require_default.cjs [app-client] (ecmascript)"); const _getimgprops = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/get-img-props.js [app-client] (ecmascript)"); const _imagecomponent = __turbopack_context__.r("[project]/node_modules/next/dist/client/image-component.js [app-client] (ecmascript)"); const _imageloader = /*#__PURE__*/ _interop_require_default._(__turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-loader.js [app-client] (ecmascript)")); function getImageProps(imgProps) { const { props } = (0, _getimgprops.getImgProps)(imgProps, { defaultLoader: _imageloader.default, // This is replaced by webpack define plugin imgConf: ("TURBOPACK compile-time value", { "deviceSizes": ("TURBOPACK compile-time value", [ ("TURBOPACK compile-time value", 640), ("TURBOPACK compile-time value", 750), ("TURBOPACK compile-time value", 828), ("TURBOPACK compile-time value", 1080), ("TURBOPACK compile-time value", 1200), ("TURBOPACK compile-time value", 1920), ("TURBOPACK compile-time value", 2048), ("TURBOPACK compile-time value", 3840) ]), "imageSizes": ("TURBOPACK compile-time value", [ ("TURBOPACK compile-time value", 32), ("TURBOPACK compile-time value", 48), ("TURBOPACK compile-time value", 64), ("TURBOPACK compile-time value", 96), ("TURBOPACK compile-time value", 128), ("TURBOPACK compile-time value", 256), ("TURBOPACK compile-time value", 384) ]), "qualities": ("TURBOPACK compile-time value", [ ("TURBOPACK compile-time value", 75) ]), "path": ("TURBOPACK compile-time value", "/_next/image"), "loader": ("TURBOPACK compile-time value", "default"), "dangerouslyAllowSVG": ("TURBOPACK compile-time value", false), "unoptimized": ("TURBOPACK compile-time value", true), "domains": ("TURBOPACK compile-time value", []), "remotePatterns": ("TURBOPACK compile-time value", []), "localPatterns": ("TURBOPACK compile-time value", [ ("TURBOPACK compile-time value", { "pathname": ("TURBOPACK compile-time value", "**"), "search": ("TURBOPACK compile-time value", "") }) ]) }) }); // Normally we don't care about undefined props because we pass to JSX, // but this exported function could be used by the end user for anything // so we delete undefined props to clean it up a little. for (const [key, value] of Object.entries(props)){ if (value === undefined) { delete props[key]; } } return { props }; } const _default = _imagecomponent.Image; //# sourceMappingURL=image-external.js.map }), "[project]/node_modules/next/image.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => { module.exports = __turbopack_context__.r("[project]/node_modules/next/dist/shared/lib/image-external.js [app-client] (ecmascript)"); }), ]); //# sourceMappingURL=node_modules_3e8607cf._.js.map