@khraben/flowui 1.0.1 → 1.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.mjs.map ADDED
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../node_modules/@swc/helpers/cjs/_interop_require_wildcard.cjs","../node_modules/@swc/helpers/cjs/_interop_require_default.cjs","../node_modules/next/src/shared/lib/app-router-context.shared-runtime.ts","../node_modules/next/src/client/components/readonly-url-search-params.ts","../node_modules/next/src/shared/lib/hooks-client-context.shared-runtime.ts","../node_modules/next/src/shared/lib/segment.ts","../node_modules/next/src/shared/lib/server-inserted-html.shared-runtime.tsx","../node_modules/next/src/client/components/unrecognized-action-error.ts","../node_modules/next/src/client/components/redirect-status-code.ts","../node_modules/next/src/client/components/redirect-error.ts","../node_modules/next/src/server/app-render/async-local-storage.ts","../node_modules/next/src/server/app-render/action-async-storage-instance.ts","../node_modules/next/src/server/app-render/action-async-storage.external.ts","../node_modules/next/src/client/components/redirect.ts","../node_modules/next/src/client/components/http-access-fallback/http-access-fallback.ts","../node_modules/next/src/client/components/not-found.ts","../node_modules/next/src/client/components/forbidden.ts","../node_modules/next/src/client/components/unauthorized.ts","../node_modules/next/src/server/dynamic-rendering-utils.ts","../node_modules/next/src/server/lib/router-utils/is-postpone.ts","../node_modules/next/src/shared/lib/lazy-dynamic/bailout-to-csr.ts","../node_modules/next/src/client/components/is-next-router-error.ts","../node_modules/next/src/client/components/hooks-server-context.ts","../node_modules/next/src/client/components/static-generation-bailout.ts","../node_modules/next/src/server/app-render/work-unit-async-storage-instance.ts","../node_modules/next/src/client/components/app-router-headers.ts","../node_modules/next/src/shared/lib/invariant-error.ts","../node_modules/next/src/server/app-render/work-unit-async-storage.external.ts","../node_modules/next/src/server/app-render/work-async-storage-instance.ts","../node_modules/next/src/server/app-render/work-async-storage.external.ts","../node_modules/next/src/lib/framework/boundary-constants.tsx","../node_modules/next/src/lib/scheduler.ts","../node_modules/next/src/server/app-render/dynamic-rendering.ts","../node_modules/next/src/client/components/unstable-rethrow.server.ts","../node_modules/next/src/client/components/unstable-rethrow.browser.ts","../node_modules/next/src/client/components/unstable-rethrow.ts","../node_modules/next/src/client/components/navigation.react-server.ts","../node_modules/next/src/client/components/navigation.ts","../node_modules/next/navigation.js","../src/app/types/colors.ts","../src/app/utils/colorUtils.ts","../src/app/components/Button/Button.tsx","../src/app/components/Input/Input.tsx","../src/app/components/DatePicker/DatePicker.tsx","../src/app/components/LanguageSelector/flags/FlagEN.tsx","../src/app/components/LanguageSelector/flags/FlagES.tsx","../src/app/components/LanguageSelector/flags/FlagDE.tsx","../src/app/components/LanguageSelector/flags/FlagFR.tsx","../src/app/components/LanguageSelector/flags/FlagIT.tsx","../src/app/components/LanguageSelector/flags/FlagJA.tsx","../src/app/components/LanguageSelector/flags/FlagPT.tsx","../src/app/components/LanguageSelector/flags/FlagRU.tsx","../src/app/components/LanguageSelector/flags/FlagZH.tsx","../src/app/constants/components/languageselector/languages.constants.ts","../src/app/constants/components/table/styles.constants.ts","../src/app/constants/components/modal/styles.constants.ts","../src/app/constants/components/gallery/styles.constants.ts","../src/app/components/LanguageSelector/LanguageSelector.tsx","../src/app/components/ThemeSelector/icons/ThemeIcon.tsx","../src/app/components/ThemeSelector/ThemeSelector.tsx","../src/app/constants/components/actionicon/styles.constants.ts","../src/app/components/ActionIcon/ActionIcon.tsx","../src/app/components/Loader/Loader.tsx","../src/app/components/Table/Table.tsx","../src/app/components/BaseModal/BaseModal.tsx","../src/app/components/ConfirmationModal/ConfirmationModal.tsx","../src/app/components/SideBar/SideBar.tsx","../src/app/components/NavBar/NavBar.tsx","../src/app/components/Gallery/ImagePlaceholder.tsx","../src/app/components/Gallery/Gallery.tsx"],"names":["exports","nodeInterop","AppRouterContext","GlobalLayoutRouterContext","LayoutRouterContext","MissingSlotContext","TemplateContext","React","createContext","process","env","NODE_ENV","displayName","Set","ReadonlyURLSearchParams","ReadonlyURLSearchParamsError","Error","constructor","URLSearchParams","append","delete","set","sort","NavigationPromisesContext","PathParamsContext","PathnameContext","SearchParamsContext","createDevToolsInstrumentedPromise","value","promise","Promise","resolve","status","DEFAULT_SEGMENT_KEY","NOT_FOUND_SEGMENT_KEY","PAGE_SEGMENT_KEY","addSearchParamsIfPageSegment","computeSelectedLayoutSegment","getSegmentValue","getSelectedLayoutSegmentPath","isGroupSegment","isParallelRouteSegment","segment","Array","isArray","endsWith","startsWith","searchParams","isPageSegment","includes","stringifiedQuery","JSON","stringify","segments","parallelRouteKey","length","rawSegment","tree","first","segmentPath","node","parallelRoutes","children","Object","values","segmentValue","push","ServerInsertedHTMLContext","useServerInsertedHTML","callback","addInsertedServerHTMLCallback","useContext","UnrecognizedActionError","unstable_isUnrecognizedActionError","args","name","error","RedirectStatusCode","REDIRECT_ERROR_CODE","RedirectType","isRedirectError","digest","split","errorCode","type","destination","slice","join","at","statusCode","Number","isNaN","bindSnapshot","createAsyncLocalStorage","createSnapshot","sharedAsyncLocalStorageNotAvailableError","FakeAsyncLocalStorage","disable","getStore","undefined","run","exit","enterWith","bind","fn","maybeGlobalAsyncLocalStorage","globalThis","AsyncLocalStorage","snapshot","actionAsyncStorageInstance","actionAsyncStorage","getRedirectError","getRedirectStatusCodeFromError","getRedirectTypeFromError","getURLFromRedirectError","permanentRedirect","redirect","window","require","url","TemporaryRedirect","isAction","replace","PermanentRedirect","HTTPAccessErrorStatus","HTTP_ERROR_FALLBACK_ERROR_CODE","getAccessFallbackErrorTypeByStatus","getAccessFallbackHTTPStatus","isHTTPAccessFallbackError","NOT_FOUND","FORBIDDEN","UNAUTHORIZED","ALLOWED_CODES","prefix","httpStatus","has","notFound","DIGEST","forbidden","__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS","unauthorized","isHangingPromiseRejectionError","makeDevtoolsIOAwarePromise","makeHangingPromise","err","HANGING_PROMISE_REJECTION","HangingPromiseRejectionError","route","expression","abortListenersBySignal","WeakMap","signal","aborted","reject","hangingPromise","_","boundRejection","currentListeners","get","listeners","addEventListener","i","once","catch","ignoreReject","underlying","requestStore","stage","stagedRendering","delayUntilStage","setTimeout","isPostpone","REACT_POSTPONE_TYPE","Symbol","for","$$typeof","BailoutToCSRError","isBailoutToCSRError","BAILOUT_TO_CSR","reason","isNextRouterError","DynamicServerError","isDynamicServerError","DYNAMIC_ERROR_CODE","description","StaticGenBailoutError","isStaticGenBailoutError","NEXT_STATIC_GEN_BAILOUT","code","workUnitAsyncStorageInstance","ACTION_HEADER","FLIGHT_HEADERS","NEXT_ACTION_NOT_FOUND_HEADER","NEXT_ACTION_REVALIDATED_HEADER","NEXT_DID_POSTPONE_HEADER","NEXT_HMR_REFRESH_HASH_COOKIE","NEXT_HMR_REFRESH_HEADER","NEXT_HTML_REQUEST_ID_HEADER","NEXT_IS_PRERENDER_HEADER","NEXT_REQUEST_ID_HEADER","NEXT_REWRITTEN_PATH_HEADER","NEXT_REWRITTEN_QUERY_HEADER","NEXT_ROUTER_PREFETCH_HEADER","NEXT_ROUTER_SEGMENT_PREFETCH_HEADER","NEXT_ROUTER_STALE_TIME_HEADER","NEXT_ROUTER_STATE_TREE_HEADER","NEXT_RSC_UNION_QUERY","NEXT_URL","RSC_CONTENT_TYPE_HEADER","RSC_HEADER","InvariantError","message","options","getCacheSignal","getDraftModeProviderForCacheScope","getHmrRefreshHash","getPrerenderResumeDataCache","getRenderResumeDataCache","getRuntimeStagePromise","getServerComponentsHmrCache","isHmrRefresh","throwForMissingRequestStore","throwInvariantForMissingStore","workUnitAsyncStorage","callingExpression","workUnitStore","prerenderResumeDataCache","renderResumeDataCache","workStore","dev","hmrRefreshHash","cookies","serverComponentsHmrCache","isDraftMode","draftMode","cacheSignal","runtimeStagePromise","workAsyncStorageInstance","workAsyncStorage","METADATA_BOUNDARY_NAME","OUTLET_BOUNDARY_NAME","ROOT_LAYOUT_BOUNDARY_NAME","VIEWPORT_BOUNDARY_NAME","atLeastOneTask","scheduleImmediate","scheduleOnNextTick","waitAtLeastOneReactRenderTask","cb","then","NEXT_RUNTIME","nextTick","setImmediate","r","Postpone","PreludeState","abortAndThrowOnSynchronousRequestDataAccess","abortOnSynchronousPlatformIOAccess","accessedDynamicData","annotateDynamicAccess","consumeDynamicAccess","createDynamicTrackingState","createDynamicValidationState","createHangingInputAbortSignal","createRenderInBrowserAbortSignal","delayUntilRuntimeStage","formatDynamicAPIAccesses","getFirstDynamicReason","getStaticShellDisallowedDynamicReasons","isDynamicPostpone","isPrerenderInterruptedError","logDisallowedDynamicError","markCurrentScopeAsDynamic","postponeWithTracking","throwIfDisallowedDynamic","throwToInterruptStaticGeneration","trackAllowedDynamicAccess","trackDynamicDataInDynamicRender","trackDynamicHoleInRuntimeShell","trackDynamicHoleInStaticShell","useDynamicRouteParams","useDynamicSearchParams","hasPostpone","unstable_postpone","isDebugDynamicAccesses","dynamicAccesses","syncDynamicErrorWithStack","hasSuspenseAboveBody","hasDynamicMetadata","dynamicMetadata","hasDynamicViewport","hasAllowedDynamic","dynamicErrors","trackingState","store","forceDynamic","forceStatic","dynamicShouldError","dynamicTracking","revalidate","dynamicUsageDescription","dynamicUsageStack","stack","usedDynamic","prerenderStore","abortOnSynchronousDynamicDataAccess","createPrerenderInterruptedError","controller","abort","errorWithStack","prerenderSignal","assertPostpone","createPostponeReason","isDynamicPostponeReason","NEXT_PRERENDER_INTERRUPTED","serverDynamic","clientDynamic","filter","access","map","line","AbortController","inputReady","fallbackParams","fallbackRouteParams","size","use","renderSignal","hasSuspenseRegex","bodyAndImplicitTags","hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex","RegExp","hasMetadataRegex","hasViewportRegex","hasOutletRegex","componentStack","dynamicValidation","test","createErrorWithComponentOrOwnerStack","ownerStack","captureOwnerStack","console","hasReadableErrorStacks","prelude","result","unstable_rethrow","cause","useParams","usePathname","useRouter","useSearchParams","useSelectedLayoutSegment","useSelectedLayoutSegments","readonlySearchParams","useMemo","navigationPromises","pathname","router","params","context","selectedLayoutSegmentsPromises","parentTree","selectedLayoutSegments","selectedLayoutSegmentPromises","require_navigation","forwardRef","jsxs","Fragment","jsx","getLabelStyles","useState","getButtonSizeStyles","getButtonBaseStyles","useEffect","getIconSizeStyles","getIconStyles","createPortal","X","useCallback","import_navigation","getContainerStyles","getContentStyles","getOverlayStyles","useRef"],"mappings":"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","file":"index.mjs","sourcesContent":["\"use strict\";\n\nfunction _getRequireWildcardCache(nodeInterop) {\n if (typeof WeakMap !== \"function\") return null;\n\n var cacheBabelInterop = new WeakMap();\n var cacheNodeInterop = new WeakMap();\n\n return (_getRequireWildcardCache = function(nodeInterop) {\n return nodeInterop ? cacheNodeInterop : cacheBabelInterop;\n })(nodeInterop);\n}\nfunction _interop_require_wildcard(obj, nodeInterop) {\n if (!nodeInterop && obj && obj.__esModule) return obj;\n if (obj === null || typeof obj !== \"object\" && typeof obj !== \"function\") return { default: obj };\n\n var cache = _getRequireWildcardCache(nodeInterop);\n\n if (cache && cache.has(obj)) return cache.get(obj);\n\n var newObj = { __proto__: null };\n var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor;\n\n for (var key in obj) {\n if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) {\n var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null;\n if (desc && (desc.get || desc.set)) Object.defineProperty(newObj, key, desc);\n else newObj[key] = obj[key];\n }\n }\n\n newObj.default = obj;\n\n if (cache) cache.set(obj, newObj);\n\n return newObj;\n}\nexports._ = _interop_require_wildcard;\n","\"use strict\";\n\nfunction _interop_require_default(obj) {\n return obj && obj.__esModule ? obj : { default: obj };\n}\nexports._ = _interop_require_default;\n","'use client'\n\nimport type {\n FocusAndScrollRef,\n PrefetchKind,\n} from '../../client/components/router-reducer/router-reducer-types'\nimport type { Params } from '../../server/request/params'\nimport type {\n FlightRouterState,\n FlightSegmentPath,\n CacheNode,\n} from './app-router-types'\nimport React from 'react'\n\nexport interface NavigateOptions {\n scroll?: boolean\n}\n\nexport interface PrefetchOptions {\n kind: PrefetchKind\n onInvalidate?: () => void\n}\n\nexport interface AppRouterInstance {\n /**\n * Navigate to the previous history entry.\n */\n back(): void\n /**\n * Navigate to the next history entry.\n */\n forward(): void\n /**\n * Refresh the current page.\n */\n refresh(): void\n /**\n * Refresh the current page. Use in development only.\n * @internal\n */\n hmrRefresh(): void\n /**\n * Navigate to the provided href.\n * Pushes a new history entry.\n */\n push(href: string, options?: NavigateOptions): void\n /**\n * Navigate to the provided href.\n * Replaces the current history entry.\n */\n replace(href: string, options?: NavigateOptions): void\n /**\n * Prefetch the provided href.\n */\n prefetch(href: string, options?: PrefetchOptions): void\n}\n\nexport const AppRouterContext = React.createContext<AppRouterInstance | null>(\n null\n)\nexport const LayoutRouterContext = React.createContext<{\n parentTree: FlightRouterState\n parentCacheNode: CacheNode\n parentSegmentPath: FlightSegmentPath | null\n parentParams: Params\n debugNameContext: string\n url: string\n isActive: boolean\n} | null>(null)\n\nexport const GlobalLayoutRouterContext = React.createContext<{\n tree: FlightRouterState\n focusAndScrollRef: FocusAndScrollRef\n nextUrl: string | null\n previousNextUrl: string | null\n}>(null as any)\n\nexport const TemplateContext = React.createContext<React.ReactNode>(null as any)\n\nif (process.env.NODE_ENV !== 'production') {\n AppRouterContext.displayName = 'AppRouterContext'\n LayoutRouterContext.displayName = 'LayoutRouterContext'\n GlobalLayoutRouterContext.displayName = 'GlobalLayoutRouterContext'\n TemplateContext.displayName = 'TemplateContext'\n}\n\nexport const MissingSlotContext = React.createContext<Set<string>>(new Set())\n","/**\n * ReadonlyURLSearchParams implementation shared between client and server.\n * This file is intentionally not marked as 'use client' or 'use server'\n * so it can be imported by both environments.\n */\n\n/** @internal */\nclass ReadonlyURLSearchParamsError extends Error {\n constructor() {\n super(\n 'Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams'\n )\n }\n}\n\n/**\n * A read-only version of URLSearchParams that throws errors when mutation methods are called.\n * This ensures that the URLSearchParams returned by useSearchParams() cannot be mutated.\n */\nexport class ReadonlyURLSearchParams extends URLSearchParams {\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n append() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n delete() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n set() {\n throw new ReadonlyURLSearchParamsError()\n }\n /** @deprecated Method unavailable on `ReadonlyURLSearchParams`. Read more: https://nextjs.org/docs/app/api-reference/functions/use-search-params#updating-searchparams */\n sort() {\n throw new ReadonlyURLSearchParamsError()\n }\n}\n","'use client'\n\nimport { createContext } from 'react'\nimport type { Params } from '../../server/request/params'\nimport { ReadonlyURLSearchParams } from '../../client/components/readonly-url-search-params'\n\nexport const SearchParamsContext = createContext<URLSearchParams | null>(null)\nexport const PathnameContext = createContext<string | null>(null)\nexport const PathParamsContext = createContext<Params | null>(null)\n\n// Dev-only context for Suspense DevTools instrumentation\n// These promises are used to track navigation hook usage in React DevTools\nexport type InstrumentedPromise<T> = Promise<T> & {\n status: 'fulfilled'\n value: T\n displayName: string\n}\n\nexport type NavigationPromises = {\n pathname: InstrumentedPromise<string>\n searchParams: InstrumentedPromise<ReadonlyURLSearchParams>\n params: InstrumentedPromise<Params>\n // Layout segment hooks (updated at each layout boundary)\n selectedLayoutSegmentPromises?: Map<\n string,\n InstrumentedPromise<string | null>\n >\n selectedLayoutSegmentsPromises?: Map<string, InstrumentedPromise<string[]>>\n}\n\nexport const NavigationPromisesContext =\n createContext<NavigationPromises | null>(null)\n\n// Creates an instrumented promise for Suspense DevTools\n// These promises are always fulfilled and exist purely for\n// tracking in React's Suspense DevTools.\nexport function createDevToolsInstrumentedPromise<T>(\n displayName: string,\n value: T\n): InstrumentedPromise<T> {\n const promise = Promise.resolve(value) as InstrumentedPromise<T>\n promise.status = 'fulfilled'\n promise.value = value\n promise.displayName = `${displayName} (SSR)`\n return promise\n}\n\nexport { ReadonlyURLSearchParams }\n\nif (process.env.NODE_ENV !== 'production') {\n SearchParamsContext.displayName = 'SearchParamsContext'\n PathnameContext.displayName = 'PathnameContext'\n PathParamsContext.displayName = 'PathParamsContext'\n NavigationPromisesContext.displayName = 'NavigationPromisesContext'\n}\n","import type { FlightRouterState, Segment } from './app-router-types'\n\nexport function getSegmentValue(segment: Segment) {\n return Array.isArray(segment) ? segment[1] : segment\n}\n\nexport function isGroupSegment(segment: string) {\n // Use array[0] for performant purpose\n return segment[0] === '(' && segment.endsWith(')')\n}\n\nexport function isParallelRouteSegment(segment: string) {\n return segment.startsWith('@') && segment !== '@children'\n}\n\nexport function addSearchParamsIfPageSegment(\n segment: Segment,\n searchParams: Record<string, string | string[] | undefined>\n) {\n const isPageSegment = segment.includes(PAGE_SEGMENT_KEY)\n\n if (isPageSegment) {\n const stringifiedQuery = JSON.stringify(searchParams)\n return stringifiedQuery !== '{}'\n ? PAGE_SEGMENT_KEY + '?' + stringifiedQuery\n : PAGE_SEGMENT_KEY\n }\n\n return segment\n}\n\nexport function computeSelectedLayoutSegment(\n segments: string[] | null,\n parallelRouteKey: string\n): string | null {\n if (!segments || segments.length === 0) {\n return null\n }\n\n // For 'children', use first segment; for other parallel routes, use last segment\n const rawSegment =\n parallelRouteKey === 'children'\n ? segments[0]\n : segments[segments.length - 1]\n\n // If the default slot is showing, return null since it's not technically \"selected\" (it's a fallback)\n // Returning an internal value like `__DEFAULT__` would be confusing\n return rawSegment === DEFAULT_SEGMENT_KEY ? null : rawSegment\n}\n\n/** Get the canonical parameters from the current level to the leaf node. */\nexport function getSelectedLayoutSegmentPath(\n tree: FlightRouterState,\n parallelRouteKey: string,\n first = true,\n segmentPath: string[] = []\n): string[] {\n let node: FlightRouterState\n if (first) {\n // Use the provided parallel route key on the first parallel route\n node = tree[1][parallelRouteKey]\n } else {\n // After first parallel route prefer children, if there's no children pick the first parallel route.\n const parallelRoutes = tree[1]\n node = parallelRoutes.children ?? Object.values(parallelRoutes)[0]\n }\n\n if (!node) return segmentPath\n const segment = node[0]\n\n let segmentValue = getSegmentValue(segment)\n\n if (!segmentValue || segmentValue.startsWith(PAGE_SEGMENT_KEY)) {\n return segmentPath\n }\n\n segmentPath.push(segmentValue)\n\n return getSelectedLayoutSegmentPath(\n node,\n parallelRouteKey,\n false,\n segmentPath\n )\n}\n\nexport const PAGE_SEGMENT_KEY = '__PAGE__'\nexport const DEFAULT_SEGMENT_KEY = '__DEFAULT__'\nexport const NOT_FOUND_SEGMENT_KEY = '/_not-found'\n","'use client'\n\nimport React, { useContext } from 'react'\n\nexport type ServerInsertedHTMLHook = (callbacks: () => React.ReactNode) => void\n\n// Use `React.createContext` to avoid errors from the RSC checks because\n// it can't be imported directly in Server Components:\n//\n// import { createContext } from 'react'\n//\n// More info: https://github.com/vercel/next.js/pull/40686\nexport const ServerInsertedHTMLContext =\n React.createContext<ServerInsertedHTMLHook | null>(null as any)\n\nexport function useServerInsertedHTML(callback: () => React.ReactNode): void {\n const addInsertedServerHTMLCallback = useContext(ServerInsertedHTMLContext)\n // Should have no effects on client where there's no flush effects provider\n if (addInsertedServerHTMLCallback) {\n addInsertedServerHTMLCallback(callback)\n }\n}\n","export class UnrecognizedActionError extends Error {\n constructor(...args: ConstructorParameters<typeof Error>) {\n super(...args)\n this.name = 'UnrecognizedActionError'\n }\n}\n\n/**\n * Check whether a server action call failed because the server action was not recognized by the server.\n * This can happen if the client and the server are not from the same deployment.\n *\n * Example usage:\n * ```ts\n * try {\n * await myServerAction();\n * } catch (err) {\n * if (unstable_isUnrecognizedActionError(err)) {\n * // The client is from a different deployment than the server.\n * // Reloading the page will fix this mismatch.\n * window.alert(\"Please refresh the page and try again\");\n * return;\n * }\n * }\n * ```\n * */\nexport function unstable_isUnrecognizedActionError(\n error: unknown\n): error is UnrecognizedActionError {\n return !!(\n error &&\n typeof error === 'object' &&\n error instanceof UnrecognizedActionError\n )\n}\n","export enum RedirectStatusCode {\n SeeOther = 303,\n TemporaryRedirect = 307,\n PermanentRedirect = 308,\n}\n","import { RedirectStatusCode } from './redirect-status-code'\n\nexport const REDIRECT_ERROR_CODE = 'NEXT_REDIRECT'\n\nexport enum RedirectType {\n push = 'push',\n replace = 'replace',\n}\n\nexport type RedirectError = Error & {\n digest: `${typeof REDIRECT_ERROR_CODE};${RedirectType};${string};${RedirectStatusCode};`\n}\n\n/**\n * Checks an error to determine if it's an error generated by the\n * `redirect(url)` helper.\n *\n * @param error the error that may reference a redirect error\n * @returns true if the error is a redirect error\n */\nexport function isRedirectError(error: unknown): error is RedirectError {\n if (\n typeof error !== 'object' ||\n error === null ||\n !('digest' in error) ||\n typeof error.digest !== 'string'\n ) {\n return false\n }\n\n const digest = error.digest.split(';')\n const [errorCode, type] = digest\n const destination = digest.slice(2, -2).join(';')\n const status = digest.at(-2)\n\n const statusCode = Number(status)\n\n return (\n errorCode === REDIRECT_ERROR_CODE &&\n (type === 'replace' || type === 'push') &&\n typeof destination === 'string' &&\n !isNaN(statusCode) &&\n statusCode in RedirectStatusCode\n )\n}\n","import type { AsyncLocalStorage } from 'async_hooks'\n\nconst sharedAsyncLocalStorageNotAvailableError = new Error(\n 'Invariant: AsyncLocalStorage accessed in runtime where it is not available'\n)\n\nclass FakeAsyncLocalStorage<Store extends {}>\n implements AsyncLocalStorage<Store>\n{\n disable(): void {\n throw sharedAsyncLocalStorageNotAvailableError\n }\n\n getStore(): Store | undefined {\n // This fake implementation of AsyncLocalStorage always returns `undefined`.\n return undefined\n }\n\n run<R>(): R {\n throw sharedAsyncLocalStorageNotAvailableError\n }\n\n exit<R>(): R {\n throw sharedAsyncLocalStorageNotAvailableError\n }\n\n enterWith(): void {\n throw sharedAsyncLocalStorageNotAvailableError\n }\n\n static bind<T>(fn: T): T {\n return fn\n }\n}\n\nconst maybeGlobalAsyncLocalStorage =\n typeof globalThis !== 'undefined' && (globalThis as any).AsyncLocalStorage\n\nexport function createAsyncLocalStorage<\n Store extends {},\n>(): AsyncLocalStorage<Store> {\n if (maybeGlobalAsyncLocalStorage) {\n return new maybeGlobalAsyncLocalStorage()\n }\n return new FakeAsyncLocalStorage()\n}\n\nexport function bindSnapshot<T>(\n // WARNING: Don't pass a named function to this argument! See: https://github.com/facebook/react/pull/34911\n fn: T\n): T {\n if (maybeGlobalAsyncLocalStorage) {\n return maybeGlobalAsyncLocalStorage.bind(fn)\n }\n return FakeAsyncLocalStorage.bind(fn)\n}\n\nexport function createSnapshot(): <R, TArgs extends any[]>(\n fn: (...args: TArgs) => R,\n ...args: TArgs\n) => R {\n if (maybeGlobalAsyncLocalStorage) {\n return maybeGlobalAsyncLocalStorage.snapshot()\n }\n return function (fn: any, ...args: any[]) {\n return fn(...args)\n }\n}\n","import type { ActionAsyncStorage } from './action-async-storage.external'\nimport { createAsyncLocalStorage } from './async-local-storage'\n\nexport const actionAsyncStorageInstance: ActionAsyncStorage =\n createAsyncLocalStorage()\n","import type { AsyncLocalStorage } from 'async_hooks'\n\n// Share the instance module in the next-shared layer\nimport { actionAsyncStorageInstance } from './action-async-storage-instance' with { 'turbopack-transition': 'next-shared' }\nexport interface ActionStore {\n readonly isAction?: boolean\n readonly isAppRoute?: boolean\n}\n\nexport type ActionAsyncStorage = AsyncLocalStorage<ActionStore>\n\nexport { actionAsyncStorageInstance as actionAsyncStorage }\n","import { RedirectStatusCode } from './redirect-status-code'\nimport {\n RedirectType,\n type RedirectError,\n isRedirectError,\n REDIRECT_ERROR_CODE,\n} from './redirect-error'\n\nconst actionAsyncStorage =\n typeof window === 'undefined'\n ? (\n require('../../server/app-render/action-async-storage.external') as typeof import('../../server/app-render/action-async-storage.external')\n ).actionAsyncStorage\n : undefined\n\nexport function getRedirectError(\n url: string,\n type: RedirectType,\n statusCode: RedirectStatusCode = RedirectStatusCode.TemporaryRedirect\n): RedirectError {\n const error = new Error(REDIRECT_ERROR_CODE) as RedirectError\n error.digest = `${REDIRECT_ERROR_CODE};${type};${url};${statusCode};`\n return error\n}\n\n/**\n * This function allows you to redirect the user to another URL. It can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a meta tag to redirect the user to the target page.\n * - In a Route Handler or Server Action, it will serve a 307/303 to the caller.\n * - In a Server Action, type defaults to 'push' and 'replace' elsewhere.\n *\n * Read more: [Next.js Docs: `redirect`](https://nextjs.org/docs/app/api-reference/functions/redirect)\n */\nexport function redirect(\n /** The URL to redirect to */\n url: string,\n type?: RedirectType\n): never {\n type ??= actionAsyncStorage?.getStore()?.isAction\n ? RedirectType.push\n : RedirectType.replace\n\n throw getRedirectError(url, type, RedirectStatusCode.TemporaryRedirect)\n}\n\n/**\n * This function allows you to redirect the user to another URL. It can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a meta tag to redirect the user to the target page.\n * - In a Route Handler or Server Action, it will serve a 308/303 to the caller.\n *\n * Read more: [Next.js Docs: `redirect`](https://nextjs.org/docs/app/api-reference/functions/redirect)\n */\nexport function permanentRedirect(\n /** The URL to redirect to */\n url: string,\n type: RedirectType = RedirectType.replace\n): never {\n throw getRedirectError(url, type, RedirectStatusCode.PermanentRedirect)\n}\n\n/**\n * Returns the encoded URL from the error if it's a RedirectError, null\n * otherwise. Note that this does not validate the URL returned.\n *\n * @param error the error that may be a redirect error\n * @return the url if the error was a redirect error\n */\nexport function getURLFromRedirectError(error: RedirectError): string\nexport function getURLFromRedirectError(error: unknown): string | null {\n if (!isRedirectError(error)) return null\n\n // Slices off the beginning of the digest that contains the code and the\n // separating ';'.\n return error.digest.split(';').slice(2, -2).join(';')\n}\n\nexport function getRedirectTypeFromError(error: RedirectError): RedirectType {\n if (!isRedirectError(error)) {\n throw new Error('Not a redirect error')\n }\n\n return error.digest.split(';', 2)[1] as RedirectType\n}\n\nexport function getRedirectStatusCodeFromError(error: RedirectError): number {\n if (!isRedirectError(error)) {\n throw new Error('Not a redirect error')\n }\n\n return Number(error.digest.split(';').at(-2))\n}\n","export const HTTPAccessErrorStatus = {\n NOT_FOUND: 404,\n FORBIDDEN: 403,\n UNAUTHORIZED: 401,\n}\n\nconst ALLOWED_CODES = new Set(Object.values(HTTPAccessErrorStatus))\n\nexport const HTTP_ERROR_FALLBACK_ERROR_CODE = 'NEXT_HTTP_ERROR_FALLBACK'\n\nexport type HTTPAccessFallbackError = Error & {\n digest: `${typeof HTTP_ERROR_FALLBACK_ERROR_CODE};${string}`\n}\n\n/**\n * Checks an error to determine if it's an error generated by\n * the HTTP navigation APIs `notFound()`, `forbidden()` or `unauthorized()`.\n *\n * @param error the error that may reference a HTTP access error\n * @returns true if the error is a HTTP access error\n */\nexport function isHTTPAccessFallbackError(\n error: unknown\n): error is HTTPAccessFallbackError {\n if (\n typeof error !== 'object' ||\n error === null ||\n !('digest' in error) ||\n typeof error.digest !== 'string'\n ) {\n return false\n }\n const [prefix, httpStatus] = error.digest.split(';')\n\n return (\n prefix === HTTP_ERROR_FALLBACK_ERROR_CODE &&\n ALLOWED_CODES.has(Number(httpStatus))\n )\n}\n\nexport function getAccessFallbackHTTPStatus(\n error: HTTPAccessFallbackError\n): number {\n const httpStatus = error.digest.split(';')[1]\n return Number(httpStatus)\n}\n\nexport function getAccessFallbackErrorTypeByStatus(\n status: number\n): 'not-found' | 'forbidden' | 'unauthorized' | undefined {\n switch (status) {\n case 401:\n return 'unauthorized'\n case 403:\n return 'forbidden'\n case 404:\n return 'not-found'\n default:\n return\n }\n}\n","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n/**\n * This function allows you to render the [not-found.js file](https://nextjs.org/docs/app/api-reference/file-conventions/not-found)\n * within a route segment as well as inject a tag.\n *\n * `notFound()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * - In a Server Component, this will insert a `<meta name=\"robots\" content=\"noindex\" />` meta tag and set the status code to 404.\n * - In a Route Handler or Server Action, it will serve a 404 to the caller.\n *\n * Read more: [Next.js Docs: `notFound`](https://nextjs.org/docs/app/api-reference/functions/not-found)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};404`\n\nexport function notFound(): never {\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n\n throw error\n}\n","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n// TODO: Add `forbidden` docs\n/**\n * @experimental\n * This function allows you to render the [forbidden.js file](https://nextjs.org/docs/app/api-reference/file-conventions/forbidden)\n * within a route segment as well as inject a tag.\n *\n * `forbidden()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n * Read more: [Next.js Docs: `forbidden`](https://nextjs.org/docs/app/api-reference/functions/forbidden)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};403`\n\nexport function forbidden(): never {\n if (!process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS) {\n throw new Error(\n `\\`forbidden()\\` is experimental and only allowed to be enabled when \\`experimental.authInterrupts\\` is enabled.`\n )\n }\n\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n throw error\n}\n","import {\n HTTP_ERROR_FALLBACK_ERROR_CODE,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\n\n// TODO: Add `unauthorized` docs\n/**\n * @experimental\n * This function allows you to render the [unauthorized.js file](https://nextjs.org/docs/app/api-reference/file-conventions/unauthorized)\n * within a route segment as well as inject a tag.\n *\n * `unauthorized()` can be used in\n * [Server Components](https://nextjs.org/docs/app/building-your-application/rendering/server-components),\n * [Route Handlers](https://nextjs.org/docs/app/building-your-application/routing/route-handlers), and\n * [Server Actions](https://nextjs.org/docs/app/building-your-application/data-fetching/server-actions-and-mutations).\n *\n *\n * Read more: [Next.js Docs: `unauthorized`](https://nextjs.org/docs/app/api-reference/functions/unauthorized)\n */\n\nconst DIGEST = `${HTTP_ERROR_FALLBACK_ERROR_CODE};401`\n\nexport function unauthorized(): never {\n if (!process.env.__NEXT_EXPERIMENTAL_AUTH_INTERRUPTS) {\n throw new Error(\n `\\`unauthorized()\\` is experimental and only allowed to be used when \\`experimental.authInterrupts\\` is enabled.`\n )\n }\n\n const error = new Error(DIGEST) as HTTPAccessFallbackError\n ;(error as HTTPAccessFallbackError).digest = DIGEST\n throw error\n}\n","import type { NonStaticRenderStage } from './app-render/staged-rendering'\nimport type { RequestStore } from './app-render/work-unit-async-storage.external'\n\nexport function isHangingPromiseRejectionError(\n err: unknown\n): err is HangingPromiseRejectionError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === HANGING_PROMISE_REJECTION\n}\n\nconst HANGING_PROMISE_REJECTION = 'HANGING_PROMISE_REJECTION'\n\nclass HangingPromiseRejectionError extends Error {\n public readonly digest = HANGING_PROMISE_REJECTION\n\n constructor(\n public readonly route: string,\n public readonly expression: string\n ) {\n super(\n `During prerendering, ${expression} rejects when the prerender is complete. Typically these errors are handled by React but if you move ${expression} to a different context by using \\`setTimeout\\`, \\`after\\`, or similar functions you may observe this error and you should handle it in that context. This occurred at route \"${route}\".`\n )\n }\n}\n\ntype AbortListeners = Array<(err: unknown) => void>\nconst abortListenersBySignal = new WeakMap<AbortSignal, AbortListeners>()\n\n/**\n * This function constructs a promise that will never resolve. This is primarily\n * useful for cacheComponents where we use promise resolution timing to determine which\n * parts of a render can be included in a prerender.\n *\n * @internal\n */\nexport function makeHangingPromise<T>(\n signal: AbortSignal,\n route: string,\n expression: string\n): Promise<T> {\n if (signal.aborted) {\n return Promise.reject(new HangingPromiseRejectionError(route, expression))\n } else {\n const hangingPromise = new Promise<T>((_, reject) => {\n const boundRejection = reject.bind(\n null,\n new HangingPromiseRejectionError(route, expression)\n )\n let currentListeners = abortListenersBySignal.get(signal)\n if (currentListeners) {\n currentListeners.push(boundRejection)\n } else {\n const listeners = [boundRejection]\n abortListenersBySignal.set(signal, listeners)\n signal.addEventListener(\n 'abort',\n () => {\n for (let i = 0; i < listeners.length; i++) {\n listeners[i]()\n }\n },\n { once: true }\n )\n }\n })\n // We are fine if no one actually awaits this promise. We shouldn't consider this an unhandled rejection so\n // we attach a noop catch handler here to suppress this warning. If you actually await somewhere or construct\n // your own promise out of it you'll need to ensure you handle the error when it rejects.\n hangingPromise.catch(ignoreReject)\n return hangingPromise\n }\n}\n\nfunction ignoreReject() {}\n\nexport function makeDevtoolsIOAwarePromise<T>(\n underlying: T,\n requestStore: RequestStore,\n stage: NonStaticRenderStage\n): Promise<T> {\n if (requestStore.stagedRendering) {\n // We resolve each stage in a timeout, so React DevTools will pick this up as IO.\n return requestStore.stagedRendering.delayUntilStage(\n stage,\n undefined,\n underlying\n )\n }\n // in React DevTools if we resolve in a setTimeout we will observe\n // the promise resolution as something that can suspend a boundary or root.\n return new Promise<T>((resolve) => {\n // Must use setTimeout to be considered IO React DevTools. setImmediate will not work.\n setTimeout(() => {\n resolve(underlying)\n }, 0)\n })\n}\n","const REACT_POSTPONE_TYPE: symbol = Symbol.for('react.postpone')\n\nexport function isPostpone(error: any): boolean {\n return (\n typeof error === 'object' &&\n error !== null &&\n error.$$typeof === REACT_POSTPONE_TYPE\n )\n}\n","// This has to be a shared module which is shared between client component error boundary and dynamic component\nconst BAILOUT_TO_CSR = 'BAILOUT_TO_CLIENT_SIDE_RENDERING'\n\n/** An error that should be thrown when we want to bail out to client-side rendering. */\nexport class BailoutToCSRError extends Error {\n public readonly digest = BAILOUT_TO_CSR\n\n constructor(public readonly reason: string) {\n super(`Bail out to client-side rendering: ${reason}`)\n }\n}\n\n/** Checks if a passed argument is an error that is thrown if we want to bail out to client-side rendering. */\nexport function isBailoutToCSRError(err: unknown): err is BailoutToCSRError {\n if (typeof err !== 'object' || err === null || !('digest' in err)) {\n return false\n }\n\n return err.digest === BAILOUT_TO_CSR\n}\n","import {\n isHTTPAccessFallbackError,\n type HTTPAccessFallbackError,\n} from './http-access-fallback/http-access-fallback'\nimport { isRedirectError, type RedirectError } from './redirect-error'\n\n/**\n * Returns true if the error is a navigation signal error. These errors are\n * thrown by user code to perform navigation operations and interrupt the React\n * render.\n */\nexport function isNextRouterError(\n error: unknown\n): error is RedirectError | HTTPAccessFallbackError {\n return isRedirectError(error) || isHTTPAccessFallbackError(error)\n}\n","const DYNAMIC_ERROR_CODE = 'DYNAMIC_SERVER_USAGE'\n\nexport class DynamicServerError extends Error {\n digest: typeof DYNAMIC_ERROR_CODE = DYNAMIC_ERROR_CODE\n\n constructor(public readonly description: string) {\n super(`Dynamic server usage: ${description}`)\n }\n}\n\nexport function isDynamicServerError(err: unknown): err is DynamicServerError {\n if (\n typeof err !== 'object' ||\n err === null ||\n !('digest' in err) ||\n typeof err.digest !== 'string'\n ) {\n return false\n }\n\n return err.digest === DYNAMIC_ERROR_CODE\n}\n","const NEXT_STATIC_GEN_BAILOUT = 'NEXT_STATIC_GEN_BAILOUT'\n\nexport class StaticGenBailoutError extends Error {\n public readonly code = NEXT_STATIC_GEN_BAILOUT\n}\n\nexport function isStaticGenBailoutError(\n error: unknown\n): error is StaticGenBailoutError {\n if (typeof error !== 'object' || error === null || !('code' in error)) {\n return false\n }\n\n return error.code === NEXT_STATIC_GEN_BAILOUT\n}\n","import { createAsyncLocalStorage } from './async-local-storage'\nimport type { WorkUnitAsyncStorage } from './work-unit-async-storage.external'\n\nexport const workUnitAsyncStorageInstance: WorkUnitAsyncStorage =\n createAsyncLocalStorage()\n","export const RSC_HEADER = 'rsc' as const\nexport const ACTION_HEADER = 'next-action' as const\n// TODO: Instead of sending the full router state, we only need to send the\n// segment path. Saves bytes. Then we could also use this field for segment\n// prefetches, which also need to specify a particular segment.\nexport const NEXT_ROUTER_STATE_TREE_HEADER = 'next-router-state-tree' as const\nexport const NEXT_ROUTER_PREFETCH_HEADER = 'next-router-prefetch' as const\n// This contains the path to the segment being prefetched.\n// TODO: If we change next-router-state-tree to be a segment path, we can use\n// that instead. Then next-router-prefetch and next-router-segment-prefetch can\n// be merged into a single enum.\nexport const NEXT_ROUTER_SEGMENT_PREFETCH_HEADER =\n 'next-router-segment-prefetch' as const\nexport const NEXT_HMR_REFRESH_HEADER = 'next-hmr-refresh' as const\nexport const NEXT_HMR_REFRESH_HASH_COOKIE = '__next_hmr_refresh_hash__' as const\nexport const NEXT_URL = 'next-url' as const\nexport const RSC_CONTENT_TYPE_HEADER = 'text/x-component' as const\n\nexport const FLIGHT_HEADERS = [\n RSC_HEADER,\n NEXT_ROUTER_STATE_TREE_HEADER,\n NEXT_ROUTER_PREFETCH_HEADER,\n NEXT_HMR_REFRESH_HEADER,\n NEXT_ROUTER_SEGMENT_PREFETCH_HEADER,\n] as const\n\nexport const NEXT_RSC_UNION_QUERY = '_rsc' as const\n\nexport const NEXT_ROUTER_STALE_TIME_HEADER = 'x-nextjs-stale-time' as const\nexport const NEXT_DID_POSTPONE_HEADER = 'x-nextjs-postponed' as const\nexport const NEXT_REWRITTEN_PATH_HEADER = 'x-nextjs-rewritten-path' as const\nexport const NEXT_REWRITTEN_QUERY_HEADER = 'x-nextjs-rewritten-query' as const\nexport const NEXT_IS_PRERENDER_HEADER = 'x-nextjs-prerender' as const\nexport const NEXT_ACTION_NOT_FOUND_HEADER = 'x-nextjs-action-not-found' as const\nexport const NEXT_REQUEST_ID_HEADER = 'x-nextjs-request-id' as const\nexport const NEXT_HTML_REQUEST_ID_HEADER = 'x-nextjs-html-request-id' as const\n\n// TODO: Should this include nextjs in the name, like the others?\nexport const NEXT_ACTION_REVALIDATED_HEADER = 'x-action-revalidated' as const\n","export class InvariantError extends Error {\n constructor(message: string, options?: ErrorOptions) {\n super(\n `Invariant: ${message.endsWith('.') ? message : message + '.'} This is a bug in Next.js.`,\n options\n )\n this.name = 'InvariantError'\n }\n}\n","import type { AsyncLocalStorage } from 'async_hooks'\nimport type { DraftModeProvider } from '../async-storage/draft-mode-provider'\nimport type { ResponseCookies } from '../web/spec-extension/cookies'\nimport type { ReadonlyHeaders } from '../web/spec-extension/adapters/headers'\nimport type { ReadonlyRequestCookies } from '../web/spec-extension/adapters/request-cookies'\nimport type { CacheSignal } from './cache-signal'\nimport type { DynamicTrackingState } from './dynamic-rendering'\nimport type { OpaqueFallbackRouteParams } from '../request/fallback-params'\n\n// Share the instance module in the next-shared layer\nimport { workUnitAsyncStorageInstance } from './work-unit-async-storage-instance' with { 'turbopack-transition': 'next-shared' }\nimport type { ServerComponentsHmrCache } from '../response-cache'\nimport type {\n RenderResumeDataCache,\n PrerenderResumeDataCache,\n} from '../resume-data-cache/resume-data-cache'\nimport type { Params } from '../request/params'\nimport type { ImplicitTags } from '../lib/implicit-tags'\nimport type { WorkStore } from './work-async-storage.external'\nimport { NEXT_HMR_REFRESH_HASH_COOKIE } from '../../client/components/app-router-headers'\nimport { InvariantError } from '../../shared/lib/invariant-error'\nimport type { StagedRenderingController } from './staged-rendering'\n\nexport type WorkUnitPhase = 'action' | 'render' | 'after'\n\nexport interface CommonWorkUnitStore {\n /** NOTE: Will be mutated as phases change */\n phase: WorkUnitPhase\n readonly implicitTags: ImplicitTags\n}\n\nexport interface RequestStore extends CommonWorkUnitStore {\n readonly type: 'request'\n\n /**\n * The URL of the request. This only specifies the pathname and the search\n * part of the URL.\n */\n readonly url: {\n /**\n * The pathname of the requested URL.\n */\n readonly pathname: string\n\n /**\n * The search part of the requested URL. If the request did not provide a\n * search part, this will be an empty string.\n */\n readonly search: string\n }\n\n readonly headers: ReadonlyHeaders\n // This is mutable because we need to reassign it when transitioning from the action phase to the render phase.\n // The cookie object itself is deliberately read only and thus can't be updated.\n cookies: ReadonlyRequestCookies\n readonly mutableCookies: ResponseCookies\n readonly userspaceMutableCookies: ResponseCookies\n readonly draftMode: DraftModeProvider\n readonly isHmrRefresh?: boolean\n readonly serverComponentsHmrCache?: ServerComponentsHmrCache\n\n readonly rootParams: Params\n\n /**\n * The resume data cache for this request. This will be a immutable cache.\n */\n renderResumeDataCache: RenderResumeDataCache | null\n\n // DEV-only\n usedDynamic?: boolean\n devFallbackParams?: OpaqueFallbackRouteParams | null\n stagedRendering?: StagedRenderingController | null\n asyncApiPromises?: DevAsyncApiPromises\n cacheSignal?: CacheSignal | null\n prerenderResumeDataCache?: PrerenderResumeDataCache | null\n}\n\ntype DevAsyncApiPromises = {\n cookies: Promise<ReadonlyRequestCookies>\n mutableCookies: Promise<ReadonlyRequestCookies>\n headers: Promise<ReadonlyHeaders>\n\n sharedParamsParent: Promise<string>\n sharedSearchParamsParent: Promise<string>\n\n connection: Promise<undefined>\n}\n\n/**\n * The Prerender store is for tracking information related to prerenders.\n *\n * It can be used for both RSC and SSR prerendering and should be scoped as close\n * to the individual `renderTo...` API call as possible. To keep the type simple\n * we don't distinguish between RSC and SSR prerendering explicitly but instead\n * use conditional object properties to infer which mode we are in. For instance cache tracking\n * only needs to happen during the RSC prerender when we are prospectively prerendering\n * to fill all caches.\n */\nexport type PrerenderStoreModern =\n | PrerenderStoreModernClient\n | PrerenderStoreModernServer\n | PrerenderStoreModernRuntime\n\n/** Like `PrerenderStoreModern`, but only including static prerenders (i.e. not runtime prerenders) */\nexport type StaticPrerenderStoreModern = Exclude<\n PrerenderStoreModern,\n PrerenderStoreModernRuntime\n>\n\nexport interface PrerenderStoreModernClient\n extends PrerenderStoreModernCommon,\n StaticPrerenderStoreCommon {\n readonly type: 'prerender-client'\n}\n\nexport interface PrerenderStoreModernServer\n extends PrerenderStoreModernCommon,\n StaticPrerenderStoreCommon {\n readonly type: 'prerender'\n}\n\nexport interface PrerenderStoreModernRuntime\n extends PrerenderStoreModernCommon {\n readonly type: 'prerender-runtime'\n\n /**\n * A runtime prerender resolves APIs in two tasks:\n *\n * 1. Static data (available in a static prerender)\n * 2. Runtime data (available in a runtime prerender)\n *\n * This separation is achieved by awaiting this promise in \"runtime\" APIs.\n * In the final prerender, the promise will be resolved during the second task,\n * and the render will be aborted in the task that follows it.\n */\n readonly runtimeStagePromise: Promise<void> | null\n\n readonly headers: RequestStore['headers']\n readonly cookies: RequestStore['cookies']\n readonly draftMode: RequestStore['draftMode']\n}\n\nexport interface RevalidateStore {\n // Collected revalidate times and tags for this document during the prerender.\n revalidate: number // in seconds. 0 means dynamic. INFINITE_CACHE and higher means never revalidate.\n expire: number // server expiration time\n stale: number // client expiration time\n tags: null | string[]\n}\n\ninterface PrerenderStoreModernCommon\n extends CommonWorkUnitStore,\n RevalidateStore {\n /**\n * The render signal is aborted after React's `prerender` function is aborted\n * (using a separate signal), which happens in two cases:\n *\n * 1. When all caches are filled during the prospective prerender.\n * 2. When the final prerender is aborted immediately after the prerender was\n * started.\n *\n * It can be used to reject any pending I/O, including hanging promises. This\n * allows React to properly track the async I/O in dev mode, which yields\n * better owner stacks for dynamic validation errors.\n */\n readonly renderSignal: AbortSignal\n\n /**\n * This is the AbortController which represents the boundary between Prerender\n * and dynamic. In some renders it is the same as the controller for React,\n * but in others it is a separate controller. It should be aborted whenever we\n * are no longer in the prerender phase of rendering. Typically this is after\n * one task, or when you call a sync API which requires the prerender to end\n * immediately.\n */\n readonly controller: AbortController\n\n /**\n * When not null, this signal is used to track cache reads during prerendering\n * and to await all cache reads completing, before aborting the prerender.\n */\n readonly cacheSignal: null | CacheSignal\n\n /**\n * During some prerenders we want to track dynamic access.\n */\n readonly dynamicTracking: null | DynamicTrackingState\n\n readonly rootParams: Params\n\n /**\n * A mutable resume data cache for this prerender.\n */\n prerenderResumeDataCache: PrerenderResumeDataCache | null\n\n /**\n * An immutable resume data cache for this prerender. This may be provided\n * instead of the `prerenderResumeDataCache` if the prerender is not supposed\n * to fill caches, and only read from prefilled caches, e.g. when prerendering\n * an optional fallback shell.\n */\n renderResumeDataCache: RenderResumeDataCache | null\n\n /**\n * The HMR refresh hash is only provided in dev mode. It is needed for the dev\n * warmup render to ensure that the cache keys will be identical for the\n * subsequent dynamic render.\n */\n readonly hmrRefreshHash: string | undefined\n}\n\ninterface StaticPrerenderStoreCommon {\n /**\n * The set of unknown route parameters. Accessing these will be tracked as\n * a dynamic access.\n */\n readonly fallbackRouteParams: OpaqueFallbackRouteParams | null\n\n /**\n * When true, the page is prerendered as a fallback shell, while allowing any\n * dynamic accesses to result in an empty shell. This is the case when there\n * are also routes prerendered with a more complete set of params.\n * Prerendering those routes would catch any invalid dynamic accesses.\n */\n readonly allowEmptyStaticShell: boolean\n}\n\nexport interface PrerenderStorePPR\n extends CommonWorkUnitStore,\n RevalidateStore {\n readonly type: 'prerender-ppr'\n readonly rootParams: Params\n readonly dynamicTracking: null | DynamicTrackingState\n\n /**\n * The set of unknown route parameters. Accessing these will be tracked as\n * a dynamic access.\n */\n readonly fallbackRouteParams: OpaqueFallbackRouteParams | null\n\n /**\n * The resume data cache for this prerender.\n */\n prerenderResumeDataCache: PrerenderResumeDataCache\n}\n\nexport interface PrerenderStoreLegacy\n extends CommonWorkUnitStore,\n RevalidateStore {\n readonly type: 'prerender-legacy'\n readonly rootParams: Params\n}\n\nexport type PrerenderStore =\n | PrerenderStoreLegacy\n | PrerenderStorePPR\n | PrerenderStoreModern\n\n// /** Like `PrerenderStoreModern`, but only including static prerenders (i.e. not runtime prerenders) */\nexport type StaticPrerenderStore = Exclude<\n PrerenderStore,\n PrerenderStoreModernRuntime\n>\n\nexport interface CommonCacheStore\n extends Omit<CommonWorkUnitStore, 'implicitTags'> {\n /**\n * A cache work unit store might not always have an outer work unit store,\n * from which implicit tags could be inherited.\n */\n readonly implicitTags: ImplicitTags | undefined\n /**\n * Draft mode is only available if the outer work unit store is a request\n * store and draft mode is enabled.\n */\n readonly draftMode: DraftModeProvider | undefined\n}\n\nexport interface CommonUseCacheStore extends CommonCacheStore, RevalidateStore {\n explicitRevalidate: undefined | number // explicit revalidate time from cacheLife() calls\n explicitExpire: undefined | number // server expiration time\n explicitStale: undefined | number // client expiration time\n readonly hmrRefreshHash: string | undefined\n readonly isHmrRefresh: boolean\n readonly serverComponentsHmrCache: ServerComponentsHmrCache | undefined\n readonly forceRevalidate: boolean\n}\n\nexport interface PublicUseCacheStore extends CommonUseCacheStore {\n readonly type: 'cache'\n}\n\nexport interface PrivateUseCacheStore extends CommonUseCacheStore {\n readonly type: 'private-cache'\n\n /**\n * A runtime prerender resolves APIs in two tasks:\n *\n * 1. Static data (available in a static prerender)\n * 2. Runtime data (available in a runtime prerender)\n *\n * This separation is achieved by awaiting this promise in \"runtime\" APIs.\n * In the final prerender, the promise will be resolved during the second task,\n * and the render will be aborted in the task that follows it.\n */\n readonly runtimeStagePromise: Promise<void> | null\n\n readonly headers: ReadonlyHeaders\n readonly cookies: ReadonlyRequestCookies\n\n /**\n * Private caches don't currently need to track root params in the cache key\n * because they're not persisted anywhere, so we can allow root params access\n * (unlike public caches)\n */\n readonly rootParams: Params\n}\n\nexport type UseCacheStore = PublicUseCacheStore | PrivateUseCacheStore\n\nexport interface UnstableCacheStore extends CommonCacheStore {\n readonly type: 'unstable-cache'\n}\n\n/**\n * The Cache store is for tracking information inside a \"use cache\" or\n * unstable_cache context. A cache store shadows an outer request store (if\n * present) as a work unit, so that we never accidentally expose any request or\n * page specific information to cache functions, unless it's explicitly desired.\n * For those exceptions, the data is copied over from the request store to the\n * cache store, instead of generally making the request store available to cache\n * functions.\n */\nexport type CacheStore = UseCacheStore | UnstableCacheStore\n\nexport type WorkUnitStore = RequestStore | CacheStore | PrerenderStore\n\nexport type WorkUnitAsyncStorage = AsyncLocalStorage<WorkUnitStore>\n\nexport { workUnitAsyncStorageInstance as workUnitAsyncStorage }\n\nexport function throwForMissingRequestStore(callingExpression: string): never {\n throw new Error(\n `\\`${callingExpression}\\` was called outside a request scope. Read more: https://nextjs.org/docs/messages/next-dynamic-api-wrong-context`\n )\n}\n\nexport function throwInvariantForMissingStore(): never {\n throw new InvariantError('Expected workUnitAsyncStorage to have a store.')\n}\n\nexport function getPrerenderResumeDataCache(\n workUnitStore: WorkUnitStore\n): PrerenderResumeDataCache | null {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-ppr':\n return workUnitStore.prerenderResumeDataCache\n case 'prerender-client':\n // TODO eliminate fetch caching in client scope and stop exposing this data\n // cache during SSR.\n return workUnitStore.prerenderResumeDataCache\n case 'request': {\n // In dev, we might fill caches even during a dynamic request.\n if (workUnitStore.prerenderResumeDataCache) {\n return workUnitStore.prerenderResumeDataCache\n }\n // fallthrough\n }\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n return null\n default:\n return workUnitStore satisfies never\n }\n}\n\nexport function getRenderResumeDataCache(\n workUnitStore: WorkUnitStore\n): RenderResumeDataCache | null {\n switch (workUnitStore.type) {\n case 'request':\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-client':\n if (workUnitStore.renderResumeDataCache) {\n // If we are in a prerender, we might have a render resume data cache\n // that is used to read from prefilled caches.\n return workUnitStore.renderResumeDataCache\n }\n // fallthrough\n case 'prerender-ppr':\n // Otherwise we return the mutable resume data cache here as an immutable\n // version of the cache as it can also be used for reading.\n return workUnitStore.prerenderResumeDataCache ?? null\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'prerender-legacy':\n return null\n default:\n return workUnitStore satisfies never\n }\n}\n\nexport function getHmrRefreshHash(\n workStore: WorkStore,\n workUnitStore: WorkUnitStore\n): string | undefined {\n if (workStore.dev) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'private-cache':\n case 'prerender':\n case 'prerender-runtime':\n return workUnitStore.hmrRefreshHash\n case 'request':\n return workUnitStore.cookies.get(NEXT_HMR_REFRESH_HASH_COOKIE)?.value\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n return undefined\n}\n\nexport function isHmrRefresh(\n workStore: WorkStore,\n workUnitStore: WorkUnitStore\n): boolean {\n if (workStore.dev) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'private-cache':\n case 'request':\n return workUnitStore.isHmrRefresh ?? false\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n return false\n}\n\nexport function getServerComponentsHmrCache(\n workStore: WorkStore,\n workUnitStore: WorkUnitStore\n): ServerComponentsHmrCache | undefined {\n if (workStore.dev) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'private-cache':\n case 'request':\n return workUnitStore.serverComponentsHmrCache\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n return undefined\n}\n\n/**\n * Returns a draft mode provider only if draft mode is enabled.\n */\nexport function getDraftModeProviderForCacheScope(\n workStore: WorkStore,\n workUnitStore: WorkUnitStore\n): DraftModeProvider | undefined {\n if (workStore.isDraftMode) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n case 'prerender-runtime':\n case 'request':\n return workUnitStore.draftMode\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n return undefined\n}\n\nexport function getCacheSignal(\n workUnitStore: WorkUnitStore\n): CacheSignal | null {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-client':\n case 'prerender-runtime':\n return workUnitStore.cacheSignal\n case 'request': {\n // In dev, we might fill caches even during a dynamic request.\n if (workUnitStore.cacheSignal) {\n return workUnitStore.cacheSignal\n }\n // fallthrough\n }\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n return null\n default:\n return workUnitStore satisfies never\n }\n}\n\nexport function getRuntimeStagePromise(\n workUnitStore: WorkUnitStore\n): Promise<void> | null {\n switch (workUnitStore.type) {\n case 'prerender-runtime':\n case 'private-cache':\n return workUnitStore.runtimeStagePromise\n case 'prerender':\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'unstable-cache':\n return null\n default:\n return workUnitStore satisfies never\n }\n}\n","import type { WorkAsyncStorage } from './work-async-storage.external'\nimport { createAsyncLocalStorage } from './async-local-storage'\n\nexport const workAsyncStorageInstance: WorkAsyncStorage =\n createAsyncLocalStorage()\n","import type { AsyncLocalStorage } from 'async_hooks'\nimport type { IncrementalCache } from '../lib/incremental-cache'\nimport type { FetchMetrics } from '../base-http'\nimport type { DeepReadonly } from '../../shared/lib/deep-readonly'\nimport type { AppSegmentConfig } from '../../build/segment-config/app/app-segment-config'\nimport type { AfterContext } from '../after/after-context'\nimport type { CacheLife } from '../use-cache/cache-life'\n\n// Share the instance module in the next-shared layer\nimport { workAsyncStorageInstance } from './work-async-storage-instance' with { 'turbopack-transition': 'next-shared' }\nimport type { LazyResult } from '../lib/lazy-result'\nimport type { DigestedError } from './create-error-handler'\nimport type { ActionRevalidationKind } from '../../shared/lib/action-revalidation-kind'\n\nexport interface WorkStore {\n readonly isStaticGeneration: boolean\n\n /**\n * The page that is being rendered. This relates to the path to the page file.\n */\n readonly page: string\n\n /**\n * The route that is being rendered. This is the page property without the\n * trailing `/page` or `/route` suffix.\n */\n readonly route: string\n\n readonly incrementalCache?: IncrementalCache\n readonly cacheLifeProfiles?: { [profile: string]: CacheLife }\n\n readonly isOnDemandRevalidate?: boolean\n readonly isBuildTimePrerendering?: boolean\n\n /**\n * This is true when:\n * - source maps are generated\n * - source maps are applied\n * - minification is disabled\n */\n readonly hasReadableErrorStacks?: boolean\n\n forceDynamic?: boolean\n fetchCache?: AppSegmentConfig['fetchCache']\n\n forceStatic?: boolean\n dynamicShouldError?: boolean\n pendingRevalidates?: Record<string, Promise<any>>\n pendingRevalidateWrites?: Array<Promise<void>> // This is like pendingRevalidates but isn't used for deduping.\n readonly afterContext: AfterContext\n\n dynamicUsageDescription?: string\n dynamicUsageStack?: string\n\n /**\n * Invalid dynamic usage errors might be caught in userland. We attach them to\n * the work store to ensure we can still fail the build, or show en error in\n * dev mode.\n */\n // TODO: Collect an array of errors, and throw as AggregateError when\n // `serializeError` and the Dev Overlay support it.\n invalidDynamicUsageError?: Error\n\n nextFetchId?: number\n pathWasRevalidated?: ActionRevalidationKind\n\n /**\n * Tags that were revalidated during the current request. They need to be sent\n * to cache handlers to propagate their revalidation.\n */\n pendingRevalidatedTags?: Array<{\n tag: string\n profile?: string | { stale?: number; revalidate?: number; expire?: number }\n }>\n\n /**\n * Tags that were previously revalidated (e.g. by a redirecting server action)\n * and have already been sent to cache handlers. Retrieved cache entries that\n * include any of these tags must be discarded.\n */\n readonly previouslyRevalidatedTags: readonly string[]\n\n /**\n * This map contains lazy results so that we can evaluate them when the first\n * cache entry is read. It allows us to skip refreshing tags if no caches are\n * read at all.\n */\n readonly refreshTagsByCacheKind: Map<string, LazyResult<void>>\n\n fetchMetrics?: FetchMetrics\n shouldTrackFetchMetrics: boolean\n\n isDraftMode?: boolean\n isUnstableNoStore?: boolean\n isPrefetchRequest?: boolean\n\n buildId: string\n\n readonly reactLoadableManifest?: DeepReadonly<\n Record<string, { files: string[] }>\n >\n readonly assetPrefix?: string\n readonly nonce?: string\n\n cacheComponentsEnabled: boolean\n dev: boolean\n\n /**\n * Run the given function inside a clean AsyncLocalStorage snapshot. This is\n * useful when generating cache entries, to ensure that the cache generation\n * cannot read anything from the context we're currently executing in, which\n * might include request-specific things like `cookies()` inside a\n * `React.cache()`.\n */\n runInCleanSnapshot: <R, TArgs extends any[]>(\n fn: (...args: TArgs) => R,\n ...args: TArgs\n ) => R\n\n reactServerErrorsByDigest: Map<string, DigestedError>\n}\n\nexport type WorkAsyncStorage = AsyncLocalStorage<WorkStore>\n\nexport { workAsyncStorageInstance as workAsyncStorage }\n","export const METADATA_BOUNDARY_NAME = '__next_metadata_boundary__'\nexport const VIEWPORT_BOUNDARY_NAME = '__next_viewport_boundary__'\nexport const OUTLET_BOUNDARY_NAME = '__next_outlet_boundary__'\nexport const ROOT_LAYOUT_BOUNDARY_NAME = '__next_root_layout_boundary__'\n","export type ScheduledFn<T = void> = () => T | PromiseLike<T>\nexport type SchedulerFn<T = void> = (cb: ScheduledFn<T>) => void\n\n/**\n * Schedules a function to be called on the next tick after the other promises\n * have been resolved.\n *\n * @param cb the function to schedule\n */\nexport const scheduleOnNextTick = (cb: ScheduledFn<void>) => {\n // We use Promise.resolve().then() here so that the operation is scheduled at\n // the end of the promise job queue, we then add it to the next process tick\n // to ensure it's evaluated afterwards.\n //\n // This was inspired by the implementation of the DataLoader interface: https://github.com/graphql/dataloader/blob/d336bd15282664e0be4b4a657cb796f09bafbc6b/src/index.js#L213-L255\n //\n Promise.resolve().then(() => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n process.nextTick(cb)\n }\n })\n}\n\n/**\n * Schedules a function to be called using `setImmediate` or `setTimeout` if\n * `setImmediate` is not available (like in the Edge runtime).\n *\n * @param cb the function to schedule\n */\nexport const scheduleImmediate = (cb: ScheduledFn<void>): void => {\n if (process.env.NEXT_RUNTIME === 'edge') {\n setTimeout(cb, 0)\n } else {\n setImmediate(cb)\n }\n}\n\n/**\n * returns a promise than resolves in a future task. There is no guarantee that the task it resolves in\n * will be the next task but if you await it you can at least be sure that the current task is over and\n * most usefully that the entire microtask queue of the current task has been emptied.\n */\nexport function atLeastOneTask() {\n return new Promise<void>((resolve) => scheduleImmediate(resolve))\n}\n\n/**\n * This utility function is extracted to make it easier to find places where we are doing\n * specific timing tricks to try to schedule work after React has rendered. This is especially\n * important at the moment because Next.js uses the edge builds of React which use setTimeout to\n * schedule work when you might expect that something like setImmediate would do the trick.\n *\n * Long term we should switch to the node versions of React rendering when possible and then\n * update this to use setImmediate rather than setTimeout\n */\nexport function waitAtLeastOneReactRenderTask(): Promise<void> {\n if (process.env.NEXT_RUNTIME === 'edge') {\n return new Promise((r) => setTimeout(r, 0))\n } else {\n return new Promise((r) => setImmediate(r))\n }\n}\n","/**\n * The functions provided by this module are used to communicate certain properties\n * about the currently running code so that Next.js can make decisions on how to handle\n * the current execution in different rendering modes such as pre-rendering, resuming, and SSR.\n *\n * Today Next.js treats all code as potentially static. Certain APIs may only make sense when dynamically rendering.\n * Traditionally this meant deopting the entire render to dynamic however with PPR we can now deopt parts\n * of a React tree as dynamic while still keeping other parts static. There are really two different kinds of\n * Dynamic indications.\n *\n * The first is simply an intention to be dynamic. unstable_noStore is an example of this where\n * the currently executing code simply declares that the current scope is dynamic but if you use it\n * inside unstable_cache it can still be cached. This type of indication can be removed if we ever\n * make the default dynamic to begin with because the only way you would ever be static is inside\n * a cache scope which this indication does not affect.\n *\n * The second is an indication that a dynamic data source was read. This is a stronger form of dynamic\n * because it means that it is inappropriate to cache this at all. using a dynamic data source inside\n * unstable_cache should error. If you want to use some dynamic data inside unstable_cache you should\n * read that data outside the cache and pass it in as an argument to the cached function.\n */\n\nimport type { WorkStore } from '../app-render/work-async-storage.external'\nimport type {\n WorkUnitStore,\n PrerenderStoreLegacy,\n PrerenderStoreModern,\n PrerenderStoreModernRuntime,\n} from '../app-render/work-unit-async-storage.external'\n\n// Once postpone is in stable we should switch to importing the postpone export directly\nimport React from 'react'\n\nimport { DynamicServerError } from '../../client/components/hooks-server-context'\nimport { StaticGenBailoutError } from '../../client/components/static-generation-bailout'\nimport {\n getRuntimeStagePromise,\n throwForMissingRequestStore,\n workUnitAsyncStorage,\n} from './work-unit-async-storage.external'\nimport { workAsyncStorage } from '../app-render/work-async-storage.external'\nimport { makeHangingPromise } from '../dynamic-rendering-utils'\nimport {\n METADATA_BOUNDARY_NAME,\n VIEWPORT_BOUNDARY_NAME,\n OUTLET_BOUNDARY_NAME,\n ROOT_LAYOUT_BOUNDARY_NAME,\n} from '../../lib/framework/boundary-constants'\nimport { scheduleOnNextTick } from '../../lib/scheduler'\nimport { BailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { InvariantError } from '../../shared/lib/invariant-error'\n\nconst hasPostpone = typeof React.unstable_postpone === 'function'\n\nexport type DynamicAccess = {\n /**\n * If debugging, this will contain the stack trace of where the dynamic access\n * occurred. This is used to provide more information to the user about why\n * their page is being rendered dynamically.\n */\n stack?: string\n\n /**\n * The expression that was accessed dynamically.\n */\n expression: string\n}\n\n// Stores dynamic reasons used during an RSC render.\nexport type DynamicTrackingState = {\n /**\n * When true, stack information will also be tracked during dynamic access.\n */\n readonly isDebugDynamicAccesses: boolean | undefined\n\n /**\n * The dynamic accesses that occurred during the render.\n */\n readonly dynamicAccesses: Array<DynamicAccess>\n\n syncDynamicErrorWithStack: null | Error\n}\n\n// Stores dynamic reasons used during an SSR render.\nexport type DynamicValidationState = {\n hasSuspenseAboveBody: boolean\n hasDynamicMetadata: boolean\n dynamicMetadata: null | Error\n hasDynamicViewport: boolean\n hasAllowedDynamic: boolean\n dynamicErrors: Array<Error>\n}\n\nexport function createDynamicTrackingState(\n isDebugDynamicAccesses: boolean | undefined\n): DynamicTrackingState {\n return {\n isDebugDynamicAccesses,\n dynamicAccesses: [],\n syncDynamicErrorWithStack: null,\n }\n}\n\nexport function createDynamicValidationState(): DynamicValidationState {\n return {\n hasSuspenseAboveBody: false,\n hasDynamicMetadata: false,\n dynamicMetadata: null,\n hasDynamicViewport: false,\n hasAllowedDynamic: false,\n dynamicErrors: [],\n }\n}\n\nexport function getFirstDynamicReason(\n trackingState: DynamicTrackingState\n): undefined | string {\n return trackingState.dynamicAccesses[0]?.expression\n}\n\n/**\n * This function communicates that the current scope should be treated as dynamic.\n *\n * In most cases this function is a no-op but if called during\n * a PPR prerender it will postpone the current sub-tree and calling\n * it during a normal prerender will cause the entire prerender to abort\n */\nexport function markCurrentScopeAsDynamic(\n store: WorkStore,\n workUnitStore: undefined | Exclude<WorkUnitStore, PrerenderStoreModern>,\n expression: string\n): void {\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'request':\n break\n default:\n workUnitStore satisfies never\n }\n }\n\n // If we're forcing dynamic rendering or we're forcing static rendering, we\n // don't need to do anything here because the entire page is already dynamic\n // or it's static and it should not throw or postpone here.\n if (store.forceDynamic || store.forceStatic) return\n\n if (store.dynamicShouldError) {\n throw new StaticGenBailoutError(\n `Route ${store.route} with \\`dynamic = \"error\"\\` couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/app/building-your-application/rendering/static-and-dynamic#dynamic-rendering`\n )\n }\n\n if (workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-ppr':\n return postponeWithTracking(\n store.route,\n expression,\n workUnitStore.dynamicTracking\n )\n case 'prerender-legacy':\n workUnitStore.revalidate = 0\n\n // We aren't prerendering, but we are generating a static page. We need\n // to bail out of static generation.\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used ${expression}. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\n/**\n * This function is meant to be used when prerendering without cacheComponents or PPR.\n * When called during a build it will cause Next.js to consider the route as dynamic.\n *\n * @internal\n */\nexport function throwToInterruptStaticGeneration(\n expression: string,\n store: WorkStore,\n prerenderStore: PrerenderStoreLegacy\n): never {\n // We aren't prerendering but we are generating a static page. We need to bail out of static generation\n const err = new DynamicServerError(\n `Route ${store.route} couldn't be rendered statically because it used \\`${expression}\\`. See more info here: https://nextjs.org/docs/messages/dynamic-server-error`\n )\n\n prerenderStore.revalidate = 0\n\n store.dynamicUsageDescription = expression\n store.dynamicUsageStack = err.stack\n\n throw err\n}\n\n/**\n * This function should be used to track whether something dynamic happened even when\n * we are in a dynamic render. This is useful for Dev where all renders are dynamic but\n * we still track whether dynamic APIs were accessed for helpful messaging\n *\n * @internal\n */\nexport function trackDynamicDataInDynamicRender(workUnitStore: WorkUnitStore) {\n switch (workUnitStore.type) {\n case 'cache':\n case 'unstable-cache':\n // Inside cache scopes, marking a scope as dynamic has no effect,\n // because the outer cache scope creates a cache boundary. This is\n // subtly different from reading a dynamic data source, which is\n // forbidden inside a cache scope.\n return\n case 'private-cache':\n // A private cache scope is already dynamic by definition.\n return\n case 'prerender':\n case 'prerender-runtime':\n case 'prerender-legacy':\n case 'prerender-ppr':\n case 'prerender-client':\n break\n case 'request':\n if (process.env.NODE_ENV !== 'production') {\n workUnitStore.usedDynamic = true\n }\n break\n default:\n workUnitStore satisfies never\n }\n}\n\nfunction abortOnSynchronousDynamicDataAccess(\n route: string,\n expression: string,\n prerenderStore: PrerenderStoreModern\n): void {\n const reason = `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n\n const error = createPrerenderInterruptedError(reason)\n\n prerenderStore.controller.abort(error)\n\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function abortOnSynchronousPlatformIOAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): void {\n const dynamicTracking = prerenderStore.dynamicTracking\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n }\n }\n}\n\n/**\n * use this function when prerendering with cacheComponents. If we are doing a\n * prospective prerender we don't actually abort because we want to discover\n * all caches for the shell. If this is the actual prerender we do abort.\n *\n * This function accepts a prerenderStore but the caller should ensure we're\n * actually running in cacheComponents mode.\n *\n * @internal\n */\nexport function abortAndThrowOnSynchronousRequestDataAccess(\n route: string,\n expression: string,\n errorWithStack: Error,\n prerenderStore: PrerenderStoreModern\n): never {\n const prerenderSignal = prerenderStore.controller.signal\n if (prerenderSignal.aborted === false) {\n // TODO it would be better to move this aborted check into the callsite so we can avoid making\n // the error object when it isn't relevant to the aborting of the prerender however\n // since we need the throw semantics regardless of whether we abort it is easier to land\n // this way. See how this was handled with `abortOnSynchronousPlatformIOAccess` for a closer\n // to ideal implementation\n abortOnSynchronousDynamicDataAccess(route, expression, prerenderStore)\n // It is important that we set this tracking value after aborting. Aborts are executed\n // synchronously except for the case where you abort during render itself. By setting this\n // value late we can use it to determine if any of the aborted tasks are the task that\n // called the sync IO expression in the first place.\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n if (dynamicTracking.syncDynamicErrorWithStack === null) {\n dynamicTracking.syncDynamicErrorWithStack = errorWithStack\n }\n }\n }\n throw createPrerenderInterruptedError(\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}.`\n )\n}\n\n/**\n * This component will call `React.postpone` that throws the postponed error.\n */\ntype PostponeProps = {\n reason: string\n route: string\n}\nexport function Postpone({ reason, route }: PostponeProps): never {\n const prerenderStore = workUnitAsyncStorage.getStore()\n const dynamicTracking =\n prerenderStore && prerenderStore.type === 'prerender-ppr'\n ? prerenderStore.dynamicTracking\n : null\n postponeWithTracking(route, reason, dynamicTracking)\n}\n\nexport function postponeWithTracking(\n route: string,\n expression: string,\n dynamicTracking: null | DynamicTrackingState\n): never {\n assertPostpone()\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n // When we aren't debugging, we don't need to create another error for the\n // stack trace.\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n\n React.unstable_postpone(createPostponeReason(route, expression))\n}\n\nfunction createPostponeReason(route: string, expression: string) {\n return (\n `Route ${route} needs to bail out of prerendering at this point because it used ${expression}. ` +\n `React throws this special object to indicate where. It should not be caught by ` +\n `your own try/catch. Learn more: https://nextjs.org/docs/messages/ppr-caught-error`\n )\n}\n\nexport function isDynamicPostpone(err: unknown) {\n if (\n typeof err === 'object' &&\n err !== null &&\n typeof (err as any).message === 'string'\n ) {\n return isDynamicPostponeReason((err as any).message)\n }\n return false\n}\n\nfunction isDynamicPostponeReason(reason: string) {\n return (\n reason.includes(\n 'needs to bail out of prerendering at this point because it used'\n ) &&\n reason.includes(\n 'Learn more: https://nextjs.org/docs/messages/ppr-caught-error'\n )\n )\n}\n\nif (isDynamicPostponeReason(createPostponeReason('%%%', '^^^')) === false) {\n throw new Error(\n 'Invariant: isDynamicPostpone misidentified a postpone reason. This is a bug in Next.js'\n )\n}\n\nconst NEXT_PRERENDER_INTERRUPTED = 'NEXT_PRERENDER_INTERRUPTED'\n\nfunction createPrerenderInterruptedError(message: string): Error {\n const error = new Error(message)\n ;(error as any).digest = NEXT_PRERENDER_INTERRUPTED\n return error\n}\n\ntype DigestError = Error & {\n digest: string\n}\n\nexport function isPrerenderInterruptedError(\n error: unknown\n): error is DigestError {\n return (\n typeof error === 'object' &&\n error !== null &&\n (error as any).digest === NEXT_PRERENDER_INTERRUPTED &&\n 'name' in error &&\n 'message' in error &&\n error instanceof Error\n )\n}\n\nexport function accessedDynamicData(\n dynamicAccesses: Array<DynamicAccess>\n): boolean {\n return dynamicAccesses.length > 0\n}\n\nexport function consumeDynamicAccess(\n serverDynamic: DynamicTrackingState,\n clientDynamic: DynamicTrackingState\n): DynamicTrackingState['dynamicAccesses'] {\n // We mutate because we only call this once we are no longer writing\n // to the dynamicTrackingState and it's more efficient than creating a new\n // array.\n serverDynamic.dynamicAccesses.push(...clientDynamic.dynamicAccesses)\n return serverDynamic.dynamicAccesses\n}\n\nexport function formatDynamicAPIAccesses(\n dynamicAccesses: Array<DynamicAccess>\n): string[] {\n return dynamicAccesses\n .filter(\n (access): access is Required<DynamicAccess> =>\n typeof access.stack === 'string' && access.stack.length > 0\n )\n .map(({ expression, stack }) => {\n stack = stack\n .split('\\n')\n // Remove the \"Error: \" prefix from the first line of the stack trace as\n // well as the first 4 lines of the stack trace which is the distance\n // from the user code and the `new Error().stack` call.\n .slice(4)\n .filter((line) => {\n // Exclude Next.js internals from the stack trace.\n if (line.includes('node_modules/next/')) {\n return false\n }\n\n // Exclude anonymous functions from the stack trace.\n if (line.includes(' (<anonymous>)')) {\n return false\n }\n\n // Exclude Node.js internals from the stack trace.\n if (line.includes(' (node:')) {\n return false\n }\n\n return true\n })\n .join('\\n')\n return `Dynamic API Usage Debug - ${expression}:\\n${stack}`\n })\n}\n\nfunction assertPostpone() {\n if (!hasPostpone) {\n throw new Error(\n `Invariant: React.unstable_postpone is not defined. This suggests the wrong version of React was loaded. This is a bug in Next.js`\n )\n }\n}\n\n/**\n * This is a bit of a hack to allow us to abort a render using a Postpone instance instead of an Error which changes React's\n * abort semantics slightly.\n */\nexport function createRenderInBrowserAbortSignal(): AbortSignal {\n const controller = new AbortController()\n controller.abort(new BailoutToCSRError('Render in Browser'))\n return controller.signal\n}\n\n/**\n * In a prerender, we may end up with hanging Promises as inputs due them\n * stalling on connection() or because they're loading dynamic data. In that\n * case we need to abort the encoding of arguments since they'll never complete.\n */\nexport function createHangingInputAbortSignal(\n workUnitStore: WorkUnitStore\n): AbortSignal | undefined {\n switch (workUnitStore.type) {\n case 'prerender':\n case 'prerender-runtime':\n const controller = new AbortController()\n\n if (workUnitStore.cacheSignal) {\n // If we have a cacheSignal it means we're in a prospective render. If\n // the input we're waiting on is coming from another cache, we do want\n // to wait for it so that we can resolve this cache entry too.\n workUnitStore.cacheSignal.inputReady().then(() => {\n controller.abort()\n })\n } else {\n // Otherwise we're in the final render and we should already have all\n // our caches filled.\n // If the prerender uses stages, we have wait until the runtime stage,\n // at which point all runtime inputs will be resolved.\n // (otherwise, a runtime prerender might consider `cookies()` hanging\n // even though they'd resolve in the next task.)\n //\n // We might still be waiting on some microtasks so we\n // wait one tick before giving up. When we give up, we still want to\n // render the content of this cache as deeply as we can so that we can\n // suspend as deeply as possible in the tree or not at all if we don't\n // end up waiting for the input.\n const runtimeStagePromise = getRuntimeStagePromise(workUnitStore)\n if (runtimeStagePromise) {\n runtimeStagePromise.then(() =>\n scheduleOnNextTick(() => controller.abort())\n )\n } else {\n scheduleOnNextTick(() => controller.abort())\n }\n }\n\n return controller.signal\n case 'prerender-client':\n case 'prerender-ppr':\n case 'prerender-legacy':\n case 'request':\n case 'cache':\n case 'private-cache':\n case 'unstable-cache':\n return undefined\n default:\n workUnitStore satisfies never\n }\n}\n\nexport function annotateDynamicAccess(\n expression: string,\n prerenderStore: PrerenderStoreModern\n) {\n const dynamicTracking = prerenderStore.dynamicTracking\n if (dynamicTracking) {\n dynamicTracking.dynamicAccesses.push({\n stack: dynamicTracking.isDebugDynamicAccesses\n ? new Error().stack\n : undefined,\n expression,\n })\n }\n}\n\nexport function useDynamicRouteParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n if (workStore && workUnitStore) {\n switch (workUnitStore.type) {\n case 'prerender-client':\n case 'prerender': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n\n if (fallbackParams && fallbackParams.size > 0) {\n // We are in a prerender with cacheComponents semantics. We are going to\n // hang here and never resolve. This will cause the currently\n // rendering component to effectively be a dynamic hole.\n React.use(\n makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n expression\n )\n )\n }\n break\n }\n case 'prerender-ppr': {\n const fallbackParams = workUnitStore.fallbackRouteParams\n if (fallbackParams && fallbackParams.size > 0) {\n return postponeWithTracking(\n workStore.route,\n expression,\n workUnitStore.dynamicTracking\n )\n }\n break\n }\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called during a runtime prerender. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'prerender-legacy':\n case 'request':\n case 'unstable-cache':\n break\n default:\n workUnitStore satisfies never\n }\n }\n}\n\nexport function useDynamicSearchParams(expression: string) {\n const workStore = workAsyncStorage.getStore()\n const workUnitStore = workUnitAsyncStorage.getStore()\n\n if (!workStore) {\n // We assume pages router context and just return\n return\n }\n\n if (!workUnitStore) {\n throwForMissingRequestStore(expression)\n }\n\n switch (workUnitStore.type) {\n case 'prerender-client': {\n React.use(\n makeHangingPromise(\n workUnitStore.renderSignal,\n workStore.route,\n expression\n )\n )\n break\n }\n case 'prerender-legacy':\n case 'prerender-ppr': {\n if (workStore.forceStatic) {\n return\n }\n throw new BailoutToCSRError(expression)\n }\n case 'prerender':\n case 'prerender-runtime':\n throw new InvariantError(\n `\\`${expression}\\` was called from a Server Component. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'cache':\n case 'unstable-cache':\n case 'private-cache':\n throw new InvariantError(\n `\\`${expression}\\` was called inside a cache scope. Next.js should be preventing ${expression} from being included in server components statically, but did not in this case.`\n )\n case 'request':\n return\n default:\n workUnitStore satisfies never\n }\n}\n\nconst hasSuspenseRegex = /\\n\\s+at Suspense \\(<anonymous>\\)/\n\n// Common implicit body tags that React will treat as body when placed directly in html\nconst bodyAndImplicitTags =\n 'body|div|main|section|article|aside|header|footer|nav|form|p|span|h1|h2|h3|h4|h5|h6'\n\n// Detects when RootLayoutBoundary (our framework marker component) appears\n// after Suspense in the component stack, indicating the root layout is wrapped\n// within a Suspense boundary. Ensures no body/html/implicit-body components are in between.\n//\n// Example matches:\n// at Suspense (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\n//\n// Or with other components in between (but not body/html/implicit-body):\n// at Suspense (<anonymous>)\n// at SomeComponent (<anonymous>)\n// at __next_root_layout_boundary__ (<anonymous>)\nconst hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex = new RegExp(\n `\\\\n\\\\s+at Suspense \\\\(<anonymous>\\\\)(?:(?!\\\\n\\\\s+at (?:${bodyAndImplicitTags}) \\\\(<anonymous>\\\\))[\\\\s\\\\S])*?\\\\n\\\\s+at ${ROOT_LAYOUT_BOUNDARY_NAME} \\\\([^\\\\n]*\\\\)`\n)\n\nconst hasMetadataRegex = new RegExp(\n `\\\\n\\\\s+at ${METADATA_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasViewportRegex = new RegExp(\n `\\\\n\\\\s+at ${VIEWPORT_BOUNDARY_NAME}[\\\\n\\\\s]`\n)\nconst hasOutletRegex = new RegExp(`\\\\n\\\\s+at ${OUTLET_BOUNDARY_NAME}[\\\\n\\\\s]`)\n\nexport function trackAllowedDynamicAccess(\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n dynamicValidation.hasDynamicMetadata = true\n return\n } else if (hasViewportRegex.test(componentStack)) {\n dynamicValidation.hasDynamicViewport = true\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(\n clientDynamic.syncDynamicErrorWithStack\n )\n return\n } else {\n const message =\n `Route \"${workStore.route}\": Uncached data was accessed outside of ` +\n '<Suspense>. This delays the entire page from rendering, resulting in a ' +\n 'slow user experience. Learn more: ' +\n 'https://nextjs.org/docs/messages/blocking-route'\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n}\n\nexport function trackDynamicHoleInRuntimeShell(\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateMetadata\\`. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(\n clientDynamic.syncDynamicErrorWithStack\n )\n return\n } else {\n const message = `Route \"${workStore.route}\": Uncached data or \\`connection()\\` was accessed outside of \\`<Suspense>\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n}\n\nexport function trackDynamicHoleInStaticShell(\n workStore: WorkStore,\n componentStack: string,\n dynamicValidation: DynamicValidationState,\n clientDynamic: DynamicTrackingState\n) {\n if (hasOutletRegex.test(componentStack)) {\n // We don't need to track that this is dynamic. It is only so when something else is also dynamic.\n return\n } else if (hasMetadataRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateMetadata\\` or you have file-based metadata such as icons that depend on dynamic params segments. Except for this instance, the page would have been entirely prerenderable which may have been the intended behavior. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicMetadata = error\n return\n } else if (hasViewportRegex.test(componentStack)) {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed inside \\`generateViewport\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n } else if (\n hasSuspenseBeforeRootLayoutWithoutBodyOrImplicitBodyRegex.test(\n componentStack\n )\n ) {\n // For Suspense within body, the prelude wouldn't be empty so it wouldn't violate the empty static shells rule.\n // But if you have Suspense above body, the prelude is empty but we allow that because having Suspense\n // is an explicit signal from the user that they acknowledge the empty shell and want dynamic rendering.\n dynamicValidation.hasAllowedDynamic = true\n dynamicValidation.hasSuspenseAboveBody = true\n return\n } else if (hasSuspenseRegex.test(componentStack)) {\n // this error had a Suspense boundary above it so we don't need to report it as a source\n // of disallowed\n dynamicValidation.hasAllowedDynamic = true\n return\n } else if (clientDynamic.syncDynamicErrorWithStack) {\n // This task was the task that called the sync error.\n dynamicValidation.dynamicErrors.push(\n clientDynamic.syncDynamicErrorWithStack\n )\n return\n } else {\n const message = `Route \"${workStore.route}\": Runtime data such as \\`cookies()\\`, \\`headers()\\`, \\`params\\`, or \\`searchParams\\` was accessed outside of \\`<Suspense>\\`. This delays the entire page from rendering, resulting in a slow user experience. Learn more: https://nextjs.org/docs/messages/blocking-route`\n const error = createErrorWithComponentOrOwnerStack(message, componentStack)\n dynamicValidation.dynamicErrors.push(error)\n return\n }\n}\n\n/**\n * In dev mode, we prefer using the owner stack, otherwise the provided\n * component stack is used.\n */\nfunction createErrorWithComponentOrOwnerStack(\n message: string,\n componentStack: string\n) {\n const ownerStack =\n process.env.NODE_ENV !== 'production' && React.captureOwnerStack\n ? React.captureOwnerStack()\n : null\n\n const error = new Error(message)\n // TODO go back to owner stack here if available. This is temporarily using componentStack to get the right\n //\n error.stack = error.name + ': ' + message + (ownerStack || componentStack)\n return error\n}\n\nexport enum PreludeState {\n Full = 0,\n Empty = 1,\n Errored = 2,\n}\n\nexport function logDisallowedDynamicError(\n workStore: WorkStore,\n error: Error\n): void {\n console.error(error)\n\n if (!workStore.dev) {\n if (workStore.hasReadableErrorStacks) {\n console.error(\n `To get a more detailed stack trace and pinpoint the issue, start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.`\n )\n } else {\n console.error(`To get a more detailed stack trace and pinpoint the issue, try one of the following:\n - Start the app in development mode by running \\`next dev\\`, then open \"${workStore.route}\" in your browser to investigate the error.\n - Rerun the production build with \\`next build --debug-prerender\\` to generate better stack traces.`)\n }\n }\n}\n\nexport function throwIfDisallowedDynamic(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState,\n serverDynamic: DynamicTrackingState\n): void {\n if (serverDynamic.syncDynamicErrorWithStack) {\n logDisallowedDynamicError(\n workStore,\n serverDynamic.syncDynamicErrorWithStack\n )\n throw new StaticGenBailoutError()\n }\n\n if (prelude !== PreludeState.Full) {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return\n }\n\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n for (let i = 0; i < dynamicErrors.length; i++) {\n logDisallowedDynamicError(workStore, dynamicErrors[i])\n }\n\n throw new StaticGenBailoutError()\n }\n\n // If we got this far then the only other thing that could be blocking\n // the root is dynamic Viewport. If this is dynamic then\n // you need to opt into that by adding a Suspense boundary above the body\n // to indicate your are ok with fully dynamic rendering.\n if (dynamicValidation.hasDynamicViewport) {\n console.error(\n `Route \"${workStore.route}\" has a \\`generateViewport\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) without explicitly allowing fully dynamic rendering. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-viewport`\n )\n throw new StaticGenBailoutError()\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n console.error(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason. This is a bug in Next.js.`\n )\n throw new StaticGenBailoutError()\n }\n } else {\n if (\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.hasDynamicMetadata\n ) {\n console.error(\n `Route \"${workStore.route}\" has a \\`generateMetadata\\` that depends on Request data (\\`cookies()\\`, etc...) or uncached external data (\\`fetch(...)\\`, etc...) when the rest of the route does not. See more info here: https://nextjs.org/docs/messages/next-prerender-dynamic-metadata`\n )\n throw new StaticGenBailoutError()\n }\n }\n}\n\nexport function getStaticShellDisallowedDynamicReasons(\n workStore: WorkStore,\n prelude: PreludeState,\n dynamicValidation: DynamicValidationState\n): Array<Error> {\n if (dynamicValidation.hasSuspenseAboveBody) {\n // This route has opted into allowing fully dynamic rendering\n // by including a Suspense boundary above the body. In this case\n // a lack of a shell is not considered disallowed so we simply return\n return []\n }\n\n if (prelude !== PreludeState.Full) {\n // We didn't have any sync bailouts but there may be user code which\n // blocked the root. We would have captured these during the prerender\n // and can log them here and then terminate the build/validating render\n const dynamicErrors = dynamicValidation.dynamicErrors\n if (dynamicErrors.length > 0) {\n return dynamicErrors\n }\n\n if (prelude === PreludeState.Empty) {\n // If we ever get this far then we messed up the tracking of invalid dynamic.\n // We still adhere to the constraint that you must produce a shell but invite the\n // user to report this as a bug in Next.js.\n return [\n new InvariantError(\n `Route \"${workStore.route}\" did not produce a static shell and Next.js was unable to determine a reason.`\n ),\n ]\n }\n } else {\n // We have a prelude but we might still have dynamic metadata without any other dynamic access\n if (\n dynamicValidation.hasAllowedDynamic === false &&\n dynamicValidation.dynamicErrors.length === 0 &&\n dynamicValidation.dynamicMetadata\n ) {\n return [dynamicValidation.dynamicMetadata]\n }\n }\n // We had a non-empty prelude and there are no dynamic holes\n return []\n}\n\nexport function delayUntilRuntimeStage<T>(\n prerenderStore: PrerenderStoreModernRuntime,\n result: Promise<T>\n): Promise<T> {\n if (prerenderStore.runtimeStagePromise) {\n return prerenderStore.runtimeStagePromise.then(() => result)\n }\n return result\n}\n","import { isHangingPromiseRejectionError } from '../../server/dynamic-rendering-utils'\nimport { isPostpone } from '../../server/lib/router-utils/is-postpone'\nimport { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { isNextRouterError } from './is-next-router-error'\nimport {\n isDynamicPostpone,\n isPrerenderInterruptedError,\n} from '../../server/app-render/dynamic-rendering'\nimport { isDynamicServerError } from './hooks-server-context'\n\nexport function unstable_rethrow(error: unknown): void {\n if (\n isNextRouterError(error) ||\n isBailoutToCSRError(error) ||\n isDynamicServerError(error) ||\n isDynamicPostpone(error) ||\n isPostpone(error) ||\n isHangingPromiseRejectionError(error) ||\n isPrerenderInterruptedError(error)\n ) {\n throw error\n }\n\n if (error instanceof Error && 'cause' in error) {\n unstable_rethrow(error.cause)\n }\n}\n","import { isBailoutToCSRError } from '../../shared/lib/lazy-dynamic/bailout-to-csr'\nimport { isNextRouterError } from './is-next-router-error'\n\nexport function unstable_rethrow(error: unknown): void {\n if (isNextRouterError(error) || isBailoutToCSRError(error)) {\n throw error\n }\n\n if (error instanceof Error && 'cause' in error) {\n unstable_rethrow(error.cause)\n }\n}\n","/**\n * This function should be used to rethrow internal Next.js errors so that they can be handled by the framework.\n * When wrapping an API that uses errors to interrupt control flow, you should use this function before you do any error handling.\n * This function will rethrow the error if it is a Next.js error so it can be handled, otherwise it will do nothing.\n *\n * Read more: [Next.js Docs: `unstable_rethrow`](https://nextjs.org/docs/app/api-reference/functions/unstable_rethrow)\n */\nexport const unstable_rethrow =\n typeof window === 'undefined'\n ? (\n require('./unstable-rethrow.server') as typeof import('./unstable-rethrow.server')\n ).unstable_rethrow\n : (\n require('./unstable-rethrow.browser') as typeof import('./unstable-rethrow.browser')\n ).unstable_rethrow\n","import { ReadonlyURLSearchParams } from './readonly-url-search-params'\n\nexport function unstable_isUnrecognizedActionError(): boolean {\n throw new Error(\n '`unstable_isUnrecognizedActionError` can only be used on the client.'\n )\n}\n\nexport { redirect, permanentRedirect } from './redirect'\nexport { RedirectType } from './redirect-error'\nexport { notFound } from './not-found'\nexport { forbidden } from './forbidden'\nexport { unauthorized } from './unauthorized'\nexport { unstable_rethrow } from './unstable-rethrow'\nexport { ReadonlyURLSearchParams }\n","import type { Params } from '../../server/request/params'\n\nimport React, { useContext, useMemo, use } from 'react'\nimport {\n AppRouterContext,\n LayoutRouterContext,\n type AppRouterInstance,\n} from '../../shared/lib/app-router-context.shared-runtime'\nimport {\n SearchParamsContext,\n PathnameContext,\n PathParamsContext,\n NavigationPromisesContext,\n ReadonlyURLSearchParams,\n} from '../../shared/lib/hooks-client-context.shared-runtime'\nimport {\n computeSelectedLayoutSegment,\n getSelectedLayoutSegmentPath,\n} from '../../shared/lib/segment'\n\nconst useDynamicRouteParams =\n typeof window === 'undefined'\n ? (\n require('../../server/app-render/dynamic-rendering') as typeof import('../../server/app-render/dynamic-rendering')\n ).useDynamicRouteParams\n : undefined\n\nconst useDynamicSearchParams =\n typeof window === 'undefined'\n ? (\n require('../../server/app-render/dynamic-rendering') as typeof import('../../server/app-render/dynamic-rendering')\n ).useDynamicSearchParams\n : undefined\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you *read* the current URL's search parameters.\n *\n * Learn more about [`URLSearchParams` on MDN](https://developer.mozilla.org/docs/Web/API/URLSearchParams)\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useSearchParams } from 'next/navigation'\n *\n * export default function Page() {\n * const searchParams = useSearchParams()\n * searchParams.get('foo') // returns 'bar' when ?foo=bar\n * // ...\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSearchParams`](https://nextjs.org/docs/app/api-reference/functions/use-search-params)\n */\n// Client components API\nexport function useSearchParams(): ReadonlyURLSearchParams {\n useDynamicSearchParams?.('useSearchParams()')\n\n const searchParams = useContext(SearchParamsContext)\n\n // In the case where this is `null`, the compat types added in\n // `next-env.d.ts` will add a new overload that changes the return type to\n // include `null`.\n const readonlySearchParams = useMemo((): ReadonlyURLSearchParams => {\n if (!searchParams) {\n // When the router is not ready in pages, we won't have the search params\n // available.\n return null!\n }\n\n return new ReadonlyURLSearchParams(searchParams)\n }, [searchParams])\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n return use(navigationPromises.searchParams)\n }\n }\n\n return readonlySearchParams\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the current URL's pathname.\n *\n * @example\n * ```ts\n * \"use client\"\n * import { usePathname } from 'next/navigation'\n *\n * export default function Page() {\n * const pathname = usePathname() // returns \"/dashboard\" on /dashboard?foo=bar\n * // ...\n * }\n * ```\n *\n * Read more: [Next.js Docs: `usePathname`](https://nextjs.org/docs/app/api-reference/functions/use-pathname)\n */\n// Client components API\nexport function usePathname(): string {\n useDynamicRouteParams?.('usePathname()')\n\n // In the case where this is `null`, the compat types added in `next-env.d.ts`\n // will add a new overload that changes the return type to include `null`.\n const pathname = useContext(PathnameContext) as string\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n return use(navigationPromises.pathname)\n }\n }\n\n return pathname\n}\n\n// Client components API\nexport {\n ServerInsertedHTMLContext,\n useServerInsertedHTML,\n} from '../../shared/lib/server-inserted-html.shared-runtime'\n\n/**\n *\n * This hook allows you to programmatically change routes inside [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components).\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useRouter } from 'next/navigation'\n *\n * export default function Page() {\n * const router = useRouter()\n * // ...\n * router.push('/dashboard') // Navigate to /dashboard\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useRouter`](https://nextjs.org/docs/app/api-reference/functions/use-router)\n */\n// Client components API\nexport function useRouter(): AppRouterInstance {\n const router = useContext(AppRouterContext)\n if (router === null) {\n throw new Error('invariant expected app router to be mounted')\n }\n\n return router\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read a route's dynamic params filled in by the current URL.\n *\n * @example\n * ```ts\n * \"use client\"\n * import { useParams } from 'next/navigation'\n *\n * export default function Page() {\n * // on /dashboard/[team] where pathname is /dashboard/nextjs\n * const { team } = useParams() // team === \"nextjs\"\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useParams`](https://nextjs.org/docs/app/api-reference/functions/use-params)\n */\n// Client components API\nexport function useParams<T extends Params = Params>(): T {\n useDynamicRouteParams?.('useParams()')\n\n const params = useContext(PathParamsContext) as T\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n return use(navigationPromises.params) as T\n }\n }\n\n return params\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the active route segments **below** the Layout it is called from.\n *\n * @example\n * ```ts\n * 'use client'\n *\n * import { useSelectedLayoutSegments } from 'next/navigation'\n *\n * export default function ExampleClientComponent() {\n * const segments = useSelectedLayoutSegments()\n *\n * return (\n * <ul>\n * {segments.map((segment, index) => (\n * <li key={index}>{segment}</li>\n * ))}\n * </ul>\n * )\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSelectedLayoutSegments`](https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segments)\n */\n// Client components API\nexport function useSelectedLayoutSegments(\n parallelRouteKey: string = 'children'\n): string[] {\n useDynamicRouteParams?.('useSelectedLayoutSegments()')\n\n const context = useContext(LayoutRouterContext)\n // @ts-expect-error This only happens in `pages`. Type is overwritten in navigation.d.ts\n if (!context) return null\n\n // Instrument with Suspense DevTools (dev-only)\n if (process.env.NODE_ENV !== 'production' && 'use' in React) {\n const navigationPromises = use(NavigationPromisesContext)\n if (navigationPromises) {\n const promise =\n navigationPromises.selectedLayoutSegmentsPromises?.get(parallelRouteKey)\n if (promise) {\n // We should always have a promise here, but if we don't, it's not worth erroring over.\n // We just won't be able to instrument it, but can still provide the value.\n return use(promise)\n }\n }\n }\n\n return getSelectedLayoutSegmentPath(context.parentTree, parallelRouteKey)\n}\n\n/**\n * A [Client Component](https://nextjs.org/docs/app/building-your-application/rendering/client-components) hook\n * that lets you read the active route segment **one level below** the Layout it is called from.\n *\n * @example\n * ```ts\n * 'use client'\n * import { useSelectedLayoutSegment } from 'next/navigation'\n *\n * export default function ExampleClientComponent() {\n * const segment = useSelectedLayoutSegment()\n *\n * return <p>Active segment: {segment}</p>\n * }\n * ```\n *\n * Read more: [Next.js Docs: `useSelectedLayoutSegment`](https://nextjs.org/docs/app/api-reference/functions/use-selected-layout-segment)\n */\n// Client components API\nexport function useSelectedLayoutSegment(\n parallelRouteKey: string = 'children'\n): string | null {\n useDynamicRouteParams?.('useSelectedLayoutSegment()')\n const navigationPromises = useContext(NavigationPromisesContext)\n const selectedLayoutSegments = useSelectedLayoutSegments(parallelRouteKey)\n\n // Instrument with Suspense DevTools (dev-only)\n if (\n process.env.NODE_ENV !== 'production' &&\n navigationPromises &&\n 'use' in React\n ) {\n const promise =\n navigationPromises.selectedLayoutSegmentPromises?.get(parallelRouteKey)\n if (promise) {\n // We should always have a promise here, but if we don't, it's not worth erroring over.\n // We just won't be able to instrument it, but can still provide the value.\n return use(promise)\n }\n }\n\n return computeSelectedLayoutSegment(selectedLayoutSegments, parallelRouteKey)\n}\n\nexport { unstable_isUnrecognizedActionError } from './unrecognized-action-error'\n\n// Shared components APIs\nexport {\n // We need the same class that was used to instantiate the context value\n // Otherwise instanceof checks will fail in usercode\n ReadonlyURLSearchParams,\n}\nexport {\n notFound,\n forbidden,\n unauthorized,\n redirect,\n permanentRedirect,\n RedirectType,\n unstable_rethrow,\n} from './navigation.react-server'\n","module.exports = require('./dist/client/components/navigation')\n","/**\n * Base color configuration required for all components\n */\nexport interface BaseColorConfig {\n primary: string;\n secondary: string;\n accent: string;\n}\n\n/**\n * Extended color configuration with status colors\n * Use this for components that need warning, success, or danger states\n */\nexport interface ExtendedColorConfig extends BaseColorConfig {\n warning: string;\n success: string;\n danger: string;\n}\n\n/**\n * Type guard to check if color config has extended colors\n */\nexport function hasExtendedColors(\n config: BaseColorConfig | ExtendedColorConfig,\n): config is ExtendedColorConfig {\n return 'warning' in config && 'success' in config && 'danger' in config;\n}\n\n/**\n * Default color configuration\n */\nexport const DEFAULT_COLOR_CONFIG: ExtendedColorConfig = {\n primary: '#3B82F6', // Blue-500\n secondary: '#8B5CF6', // Violet-500\n accent: '#EC4899', // Pink-500\n warning: '#F59E0B', // Amber-500\n success: '#10B981', // Emerald-500\n danger: '#EF4444', // Red-500\n};\n","/**\n * Color utility functions for dynamic color manipulation\n */\n\n/**\n * Converts hex color to RGB values\n */\nfunction hexToRgb(hex: string): { r: number; g: number; b: number } | null {\n const result = /^#?([a-f\\d]{2})([a-f\\d]{2})([a-f\\d]{2})$/i.exec(hex);\n return result\n ? {\n r: parseInt(result[1], 16),\n g: parseInt(result[2], 16),\n b: parseInt(result[3], 16),\n }\n : null;\n}\n\n/**\n * Converts RGB values to hex color\n */\nfunction rgbToHex(r: number, g: number, b: number): string {\n return (\n '#' +\n [r, g, b]\n .map((x) => {\n const hex = Math.round(Math.max(0, Math.min(255, x))).toString(16);\n return hex.length === 1 ? '0' + hex : hex;\n })\n .join('')\n );\n}\n\n/**\n * Calculates relative luminance of a color\n * Used to determine if a color is light or dark\n */\nfunction getLuminance(hex: string): number {\n const rgb = hexToRgb(hex);\n if (!rgb) return 0;\n\n const [r, g, b] = [rgb.r, rgb.g, rgb.b].map((val) => {\n const channel = val / 255;\n return channel <= 0.03928 ? channel / 12.92 : Math.pow((channel + 0.055) / 1.055, 2.4);\n });\n\n return 0.2126 * r + 0.7152 * g + 0.0722 * b;\n}\n\n/**\n * Determines if a color is dark based on its luminance\n */\nexport function isDarkColor(hex: string): boolean {\n return getLuminance(hex) < 0.5;\n}\n\n/**\n * Darkens a color by a given percentage\n * @param hex - Hex color string (e.g., '#FF5733')\n * @param percent - Percentage to darken (0-100)\n */\nexport function darkenColor(hex: string, percent: number = 10): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n\n const factor = 1 - percent / 100;\n return rgbToHex(rgb.r * factor, rgb.g * factor, rgb.b * factor);\n}\n\n/**\n * Lightens a color by a given percentage\n * @param hex - Hex color string (e.g., '#FF5733')\n * @param percent - Percentage to lighten (0-100)\n */\nexport function lightenColor(hex: string, percent: number = 10): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n\n const factor = percent / 100;\n return rgbToHex(\n rgb.r + (255 - rgb.r) * factor,\n rgb.g + (255 - rgb.g) * factor,\n rgb.b + (255 - rgb.b) * factor,\n );\n}\n\n/**\n * Automatically calculates the hover color for a given base color\n * Darkens light colors and lightens dark colors\n * @param hex - Hex color string\n * @param intensity - Intensity of the effect (default: 10)\n */\nexport function getHoverColor(hex: string, intensity: number = 10): string {\n return isDarkColor(hex) ? lightenColor(hex, intensity) : darkenColor(hex, intensity);\n}\n\n/**\n * Gets a contrast color (black or white) for text based on background color\n */\nexport function getContrastColor(hex: string): string {\n return isDarkColor(hex) ? '#FFFFFF' : '#000000';\n}\n\n/**\n * Adjusts color opacity\n * @param hex - Hex color string\n * @param opacity - Opacity value (0-1)\n */\nexport function adjustOpacity(hex: string, opacity: number): string {\n const rgb = hexToRgb(hex);\n if (!rgb) return hex;\n\n return `rgba(${rgb.r}, ${rgb.g}, ${rgb.b}, ${Math.max(0, Math.min(1, opacity))})`;\n}\n","import { forwardRef, useMemo, CSSProperties } from 'react';\nimport { ButtonProps } from './models/Button.interface';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { getHoverColor, adjustOpacity, getContrastColor } from '@/app/utils/colorUtils';\n\nconst BUTTON_DISPLAY_NAME = 'Button';\nconst BUTTON_EMPTY_VALUE = '';\n\nconst BUTTON_VARIANTS = {\n PRIMARY: 'primary',\n SECONDARY: 'secondary',\n SUCCESS: 'success',\n DANGER: 'danger',\n CLOSE: 'close',\n CLEAR: 'clear',\n ICON: 'icon',\n} as const;\n\nconst BUTTON_SIZES = {\n SM: 'sm',\n MD: 'md',\n LG: 'lg',\n} as const;\n\nconst BUTTON_ICON_POSITIONS = {\n LEFT: 'left',\n RIGHT: 'right',\n} as const;\n\nconst getButtonBaseStyles = (): CSSProperties => ({\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n fontWeight: 500,\n transition: 'all 300ms',\n outline: 'none',\n border: '2px solid',\n cursor: 'pointer',\n});\n\nconst getButtonSizeStyles = (size: string, variant: string): CSSProperties => {\n if (variant === BUTTON_VARIANTS.ICON) {\n const iconSizes: Record<string, CSSProperties> = {\n sm: { padding: '0.375rem', fontSize: '0.75rem' },\n md: { padding: '0.5rem', fontSize: '0.875rem' },\n lg: { padding: '0.75rem', fontSize: '1rem' },\n };\n return iconSizes[size] || iconSizes.md;\n }\n\n if (variant === BUTTON_VARIANTS.CLOSE) {\n return {\n width: '2.5rem',\n height: '2.5rem',\n };\n }\n\n if (variant === BUTTON_VARIANTS.CLEAR) {\n const clearSizes: Record<string, CSSProperties> = {\n sm: { padding: '0.25rem', fontSize: '0.75rem' },\n md: { padding: '0.25rem', fontSize: '1rem' },\n lg: { padding: '0.25rem', fontSize: '1.125rem' },\n };\n return clearSizes[size] || clearSizes.md;\n }\n\n const defaultSizes: Record<string, CSSProperties> = {\n sm: {\n paddingLeft: '1rem',\n paddingRight: '1rem',\n paddingTop: '0.5rem',\n paddingBottom: '0.5rem',\n fontSize: '0.75rem',\n },\n md: {\n paddingLeft: '1.25rem',\n paddingRight: '1.25rem',\n paddingTop: '0.625rem',\n paddingBottom: '0.625rem',\n fontSize: '0.875rem',\n },\n lg: {\n paddingLeft: '1.5rem',\n paddingRight: '1.5rem',\n paddingTop: '0.75rem',\n paddingBottom: '0.75rem',\n fontSize: '1rem',\n },\n };\n return defaultSizes[size] || defaultSizes.md;\n};\n\nconst getButtonRoundedStyles = (rounded?: string, variant?: string): CSSProperties => {\n if (rounded) {\n const roundedMap: Record<string, string> = {\n none: '0',\n sm: '0.125rem',\n md: '0.375rem',\n lg: '0.5rem',\n full: '9999px',\n };\n return { borderRadius: roundedMap[rounded] || '0.5rem' };\n }\n\n if (variant === BUTTON_VARIANTS.CLOSE || variant === BUTTON_VARIANTS.CLEAR) {\n return { borderRadius: '9999px' };\n }\n\n return { borderRadius: '0.5rem' };\n};\n\nconst getButtonVariantStyles = (variant: string): CSSProperties => {\n if (variant === BUTTON_VARIANTS.CLOSE) {\n return {\n width: '2.5rem',\n height: '2.5rem',\n borderRadius: '9999px',\n };\n }\n\n if (variant === BUTTON_VARIANTS.CLEAR) {\n return {\n position: 'absolute',\n right: '2.8125rem',\n top: '50%',\n transform: 'translateY(-50%)',\n zIndex: 10,\n borderRadius: '9999px',\n minWidth: '1.5rem',\n minHeight: '1.5rem',\n };\n }\n\n return {};\n};\n\nconst Button = forwardRef<HTMLButtonElement, ButtonProps>(\n (\n {\n variant = BUTTON_VARIANTS.PRIMARY,\n size = BUTTON_SIZES.MD,\n icon,\n iconPosition = BUTTON_ICON_POSITIONS.LEFT,\n isLoading = false,\n loadingText,\n fullWidth = false,\n rounded,\n className = BUTTON_EMPTY_VALUE,\n disableDefaultStyles = false,\n children,\n disabled,\n colors,\n customBg,\n customTextColor,\n customBorderColor,\n style,\n ...props\n },\n ref,\n ) => {\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const variantColors = useMemo(() => {\n let baseColor: string;\n let textColor: string;\n let borderColor: string;\n\n switch (variant) {\n case BUTTON_VARIANTS.PRIMARY:\n baseColor = customBg || colorConfig.primary;\n textColor = customTextColor || getContrastColor(baseColor);\n borderColor = customBorderColor || 'transparent';\n break;\n case BUTTON_VARIANTS.SECONDARY:\n baseColor = customBg || colorConfig.secondary;\n textColor = customTextColor || colorConfig.primary;\n borderColor = customBorderColor || colorConfig.primary;\n break;\n default:\n baseColor = customBg || colorConfig.accent;\n textColor = customTextColor || getContrastColor(baseColor);\n borderColor = customBorderColor || 'transparent';\n break;\n }\n\n const hoverBg = getHoverColor(baseColor);\n const hoverTextColor =\n variant === BUTTON_VARIANTS.SECONDARY\n ? getHoverColor(textColor)\n : getContrastColor(hoverBg);\n const disabledBg = adjustOpacity(baseColor, 0.5);\n const disabledTextColor = adjustOpacity(textColor, 0.6);\n const focusRing = adjustOpacity(\n variant === BUTTON_VARIANTS.SECONDARY ? colorConfig.primary : baseColor,\n 0.5,\n );\n\n return {\n bg: baseColor,\n textColor,\n borderColor,\n hoverBg,\n hoverTextColor,\n disabledBg,\n disabledTextColor,\n disabledBorderColor: customBorderColor\n ? adjustOpacity(customBorderColor, 0.5)\n : adjustOpacity(borderColor, 0.5),\n focusRing,\n };\n }, [variant, customBg, customTextColor, customBorderColor, colorConfig]);\n\n const buttonStyle: CSSProperties = useMemo(() => {\n if (disableDefaultStyles) return style || {};\n\n const baseStyles = getButtonBaseStyles();\n const sizeStyles = getButtonSizeStyles(size, variant);\n const roundedStyles = getButtonRoundedStyles(rounded, variant);\n const variantSpecificStyles = getButtonVariantStyles(variant);\n\n const spacingStyles: CSSProperties =\n variant !== BUTTON_VARIANTS.CLOSE &&\n variant !== BUTTON_VARIANTS.CLEAR &&\n variant !== BUTTON_VARIANTS.ICON\n ? { marginLeft: '0.375rem', marginRight: '0.375rem', marginTop: '0.625rem' }\n : {};\n\n const widthStyles: CSSProperties = fullWidth ? { width: '100%' } : {};\n\n return {\n ...baseStyles,\n ...sizeStyles,\n ...roundedStyles,\n ...variantSpecificStyles,\n ...spacingStyles,\n ...widthStyles,\n backgroundColor: disabled ? variantColors.disabledBg : variantColors.bg,\n color: disabled ? variantColors.disabledTextColor : variantColors.textColor,\n borderColor: disabled ? variantColors.disabledBorderColor : variantColors.borderColor,\n cursor: disabled || isLoading ? 'not-allowed' : 'pointer',\n ...style,\n };\n }, [\n disableDefaultStyles,\n size,\n variant,\n rounded,\n fullWidth,\n disabled,\n isLoading,\n variantColors,\n style,\n ]);\n\n const handleMouseEnter = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled && !isLoading) {\n e.currentTarget.style.backgroundColor = variantColors.hoverBg;\n e.currentTarget.style.color = variantColors.hoverTextColor;\n if (variant === BUTTON_VARIANTS.CLOSE) {\n e.currentTarget.style.transform = 'rotate(90deg)';\n }\n }\n };\n\n const handleMouseLeave = (e: React.MouseEvent<HTMLButtonElement>) => {\n if (!disabled && !isLoading) {\n e.currentTarget.style.backgroundColor = variantColors.bg;\n e.currentTarget.style.color = variantColors.textColor;\n if (variant === BUTTON_VARIANTS.CLOSE) {\n e.currentTarget.style.transform = 'rotate(0deg)';\n }\n }\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLButtonElement>) => {\n e.currentTarget.style.boxShadow = `0 0 0 2px ${variantColors.focusRing}`;\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLButtonElement>) => {\n e.currentTarget.style.boxShadow = 'none';\n };\n\n const spinnerStyle: CSSProperties = {\n animation: 'spin 1s linear infinite',\n height: '1.25rem',\n width: '1.25rem',\n };\n\n const iconSpacingStyle: CSSProperties =\n iconPosition === BUTTON_ICON_POSITIONS.LEFT\n ? { marginRight: '0.5rem' }\n : { marginLeft: '0.5rem' };\n\n const loadingTextStyle: CSSProperties = { marginLeft: '0.5rem' };\n\n return (\n <>\n <style>\n {`\n @keyframes spin {\n from { transform: rotate(0deg); }\n to { transform: rotate(360deg); }\n }\n `}\n </style>\n <button\n ref={ref}\n disabled={disabled || isLoading}\n style={buttonStyle}\n className={className}\n onMouseEnter={handleMouseEnter}\n onMouseLeave={handleMouseLeave}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...props}\n >\n {isLoading ? (\n <>\n <svg\n style={spinnerStyle}\n xmlns=\"http://www.w3.org/2000/svg\"\n fill=\"none\"\n viewBox=\"0 0 24 24\"\n >\n <circle\n style={{ opacity: 0.25 }}\n cx=\"12\"\n cy=\"12\"\n r=\"10\"\n stroke=\"currentColor\"\n strokeWidth=\"4\"\n />\n <path\n style={{ opacity: 0.75 }}\n fill=\"currentColor\"\n d=\"M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z\"\n />\n </svg>\n {loadingText && <span style={loadingTextStyle}>{loadingText}</span>}\n </>\n ) : (\n <>\n {icon && iconPosition === BUTTON_ICON_POSITIONS.LEFT && (\n <span style={iconSpacingStyle}>{icon}</span>\n )}\n {children}\n {icon && iconPosition === BUTTON_ICON_POSITIONS.RIGHT && (\n <span style={iconSpacingStyle}>{icon}</span>\n )}\n </>\n )}\n </button>\n </>\n );\n },\n);\n\nButton.displayName = BUTTON_DISPLAY_NAME;\n\nexport default Button;\n","import { forwardRef, useState, useMemo, CSSProperties, useId } from 'react';\nimport { InputProps } from './models/Input.interface';\nimport { SelectInputProps } from './models/SelectInput.interface';\nimport { TimeInputProps } from './models/TimeInput.interface';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport {\n getHoverColor,\n adjustOpacity,\n getContrastColor,\n lightenColor,\n} from '@/app/utils/colorUtils';\n\nconst INPUT_DISPLAY_NAME = 'Input';\nconst SELECT_INPUT_DISPLAY_NAME = 'SelectInput';\nconst TIME_INPUT_DISPLAY_NAME = 'TimeInput';\nconst INPUT_PLACEHOLDER_CHAR = ' ';\nconst INPUT_EMPTY_VALUE = '';\nconst INPUT_BUTTON_TYPE = 'button';\n\nconst INPUT_VARIANTS = {\n TEXT: 'text',\n NUMBER: 'number',\n SEARCH: 'search',\n SELECT: 'select',\n PASSWORD: 'password',\n TIME: 'time',\n DATE: 'date',\n} as const;\n\nconst INPUT_SIZES = {\n SM: 'sm',\n MD: 'md',\n LG: 'lg',\n} as const;\n\nconst INPUT_TIME_PERIODS = {\n AM: 'am',\n PM: 'pm',\n} as const;\n\nconst INPUT_TIME_DEFAULTS = {\n START_HOUR: 0,\n END_HOUR: 23,\n INTERVAL: 30,\n DISPLAY_12H: 12,\n} as const;\n\nconst INPUT_TIME_FORMAT = {\n MINUTES_PER_HOUR: 60,\n NOON_HOUR: 12,\n ZERO_HOUR: 0,\n ZERO_MINUTE_PAD: '00',\n TIME_SEPARATOR: ':',\n} as const;\n\nconst INPUT_AUTOCOMPLETE_VALUES = {\n OFF: 'off',\n ON: 'on',\n} as const;\n\nconst generateTimeOptions = (startHour: number, endHour: number, interval: number) => {\n const times = [];\n for (let hour = startHour; hour <= endHour; hour++) {\n for (\n let minute = INPUT_TIME_FORMAT.ZERO_HOUR;\n minute < INPUT_TIME_FORMAT.MINUTES_PER_HOUR;\n minute += interval\n ) {\n const period =\n hour < INPUT_TIME_FORMAT.NOON_HOUR ? INPUT_TIME_PERIODS.AM : INPUT_TIME_PERIODS.PM;\n const displayHour =\n hour % INPUT_TIME_FORMAT.NOON_HOUR === INPUT_TIME_FORMAT.ZERO_HOUR\n ? INPUT_TIME_DEFAULTS.DISPLAY_12H\n : hour % INPUT_TIME_FORMAT.NOON_HOUR;\n const time = `${displayHour}${INPUT_TIME_FORMAT.TIME_SEPARATOR}${minute === INPUT_TIME_FORMAT.ZERO_HOUR ? INPUT_TIME_FORMAT.ZERO_MINUTE_PAD : minute}${period}`;\n times.push(time);\n }\n }\n return times;\n};\n\nconst getInputSizeStyles = (size: string): CSSProperties => {\n const baseStyles: CSSProperties = {\n width: '100%',\n border: '2px solid',\n borderRadius: '1.5625rem',\n outline: 'none',\n transition: 'all 300ms',\n backgroundColor: 'var(--input-bg, #313335)',\n color: 'var(--input-text, #A9B7C6)',\n };\n\n const sizeMap: Record<string, CSSProperties> = {\n sm: {\n padding: '0.5rem 0.625rem',\n fontSize: '0.75rem',\n },\n md: {\n padding: '0.625rem 0.75rem',\n fontSize: '0.875rem',\n },\n lg: {\n padding: '0.75rem 0.9375rem',\n fontSize: '0.875rem',\n },\n };\n\n return { ...baseStyles, ...(sizeMap[size] || sizeMap.md) };\n};\n\nconst getLabelStyles = (\n hasValue: boolean,\n isFocused: boolean,\n customStyle?: CSSProperties,\n): CSSProperties => {\n const baseStyles: CSSProperties = {\n position: 'absolute',\n left: '1rem',\n top: '0.75rem',\n fontSize: hasValue || isFocused ? '0.75rem' : '1rem',\n color: hasValue || isFocused ? 'var(--input-accent, #00D4FF)' : 'var(--input-label, #808080)',\n transition: 'all 300ms ease-in-out',\n pointerEvents: 'none',\n transform: hasValue || isFocused ? 'translateY(-1.75rem)' : 'translateY(0)',\n };\n\n return { ...baseStyles, ...customStyle };\n};\n\nconst getIconButtonStyles = (size: string): CSSProperties => {\n const sizeMap: Record<string, CSSProperties> = {\n sm: {\n minWidth: '1.0625rem',\n minHeight: '1.0625rem',\n },\n md: {\n minWidth: '1.125rem',\n minHeight: '1.125rem',\n },\n lg: {\n minWidth: '1.25rem',\n minHeight: '1.25rem',\n },\n };\n\n return {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'pointer',\n color: 'var(--input-accent, #00D4FF)',\n transition: 'color 300ms',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n ...(sizeMap[size] || sizeMap.md),\n };\n};\n\nconst getPasswordButtonFontSize = (size: string): string => {\n const sizeMap: Record<string, string> = {\n sm: '0.6875rem',\n md: '0.75rem',\n lg: '0.875rem',\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nexport const Input = forwardRef<HTMLInputElement, InputProps>(\n (\n {\n variant = INPUT_VARIANTS.TEXT,\n size = INPUT_SIZES.MD,\n label,\n labelStyle,\n onClear,\n showPasswordToggle = true,\n passwordIcon,\n passwordIconHidden,\n searchIcon,\n clearIcon,\n fullWidth = true,\n className = INPUT_EMPTY_VALUE,\n baseClassName,\n labelClassName,\n wrapperClassName,\n disableDefaultStyles = false,\n value,\n colors,\n customBg,\n customTextColor,\n customBorderColor,\n style,\n onFocus,\n onBlur,\n onChange,\n ...props\n },\n ref,\n ) => {\n const [showPassword, setShowPassword] = useState(false);\n const [isFocused, setIsFocused] = useState(false);\n const [internalValue, setInternalValue] = useState('');\n\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const inputColors = useMemo(() => {\n const accentColor = colorConfig.accent || colorConfig.primary;\n const defaultBg = lightenColor(colorConfig.secondary, 70);\n const defaultTextColor = getContrastColor(defaultBg);\n const textColor = customTextColor || defaultTextColor;\n const borderColor = customBorderColor || adjustOpacity(textColor, 0.2);\n const focusBorderColor = accentColor;\n const focusShadow = adjustOpacity(accentColor, 0.1);\n\n return {\n bg: customBg || defaultBg,\n textColor: textColor,\n borderColor,\n focusBorderColor,\n focusShadow,\n accentColor,\n labelColor: adjustOpacity(textColor, 0.7),\n placeholderColor: adjustOpacity(textColor, 0.4),\n };\n }, [colorConfig, customBg, customTextColor, customBorderColor]);\n\n const cssVariables = useMemo(() => {\n if (!colors && !customBg && !customTextColor && !customBorderColor) return {};\n\n return {\n '--input-bg': inputColors.bg,\n '--input-text': inputColors.textColor,\n '--input-border': inputColors.borderColor,\n '--input-focus-border': inputColors.focusBorderColor,\n '--input-focus-shadow': inputColors.focusShadow,\n '--input-label': inputColors.labelColor,\n '--input-accent': inputColors.accentColor,\n '--input-placeholder': inputColors.placeholderColor,\n } as React.CSSProperties;\n }, [inputColors, colors, customBg, customTextColor, customBorderColor]);\n\n const getInputType = () => {\n if (variant === INPUT_VARIANTS.PASSWORD && showPasswordToggle) {\n return showPassword ? INPUT_VARIANTS.TEXT : INPUT_VARIANTS.PASSWORD;\n }\n return variant === INPUT_VARIANTS.SEARCH ? INPUT_VARIANTS.TEXT : variant;\n };\n\n const toggleShowPassword = (e: React.MouseEvent) => {\n e.preventDefault();\n e.stopPropagation();\n setShowPassword(!showPassword);\n };\n\n const handleFocus = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLInputElement>) => {\n setIsFocused(false);\n onBlur?.(e);\n };\n\n const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {\n if (variant === INPUT_VARIANTS.NUMBER) {\n const value = e.target.value;\n // Allow empty string, minus sign at start, and valid numbers\n if (value === '' || value === '-' || /^-?\\d*\\.?\\d*$/.test(value)) {\n setInternalValue(value);\n onChange?.(e);\n } else {\n // Prevent the change by not updating state\n e.preventDefault();\n }\n } else {\n setInternalValue(e.target.value);\n onChange?.(e);\n }\n };\n\n const handleKeyDown = (e: React.KeyboardEvent<HTMLInputElement>) => {\n if (variant === INPUT_VARIANTS.NUMBER) {\n const key = e.key;\n const currentVal = (e.target as HTMLInputElement).value;\n const cursorPosition = (e.target as HTMLInputElement).selectionStart || 0;\n\n // Allow: backspace, delete, tab, escape, enter, arrows\n if (\n [\n 'Backspace',\n 'Delete',\n 'Tab',\n 'Escape',\n 'Enter',\n 'ArrowLeft',\n 'ArrowRight',\n 'ArrowUp',\n 'ArrowDown',\n ].includes(key) ||\n // Allow: Ctrl+A, Ctrl+C, Ctrl+V, Ctrl+X\n (e.ctrlKey && ['a', 'c', 'v', 'x'].includes(key.toLowerCase())) ||\n // Allow: Cmd+A, Cmd+C, Cmd+V, Cmd+X (Mac)\n (e.metaKey && ['a', 'c', 'v', 'x'].includes(key.toLowerCase()))\n ) {\n return;\n }\n\n // Allow minus only at the beginning and if not already present\n if (key === '-') {\n if (cursorPosition !== 0 || currentVal.includes('-')) {\n e.preventDefault();\n }\n return;\n }\n\n // Allow decimal point only once\n if (key === '.') {\n if (currentVal.includes('.')) {\n e.preventDefault();\n }\n return;\n }\n\n // Allow only digits\n if (!/^\\d$/.test(key)) {\n e.preventDefault();\n }\n }\n };\n\n const wrapperStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n position: 'relative',\n marginBottom: '0.625rem',\n width: fullWidth ? '100%' : 'auto',\n ...cssVariables,\n };\n\n const inputStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n ...getInputSizeStyles(size),\n borderColor: isFocused\n ? 'var(--input-focus-border, #00D4FF)'\n : 'var(--input-border, #4A5A6A)',\n boxShadow: isFocused\n ? '0 0 0 0.1875rem var(--input-focus-shadow, rgba(0,212,255,0.1))'\n : 'none',\n paddingRight:\n variant === INPUT_VARIANTS.SEARCH\n ? '2.5rem'\n : variant === INPUT_VARIANTS.PASSWORD && showPasswordToggle\n ? '2rem'\n : undefined,\n };\n\n const passwordButtonStyle: CSSProperties = {\n ...getIconButtonStyles(size),\n right: '0.5rem',\n padding: 0,\n fontSize: getPasswordButtonFontSize(size),\n };\n\n const searchIconStyle: CSSProperties = {\n ...getIconButtonStyles(size),\n right: '0.5rem',\n padding: 0,\n pointerEvents: 'none',\n };\n\n const clearButtonStyle: CSSProperties = {\n ...getIconButtonStyles(size),\n right: '2rem',\n padding: '0.25rem',\n borderRadius: '9999px',\n zIndex: 2,\n };\n\n const currentValue = value !== undefined ? value : internalValue;\n const hasValue = Boolean(currentValue && String(currentValue).trim().length > 0);\n\n const uniqueId = useId();\n\n const handleIncrement = () => {\n if (variant === INPUT_VARIANTS.NUMBER && onChange) {\n const currentVal = Number(currentValue) || 0;\n const step = props.step ? Number(props.step) : 1;\n const max = props.max !== undefined ? Number(props.max) : Infinity;\n const newValue = Math.min(currentVal + step, max);\n\n const event = {\n target: { value: String(newValue) },\n currentTarget: { value: String(newValue) },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(event);\n }\n };\n\n const handleDecrement = () => {\n if (variant === INPUT_VARIANTS.NUMBER && onChange) {\n const currentVal = Number(currentValue) || 0;\n const step = props.step ? Number(props.step) : 1;\n const min = props.min !== undefined ? Number(props.min) : -Infinity;\n const newValue = Math.max(currentVal - step, min);\n\n const event = {\n target: { value: String(newValue) },\n currentTarget: { value: String(newValue) },\n } as React.ChangeEvent<HTMLInputElement>;\n onChange(event);\n }\n };\n\n return (\n <>\n {variant === INPUT_VARIANTS.NUMBER && (\n <style>{`\n #${uniqueId}::-webkit-inner-spin-button,\n #${uniqueId}::-webkit-outer-spin-button {\n -webkit-appearance: none;\n margin: 0;\n }\n #${uniqueId}[type=\"number\"] {\n -moz-appearance: textfield;\n appearance: textfield;\n }\n `}</style>\n )}\n <div className={wrapperClassName} style={{ ...wrapperStyle, ...style }}>\n <input\n id={uniqueId}\n ref={ref}\n type={getInputType()}\n placeholder={INPUT_PLACEHOLDER_CHAR}\n value={value}\n autoComplete={INPUT_AUTOCOMPLETE_VALUES.OFF}\n className={disableDefaultStyles ? baseClassName : className}\n style={{\n ...inputStyle,\n paddingRight: variant === INPUT_VARIANTS.NUMBER ? '2.5rem' : inputStyle.paddingRight,\n }}\n onFocus={handleFocus}\n onBlur={handleBlur}\n onChange={handleChange}\n onKeyDown={handleKeyDown}\n {...props}\n />\n {label && (\n <label\n className={labelClassName}\n style={getLabelStyles(hasValue, isFocused, labelStyle)}\n >\n {label}\n </label>\n )}\n\n {variant === INPUT_VARIANTS.NUMBER && (\n <div\n style={{\n position: 'absolute',\n right: '0.75rem',\n top: '50%',\n transform: 'translateY(-50%)',\n display: 'flex',\n flexDirection: 'column',\n gap: '0.0625rem',\n }}\n >\n <button\n type={INPUT_BUTTON_TYPE}\n onClick={handleIncrement}\n tabIndex={-1}\n style={{\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n padding: '0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: inputColors.accentColor,\n fontSize: '0.875rem',\n lineHeight: 1,\n transition: 'all 200ms',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = getHoverColor(inputColors.accentColor);\n e.currentTarget.style.transform = 'scale(1.2)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = inputColors.accentColor;\n e.currentTarget.style.transform = 'scale(1)';\n }}\n >\n ▲\n </button>\n <button\n type={INPUT_BUTTON_TYPE}\n onClick={handleDecrement}\n tabIndex={-1}\n style={{\n border: 'none',\n background: 'transparent',\n cursor: 'pointer',\n padding: '0',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n color: inputColors.accentColor,\n fontSize: '0.875rem',\n lineHeight: 1,\n transition: 'all 200ms',\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = getHoverColor(inputColors.accentColor);\n e.currentTarget.style.transform = 'scale(1.2)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = inputColors.accentColor;\n e.currentTarget.style.transform = 'scale(1)';\n }}\n >\n ▼\n </button>\n </div>\n )}\n\n {variant === INPUT_VARIANTS.PASSWORD &&\n showPasswordToggle &&\n passwordIcon &&\n passwordIconHidden && (\n <button\n type={INPUT_BUTTON_TYPE}\n onClick={toggleShowPassword}\n style={passwordButtonStyle}\n onMouseEnter={(e) => {\n e.currentTarget.style.color = getHoverColor(inputColors.accentColor);\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.color = 'var(--input-accent, #00D4FF)';\n }}\n >\n {showPassword ? passwordIconHidden : passwordIcon}\n </button>\n )}\n\n {variant === INPUT_VARIANTS.SEARCH && (\n <>\n {value && onClear && clearIcon && (\n <button\n onClick={onClear}\n type={INPUT_BUTTON_TYPE}\n style={clearButtonStyle}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = adjustOpacity(\n inputColors.accentColor,\n 0.1,\n );\n e.currentTarget.style.color = getHoverColor(inputColors.accentColor);\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.color = 'var(--input-accent, #00D4FF)';\n }}\n >\n {clearIcon}\n </button>\n )}\n {searchIcon && <div style={searchIconStyle}>{searchIcon}</div>}\n </>\n )}\n </div>\n </>\n );\n },\n);\n\nInput.displayName = INPUT_DISPLAY_NAME;\n\nexport const SelectInput = forwardRef<HTMLSelectElement, SelectInputProps>(\n (\n {\n size = INPUT_SIZES.MD,\n label,\n labelStyle,\n children,\n selectIcon,\n fullWidth = true,\n className = INPUT_EMPTY_VALUE,\n baseClassName,\n labelClassName,\n wrapperClassName,\n disableDefaultStyles = false,\n value,\n colors,\n customBg,\n customTextColor,\n customBorderColor,\n style,\n onFocus,\n onBlur,\n ...props\n },\n ref,\n ) => {\n const [isFocused, setIsFocused] = useState(false);\n\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const selectColors = useMemo(() => {\n const accentColor = colorConfig.accent || colorConfig.primary;\n const defaultBg = lightenColor(colorConfig.secondary, 70);\n const defaultTextColor = getContrastColor(defaultBg);\n const textColor = customTextColor || defaultTextColor;\n const borderColor = customBorderColor || adjustOpacity(textColor, 0.2);\n const focusBorderColor = accentColor;\n const focusShadow = adjustOpacity(accentColor, 0.1);\n\n return {\n bg: customBg || defaultBg,\n textColor: textColor,\n borderColor,\n focusBorderColor,\n focusShadow,\n accentColor,\n labelColor: adjustOpacity(textColor, 0.7),\n };\n }, [colorConfig, customBg, customTextColor, customBorderColor]);\n\n const cssVariables = useMemo(() => {\n if (!colors && !customBg && !customTextColor && !customBorderColor) return {};\n\n return {\n '--input-bg': selectColors.bg,\n '--input-text': selectColors.textColor,\n '--input-border': selectColors.borderColor,\n '--input-focus-border': selectColors.focusBorderColor,\n '--input-focus-shadow': selectColors.focusShadow,\n '--input-label': selectColors.labelColor,\n '--input-accent': selectColors.accentColor,\n } as React.CSSProperties;\n }, [selectColors, colors, customBg, customTextColor, customBorderColor]);\n\n const handleFocus = (e: React.FocusEvent<HTMLSelectElement>) => {\n setIsFocused(true);\n onFocus?.(e);\n };\n\n const handleBlur = (e: React.FocusEvent<HTMLSelectElement>) => {\n setIsFocused(false);\n onBlur?.(e);\n };\n\n const wrapperStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n position: 'relative',\n marginBottom: '0.625rem',\n width: fullWidth ? '100%' : 'auto',\n ...cssVariables,\n };\n\n const selectStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n ...getInputSizeStyles(size),\n paddingRight: '2rem',\n appearance: 'none',\n cursor: 'pointer',\n borderColor: isFocused\n ? 'var(--input-focus-border, #00D4FF)'\n : 'var(--input-border, #4A5A6A)',\n boxShadow: isFocused\n ? '0 0 0 0.1875rem var(--input-focus-shadow, rgba(0,212,255,0.1))'\n : 'none',\n };\n\n const iconStyle: CSSProperties = {\n ...getIconButtonStyles(size),\n right: '0.5rem',\n padding: 0,\n pointerEvents: 'none',\n };\n\n const hasValue = true;\n\n return (\n <div className={wrapperClassName} style={{ ...wrapperStyle, ...style }}>\n <select\n ref={ref}\n value={value}\n className={disableDefaultStyles ? baseClassName : className}\n style={selectStyle}\n onFocus={handleFocus}\n onBlur={handleBlur}\n {...props}\n >\n <option value={INPUT_EMPTY_VALUE} disabled hidden></option>\n {children}\n </select>\n {label && (\n <label className={labelClassName} style={getLabelStyles(hasValue, isFocused, labelStyle)}>\n {label}\n </label>\n )}\n {selectIcon && <div style={iconStyle}>{selectIcon}</div>}\n </div>\n );\n },\n);\n\nSelectInput.displayName = SELECT_INPUT_DISPLAY_NAME;\n\nexport const TimeInput = forwardRef<HTMLSelectElement, TimeInputProps>(\n (\n {\n size = INPUT_SIZES.MD,\n label,\n value,\n onChange,\n startHour = INPUT_TIME_DEFAULTS.START_HOUR,\n endHour = INPUT_TIME_DEFAULTS.END_HOUR,\n interval = INPUT_TIME_DEFAULTS.INTERVAL,\n selectIcon,\n fullWidth = true,\n className = INPUT_EMPTY_VALUE,\n baseClassName,\n labelClassName,\n wrapperClassName,\n disableDefaultStyles = false,\n colors,\n customBg,\n customTextColor,\n customBorderColor,\n },\n ref,\n ) => {\n return (\n <SelectInput\n ref={ref}\n size={size}\n label={label}\n value={value}\n onChange={onChange}\n selectIcon={selectIcon}\n fullWidth={fullWidth}\n className={className}\n baseClassName={baseClassName}\n labelClassName={labelClassName}\n wrapperClassName={wrapperClassName}\n disableDefaultStyles={disableDefaultStyles}\n colors={colors}\n customBg={customBg}\n customTextColor={customTextColor}\n customBorderColor={customBorderColor}\n >\n {generateTimeOptions(startHour, endHour, interval).map((time, index) => (\n <option key={index} value={time}>\n {time}\n </option>\n ))}\n </SelectInput>\n );\n },\n);\n\nTimeInput.displayName = TIME_INPUT_DISPLAY_NAME;\n\nexport default Input;\n","import { forwardRef, useEffect, useMemo, CSSProperties, useState } from 'react';\nimport { createPortal } from 'react-dom';\nimport ReactDatePicker, { registerLocale } from 'react-datepicker';\nimport { Calendar, X } from 'lucide-react';\nimport { enUS } from 'date-fns/locale';\nimport { DatePickerProps } from './models/DatePicker.interface';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, getContrastColor, lightenColor } from '@/app/utils/colorUtils';\nimport 'react-datepicker/dist/react-datepicker.css';\n\nconst DATEPICKER_DISPLAY_NAME = 'DatePicker';\nconst DATEPICKER_EMPTY_VALUE = '';\n\nconst DATEPICKER_CALENDAR_SIZES = {\n MIN_WIDTH: '10.5rem',\n MONTH_PICKER_WIDTH: '10rem',\n BORDER_RADIUS: '0.625rem',\n BORDER_WIDTH: '0.125rem',\n DAY_SIZE: '2rem',\n DAY_MARGIN: '0.166rem',\n MONTH_MARGIN: '0.4rem',\n HEADER_PADDING_TOP: '0.5rem',\n HEADER_PADDING_SIDE: '0.25rem',\n NAVIGATION_SIZE: '2rem',\n NAVIGATION_TOP: '0.625rem',\n NAVIGATION_SIDE: '0.25rem',\n ICON_SIZE: '0.5rem',\n ICON_TOP: '0.375rem',\n MONTH_TEXT_WIDTH: '2.75rem',\n MONTH_TEXT_HEIGHT: '1.75rem',\n MONTH_GAP: '0.25rem',\n MONTH_PADDING: '0.5rem',\n} as const;\n\nconst DATEPICKER_CALENDAR_Z_INDEX = '1000';\n\nconst getDatePickerSizeStyles = (size: string, showClearButton: boolean): CSSProperties => {\n const basePadding = {\n sm: {\n paddingTop: '0.5rem',\n paddingBottom: '0.5rem',\n paddingLeft: '0.625rem',\n fontSize: '0.75rem',\n },\n md: {\n paddingTop: '0.625rem',\n paddingBottom: '0.625rem',\n paddingLeft: '0.75rem',\n fontSize: '0.875rem',\n },\n lg: {\n paddingTop: '0.75rem',\n paddingBottom: '0.75rem',\n paddingLeft: '0.9375rem',\n fontSize: '0.875rem',\n },\n };\n\n const paddingRight = showClearButton\n ? { sm: '3.5rem', md: '4rem', lg: '4.5rem' }\n : { sm: '2rem', md: '2.5rem', lg: '2.8125rem' };\n\n const sizeStyle = basePadding[size as keyof typeof basePadding] || basePadding.md;\n const pr = paddingRight[size as keyof typeof paddingRight] || paddingRight.md;\n\n return {\n ...sizeStyle,\n paddingRight: pr,\n };\n};\n\nconst getLabelStyles = (\n hasValue: boolean,\n isFocused: boolean,\n customStyle?: CSSProperties,\n): CSSProperties => {\n const baseStyles: CSSProperties = {\n position: 'absolute',\n left: '1rem',\n top: '0.75rem',\n fontSize: hasValue || isFocused ? '0.75rem' : '1rem',\n color: hasValue || isFocused ? 'var(--input-accent, #00D4FF)' : 'var(--input-label, #808080)',\n transition: 'all 300ms ease-in-out',\n pointerEvents: 'none',\n transform: hasValue || isFocused ? 'translateY(-1.75rem)' : 'translateY(0)',\n };\n\n return { ...baseStyles, ...customStyle };\n};\n\nconst getIconPositionStyles = (size: string): CSSProperties => {\n const positions = {\n sm: { right: '0.375rem' },\n md: { right: '0.5rem' },\n lg: { right: '0.75rem' },\n };\n return positions[size as keyof typeof positions] || positions.md;\n};\n\nconst getClearButtonPositionStyles = (size: string): CSSProperties => {\n const positions = {\n sm: { right: '1.5rem', minWidth: '1.0625rem', minHeight: '1.0625rem' },\n md: { right: '2rem', minWidth: '1.375rem', minHeight: '1.375rem' },\n lg: { right: '2.75rem', minWidth: '1.5rem', minHeight: '1.5rem' },\n };\n return positions[size as keyof typeof positions] || positions.md;\n};\n\nconst getIconSizeStyles = (size: string): CSSProperties => {\n const sizes = {\n sm: { minWidth: '0.875rem', minHeight: '0.875rem' },\n md: { minWidth: '1rem', minHeight: '1rem' },\n lg: { minWidth: '1.25rem', minHeight: '1.25rem' },\n };\n return sizes[size as keyof typeof sizes] || sizes.md;\n};\n\nconst getWidthStyles = (size: string, fullWidth: boolean): CSSProperties => {\n if (fullWidth) return { width: '100%' };\n\n const widths = {\n sm: { maxWidth: '12rem' },\n md: { maxWidth: '14rem' },\n lg: { maxWidth: '16rem' },\n };\n return widths[size as keyof typeof widths] || widths.md;\n};\n\nexport const DatePicker = forwardRef<ReactDatePicker, DatePickerProps>(\n (\n {\n size = 'md',\n onClear,\n calendarIcon,\n clearIcon,\n fullWidth = false,\n baseClassName,\n wrapperClassName,\n disableDefaultStyles = false,\n selected,\n onChange,\n locale,\n className = DATEPICKER_EMPTY_VALUE,\n minDate,\n maxDate,\n startDate,\n endDate,\n colors,\n customBg,\n customTextColor,\n customBorderColor,\n label,\n labelStyle,\n placeholderText = ' ',\n ...props\n },\n ref,\n ) => {\n const [isFocused, setIsFocused] = useState(false);\n\n const [inputClassName] = useState(\n () => `datepicker-input-${Math.random().toString(36).substr(2, 9)}`,\n );\n\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const calendarColors = useMemo(() => {\n const primaryColor = colorConfig.primary;\n const defaultBg = lightenColor(colorConfig.secondary, 70);\n const bgColor = customBg || defaultBg;\n const defaultTextColor = getContrastColor(bgColor);\n const textColor = customTextColor || defaultTextColor;\n const borderColor = customBorderColor || adjustOpacity(textColor, 0.2);\n\n return {\n inputBg: bgColor,\n inputText: textColor,\n inputBorder: borderColor,\n inputFocusBorder: primaryColor,\n border: borderColor,\n headerBg: primaryColor,\n headerText: getContrastColor(primaryColor),\n dayText: textColor,\n dayHoverBg: adjustOpacity(primaryColor, 0.1),\n selectedBg: primaryColor,\n selectedText: getContrastColor(primaryColor),\n keyboardBg: adjustOpacity(primaryColor, 0.15),\n disabledText: adjustOpacity(textColor, 0.4),\n disabledBg: 'transparent',\n outsideMonthText: adjustOpacity(textColor, 0.5),\n navigationHover: adjustOpacity(getContrastColor(primaryColor), 0.1),\n navigationIcon: getContrastColor(primaryColor),\n monthBg: bgColor,\n todayBorder: colorConfig.secondary,\n };\n }, [colorConfig, customBg, customTextColor, customBorderColor]);\n\n const showClearButton = Boolean(onClear);\n\n const cssVariables = useMemo(() => {\n if (!colors && !customBg && !customTextColor && !customBorderColor) return {};\n\n const accentColor = colorConfig.accent || colorConfig.primary;\n const defaultBg = lightenColor(colorConfig.secondary, 70);\n const defaultTextColor = getContrastColor(customBg || defaultBg);\n const textColor = customTextColor || defaultTextColor;\n const borderColor = customBorderColor || adjustOpacity(textColor, 0.2);\n\n return {\n '--input-bg': customBg || defaultBg,\n '--input-text': textColor,\n '--input-border': borderColor,\n '--input-label': adjustOpacity(textColor, 0.7),\n '--input-accent': accentColor,\n } as React.CSSProperties;\n }, [colorConfig, customBg, customTextColor, customBorderColor, colors]);\n\n const wrapperStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n position: 'relative',\n marginBottom: '0.625rem',\n width: '100%',\n ...getWidthStyles(size, fullWidth),\n ...cssVariables,\n };\n\n const iconButtonStyle: CSSProperties = {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n backgroundColor: 'transparent',\n border: 'none',\n cursor: 'pointer',\n color: colorConfig.accent || colorConfig.primary,\n transition: 'color 300ms',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n pointerEvents: 'none',\n zIndex: 1,\n ...getIconPositionStyles(size),\n ...getIconSizeStyles(size),\n };\n\n const clearButtonStyle: CSSProperties = {\n position: 'absolute',\n top: '50%',\n transform: 'translateY(-50%)',\n backgroundColor: 'transparent',\n border: 'none',\n color: colorConfig.accent || colorConfig.primary,\n cursor: 'pointer',\n zIndex: 2,\n padding: '0.25rem',\n borderRadius: '9999px',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'color 300ms',\n ...getClearButtonPositionStyles(size),\n };\n\n const defaultCalendarIcon = <Calendar size={18} />;\n const defaultClearIcon = <X size={16} />;\n\n const localeToUse = (locale || enUS) as unknown;\n\n useEffect(() => {\n registerLocale('datepicker-locale', localeToUse as never);\n }, [localeToUse]);\n\n const handleChange = (\n date: Date | Date[] | null,\n event?:\n | React.SyntheticEvent<unknown>\n | React.MouseEvent<HTMLElement>\n | React.KeyboardEvent<HTMLElement>,\n ) => {\n if (!onChange) return;\n\n if (Array.isArray(date)) {\n (\n onChange as (\n dates: Date[] | null,\n event?: React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>,\n ) => void\n )(date, event as React.MouseEvent<HTMLElement> | React.KeyboardEvent<HTMLElement>);\n } else {\n (onChange as (date: Date | null, event?: React.SyntheticEvent<unknown>) => void)(\n date,\n event as React.SyntheticEvent<unknown>,\n );\n }\n };\n\n const reactDatePickerProps = {\n ...props,\n ...(minDate !== null && minDate !== undefined && { minDate }),\n ...(maxDate !== null && maxDate !== undefined && { maxDate }),\n ...(startDate !== null && startDate !== undefined && { startDate }),\n ...(endDate !== null && endDate !== undefined && { endDate }),\n };\n\n const sizeStyles = getDatePickerSizeStyles(size, showClearButton);\n\n return (\n <>\n <style>{`\n .${inputClassName} {\n width: 100%;\n border: 2px solid ${isFocused ? calendarColors.inputFocusBorder : calendarColors.inputBorder};\n border-radius: 1.5625rem !important;\n outline: none;\n transition: all 300ms;\n background-color: ${calendarColors.inputBg};\n color: ${calendarColors.inputText};\n cursor: pointer;\n box-sizing: border-box;\n padding-top: ${sizeStyles.paddingTop};\n padding-bottom: ${sizeStyles.paddingBottom};\n padding-left: ${sizeStyles.paddingLeft};\n padding-right: ${sizeStyles.paddingRight};\n font-size: ${sizeStyles.fontSize};\n ${isFocused ? `box-shadow: 0 0 0 0.1875rem ${adjustOpacity(calendarColors.inputFocusBorder, 0.1)};` : ''}\n }\n\n .react-datepicker-popper[data-placement^='bottom'] {\n padding-top: 8px !important;\n }\n\n .react-datepicker-popper[data-placement^='top'] {\n padding-top: 0 !important;\n padding-bottom: 8px !important;\n }\n\n .react-datepicker-popper {\n z-index: 9999 !important;\n }\n\n .react-datepicker {\n border: ${DATEPICKER_CALENDAR_SIZES.BORDER_WIDTH} solid ${calendarColors.border} !important;\n border-radius: ${DATEPICKER_CALENDAR_SIZES.BORDER_RADIUS} !important;\n font-family: inherit !important;\n box-shadow: 0 0.25rem 0.5rem ${adjustOpacity(calendarColors.border, 0.3)} !important;\n min-width: ${DATEPICKER_CALENDAR_SIZES.MIN_WIDTH} !important;\n }\n\n .react-datepicker--show-month-year-picker {\n min-width: ${DATEPICKER_CALENDAR_SIZES.MONTH_PICKER_WIDTH} !important;\n width: ${DATEPICKER_CALENDAR_SIZES.MONTH_PICKER_WIDTH} !important;\n }\n\n .react-datepicker__header {\n background-color: ${calendarColors.headerBg} !important;\n border-bottom: 0.0625rem solid ${calendarColors.headerBg} !important;\n border-top-left-radius: 0.5rem !important;\n border-top-right-radius: 0.5rem !important;\n color: ${calendarColors.headerText} !important;\n padding-top: ${DATEPICKER_CALENDAR_SIZES.HEADER_PADDING_TOP} !important;\n padding-left: ${DATEPICKER_CALENDAR_SIZES.HEADER_PADDING_SIDE} !important;\n padding-right: ${DATEPICKER_CALENDAR_SIZES.HEADER_PADDING_SIDE} !important;\n }\n\n .react-datepicker__current-month,\n .react-datepicker-time__header,\n .react-datepicker-year-header {\n color: ${calendarColors.headerText} !important;\n font-weight: bold !important;\n font-size: 1rem !important;\n padding-bottom: ${DATEPICKER_CALENDAR_SIZES.HEADER_PADDING_TOP} !important;\n }\n\n .react-datepicker__day-names {\n background-color: ${calendarColors.headerBg} !important;\n padding-bottom: ${DATEPICKER_CALENDAR_SIZES.HEADER_PADDING_TOP} !important;\n }\n\n .react-datepicker__day-name {\n color: ${calendarColors.headerText} !important;\n display: inline-block !important;\n width: ${DATEPICKER_CALENDAR_SIZES.DAY_SIZE} !important;\n line-height: ${DATEPICKER_CALENDAR_SIZES.DAY_SIZE} !important;\n text-align: center !important;\n margin: ${DATEPICKER_CALENDAR_SIZES.DAY_MARGIN} !important;\n border-radius: 0.25rem !important;\n font-weight: bold !important;\n font-size: 0.75rem !important;\n }\n\n .react-datepicker__month {\n margin: ${DATEPICKER_CALENDAR_SIZES.MONTH_MARGIN} !important;\n background-color: ${calendarColors.monthBg} !important;\n }\n\n .react-datepicker__week {\n display: flex !important;\n justify-content: space-around !important;\n }\n\n .react-datepicker__day,\n .react-datepicker__month-text,\n .react-datepicker__quarter-text,\n .react-datepicker__year-text {\n color: ${calendarColors.dayText} !important;\n display: inline-block !important;\n width: ${DATEPICKER_CALENDAR_SIZES.DAY_SIZE} !important;\n line-height: ${DATEPICKER_CALENDAR_SIZES.DAY_SIZE} !important;\n text-align: center !important;\n margin: ${DATEPICKER_CALENDAR_SIZES.DAY_MARGIN} !important;\n border-radius: 0.25rem !important;\n font-size: 0.875rem !important;\n }\n\n .react-datepicker__day:hover,\n .react-datepicker__month-text:hover,\n .react-datepicker__quarter-text:hover,\n .react-datepicker__year-text:hover {\n background-color: ${calendarColors.dayHoverBg} !important;\n border-radius: 0.25rem !important;\n }\n\n .react-datepicker__day--selected,\n .react-datepicker__day--in-selecting-range,\n .react-datepicker__day--in-range,\n .react-datepicker__month-text--selected,\n .react-datepicker__quarter-text--selected,\n .react-datepicker__year-text--selected {\n background-color: ${calendarColors.selectedBg} !important;\n color: ${calendarColors.selectedText} !important;\n border-radius: 0.25rem !important;\n font-weight: bold !important;\n }\n\n .react-datepicker__day--keyboard-selected,\n .react-datepicker__month-text--keyboard-selected,\n .react-datepicker__quarter-text--keyboard-selected,\n .react-datepicker__year-text--keyboard-selected {\n background-color: ${calendarColors.keyboardBg} !important;\n color: ${calendarColors.selectedText} !important;\n border-radius: 0.25rem !important;\n }\n\n .react-datepicker__day--today,\n .react-datepicker__month-text--today,\n .react-datepicker__quarter-text--today,\n .react-datepicker__year-text--today {\n font-weight: normal !important;\n color: inherit !important;\n background-color: transparent !important;\n }\n\n .react-datepicker__navigation {\n top: ${DATEPICKER_CALENDAR_SIZES.NAVIGATION_TOP} !important;\n width: ${DATEPICKER_CALENDAR_SIZES.NAVIGATION_SIZE} !important;\n height: ${DATEPICKER_CALENDAR_SIZES.NAVIGATION_SIZE} !important;\n border-radius: 0.25rem !important;\n }\n\n .react-datepicker__navigation:hover {\n background-color: ${calendarColors.navigationHover} !important;\n }\n\n .react-datepicker__navigation-icon::before {\n border-color: ${calendarColors.navigationIcon} !important;\n border-width: ${DATEPICKER_CALENDAR_SIZES.BORDER_WIDTH}\n ${DATEPICKER_CALENDAR_SIZES.BORDER_WIDTH} 0 0 !important;\n height: ${DATEPICKER_CALENDAR_SIZES.ICON_SIZE} !important;\n width: ${DATEPICKER_CALENDAR_SIZES.ICON_SIZE} !important;\n top: ${DATEPICKER_CALENDAR_SIZES.ICON_TOP} !important;\n }\n\n .react-datepicker__navigation--previous {\n left: ${DATEPICKER_CALENDAR_SIZES.NAVIGATION_SIDE} !important;\n }\n\n .react-datepicker__navigation--next {\n right: ${DATEPICKER_CALENDAR_SIZES.NAVIGATION_SIDE} !important;\n }\n\n .react-datepicker__day--disabled,\n .react-datepicker__month-text--disabled,\n .react-datepicker__quarter-text--disabled,\n .react-datepicker__year-text--disabled {\n color: ${calendarColors.disabledText} !important;\n cursor: not-allowed !important;\n background-color: ${calendarColors.disabledBg} !important;\n }\n\n .react-datepicker__day--disabled:hover,\n .react-datepicker__month-text--disabled:hover,\n .react-datepicker__quarter-text--disabled:hover,\n .react-datepicker__year-text--disabled:hover {\n background-color: ${calendarColors.disabledBg} !important;\n }\n\n .react-datepicker__day--outside-month {\n color: ${calendarColors.outsideMonthText} !important;\n }\n\n .react-datepicker-popper {\n z-index: ${DATEPICKER_CALENDAR_Z_INDEX} !important;\n }\n\n .react-datepicker__month-container {\n float: left !important;\n width: 100% !important;\n }\n\n .react-datepicker__month-wrapper {\n display: flex !important;\n flex-wrap: wrap !important;\n justify-content: center !important;\n gap: ${DATEPICKER_CALENDAR_SIZES.MONTH_GAP} !important;\n padding: ${DATEPICKER_CALENDAR_SIZES.MONTH_PADDING} 0 !important;\n }\n\n .react-datepicker__month-text,\n .react-datepicker__quarter-text,\n .react-datepicker__year-text {\n display: inline-flex !important;\n align-items: center !important;\n justify-content: center !important;\n width: ${DATEPICKER_CALENDAR_SIZES.MONTH_TEXT_WIDTH} !important;\n height: ${DATEPICKER_CALENDAR_SIZES.MONTH_TEXT_HEIGHT} !important;\n margin: 0 !important;\n padding: 0.25rem 0.125rem !important;\n border-radius: 0.25rem !important;\n cursor: pointer !important;\n text-align: center !important;\n font-size: 0.75rem !important;\n font-weight: 500 !important;\n }\n `}</style>\n\n <div style={wrapperStyle} className={wrapperClassName || className}>\n <ReactDatePicker\n ref={ref}\n className={`${baseClassName || ''} ${inputClassName}`.trim()}\n wrapperClassName={DATEPICKER_EMPTY_VALUE}\n popperPlacement=\"bottom-start\"\n locale=\"datepicker-locale\"\n selected={selected}\n onChange={handleChange}\n onFocus={() => setIsFocused(true)}\n onBlur={() => setIsFocused(false)}\n placeholderText={placeholderText}\n {...(reactDatePickerProps as Record<string, unknown>)}\n popperContainer={({ children }) => {\n if (typeof document !== 'undefined') {\n return createPortal(children, document.body);\n }\n return children;\n }}\n />\n {label && (\n <label style={getLabelStyles(Boolean(selected), isFocused, labelStyle)}>{label}</label>\n )}\n {selected && onClear && (\n <button\n onClick={onClear}\n style={clearButtonStyle}\n type=\"button\"\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = adjustOpacity(\n colorConfig.accent || colorConfig.primary,\n 0.1,\n );\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n {clearIcon || defaultClearIcon}\n </button>\n )}\n <div style={iconButtonStyle}>{calendarIcon || defaultCalendarIcon}</div>\n </div>\n </>\n );\n },\n);\n\nDatePicker.displayName = DATEPICKER_DISPLAY_NAME;\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagEN = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#29337A\"\n d=\"M496,369.6c0,27.2-21.6,46.4-48,46.4H48c-26.4,0-48-19.2-48-46.4V126.4C0,99.2,21.6,80,48,80h400c26.4,0,48,19.2,48,46.4V369.6z\"\n />\n <path fill=\"#1B265B\" d=\"M48,80h400c26.4,0,48,19.2,48,46.4v243.2c0,27.2-25.6,46.4-52,46.4\" />\n <path fill=\"#111D49\" d=\"M48,80h400c26.4,0,48,19.2,48,46.4V216\" />\n <path fill=\"#111D49\" d=\"M496,368.8c0,27.2-21.6,47.2-48,47.2H48c-26.4,0-48-20.8-48-48\" />\n <polygon\n fill=\"#FFFFFF\"\n points=\"272,248 442.4,80 394.4,80 248,226.4 101.6,80 53.6,80 224,248 53.6,416 101.6,416 248,269.6 394.4,416 442.4,416\"\n />\n <polygon fill=\"#D9ECED\" points=\"102.4,368 53.6,416 101.6,416 149.6,368\" />\n <polygon fill=\"#D9ECED\" points=\"346.4,368 394.4,416 442.4,416 393.6,368\" />\n <polygon\n fill=\"#D9ECED\"\n points=\"411.2,386.4 272,249.6 442.4,80 394.4,80 248,226.4 101.6,80 53.6,80 85.6,110.4\"\n />\n <polygon\n fill=\"#FFFFFF\"\n points=\"496,216 280,216 280,80 216,80 216,216 0,216 0,280 216,280 216,416 280,416 280,280 496,280\"\n />\n <rect x=\"216\" y=\"368\" fill=\"#D9ECED\" width=\"64\" height=\"48\" />\n <polygon\n fill=\"#D9ECED\"\n points=\"280,80 216,80 216,216 210.4,216 285.6,280 496,280 496,216 280,216\"\n />\n <polygon\n fill=\"#E51D35\"\n points=\"496,232 264,232 273.6,232 432.8,80 416.8,80 264,232 264,80 232,80 232,232 232,232 77.6,80 63.2,80 216,232 0,232 0,264 216.8,264 67.2,416 81.6,416 232,264 232,416 264,416 264,265.6 418.4,416 432.8,416 280,264 496,264\"\n />\n <rect x=\"232\" y=\"368\" fill=\"#AF0026\" width=\"32\" height=\"48\" />\n <polygon fill=\"#AF0026\" points=\"114.4,368 67.2,416 81.6,416 129.6,368\" />\n <polygon fill=\"#AF0026\" points=\"369.6,368 418.4,416 432.8,416 384,368\" />\n <polygon\n fill=\"#AF0026\"\n points=\"278.4,232 432.8,80 416.8,80 264,232 264,80 232,80 232,232 232,232 77.6,80 63.2,80 151.2,167.2 343.2,328.8 280,264 496,264 496,232 264,232\"\n />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagES = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n {/* Franja roja inferior */}\n <path\n style={{ fill: '#D32030' }}\n d=\"M0,304.8v64.8c0,27.2,21.6,48.8,48,48.8h400c26.4,0,48-21.6,48-48.8v-64.8H0z\"\n />\n <path\n style={{ fill: '#C11025' }}\n d=\"M448,418.4c26.4,0,48-21.6,48-48.8v-64.8H315.2L448,418.4z\"\n />\n\n {/* Franja roja superior */}\n <path\n style={{ fill: '#D32030' }}\n d=\"M448,77.6H48c-26.4,0-48,21.6-48,48.8v64.8h496v-64.8C496,99.2,474.4,77.6,448,77.6z\"\n />\n <path\n style={{ fill: '#C11025' }}\n d=\"M448,77.6H48l132.8,113.6H496v-64.8C496,99.2,474.4,77.6,448,77.6z\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M448,77.6H48l370.4,113.6H496v-64.8C496,99.2,474.4,77.6,448,77.6z\"\n />\n\n {/* Franja amarilla central (más grande - proporción 2:1:2) */}\n <polygon\n style={{ fill: '#FFD034' }}\n points=\"0,140.8 0,189.6 0,191.2 0,304.8 0,306.4 0,355.2 496,355.2 496,306.4 496,304.8 496,191.2 496,189.6 496,140.8\"\n />\n <polygon\n style={{ fill: '#FFBC00' }}\n points=\"180,189.6 180,189.6 316,306.4 373.6,355.2 496,355.2 496,306.4 496,304.8 496,191.2 496,189.6 496,140.8 122.4,140.8\"\n />\n <polygon\n style={{ fill: '#FFAA00' }}\n points=\"255.2,140.8 414.4,189.6 414.4,189.6 496,214.4 496,191.2 496,189.6 496,140.8\"\n />\n\n {/* Escudo (detalles decorativos) */}\n <g>\n <path\n style={{ fill: '#A5001C' }}\n d=\"M496,369.6c0,27.2-21.6,48.8-48,48.8H48c-26.4,0-48-21.6-48-48.8\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M69.6,244.8v33.6c0,16.8,13.6,30.4,30.4,30.4s30.4-13.6,30.4-30.4v-33.6L69.6,244.8L69.6,244.8z\"\n />\n <rect x=\"137.6\" y=\"249.6\" style={{ fill: '#A5001C' }} width=\"9.6\" height=\"46.4\" />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M151.2,301.6c-0.8-0.8-1.6-0.8-3.2-0.8c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8s-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8s2.4,0,3.2,0.8s1.6,0.8,3.2,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8s2.4,0.8,3.2,0.8v-1.6C153.6,302.4,152,302.4,151.2,301.6z\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M148.8,304.8c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8s-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8s2.4,0,3.2,0.8s1.6,0.8,3.2,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8s1.6,0.8,3.2,0.8v-1.6c-0.8,0-2.4,0-3.2-0.8C150.4,304.8,149.6,304.8,148.8,304.8z\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M148.8,308c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8s-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8s2.4,0,3.2,0.8s1.6,0.8,3.2,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8s1.6,0.8,3.2,0.8v-1.6c-0.8,0-2.4,0-3.2-0.8C150.4,308.8,149.6,308,148.8,308z\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M148.8,296.8c0,0.8-0.8,1.6-1.6,1.6h-10.4c-0.8,0-1.6-0.8-1.6-1.6l0,0c0-0.8,0.8-1.6,1.6-1.6h10.4C148,295.2,148.8,296,148.8,296.8L148.8,296.8z\"\n />\n <path\n style={{ fill: '#A5001C' }}\n d=\"M148.8,248.8c0,0.8-0.8,1.6-1.6,1.6h-10.4c-0.8,0-1.6-0.8-1.6-1.6l0,0c0-0.8,0.8-1.6,1.6-1.6h10.4C148,248,148.8,248,148.8,248.8L148.8,248.8z\"\n />\n </g>\n <g>\n <rect x=\"53.6\" y=\"249.6\" style={{ fill: '#D32030' }} width=\"9.6\" height=\"46.4\" />\n <path\n style={{ fill: '#D32030' }}\n d=\"M67.2,301.6c-0.8-0.8-1.6-0.8-3.2-0.8c-0.8,0-2.4,0-3.2,0.8c-0.8,0.8-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8c1.6,0.8,2.4,0.8,4,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8c0,0.8,0.8,0.8,2.4,0.8v-1.6C68.8,302.4,68,302.4,67.2,301.6z\"\n />\n <path\n style={{ fill: '#D32030' }}\n d=\"M64,304.8c-0.8,0-2.4,0-3.2,0.8c-0.8,0.8-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8s1.6,0.8,3.2,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8c0.8,0.8,1.6,0.8,3.2,0.8v-1.6c-0.8,0-2.4,0-3.2-0.8S65.6,304.8,64,304.8z\"\n />\n <path\n style={{ fill: '#D32030' }}\n d=\"M64,308c-0.8,0-2.4,0-3.2,0.8c-0.8,0.8-1.6,0.8-3.2,0.8c-0.8,0-2.4,0-3.2-0.8c-0.8,0-1.6-0.8-3.2-0.8c-0.8,0-2.4,0-3.2,0.8s-1.6,0.8-3.2,0.8v1.6c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8s1.6,0.8,3.2,0.8c0.8,0,2.4,0,3.2-0.8c0.8,0,1.6-0.8,3.2-0.8c0.8,0,2.4,0,3.2,0.8c0.8,0.8,1.6,0.8,3.2,0.8v-1.6c-0.8,0-2.4,0-3.2-0.8C66.4,308.8,65.6,308,64,308z\"\n />\n <path\n style={{ fill: '#D32030' }}\n d=\"M64.8,296.8c0,0.8-0.8,1.6-1.6,1.6H52.8c-0.8,0-1.6-0.8-1.6-1.6l0,0c0-0.8,0.8-1.6,1.6-1.6h10.4C64,295.2,64.8,296,64.8,296.8L64.8,296.8z\"\n />\n <path\n style={{ fill: '#D32030' }}\n d=\"M64.8,248.8c0,0.8-0.8,1.6-1.6,1.6H52.8c-0.8,0-1.6-0.8-1.6-1.6l0,0c0.8-0.8,1.6-0.8,1.6-0.8h10.4C64,248,64.8,248,64.8,248.8L64.8,248.8z\"\n />\n </g>\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagDE = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#F8D12E\"\n d=\"M0,304v65.6C0,396.8,21.6,416,48,416h400c26.4,0,48-19.2,48-46.4V304H0z\"\n />\n <path\n fill=\"#333333\"\n d=\"M448,80H48C21.6,80,0,99.2,0,126.4V192h496v-65.6C496,99.2,474.4,80,448,80z\"\n />\n <rect y=\"192\" fill=\"#DB2727\" width=\"496\" height=\"112\" />\n <path fill=\"#DBB30F\" d=\"M446.4,416c26.4,0,49.6-19.2,49.6-46.4V304H315.2L446.4,416z\" />\n <path fill=\"#202121\" d=\"M448,80H48l132.8,112H496v-65.6C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#C10E0E\" points=\"316,304 496,304 496,192 180,192\" />\n <path d=\"M448,80H48l370.4,112H496v-65.6C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#A00808\" points=\"496,214.4 496,192 414.4,192\" />\n <path fill=\"#D89F12\" d=\"M496,368.8c0,29.6-21.6,47.2-48,47.2H48c-26.4,0-48-20.8-48-48\" />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagFR = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"160\" y=\"80\" fill=\"#FFFFFF\" width=\"176\" height=\"336\" />\n <path\n fill=\"#3757A6\"\n d=\"M160,80H48C21.6,80,0,99.2,0,126.4v243.2C0,396.8,21.6,416,48,416h112V80z\"\n />\n <path\n fill=\"#EF4F4E\"\n d=\"M448,80H336v336h112c26.4,0,48-19.2,48-46.4V126.4C496,99.2,474.4,80,448,80z\"\n />\n <path\n fill=\"#DD4545\"\n d=\"M448,80H336v240.8L446.4,416c26.4,0,49.6-19.2,49.6-46.4V126.4C496,99.2,474.4,80,448,80z\"\n />\n <polygon fill=\"#E2F2F1\" points=\"336,320.8 336,80 160,80 160,175.2\" />\n <polygon fill=\"#2A4D93\" points=\"160,80 48,80 160,175.2\" />\n <path fill=\"#CC3E3E\" d=\"M336,416h112c26.4,0,48-16,48-48H336V416z\" />\n <rect x=\"160\" y=\"368\" fill=\"#D6EAE8\" width=\"176\" height=\"48\" />\n <path fill=\"#133970\" d=\"M0,368c0,32,21.6,48,48,48h112v-48H0z\" />\n <path fill=\"#CC3E3E\" d=\"M448,80H336v84.8l160,49.6v-88C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#D6EAE8\" points=\"336,164.8 336,80 160,80 160,112.8\" />\n <polygon fill=\"#133970\" points=\"160,80 48,80 160,112.8\" />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagIT = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <rect x=\"160\" y=\"80\" fill=\"#EBF7F7\" width=\"176\" height=\"336\" />\n <path\n fill=\"#359846\"\n d=\"M160,80H48C21.6,80,0,99.2,0,126.4v243.2C0,396.8,21.6,416,48,416h112V80z\"\n />\n <path\n fill=\"#EF4C4C\"\n d=\"M448,80H336v336h112c26.4,0,48-19.2,48-46.4V126.4C496,99.2,474.4,80,448,80z\"\n />\n <path\n fill=\"#DD4545\"\n d=\"M448,80H336v240.8L446.4,416c26.4,0,49.6-19.2,49.6-46.4V126.4C496,99.2,474.4,80,448,80z\"\n />\n <polygon fill=\"#E2F2F1\" points=\"336,320.8 336,80 160,80 160,175.2\" />\n <polygon fill=\"#258933\" points=\"160,80 48,80 160,175.2\" />\n <path fill=\"#CC3E3E\" d=\"M336,416h112c26.4,0,48-16,48-48H336V416z\" />\n <rect x=\"160\" y=\"368\" fill=\"#D6EAE8\" width=\"176\" height=\"48\" />\n <path fill=\"#15721E\" d=\"M0,368c0,32,21.6,48,48,48h112v-48H0z\" />\n <path fill=\"#CC3E3E\" d=\"M448,80H336v84.8l160,49.6v-88C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#D6EAE8\" points=\"336,164.8 336,80 160,80 160,112.8\" />\n <polygon fill=\"#15721E\" points=\"160,80 48,80 160,112.8\" />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagJA = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#FFFFFF\"\n d=\"M496,369.6c0,27.2-21.6,46.4-48,46.4H48c-26.4,0-48-19.2-48-46.4V126.4C0,99.2,21.6,80,48,80h400c26.4,0,48,19.2,48,46.4V369.6z\"\n />\n <path fill=\"#E9F3F4\" d=\"M48,80h400c26.4,0,48,19.2,48,46.4v243.2c0,27.2-25.6,46.4-52,46.4\" />\n <path fill=\"#D9ECED\" d=\"M496,368.8c0,27.2-21.6,47.2-48,47.2H48c-26.4,0-48-20.8-48-48\" />\n <path fill=\"#D9ECED\" d=\"M48,80h400c26.4,0,48,19.2,48,46.4V216\" />\n <circle fill=\"#EC1C24\" cx=\"248\" cy=\"248\" r=\"103.2\" />\n <path fill=\"#CE0909\" d=\"M175.2,175.2c40-40,105.6-40,146.4,0c40,40,40,105.6,0,146.4\" />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagPT = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n style={{ fill: '#006600' }}\n d=\"M162.4,77.6H48c-26.4,0-48,21.6-48,48.8v243.2c0,27.2,21.6,48.8,48,48.8h115.2V77.6H162.4z\"\n />\n <path\n style={{ fill: '#FF0000' }}\n d=\"M448,77.6H333.6H162.4v340.8h170.4H448c26.4,0,48-21.6,48-48.8V126.4C496,99.2,474.4,77.6,448,77.6z\"\n />\n <path\n style={{ fill: '#E20000' }}\n d=\"M448,77.6H333.6H162.4v97.6L332.8,320L448,418.4c26.4,0,48-21.6,48-48.8V126.4C496,99.2,474.4,77.6,448,77.6z\"\n />\n <polygon style={{ fill: '#004F00' }} points=\"162.4,77.6 48,77.6 162.4,175.2\" />\n <path\n style={{ fill: '#CE0000' }}\n d=\"M333.6,369.6H162.4v48.8h170.4H448c26.4,0,48-21.6,48-48.8H333.6z\"\n />\n <path style={{ fill: '#013F01' }} d=\"M0,369.6c0,27.2,21.6,48.8,48,48.8h115.2v-48.8H0z\" />\n <path\n style={{ fill: '#CE0000' }}\n d=\"M448,77.6H333.6H162.4v35.2l170.4,52L496,214.4v-88C496,99.2,474.4,77.6,448,77.6z\"\n />\n <polygon style={{ fill: '#013F01' }} points=\"162.4,77.6 48,77.6 162.4,112.8\" />\n <circle style={{ fill: '#FFFFFF' }} cx=\"163.2\" cy=\"243.2\" r=\"68.8\" />\n <path\n style={{ fill: '#F2EFCE' }}\n d=\"M163.2,173.6c38.4,0,68.8,31.2,68.8,68.8c0,38.4-31.2,68.8-68.8,68.8\"\n />\n <path\n style={{ fill: '#C60606' }}\n d=\"M116.8,256.8L116.8,256.8c0,12,4.8,23.2,13.6,32c8,8,19.2,13.6,32,13.6c12,0,24-4.8,32-12.8s13.6-19.2,13.6-32l0,0v-60.8h-90.4L116.8,256.8 M188.8,214.4v38.4v4l0,0c0,0.8,0,2.4,0,3.2c-0.8,6.4-3.2,11.2-8,15.2c-4.8,4.8-12,8-19.2,8s-13.6-3.2-19.2-8c-4.8-4.8-8-12-8-19.2v-42.4L188.8,214.4\"\n />\n <path\n style={{ fill: '#FF0000' }}\n d=\"M116.8,256.8L116.8,256.8L116.8,256.8c0,12,4.8,23.2,13.6,32c8,8,19.2,13.6,32,13.6v-17.6l0,0c-7.2,0-13.6-3.2-19.2-8c-4.8-4.8-8-12-8-19.2v-42.4h27.2v-18.4h-44.8L116.8,256.8z\"\n />\n <g>\n <path\n style={{ fill: '#1477EF' }}\n d=\"M156.8,249.6L156.8,249.6L156.8,249.6c0,1.6,0.8,3.2,1.6,4.8c0.8,0.8,2.4,1.6,4,1.6s3.2-0.8,4-1.6c0.8-0.8,1.6-2.4,1.6-4.8v-8.8h-12L156.8,249.6z\"\n />\n <path\n style={{ fill: '#1477EF' }}\n d=\"M156.8,270.4L156.8,270.4L156.8,270.4c0,1.6,0.8,3.2,1.6,4.8c0.8,0.8,2.4,1.6,4,1.6s3.2-0.8,4-1.6c1.6-1.6,1.6-3.2,1.6-4.8v-8.8h-12L156.8,270.4z\"\n />\n <path\n style={{ fill: '#1477EF' }}\n d=\"M140,249.6L140,249.6c0,1.6,0.8,3.2,1.6,4.8c0.8,0.8,2.4,1.6,4,1.6s3.2-0.8,4-1.6c0.8-0.8,1.6-2.4,1.6-4.8v-8.8h-12L140,249.6z\"\n />\n </g>\n <path\n style={{ fill: '#005CB7' }}\n d=\"M184.8,249.6v-8.8h-12v8.8l0,0l0,0c0,1.6,0.8,3.2,1.6,4.8c0.8,0.8,2.4,1.6,4,1.6s3.2-0.8,4-1.6S184.8,252,184.8,249.6z\"\n />\n <path\n style={{ fill: '#1477EF' }}\n d=\"M158.4,233.6c0.8,0.8,2.4,1.6,4,1.6s3.2-0.8,4-1.6s1.6-2.4,1.6-4.8V220h-12v8.8l0,0l0,0C156.8,231.2,157.6,232.8,158.4,233.6z\"\n />\n <g>\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M119.2,212.8h13.6c0,0,0.8,0,0.8-0.8c0,0,0-0.8-0.8-0.8h-3.2l0,0h3.2l0,0l0,0l-0.8-4.8l0,0l0,0c0,0,0.8,0,0.8-0.8c0,0,0-0.8-0.8-0.8l0,0h-12c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8l0,0v4.8l0,0l0,0h3.2l0,0H120C119.2,211.2,119.2,212,119.2,212.8L119.2,212.8z M124,208c-0.8,0.8-0.8,1.6-0.8,2.4C123.2,209.6,124,208.8,124,208z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M124.8,199.2h3.2c0,0,0.8,0,0.8-0.8v-1.6l0,0l0,0H128v0.8h-0.8v-0.8l0,0l0,0h-0.8l0,0l0,0v0.8h-0.8v-0.8h-0.8l0,0l0,0l0,0l0,0l0,0L124.8,199.2C124,199.2,124,199.2,124.8,199.2z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M168.8,211.2h-3.2l0,0H168.8L168.8,211.2L168.8,211.2l-0.8-4.8l0,0l0,0c0,0,0.8,0,0.8-0.8c0,0,0-0.8-0.8-0.8l0,0h-12c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8l0,0l-0.8,4.8l0,0l0,0h3.2l0,0h-3.2c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8h13.6C169.6,212.8,169.6,212.8,168.8,211.2C169.6,212,169.6,211.2,168.8,211.2z M159.2,210.4c0-0.8,0.8-1.6,0.8-2.4C160,208.8,159.2,209.6,159.2,210.4z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M120,205.6h12.8c0,0,0.8,0,0.8-0.8l0,0l0,0c0,0,0-0.8-0.8-0.8H120C119.2,204.8,119.2,204.8,120,205.6L120,205.6L120,205.6C119.2,205.6,119.2,205.6,120,205.6z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"128,199.2 124.8,199.2 124.8,199.2 124.8,199.2 124.8,204 124.8,204.8 124.8,204.8 128,204.8 128,204.8 128,199.2\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"128.8,201.6 128.8,201.6 128.8,204.8 128.8,204.8 132,204.8 132,201.6 132,201.6\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M129.6,200H128l0,0l0,0v1.6l0,0c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8l0,0l0,0V200H132l0,0l0,0l0,0h-0.8l0,0H129.6L129.6,200L129.6,200L129.6,200L129.6,200L129.6,200L129.6,200z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M120,201.6L120,201.6L120,201.6h4c0,0,0.8,0,0.8-0.8V200H124l0,0h-0.8l0,0l0,0h-0.8l0,0l0,0h-0.8l0,0H120l0,0l0,0V201.6L120,201.6z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"120.8,204.8 120.8,204.8 124,204.8 123.2,201.6 120.8,201.6\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M156,205.6h12.8c0,0,0.8,0,0.8-0.8l0,0l0,0c0,0,0-0.8-0.8-0.8H156C156,204.8,155.2,204.8,156,205.6L156,205.6L156,205.6C155.2,205.6,156,205.6,156,205.6z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M160.8,199.2h3.2c0,0,0.8,0,0.8-0.8v-1.6l0,0l0,0H164v0.8h-0.8v-0.8l0,0l0,0h-0.8l0,0l0,0v0.8h-0.8v-0.8H160l0,0l0,0l0,0l0,0l0,0L160.8,199.2C160,199.2,160.8,199.2,160.8,199.2z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"164,199.2 160.8,199.2 160.8,204.8 160.8,204.8 164,204.8 164,204.8 164,199.2\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"164.8,201.6 164.8,201.6 164.8,204.8 164.8,204.8 168,204.8 168,201.6 168,201.6\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M165.6,200h-0.8l0,0l0,0v1.6l0,0c0,0,0,0.8,0.8,0.8h2.4c0,0,0.8,0,0.8-0.8l0,0l0,0V200H168l0,0l0,0l0,0h-0.8l0,0H165.6L165.6,200L165.6,200L165.6,200L165.6,200L165.6,200L165.6,200z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M156.8,201.6h3.2c0,0,0.8,0,0.8-0.8V200H160l0,0h-0.8l0,0l0,0h-0.8l0,0l0,0h-0.8l0,0h-0.8l0,0L156.8,201.6C156,201.6,156,201.6,156.8,201.6z\"\n />\n <polygon style={{ fill: '#FFFF00' }} points=\"156.8,201.6 156.8,204.8 160,204.8 160,201.6\" />\n </g>\n <g>\n <path\n style={{ fill: '#FFE600' }}\n d=\"M191.2,212.8h13.6c0,0,0.8,0,0.8-0.8c0,0,0-0.8-0.8-0.8h-3.2l0,0h3.2l0,0l0,0l-0.8-4.8l0,0l0,0c0,0,0.8,0,0.8-0.8c0,0,0-0.8-0.8-0.8l0,0h-12c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8l0,0v4.8l0,0l0,0h3.2l0,0H192C191.2,211.2,191.2,212,191.2,212.8L191.2,212.8z M196,208c-0.8,0.8-0.8,1.6-0.8,2.4C195.2,209.6,196,208.8,196,208z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M192,205.6h12.8c0,0,0.8,0,0.8-0.8l0,0l0,0c0,0,0-0.8-0.8-0.8H192C191.2,204.8,191.2,204.8,192,205.6L192,205.6L192,205.6C191.2,205.6,191.2,205.6,192,205.6z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M196.8,199.2h3.2c0,0,0.8,0,0.8-0.8v-1.6l0,0l0,0H200v0.8h-0.8v-0.8l0,0l0,0h-0.8l0,0l0,0v0.8h-0.8v-0.8h-0.8l0,0l0,0l0,0l0,0l0,0L196.8,199.2C196,199.2,196,199.2,196.8,199.2z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"200,199.2 196.8,199.2 196.8,204.8 196.8,204.8 200,204.8 200,204.8 200,199.2\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"200.8,201.6 200.8,201.6 200.8,204.8 200.8,204.8 204,204.8 204,201.6 204,201.6\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M200.8,200H200l0,0l0,0v1.6l0,0c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8l0,0l0,0V200H204l0,0l0,0l0,0h-0.8l0,0H200.8L200.8,200L200.8,200L200.8,200L200.8,200L200.8,200L200.8,200z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M192,201.6L192,201.6L192,201.6h4c0,0,0.8,0,0.8-0.8v-1.6H196v0.8h-0.8l0,0l0,0h-0.8l0,0l0,0h-0.8l0,0H192l0,0l0,0V201.6L192,201.6z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"192.8,201.6 192,204.8 192,204.8 195.2,204.8 195.2,201.6\"\n />\n </g>\n <g>\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M133.6,248.8C133.6,248.8,133.6,248,133.6,248.8l-4-0.8l0,0L133.6,248.8L133.6,248.8L133.6,248.8l-1.6-5.6l0,0l0,0c0,0,0.8,0,0.8-0.8s0-0.8-0.8-0.8l0,0h-12c0,0-0.8,0-0.8,0.8s0,0.8,0.8,0.8l0,0v4.8l0,0l0,0h3.2l0,0H120c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8L133.6,248.8C133.6,249.6,133.6,248.8,133.6,248.8z M123.2,247.2c0-0.8,0.8-1.6,0.8-2.4C124,245.6,123.2,246.4,123.2,247.2z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M132.8,240.8H120c0,0-0.8,0-0.8,0.8l0,0l0,0c0,0,0,0.8,0.8,0.8h12.8C132.8,242.4,132.8,241.6,132.8,240.8L132.8,240.8L132.8,240.8C132.8,241.6,132.8,240.8,132.8,240.8z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M124,233.6L124,233.6L124,233.6L124,233.6L124,233.6L124,233.6v1.6c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8v-1.6l0,0l0,0H128v0.8h-0.8v-0.8l0,0l0,0h-0.8l0,0l0,0v0.8h-0.8v-0.8H124z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"128,236 124.8,236 124.8,236 124.8,236 124.8,240.8 124.8,240.8 124.8,240.8 128,240.8 128,240.8 128,236\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"132,238.4 128.8,238.4 128.8,238.4 128.8,240.8 128.8,240.8 132,240.8 132,238.4\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M129.6,236h-0.8l0,0l0,0v1.6l0,0c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8l0,0l0,0V236h-0.8l0,0l0,0v0.8H132V236H129.6L129.6,236L129.6,236L129.6,236L129.6,236L129.6,236L129.6,236z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M120,236L120,236L120,236v1.6l0,0l0,0l0,0l0,0h3.2c0,0,0.8,0,0.8-0.8v-1.6h-0.8v0.8h-0.8v-0.8h-0.8v0.8h-0.8v-0.8H120V236z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"120.8,238.4 120.8,240.8 120.8,240.8 124,240.8 123.2,238.4 123.2,238.4\"\n />\n </g>\n <g>\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"195.2,280 194.4,279.2 192,280.8 194.4,283.2 196,281.6 196,281.6 196,281.6\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M185.6,274.4L185.6,274.4L185.6,274.4L185.6,274.4c-0.8,0-0.8,0.8-0.8,0.8l8.8,8.8h0.8l0,0l0,0v-0.8L185.6,274.4z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M193.6,284l-8.8-8.8H184v0.8l0,0l-4,3.2l0,0l0,0l2.4,2.4l0,0l-2.4-2.4h-0.8v0.8l9.6,9.6h0.8v-0.8l-2.4-2.4l0,0l2.4,2.4l0,0l0,0l3.2-4L193.6,284C193.6,285.6,193.6,285.6,193.6,284C193.6,284.8,193.6,284.8,193.6,284L193.6,284z M184,280.8c0.8-0.8,1.6-0.8,2.4-0.8C185.6,280,184.8,280.8,184,280.8z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M192.8,273.6C192.8,273.6,192.8,274.4,192.8,273.6l2.4,3.2h0.8l0.8-0.8l0,0l0,0l-0.8-0.8l-0.8,0.8l-0.8-0.8l0.8-0.8l0,0l0,0l-0.8-0.8l0,0l0,0l-0.8,0.8L192.8,273.6l0.8-0.8l-0.8-0.8l0,0l0,0l0,0l0,0L192.8,273.6z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"188.8,277.6 191.2,280 191.2,280 195.2,276.8 195.2,276.8 195.2,276.8 192.8,274.4\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M197.6,279.2L197.6,279.2L197.6,279.2h-0.8H197.6l-0.8-0.8l0,0l-0.8,0.8l-0.8-0.8l0.8-0.8l-0.8-0.8l0,0l0,0l0,0l-0.8,0.8l0,0v0.8l2.4,2.4h0.8l0,0l0,0L197.6,279.2L197.6,279.2L197.6,279.2z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M190.4,275.2L190.4,275.2L190.4,275.2C191.2,275.2,191.2,275.2,190.4,275.2l1.6-0.8l-0.8-0.8l-0.8,0.8l-0.8-0.8l0.8-0.8l-0.8-0.8l-0.8,0.8L188,272l0.8-0.8l-0.8-0.8l0,0l0,0l0,1.6v0.8L190.4,275.2z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"188.8,277.6 190.4,275.2 190.4,275.2 188,272.8 186.4,275.2 186.4,275.2\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M204.8,248h-3.2l0,0H204.8L204.8,248L204.8,248l-0.8-4.8l0,0l0,0c0,0,0.8,0,0.8-0.8s0-0.8-0.8-0.8l0,0h-12c0,0-0.8,0-0.8,0.8s0,0.8,0.8,0.8l0,0v4.8l0,0l0,0h3.2l0,0H192c0,0-0.8,0-0.8,0.8c0,0,0,0.8,0.8,0.8h13.6C204.8,249.6,205.6,248.8,204.8,248C205.6,248.8,204.8,248,204.8,248z M195.2,247.2c0-0.8,0.8-1.6,0.8-2.4C195.2,245.6,195.2,246.4,195.2,247.2z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M204.8,240.8H192c0,0-0.8,0-0.8,0.8l0,0l0,0c0,0,0,0.8,0.8,0.8h12.8C204.8,242.4,204.8,241.6,204.8,240.8C204.8,241.6,204.8,241.6,204.8,240.8L204.8,240.8C204.8,241.6,204.8,240.8,204.8,240.8z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M196,233.6L196,233.6L196,233.6v1.6c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8v-1.6l0,0l0,0H200v0.8h-0.8v-0.8l0,0l0,0h-0.8l0,0l0,0v0.8h-0.8v-0.8H196L196,233.6L196,233.6L196,233.6z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"199.2,236 196.8,236 196,240.8 196,240.8 200,240.8 200,240.8 199.2,236\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"204,238.4 200.8,238.4 200.8,238.4 200.8,240.8 200.8,240.8 204,240.8 204,238.4\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M200.8,236H200l0,0l0,0v0.8v0.8c0,0,0,0.8,0.8,0.8h3.2c0,0,0.8,0,0.8-0.8l0,0l0,0V236H204l0,0l0,0v0.8h-0.8V236H200.8L200.8,236L200.8,236L200.8,236L200.8,236L200.8,236L200.8,236z\"\n />\n <path\n style={{ fill: '#FFE600' }}\n d=\"M192.8,236H192l0,0l0,0v1.6l0,0l0,0h3.2c0,0,0.8,0,0.8-0.8v-1.6h-0.8v0.8h-0.8v-0.8L192.8,236L192.8,236L192.8,236L192.8,236L192.8,236z\"\n />\n <polygon\n style={{ fill: '#FFE600' }}\n points=\"192,238.4 192,238.4 192,240.8 192,240.8 195.2,240.8 195.2,238.4 195.2,238.4\"\n />\n </g>\n <g>\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"138.4,275.2 136,272.8 136,272.8 136,272.8 134.4,275.2 134.4,275.2 136,277.6\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M144.8,279.2C144,279.2,144,279.2,144.8,279.2l-3.2,2.4l0,0L144.8,279.2L144.8,279.2L144.8,279.2l-4-3.2l0,0v-0.8H140l0,0v-0.8h-0.8l-8.8,8.8v0.8l0,0l0,0l0,0v0.8l0,0l0,0l0,0l0,0l3.2,4l2.4-2.4l0,0l-2.4,2.4v0.8h0.8l9.6-9.6C144.8,280,144.8,280,144.8,279.2L144.8,279.2z M135.2,283.2c0,0.8,0,1.6,0.8,2.4C136,284.8,135.2,284,135.2,283.2z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M128,275.2l0.8,0.8h0.8l2.4-2.4v-0.8l-1.6-0.8l0,0l0,0l0.8,0.8l-0.8,0.8l-0.8-0.8l0,0l-0.8,0.8l0,0l0,0l0.8,0.8l-0.8,0.8L128,275.2L128,275.2L128,275.2L128,275.2L128,275.2z\"\n />\n <path style={{ fill: '#FFFF00' }} d=\"M132,274.4L132,274.4L132,274.4z\" />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"132,274.4 129.6,276.8 129.6,276.8 129.6,276.8 132.8,280 135.2,277.6 135.2,277.6 135.2,277.6\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M133.6,272.8L133.6,272.8v0.8V272.8l-0.8,0.8l0,0l0,0l0,0l0,0l0.8,0.8h0.8l2.4-2.4v-0.8l0,0l0,0l-0.8-0.8l-1.6,1.6l0,0l0,0l0.8,0.8l-0.8,0.8L133.6,272.8L133.6,272.8L133.6,272.8L133.6,272.8z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M130.4,278.4l-0.8-0.8l-0.8,0.8l0.8,0.8l-0.8,0.8l-0.8-1.6v0.8l0.8,0.8H128l-0.8-0.8l-0.8,0.8l0,0l0.8,0.8c0,0,0,0,0.8,0l0,0L130.4,278.4L130.4,278.4z\"\n />\n <polygon\n style={{ fill: '#FFFF00' }}\n points=\"132.8,280.8 130.4,279.2 130.4,279.2 130.4,279.2 128,280.8 130.4,283.2\"\n />\n </g>\n <path\n style={{ fill: '#FFE600' }}\n d=\"M162.4,169.6c-43.2,0-78.4,35.2-78.4,78.4s35.2,78.4,78.4,78.4s78.4-35.2,78.4-78.4C240.8,204.8,204.8,169.6,162.4,169.6z M209.6,194.4v62.4l0,0c0,12.8-5.6,24.8-13.6,32.8c-8.8,8.8-20,13.6-33.6,13.6c-12.8,0-24.8-5.6-32.8-13.6c-8.8-8.8-13.6-20-13.6-32.8l0,0v-62.4H209.6z\"\n />\n <path\n style={{ fill: '#FFFF00' }}\n d=\"M84,248c0,43.2,35.2,78.4,78.4,78.4l0,0V304l0,0c-12.8,0-24.8-5.6-32.8-13.6c-8.8-8.8-13.6-20-13.6-32.8l0,0v-62.4h47.2v-24l0,0C119.2,169.6,84,204.8,84,248z\"\n />\n <g>\n <path\n style={{ fill: '#005CB7' }}\n d=\"M162.4,256L162.4,256c1.6,0,3.2-0.8,4.8-1.6c0.8-0.8,1.6-2.4,1.6-4.8v-8.8h-6.4L162.4,256L162.4,256z\"\n />\n <path\n style={{ fill: '#005CB7' }}\n d=\"M162.4,236L162.4,236c1.6,0,3.2-0.8,4.8-1.6s1.6-2.4,1.6-4.8v-8.8h-6.4L162.4,236L162.4,236z\"\n />\n <path\n style={{ fill: '#005CB7' }}\n d=\"M162.4,276.8L162.4,276.8c1.6,0,3.2-0.8,4.8-1.6s1.6-2.4,1.6-4.8v-8.8h-6.4L162.4,276.8L162.4,276.8z\"\n />\n </g>\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagRU = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n fill=\"#E73B36\"\n d=\"M0,304v65.6C0,396.8,21.6,416,48,416h400c26.4,0,48-19.2,48-46.4V304H0z\"\n />\n <path\n fill=\"#F0F7F6\"\n d=\"M448,80H48C21.6,80,0,99.2,0,126.4V192h496v-65.6C496,99.2,474.4,80,448,80z\"\n />\n <rect y=\"192\" fill=\"#3757A6\" width=\"496\" height=\"112\" />\n <path fill=\"#D31C1C\" d=\"M446.4,416c26.4,0,49.6-19.2,49.6-46.4V304H315.2L446.4,416z\" />\n <path fill=\"#DFF2EF\" d=\"M448,80H48l132.8,112H496v-65.6C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#20448E\" points=\"316,304 496,304 496,192 180,192\" />\n <path fill=\"#CAEAE4\" d=\"M448,80H48l370.4,112H496v-65.6C496,99.2,474.4,80,448,80z\" />\n <polygon fill=\"#103577\" points=\"496,214.4 496,192 414.4,192\" />\n <path fill=\"#C41010\" d=\"M496,368.8c0,29.6-21.6,47.2-48,47.2H48c-26.4,0-48-20.8-48-48\" />\n </svg>\n);\n","import React from 'react';\nimport type { FlagProps } from './index';\n\nexport const FlagZH = ({ className = 'w-6 h-6' }: FlagProps) => (\n <svg className={className} viewBox=\"0 0 496 496\" xmlns=\"http://www.w3.org/2000/svg\">\n <path\n style={{ fill: '#ED3432' }}\n d=\"M496,369.6c0,27.2-21.6,46.4-48,46.4H48c-26.4,0-48-19.2-48-46.4V126.4C0,99.2,21.6,80,48,80h400c26.4,0,48,19.2,48,46.4V369.6z\"\n />\n <path\n style={{ fill: '#DD0000' }}\n d=\"M48,80h400c26.4,0,48,19.2,48,46.4v243.2c0,27.2-24.8,46.4-51.2,46.4\"\n />\n <g>\n <path style={{ fill: '#CC0202' }} d=\"M48,80h400c26.4,0,48,19.2,48,46.4V216\" />\n <path\n style={{ fill: '#CC0202' }}\n d=\"M496,368.8c0,29.6-21.6,47.2-48,47.2H48c-26.4,0-48-20.8-48-48\"\n />\n </g>\n <polygon\n style={{ fill: '#fdce0c' }}\n points=\"227.2,224 248,159.2 268.8,224 337.6,224 282.4,266.4 303.2,332 248,292 192.8,332.8 213.6,265.6 158.4,224\"\n transform=\"matrix(0.52254464,0,0,0.52254464,25.408929,115.59402)\"\n />\n <polygon\n style={{ fill: '#fdce0c' }}\n points=\"227.2,224 248,159.2 268.8,224 337.6,224 282.4,266.4 303.2,332 248,292 192.8,332.8 213.6,265.6 158.4,224\"\n transform=\"matrix(0,0.14397321,-0.14397321,0,243.1174,258.65464)\"\n />\n <polygon\n style={{ fill: '#fdce0c' }}\n points=\"227.2,224 248,159.2 268.8,224 337.6,224 282.4,266.4 303.2,332 248,292 192.8,332.8 213.6,265.6 158.4,224\"\n transform=\"matrix(-0.14397321,0,0,-0.14397321,275.02536,297.53741)\"\n />\n <polygon\n style={{ fill: '#fc9c10' }}\n points=\"248,159.2 268.8,224 337.6,224 282.4,266.4 303.2,332 248,292 192.8,332.8 213.6,265.6 158.4,224 227.2,224\"\n transform=\"matrix(-0.14397321,0,0,-0.14397321,275.02536,260.33741)\"\n />\n <polygon\n style={{ fill: '#fc9c10' }}\n points=\"158.4,224 227.2,224 248,159.2 268.8,224 337.6,224 282.4,266.4 303.2,332 248,292 192.8,332.8 213.6,265.6\"\n transform=\"matrix(0,0.14397321,-0.14397321,0,243.11741,156.35464)\"\n />\n </svg>\n);\n","import {\n FlagEN,\n FlagES,\n FlagPT,\n FlagFR,\n FlagIT,\n FlagRU,\n FlagJA,\n FlagDE,\n FlagZH,\n} from '@/app/components/LanguageSelector/flags';\n\nexport const ALL_LANGUAGES = {\n en: {\n name: {\n en: 'English',\n es: 'Inglés',\n pt: 'Inglês',\n fr: 'Anglais',\n it: 'Inglese',\n ru: 'Английский',\n ja: '英語',\n de: 'Englisch',\n zh: '英语',\n },\n flag: FlagEN,\n code: 'en',\n },\n es: {\n name: {\n en: 'Spanish',\n es: 'Español',\n pt: 'Espanhol',\n fr: 'Espagnol',\n it: 'Spagnolo',\n ru: 'Испанский',\n ja: 'スペイン語',\n de: 'Spanisch',\n zh: '西班牙语',\n },\n flag: FlagES,\n code: 'es',\n },\n pt: {\n name: {\n en: 'Portuguese',\n es: 'Portugués',\n pt: 'Português',\n fr: 'Portugais',\n it: 'Portoghese',\n ru: 'Португальский',\n ja: 'ポルトガル語',\n de: 'Portugiesisch',\n zh: '葡萄牙语',\n },\n flag: FlagPT,\n code: 'pt',\n },\n fr: {\n name: {\n en: 'French',\n es: 'Francés',\n pt: 'Francês',\n fr: 'Français',\n it: 'Francese',\n ru: 'Французский',\n ja: 'フランス語',\n de: 'Französisch',\n zh: '法语',\n },\n flag: FlagFR,\n code: 'fr',\n },\n it: {\n name: {\n en: 'Italian',\n es: 'Italiano',\n pt: 'Italiano',\n fr: 'Italien',\n it: 'Italiano',\n ru: 'Итальянский',\n ja: 'イタリア語',\n de: 'Italienisch',\n zh: '意大利语',\n },\n flag: FlagIT,\n code: 'it',\n },\n ru: {\n name: {\n en: 'Russian',\n es: 'Ruso',\n pt: 'Russo',\n fr: 'Russe',\n it: 'Russo',\n ru: 'Русский',\n ja: 'ロシア語',\n de: 'Russisch',\n zh: '俄语',\n },\n flag: FlagRU,\n code: 'ru',\n },\n ja: {\n name: {\n en: 'Japanese',\n es: 'Japonés',\n pt: 'Japonês',\n fr: 'Japonais',\n it: 'Giapponese',\n ru: 'Японский',\n ja: '日本語',\n de: 'Japanisch',\n zh: '日语',\n },\n flag: FlagJA,\n code: 'ja',\n },\n de: {\n name: {\n en: 'German',\n es: 'Alemán',\n pt: 'Alemão',\n fr: 'Allemand',\n it: 'Tedesco',\n ru: 'Немецкий',\n ja: 'ドイツ語',\n de: 'Deutsch',\n zh: '德语',\n },\n flag: FlagDE,\n code: 'de',\n },\n zh: {\n name: {\n en: 'Chinese (Simplified)',\n es: 'Chino (Simplificado)',\n pt: 'Chinês (Simplificado)',\n fr: 'Chinois (Simplifié)',\n it: 'Cinese (Semplificato)',\n ru: 'Китайский (Упрощенный)',\n ja: '中国語(簡体字)',\n de: 'Chinesisch (Vereinfacht)',\n zh: '简体中文',\n },\n flag: FlagZH,\n code: 'zh',\n },\n} as const;\n\nexport const DEFAULT_LANGUAGES = {\n en: ALL_LANGUAGES.en,\n es: ALL_LANGUAGES.es,\n} as const;\n\nexport const DEFAULT_AVAILABLE_LANGUAGES = ['en', 'es'] as const;\n\nexport const DEFAULT_SELECTED_LANGUAGE = 'en';\n\nexport const LANGUAGE_SELECTOR_DISPLAY_NAME = 'LanguageSelector';\n\nexport const LANGUAGE_SELECTOR_DROPDOWN_OFFSET = 8;\n","export const TABLE_CONTAINER_CLASS =\n 'w-full max-w-[75rem] border-separate border-spacing-0 bg-white rounded-xl overflow-hidden shadow-[0_0.25rem_0.75rem_rgba(0,0,0,0.08)]';\n\nexport const TABLE_HEADER_CELL_BASE =\n 'p-4 px-5 text-left uppercase text-[0.8125rem] font-semibold tracking-[0.08em] border-b-2';\n\nexport const TABLE_HEADER_CELL_SORTABLE =\n 'cursor-pointer select-none transition-all duration-200 relative active:scale-[0.98]';\n\nexport const TABLE_HEADER_CELL_RESPONSIVE =\n 'md:text-xs md:p-3 md:px-[0.9375rem] max-xs:text-[0.625rem] max-xs:tracking-[0.05em] max-xs:p-2.5 max-xs:px-3';\n\nexport const TABLE_ACTIONS_HEADER_CLASS =\n 'text-center w-[9.375rem] md:w-[7.5rem] max-xs:w-[6.25rem]';\n\nexport const TABLE_ACTIONS_CELL_CLASS = 'text-center whitespace-nowrap';\n\nexport const TABLE_SORT_ICON_CLASS =\n 'ml-1.5 inline-flex items-center opacity-80 transition-opacity duration-200 hover:opacity-100';\n\nexport const TABLE_SORT_ICON_SIZE = 'w-3.5 h-3.5';\n\nexport const TABLE_DEFAULT_NO_DATA_MESSAGE = 'No data available';\nexport const TABLE_DEFAULT_ACTIONS_LABEL = 'Actions';\n\n// Default colors\nexport const TABLE_DEFAULT_HEADER_BG_FROM = '#1F2937'; // gray-800\nexport const TABLE_DEFAULT_HEADER_BG_TO = '#111827'; // gray-900\nexport const TABLE_DEFAULT_HEADER_TEXT_COLOR = '#FFFFFF'; // white\nexport const TABLE_DEFAULT_HEADER_BORDER_COLOR = 'rgba(255, 255, 255, 0.2)';\nexport const TABLE_DEFAULT_HEADER_HOVER_BG = 'rgba(255, 255, 255, 0.15)';\nexport const TABLE_DEFAULT_ROW_BG = '#FFFFFF'; // white\nexport const TABLE_DEFAULT_ROW_EVEN_BG = '#F9FAFB'; // gray-50\nexport const TABLE_DEFAULT_ROW_HOVER_BG = 'rgba(37, 99, 235, 0.08)'; // blue-600/8%\nexport const TABLE_DEFAULT_CELL_TEXT_COLOR = '#111827'; // gray-900\nexport const TABLE_DEFAULT_CELL_BORDER_COLOR = '#E5E7EB'; // gray-200\nexport const TABLE_DEFAULT_ACTION_COLOR = '#2563EB'; // blue-600\nexport const TABLE_DEFAULT_ACTION_HOVER_COLOR = '#1D4ED8'; // blue-700\nexport const TABLE_DEFAULT_ACTION_DELETE_HOVER_COLOR = '#EF4444'; // red-500\nexport const TABLE_DEFAULT_NO_DATA_BG =\n 'linear-gradient(to bottom right, rgba(37, 99, 235, 0.03), rgba(37, 99, 235, 0.08))';\nexport const TABLE_DEFAULT_NO_DATA_TEXT_COLOR = '#4B5563'; // gray-600\nexport const TABLE_DEFAULT_NO_DATA_BORDER_COLOR = '#D1D5DB'; // gray-300\n\nexport const TABLE_DISPLAY_NAME = 'Table';\n","/**\n * Default color constants for BaseModal component\n */\n\n// Overlay colors\nexport const MODAL_DEFAULT_OVERLAY_BG = 'rgba(0, 0, 0, 0.5)';\nexport const MODAL_DEFAULT_BG = '#FFFFFF';\n\n// Header colors\nexport const MODAL_DEFAULT_HEADER_BG_FROM = '#1E90FF'; // PRIMARY\nexport const MODAL_DEFAULT_HEADER_BG_TO = '#1873CC'; // PRIMARY_HOVER\nexport const MODAL_DEFAULT_HEADER_TEXT_COLOR = '#FFFFFF';\n\n// Close button colors\nexport const MODAL_DEFAULT_CLOSE_BTN_BG = 'rgba(255, 255, 255, 0.2)';\nexport const MODAL_DEFAULT_CLOSE_BTN_HOVER_BG = 'rgba(255, 255, 255, 0.3)';\nexport const MODAL_DEFAULT_CLOSE_BTN_COLOR = '#FFFFFF';\n\n// Stats section colors\nexport const MODAL_DEFAULT_STATS_BG_FROM = '#F9FAFB';\nexport const MODAL_DEFAULT_STATS_BG_TO = '#E5E7EB';\nexport const MODAL_DEFAULT_STATS_BORDER_COLOR = '#D1D5DB';\nexport const MODAL_DEFAULT_STATS_NUMBER_COLOR = '#111827';\nexport const MODAL_DEFAULT_STATS_LABEL_COLOR = '#4B5563';\n\n// Scrollbar colors\nexport const MODAL_DEFAULT_SCROLLBAR_TRACK_COLOR = '#F3F4F6';\nexport const MODAL_DEFAULT_SCROLLBAR_THUMB_COLOR = '#1E90FF'; // PRIMARY\n\n// Confirmation modal colors\nexport const MODAL_DEFAULT_CONFIRM_OVERLAY_BG = 'rgba(0, 0, 0, 0.7)';\nexport const MODAL_DEFAULT_CONFIRM_HEADER_BG_FROM = '#EF4444'; // DANGER\nexport const MODAL_DEFAULT_CONFIRM_HEADER_BG_TO = '#DC2626'; // DANGER dark\nexport const MODAL_DEFAULT_CONFIRM_HEADER_TEXT_COLOR = '#FFFFFF';\nexport const MODAL_DEFAULT_CONFIRM_TEXT_COLOR = '#111827';\nexport const MODAL_DEFAULT_CONFIRM_FOOTER_BG = '#F9FAFB';\n\n// Confirmation buttons\nexport const MODAL_DEFAULT_CONTINUE_BTN_BORDER = '#1E90FF'; // PRIMARY\nexport const MODAL_DEFAULT_CONTINUE_BTN_COLOR = '#1E90FF'; // PRIMARY\nexport const MODAL_DEFAULT_CONTINUE_BTN_HOVER_BG = '#1E90FF'; // PRIMARY\nexport const MODAL_DEFAULT_CONTINUE_BTN_HOVER_COLOR = '#FFFFFF';\nexport const MODAL_DEFAULT_DISCARD_BTN_BG_FROM = '#EF4444'; // DANGER\nexport const MODAL_DEFAULT_DISCARD_BTN_BG_TO = '#DC2626'; // DANGER dark\nexport const MODAL_DEFAULT_DISCARD_BTN_COLOR = '#FFFFFF';\n\n// Default texts for i18n\nexport const MODAL_DEFAULT_TEXTS = {\n discardChangesTitle: 'Discard Changes?',\n unsavedChangesWarning:\n 'You have unsaved changes. Are you sure you want to close this modal? All changes will be lost.',\n continueEditing: 'Continue Editing',\n discardButton: 'Discard Changes',\n};\n","// Gallery Display Name\nexport const GALLERY_DISPLAY_NAME = 'Gallery';\n\n// Gallery Defaults\nexport const GALLERY_DEFAULTS = {\n BATCH_SIZE: 12,\n ENABLE_ANIMATION: true,\n OBSERVER_ROOT_MARGIN: '200px',\n ANIMATION_VIEWPORT_MARGIN: '-50px',\n} as const;\n\n// Gallery Animation\nexport const GALLERY_ANIMATION = {\n INITIAL: { opacity: 0, y: 20 },\n ANIMATE: { opacity: 1, y: 0 },\n DURATION: 0.4,\n EASE: 'easeOut',\n} as const;\n\n// Gallery Layout\nexport const GALLERY_LAYOUT = {\n CONTAINER: 'columns-1 sm:columns-2 lg:columns-3 gap-4',\n LOADER_HEIGHT: 'h-24',\n} as const;\n\n// Gallery Item Styles\nexport const GALLERY_ITEM = {\n WRAPPER: 'mb-4 break-inside-avoid',\n CONTAINER: 'relative overflow-hidden rounded-xl border bg-gray-100 cursor-pointer',\n SKELETON: 'absolute inset-0 animate-pulse',\n IMAGE: 'w-full h-auto transition-all duration-500 ease-out',\n OVERLAY: 'pointer-events-none absolute inset-0 transition-colors duration-300',\n} as const;\n\n// Gallery Border\nexport const GALLERY_BORDER = {\n RADIUS: 'rounded-xl',\n WIDTH: 'border',\n} as const;\n\n// Gallery Hover\nexport const GALLERY_HOVER = {\n SCALE: 'group-hover:scale-[1.03]',\n TRANSITION: 'transition-all duration-500 ease-out',\n} as const;\n","'use client';\n\nimport React, { useState, useRef, useEffect, useCallback, useMemo, CSSProperties } from 'react';\nimport { LanguageSelectorProps } from './models/LanguageSelector.interface';\nimport {\n LANGUAGE_SELECTOR_DROPDOWN_OFFSET,\n ALL_LANGUAGES,\n DEFAULT_AVAILABLE_LANGUAGES,\n DEFAULT_SELECTED_LANGUAGE,\n LANGUAGE_SELECTOR_DISPLAY_NAME,\n} from '@/app/constants';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, getContrastColor, lightenColor } from '@/app/utils/colorUtils';\n\nconst getButtonSizeStyles = (size: string): CSSProperties => {\n const sizeMap: Record<string, CSSProperties> = {\n sm: { width: '2rem', height: '2rem' },\n md: { width: '2.5rem', height: '2.5rem' },\n lg: { width: '3rem', height: '3rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getFlagSizeStyles = (size: string): CSSProperties => {\n const sizeMap: Record<string, CSSProperties> = {\n sm: { width: '1.5rem', height: '1.5rem' },\n md: { width: '2rem', height: '2rem' },\n lg: { width: '2.5rem', height: '2.5rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getButtonBaseStyles = (): CSSProperties => ({\n borderRadius: '9999px',\n overflow: 'hidden',\n transition: 'all 300ms',\n outline: 'none',\n border: '2px solid',\n cursor: 'pointer',\n padding: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nconst getDropdownBaseStyles = (): CSSProperties => ({\n position: 'fixed' as const,\n width: '12rem',\n borderRadius: '0.5rem',\n overflow: 'hidden',\n zIndex: 150,\n border: '2px solid',\n boxShadow: '0 4px 6px rgba(0, 0, 0, 0.1)',\n});\n\nconst getItemBaseStyles = (): CSSProperties => ({\n width: '100%',\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n padding: '0.75rem 1rem',\n transition: 'background-color 150ms, color 150ms',\n border: 'none',\n cursor: 'pointer',\n fontSize: '0.875rem',\n fontWeight: 500,\n textAlign: 'left' as const,\n});\n\nconst getFlagContainerStyles = (): CSSProperties => ({\n borderRadius: '9999px',\n overflow: 'hidden',\n flexShrink: 0,\n backgroundColor: '#ffffff',\n border: '2px solid',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nconst getCheckIconStyles = (): CSSProperties => ({\n width: '1.25rem',\n height: '1.25rem',\n marginLeft: 'auto',\n flexShrink: 0,\n});\n\nconst getFlagScaleStyles = (size: string): CSSProperties => {\n const scaleMap: Record<string, string> = {\n sm: 'scale(1.2, 1.7)',\n md: 'scale(2, 2.15)',\n lg: 'scale(2.2, 2.65)',\n };\n return {\n width: '100%',\n height: '100%',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n overflow: 'hidden',\n transform: scaleMap[size] || scaleMap.md,\n };\n};\n\nexport const LanguageSelector = React.forwardRef<HTMLButtonElement, LanguageSelectorProps>(\n (\n {\n selectedLanguage = DEFAULT_SELECTED_LANGUAGE,\n onLanguageChange,\n availableLanguages = DEFAULT_AVAILABLE_LANGUAGES as unknown as string[],\n size = 'md',\n buttonClassName,\n dropdownClassName,\n itemClassName,\n activeItemClassName,\n disableDefaultStyles = false,\n colors,\n customBorderColor,\n customBgColor,\n customTextColor,\n },\n ref,\n ) => {\n const [isOpen, setIsOpen] = useState(false);\n const [dropdownPosition, setDropdownPosition] = useState({\n top: 0,\n left: 0,\n openUpward: false,\n });\n const buttonRef = useRef<HTMLButtonElement>(null);\n const dropdownRef = useRef<HTMLDivElement>(null);\n\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const selectorColors = useMemo(() => {\n const defaultButtonBg = lightenColor(colorConfig.secondary, 70);\n const buttonBg = customBgColor || defaultButtonBg;\n const textColor = customTextColor || getContrastColor(buttonBg);\n const buttonBorder = customBorderColor || adjustOpacity(textColor, 0.2);\n const buttonBorderHover = colorConfig.accent || colorConfig.primary;\n const buttonBorderFocus = colorConfig.accent || colorConfig.primary;\n const dropdownBg = colorConfig.secondary;\n const dropdownBorder = adjustOpacity(colorConfig.primary, 0.2);\n const itemText = customTextColor || getContrastColor(dropdownBg);\n const itemHoverBg = adjustOpacity(colorConfig.primary, 0.1);\n const activeItemBg = adjustOpacity(colorConfig.primary, 0.15);\n const checkIconColor = colorConfig.primary;\n\n return {\n buttonBg,\n buttonBorder,\n buttonBorderHover,\n buttonBorderFocus,\n dropdownBg,\n dropdownBorder,\n itemText,\n itemHoverBg,\n activeItemBg,\n checkIconColor,\n };\n }, [colorConfig, customBorderColor, customBgColor, customTextColor]);\n\n const updateDropdownPosition = useCallback(() => {\n if (isOpen && buttonRef.current && dropdownRef.current) {\n const rect = buttonRef.current.getBoundingClientRect();\n const dropdownHeight = dropdownRef.current.offsetHeight;\n const viewportHeight = window.innerHeight;\n const spaceBelow = viewportHeight - rect.bottom;\n const spaceAbove = rect.top;\n const shouldOpenUpward = spaceBelow < dropdownHeight && spaceAbove > spaceBelow;\n\n setDropdownPosition({\n top: shouldOpenUpward ? rect.top : rect.bottom,\n left: rect.left,\n openUpward: shouldOpenUpward,\n });\n }\n }, [isOpen]);\n\n useEffect(() => {\n const handleClickOutside = (event: MouseEvent) => {\n if (\n dropdownRef.current &&\n !dropdownRef.current.contains(event.target as Node) &&\n buttonRef.current &&\n !buttonRef.current.contains(event.target as Node)\n ) {\n setIsOpen(false);\n }\n };\n\n if (isOpen) {\n document.addEventListener('mousedown', handleClickOutside);\n }\n\n return () => {\n document.removeEventListener('mousedown', handleClickOutside);\n };\n }, [isOpen]);\n\n useEffect(() => {\n updateDropdownPosition();\n }, [isOpen, updateDropdownPosition]);\n\n useEffect(() => {\n if (isOpen) {\n window.addEventListener('scroll', updateDropdownPosition, true);\n window.addEventListener('resize', updateDropdownPosition);\n\n return () => {\n window.removeEventListener('scroll', updateDropdownPosition, true);\n window.removeEventListener('resize', updateDropdownPosition);\n };\n }\n }, [isOpen, updateDropdownPosition]);\n\n const handleLanguageChange = (langKey: string) => {\n onLanguageChange?.(langKey);\n setIsOpen(false);\n };\n\n const filteredLanguages = availableLanguages.reduce(\n (acc, langCode) => {\n if (ALL_LANGUAGES[langCode as keyof typeof ALL_LANGUAGES]) {\n acc[langCode] = ALL_LANGUAGES[langCode as keyof typeof ALL_LANGUAGES];\n }\n return acc;\n },\n {} as Record<string, (typeof ALL_LANGUAGES)[keyof typeof ALL_LANGUAGES]>,\n );\n\n const currentLanguage =\n filteredLanguages[selectedLanguage as keyof typeof filteredLanguages] ||\n Object.values(filteredLanguages)[0];\n\n const getLanguageName = (lang: {\n name: string | Record<string, string>;\n flag: React.ComponentType<{ className?: string }>;\n code: string;\n }) => {\n if (typeof lang.name === 'string') {\n return lang.name;\n }\n return lang.name[selectedLanguage] || lang.name[Object.keys(lang.name)[0]] || '';\n };\n const languageEntries = Object.entries(filteredLanguages);\n\n const buttonStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n ...getButtonBaseStyles(),\n ...getButtonSizeStyles(size),\n backgroundColor: selectorColors.buttonBg,\n borderColor: selectorColors.buttonBorder,\n };\n\n const dropdownStyle: CSSProperties = {\n ...getDropdownBaseStyles(),\n top: dropdownPosition.openUpward\n ? 'auto'\n : `${dropdownPosition.top + LANGUAGE_SELECTOR_DROPDOWN_OFFSET}px`,\n bottom: dropdownPosition.openUpward\n ? `calc(100vh - ${dropdownPosition.top}px + ${LANGUAGE_SELECTOR_DROPDOWN_OFFSET}px)`\n : 'auto',\n left: `${dropdownPosition.left}px`,\n backgroundColor: selectorColors.dropdownBg,\n borderColor: selectorColors.dropdownBorder,\n };\n\n const setRefs = useCallback(\n (node: HTMLButtonElement | null) => {\n if (typeof ref === 'function') {\n ref(node);\n } else if (ref) {\n ref.current = node;\n }\n buttonRef.current = node;\n },\n [ref],\n );\n\n return (\n <>\n <button\n ref={setRefs}\n onClick={() => setIsOpen(!isOpen)}\n className={buttonClassName}\n style={buttonStyle}\n onMouseEnter={(e) => {\n e.currentTarget.style.borderColor = selectorColors.buttonBorderHover;\n e.currentTarget.style.transform = 'scale(1.1)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.borderColor = selectorColors.buttonBorder;\n e.currentTarget.style.transform = 'scale(1)';\n }}\n onFocus={(e) => {\n e.currentTarget.style.borderColor = selectorColors.buttonBorderFocus;\n e.currentTarget.style.boxShadow = `0 0 0 0.1875rem ${adjustOpacity(selectorColors.buttonBorderFocus, 0.1)}`;\n }}\n onBlur={(e) => {\n e.currentTarget.style.borderColor = selectorColors.buttonBorder;\n e.currentTarget.style.boxShadow = 'none';\n }}\n aria-label=\"Select language\"\n title={getLanguageName(currentLanguage)}\n >\n {currentLanguage?.flag && (\n <div style={getFlagScaleStyles(size)}>\n <currentLanguage.flag />\n </div>\n )}\n </button>\n\n {isOpen && (\n <div ref={dropdownRef} className={dropdownClassName} style={dropdownStyle}>\n {languageEntries.map(([key, lang]) => {\n const isActive = selectedLanguage === key;\n\n const itemStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n ...getItemBaseStyles(),\n color: selectorColors.itemText,\n backgroundColor: isActive ? selectorColors.activeItemBg : 'transparent',\n };\n\n const flagContainerStyle: CSSProperties = {\n ...getFlagContainerStyles(),\n ...getFlagSizeStyles(size),\n borderColor: selectorColors.dropdownBorder,\n };\n\n return (\n <button\n key={key}\n onClick={() => handleLanguageChange(key)}\n className={isActive ? activeItemClassName : itemClassName}\n style={itemStyle}\n onMouseEnter={(e) => {\n if (!isActive) {\n e.currentTarget.style.backgroundColor = selectorColors.itemHoverBg;\n }\n }}\n onMouseLeave={(e) => {\n if (!isActive) {\n e.currentTarget.style.backgroundColor = 'transparent';\n }\n }}\n >\n <div style={flagContainerStyle}>\n <div style={getFlagScaleStyles(size)}>\n <lang.flag />\n </div>\n </div>\n <span>{getLanguageName(lang)}</span>\n {isActive && (\n <svg\n style={{\n ...getCheckIconStyles(),\n color: selectorColors.checkIconColor,\n }}\n fill=\"currentColor\"\n viewBox=\"0 0 20 20\"\n >\n <path\n fillRule=\"evenodd\"\n d=\"M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z\"\n clipRule=\"evenodd\"\n />\n </svg>\n )}\n </button>\n );\n })}\n </div>\n )}\n </>\n );\n },\n);\n\nLanguageSelector.displayName = LANGUAGE_SELECTOR_DISPLAY_NAME;\n","type ThemeIconProps = {\n mode: 'light' | 'dark';\n size?: number;\n className?: string;\n};\n\nexport const ThemeIcon = ({ mode, size = 24, className }: ThemeIconProps) => {\n const zoomAnimation = `\n @keyframes zoomInSun {\n 0% { \n transform: scale(0.7) rotate(-90deg); \n opacity: 0; \n }\n 60% { \n transform: scale(1.15) rotate(0deg); \n opacity: 1; \n }\n 100% { \n transform: scale(1) rotate(0deg); \n opacity: 1; \n }\n }\n\n @keyframes zoomInMoon {\n 0% { \n transform: scale(0.7) rotate(90deg); \n opacity: 0; \n }\n 60% { \n transform: scale(1.15) rotate(0deg); \n opacity: 1; \n }\n 100% { \n transform: scale(1) rotate(0deg); \n opacity: 1; \n }\n }\n\n @keyframes zoomOutSun {\n 0% { \n transform: scale(1) rotate(0deg); \n opacity: 1; \n }\n 100% { \n transform: scale(0.7) rotate(90deg); \n opacity: 0; \n }\n }\n\n @keyframes zoomOutMoon {\n 0% { \n transform: scale(1) rotate(0deg); \n opacity: 1; \n }\n 100% { \n transform: scale(0.7) rotate(-90deg); \n opacity: 0; \n }\n }\n `;\n\n return (\n <>\n <style>{zoomAnimation}</style>\n <svg\n width={size}\n height={size}\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n xmlns=\"http://www.w3.org/2000/svg\"\n className={className}\n >\n <g\n style={{\n transformOrigin: 'center',\n animation:\n mode === 'light'\n ? 'zoomInSun 0.5s ease-out forwards'\n : 'zoomOutSun 0.4s ease-in forwards',\n }}\n >\n <circle cx=\"12\" cy=\"12\" r=\"4\" fill=\"#E6B95C\" />\n <path d=\"M12 2L13.5 6.5L12 5L10.5 6.5L12 2Z\" fill=\"#E6B95C\" />\n <path d=\"M12 22L13.5 17.5L12 19L10.5 17.5L12 22Z\" fill=\"#E6B95C\" />\n <path d=\"M2 12L6.5 10.5L5 12L6.5 13.5L2 12Z\" fill=\"#E6B95C\" />\n <path d=\"M22 12L17.5 10.5L19 12L17.5 13.5L22 12Z\" fill=\"#E6B95C\" />\n <path d=\"M5.6 5.6L9.2 9.2L7.8 7.8L9.2 6.4L5.6 5.6Z\" fill=\"#E6B95C\" />\n <path d=\"M18.4 18.4L14.8 14.8L16.2 16.2L14.8 17.6L18.4 18.4Z\" fill=\"#E6B95C\" />\n <path d=\"M18.4 5.6L14.8 9.2L16.2 7.8L14.8 6.4L18.4 5.6Z\" fill=\"#E6B95C\" />\n <path d=\"M5.6 18.4L9.2 14.8L7.8 16.2L9.2 17.6L5.6 18.4Z\" fill=\"#E6B95C\" />\n </g>\n\n <g\n style={{\n transformOrigin: 'center',\n animation:\n mode === 'dark'\n ? 'zoomInMoon 0.5s ease-out forwards'\n : 'zoomOutMoon 0.4s ease-in forwards',\n }}\n >\n <path\n d=\"M20 15.31C18.76 16.42 17.11 17.1 15.3 17.1C11.42 17.1 8.28 13.96 8.28 10.08C8.28 8.27 8.96 6.62 10.07 5.38C6.12 6.05 3.18 9.52 3.18 13.68C3.18 18.27 6.91 22 11.5 22C15.66 22 19.13 19.06 19.8 15.11L20 15.31Z\"\n fill=\"#C9D1D9\"\n />\n <circle cx=\"11\" cy=\"9\" r=\"1.2\" fill=\"#C9D1D9\" opacity=\"0.6\" />\n <circle cx=\"14\" cy=\"11\" r=\"0.8\" fill=\"#C9D1D9\" opacity=\"0.5\" />\n <circle cx=\"9.5\" cy=\"13\" r=\"1.5\" fill=\"#C9D1D9\" opacity=\"0.4\" />\n <path d=\"M15 7L15.8 8.5L15 8L14.2 8.5L15 7Z\" fill=\"#C9D1D9\" opacity=\"0.7\" />\n <path d=\"M17.5 11L18.2 12.2L17.5 11.8L16.8 12.2L17.5 11Z\" fill=\"#C9D1D9\" opacity=\"0.6\" />\n </g>\n </svg>\n </>\n );\n};\n","'use client';\n\nimport React, { useMemo, CSSProperties } from 'react';\nimport { ThemeSelectorProps } from './models/ThemeSelector.interface';\nimport { ThemeIcon } from './icons/ThemeIcon';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, getContrastColor } from '@/app/utils/colorUtils';\n\nconst getButtonSizeStyles = (size: string): CSSProperties => {\n const sizeMap: Record<string, CSSProperties> = {\n sm: { width: '2rem', height: '2rem' },\n md: { width: '2.5rem', height: '2.5rem' },\n lg: { width: '3rem', height: '3rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getIconSizeStyles = (size: string): number => {\n const sizeMap: Record<string, number> = {\n sm: 32,\n md: 42,\n lg: 54,\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getButtonBaseStyles = (): CSSProperties => ({\n borderRadius: '9999px',\n overflow: 'hidden',\n transition: 'all 300ms',\n outline: 'none',\n border: '2px solid',\n cursor: 'pointer',\n padding: 0,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n position: 'relative',\n});\n\nexport const ThemeSelector = React.forwardRef<HTMLButtonElement, ThemeSelectorProps>(\n (\n {\n theme = 'light',\n onThemeChange,\n size = 'md',\n buttonClassName,\n disableDefaultStyles = false,\n colors,\n customBorderColor,\n customBgColor,\n },\n ref,\n ) => {\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const selectorColors = useMemo(() => {\n const buttonBg = customBgColor || '#000000';\n const textColor = getContrastColor(buttonBg);\n const buttonBorder = customBorderColor || adjustOpacity(textColor, 0.2);\n const buttonBorderHover = colorConfig.accent || colorConfig.primary;\n\n return {\n buttonBg,\n buttonBorder,\n buttonBorderHover,\n };\n }, [colorConfig, customBorderColor, customBgColor]);\n\n const handleThemeToggle = () => {\n const newTheme = theme === 'light' ? 'dark' : 'light';\n onThemeChange?.(newTheme);\n };\n\n const buttonStyle: CSSProperties = disableDefaultStyles\n ? {}\n : {\n ...getButtonBaseStyles(),\n ...getButtonSizeStyles(size),\n backgroundColor: selectorColors.buttonBg,\n borderColor: selectorColors.buttonBorder,\n };\n\n const iconSize = getIconSizeStyles(size);\n\n return (\n <button\n ref={ref}\n onClick={handleThemeToggle}\n className={buttonClassName}\n style={\n disableDefaultStyles\n ? {}\n : {\n ...buttonStyle,\n ...(buttonClassName\n ? {}\n : { '&:hover': { borderColor: selectorColors.buttonBorderHover } }),\n }\n }\n onMouseEnter={(e) => {\n if (!disableDefaultStyles) {\n e.currentTarget.style.borderColor = selectorColors.buttonBorderHover;\n }\n }}\n onMouseLeave={(e) => {\n if (!disableDefaultStyles) {\n e.currentTarget.style.borderColor = selectorColors.buttonBorder;\n }\n }}\n aria-label={`Switch to ${theme === 'light' ? 'dark' : 'light'} theme`}\n >\n <ThemeIcon mode={theme} size={iconSize} />\n </button>\n );\n },\n);\n\nThemeSelector.displayName = 'ThemeSelector';\n","// Display name constant\nexport const ACTION_ICON_DISPLAY_NAME = 'ActionIcon';\n","'use client';\n\nimport React, { useState, useMemo, CSSProperties } from 'react';\nimport { ActionIconProps } from './models/ActionIcon.interface';\nimport { ACTION_ICON_DISPLAY_NAME } from '@/app/constants/components/actionicon/styles.constants';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { getHoverColor, adjustOpacity } from '@/app/utils/colorUtils';\n\nconst SIZE_CONFIG = {\n sm: {\n padding: '0.1875rem',\n margin: '0.0625rem',\n iconSize: '0.875rem',\n },\n md: {\n padding: '0.25rem',\n margin: '0.0625rem',\n iconSize: '1rem',\n },\n lg: {\n padding: '0.375rem',\n margin: '0.125rem',\n iconSize: '1.25rem',\n },\n} as const;\n\nexport const ActionIcon: React.FC<ActionIconProps> = ({\n icon: Icon,\n onClick,\n title,\n size = 'md',\n className = '',\n disabled = false,\n colors,\n customColor,\n customBg,\n}) => {\n const [isHovered, setIsHovered] = useState(false);\n const [isActive, setIsActive] = useState(false);\n\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n const sizeConfig = SIZE_CONFIG[size];\n\n const iconColors = useMemo(() => {\n const baseColor = customColor || colorConfig.primary;\n const hoverColor = getHoverColor(baseColor);\n const hoverBg = customBg ? getHoverColor(customBg, 5) : adjustOpacity(baseColor, 0.1);\n const disabledColor = adjustOpacity(baseColor, 0.4);\n\n return {\n color: baseColor,\n hoverColor,\n hoverBg,\n disabledColor,\n };\n }, [colorConfig, customColor, customBg]);\n\n const getButtonStyles = (): CSSProperties => {\n const baseStyles: CSSProperties = {\n background: 'transparent',\n border: 'none',\n cursor: disabled ? 'not-allowed' : 'pointer',\n transition: 'all 200ms ease-in-out',\n borderRadius: '0.375rem',\n display: 'inline-flex',\n alignItems: 'center',\n justifyContent: 'center',\n padding: sizeConfig.padding,\n marginLeft: sizeConfig.margin,\n marginRight: sizeConfig.margin,\n opacity: disabled ? 0.5 : 1,\n color: disabled ? iconColors.disabledColor : iconColors.color,\n backgroundColor: isHovered && !disabled ? iconColors.hoverBg : 'transparent',\n transform:\n isHovered && !disabled\n ? 'translateY(-0.125rem)'\n : isActive && !disabled\n ? 'translateY(0)'\n : 'none',\n };\n\n return baseStyles;\n };\n\n const getIconStyles = (): CSSProperties => ({\n width: sizeConfig.iconSize,\n height: sizeConfig.iconSize,\n transition: 'transform 200ms ease-in-out',\n transform: isHovered && !disabled ? 'scale(1.1)' : 'scale(1)',\n });\n\n return (\n <button\n onClick={disabled ? undefined : onClick}\n title={title}\n className={className}\n disabled={disabled}\n type=\"button\"\n style={getButtonStyles()}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => {\n setIsHovered(false);\n setIsActive(false);\n }}\n onMouseDown={() => setIsActive(true)}\n onMouseUp={() => setIsActive(false)}\n >\n <Icon style={getIconStyles()} />\n </button>\n );\n};\n\nActionIcon.displayName = ACTION_ICON_DISPLAY_NAME;\n\nexport default ActionIcon;\n","'use client';\n\nimport React, { useState, useEffect, useMemo, CSSProperties } from 'react';\nimport { createPortal } from 'react-dom';\nimport { LoaderProps } from './models/Loader.interface';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, darkenColor } from '@/app/utils/colorUtils';\n\nconst LOADER_DISPLAY_NAME = 'Loader';\nconst LOADER_DEFAULT_SIZE = 'md';\nconst LOADER_DEFAULT_VARIANT = 'spinner';\n\nconst getLoaderSizeStyles = (size: string): { width: string; height: string } => {\n const sizeMap: Record<string, { width: string; height: string }> = {\n sm: { width: '2rem', height: '2rem' },\n md: { width: '3rem', height: '3rem' },\n lg: { width: '4rem', height: '4rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getTextSizeStyles = (size: string): { fontSize: string } => {\n const sizeMap: Record<string, { fontSize: string }> = {\n sm: { fontSize: '0.875rem' },\n md: { fontSize: '1rem' },\n lg: { fontSize: '1.125rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nconst getDotSizeStyles = (size: string): { width: string; height: string } => {\n const sizeMap: Record<string, { width: string; height: string }> = {\n sm: { width: '0.5rem', height: '0.5rem' },\n md: { width: '0.75rem', height: '0.75rem' },\n lg: { width: '1rem', height: '1rem' },\n };\n return sizeMap[size] || sizeMap.md;\n};\n\nexport const Loader: React.FC<LoaderProps> = ({\n text,\n size = LOADER_DEFAULT_SIZE,\n variant = LOADER_DEFAULT_VARIANT,\n fullScreen = false,\n overlay = true,\n colors,\n customOverlayColor,\n customSpinnerColor,\n}) => {\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n const loaderColors = useMemo(() => {\n const spinnerColor = customSpinnerColor || colorConfig.primary;\n const overlayColor =\n customOverlayColor || adjustOpacity(darkenColor(colorConfig.secondary, 80), 0.5);\n\n return {\n spinner: spinnerColor,\n overlay: overlayColor,\n };\n }, [colorConfig, customSpinnerColor, customOverlayColor]);\n\n const [mounted, setMounted] = useState(false);\n\n useEffect(() => {\n const timer = setTimeout(() => setMounted(true), fullScreen ? 0 : 0);\n return () => {\n clearTimeout(timer);\n setMounted(false);\n };\n }, [fullScreen]);\n\n if (fullScreen && !mounted) return null;\n\n const sizeStyles = getLoaderSizeStyles(size);\n const textSizeStyles = getTextSizeStyles(size);\n const dotSizeStyles = getDotSizeStyles(size);\n\n const containerStyle: CSSProperties = fullScreen\n ? {\n position: 'fixed',\n top: 0,\n left: 0,\n width: '100vw',\n height: '100vh',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1005,\n backdropFilter: overlay ? 'blur(4px)' : undefined,\n backgroundColor: overlay ? loaderColors.overlay : undefined,\n }\n : {\n position: 'relative',\n width: '100%',\n height: '100%',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n backgroundColor: overlay ? loaderColors.overlay : undefined,\n };\n\n const contentContainerStyle: CSSProperties = {\n display: 'flex',\n flexDirection: 'column',\n alignItems: 'center',\n gap: '1rem',\n };\n\n const spinnerContainerStyle: CSSProperties = {\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n };\n\n const dotsContainerStyle: CSSProperties = {\n display: 'flex',\n gap: '0.5rem',\n };\n\n const pulseContainerStyle: CSSProperties = {\n position: 'relative',\n };\n\n const textStyle: CSSProperties = {\n ...textSizeStyles,\n color: 'white',\n fontWeight: 500,\n animation: 'pulse-text 1.5s ease-in-out infinite',\n };\n\n const renderSpinner = () => (\n <div style={spinnerContainerStyle}>\n <style>{`\n @keyframes spin-modern {\n 0% { transform: rotate(0deg); }\n 100% { transform: rotate(360deg); }\n }\n @keyframes pulse-ring {\n 0% { transform: scale(0.8); opacity: 0.8; }\n 50% { transform: scale(1); opacity: 0.4; }\n 100% { transform: scale(0.8); opacity: 0.8; }\n }\n .modern-spinner {\n border: 3px solid transparent;\n border-top-color: ${loaderColors.spinner};\n border-right-color: ${loaderColors.spinner};\n border-radius: 50%;\n animation: spin-modern 0.8s cubic-bezier(0.4, 0, 0.2, 1) infinite;\n position: relative;\n }\n .modern-spinner::before {\n content: '';\n position: absolute;\n top: -3px;\n left: -3px;\n right: -3px;\n bottom: -3px;\n border: 3px solid ${loaderColors.spinner}20;\n border-radius: 50%;\n animation: pulse-ring 1.5s ease-in-out infinite;\n }\n `}</style>\n <div className=\"modern-spinner\" style={sizeStyles} />\n </div>\n );\n\n const renderDots = () => (\n <div style={dotsContainerStyle}>\n <style>{`\n @keyframes bounce-dot {\n 0%, 80%, 100% { transform: translateY(0) scale(1); }\n 40% { transform: translateY(-10px) scale(1.1); }\n }\n .dot-1 { animation: bounce-dot 1.4s infinite ease-in-out; }\n .dot-2 { animation: bounce-dot 1.4s infinite ease-in-out 0.2s; }\n .dot-3 { animation: bounce-dot 1.4s infinite ease-in-out 0.4s; }\n `}</style>\n <div\n className=\"dot-1\"\n style={{ ...dotSizeStyles, borderRadius: '9999px', backgroundColor: loaderColors.spinner }}\n />\n <div\n className=\"dot-2\"\n style={{ ...dotSizeStyles, borderRadius: '9999px', backgroundColor: loaderColors.spinner }}\n />\n <div\n className=\"dot-3\"\n style={{ ...dotSizeStyles, borderRadius: '9999px', backgroundColor: loaderColors.spinner }}\n />\n </div>\n );\n\n const renderPulse = () => (\n <div style={pulseContainerStyle}>\n <style>{`\n @keyframes pulse-scale {\n 0%, 100% { transform: scale(0.8); opacity: 1; }\n 50% { transform: scale(1.2); opacity: 0.6; }\n }\n @keyframes pulse-outer {\n 0% { transform: scale(0.8); opacity: 0.8; }\n 100% { transform: scale(1.5); opacity: 0; }\n }\n .pulse-core {\n border-radius: 50%;\n animation: pulse-scale 1.5s ease-in-out infinite;\n }\n .pulse-ring {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translate(-50%, -50%);\n border-radius: 50%;\n border: 2px solid ${loaderColors.spinner};\n animation: pulse-outer 1.5s ease-out infinite;\n }\n @keyframes pulse-text {\n 0%, 100% { opacity: 1; }\n 50% { opacity: 0.5; }\n }\n `}</style>\n <div style={{ position: 'relative', width: '4rem', height: '4rem' }}>\n <div\n className=\"pulse-core\"\n style={{ ...sizeStyles, backgroundColor: loaderColors.spinner }}\n />\n <div className=\"pulse-ring\" style={{ ...sizeStyles, width: '100%', height: '100%' }} />\n </div>\n </div>\n );\n\n const loaderContent = (\n <div style={containerStyle}>\n <div style={contentContainerStyle}>\n {variant === 'spinner' && renderSpinner()}\n {variant === 'dots' && renderDots()}\n {variant === 'pulse' && renderPulse()}\n {text && <p style={textStyle}>{text}</p>}\n </div>\n </div>\n );\n\n return fullScreen ? createPortal(loaderContent, document.body) : loaderContent;\n};\n\nLoader.displayName = LOADER_DISPLAY_NAME;\n\nexport default Loader;\n","'use client';\n\nimport React, { CSSProperties } from 'react';\nimport { TableProps } from './models/Table.interface';\nimport ActionIcon from '../ActionIcon/ActionIcon';\nimport {\n TABLE_DEFAULT_NO_DATA_MESSAGE,\n TABLE_DEFAULT_ACTIONS_LABEL,\n TABLE_DISPLAY_NAME,\n} from '@/app/constants/components/table/styles.constants';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { darkenColor, lightenColor, getContrastColor, adjustOpacity } from '@/app/utils/colorUtils';\n\nconst getTableContainerStyles = (): CSSProperties => ({\n width: '100%',\n maxWidth: '75rem',\n borderCollapse: 'separate' as const,\n borderSpacing: 0,\n borderRadius: '0.75rem',\n overflow: 'hidden',\n boxShadow: '0 0.25rem 0.75rem rgba(0, 0, 0, 0.08)',\n});\n\nconst getNoDataStyles = (): CSSProperties => ({\n textAlign: 'center' as const,\n padding: '2rem 1.25rem',\n fontSize: '1rem',\n fontWeight: 500,\n borderRadius: '0.75rem',\n border: '2px dashed',\n maxWidth: '75rem',\n width: '100%',\n});\n\nconst getHeaderCellBaseStyles = (): CSSProperties => ({\n padding: '0.625rem 1.25rem',\n textAlign: 'left' as const,\n textTransform: 'uppercase' as const,\n fontSize: '0.8125rem',\n fontWeight: 600,\n letterSpacing: '0.08em',\n borderBottom: '2px solid',\n userSelect: 'none' as const,\n whiteSpace: 'nowrap' as const,\n});\n\nconst getHeaderCellSortableStyles = (): CSSProperties => ({\n cursor: 'pointer',\n transition: 'all 200ms',\n position: 'relative' as const,\n});\n\nconst getTheadStyles = (): CSSProperties => ({\n position: 'sticky' as const,\n top: 0,\n zIndex: 10,\n});\n\nconst getActionsHeaderStyles = (): CSSProperties => ({\n textAlign: 'center' as const,\n width: '9.375rem',\n});\n\nconst getSortIconContainerStyles = (): CSSProperties => ({\n marginLeft: '0.375rem',\n display: 'inline-flex',\n alignItems: 'center',\n verticalAlign: 'middle',\n opacity: 0.8,\n transition: 'opacity 200ms',\n});\n\nconst getSortIconStyles = (): CSSProperties => ({\n width: '0.875rem',\n height: '0.875rem',\n});\n\nconst getBodyCellStyles = (): CSSProperties => ({\n padding: '0.5rem 1.25rem',\n textAlign: 'left' as const,\n fontSize: '0.875rem',\n fontWeight: 500,\n borderBottom: '1px solid',\n});\n\nconst getActionsCellStyles = (): CSSProperties => ({\n textAlign: 'center' as const,\n whiteSpace: 'nowrap' as const,\n lineHeight: 1,\n verticalAlign: 'middle' as const,\n});\n\nconst getRowStyles = (): CSSProperties => ({\n transition: 'all 200ms',\n});\n\nconst ArrowUpDown: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m21 16-4 4-4-4\" />\n <path d=\"M17 20V4\" />\n <path d=\"m3 8 4-4 4 4\" />\n <path d=\"M7 4v16\" />\n </svg>\n);\n\nconst ArrowUp: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"m5 12 7-7 7 7\" />\n <path d=\"M12 19V5\" />\n </svg>\n);\n\nconst ArrowDown: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M12 5v14\" />\n <path d=\"m19 12-7 7-7-7\" />\n </svg>\n);\n\nconst InfoIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <circle cx=\"12\" cy=\"12\" r=\"10\" />\n <path d=\"M12 16v-4\" />\n <path d=\"M12 8h.01\" />\n </svg>\n);\n\nconst EditIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M17 3a2.85 2.83 0 1 1 4 4L7.5 20.5 2 22l1.5-5.5Z\" />\n <path d=\"m15 5 4 4\" />\n </svg>\n);\n\nconst TrashIcon: React.FC<React.SVGProps<SVGSVGElement>> = (props) => (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"24\"\n height=\"24\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n {...props}\n >\n <path d=\"M3 6h18\" />\n <path d=\"M19 6v14c0 1-1 2-2 2H7c-1 0-2-1-2-2V6\" />\n <path d=\"M8 6V4c0-1 1-2 2-2h4c1 0 2 1 2 2v2\" />\n </svg>\n);\n\nexport const Table = <T extends Record<string, unknown>>({\n columns = [],\n data = [],\n onInfo,\n onEdit,\n onDelete,\n sortField,\n sortDirection = 'asc',\n onSort,\n noDataMessage = TABLE_DEFAULT_NO_DATA_MESSAGE,\n showActions = true,\n actionConfig = { info: true, edit: true, delete: true },\n actionsLabel = TABLE_DEFAULT_ACTIONS_LABEL,\n infoIcon = InfoIcon,\n editIcon = EditIcon,\n deleteIcon = TrashIcon,\n colors = DEFAULT_COLOR_CONFIG,\n customHeaderBg,\n customRowBg,\n}: TableProps<T>) => {\n const headerBgFrom = customHeaderBg || colors.primary;\n const headerBgTo = customHeaderBg || colors.secondary;\n const headerTextColor = getContrastColor(headerBgFrom);\n const headerBorderColor = adjustOpacity(headerTextColor, 0.1);\n const headerHoverBg = adjustOpacity(headerTextColor, 0.1);\n const rowBg = customRowBg || darkenColor(colors.secondary, 60);\n const rowEvenBg = customRowBg || darkenColor(colors.secondary, 55);\n const rowHoverBg = lightenColor(rowBg, 8);\n const cellTextColor = getContrastColor(rowBg);\n const cellBorderColor = adjustOpacity(cellTextColor, 0.1);\n const actionDeleteHoverColor = colors.danger || darkenColor(colors.accent, 20);\n const noDataBg = rowBg;\n const noDataTextColor = adjustOpacity(cellTextColor, 0.6);\n const noDataBorderColor = adjustOpacity(cellTextColor, 0.1);\n\n const noDataStyle: CSSProperties = {\n ...getNoDataStyles(),\n background: noDataBg,\n color: noDataTextColor,\n borderColor: noDataBorderColor,\n };\n\n const getSortIcon = (field: string) => {\n if (sortField !== field) {\n return <ArrowUpDown style={getSortIconStyles()} />;\n }\n return sortDirection === 'asc' ? (\n <ArrowUp style={getSortIconStyles()} />\n ) : (\n <ArrowDown style={getSortIconStyles()} />\n );\n };\n\n const handleSort = (field: string) => {\n if (onSort && field) {\n onSort(field);\n }\n };\n\n if (data.length === 0) {\n return <div style={noDataStyle}>{noDataMessage}</div>;\n }\n\n return (\n <table style={getTableContainerStyles()}>\n <thead style={getTheadStyles()}>\n <tr\n style={{\n background: `linear-gradient(to right, ${headerBgFrom}, ${headerBgTo})`,\n color: headerTextColor,\n }}\n >\n {columns.map((column, index) =>\n column.sortable ? (\n <th\n key={column.key || index}\n onClick={() => handleSort(column.key)}\n style={{\n ...getHeaderCellBaseStyles(),\n ...getHeaderCellSortableStyles(),\n borderBottomColor: headerBorderColor,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = headerHoverBg;\n const icon = e.currentTarget.querySelector('.sort-icon') as HTMLElement;\n if (icon) icon.style.opacity = '1';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n const icon = e.currentTarget.querySelector('.sort-icon') as HTMLElement;\n if (icon) icon.style.opacity = '0.8';\n }}\n onMouseDown={(e) => {\n e.currentTarget.style.transform = 'scale(0.98)';\n }}\n onMouseUp={(e) => {\n e.currentTarget.style.transform = 'scale(1)';\n }}\n >\n {column.label}{' '}\n <span className=\"sort-icon\" style={getSortIconContainerStyles()}>\n {getSortIcon(column.key)}\n </span>\n </th>\n ) : (\n <th\n key={column.key || index}\n style={{\n ...getHeaderCellBaseStyles(),\n borderBottomColor: headerBorderColor,\n }}\n >\n {column.label}\n </th>\n ),\n )}\n {showActions && (\n <th\n style={{\n ...getHeaderCellBaseStyles(),\n ...getActionsHeaderStyles(),\n borderBottomColor: headerBorderColor,\n }}\n >\n {actionsLabel}\n </th>\n )}\n </tr>\n </thead>\n <tbody>\n {data.map((item, rowIndex) => (\n <tr\n key={(item as { id?: string | number }).id || rowIndex}\n style={{\n ...getRowStyles(),\n backgroundColor: rowIndex % 2 === 0 ? rowBg : rowEvenBg,\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = rowHoverBg;\n e.currentTarget.style.transform = 'translateY(-0.0625rem)';\n e.currentTarget.style.boxShadow = '0 0.125rem 0.5rem rgba(0, 0, 0, 0.06)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = rowIndex % 2 === 0 ? rowBg : rowEvenBg;\n e.currentTarget.style.transform = 'translateY(0)';\n e.currentTarget.style.boxShadow = 'none';\n }}\n >\n {columns.map((column, colIndex) => (\n <td\n key={column.key || colIndex}\n style={{\n ...getBodyCellStyles(),\n color: cellTextColor,\n borderBottomColor: cellBorderColor,\n paddingTop: rowIndex === 0 ? '0.25rem' : undefined,\n }}\n >\n {column.render\n ? column.render(item[column.key], item)\n : (String(item[column.key] ?? '-') as React.ReactNode)}\n </td>\n ))}\n {showActions && (\n <td\n style={{\n ...getBodyCellStyles(),\n ...getActionsCellStyles(),\n color: cellTextColor,\n borderBottomColor: cellBorderColor,\n }}\n >\n <div\n style={{\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n gap: '0.125rem',\n }}\n >\n {actionConfig.info && onInfo && (\n <ActionIcon\n icon={infoIcon}\n onClick={() => onInfo(item)}\n colors={colors}\n size=\"sm\"\n />\n )}\n {actionConfig.edit && onEdit && (\n <ActionIcon\n icon={editIcon}\n onClick={() => onEdit(item)}\n colors={colors}\n size=\"sm\"\n />\n )}\n {actionConfig.delete && onDelete && (\n <ActionIcon\n icon={deleteIcon}\n onClick={() => onDelete(item)}\n colors={colors}\n customColor={actionDeleteHoverColor}\n size=\"sm\"\n />\n )}\n </div>\n </td>\n )}\n </tr>\n ))}\n </tbody>\n </table>\n );\n};\n\nTable.displayName = TABLE_DISPLAY_NAME;\n\nexport default Table;\n","import React, { useState, CSSProperties } from 'react';\nimport { createPortal } from 'react-dom';\nimport { X } from 'lucide-react';\nimport type { BaseModalProps } from './models/BaseModal.interface';\nimport { MODAL_DEFAULT_TEXTS } from '@/app/constants/components/modal/styles.constants';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { darkenColor, getContrastColor, adjustOpacity } from '@/app/utils/colorUtils';\n\nconst getOverlayStyles = (overlayBg: string): CSSProperties => ({\n position: 'fixed' as const,\n top: 0,\n left: 0,\n width: '100vw',\n height: '100vh',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1002,\n padding: '1.25rem',\n backgroundColor: overlayBg,\n});\n\nconst getModalContainerStyles = (maxWidth: string, modalBg: string): CSSProperties => ({\n borderRadius: '1rem',\n width: '90%',\n maxWidth,\n maxHeight: '85vh',\n overflow: 'hidden',\n boxShadow: '0 0.625rem 2.5rem rgba(0,0,0,0.3)',\n display: 'flex',\n flexDirection: 'column' as const,\n backgroundColor: modalBg,\n});\n\nconst getHeaderStyles = (\n headerBgFrom: string,\n headerBgTo: string,\n headerTextColor: string,\n): CSSProperties => ({\n display: 'flex',\n justifyContent: 'space-between',\n alignItems: 'center',\n padding: '1.25rem 1.875rem',\n borderRadius: '1rem 1rem 0 0',\n background: `linear-gradient(to bottom right, ${headerBgFrom}, ${headerBgTo})`,\n color: headerTextColor,\n});\n\nconst getHeaderTitleContainerStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '0.9375rem',\n});\n\nconst getHeaderIconStyles = (): CSSProperties => ({\n fontSize: '1.75rem',\n display: 'flex',\n alignItems: 'center',\n});\n\nconst getHeaderTitleStyles = (): CSSProperties => ({\n fontSize: '1.5rem',\n fontWeight: 'bold',\n margin: 0,\n});\n\nconst getCloseButtonStyles = (closeBtnBg: string, closeBtnColor: string): CSSProperties => ({\n border: 'none',\n fontSize: '1.5rem',\n cursor: 'pointer',\n padding: '0.5rem',\n borderRadius: '9999px',\n width: '2.5rem',\n height: '2.5rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n transition: 'all 300ms',\n backgroundColor: closeBtnBg,\n color: closeBtnColor,\n});\n\nconst getStatsContainerStyles = (\n statsCount: number,\n statsBgFrom: string,\n statsBgTo: string,\n statsBorderColor: string,\n): CSSProperties => ({\n display: 'flex',\n justifyContent: statsCount === 1 ? 'center' : 'space-around',\n padding: '1.25rem',\n borderBottom: '1px solid',\n background: `linear-gradient(to right, ${statsBgFrom}, ${statsBgTo})`,\n borderColor: statsBorderColor,\n});\n\nconst getStatItemStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n flexDirection: 'column' as const,\n textAlign: 'center' as const,\n});\n\nconst getStatIconStyles = (color: string): CSSProperties => ({\n fontSize: '2rem',\n color,\n});\n\nconst getStatContentStyles = (): CSSProperties => ({\n display: 'flex',\n flexDirection: 'column' as const,\n alignItems: 'center',\n});\n\nconst getStatNumberStyles = (color: string): CSSProperties => ({\n fontSize: '1.5rem',\n fontWeight: 'bold',\n lineHeight: 1,\n color,\n});\n\nconst getStatLabelStyles = (color: string): CSSProperties => ({\n fontSize: '0.75rem',\n textTransform: 'uppercase' as const,\n letterSpacing: '0.05em',\n marginTop: '0.125rem',\n color,\n});\n\nconst getContentStyles = (): CSSProperties => ({\n padding: '1.5625rem 1.875rem',\n overflowY: 'auto' as const,\n flex: 1,\n});\n\nconst getConfirmOverlayStyles = (confirmOverlayBg: string): CSSProperties => ({\n position: 'fixed' as const,\n top: 0,\n left: 0,\n width: '100vw',\n height: '100vh',\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n zIndex: 1003,\n padding: '1.25rem',\n backgroundColor: confirmOverlayBg,\n});\n\nconst getConfirmModalStyles = (modalBg: string): CSSProperties => ({\n borderRadius: '1rem',\n width: '90%',\n maxWidth: '28.125rem',\n boxShadow: '0 10px 40px rgba(0,0,0,0.4)',\n overflow: 'hidden',\n backgroundColor: modalBg,\n padding: '2rem',\n});\n\nconst getConfirmTitleStyles = (confirmTextColor: string): CSSProperties => ({\n margin: '0 0 0.5rem 0',\n fontSize: '1.5rem',\n fontWeight: 'bold',\n color: confirmTextColor,\n});\n\nconst getConfirmTextStyles = (confirmDangerTextColor: string): CSSProperties => ({\n margin: '0 0 1.5rem 0',\n fontSize: '0.9375rem',\n lineHeight: 1.6,\n color: confirmDangerTextColor,\n});\n\nconst getConfirmFooterStyles = (): CSSProperties => ({\n display: 'flex',\n gap: '0.75rem',\n justifyContent: 'flex-end',\n});\n\nconst getContinueButtonStyles = (\n modalBg: string,\n continueBtnBorder: string,\n continueBtnColor: string,\n): CSSProperties => ({\n padding: '0.625rem 1.25rem',\n border: `1px solid ${continueBtnBorder}`,\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n fontWeight: '600',\n cursor: 'pointer',\n transition: 'all 200ms',\n backgroundColor: modalBg,\n color: continueBtnColor,\n});\n\nconst getDiscardButtonStyles = (\n modalBg: string,\n discardBtnBorder: string,\n discardBtnColor: string,\n): CSSProperties => ({\n padding: '0.625rem 1.25rem',\n border: `1px solid ${discardBtnBorder}`,\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n fontWeight: '600',\n cursor: 'pointer',\n transition: 'all 200ms',\n backgroundColor: modalBg,\n color: discardBtnColor,\n});\n\nexport const BaseModal: React.FC<BaseModalProps> = ({\n isOpen,\n onClose,\n title,\n icon: Icon,\n children,\n stats,\n maxWidth = '56.25rem',\n showCloseButton = true,\n hasUnsavedChanges = false,\n texts = MODAL_DEFAULT_TEXTS,\n colors = DEFAULT_COLOR_CONFIG,\n customOverlayBg,\n customModalBg,\n}) => {\n const [showConfirmation, setShowConfirmation] = useState(false);\n\n if (!isOpen) return null;\n\n const overlayBg = customOverlayBg || adjustOpacity(darkenColor(colors.secondary, 80), 0.6);\n const modalBg = customModalBg || darkenColor(colors.secondary, 60);\n const headerBgFrom = colors.primary;\n const headerBgTo = colors.secondary;\n const headerTextColor = getContrastColor(headerBgFrom);\n const closeBtnBg = adjustOpacity(headerTextColor, 0.2);\n const closeBtnHoverBg = adjustOpacity(headerTextColor, 0.3);\n const closeBtnColor = headerTextColor;\n\n const statsBgFrom = adjustOpacity(headerTextColor, 0.05);\n const statsBgTo = adjustOpacity(headerTextColor, 0.02);\n const statsBorderColor = adjustOpacity(headerTextColor, 0.1);\n const statsNumberColor = getContrastColor(modalBg);\n const statsLabelColor = adjustOpacity(statsNumberColor, 0.7);\n\n const scrollbarTrackColor = adjustOpacity(statsNumberColor, 0.05);\n const scrollbarThumbColor = adjustOpacity(statsNumberColor, 0.15);\n\n const confirmOverlayBg = adjustOpacity(darkenColor(colors.secondary, 80), 0.7);\n const dangerColor = colors.danger || darkenColor(colors.accent, 20);\n const confirmTextColor = getContrastColor(modalBg);\n const confirmDangerTextColor = dangerColor;\n\n const continueBtnBorder = adjustOpacity(confirmTextColor, 0.2);\n const continueBtnColor = confirmTextColor;\n const continueBtnHoverBg = adjustOpacity(confirmTextColor, 0.1);\n const discardBtnBorder = dangerColor;\n const discardBtnColor = dangerColor;\n const discardBtnHoverBg = adjustOpacity(dangerColor, 0.1);\n\n const handleClose = () => {\n if (hasUnsavedChanges) {\n setShowConfirmation(true);\n } else {\n onClose();\n }\n };\n\n const handleConfirmClose = () => {\n setShowConfirmation(false);\n onClose();\n };\n\n const handleCancelClose = () => {\n setShowConfirmation(false);\n };\n\n const mergedTexts = { ...MODAL_DEFAULT_TEXTS, ...texts };\n\n const modalContent = (\n <>\n <style>{`\n @media (max-width: 768px) {\n .modal-container {\n width: 95% !important;\n max-height: 90vh !important;\n }\n .modal-header {\n padding: 0.9375rem 1.25rem !important;\n }\n .modal-header-icon {\n font-size: 1.5rem !important;\n }\n .modal-header-title {\n font-size: 1.25rem !important;\n }\n .modal-close-btn {\n width: 2.25rem !important;\n height: 2.25rem !important;\n font-size: 1.25rem !important;\n }\n .modal-stats {\n padding: 0.9375rem 0.625rem !important;\n }\n .modal-stat-item {\n gap: 0.5rem !important;\n }\n .modal-stat-icon {\n font-size: 1.5rem !important;\n }\n .modal-stat-number {\n font-size: 1.25rem !important;\n }\n .modal-content {\n padding: 1.25rem !important;\n }\n .modal-content::-webkit-scrollbar {\n width: 0.5rem;\n }\n .modal-content::-webkit-scrollbar-track {\n background-color: var(--scrollbar-track);\n border-radius: 0.75rem;\n }\n .modal-content::-webkit-scrollbar-thumb {\n background-color: var(--scrollbar-thumb);\n border-radius: 0.75rem;\n }\n .confirm-footer {\n flex-direction: column-reverse !important;\n }\n .confirm-footer button {\n width: 100% !important;\n }\n }\n @media (max-width: 480px) {\n .modal-header-title {\n font-size: 1.125rem !important;\n }\n .modal-content {\n padding: 0.9375rem !important;\n }\n }\n .modal-content::-webkit-scrollbar {\n width: 0.5rem;\n }\n .modal-content::-webkit-scrollbar-track {\n background-color: var(--scrollbar-track);\n border-radius: 0.75rem;\n }\n .modal-content::-webkit-scrollbar-thumb {\n background-color: var(--scrollbar-thumb);\n border-radius: 0.75rem;\n }\n `}</style>\n <div style={getOverlayStyles(overlayBg)}>\n <div\n onClick={(e) => e.stopPropagation()}\n className=\"modal-container\"\n style={getModalContainerStyles(maxWidth, modalBg)}\n >\n <div\n className=\"modal-header\"\n style={getHeaderStyles(headerBgFrom, headerBgTo, headerTextColor)}\n >\n <div style={getHeaderTitleContainerStyles()}>\n {Icon && (\n <div className=\"modal-header-icon\" style={getHeaderIconStyles()}>\n <Icon />\n </div>\n )}\n <h2 className=\"modal-header-title\" style={getHeaderTitleStyles()}>\n {title}\n </h2>\n </div>\n {showCloseButton && (\n <button\n onClick={handleClose}\n className=\"modal-close-btn\"\n style={getCloseButtonStyles(closeBtnBg, closeBtnColor)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = closeBtnHoverBg;\n e.currentTarget.style.transform = 'rotate(90deg)';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = closeBtnBg;\n e.currentTarget.style.transform = 'rotate(0deg)';\n }}\n >\n <X />\n </button>\n )}\n </div>\n\n {stats && stats.length > 0 && (\n <div\n className=\"modal-stats\"\n style={getStatsContainerStyles(\n stats.length,\n statsBgFrom,\n statsBgTo,\n statsBorderColor,\n )}\n >\n {stats.map((stat, index) => (\n <div key={index} className=\"modal-stat-item\" style={getStatItemStyles()}>\n <div\n className=\"modal-stat-icon\"\n style={getStatIconStyles(stat.color || headerBgFrom)}\n >\n {stat.icon && <stat.icon />}\n </div>\n <div style={getStatContentStyles()}>\n <div\n className=\"modal-stat-number\"\n style={getStatNumberStyles(statsNumberColor)}\n >\n {stat.number}\n </div>\n <div style={getStatLabelStyles(statsLabelColor)}>{stat.label}</div>\n </div>\n </div>\n ))}\n </div>\n )}\n\n <div\n className=\"modal-content\"\n style={{\n ...getContentStyles(),\n // @ts-expect-error - CSS custom properties for scrollbar\n '--scrollbar-track': scrollbarTrackColor,\n '--scrollbar-thumb': scrollbarThumbColor,\n }}\n >\n {children}\n </div>\n </div>\n </div>\n\n {showConfirmation && (\n <div style={getConfirmOverlayStyles(confirmOverlayBg)}>\n <div style={getConfirmModalStyles(modalBg)}>\n <h3 style={getConfirmTitleStyles(confirmTextColor)}>\n {mergedTexts.discardChangesTitle}\n </h3>\n <p style={getConfirmTextStyles(confirmDangerTextColor)}>\n {mergedTexts.unsavedChangesWarning}\n </p>\n <div className=\"confirm-footer\" style={getConfirmFooterStyles()}>\n <button\n onClick={handleCancelClose}\n style={getContinueButtonStyles(modalBg, continueBtnBorder, continueBtnColor)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = continueBtnHoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = modalBg;\n }}\n >\n {mergedTexts.continueEditing}\n </button>\n <button\n onClick={handleConfirmClose}\n style={getDiscardButtonStyles(modalBg, discardBtnBorder, discardBtnColor)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = discardBtnHoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = modalBg;\n }}\n >\n {mergedTexts.discardButton}\n </button>\n </div>\n </div>\n </div>\n )}\n </>\n );\n\n return createPortal(modalContent, document.body);\n};\n\nexport default BaseModal;\n","import React, { useState, ReactNode, CSSProperties } from 'react';\nimport { CheckCircle } from 'lucide-react';\nimport { BaseModal } from '../BaseModal/BaseModal';\nimport Button from '../Button/Button';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport type { ExtendedColorConfig } from '@/app/types/colors';\nimport { getContrastColor, adjustOpacity } from '@/app/utils/colorUtils';\n\nconst getLoadingContainerStyles = (): CSSProperties => ({\n display: 'flex',\n justifyContent: 'center',\n alignItems: 'center',\n padding: '2.5rem 0',\n});\n\nconst getMessageStyles = (modalBg: string): CSSProperties => ({\n fontSize: '1rem',\n textAlign: 'center' as const,\n margin: '1.25rem 0',\n lineHeight: 1.5,\n color: adjustOpacity(getContrastColor(modalBg), 0.9),\n});\n\nconst getButtonContainerStyles = (): CSSProperties => ({\n display: 'flex',\n justifyContent: 'space-between',\n gap: '0.625rem',\n marginTop: '1.25rem',\n});\n\nexport interface ConfirmationModalProps {\n isOpen: boolean;\n onClose: () => void;\n onConfirm: () => Promise<void> | void;\n message: string;\n confirmText?: string;\n cancelText?: string;\n loadingContent?: ReactNode;\n colors?: ExtendedColorConfig;\n}\n\nconst ConfirmationModal: React.FC<ConfirmationModalProps> = ({\n isOpen,\n onClose,\n onConfirm,\n message,\n confirmText = 'Confirm',\n cancelText = 'Cancel',\n loadingContent,\n colors,\n}) => {\n const [loading, setLoading] = useState(false);\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n\n if (!isOpen) return null;\n if (loading && loadingContent)\n return (\n <>\n <style>{`\n @media (max-width: 480px) {\n .confirm-message {\n font-size: 0.875rem !important;\n }\n .confirm-buttons {\n flex-direction: column !important;\n gap: 0.375rem !important;\n }\n }\n `}</style>\n <BaseModal\n isOpen={true}\n onClose={onClose}\n title=\"Processing\"\n icon={CheckCircle}\n maxWidth=\"28.125rem\"\n colors={colorConfig}\n >\n <div style={getLoadingContainerStyles()}>{loadingContent}</div>\n </BaseModal>\n </>\n );\n\n const handleConfirm = async () => {\n setLoading(true);\n try {\n await onConfirm();\n } finally {\n setLoading(false);\n onClose();\n }\n };\n\n const modalBg = colorConfig.secondary;\n\n return (\n <BaseModal\n isOpen={isOpen}\n onClose={onClose}\n title={confirmText}\n icon={CheckCircle}\n maxWidth=\"28.125rem\"\n colors={colorConfig}\n >\n <p className=\"confirm-message\" style={getMessageStyles(modalBg)}>\n {message}\n </p>\n <div className=\"confirm-buttons\" style={getButtonContainerStyles()}>\n <Button variant=\"secondary\" onClick={onClose} colors={colorConfig}>\n {cancelText}\n </Button>\n <Button variant=\"primary\" onClick={handleConfirm} colors={colorConfig}>\n {confirmText}\n </Button>\n </div>\n </BaseModal>\n );\n};\n\nexport default ConfirmationModal;\n","'use client';\n\nimport { useState, useCallback, useMemo, CSSProperties } from 'react';\nimport { usePathname, useRouter } from 'next/navigation';\nimport { SideBarProps, SideBarMenuItem } from './models/SideBar.interface';\nimport { DEFAULT_COLOR_CONFIG, hasExtendedColors } from '@/app/types/colors';\nimport { adjustOpacity, getContrastColor, lightenColor } from '@/app/utils/colorUtils';\nimport { LanguageSelector } from '../LanguageSelector/LanguageSelector';\n\nconst SIDEBAR_DISPLAY_NAME = 'SideBar';\n\nconst getContainerStyles = (\n isOpen: boolean,\n openWidth: string,\n closedWidth: string,\n backgroundColor: string,\n): CSSProperties => ({\n position: 'fixed' as const,\n top: 0,\n left: 0,\n height: '100vh',\n display: 'flex',\n flexDirection: 'column' as const,\n boxShadow: `0.125rem 0 0.3125rem ${adjustOpacity('#000', 0.2)}`,\n transition: 'width 300ms ease-in-out',\n zIndex: 100,\n overflowY: 'auto' as const,\n overflowX: 'visible' as const,\n paddingTop: '3.75rem',\n paddingBottom: '1.25rem',\n paddingLeft: 0,\n paddingRight: 0,\n width: isOpen ? openWidth : closedWidth,\n backgroundColor,\n});\n\nconst getListStyles = (): CSSProperties => ({\n listStyle: 'none',\n width: '100%',\n padding: 0,\n margin: 0,\n display: 'flex',\n flexDirection: 'column' as const,\n flex: 1,\n});\n\nconst getListItemStyles = (): CSSProperties => ({\n width: '100%',\n position: 'relative' as const,\n});\n\nconst getToggleButtonStyles = (toggleBtnBg: string, textColor: string): CSSProperties => ({\n position: 'absolute' as const,\n top: '0.75rem',\n left: '0.75rem',\n border: 'none',\n padding: '0.5rem',\n cursor: 'pointer',\n borderRadius: '0.5rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n zIndex: 100,\n width: '2.5rem',\n height: '2.5rem',\n transition: 'background-color 300ms',\n backgroundColor: toggleBtnBg,\n color: textColor,\n});\n\nconst getMenuItemButtonStyles = (isOpen: boolean, textColor: string): CSSProperties => ({\n backgroundColor: 'transparent',\n border: 'none',\n textDecoration: 'none',\n fontWeight: 'bold',\n display: 'flex',\n alignItems: 'center',\n width: '100%',\n borderRadius: 0,\n transition:\n 'padding 300ms ease-in-out, justify-content 300ms ease-in-out, background-color 300ms ease-in-out, color 300ms ease-in-out',\n cursor: 'pointer',\n fontSize: '1rem',\n minHeight: '3rem',\n position: 'relative' as const,\n padding: isOpen ? '0.75rem 1.25rem' : '0.75rem',\n justifyContent: isOpen ? 'flex-start' : 'center',\n color: textColor,\n});\n\nconst getIconStyles = (isOpen: boolean): CSSProperties => ({\n fontSize: '1.25rem',\n flexShrink: 0,\n marginRight: isOpen ? '0.75rem' : 0,\n transition: 'margin-right 300ms ease-in-out',\n});\n\nconst getTextStyles = (): CSSProperties => ({\n whiteSpace: 'nowrap' as const,\n overflow: 'hidden',\n transition: 'opacity 300ms ease-in-out',\n});\n\nconst getBottomSectionStyles = (): CSSProperties => ({\n marginTop: 'auto',\n});\n\nexport const SideBar = ({\n menuItems,\n logoutButton,\n isOpen: controlledIsOpen,\n onToggle,\n openWidth = '17.5rem',\n closedWidth = '4.375rem',\n colors = DEFAULT_COLOR_CONFIG,\n customBg,\n customTextColor,\n customHoverBg,\n customToggleBtnBg,\n customToggleBtnHoverBg,\n customLogoutTextColor,\n customLogoutHoverBg,\n customLogoutHoverTextColor,\n languageSelector,\n}: SideBarProps) => {\n const [internalIsOpen, setInternalIsOpen] = useState(false);\n const currentPathname = usePathname();\n const router = useRouter();\n const isOpen = controlledIsOpen ?? internalIsOpen;\n\n const backgroundColor = customBg || colors.secondary;\n const textColor = customTextColor || getContrastColor(backgroundColor);\n const hoverBackgroundColor = customHoverBg || adjustOpacity(colors.primary, 0.8);\n const toggleBtnBg = customToggleBtnBg || adjustOpacity(textColor, 0.2);\n const toggleBtnHoverBg = customToggleBtnHoverBg || adjustOpacity(textColor, 0.3);\n\n const dangerColor = hasExtendedColors(colors) ? colors.danger : lightenColor(colors.accent, 10);\n const logoutTextColor = customLogoutTextColor || dangerColor;\n const logoutHoverBg = customLogoutHoverBg || adjustOpacity(dangerColor, 0.2);\n const logoutHoverTextColor = customLogoutHoverTextColor || dangerColor;\n\n const handleToggle = useCallback(() => {\n const newState = !isOpen;\n if (controlledIsOpen === undefined) {\n setInternalIsOpen(newState);\n }\n onToggle?.(newState);\n }, [isOpen, controlledIsOpen, onToggle]);\n\n const isMenuItemActive = useCallback(\n (item: SideBarMenuItem) => {\n if (item.isActive !== undefined) {\n return item.isActive;\n }\n if (item.href) {\n return (\n currentPathname === item.href ||\n (item.href !== '/' && currentPathname.startsWith(item.href + '/'))\n );\n }\n return false;\n },\n [currentPathname],\n );\n\n const { topItems, bottomItems, logoutItem } = useMemo(() => {\n const top: SideBarMenuItem[] = [];\n const bottom: SideBarMenuItem[] = [];\n let logout: SideBarMenuItem | null = null;\n\n menuItems.forEach((item) => {\n if (item.section === 'bottom') {\n bottom.push(item);\n } else {\n top.push(item);\n }\n });\n\n if (logoutButton) {\n logout = {\n id: 'logout',\n label: logoutButton.label,\n icon: logoutButton.icon,\n onClick: logoutButton.onClick,\n section: 'top',\n };\n }\n\n return { topItems: top, bottomItems: bottom, logoutItem: logout };\n }, [menuItems, logoutButton]);\n\n const renderMenuItem = useCallback(\n (item: SideBarMenuItem, isLogout = false) => {\n const isActive = isMenuItemActive(item);\n const itemTextColor = isActive ? colors.accent : isLogout ? logoutTextColor : textColor;\n const itemHoverBg = isLogout ? logoutHoverBg : hoverBackgroundColor;\n const itemHoverTextColor = isLogout ? logoutHoverTextColor : itemTextColor;\n const itemId = item.id || item.href || item.label.toLowerCase().replace(/\\s+/g, '-');\n\n return (\n <li key={itemId} style={getListItemStyles()}>\n <button\n onClick={\n isActive\n ? undefined\n : (e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.color = itemTextColor;\n if (item.onClick) {\n item.onClick();\n } else if (item.href) {\n router.push(item.href);\n }\n }\n }\n className=\"sidebar-menu-item\"\n style={{\n ...getMenuItemButtonStyles(isOpen, itemTextColor),\n cursor: isActive ? 'default' : 'pointer',\n }}\n onMouseEnter={(e) => {\n if (isActive) return;\n e.currentTarget.style.backgroundColor = itemHoverBg;\n if (isLogout) {\n e.currentTarget.style.color = itemHoverTextColor;\n }\n }}\n onMouseLeave={(e) => {\n if (isActive) return;\n e.currentTarget.style.backgroundColor = 'transparent';\n e.currentTarget.style.color = itemTextColor;\n }}\n >\n <span className=\"sidebar-icon\" style={getIconStyles(isOpen)}>\n {item.icon}\n </span>\n {isOpen && <span style={getTextStyles()}>{item.label}</span>}\n </button>\n </li>\n );\n },\n [\n isOpen,\n colors.accent,\n textColor,\n hoverBackgroundColor,\n logoutTextColor,\n logoutHoverBg,\n logoutHoverTextColor,\n isMenuItemActive,\n router,\n ],\n );\n\n return (\n <>\n <style>{`\n @media (max-width: 48rem) {\n .sidebar-container {\n width: ${isOpen ? '20rem' : '3.75rem'} !important;\n padding-top: 3.4375rem !important;\n }\n .sidebar-toggle-btn {\n top: 0.625rem !important;\n width: 2.25rem !important;\n height: 2.25rem !important;\n }\n .sidebar-menu-item {\n font-size: 0.9375rem !important;\n min-height: 3.125rem !important;\n padding: ${isOpen ? '0.9375rem 1.5625rem' : '0.9375rem'} !important;\n }\n .sidebar-icon {\n font-size: 1.125rem !important;\n }\n }\n @media (max-width: 30rem) {\n .sidebar-container {\n width: ${isOpen ? '100vw' : '3.125rem'} !important;\n padding-top: 3.125rem !important;\n padding-bottom: 0.9375rem !important;\n }\n .sidebar-toggle-btn {\n top: 0.5rem !important;\n width: 2rem !important;\n height: 2rem !important;\n }\n .sidebar-menu-item {\n font-size: 0.875rem !important;\n min-height: 3.25rem !important;\n padding: ${isOpen ? '1.125rem 1.25rem' : '1.125rem'} !important;\n }\n .sidebar-icon {\n font-size: 1rem !important;\n }\n }\n `}</style>\n <nav\n className=\"sidebar-container\"\n style={getContainerStyles(isOpen, openWidth, closedWidth, backgroundColor)}\n >\n {/* Toggle Button */}\n <button\n onClick={(e) => {\n e.currentTarget.style.backgroundColor = toggleBtnBg;\n handleToggle();\n }}\n className=\"sidebar-toggle-btn\"\n style={getToggleButtonStyles(toggleBtnBg, textColor)}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = toggleBtnHoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = toggleBtnBg;\n }}\n >\n {isOpen ? (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"18\" y1=\"6\" x2=\"6\" y2=\"18\"></line>\n <line x1=\"6\" y1=\"6\" x2=\"18\" y2=\"18\"></line>\n </svg>\n ) : (\n <svg\n xmlns=\"http://www.w3.org/2000/svg\"\n width=\"20\"\n height=\"20\"\n viewBox=\"0 0 24 24\"\n fill=\"none\"\n stroke=\"currentColor\"\n strokeWidth=\"2.5\"\n strokeLinecap=\"round\"\n strokeLinejoin=\"round\"\n >\n <line x1=\"3\" y1=\"12\" x2=\"21\" y2=\"12\"></line>\n <line x1=\"3\" y1=\"6\" x2=\"21\" y2=\"6\"></line>\n <line x1=\"3\" y1=\"18\" x2=\"21\" y2=\"18\"></line>\n </svg>\n )}\n </button>\n\n <ul style={getListStyles()}>\n {topItems.map((item) => renderMenuItem(item))}\n\n {logoutItem && renderMenuItem(logoutItem, true)}\n\n {bottomItems.length > 0 && (\n <li style={{ ...getListItemStyles(), ...getBottomSectionStyles() }}>\n <ul style={getListStyles()}>\n {bottomItems.map((item) => renderMenuItem(item))}\n {languageSelector && (\n <li style={getListItemStyles()}>\n <div\n style={{\n padding: isOpen ? '0.75rem 1.25rem' : '0.75rem',\n display: 'flex',\n justifyContent: isOpen ? 'flex-start' : 'center',\n }}\n >\n <LanguageSelector\n selectedLanguage={languageSelector.selectedLanguage}\n onLanguageChange={languageSelector.onLanguageChange}\n availableLanguages={languageSelector.availableLanguages}\n size=\"sm\"\n colors={colors}\n customBgColor={backgroundColor}\n customTextColor={textColor}\n />\n </div>\n </li>\n )}\n </ul>\n </li>\n )}\n {bottomItems.length === 0 && languageSelector && (\n <li style={{ ...getListItemStyles(), ...getBottomSectionStyles() }}>\n <div\n style={{\n padding: isOpen ? '0.75rem 1.25rem' : '0.75rem',\n display: 'flex',\n justifyContent: isOpen ? 'flex-start' : 'center',\n }}\n >\n <LanguageSelector\n selectedLanguage={languageSelector.selectedLanguage}\n onLanguageChange={languageSelector.onLanguageChange}\n availableLanguages={languageSelector.availableLanguages}\n size=\"sm\"\n colors={colors}\n customBgColor={backgroundColor}\n customTextColor={textColor}\n />\n </div>\n </li>\n )}\n </ul>\n </nav>\n </>\n );\n};\n\nSideBar.displayName = SIDEBAR_DISPLAY_NAME;\n\nexport default SideBar;\n","'use client';\n\nimport { useState, useCallback, useMemo, CSSProperties } from 'react';\nimport { usePathname, useRouter } from 'next/navigation';\nimport { Menu, X } from 'lucide-react';\nimport { NavBarProps } from './models/NavBar.interface';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, getContrastColor } from '@/app/utils/colorUtils';\nimport Button from '../Button/Button';\nimport { LanguageSelector } from '../LanguageSelector/LanguageSelector';\n\nconst NAVBAR_DISPLAY_NAME = 'NavBar';\n\nconst getContainerStyles = (backgroundColor: string, height: string): CSSProperties => ({\n position: 'fixed' as const,\n top: 0,\n left: 0,\n right: 0,\n zIndex: 50,\n width: '100%',\n borderBottom: `1px solid ${adjustOpacity('#000', 0.1)}`,\n transition: 'all 300ms',\n backgroundColor,\n height,\n});\n\nconst getContentStyles = (): CSSProperties => ({\n maxWidth: '100%',\n marginLeft: 'auto',\n marginRight: 'auto',\n paddingLeft: '1.5rem',\n paddingRight: '1.5rem',\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n height: '100%',\n});\n\nconst getLogoContainerStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n flexShrink: 0,\n});\n\nconst getLogoLinkStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n textDecoration: 'none',\n cursor: 'pointer',\n transition: 'opacity 300ms',\n});\n\nconst getLogoImageStyles = (): CSSProperties => ({\n height: '2rem',\n width: 'auto',\n});\n\nconst getLogoTextStyles = (textColor: string): CSSProperties => ({\n fontSize: '1.25rem',\n fontWeight: 'bold',\n color: textColor,\n});\n\nconst getMenuContainerStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '2rem',\n});\n\nconst getMenuItemStyles = (\n textColor: string,\n isActive: boolean,\n activeColor: string,\n): CSSProperties => ({\n fontWeight: 500,\n transition: 'all 300ms',\n textDecoration: 'none',\n cursor: 'pointer',\n fontSize: '0.875rem',\n color: isActive ? activeColor : textColor,\n borderBottom: isActive ? `2px solid ${activeColor}` : '2px solid transparent',\n paddingBottom: '0.25rem',\n});\n\nconst getActionsContainerStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n gap: '0.75rem',\n});\n\nconst getMobileToggleStyles = (textColor: string): CSSProperties => ({\n padding: '0.5rem',\n cursor: 'pointer',\n transition: 'all 300ms',\n borderRadius: '0.5rem',\n color: textColor,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nconst getMobileMenuStyles = (): CSSProperties => ({\n position: 'fixed' as const,\n inset: 0,\n zIndex: 50,\n transition: 'all 300ms',\n});\n\nconst getMobileOverlayStyles = (): CSSProperties => ({\n position: 'absolute' as const,\n inset: 0,\n backgroundColor: 'rgba(0, 0, 0, 0.5)',\n});\n\nconst getMobilePanelStyles = (isOpen: boolean, bgColor: string): CSSProperties => ({\n position: 'absolute' as const,\n top: 0,\n right: 0,\n height: '100%',\n width: '20rem',\n boxShadow: '0 25px 50px -12px rgba(0, 0, 0, 0.25)',\n transition: 'transform 300ms',\n backgroundColor: bgColor,\n transform: isOpen ? 'translateX(0)' : 'translateX(100%)',\n display: 'flex',\n flexDirection: 'column' as const,\n});\n\nconst getMobileHeaderStyles = (): CSSProperties => ({\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'space-between',\n padding: '1rem',\n borderBottom: `1px solid ${adjustOpacity('#000', 0.1)}`,\n});\n\nconst getMobileCloseStyles = (textColor: string): CSSProperties => ({\n padding: '0.5rem',\n cursor: 'pointer',\n transition: 'all 300ms',\n borderRadius: '0.5rem',\n color: textColor,\n display: 'flex',\n alignItems: 'center',\n justifyContent: 'center',\n});\n\nconst getMobileNavStyles = (): CSSProperties => ({\n display: 'flex',\n flexDirection: 'column' as const,\n padding: '1rem',\n gap: '0.5rem',\n flex: 1,\n overflowY: 'auto' as const,\n});\n\nconst getMobileMenuItemStyles = (\n textColor: string,\n isActive: boolean,\n activeBg: string,\n activeColor: string,\n): CSSProperties => ({\n fontWeight: 500,\n transition: 'all 300ms',\n paddingLeft: '1rem',\n paddingRight: '1rem',\n paddingTop: '0.75rem',\n paddingBottom: '0.75rem',\n borderRadius: '0.5rem',\n fontSize: '0.875rem',\n cursor: 'pointer',\n color: isActive ? activeColor : textColor,\n backgroundColor: isActive ? activeBg : 'transparent',\n});\n\nconst getMobileActionsStyles = (): CSSProperties => ({\n display: 'flex',\n flexDirection: 'column' as const,\n gap: '0.5rem',\n padding: '1rem',\n borderTop: `1px solid ${adjustOpacity('#000', 0.1)}`,\n marginTop: 'auto',\n});\n\nexport const NavBar = ({\n logo,\n menuItems = [],\n actions = [],\n colors = DEFAULT_COLOR_CONFIG,\n customBgColor,\n customTextColor,\n customActiveColor,\n customHoverColor,\n height = '4rem',\n showMobileMenu: controlledMobileMenu,\n onMobileMenuToggle,\n languageSelector,\n}: NavBarProps) => {\n const [internalMobileMenu, setInternalMobileMenu] = useState(false);\n const currentPathname = usePathname();\n const router = useRouter();\n const isMobileMenuOpen = controlledMobileMenu ?? internalMobileMenu;\n\n const backgroundColor = customBgColor || colors.secondary;\n const textColor = customTextColor || getContrastColor(backgroundColor);\n const activeColor = customActiveColor || colors.accent;\n const hoverColor = customHoverColor || colors.primary;\n\n const dynamicColors = useMemo(\n () => ({\n hoverBg: adjustOpacity(textColor, 0.05),\n hoverBgActive: adjustOpacity(textColor, 0.1),\n secondaryBg: adjustOpacity(textColor, 0.05),\n activeItemBg: adjustOpacity(activeColor, 0.1),\n outlineHoverText: getContrastColor(activeColor),\n }),\n [textColor, activeColor],\n );\n\n const handleMobileMenuToggle = useCallback(() => {\n const newState = !isMobileMenuOpen;\n if (controlledMobileMenu === undefined) {\n setInternalMobileMenu(newState);\n }\n onMobileMenuToggle?.(newState);\n }, [isMobileMenuOpen, controlledMobileMenu, onMobileMenuToggle]);\n\n const handleLogoClick = useCallback(() => {\n if (logo?.onClick) {\n logo.onClick();\n } else if (logo?.href) {\n router.push(logo.href);\n }\n }, [logo, router]);\n\n const handleMenuItemClick = useCallback(\n (item: (typeof menuItems)[0]) => {\n if (item.onClick) {\n item.onClick();\n } else if (item.href) {\n router.push(item.href);\n }\n },\n [router],\n );\n\n const isMenuItemActive = useCallback(\n (item: (typeof menuItems)[0]) => {\n if (item.isActive !== undefined) {\n return item.isActive;\n }\n if (item.href) {\n return (\n currentPathname === item.href ||\n (item.href !== '/' && currentPathname.startsWith(item.href + '/'))\n );\n }\n return false;\n },\n [currentPathname],\n );\n\n return (\n <>\n <style>{`\n @media (max-width: 64rem) {\n .navbar-menu-container,\n .navbar-actions-container {\n display: none !important;\n }\n .navbar-mobile-toggle {\n display: flex !important;\n }\n }\n @media (min-width: 64rem) {\n .navbar-menu-container,\n .navbar-actions-container {\n display: flex !important;\n }\n .navbar-mobile-toggle {\n display: none !important;\n }\n }\n @media (max-width: 48rem) {\n .navbar-content {\n padding-left: 1rem !important;\n padding-right: 1rem !important;\n }\n .navbar-menu-container {\n gap: 1.5rem !important;\n }\n .navbar-actions-container {\n gap: 0.5rem !important;\n }\n .navbar-action-button {\n padding-left: 0.75rem !important;\n padding-right: 0.75rem !important;\n padding-top: 0.375rem !important;\n padding-bottom: 0.375rem !important;\n font-size: 0.75rem !important;\n }\n }\n @media (max-width: 40rem) {\n .navbar-content {\n padding-left: 0.75rem !important;\n padding-right: 0.75rem !important;\n }\n .navbar-logo-image {\n height: 1.5rem !important;\n }\n .navbar-logo-text {\n font-size: 1rem !important;\n }\n .navbar-mobile-panel {\n width: 18rem !important;\n }\n }\n `}</style>\n <nav style={getContainerStyles(backgroundColor, height)}>\n <div className=\"navbar-content\" style={getContentStyles()}>\n {logo && (\n <div style={getLogoContainerStyles()}>\n <div\n style={getLogoLinkStyles()}\n onClick={(e) => {\n e.currentTarget.style.opacity = '1';\n handleLogoClick();\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.opacity = '0.8';\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.opacity = '1';\n }}\n >\n {logo.src && (\n // eslint-disable-next-line @next/next/no-img-element\n <img\n src={logo.src}\n alt={logo.alt || 'Logo'}\n className=\"navbar-logo-image\"\n style={getLogoImageStyles()}\n />\n )}\n {logo.text && (\n <span className=\"navbar-logo-text\" style={getLogoTextStyles(textColor)}>\n {logo.text}\n </span>\n )}\n </div>\n </div>\n )}\n\n <div className=\"navbar-menu-container\" style={getMenuContainerStyles()}>\n {menuItems.map((item, index) => {\n const isActive = isMenuItemActive(item);\n const itemId = item.id || item.href || `menu-item-${index}`;\n return (\n <div\n key={itemId}\n onClick={(e) => {\n if (!isActive) {\n e.currentTarget.style.color = textColor;\n }\n handleMenuItemClick(item);\n }}\n style={getMenuItemStyles(textColor, isActive, activeColor)}\n onMouseEnter={(e) => {\n if (!isActive) {\n e.currentTarget.style.color = hoverColor;\n }\n }}\n onMouseLeave={(e) => {\n if (!isActive) {\n e.currentTarget.style.color = textColor;\n }\n }}\n >\n {item.label}\n </div>\n );\n })}\n </div>\n\n <div className=\"navbar-actions-container\" style={getActionsContainerStyles()}>\n {languageSelector && (\n <LanguageSelector\n selectedLanguage={languageSelector.selectedLanguage}\n onLanguageChange={languageSelector.onLanguageChange}\n availableLanguages={languageSelector.availableLanguages}\n size=\"sm\"\n colors={colors}\n customBgColor={backgroundColor}\n customTextColor={textColor}\n />\n )}\n {actions.map((action, index) => {\n const variant = action.variant === 'primary' ? 'primary' : 'secondary';\n const actionId = action.id || `action-${index}`;\n return (\n <Button\n key={actionId}\n variant={variant}\n size=\"sm\"\n onClick={action.onClick}\n icon={action.icon}\n iconPosition=\"left\"\n colors={{\n primary: activeColor,\n secondary: textColor,\n accent: activeColor,\n }}\n customBg={variant === 'secondary' ? dynamicColors.secondaryBg : undefined}\n customTextColor={variant === 'secondary' ? textColor : undefined}\n customBorderColor={action.variant === 'outline' ? activeColor : undefined}\n >\n {action.label}\n </Button>\n );\n })}\n </div>\n\n <div\n className=\"navbar-mobile-toggle\"\n style={getMobileToggleStyles(textColor)}\n onClick={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n handleMobileMenuToggle();\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = dynamicColors.hoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n <Menu size={24} />\n </div>\n </div>\n </nav>\n\n {isMobileMenuOpen && (\n <div style={getMobileMenuStyles()}>\n <div style={getMobileOverlayStyles()} onClick={handleMobileMenuToggle} />\n <div\n className=\"navbar-mobile-panel\"\n style={getMobilePanelStyles(isMobileMenuOpen, backgroundColor)}\n >\n <div style={getMobileHeaderStyles()}>\n {logo?.text && (\n <span style={{ fontSize: '1.125rem', fontWeight: 'bold', color: textColor }}>\n {logo.text}\n </span>\n )}\n <div\n style={getMobileCloseStyles(textColor)}\n onClick={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n handleMobileMenuToggle();\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = dynamicColors.hoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = 'transparent';\n }}\n >\n <X size={24} />\n </div>\n </div>\n\n <div style={getMobileNavStyles()}>\n {menuItems.map((item, index) => {\n const isActive = isMenuItemActive(item);\n const itemId = item.id || item.href || `menu-item-${index}`;\n return (\n <div\n key={itemId}\n style={getMobileMenuItemStyles(\n textColor,\n isActive,\n dynamicColors.activeItemBg,\n activeColor,\n )}\n onClick={(e) => {\n e.currentTarget.style.backgroundColor = isActive\n ? dynamicColors.activeItemBg\n : 'transparent';\n handleMenuItemClick(item);\n handleMobileMenuToggle();\n }}\n onMouseEnter={(e) => {\n e.currentTarget.style.backgroundColor = dynamicColors.hoverBg;\n }}\n onMouseLeave={(e) => {\n e.currentTarget.style.backgroundColor = isActive\n ? dynamicColors.activeItemBg\n : 'transparent';\n }}\n >\n {item.label}\n </div>\n );\n })}\n </div>\n\n {languageSelector && (\n <div\n style={{\n padding: '1rem',\n borderTop: `1px solid ${adjustOpacity('#000', 0.1)}`,\n display: 'flex',\n justifyContent: 'center',\n }}\n >\n <LanguageSelector\n selectedLanguage={languageSelector.selectedLanguage}\n onLanguageChange={languageSelector.onLanguageChange}\n availableLanguages={languageSelector.availableLanguages}\n size=\"sm\"\n colors={colors}\n customBgColor={backgroundColor}\n customTextColor={textColor}\n />\n </div>\n )}\n\n <div style={getMobileActionsStyles()}>\n {actions.map((action, index) => {\n const variant = action.variant === 'primary' ? 'primary' : 'secondary';\n const actionId = action.id || `action-${index}`;\n return (\n <Button\n key={actionId}\n variant={variant}\n size=\"sm\"\n onClick={() => {\n action.onClick();\n handleMobileMenuToggle();\n }}\n icon={action.icon}\n iconPosition=\"left\"\n colors={{\n primary: activeColor,\n secondary: textColor,\n accent: activeColor,\n }}\n customBg={variant === 'secondary' ? dynamicColors.secondaryBg : undefined}\n customTextColor={variant === 'secondary' ? textColor : undefined}\n customBorderColor={action.variant === 'outline' ? activeColor : undefined}\n style={{ width: '100%' }}\n >\n {action.label}\n </Button>\n );\n })}\n </div>\n </div>\n </div>\n )}\n </>\n );\n};\n\nNavBar.displayName = NAVBAR_DISPLAY_NAME;\n","import React from 'react';\n\ninterface ImagePlaceholderProps {\n width?: number;\n height?: number;\n backgroundColor?: string;\n}\n\nexport const ImagePlaceholder: React.FC<ImagePlaceholderProps> = ({\n width = 400,\n height = 300,\n backgroundColor = '#2a2d31',\n}) => {\n const iconColor = '#4a4d51';\n const iconSize = Math.min(width, height) * 0.15;\n const centerX = width / 2;\n const centerY = height / 2;\n\n return (\n <svg\n width={width}\n height={height}\n viewBox={`0 0 ${width} ${height}`}\n xmlns=\"http://www.w3.org/2000/svg\"\n style={{\n display: 'block',\n width: '100%',\n height: '100%',\n }}\n >\n {/* Background */}\n <rect width={width} height={height} fill={backgroundColor} />\n\n {/* Animated gradient overlay */}\n <defs>\n <linearGradient id=\"shimmer\" x1=\"0%\" y1=\"0%\" x2=\"100%\" y2=\"0%\">\n <stop offset=\"0%\" stopColor={backgroundColor} stopOpacity=\"1\">\n <animate attributeName=\"offset\" values=\"-1; 1\" dur=\"2s\" repeatCount=\"indefinite\" />\n </stop>\n <stop offset=\"50%\" stopColor=\"#3a3d41\" stopOpacity=\"1\">\n <animate attributeName=\"offset\" values=\"-0.5; 1.5\" dur=\"2s\" repeatCount=\"indefinite\" />\n </stop>\n <stop offset=\"100%\" stopColor={backgroundColor} stopOpacity=\"1\">\n <animate attributeName=\"offset\" values=\"0; 2\" dur=\"2s\" repeatCount=\"indefinite\" />\n </stop>\n </linearGradient>\n </defs>\n\n <rect width={width} height={height} fill=\"url(#shimmer)\" opacity=\"0.3\" />\n\n {/* Image icon */}\n <g transform={`translate(${centerX - iconSize / 2}, ${centerY - iconSize / 2})`}>\n {/* Mountain/landscape icon */}\n <path\n d={`\n M ${iconSize * 0.1} ${iconSize * 0.8}\n L ${iconSize * 0.35} ${iconSize * 0.4}\n L ${iconSize * 0.55} ${iconSize * 0.6}\n L ${iconSize * 0.75} ${iconSize * 0.25}\n L ${iconSize * 0.9} ${iconSize * 0.8}\n Z\n `}\n fill={iconColor}\n />\n\n {/* Sun/moon circle */}\n <circle\n cx={iconSize * 0.25}\n cy={iconSize * 0.3}\n r={iconSize * 0.12}\n fill={iconColor}\n opacity=\"0.7\"\n />\n </g>\n </svg>\n );\n};\n","'use client';\n\nimport { useEffect, useRef, useState, useMemo, CSSProperties } from 'react';\nimport { motion } from 'framer-motion';\nimport type { GalleryProps, GalleryImage, GalleryItemProps } from './models/Gallery.interface';\nimport {\n GALLERY_DISPLAY_NAME,\n GALLERY_DEFAULTS,\n GALLERY_ANIMATION,\n} from '@/app/constants/components/gallery/styles.constants';\nimport { DEFAULT_COLOR_CONFIG } from '@/app/types/colors';\nimport { adjustOpacity, lightenColor } from '@/app/utils/colorUtils';\nimport { ImagePlaceholder } from './ImagePlaceholder';\n\nconst getAspectRatioPadding = (width?: number, height?: number): string => {\n if (width && height && width > 0) {\n const ratio = (height / width) * 100;\n return `${ratio}%`;\n }\n return '75%';\n};\n\nconst getColumnStyles = (gap: string): CSSProperties => ({\n display: 'flex',\n flexDirection: 'column' as const,\n gap,\n flex: 1,\n});\n\nconst getContainerStyles = (gap: string): CSSProperties => ({\n display: 'flex',\n gap,\n width: '100%',\n height: '100%',\n});\n\nconst getLoaderStyles = (): CSSProperties => ({\n height: '6rem',\n});\n\nconst getItemWrapperStyles = (): CSSProperties => ({\n width: '100%',\n});\n\nconst getItemContainerStyles = (aspectRatioPadding: string): CSSProperties => ({\n position: 'relative' as const,\n overflow: 'hidden',\n borderRadius: '0.75rem',\n border: '1px solid',\n backgroundColor: '#2a2d31',\n cursor: 'pointer',\n width: '100%',\n paddingBottom: aspectRatioPadding,\n height: 0,\n});\n\nconst getPlaceholderContainerStyles = (): CSSProperties => ({\n position: 'absolute' as const,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n});\n\nconst getImageStyles = (loaded: boolean, isHovered: boolean): CSSProperties => ({\n position: 'absolute' as const,\n top: 0,\n left: 0,\n width: '100%',\n height: '100%',\n objectFit: 'cover' as const,\n display: 'block',\n transition: 'all 500ms ease-out',\n opacity: loaded ? 1 : 0,\n transform: isHovered ? 'scale(1.03)' : 'scale(1)',\n});\n\nconst getOverlayStyles = (isHovered: boolean, overlayColor: string): CSSProperties => ({\n pointerEvents: 'none' as const,\n position: 'absolute' as const,\n inset: 0,\n transition: 'background-color 300ms',\n backgroundColor: isHovered ? overlayColor : 'transparent',\n});\n\nconst GalleryItem = ({\n image,\n enableAnimation,\n borderColor,\n skeletonBg,\n overlayColor,\n}: GalleryItemProps) => {\n const [loaded, setLoaded] = useState(false);\n const [isHovered, setIsHovered] = useState(false);\n\n const Wrapper = enableAnimation ? motion.div : 'div';\n\n const animationProps = enableAnimation\n ? {\n initial: GALLERY_ANIMATION.INITIAL,\n whileInView: GALLERY_ANIMATION.ANIMATE,\n viewport: { once: true, margin: GALLERY_DEFAULTS.ANIMATION_VIEWPORT_MARGIN },\n transition: { duration: GALLERY_ANIMATION.DURATION, ease: GALLERY_ANIMATION.EASE },\n }\n : {};\n\n const aspectRatioPadding = getAspectRatioPadding(image.width, image.height);\n\n return (\n <Wrapper {...animationProps} style={getItemWrapperStyles()}>\n <div\n style={{\n ...getItemContainerStyles(aspectRatioPadding),\n borderColor,\n }}\n onMouseEnter={() => setIsHovered(true)}\n onMouseLeave={() => setIsHovered(false)}\n >\n {!loaded && (\n <div style={getPlaceholderContainerStyles()}>\n <ImagePlaceholder\n width={image.width || 400}\n height={image.height || 300}\n backgroundColor={skeletonBg}\n />\n </div>\n )}\n {/* eslint-disable-next-line @next/next/no-img-element */}\n <img\n src={image.src}\n alt={image.alt ?? ''}\n loading=\"lazy\"\n onLoad={() => setLoaded(true)}\n style={getImageStyles(loaded, isHovered)}\n />\n\n <div style={getOverlayStyles(isHovered, overlayColor)} />\n </div>\n </Wrapper>\n );\n};\n\nconst distributeImages = (images: GalleryImage[], columnCount: number): GalleryImage[][] => {\n const columns: GalleryImage[][] = Array.from({ length: columnCount }, () => []);\n const columnHeights: number[] = Array.from({ length: columnCount }, () => 0);\n\n const imagesWithRatio = images.map((img) => {\n const ratio = img.width && img.height && img.width > 0 ? img.height / img.width : 0.75;\n return { image: img, ratio };\n });\n\n imagesWithRatio.forEach(({ image, ratio }) => {\n let minHeightIndex = 0;\n let minHeight = columnHeights[0];\n\n for (let i = 1; i < columnCount; i++) {\n if (columnHeights[i] < minHeight) {\n minHeight = columnHeights[i];\n minHeightIndex = i;\n }\n }\n\n columns[minHeightIndex].push(image);\n columnHeights[minHeightIndex] += ratio;\n });\n\n const maxHeight = Math.max(...columnHeights);\n const tolerance = 0.01;\n\n if (maxHeight > 0) {\n const heightDifference = Math.max(...columnHeights) - Math.min(...columnHeights);\n const needsAdjustment = heightDifference > tolerance * maxHeight;\n\n if (needsAdjustment && columnCount > 1) {\n const sortedByHeight = imagesWithRatio.sort((a, b) => b.ratio - a.ratio);\n const newColumns: GalleryImage[][] = Array.from({ length: columnCount }, () => []);\n const newHeights: number[] = Array.from({ length: columnCount }, () => 0);\n\n sortedByHeight.forEach(({ image, ratio }) => {\n const minIdx = newHeights.indexOf(Math.min(...newHeights));\n newColumns[minIdx].push(image);\n newHeights[minIdx] += ratio;\n });\n\n return newColumns;\n }\n }\n\n return columns;\n};\n\nexport const Gallery = ({\n images,\n batchSize = GALLERY_DEFAULTS.BATCH_SIZE,\n enableAnimation = GALLERY_DEFAULTS.ENABLE_ANIMATION,\n forceColumnCount,\n gap = '1rem',\n colors,\n customBorderColor,\n customSkeletonBg,\n customOverlayColor,\n}: GalleryProps) => {\n const [visibleImages, setVisibleImages] = useState<GalleryImage[]>([]);\n const [columnCount, setColumnCount] = useState(forceColumnCount || 3);\n const loaderRef = useRef<HTMLDivElement | null>(null);\n const colorConfig = colors || DEFAULT_COLOR_CONFIG;\n const galleryColors = useMemo(() => {\n const borderColor = customBorderColor || adjustOpacity(colorConfig.primary, 0.1);\n const skeletonBg = customSkeletonBg || lightenColor(colorConfig.secondary, 50);\n const overlayColor = customOverlayColor || adjustOpacity(colorConfig.secondary, 0);\n\n return {\n border: borderColor,\n skeleton: skeletonBg,\n overlay: overlayColor,\n overlayHover: adjustOpacity(colorConfig.secondary, 0.2),\n };\n }, [colorConfig, customBorderColor, customSkeletonBg, customOverlayColor]);\n\n useEffect(() => {\n if (forceColumnCount) return;\n\n const handleResize = () => {\n const width = window.innerWidth;\n if (width < 480) {\n setColumnCount(1);\n } else if (width < 768) {\n setColumnCount(2);\n } else if (width < 1024) {\n setColumnCount(3);\n } else if (width < 1440) {\n setColumnCount(4);\n } else if (width < 1920) {\n setColumnCount(5);\n } else {\n setColumnCount(6);\n }\n };\n\n handleResize();\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, [forceColumnCount]);\n\n useEffect(() => {\n setVisibleImages(images.slice(0, batchSize));\n }, [images, batchSize]);\n\n useEffect(() => {\n if (!loaderRef.current) return;\n\n const currentLoader = loaderRef.current;\n\n const observer = new IntersectionObserver(\n ([entry]) => {\n if (entry.isIntersecting) {\n setVisibleImages((prev) => {\n const next = images.slice(0, prev.length + batchSize);\n return next.length === prev.length ? prev : next;\n });\n }\n },\n { rootMargin: GALLERY_DEFAULTS.OBSERVER_ROOT_MARGIN },\n );\n\n observer.observe(currentLoader);\n\n const checkInitialVisibility = () => {\n const rect = currentLoader.getBoundingClientRect();\n const isVisible = rect.top < window.innerHeight && rect.bottom > 0;\n if (isVisible) {\n setVisibleImages((prev) => {\n const next = images.slice(0, prev.length + batchSize);\n return next.length === prev.length ? prev : next;\n });\n }\n };\n\n const timeoutId = setTimeout(checkInitialVisibility, 100);\n\n return () => {\n observer.disconnect();\n clearTimeout(timeoutId);\n };\n }, [images, batchSize]);\n\n const columns = useMemo(\n () => distributeImages(visibleImages, columnCount),\n [visibleImages, columnCount],\n );\n\n return (\n <section style={{ width: '100%', height: '100%' }}>\n <div style={getContainerStyles(gap)}>\n {columns.map((column, columnIndex) => (\n <div key={columnIndex} style={getColumnStyles(gap)}>\n {column.map((img, imgIndex) => {\n const imageId = img.id || img.src || `gallery-img-${columnIndex}-${imgIndex}`;\n return (\n <GalleryItem\n key={imageId}\n image={img}\n enableAnimation={enableAnimation}\n borderColor={galleryColors.border}\n skeletonBg={galleryColors.skeleton}\n overlayColor={galleryColors.overlayHover}\n />\n );\n })}\n </div>\n ))}\n </div>\n\n {visibleImages.length < images.length && <div ref={loaderRef} style={getLoaderStyles()} />}\n </section>\n );\n};\n\nGallery.displayName = GALLERY_DISPLAY_NAME;\n"]}