academe-kit 0.1.4 → 0.1.5
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/dist/index.css +5 -0
- package/dist/index.d.ts +3 -1
- package/dist/index.esm.js +11 -32
- package/dist/index.esm.js.map +1 -1
- package/dist/index.js +11 -32
- package/dist/index.js.map +1 -1
- package/dist/types/components/ProtectedComponent/index.d.ts +2 -1
- package/dist/types/context/SecurityProvider/types.d.ts +1 -0
- package/dist/types/index.d.ts +1 -0
- package/package.json +10 -1
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../node_modules/clsx/dist/clsx.mjs","../src/components/Button/Button.tsx","../node_modules/@react-keycloak/core/lib/context.js","../node_modules/react-fast-compare/index.js","../node_modules/@react-keycloak/core/lib/provider.js","../node_modules/@react-keycloak/web/lib/context.js","../node_modules/@react-keycloak/web/lib/provider.js","../node_modules/@react-keycloak/web/lib/useKeycloak.js","../node_modules/@react-keycloak/web/lib/withKeycloak.js","../node_modules/keycloak-js/lib/keycloak.js","../src/context/SecurityProvider/index.tsx","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/spinner.tsx","../src/components/ProtectedApp/index.tsx","../src/components/ProtectedComponent/index.tsx","../src/components/ProtectedRouter/index.tsx","../node_modules/style-inject/dist/style-inject.es.js"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import React from 'react';\nimport clsx from 'clsx';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'sm' | 'md' | 'lg';\n children: React.ReactNode;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = 'primary', size = 'md', className, children, ...props }, ref) => {\n const baseClasses = 'font-semibold rounded-lg transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2';\n\n const variantClasses = {\n primary: 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n secondary: 'bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500',\n outline: 'bg-transparent border-2 border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500',\n };\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n };\n\n return (\n <button\n ref={ref}\n className={clsx(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { createContext } from 'react';\n/**\n * Create a React context containing an AuthClient instance.\n *\n * @param {IAuthContextProps} initialContext initial context value.\n *\n * @returns {React.Context} the ReactKeycloak context.\n */\nexport function createAuthContext(initialContext) {\n return createContext(__assign({ initialized: false }, initialContext));\n}\nexport default createAuthContext;\n//# sourceMappingURL=context.js.map","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\n/**\n * Create an AuthProvider component to wrap a React app with, it will take care of common AuthClient\n * lifecycle handling (such as initialization and token refresh).\n *\n * @param AuthContext the Auth context to be used by the created AuthProvider\n *\n * @returns the AuthProvider component\n */\nexport function createAuthProvider(AuthContext) {\n var defaultInitOptions = {\n onLoad: 'check-sso',\n };\n var initialState = {\n initialized: false,\n isAuthenticated: false,\n isLoading: true,\n };\n return /** @class */ (function (_super) {\n __extends(KeycloakProvider, _super);\n function KeycloakProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = __assign({}, initialState);\n _this.onError = function (event) { return function (error) {\n var onEvent = _this.props.onEvent;\n // Notify Events listener\n onEvent && onEvent(event, error);\n }; };\n _this.updateState = function (event) { return function () {\n var _a = _this.props, authClient = _a.authClient, onEvent = _a.onEvent, onTokens = _a.onTokens, isLoadingCheck = _a.isLoadingCheck;\n var _b = _this.state, prevInitialized = _b.initialized, prevAuthenticated = _b.isAuthenticated, prevLoading = _b.isLoading;\n // Notify Events listener\n onEvent && onEvent(event);\n // Check Loading state\n var isLoading = isLoadingCheck ? isLoadingCheck(authClient) : false;\n // Check if user is authenticated\n var isAuthenticated = isUserAuthenticated(authClient);\n // Avoid double-refresh if state hasn't changed\n if (!prevInitialized ||\n isAuthenticated !== prevAuthenticated ||\n isLoading !== prevLoading) {\n _this.setState({\n initialized: true,\n isAuthenticated: isAuthenticated,\n isLoading: isLoading,\n });\n }\n // Notify token listener, if any\n var idToken = authClient.idToken, refreshToken = authClient.refreshToken, token = authClient.token;\n onTokens &&\n onTokens({\n idToken: idToken,\n refreshToken: refreshToken,\n token: token,\n });\n }; };\n _this.refreshToken = function (event) { return function () {\n var _a = _this.props, autoRefreshToken = _a.autoRefreshToken, authClient = _a.authClient, onEvent = _a.onEvent;\n // Notify Events listener\n onEvent && onEvent(event);\n if (autoRefreshToken !== false) {\n // Refresh Keycloak token\n authClient.updateToken(5);\n }\n }; };\n return _this;\n }\n KeycloakProvider.prototype.componentDidMount = function () {\n this.init();\n };\n KeycloakProvider.prototype.componentDidUpdate = function (_a) {\n var prevAuthClient = _a.authClient, prevInitOptions = _a.initOptions;\n var _b = this.props, initOptions = _b.initOptions, authClient = _b.authClient;\n if (authClient !== prevAuthClient ||\n !isEqual(initOptions, prevInitOptions)) {\n // De-init previous AuthClient instance\n prevAuthClient.onReady = undefined;\n prevAuthClient.onAuthSuccess = undefined;\n prevAuthClient.onAuthError = undefined;\n prevAuthClient.onAuthRefreshSuccess = undefined;\n prevAuthClient.onAuthRefreshError = undefined;\n prevAuthClient.onAuthLogout = undefined;\n prevAuthClient.onTokenExpired = undefined;\n // Reset state\n this.setState(__assign({}, initialState));\n // Init new AuthClient instance\n this.init();\n }\n };\n KeycloakProvider.prototype.init = function () {\n var _a = this.props, initOptions = _a.initOptions, authClient = _a.authClient;\n // Attach Keycloak listeners\n authClient.onReady = this.updateState('onReady');\n authClient.onAuthSuccess = this.updateState('onAuthSuccess');\n authClient.onAuthError = this.onError('onAuthError');\n authClient.onAuthRefreshSuccess = this.updateState('onAuthRefreshSuccess');\n authClient.onAuthRefreshError = this.onError('onAuthRefreshError');\n authClient.onAuthLogout = this.updateState('onAuthLogout');\n authClient.onTokenExpired = this.refreshToken('onTokenExpired');\n authClient\n .init(__assign(__assign({}, defaultInitOptions), initOptions))\n .catch(this.onError('onInitError'));\n };\n KeycloakProvider.prototype.render = function () {\n var _a = this.props, children = _a.children, authClient = _a.authClient, LoadingComponent = _a.LoadingComponent;\n var _b = this.state, initialized = _b.initialized, isLoading = _b.isLoading;\n if (!!LoadingComponent && (!initialized || isLoading)) {\n return LoadingComponent;\n }\n return (React.createElement(AuthContext.Provider, { value: { initialized: initialized, authClient: authClient } }, children));\n };\n return KeycloakProvider;\n }(React.PureComponent));\n}\nfunction isUserAuthenticated(authClient) {\n return !!authClient.idToken && !!authClient.token;\n}\nexport default createAuthProvider;\n//# sourceMappingURL=provider.js.map","import { createAuthContext } from '@react-keycloak/core';\nexport var reactKeycloakWebContext = createAuthContext();\nexport var ReactKeycloakWebContextConsumer = reactKeycloakWebContext.Consumer;\n//# sourceMappingURL=context.js.map","import { createAuthProvider } from '@react-keycloak/core';\nimport { reactKeycloakWebContext } from './context';\nexport var ReactKeycloakProvider = createAuthProvider(reactKeycloakWebContext);\n//# sourceMappingURL=provider.js.map","import { useContext } from 'react';\nimport { reactKeycloakWebContext } from './context';\nexport function useKeycloak() {\n var ctx = useContext(reactKeycloakWebContext);\n if (!ctx) {\n throw new Error('useKeycloak hook must be used inside ReactKeycloakProvider context');\n }\n if (!ctx.authClient) {\n throw new Error('authClient has not been assigned to ReactKeycloakProvider');\n }\n var authClient = ctx.authClient, initialized = ctx.initialized;\n return {\n initialized: initialized,\n keycloak: authClient,\n };\n}\n//# sourceMappingURL=useKeycloak.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useKeycloak } from './useKeycloak';\n/**\n * An HOC which injects the `keycloak` instance and the `keycloakInitialized` flag as props.\n *\n * @deprecated Please migrate to useKeycloak hook where/when possible.\n */\nexport function withKeycloak(Component) {\n return function WrappedComponent(props) {\n var _a = useKeycloak(), keycloak = _a.keycloak, initialized = _a.initialized;\n return (React.createElement(Component, __assign({}, props, { keycloakInitialized: initialized, keycloak: keycloak })));\n };\n}\n//# sourceMappingURL=withKeycloak.js.map","/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction Keycloak (config) {\n if (!(this instanceof Keycloak)) {\n throw new Error(\"The 'Keycloak' constructor must be invoked with 'new'.\")\n }\n\n if (typeof config !== 'string' && !isObject(config)) {\n throw new Error(\"The 'Keycloak' constructor must be provided with a configuration object, or a URL to a JSON configuration file.\");\n }\n\n if (isObject(config)) {\n const requiredProperties = 'oidcProvider' in config\n ? ['clientId']\n : ['url', 'realm', 'clientId'];\n\n for (const property of requiredProperties) {\n if (!config[property]) {\n throw new Error(`The configuration object is missing the required '${property}' property.`);\n }\n }\n }\n\n var kc = this;\n var adapter;\n var refreshQueue = [];\n var callbackStorage;\n\n var loginIframe = {\n enable: true,\n callbackList: [],\n interval: 5\n };\n\n kc.didInitialize = false;\n\n var useNonce = true;\n var logInfo = createLogger(console.info);\n var logWarn = createLogger(console.warn);\n\n if (!globalThis.isSecureContext) {\n logWarn(\n \"[KEYCLOAK] Keycloak JS must be used in a 'secure context' to function properly as it relies on browser APIs that are otherwise not available.\\n\" +\n \"Continuing to run your application insecurely will lead to unexpected behavior and breakage.\\n\\n\" +\n \"For more information see: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\"\n );\n }\n\n kc.init = function (initOptions = {}) {\n if (kc.didInitialize) {\n throw new Error(\"A 'Keycloak' instance can only be initialized once.\");\n }\n\n kc.didInitialize = true;\n\n kc.authenticated = false;\n\n callbackStorage = createCallbackStorage();\n var adapters = ['default', 'cordova', 'cordova-native'];\n\n if (adapters.indexOf(initOptions.adapter) > -1) {\n adapter = loadAdapter(initOptions.adapter);\n } else if (typeof initOptions.adapter === \"object\") {\n adapter = initOptions.adapter;\n } else {\n if (window.Cordova || window.cordova) {\n adapter = loadAdapter('cordova');\n } else {\n adapter = loadAdapter();\n }\n }\n\n if (typeof initOptions.useNonce !== 'undefined') {\n useNonce = initOptions.useNonce;\n }\n\n if (typeof initOptions.checkLoginIframe !== 'undefined') {\n loginIframe.enable = initOptions.checkLoginIframe;\n }\n\n if (initOptions.checkLoginIframeInterval) {\n loginIframe.interval = initOptions.checkLoginIframeInterval;\n }\n\n if (initOptions.onLoad === 'login-required') {\n kc.loginRequired = true;\n }\n\n if (initOptions.responseMode) {\n if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n kc.responseMode = initOptions.responseMode;\n } else {\n throw 'Invalid value for responseMode';\n }\n }\n\n if (initOptions.flow) {\n switch (initOptions.flow) {\n case 'standard':\n kc.responseType = 'code';\n break;\n case 'implicit':\n kc.responseType = 'id_token token';\n break;\n case 'hybrid':\n kc.responseType = 'code id_token token';\n break;\n default:\n throw 'Invalid value for flow';\n }\n kc.flow = initOptions.flow;\n }\n\n if (initOptions.timeSkew != null) {\n kc.timeSkew = initOptions.timeSkew;\n }\n\n if(initOptions.redirectUri) {\n kc.redirectUri = initOptions.redirectUri;\n }\n\n if (initOptions.silentCheckSsoRedirectUri) {\n kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n }\n\n if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n } else {\n kc.silentCheckSsoFallback = true;\n }\n\n if (typeof initOptions.pkceMethod !== \"undefined\") {\n if (initOptions.pkceMethod !== \"S256\" && initOptions.pkceMethod !== false) {\n throw new TypeError(`Invalid value for pkceMethod', expected 'S256' or false but got ${initOptions.pkceMethod}.`);\n }\n\n kc.pkceMethod = initOptions.pkceMethod;\n } else {\n kc.pkceMethod = \"S256\";\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\n }\n\n if (initOptions.logoutMethod === 'POST') {\n kc.logoutMethod = 'POST';\n } else {\n kc.logoutMethod = 'GET';\n }\n\n if (typeof initOptions.scope === 'string') {\n kc.scope = initOptions.scope;\n }\n\n if (typeof initOptions.acrValues === 'string') {\n kc.acrValues = initOptions.acrValues;\n }\n\n if (typeof initOptions.messageReceiveTimeout === 'number' && initOptions.messageReceiveTimeout > 0) {\n kc.messageReceiveTimeout = initOptions.messageReceiveTimeout;\n } else {\n kc.messageReceiveTimeout = 10000;\n }\n\n if (!kc.responseMode) {\n kc.responseMode = 'fragment';\n }\n if (!kc.responseType) {\n kc.responseType = 'code';\n kc.flow = 'standard';\n }\n\n var promise = createPromise();\n\n var initPromise = createPromise();\n initPromise.promise.then(function() {\n kc.onReady && kc.onReady(kc.authenticated);\n promise.setSuccess(kc.authenticated);\n }).catch(function(error) {\n promise.setError(error);\n });\n\n var configPromise = loadConfig();\n\n function onLoad() {\n var doLogin = function(prompt) {\n if (!prompt) {\n options.prompt = 'none';\n }\n\n if (initOptions.locale) {\n options.locale = initOptions.locale;\n }\n kc.login(options).then(function () {\n initPromise.setSuccess();\n }).catch(function (error) {\n initPromise.setError(error);\n });\n }\n\n var checkSsoSilently = async function() {\n var ifrm = document.createElement(\"iframe\");\n var src = await kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n ifrm.setAttribute(\"src\", src);\n ifrm.setAttribute(\"sandbox\", \"allow-storage-access-by-user-activation allow-scripts allow-same-origin\");\n ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n ifrm.style.display = \"none\";\n document.body.appendChild(ifrm);\n\n var messageCallback = function(event) {\n if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n return;\n }\n\n var oauth = parseCallback(event.data);\n processCallback(oauth, initPromise);\n\n document.body.removeChild(ifrm);\n window.removeEventListener(\"message\", messageCallback);\n };\n\n window.addEventListener(\"message\", messageCallback);\n };\n\n var options = {};\n switch (initOptions.onLoad) {\n case 'check-sso':\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (!unchanged) {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n }\n break;\n case 'login-required':\n doLogin(true);\n break;\n default:\n throw 'Invalid value for onLoad';\n }\n }\n\n function processInit() {\n var callback = parseCallback(window.location.href);\n\n if (callback) {\n window.history.replaceState(window.history.state, null, callback.newUrl);\n }\n\n if (callback && callback.valid) {\n return setupCheckLoginIframe().then(function() {\n processCallback(callback, initPromise);\n }).catch(function (error) {\n initPromise.setError(error);\n });\n }\n\n if (initOptions.token && initOptions.refreshToken) {\n setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (unchanged) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n scheduleCheckIframe();\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.updateToken(-1).then(function() {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n }).catch(function(error) {\n kc.onAuthError && kc.onAuthError();\n if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setError(error);\n }\n });\n }\n } else if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setSuccess();\n }\n }\n\n configPromise.then(function () {\n check3pCookiesSupported()\n .then(processInit)\n .catch(function (error) {\n promise.setError(error);\n });\n });\n configPromise.catch(function (error) {\n promise.setError(error);\n });\n\n return promise.promise;\n }\n\n kc.login = function (options) {\n return adapter.login(options);\n }\n\n function generateRandomData(len) {\n if (typeof crypto === \"undefined\" || typeof crypto.getRandomValues === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return crypto.getRandomValues(new Uint8Array(len));\n }\n\n function generateCodeVerifier(len) {\n return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n }\n\n function generateRandomString(len, alphabet){\n var randomData = generateRandomData(len);\n var chars = new Array(len);\n for (var i = 0; i < len; i++) {\n chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n }\n return String.fromCharCode.apply(null, chars);\n }\n\n async function generatePkceChallenge(pkceMethod, codeVerifier) {\n if (pkceMethod !== \"S256\") {\n throw new TypeError(`Invalid value for 'pkceMethod', expected 'S256' but got '${pkceMethod}'.`);\n }\n\n // hash codeVerifier, then encode as url-safe base64 without padding\n const hashBytes = new Uint8Array(await sha256Digest(codeVerifier));\n const encodedHash = bytesToBase64(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n\n return encodedHash;\n }\n\n function buildClaimsParameter(requestedAcr){\n var claims = {\n id_token: {\n acr: requestedAcr\n }\n }\n return JSON.stringify(claims);\n }\n\n kc.createLoginUrl = async function(options) {\n var state = createUUID();\n var nonce = createUUID();\n\n var redirectUri = adapter.redirectUri(options);\n\n var callbackState = {\n state: state,\n nonce: nonce,\n redirectUri: encodeURIComponent(redirectUri),\n loginOptions: options\n };\n\n if (options && options.prompt) {\n callbackState.prompt = options.prompt;\n }\n\n var baseUrl;\n if (options && options.action == 'register') {\n baseUrl = kc.endpoints.register();\n } else {\n baseUrl = kc.endpoints.authorize();\n }\n\n var scope = options && options.scope || kc.scope;\n if (!scope) {\n // if scope is not set, default to \"openid\"\n scope = \"openid\";\n } else if (scope.indexOf(\"openid\") === -1) {\n // if openid scope is missing, prefix the given scopes with it\n scope = \"openid \" + scope;\n }\n\n var url = baseUrl\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&redirect_uri=' + encodeURIComponent(redirectUri)\n + '&state=' + encodeURIComponent(state)\n + '&response_mode=' + encodeURIComponent(kc.responseMode)\n + '&response_type=' + encodeURIComponent(kc.responseType)\n + '&scope=' + encodeURIComponent(scope);\n if (useNonce) {\n url = url + '&nonce=' + encodeURIComponent(nonce);\n }\n\n if (options && options.prompt) {\n url += '&prompt=' + encodeURIComponent(options.prompt);\n }\n\n if (options && typeof options.maxAge === 'number') {\n url += '&max_age=' + encodeURIComponent(options.maxAge);\n }\n\n if (options && options.loginHint) {\n url += '&login_hint=' + encodeURIComponent(options.loginHint);\n }\n\n if (options && options.idpHint) {\n url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n }\n\n if (options && options.action && options.action != 'register') {\n url += '&kc_action=' + encodeURIComponent(options.action);\n }\n\n if (options && options.locale) {\n url += '&ui_locales=' + encodeURIComponent(options.locale);\n }\n\n if (options && options.acr) {\n var claimsParameter = buildClaimsParameter(options.acr);\n url += '&claims=' + encodeURIComponent(claimsParameter);\n }\n\n if ((options && options.acrValues) || kc.acrValues) {\n url += '&acr_values=' + encodeURIComponent(options.acrValues || kc.acrValues);\n }\n\n if (kc.pkceMethod) {\n try {\n const codeVerifier = generateCodeVerifier(96);\n const pkceChallenge = await generatePkceChallenge(kc.pkceMethod, codeVerifier);\n\n callbackState.pkceCodeVerifier = codeVerifier;\n\n url += '&code_challenge=' + pkceChallenge;\n url += '&code_challenge_method=' + kc.pkceMethod;\n } catch (error) {\n throw new Error(\"Failed to generate PKCE challenge.\", { cause: error });\n }\n }\n\n callbackStorage.add(callbackState);\n\n return url;\n }\n\n kc.logout = function(options) {\n return adapter.logout(options);\n }\n\n kc.createLogoutUrl = function(options) {\n\n const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n if (logoutMethod === 'POST') {\n return kc.endpoints.logout();\n }\n\n var url = kc.endpoints.logout()\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&post_logout_redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n if (kc.idToken) {\n url += '&id_token_hint=' + encodeURIComponent(kc.idToken);\n }\n\n return url;\n }\n\n kc.register = function (options) {\n return adapter.register(options);\n }\n\n kc.createRegisterUrl = async function(options) {\n if (!options) {\n options = {};\n }\n options.action = 'register';\n return await kc.createLoginUrl(options);\n }\n\n kc.createAccountUrl = function(options) {\n var realm = getRealmUrl();\n var url = undefined;\n if (typeof realm !== 'undefined') {\n url = realm\n + '/account'\n + '?referrer=' + encodeURIComponent(kc.clientId)\n + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n }\n return url;\n }\n\n kc.accountManagement = function() {\n return adapter.accountManagement();\n }\n\n kc.hasRealmRole = function (role) {\n var access = kc.realmAccess;\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.hasResourceRole = function(role, resource) {\n if (!kc.resourceAccess) {\n return false;\n }\n\n var access = kc.resourceAccess[resource || kc.clientId];\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.loadUserProfile = function() {\n var url = getRealmUrl() + '/account';\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.profile = JSON.parse(req.responseText);\n promise.setSuccess(kc.profile);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.loadUserInfo = function() {\n var url = kc.endpoints.userinfo();\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.userInfo = JSON.parse(req.responseText);\n promise.setSuccess(kc.userInfo);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.isTokenExpired = function(minValidity) {\n if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n throw 'Not authenticated';\n }\n\n if (kc.timeSkew == null) {\n logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n return true;\n }\n\n var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n if (minValidity) {\n if (isNaN(minValidity)) {\n throw 'Invalid minValidity';\n }\n expiresIn -= minValidity;\n }\n return expiresIn < 0;\n }\n\n kc.updateToken = function(minValidity) {\n var promise = createPromise();\n\n if (!kc.refreshToken) {\n promise.setError();\n return promise.promise;\n }\n\n minValidity = minValidity || 5;\n\n var exec = function() {\n var refreshToken = false;\n if (minValidity == -1) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: token expired');\n }\n\n if (!refreshToken) {\n promise.setSuccess(false);\n } else {\n var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n var url = kc.endpoints.token();\n\n refreshQueue.push(promise);\n\n if (refreshQueue.length == 1) {\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n req.withCredentials = true;\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n var timeLocal = new Date().getTime();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n logInfo('[KEYCLOAK] Token refreshed');\n\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n var tokenResponse = JSON.parse(req.responseText);\n\n setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setSuccess(true);\n }\n } else {\n logWarn('[KEYCLOAK] Failed to refresh token');\n\n if (req.status == 400) {\n kc.clearToken();\n }\n\n kc.onAuthRefreshError && kc.onAuthRefreshError();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setError(\"Failed to refresh token: An unexpected HTTP error occurred while attempting to refresh the token.\");\n }\n }\n }\n };\n\n req.send(params);\n }\n }\n }\n\n if (loginIframe.enable) {\n var iframePromise = checkLoginIframe();\n iframePromise.then(function() {\n exec();\n }).catch(function(error) {\n promise.setError(error);\n });\n } else {\n exec();\n }\n\n return promise.promise;\n }\n\n kc.clearToken = function() {\n if (kc.token) {\n setToken(null, null, null);\n kc.onAuthLogout && kc.onAuthLogout();\n if (kc.loginRequired) {\n kc.login();\n }\n }\n }\n\n function getRealmUrl() {\n if (typeof kc.authServerUrl !== 'undefined') {\n if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n } else {\n return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n }\n } else {\n return undefined;\n }\n }\n\n function getOrigin() {\n if (!window.location.origin) {\n return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n } else {\n return window.location.origin;\n }\n }\n\n function processCallback(oauth, promise) {\n var code = oauth.code;\n var error = oauth.error;\n var prompt = oauth.prompt;\n\n var timeLocal = new Date().getTime();\n\n if (oauth['kc_action_status']) {\n kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status'], oauth['kc_action']);\n }\n\n if (error) {\n if (prompt != 'none') {\n if (oauth.error_description && oauth.error_description === \"authentication_expired\") {\n kc.login(oauth.loginOptions);\n } else {\n var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\n }\n } else {\n promise && promise.setSuccess();\n }\n return;\n } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n authSuccess(oauth.access_token, null, oauth.id_token, true);\n }\n\n if ((kc.flow != 'implicit') && code) {\n var params = 'code=' + code + '&grant_type=authorization_code';\n var url = kc.endpoints.token();\n\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n params += '&redirect_uri=' + oauth.redirectUri;\n\n if (oauth.pkceCodeVerifier) {\n params += '&code_verifier=' + oauth.pkceCodeVerifier;\n }\n\n req.withCredentials = true;\n\n req.onreadystatechange = function() {\n if (req.readyState == 4) {\n if (req.status == 200) {\n\n var tokenResponse = JSON.parse(req.responseText);\n authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard');\n scheduleCheckIframe();\n } else {\n kc.onAuthError && kc.onAuthError();\n promise && promise.setError();\n }\n }\n };\n\n req.send(params);\n }\n\n function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n setToken(accessToken, refreshToken, idToken, timeLocal);\n\n if (useNonce && (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce)) {\n logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n kc.clearToken();\n promise && promise.setError();\n } else {\n if (fulfillPromise) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n promise && promise.setSuccess();\n }\n }\n }\n\n }\n\n function loadConfig() {\n var promise = createPromise();\n var configUrl;\n\n if (typeof config === 'string') {\n configUrl = config;\n }\n\n function setupOidcEndoints(oidcConfiguration) {\n if (! oidcConfiguration) {\n kc.endpoints = {\n authorize: function() {\n return getRealmUrl() + '/protocol/openid-connect/auth';\n },\n token: function() {\n return getRealmUrl() + '/protocol/openid-connect/token';\n },\n logout: function() {\n return getRealmUrl() + '/protocol/openid-connect/logout';\n },\n checkSessionIframe: function() {\n return getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n },\n thirdPartyCookiesIframe: function() {\n return getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n },\n register: function() {\n return getRealmUrl() + '/protocol/openid-connect/registrations';\n },\n userinfo: function() {\n return getRealmUrl() + '/protocol/openid-connect/userinfo';\n }\n };\n } else {\n kc.endpoints = {\n authorize: function() {\n return oidcConfiguration.authorization_endpoint;\n },\n token: function() {\n return oidcConfiguration.token_endpoint;\n },\n logout: function() {\n if (!oidcConfiguration.end_session_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.end_session_endpoint;\n },\n checkSessionIframe: function() {\n if (!oidcConfiguration.check_session_iframe) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.check_session_iframe;\n },\n register: function() {\n throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n },\n userinfo: function() {\n if (!oidcConfiguration.userinfo_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.userinfo_endpoint;\n }\n }\n }\n }\n\n if (configUrl) {\n var req = new XMLHttpRequest();\n req.open('GET', configUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var config = JSON.parse(req.responseText);\n\n kc.authServerUrl = config['auth-server-url'];\n kc.realm = config['realm'];\n kc.clientId = config['resource'];\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n kc.clientId = config.clientId;\n\n var oidcProvider = config['oidcProvider'];\n if (!oidcProvider) {\n kc.authServerUrl = config.url;\n kc.realm = config.realm;\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n if (typeof oidcProvider === 'string') {\n var oidcProviderConfigUrl;\n if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n } else {\n oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n }\n var req = new XMLHttpRequest();\n req.open('GET', oidcProviderConfigUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var oidcProviderConfig = JSON.parse(req.responseText);\n setupOidcEndoints(oidcProviderConfig);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n setupOidcEndoints(oidcProvider);\n promise.setSuccess();\n }\n }\n }\n\n return promise.promise;\n }\n\n function fileLoaded(xhr) {\n return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n }\n\n function setToken(token, refreshToken, idToken, timeLocal) {\n if (kc.tokenTimeoutHandle) {\n clearTimeout(kc.tokenTimeoutHandle);\n kc.tokenTimeoutHandle = null;\n }\n\n if (refreshToken) {\n kc.refreshToken = refreshToken;\n kc.refreshTokenParsed = decodeToken(refreshToken);\n } else {\n delete kc.refreshToken;\n delete kc.refreshTokenParsed;\n }\n\n if (idToken) {\n kc.idToken = idToken;\n kc.idTokenParsed = decodeToken(idToken);\n } else {\n delete kc.idToken;\n delete kc.idTokenParsed;\n }\n\n if (token) {\n kc.token = token;\n kc.tokenParsed = decodeToken(token);\n kc.sessionId = kc.tokenParsed.sid;\n kc.authenticated = true;\n kc.subject = kc.tokenParsed.sub;\n kc.realmAccess = kc.tokenParsed.realm_access;\n kc.resourceAccess = kc.tokenParsed.resource_access;\n\n if (timeLocal) {\n kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n }\n\n if (kc.timeSkew != null) {\n logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n if (kc.onTokenExpired) {\n var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n if (expiresIn <= 0) {\n kc.onTokenExpired();\n } else {\n kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n }\n }\n }\n } else {\n delete kc.token;\n delete kc.tokenParsed;\n delete kc.subject;\n delete kc.realmAccess;\n delete kc.resourceAccess;\n\n kc.authenticated = false;\n }\n }\n\n function createUUID() {\n if (typeof crypto === \"undefined\" || typeof crypto.randomUUID === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return crypto.randomUUID();\n }\n\n function parseCallback(url) {\n var oauth = parseCallbackUrl(url);\n if (!oauth) {\n return;\n }\n\n var oauthState = callbackStorage.get(oauth.state);\n\n if (oauthState) {\n oauth.valid = true;\n oauth.redirectUri = oauthState.redirectUri;\n oauth.storedNonce = oauthState.nonce;\n oauth.prompt = oauthState.prompt;\n oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n oauth.loginOptions = oauthState.loginOptions;\n }\n\n return oauth;\n }\n\n function parseCallbackUrl(url) {\n var supportedParams;\n switch (kc.flow) {\n case 'standard':\n supportedParams = ['code', 'state', 'session_state', 'kc_action_status', 'kc_action', 'iss'];\n break;\n case 'implicit':\n supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss'];\n break;\n case 'hybrid':\n supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss'];\n break;\n }\n\n supportedParams.push('error');\n supportedParams.push('error_description');\n supportedParams.push('error_uri');\n\n var queryIndex = url.indexOf('?');\n var fragmentIndex = url.indexOf('#');\n\n var newUrl;\n var parsed;\n\n if (kc.responseMode === 'query' && queryIndex !== -1) {\n newUrl = url.substring(0, queryIndex);\n parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '?' + parsed.paramsString;\n }\n if (fragmentIndex !== -1) {\n newUrl += url.substring(fragmentIndex);\n }\n } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n newUrl = url.substring(0, fragmentIndex);\n parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '#' + parsed.paramsString;\n }\n }\n\n if (parsed && parsed.oauthParams) {\n if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n } else if (kc.flow === 'implicit') {\n if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n }\n }\n }\n\n function parseCallbackParams(paramsString, supportedParams) {\n var p = paramsString.split('&');\n var result = {\n paramsString: '',\n oauthParams: {}\n }\n for (var i = 0; i < p.length; i++) {\n var split = p[i].indexOf(\"=\");\n var key = p[i].slice(0, split);\n if (supportedParams.indexOf(key) !== -1) {\n result.oauthParams[key] = p[i].slice(split + 1);\n } else {\n if (result.paramsString !== '') {\n result.paramsString += '&';\n }\n result.paramsString += p[i];\n }\n }\n return result;\n }\n\n function createPromise() {\n // Need to create a native Promise which also preserves the\n // interface of the custom promise type previously used by the API\n var p = {\n setSuccess: function(result) {\n p.resolve(result);\n },\n\n setError: function(result) {\n p.reject(result);\n }\n };\n p.promise = new Promise(function(resolve, reject) {\n p.resolve = resolve;\n p.reject = reject;\n });\n\n return p;\n }\n\n // Function to extend existing native Promise with timeout\n function applyTimeoutToPromise(promise, timeout, errorMessage) {\n var timeoutHandle = null;\n var timeoutPromise = new Promise(function (resolve, reject) {\n timeoutHandle = setTimeout(function () {\n reject({ \"error\": errorMessage || \"Promise is not settled within timeout of \" + timeout + \"ms\" });\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).finally(function () {\n clearTimeout(timeoutHandle);\n });\n }\n\n function setupCheckLoginIframe() {\n var promise = createPromise();\n\n if (!loginIframe.enable) {\n promise.setSuccess();\n return promise.promise;\n }\n\n if (loginIframe.iframe) {\n promise.setSuccess();\n return promise.promise;\n }\n\n var iframe = document.createElement('iframe');\n loginIframe.iframe = iframe;\n\n iframe.onload = function() {\n var authUrl = kc.endpoints.authorize();\n if (authUrl.charAt(0) === '/') {\n loginIframe.iframeOrigin = getOrigin();\n } else {\n loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n }\n promise.setSuccess();\n }\n\n var src = kc.endpoints.checkSessionIframe();\n iframe.setAttribute('src', src );\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-session-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n return;\n }\n\n if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n return;\n }\n\n\n if (event.data != 'unchanged') {\n kc.clearToken();\n }\n\n var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n for (var i = callbacks.length - 1; i >= 0; --i) {\n var promise = callbacks[i];\n if (event.data == 'error') {\n promise.setError();\n } else {\n promise.setSuccess(event.data == 'unchanged');\n }\n }\n };\n\n window.addEventListener('message', messageCallback, false);\n\n return promise.promise;\n }\n\n function scheduleCheckIframe() {\n if (loginIframe.enable) {\n if (kc.token) {\n setTimeout(function() {\n checkLoginIframe().then(function(unchanged) {\n if (unchanged) {\n scheduleCheckIframe();\n }\n });\n }, loginIframe.interval * 1000);\n }\n }\n }\n\n function checkLoginIframe() {\n var promise = createPromise();\n\n if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n loginIframe.callbackList.push(promise);\n var origin = loginIframe.iframeOrigin;\n if (loginIframe.callbackList.length == 1) {\n loginIframe.iframe.contentWindow.postMessage(msg, origin);\n }\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function check3pCookiesSupported() {\n var promise = createPromise();\n\n if ((loginIframe.enable || kc.silentCheckSsoRedirectUri) && typeof kc.endpoints.thirdPartyCookiesIframe === 'function') {\n var iframe = document.createElement('iframe');\n iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if (iframe.contentWindow !== event.source) {\n return;\n }\n\n if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n return;\n } else if (event.data === \"unsupported\") {\n logWarn(\n \"[KEYCLOAK] Your browser is blocking access to 3rd-party cookies, this means:\\n\\n\" +\n \" - It is not possible to retrieve tokens without redirecting to the Keycloak server (a.k.a. no support for silent authentication).\\n\" +\n \" - It is not possible to automatically detect changes to the session status (such as the user logging out in another tab).\\n\\n\" +\n \"For more information see: https://www.keycloak.org/securing-apps/javascript-adapter#_modern_browsers\"\n );\n\n loginIframe.enable = false;\n if (kc.silentCheckSsoFallback) {\n kc.silentCheckSsoRedirectUri = false;\n }\n }\n\n document.body.removeChild(iframe);\n window.removeEventListener(\"message\", messageCallback);\n promise.setSuccess();\n };\n\n window.addEventListener('message', messageCallback, false);\n } else {\n promise.setSuccess();\n }\n\n return applyTimeoutToPromise(promise.promise, kc.messageReceiveTimeout, \"Timeout when waiting for 3rd party check iframe message.\");\n }\n\n function loadAdapter(type) {\n if (!type || type == 'default') {\n return {\n login: async function(options) {\n window.location.assign(await kc.createLoginUrl(options));\n return createPromise().promise;\n },\n\n logout: async function(options) {\n\n const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n if (logoutMethod === \"GET\") {\n window.location.replace(kc.createLogoutUrl(options));\n return;\n }\n\n // Create form to send POST request.\n const form = document.createElement(\"form\");\n\n form.setAttribute(\"method\", \"POST\");\n form.setAttribute(\"action\", kc.createLogoutUrl(options));\n form.style.display = \"none\";\n\n // Add data to form as hidden input fields.\n const data = {\n id_token_hint: kc.idToken,\n client_id: kc.clientId,\n post_logout_redirect_uri: adapter.redirectUri(options, false)\n };\n\n for (const [name, value] of Object.entries(data)) {\n const input = document.createElement(\"input\");\n\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", name);\n input.setAttribute(\"value\", value);\n\n form.appendChild(input);\n }\n\n // Append form to page and submit it to perform logout and redirect.\n document.body.appendChild(form);\n form.submit();\n },\n\n register: async function(options) {\n window.location.assign(await kc.createRegisterUrl(options));\n return createPromise().promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.location.href = accountUrl;\n } else {\n throw \"Not supported by the OIDC server\";\n }\n return createPromise().promise;\n },\n\n redirectUri: function(options, encodeHash) {\n if (arguments.length == 1) {\n encodeHash = true;\n }\n\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return location.href;\n }\n }\n };\n }\n\n if (type == 'cordova') {\n loginIframe.enable = false;\n var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n if (window.cordova && window.cordova.InAppBrowser) {\n // Use inappbrowser for IOS and Android if available\n return window.cordova.InAppBrowser.open(loginUrl, target, options);\n } else {\n return window.open(loginUrl, target, options);\n }\n };\n\n var shallowCloneCordovaOptions = function (userOptions) {\n if (userOptions && userOptions.cordovaOptions) {\n return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n options[optionName] = userOptions.cordovaOptions[optionName];\n return options;\n }, {});\n } else {\n return {};\n }\n };\n\n var formatCordovaOptions = function (cordovaOptions) {\n return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n options.push(optionName+\"=\"+cordovaOptions[optionName]);\n return options;\n }, []).join(\",\");\n };\n\n var createCordovaOptions = function (userOptions) {\n var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n cordovaOptions.location = 'no';\n if (userOptions && userOptions.prompt == 'none') {\n cordovaOptions.hidden = 'yes';\n }\n return formatCordovaOptions(cordovaOptions);\n };\n\n var getCordovaRedirectUri = function() {\n return kc.redirectUri || 'http://localhost';\n }\n\n return {\n login: async function(options) {\n var promise = createPromise();\n\n var cordovaOptions = createCordovaOptions(options);\n var loginUrl = await kc.createLoginUrl(options);\n var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n var completed = false;\n\n var closed = false;\n var closeBrowser = function() {\n closed = true;\n ref.close();\n };\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (!completed) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n } else {\n promise.setError();\n closeBrowser();\n }\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (!closed) {\n promise.setError({\n reason: \"closed_by_user\"\n });\n }\n });\n\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n\n var logoutUrl = kc.createLogoutUrl(options);\n var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes,clearcache=yes');\n\n var error;\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n } else {\n error = true;\n ref.close();\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (error) {\n promise.setError();\n } else {\n kc.clearToken();\n promise.setSuccess();\n }\n });\n\n return promise.promise;\n },\n\n register : async function(options) {\n var promise = createPromise();\n var registerUrl = await kc.createRegisterUrl();\n var cordovaOptions = createCordovaOptions(options);\n var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n }\n });\n return promise.promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n return getCordovaRedirectUri();\n }\n }\n }\n\n if (type == 'cordova-native') {\n loginIframe.enable = false;\n\n return {\n login: async function(options) {\n var promise = createPromise();\n var loginUrl = await kc.createLoginUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n\n window.cordova.plugins.browsertab.openUrl(loginUrl);\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n },\n\n register : async function(options) {\n var promise = createPromise();\n var registerUrl = await kc.createRegisterUrl(options);\n universalLinks.subscribe('keycloak' , function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n window.cordova.plugins.browsertab.openUrl(registerUrl);\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl);\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n throw 'invalid adapter type: ' + type;\n }\n\n const STORAGE_KEY_PREFIX = 'kc-callback-';\n\n var LocalStorage = function() {\n if (!(this instanceof LocalStorage)) {\n return new LocalStorage();\n }\n\n localStorage.setItem('kc-test', 'test');\n localStorage.removeItem('kc-test');\n\n var cs = this;\n\n /**\n * Clears all values from local storage that are no longer valid.\n */\n function clearInvalidValues() {\n const currentTime = Date.now();\n\n for (const [key, value] of getStoredEntries()) {\n // Attempt to parse the expiry time from the value.\n const expiry = parseExpiry(value);\n\n // Discard the value if it is malformed or expired.\n if (expiry === null || expiry < currentTime) {\n localStorage.removeItem(key);\n }\n }\n }\n\n /**\n * Clears all known values from local storage.\n */\n function clearAllValues() {\n for (const [key] of getStoredEntries()) {\n localStorage.removeItem(key);\n }\n }\n\n /**\n * Gets all entries stored in local storage that are known to be managed by this class.\n * @returns {Array<[string, unknown]>} An array of key-value pairs.\n */\n function getStoredEntries() {\n return Object.entries(localStorage).filter(([key]) => key.startsWith(STORAGE_KEY_PREFIX));\n }\n\n /**\n * Parses the expiry time from a value stored in local storage.\n * @param {unknown} value\n * @returns {number | null} The expiry time in milliseconds, or `null` if the value is malformed.\n */\n function parseExpiry(value) {\n let parsedValue;\n\n // Attempt to parse the value as JSON.\n try {\n parsedValue = JSON.parse(value);\n } catch (error) {\n return null;\n }\n\n // Attempt to extract the 'expires' property.\n if (isObject(parsedValue) && 'expires' in parsedValue && typeof parsedValue.expires === 'number') {\n return parsedValue.expires;\n }\n\n return null;\n }\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var key = STORAGE_KEY_PREFIX + state;\n var value = localStorage.getItem(key);\n if (value) {\n localStorage.removeItem(key);\n value = JSON.parse(value);\n }\n\n clearInvalidValues();\n return value;\n };\n\n cs.add = function(state) {\n clearInvalidValues();\n\n const key = STORAGE_KEY_PREFIX + state.state;\n const value = JSON.stringify({\n ...state,\n // Set the expiry time to 1 hour from now.\n expires: Date.now() + (60 * 60 * 1000)\n });\n\n try {\n localStorage.setItem(key, value);\n } catch (error) {\n // If the storage is full, clear all known values and try again.\n clearAllValues();\n localStorage.setItem(key, value);\n }\n };\n };\n\n var CookieStorage = function() {\n if (!(this instanceof CookieStorage)) {\n return new CookieStorage();\n }\n\n var cs = this;\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var value = getCookie(STORAGE_KEY_PREFIX + state);\n setCookie(STORAGE_KEY_PREFIX + state, '', cookieExpiration(-100));\n if (value) {\n return JSON.parse(value);\n }\n };\n\n cs.add = function(state) {\n setCookie(STORAGE_KEY_PREFIX + state.state, JSON.stringify(state), cookieExpiration(60));\n };\n\n cs.removeItem = function(key) {\n setCookie(key, '', cookieExpiration(-100));\n };\n\n var cookieExpiration = function (minutes) {\n var exp = new Date();\n exp.setTime(exp.getTime() + (minutes*60*1000));\n return exp;\n };\n\n var getCookie = function (key) {\n var name = key + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n var setCookie = function (key, value, expirationDate) {\n var cookie = key + '=' + value + '; '\n + 'expires=' + expirationDate.toUTCString() + '; ';\n document.cookie = cookie;\n }\n };\n\n function createCallbackStorage() {\n try {\n return new LocalStorage();\n } catch (err) {\n }\n\n return new CookieStorage();\n }\n\n function createLogger(fn) {\n return function() {\n if (kc.enableLogging) {\n fn.apply(console, Array.prototype.slice.call(arguments));\n }\n };\n }\n}\n\nexport default Keycloak;\n\n/**\n * @param {ArrayBuffer} bytes\n * @see https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n */\nfunction bytesToBase64(bytes) {\n const binString = String.fromCodePoint(...bytes);\n return btoa(binString);\n}\n\n/**\n * @param {string} message\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#basic_example\n */\nasync function sha256Digest(message) {\n const encoder = new TextEncoder();\n const data = encoder.encode(message);\n\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return await crypto.subtle.digest(\"SHA-256\", data);\n}\n\n/**\n * @param {string} token\n */\nfunction decodeToken(token) {\n const [header, payload] = token.split(\".\");\n\n if (typeof payload !== \"string\") {\n throw new Error(\"Unable to decode token, payload not found.\");\n }\n\n let decoded;\n\n try {\n decoded = base64UrlDecode(payload);\n } catch (error) {\n throw new Error(\"Unable to decode token, payload is not a valid Base64URL value.\", { cause: error });\n }\n\n try {\n return JSON.parse(decoded);\n } catch (error) {\n throw new Error(\"Unable to decode token, payload is not a valid JSON value.\", { cause: error });\n }\n}\n\n/**\n * @param {string} input\n */\nfunction base64UrlDecode(input) {\n let output = input\n .replaceAll(\"-\", \"+\")\n .replaceAll(\"_\", \"/\");\n\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"Input is not of the correct length.\");\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (error) {\n return atob(output);\n }\n}\n\n/**\n * @param {string} input\n */\nfunction b64DecodeUnicode(input) {\n return decodeURIComponent(atob(input).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n\n if (code.length < 2) {\n code = \"0\" + code;\n }\n\n return \"%\" + code;\n }));\n}\n\n/**\n * Check if the input is an object that can be operated on.\n * @param {unknown} input\n */\nfunction isObject(input) {\n return typeof input === 'object' && input !== null;\n}\n","import { createContext, useContext, useEffect, useState } from \"react\";\nimport { ReactKeycloakProvider, useKeycloak } from \"@react-keycloak/web\";\nimport Keycloak from \"keycloak-js\";\nimport {\n SecurityContextType,\n SecurityProviderProps,\n AcademeKeycloakContextProps,\n} from \"./types\";\n\nexport const AcademeAuthProvider: React.FC<AcademeKeycloakContextProps> = ({\n realm,\n hubUrl,\n children,\n clientId,\n keycloakUrl,\n}) => {\n return (\n <ReactKeycloakProvider\n authClient={new Keycloak({ clientId, realm, url: keycloakUrl })}\n >\n <SecurityProvider hubUrl={hubUrl}>{children}</SecurityProvider>\n </ReactKeycloakProvider>\n );\n};\n\nconst SecurityContext = createContext<SecurityContextType>({\n isInitialized: false,\n getUser: () => ({\n email: \"\",\n name: \"\",\n lastName: \"\",\n attributes: {\n school_ids: [],\n },\n }),\n signOut: () => null,\n goToLogin: () => null,\n hasRealmRole: () => false,\n redirectToHub: () => null,\n hasClientRole: () => false,\n isAuthenticated: () => false,\n});\n\nconst SecurityProvider: React.FC<SecurityProviderProps> = ({\n hubUrl,\n children,\n}) => {\n const [isInitialized, setIsInitialized] = useState(false);\n const { initialized, keycloak } = useKeycloak();\n\n useEffect(() => {\n setIsInitialized(initialized);\n }, [initialized]);\n\n useEffect(() => {\n window.accessToken = keycloak.token;\n }, [keycloak.token]);\n\n const getUser = () => {\n const idTokenParsed = keycloak?.idTokenParsed || {};\n\n return {\n email: keycloak?.idTokenParsed?.email || \"\",\n name: keycloak?.idTokenParsed?.given_name || \"\",\n lastName: keycloak?.idTokenParsed?.family_name || \"\",\n attributes: {\n school_ids: (idTokenParsed.school_ids || []) as string[],\n },\n };\n };\n\n const redirectToHub = (errorMessage: string) => {\n window.location.replace(`${hubUrl}?errorMessage=${errorMessage}`);\n };\n\n const signOut = () => {\n keycloak?.logout();\n };\n\n const isAuthenticated = () => {\n return (\n !!keycloak?.idTokenParsed?.email?.length && !!keycloak?.authenticated\n );\n };\n\n return (\n <SecurityContext.Provider\n value={{\n isInitialized,\n getUser,\n signOut,\n redirectToHub,\n isAuthenticated,\n goToLogin: keycloak.login,\n hasRealmRole: keycloak?.hasRealmRole,\n hasClientRole: keycloak.hasResourceRole,\n }}\n >\n {children}\n </SecurityContext.Provider>\n );\n};\n\ndeclare global {\n interface Window {\n accessToken?: string;\n }\n}\n\nexport const useAcademeAuth = () => useContext(SecurityContext);\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\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};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { Loader2Icon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n )\n}\n\nexport { Spinner }\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\nimport { Spinner } from \"../ui/spinner\";\n\ntype ProtectedAppProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n unauthorizedMessage?: string;\n};\n\nexport const ProtectedApp: React.FC<ProtectedAppProps> = ({\n children,\n unauthorizedMessage,\n requiredClientRoles,\n}) => {\n const {\n isInitialized,\n goToLogin,\n hasClientRole,\n redirectToHub,\n isAuthenticated,\n } = useAcademeAuth();\n\n if (!isInitialized) {\n return (\n <div className=\"flex w-screen h-screen items-center justify-center\">\n <Spinner className=\"size-10 text-violet-500\" />\n </div>\n );\n }\n\n if (!isAuthenticated()) {\n goToLogin();\n return <></>;\n }\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n redirectToHub(unauthorizedMessage || \"Unauthorized\");\n return <></>;\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles: string[];\n};\n\nexport const ProtectedComponent: React.FC<ProtectedRouterProps> = ({\n children,\n requiredClientRoles,\n}) => {\n const { hasClientRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <></>;\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n unauthorizedMessage?: string;\n};\n\nexport const ProtectedRouter: React.FC<ProtectedRouterProps> = ({\n children,\n requiredClientRoles,\n unauthorizedMessage,\n}) => {\n const { hasClientRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <h1>{unauthorizedMessage || \"unauthorized\"}</h1>;\n }\n\n return children;\n};\n","function styleInject(css, ref) {\n if ( ref === void 0 ) ref = {};\n var insertAt = ref.insertAt;\n\n if (!css || typeof document === 'undefined') { return; }\n\n var head = document.head || document.getElementsByTagName('head')[0];\n var style = document.createElement('style');\n style.type = 'text/css';\n\n if (insertAt === 'top') {\n if (head.firstChild) {\n head.insertBefore(style, head.firstChild);\n } else {\n head.appendChild(style);\n }\n } else {\n head.appendChild(style);\n }\n\n if (style.styleSheet) {\n style.styleSheet.cssText = css;\n } else {\n style.appendChild(document.createTextNode(css));\n }\n}\n\nexport default styleInject;\n"],"names":["_jsx","__assign","this","createContext","React","useContext","useState","useEffect","forwardRef","createElement","Loader2Icon"],"mappings":"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","x_google_ignoreList":[0,2,3,4,5,6,7,8,9,11,12,13,14,15,16,22]}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../node_modules/clsx/dist/clsx.mjs","../src/components/Button/Button.tsx","../node_modules/@react-keycloak/core/lib/context.js","../node_modules/react-fast-compare/index.js","../node_modules/@react-keycloak/core/lib/provider.js","../node_modules/@react-keycloak/web/lib/context.js","../node_modules/@react-keycloak/web/lib/provider.js","../node_modules/@react-keycloak/web/lib/useKeycloak.js","../node_modules/@react-keycloak/web/lib/withKeycloak.js","../node_modules/keycloak-js/lib/keycloak.js","../src/context/SecurityProvider/index.tsx","../node_modules/lucide-react/dist/esm/shared/src/utils.js","../node_modules/lucide-react/dist/esm/defaultAttributes.js","../node_modules/lucide-react/dist/esm/Icon.js","../node_modules/lucide-react/dist/esm/createLucideIcon.js","../node_modules/lucide-react/dist/esm/icons/loader-circle.js","../node_modules/tailwind-merge/dist/bundle-mjs.mjs","../src/lib/utils.ts","../src/components/ui/spinner.tsx","../src/components/ProtectedApp/index.tsx","../src/components/ProtectedComponent/index.tsx","../src/components/ProtectedRouter/index.tsx"],"sourcesContent":["function r(e){var t,f,n=\"\";if(\"string\"==typeof e||\"number\"==typeof e)n+=e;else if(\"object\"==typeof e)if(Array.isArray(e)){var o=e.length;for(t=0;t<o;t++)e[t]&&(f=r(e[t]))&&(n&&(n+=\" \"),n+=f)}else for(f in e)e[f]&&(n&&(n+=\" \"),n+=f);return n}export function clsx(){for(var e,t,f=0,n=\"\",o=arguments.length;f<o;f++)(e=arguments[f])&&(t=r(e))&&(n&&(n+=\" \"),n+=t);return n}export default clsx;","import React from 'react';\nimport clsx from 'clsx';\n\nexport interface ButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {\n variant?: 'primary' | 'secondary' | 'outline';\n size?: 'sm' | 'md' | 'lg';\n children: React.ReactNode;\n}\n\nexport const Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ variant = 'primary', size = 'md', className, children, ...props }, ref) => {\n const baseClasses = 'font-semibold rounded-lg transition-colors duration-200 focus:outline-none focus:ring-2 focus:ring-offset-2';\n\n const variantClasses = {\n primary: 'bg-blue-600 text-white hover:bg-blue-700 focus:ring-blue-500',\n secondary: 'bg-gray-600 text-white hover:bg-gray-700 focus:ring-gray-500',\n outline: 'bg-transparent border-2 border-blue-600 text-blue-600 hover:bg-blue-50 focus:ring-blue-500',\n };\n\n const sizeClasses = {\n sm: 'px-3 py-1.5 text-sm',\n md: 'px-4 py-2 text-base',\n lg: 'px-6 py-3 text-lg',\n };\n\n return (\n <button\n ref={ref}\n className={clsx(\n baseClasses,\n variantClasses[variant],\n sizeClasses[size],\n className\n )}\n {...props}\n >\n {children}\n </button>\n );\n }\n);\n\nButton.displayName = 'Button';\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport { createContext } from 'react';\n/**\n * Create a React context containing an AuthClient instance.\n *\n * @param {IAuthContextProps} initialContext initial context value.\n *\n * @returns {React.Context} the ReactKeycloak context.\n */\nexport function createAuthContext(initialContext) {\n return createContext(__assign({ initialized: false }, initialContext));\n}\nexport default createAuthContext;\n//# sourceMappingURL=context.js.map","/* global Map:readonly, Set:readonly, ArrayBuffer:readonly */\n\nvar hasElementType = typeof Element !== 'undefined';\nvar hasMap = typeof Map === 'function';\nvar hasSet = typeof Set === 'function';\nvar hasArrayBuffer = typeof ArrayBuffer === 'function' && !!ArrayBuffer.isView;\n\n// Note: We **don't** need `envHasBigInt64Array` in fde es6/index.js\n\nfunction equal(a, b) {\n // START: fast-deep-equal es6/index.js 3.1.3\n if (a === b) return true;\n\n if (a && b && typeof a == 'object' && typeof b == 'object') {\n if (a.constructor !== b.constructor) return false;\n\n var length, i, keys;\n if (Array.isArray(a)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (!equal(a[i], b[i])) return false;\n return true;\n }\n\n // START: Modifications:\n // 1. Extra `has<Type> &&` helpers in initial condition allow es6 code\n // to co-exist with es5.\n // 2. Replace `for of` with es5 compliant iteration using `for`.\n // Basically, take:\n //\n // ```js\n // for (i of a.entries())\n // if (!b.has(i[0])) return false;\n // ```\n //\n // ... and convert to:\n //\n // ```js\n // it = a.entries();\n // while (!(i = it.next()).done)\n // if (!b.has(i.value[0])) return false;\n // ```\n //\n // **Note**: `i` access switches to `i.value`.\n var it;\n if (hasMap && (a instanceof Map) && (b instanceof Map)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!equal(i.value[1], b.get(i.value[0]))) return false;\n return true;\n }\n\n if (hasSet && (a instanceof Set) && (b instanceof Set)) {\n if (a.size !== b.size) return false;\n it = a.entries();\n while (!(i = it.next()).done)\n if (!b.has(i.value[0])) return false;\n return true;\n }\n // END: Modifications\n\n if (hasArrayBuffer && ArrayBuffer.isView(a) && ArrayBuffer.isView(b)) {\n length = a.length;\n if (length != b.length) return false;\n for (i = length; i-- !== 0;)\n if (a[i] !== b[i]) return false;\n return true;\n }\n\n if (a.constructor === RegExp) return a.source === b.source && a.flags === b.flags;\n // START: Modifications:\n // Apply guards for `Object.create(null)` handling. See:\n // - https://github.com/FormidableLabs/react-fast-compare/issues/64\n // - https://github.com/epoberezkin/fast-deep-equal/issues/49\n if (a.valueOf !== Object.prototype.valueOf && typeof a.valueOf === 'function' && typeof b.valueOf === 'function') return a.valueOf() === b.valueOf();\n if (a.toString !== Object.prototype.toString && typeof a.toString === 'function' && typeof b.toString === 'function') return a.toString() === b.toString();\n // END: Modifications\n\n keys = Object.keys(a);\n length = keys.length;\n if (length !== Object.keys(b).length) return false;\n\n for (i = length; i-- !== 0;)\n if (!Object.prototype.hasOwnProperty.call(b, keys[i])) return false;\n // END: fast-deep-equal\n\n // START: react-fast-compare\n // custom handling for DOM elements\n if (hasElementType && a instanceof Element) return false;\n\n // custom handling for React/Preact\n for (i = length; i-- !== 0;) {\n if ((keys[i] === '_owner' || keys[i] === '__v' || keys[i] === '__o') && a.$$typeof) {\n // React-specific: avoid traversing React elements' _owner\n // Preact-specific: avoid traversing Preact elements' __v and __o\n // __v = $_original / $_vnode\n // __o = $_owner\n // These properties contain circular references and are not needed when\n // comparing the actual elements (and not their owners)\n // .$$typeof and ._store on just reasonable markers of elements\n\n continue;\n }\n\n // all other properties should be traversed as usual\n if (!equal(a[keys[i]], b[keys[i]])) return false;\n }\n // END: react-fast-compare\n\n // START: fast-deep-equal\n return true;\n }\n\n return a !== a && b !== b;\n}\n// end fast-deep-equal\n\nmodule.exports = function isEqual(a, b) {\n try {\n return equal(a, b);\n } catch (error) {\n if (((error.message || '').match(/stack|recursion/i))) {\n // warn on circular references, don't crash\n // browsers give this different errors name and messages:\n // chrome/safari: \"RangeError\", \"Maximum call stack size exceeded\"\n // firefox: \"InternalError\", too much recursion\"\n // edge: \"Error\", \"Out of stack space\"\n console.warn('react-fast-compare cannot handle circular refs');\n return false;\n }\n // some other error. we should definitely know about these\n throw error;\n }\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (b.hasOwnProperty(p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport isEqual from 'react-fast-compare';\n/**\n * Create an AuthProvider component to wrap a React app with, it will take care of common AuthClient\n * lifecycle handling (such as initialization and token refresh).\n *\n * @param AuthContext the Auth context to be used by the created AuthProvider\n *\n * @returns the AuthProvider component\n */\nexport function createAuthProvider(AuthContext) {\n var defaultInitOptions = {\n onLoad: 'check-sso',\n };\n var initialState = {\n initialized: false,\n isAuthenticated: false,\n isLoading: true,\n };\n return /** @class */ (function (_super) {\n __extends(KeycloakProvider, _super);\n function KeycloakProvider() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.state = __assign({}, initialState);\n _this.onError = function (event) { return function (error) {\n var onEvent = _this.props.onEvent;\n // Notify Events listener\n onEvent && onEvent(event, error);\n }; };\n _this.updateState = function (event) { return function () {\n var _a = _this.props, authClient = _a.authClient, onEvent = _a.onEvent, onTokens = _a.onTokens, isLoadingCheck = _a.isLoadingCheck;\n var _b = _this.state, prevInitialized = _b.initialized, prevAuthenticated = _b.isAuthenticated, prevLoading = _b.isLoading;\n // Notify Events listener\n onEvent && onEvent(event);\n // Check Loading state\n var isLoading = isLoadingCheck ? isLoadingCheck(authClient) : false;\n // Check if user is authenticated\n var isAuthenticated = isUserAuthenticated(authClient);\n // Avoid double-refresh if state hasn't changed\n if (!prevInitialized ||\n isAuthenticated !== prevAuthenticated ||\n isLoading !== prevLoading) {\n _this.setState({\n initialized: true,\n isAuthenticated: isAuthenticated,\n isLoading: isLoading,\n });\n }\n // Notify token listener, if any\n var idToken = authClient.idToken, refreshToken = authClient.refreshToken, token = authClient.token;\n onTokens &&\n onTokens({\n idToken: idToken,\n refreshToken: refreshToken,\n token: token,\n });\n }; };\n _this.refreshToken = function (event) { return function () {\n var _a = _this.props, autoRefreshToken = _a.autoRefreshToken, authClient = _a.authClient, onEvent = _a.onEvent;\n // Notify Events listener\n onEvent && onEvent(event);\n if (autoRefreshToken !== false) {\n // Refresh Keycloak token\n authClient.updateToken(5);\n }\n }; };\n return _this;\n }\n KeycloakProvider.prototype.componentDidMount = function () {\n this.init();\n };\n KeycloakProvider.prototype.componentDidUpdate = function (_a) {\n var prevAuthClient = _a.authClient, prevInitOptions = _a.initOptions;\n var _b = this.props, initOptions = _b.initOptions, authClient = _b.authClient;\n if (authClient !== prevAuthClient ||\n !isEqual(initOptions, prevInitOptions)) {\n // De-init previous AuthClient instance\n prevAuthClient.onReady = undefined;\n prevAuthClient.onAuthSuccess = undefined;\n prevAuthClient.onAuthError = undefined;\n prevAuthClient.onAuthRefreshSuccess = undefined;\n prevAuthClient.onAuthRefreshError = undefined;\n prevAuthClient.onAuthLogout = undefined;\n prevAuthClient.onTokenExpired = undefined;\n // Reset state\n this.setState(__assign({}, initialState));\n // Init new AuthClient instance\n this.init();\n }\n };\n KeycloakProvider.prototype.init = function () {\n var _a = this.props, initOptions = _a.initOptions, authClient = _a.authClient;\n // Attach Keycloak listeners\n authClient.onReady = this.updateState('onReady');\n authClient.onAuthSuccess = this.updateState('onAuthSuccess');\n authClient.onAuthError = this.onError('onAuthError');\n authClient.onAuthRefreshSuccess = this.updateState('onAuthRefreshSuccess');\n authClient.onAuthRefreshError = this.onError('onAuthRefreshError');\n authClient.onAuthLogout = this.updateState('onAuthLogout');\n authClient.onTokenExpired = this.refreshToken('onTokenExpired');\n authClient\n .init(__assign(__assign({}, defaultInitOptions), initOptions))\n .catch(this.onError('onInitError'));\n };\n KeycloakProvider.prototype.render = function () {\n var _a = this.props, children = _a.children, authClient = _a.authClient, LoadingComponent = _a.LoadingComponent;\n var _b = this.state, initialized = _b.initialized, isLoading = _b.isLoading;\n if (!!LoadingComponent && (!initialized || isLoading)) {\n return LoadingComponent;\n }\n return (React.createElement(AuthContext.Provider, { value: { initialized: initialized, authClient: authClient } }, children));\n };\n return KeycloakProvider;\n }(React.PureComponent));\n}\nfunction isUserAuthenticated(authClient) {\n return !!authClient.idToken && !!authClient.token;\n}\nexport default createAuthProvider;\n//# sourceMappingURL=provider.js.map","import { createAuthContext } from '@react-keycloak/core';\nexport var reactKeycloakWebContext = createAuthContext();\nexport var ReactKeycloakWebContextConsumer = reactKeycloakWebContext.Consumer;\n//# sourceMappingURL=context.js.map","import { createAuthProvider } from '@react-keycloak/core';\nimport { reactKeycloakWebContext } from './context';\nexport var ReactKeycloakProvider = createAuthProvider(reactKeycloakWebContext);\n//# sourceMappingURL=provider.js.map","import { useContext } from 'react';\nimport { reactKeycloakWebContext } from './context';\nexport function useKeycloak() {\n var ctx = useContext(reactKeycloakWebContext);\n if (!ctx) {\n throw new Error('useKeycloak hook must be used inside ReactKeycloakProvider context');\n }\n if (!ctx.authClient) {\n throw new Error('authClient has not been assigned to ReactKeycloakProvider');\n }\n var authClient = ctx.authClient, initialized = ctx.initialized;\n return {\n initialized: initialized,\n keycloak: authClient,\n };\n}\n//# sourceMappingURL=useKeycloak.js.map","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { useKeycloak } from './useKeycloak';\n/**\n * An HOC which injects the `keycloak` instance and the `keycloakInitialized` flag as props.\n *\n * @deprecated Please migrate to useKeycloak hook where/when possible.\n */\nexport function withKeycloak(Component) {\n return function WrappedComponent(props) {\n var _a = useKeycloak(), keycloak = _a.keycloak, initialized = _a.initialized;\n return (React.createElement(Component, __assign({}, props, { keycloakInitialized: initialized, keycloak: keycloak })));\n };\n}\n//# sourceMappingURL=withKeycloak.js.map","/*\n * Copyright 2016 Red Hat, Inc. and/or its affiliates\n * and other contributors as indicated by the @author tags.\n *\n * Licensed under the Apache License, Version 2.0 (the \"License\");\n * you may not use this file except in compliance with the License.\n * You may obtain a copy of the License at\n *\n * http://www.apache.org/licenses/LICENSE-2.0\n *\n * Unless required by applicable law or agreed to in writing, software\n * distributed under the License is distributed on an \"AS IS\" BASIS,\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n * See the License for the specific language governing permissions and\n * limitations under the License.\n */\nfunction Keycloak (config) {\n if (!(this instanceof Keycloak)) {\n throw new Error(\"The 'Keycloak' constructor must be invoked with 'new'.\")\n }\n\n if (typeof config !== 'string' && !isObject(config)) {\n throw new Error(\"The 'Keycloak' constructor must be provided with a configuration object, or a URL to a JSON configuration file.\");\n }\n\n if (isObject(config)) {\n const requiredProperties = 'oidcProvider' in config\n ? ['clientId']\n : ['url', 'realm', 'clientId'];\n\n for (const property of requiredProperties) {\n if (!config[property]) {\n throw new Error(`The configuration object is missing the required '${property}' property.`);\n }\n }\n }\n\n var kc = this;\n var adapter;\n var refreshQueue = [];\n var callbackStorage;\n\n var loginIframe = {\n enable: true,\n callbackList: [],\n interval: 5\n };\n\n kc.didInitialize = false;\n\n var useNonce = true;\n var logInfo = createLogger(console.info);\n var logWarn = createLogger(console.warn);\n\n if (!globalThis.isSecureContext) {\n logWarn(\n \"[KEYCLOAK] Keycloak JS must be used in a 'secure context' to function properly as it relies on browser APIs that are otherwise not available.\\n\" +\n \"Continuing to run your application insecurely will lead to unexpected behavior and breakage.\\n\\n\" +\n \"For more information see: https://developer.mozilla.org/en-US/docs/Web/Security/Secure_Contexts\"\n );\n }\n\n kc.init = function (initOptions = {}) {\n if (kc.didInitialize) {\n throw new Error(\"A 'Keycloak' instance can only be initialized once.\");\n }\n\n kc.didInitialize = true;\n\n kc.authenticated = false;\n\n callbackStorage = createCallbackStorage();\n var adapters = ['default', 'cordova', 'cordova-native'];\n\n if (adapters.indexOf(initOptions.adapter) > -1) {\n adapter = loadAdapter(initOptions.adapter);\n } else if (typeof initOptions.adapter === \"object\") {\n adapter = initOptions.adapter;\n } else {\n if (window.Cordova || window.cordova) {\n adapter = loadAdapter('cordova');\n } else {\n adapter = loadAdapter();\n }\n }\n\n if (typeof initOptions.useNonce !== 'undefined') {\n useNonce = initOptions.useNonce;\n }\n\n if (typeof initOptions.checkLoginIframe !== 'undefined') {\n loginIframe.enable = initOptions.checkLoginIframe;\n }\n\n if (initOptions.checkLoginIframeInterval) {\n loginIframe.interval = initOptions.checkLoginIframeInterval;\n }\n\n if (initOptions.onLoad === 'login-required') {\n kc.loginRequired = true;\n }\n\n if (initOptions.responseMode) {\n if (initOptions.responseMode === 'query' || initOptions.responseMode === 'fragment') {\n kc.responseMode = initOptions.responseMode;\n } else {\n throw 'Invalid value for responseMode';\n }\n }\n\n if (initOptions.flow) {\n switch (initOptions.flow) {\n case 'standard':\n kc.responseType = 'code';\n break;\n case 'implicit':\n kc.responseType = 'id_token token';\n break;\n case 'hybrid':\n kc.responseType = 'code id_token token';\n break;\n default:\n throw 'Invalid value for flow';\n }\n kc.flow = initOptions.flow;\n }\n\n if (initOptions.timeSkew != null) {\n kc.timeSkew = initOptions.timeSkew;\n }\n\n if(initOptions.redirectUri) {\n kc.redirectUri = initOptions.redirectUri;\n }\n\n if (initOptions.silentCheckSsoRedirectUri) {\n kc.silentCheckSsoRedirectUri = initOptions.silentCheckSsoRedirectUri;\n }\n\n if (typeof initOptions.silentCheckSsoFallback === 'boolean') {\n kc.silentCheckSsoFallback = initOptions.silentCheckSsoFallback;\n } else {\n kc.silentCheckSsoFallback = true;\n }\n\n if (typeof initOptions.pkceMethod !== \"undefined\") {\n if (initOptions.pkceMethod !== \"S256\" && initOptions.pkceMethod !== false) {\n throw new TypeError(`Invalid value for pkceMethod', expected 'S256' or false but got ${initOptions.pkceMethod}.`);\n }\n\n kc.pkceMethod = initOptions.pkceMethod;\n } else {\n kc.pkceMethod = \"S256\";\n }\n\n if (typeof initOptions.enableLogging === 'boolean') {\n kc.enableLogging = initOptions.enableLogging;\n } else {\n kc.enableLogging = false;\n }\n\n if (initOptions.logoutMethod === 'POST') {\n kc.logoutMethod = 'POST';\n } else {\n kc.logoutMethod = 'GET';\n }\n\n if (typeof initOptions.scope === 'string') {\n kc.scope = initOptions.scope;\n }\n\n if (typeof initOptions.acrValues === 'string') {\n kc.acrValues = initOptions.acrValues;\n }\n\n if (typeof initOptions.messageReceiveTimeout === 'number' && initOptions.messageReceiveTimeout > 0) {\n kc.messageReceiveTimeout = initOptions.messageReceiveTimeout;\n } else {\n kc.messageReceiveTimeout = 10000;\n }\n\n if (!kc.responseMode) {\n kc.responseMode = 'fragment';\n }\n if (!kc.responseType) {\n kc.responseType = 'code';\n kc.flow = 'standard';\n }\n\n var promise = createPromise();\n\n var initPromise = createPromise();\n initPromise.promise.then(function() {\n kc.onReady && kc.onReady(kc.authenticated);\n promise.setSuccess(kc.authenticated);\n }).catch(function(error) {\n promise.setError(error);\n });\n\n var configPromise = loadConfig();\n\n function onLoad() {\n var doLogin = function(prompt) {\n if (!prompt) {\n options.prompt = 'none';\n }\n\n if (initOptions.locale) {\n options.locale = initOptions.locale;\n }\n kc.login(options).then(function () {\n initPromise.setSuccess();\n }).catch(function (error) {\n initPromise.setError(error);\n });\n }\n\n var checkSsoSilently = async function() {\n var ifrm = document.createElement(\"iframe\");\n var src = await kc.createLoginUrl({prompt: 'none', redirectUri: kc.silentCheckSsoRedirectUri});\n ifrm.setAttribute(\"src\", src);\n ifrm.setAttribute(\"sandbox\", \"allow-storage-access-by-user-activation allow-scripts allow-same-origin\");\n ifrm.setAttribute(\"title\", \"keycloak-silent-check-sso\");\n ifrm.style.display = \"none\";\n document.body.appendChild(ifrm);\n\n var messageCallback = function(event) {\n if (event.origin !== window.location.origin || ifrm.contentWindow !== event.source) {\n return;\n }\n\n var oauth = parseCallback(event.data);\n processCallback(oauth, initPromise);\n\n document.body.removeChild(ifrm);\n window.removeEventListener(\"message\", messageCallback);\n };\n\n window.addEventListener(\"message\", messageCallback);\n };\n\n var options = {};\n switch (initOptions.onLoad) {\n case 'check-sso':\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (!unchanged) {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.silentCheckSsoRedirectUri ? checkSsoSilently() : doLogin(false);\n }\n break;\n case 'login-required':\n doLogin(true);\n break;\n default:\n throw 'Invalid value for onLoad';\n }\n }\n\n function processInit() {\n var callback = parseCallback(window.location.href);\n\n if (callback) {\n window.history.replaceState(window.history.state, null, callback.newUrl);\n }\n\n if (callback && callback.valid) {\n return setupCheckLoginIframe().then(function() {\n processCallback(callback, initPromise);\n }).catch(function (error) {\n initPromise.setError(error);\n });\n }\n\n if (initOptions.token && initOptions.refreshToken) {\n setToken(initOptions.token, initOptions.refreshToken, initOptions.idToken);\n\n if (loginIframe.enable) {\n setupCheckLoginIframe().then(function() {\n checkLoginIframe().then(function (unchanged) {\n if (unchanged) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n scheduleCheckIframe();\n } else {\n initPromise.setSuccess();\n }\n }).catch(function (error) {\n initPromise.setError(error);\n });\n });\n } else {\n kc.updateToken(-1).then(function() {\n kc.onAuthSuccess && kc.onAuthSuccess();\n initPromise.setSuccess();\n }).catch(function(error) {\n kc.onAuthError && kc.onAuthError();\n if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setError(error);\n }\n });\n }\n } else if (initOptions.onLoad) {\n onLoad();\n } else {\n initPromise.setSuccess();\n }\n }\n\n configPromise.then(function () {\n check3pCookiesSupported()\n .then(processInit)\n .catch(function (error) {\n promise.setError(error);\n });\n });\n configPromise.catch(function (error) {\n promise.setError(error);\n });\n\n return promise.promise;\n }\n\n kc.login = function (options) {\n return adapter.login(options);\n }\n\n function generateRandomData(len) {\n if (typeof crypto === \"undefined\" || typeof crypto.getRandomValues === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return crypto.getRandomValues(new Uint8Array(len));\n }\n\n function generateCodeVerifier(len) {\n return generateRandomString(len, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789');\n }\n\n function generateRandomString(len, alphabet){\n var randomData = generateRandomData(len);\n var chars = new Array(len);\n for (var i = 0; i < len; i++) {\n chars[i] = alphabet.charCodeAt(randomData[i] % alphabet.length);\n }\n return String.fromCharCode.apply(null, chars);\n }\n\n async function generatePkceChallenge(pkceMethod, codeVerifier) {\n if (pkceMethod !== \"S256\") {\n throw new TypeError(`Invalid value for 'pkceMethod', expected 'S256' but got '${pkceMethod}'.`);\n }\n\n // hash codeVerifier, then encode as url-safe base64 without padding\n const hashBytes = new Uint8Array(await sha256Digest(codeVerifier));\n const encodedHash = bytesToBase64(hashBytes)\n .replace(/\\+/g, '-')\n .replace(/\\//g, '_')\n .replace(/\\=/g, '');\n\n return encodedHash;\n }\n\n function buildClaimsParameter(requestedAcr){\n var claims = {\n id_token: {\n acr: requestedAcr\n }\n }\n return JSON.stringify(claims);\n }\n\n kc.createLoginUrl = async function(options) {\n var state = createUUID();\n var nonce = createUUID();\n\n var redirectUri = adapter.redirectUri(options);\n\n var callbackState = {\n state: state,\n nonce: nonce,\n redirectUri: encodeURIComponent(redirectUri),\n loginOptions: options\n };\n\n if (options && options.prompt) {\n callbackState.prompt = options.prompt;\n }\n\n var baseUrl;\n if (options && options.action == 'register') {\n baseUrl = kc.endpoints.register();\n } else {\n baseUrl = kc.endpoints.authorize();\n }\n\n var scope = options && options.scope || kc.scope;\n if (!scope) {\n // if scope is not set, default to \"openid\"\n scope = \"openid\";\n } else if (scope.indexOf(\"openid\") === -1) {\n // if openid scope is missing, prefix the given scopes with it\n scope = \"openid \" + scope;\n }\n\n var url = baseUrl\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&redirect_uri=' + encodeURIComponent(redirectUri)\n + '&state=' + encodeURIComponent(state)\n + '&response_mode=' + encodeURIComponent(kc.responseMode)\n + '&response_type=' + encodeURIComponent(kc.responseType)\n + '&scope=' + encodeURIComponent(scope);\n if (useNonce) {\n url = url + '&nonce=' + encodeURIComponent(nonce);\n }\n\n if (options && options.prompt) {\n url += '&prompt=' + encodeURIComponent(options.prompt);\n }\n\n if (options && typeof options.maxAge === 'number') {\n url += '&max_age=' + encodeURIComponent(options.maxAge);\n }\n\n if (options && options.loginHint) {\n url += '&login_hint=' + encodeURIComponent(options.loginHint);\n }\n\n if (options && options.idpHint) {\n url += '&kc_idp_hint=' + encodeURIComponent(options.idpHint);\n }\n\n if (options && options.action && options.action != 'register') {\n url += '&kc_action=' + encodeURIComponent(options.action);\n }\n\n if (options && options.locale) {\n url += '&ui_locales=' + encodeURIComponent(options.locale);\n }\n\n if (options && options.acr) {\n var claimsParameter = buildClaimsParameter(options.acr);\n url += '&claims=' + encodeURIComponent(claimsParameter);\n }\n\n if ((options && options.acrValues) || kc.acrValues) {\n url += '&acr_values=' + encodeURIComponent(options.acrValues || kc.acrValues);\n }\n\n if (kc.pkceMethod) {\n try {\n const codeVerifier = generateCodeVerifier(96);\n const pkceChallenge = await generatePkceChallenge(kc.pkceMethod, codeVerifier);\n\n callbackState.pkceCodeVerifier = codeVerifier;\n\n url += '&code_challenge=' + pkceChallenge;\n url += '&code_challenge_method=' + kc.pkceMethod;\n } catch (error) {\n throw new Error(\"Failed to generate PKCE challenge.\", { cause: error });\n }\n }\n\n callbackStorage.add(callbackState);\n\n return url;\n }\n\n kc.logout = function(options) {\n return adapter.logout(options);\n }\n\n kc.createLogoutUrl = function(options) {\n\n const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n if (logoutMethod === 'POST') {\n return kc.endpoints.logout();\n }\n\n var url = kc.endpoints.logout()\n + '?client_id=' + encodeURIComponent(kc.clientId)\n + '&post_logout_redirect_uri=' + encodeURIComponent(adapter.redirectUri(options, false));\n\n if (kc.idToken) {\n url += '&id_token_hint=' + encodeURIComponent(kc.idToken);\n }\n\n return url;\n }\n\n kc.register = function (options) {\n return adapter.register(options);\n }\n\n kc.createRegisterUrl = async function(options) {\n if (!options) {\n options = {};\n }\n options.action = 'register';\n return await kc.createLoginUrl(options);\n }\n\n kc.createAccountUrl = function(options) {\n var realm = getRealmUrl();\n var url = undefined;\n if (typeof realm !== 'undefined') {\n url = realm\n + '/account'\n + '?referrer=' + encodeURIComponent(kc.clientId)\n + '&referrer_uri=' + encodeURIComponent(adapter.redirectUri(options));\n }\n return url;\n }\n\n kc.accountManagement = function() {\n return adapter.accountManagement();\n }\n\n kc.hasRealmRole = function (role) {\n var access = kc.realmAccess;\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.hasResourceRole = function(role, resource) {\n if (!kc.resourceAccess) {\n return false;\n }\n\n var access = kc.resourceAccess[resource || kc.clientId];\n return !!access && access.roles.indexOf(role) >= 0;\n }\n\n kc.loadUserProfile = function() {\n var url = getRealmUrl() + '/account';\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.profile = JSON.parse(req.responseText);\n promise.setSuccess(kc.profile);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.loadUserInfo = function() {\n var url = kc.endpoints.userinfo();\n var req = new XMLHttpRequest();\n req.open('GET', url, true);\n req.setRequestHeader('Accept', 'application/json');\n req.setRequestHeader('Authorization', 'bearer ' + kc.token);\n\n var promise = createPromise();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n kc.userInfo = JSON.parse(req.responseText);\n promise.setSuccess(kc.userInfo);\n } else {\n promise.setError();\n }\n }\n }\n\n req.send();\n\n return promise.promise;\n }\n\n kc.isTokenExpired = function(minValidity) {\n if (!kc.tokenParsed || (!kc.refreshToken && kc.flow != 'implicit' )) {\n throw 'Not authenticated';\n }\n\n if (kc.timeSkew == null) {\n logInfo('[KEYCLOAK] Unable to determine if token is expired as timeskew is not set');\n return true;\n }\n\n var expiresIn = kc.tokenParsed['exp'] - Math.ceil(new Date().getTime() / 1000) + kc.timeSkew;\n if (minValidity) {\n if (isNaN(minValidity)) {\n throw 'Invalid minValidity';\n }\n expiresIn -= minValidity;\n }\n return expiresIn < 0;\n }\n\n kc.updateToken = function(minValidity) {\n var promise = createPromise();\n\n if (!kc.refreshToken) {\n promise.setError();\n return promise.promise;\n }\n\n minValidity = minValidity || 5;\n\n var exec = function() {\n var refreshToken = false;\n if (minValidity == -1) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: forced refresh');\n } else if (!kc.tokenParsed || kc.isTokenExpired(minValidity)) {\n refreshToken = true;\n logInfo('[KEYCLOAK] Refreshing token: token expired');\n }\n\n if (!refreshToken) {\n promise.setSuccess(false);\n } else {\n var params = 'grant_type=refresh_token&' + 'refresh_token=' + kc.refreshToken;\n var url = kc.endpoints.token();\n\n refreshQueue.push(promise);\n\n if (refreshQueue.length == 1) {\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n req.withCredentials = true;\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n\n var timeLocal = new Date().getTime();\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200) {\n logInfo('[KEYCLOAK] Token refreshed');\n\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n var tokenResponse = JSON.parse(req.responseText);\n\n setToken(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], timeLocal);\n\n kc.onAuthRefreshSuccess && kc.onAuthRefreshSuccess();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setSuccess(true);\n }\n } else {\n logWarn('[KEYCLOAK] Failed to refresh token');\n\n if (req.status == 400) {\n kc.clearToken();\n }\n\n kc.onAuthRefreshError && kc.onAuthRefreshError();\n for (var p = refreshQueue.pop(); p != null; p = refreshQueue.pop()) {\n p.setError(\"Failed to refresh token: An unexpected HTTP error occurred while attempting to refresh the token.\");\n }\n }\n }\n };\n\n req.send(params);\n }\n }\n }\n\n if (loginIframe.enable) {\n var iframePromise = checkLoginIframe();\n iframePromise.then(function() {\n exec();\n }).catch(function(error) {\n promise.setError(error);\n });\n } else {\n exec();\n }\n\n return promise.promise;\n }\n\n kc.clearToken = function() {\n if (kc.token) {\n setToken(null, null, null);\n kc.onAuthLogout && kc.onAuthLogout();\n if (kc.loginRequired) {\n kc.login();\n }\n }\n }\n\n function getRealmUrl() {\n if (typeof kc.authServerUrl !== 'undefined') {\n if (kc.authServerUrl.charAt(kc.authServerUrl.length - 1) == '/') {\n return kc.authServerUrl + 'realms/' + encodeURIComponent(kc.realm);\n } else {\n return kc.authServerUrl + '/realms/' + encodeURIComponent(kc.realm);\n }\n } else {\n return undefined;\n }\n }\n\n function getOrigin() {\n if (!window.location.origin) {\n return window.location.protocol + \"//\" + window.location.hostname + (window.location.port ? ':' + window.location.port: '');\n } else {\n return window.location.origin;\n }\n }\n\n function processCallback(oauth, promise) {\n var code = oauth.code;\n var error = oauth.error;\n var prompt = oauth.prompt;\n\n var timeLocal = new Date().getTime();\n\n if (oauth['kc_action_status']) {\n kc.onActionUpdate && kc.onActionUpdate(oauth['kc_action_status'], oauth['kc_action']);\n }\n\n if (error) {\n if (prompt != 'none') {\n if (oauth.error_description && oauth.error_description === \"authentication_expired\") {\n kc.login(oauth.loginOptions);\n } else {\n var errorData = { error: error, error_description: oauth.error_description };\n kc.onAuthError && kc.onAuthError(errorData);\n promise && promise.setError(errorData);\n }\n } else {\n promise && promise.setSuccess();\n }\n return;\n } else if ((kc.flow != 'standard') && (oauth.access_token || oauth.id_token)) {\n authSuccess(oauth.access_token, null, oauth.id_token, true);\n }\n\n if ((kc.flow != 'implicit') && code) {\n var params = 'code=' + code + '&grant_type=authorization_code';\n var url = kc.endpoints.token();\n\n var req = new XMLHttpRequest();\n req.open('POST', url, true);\n req.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');\n\n params += '&client_id=' + encodeURIComponent(kc.clientId);\n params += '&redirect_uri=' + oauth.redirectUri;\n\n if (oauth.pkceCodeVerifier) {\n params += '&code_verifier=' + oauth.pkceCodeVerifier;\n }\n\n req.withCredentials = true;\n\n req.onreadystatechange = function() {\n if (req.readyState == 4) {\n if (req.status == 200) {\n\n var tokenResponse = JSON.parse(req.responseText);\n authSuccess(tokenResponse['access_token'], tokenResponse['refresh_token'], tokenResponse['id_token'], kc.flow === 'standard');\n scheduleCheckIframe();\n } else {\n kc.onAuthError && kc.onAuthError();\n promise && promise.setError();\n }\n }\n };\n\n req.send(params);\n }\n\n function authSuccess(accessToken, refreshToken, idToken, fulfillPromise) {\n timeLocal = (timeLocal + new Date().getTime()) / 2;\n\n setToken(accessToken, refreshToken, idToken, timeLocal);\n\n if (useNonce && (kc.idTokenParsed && kc.idTokenParsed.nonce != oauth.storedNonce)) {\n logInfo('[KEYCLOAK] Invalid nonce, clearing token');\n kc.clearToken();\n promise && promise.setError();\n } else {\n if (fulfillPromise) {\n kc.onAuthSuccess && kc.onAuthSuccess();\n promise && promise.setSuccess();\n }\n }\n }\n\n }\n\n function loadConfig() {\n var promise = createPromise();\n var configUrl;\n\n if (typeof config === 'string') {\n configUrl = config;\n }\n\n function setupOidcEndoints(oidcConfiguration) {\n if (! oidcConfiguration) {\n kc.endpoints = {\n authorize: function() {\n return getRealmUrl() + '/protocol/openid-connect/auth';\n },\n token: function() {\n return getRealmUrl() + '/protocol/openid-connect/token';\n },\n logout: function() {\n return getRealmUrl() + '/protocol/openid-connect/logout';\n },\n checkSessionIframe: function() {\n return getRealmUrl() + '/protocol/openid-connect/login-status-iframe.html';\n },\n thirdPartyCookiesIframe: function() {\n return getRealmUrl() + '/protocol/openid-connect/3p-cookies/step1.html';\n },\n register: function() {\n return getRealmUrl() + '/protocol/openid-connect/registrations';\n },\n userinfo: function() {\n return getRealmUrl() + '/protocol/openid-connect/userinfo';\n }\n };\n } else {\n kc.endpoints = {\n authorize: function() {\n return oidcConfiguration.authorization_endpoint;\n },\n token: function() {\n return oidcConfiguration.token_endpoint;\n },\n logout: function() {\n if (!oidcConfiguration.end_session_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.end_session_endpoint;\n },\n checkSessionIframe: function() {\n if (!oidcConfiguration.check_session_iframe) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.check_session_iframe;\n },\n register: function() {\n throw 'Redirection to \"Register user\" page not supported in standard OIDC mode';\n },\n userinfo: function() {\n if (!oidcConfiguration.userinfo_endpoint) {\n throw \"Not supported by the OIDC server\";\n }\n return oidcConfiguration.userinfo_endpoint;\n }\n }\n }\n }\n\n if (configUrl) {\n var req = new XMLHttpRequest();\n req.open('GET', configUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var config = JSON.parse(req.responseText);\n\n kc.authServerUrl = config['auth-server-url'];\n kc.realm = config['realm'];\n kc.clientId = config['resource'];\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n kc.clientId = config.clientId;\n\n var oidcProvider = config['oidcProvider'];\n if (!oidcProvider) {\n kc.authServerUrl = config.url;\n kc.realm = config.realm;\n setupOidcEndoints(null);\n promise.setSuccess();\n } else {\n if (typeof oidcProvider === 'string') {\n var oidcProviderConfigUrl;\n if (oidcProvider.charAt(oidcProvider.length - 1) == '/') {\n oidcProviderConfigUrl = oidcProvider + '.well-known/openid-configuration';\n } else {\n oidcProviderConfigUrl = oidcProvider + '/.well-known/openid-configuration';\n }\n var req = new XMLHttpRequest();\n req.open('GET', oidcProviderConfigUrl, true);\n req.setRequestHeader('Accept', 'application/json');\n\n req.onreadystatechange = function () {\n if (req.readyState == 4) {\n if (req.status == 200 || fileLoaded(req)) {\n var oidcProviderConfig = JSON.parse(req.responseText);\n setupOidcEndoints(oidcProviderConfig);\n promise.setSuccess();\n } else {\n promise.setError();\n }\n }\n };\n\n req.send();\n } else {\n setupOidcEndoints(oidcProvider);\n promise.setSuccess();\n }\n }\n }\n\n return promise.promise;\n }\n\n function fileLoaded(xhr) {\n return xhr.status == 0 && xhr.responseText && xhr.responseURL.startsWith('file:');\n }\n\n function setToken(token, refreshToken, idToken, timeLocal) {\n if (kc.tokenTimeoutHandle) {\n clearTimeout(kc.tokenTimeoutHandle);\n kc.tokenTimeoutHandle = null;\n }\n\n if (refreshToken) {\n kc.refreshToken = refreshToken;\n kc.refreshTokenParsed = decodeToken(refreshToken);\n } else {\n delete kc.refreshToken;\n delete kc.refreshTokenParsed;\n }\n\n if (idToken) {\n kc.idToken = idToken;\n kc.idTokenParsed = decodeToken(idToken);\n } else {\n delete kc.idToken;\n delete kc.idTokenParsed;\n }\n\n if (token) {\n kc.token = token;\n kc.tokenParsed = decodeToken(token);\n kc.sessionId = kc.tokenParsed.sid;\n kc.authenticated = true;\n kc.subject = kc.tokenParsed.sub;\n kc.realmAccess = kc.tokenParsed.realm_access;\n kc.resourceAccess = kc.tokenParsed.resource_access;\n\n if (timeLocal) {\n kc.timeSkew = Math.floor(timeLocal / 1000) - kc.tokenParsed.iat;\n }\n\n if (kc.timeSkew != null) {\n logInfo('[KEYCLOAK] Estimated time difference between browser and server is ' + kc.timeSkew + ' seconds');\n\n if (kc.onTokenExpired) {\n var expiresIn = (kc.tokenParsed['exp'] - (new Date().getTime() / 1000) + kc.timeSkew) * 1000;\n logInfo('[KEYCLOAK] Token expires in ' + Math.round(expiresIn / 1000) + ' s');\n if (expiresIn <= 0) {\n kc.onTokenExpired();\n } else {\n kc.tokenTimeoutHandle = setTimeout(kc.onTokenExpired, expiresIn);\n }\n }\n }\n } else {\n delete kc.token;\n delete kc.tokenParsed;\n delete kc.subject;\n delete kc.realmAccess;\n delete kc.resourceAccess;\n\n kc.authenticated = false;\n }\n }\n\n function createUUID() {\n if (typeof crypto === \"undefined\" || typeof crypto.randomUUID === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return crypto.randomUUID();\n }\n\n function parseCallback(url) {\n var oauth = parseCallbackUrl(url);\n if (!oauth) {\n return;\n }\n\n var oauthState = callbackStorage.get(oauth.state);\n\n if (oauthState) {\n oauth.valid = true;\n oauth.redirectUri = oauthState.redirectUri;\n oauth.storedNonce = oauthState.nonce;\n oauth.prompt = oauthState.prompt;\n oauth.pkceCodeVerifier = oauthState.pkceCodeVerifier;\n oauth.loginOptions = oauthState.loginOptions;\n }\n\n return oauth;\n }\n\n function parseCallbackUrl(url) {\n var supportedParams;\n switch (kc.flow) {\n case 'standard':\n supportedParams = ['code', 'state', 'session_state', 'kc_action_status', 'kc_action', 'iss'];\n break;\n case 'implicit':\n supportedParams = ['access_token', 'token_type', 'id_token', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss'];\n break;\n case 'hybrid':\n supportedParams = ['access_token', 'token_type', 'id_token', 'code', 'state', 'session_state', 'expires_in', 'kc_action_status', 'kc_action', 'iss'];\n break;\n }\n\n supportedParams.push('error');\n supportedParams.push('error_description');\n supportedParams.push('error_uri');\n\n var queryIndex = url.indexOf('?');\n var fragmentIndex = url.indexOf('#');\n\n var newUrl;\n var parsed;\n\n if (kc.responseMode === 'query' && queryIndex !== -1) {\n newUrl = url.substring(0, queryIndex);\n parsed = parseCallbackParams(url.substring(queryIndex + 1, fragmentIndex !== -1 ? fragmentIndex : url.length), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '?' + parsed.paramsString;\n }\n if (fragmentIndex !== -1) {\n newUrl += url.substring(fragmentIndex);\n }\n } else if (kc.responseMode === 'fragment' && fragmentIndex !== -1) {\n newUrl = url.substring(0, fragmentIndex);\n parsed = parseCallbackParams(url.substring(fragmentIndex + 1), supportedParams);\n if (parsed.paramsString !== '') {\n newUrl += '#' + parsed.paramsString;\n }\n }\n\n if (parsed && parsed.oauthParams) {\n if (kc.flow === 'standard' || kc.flow === 'hybrid') {\n if ((parsed.oauthParams.code || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n } else if (kc.flow === 'implicit') {\n if ((parsed.oauthParams.access_token || parsed.oauthParams.error) && parsed.oauthParams.state) {\n parsed.oauthParams.newUrl = newUrl;\n return parsed.oauthParams;\n }\n }\n }\n }\n\n function parseCallbackParams(paramsString, supportedParams) {\n var p = paramsString.split('&');\n var result = {\n paramsString: '',\n oauthParams: {}\n }\n for (var i = 0; i < p.length; i++) {\n var split = p[i].indexOf(\"=\");\n var key = p[i].slice(0, split);\n if (supportedParams.indexOf(key) !== -1) {\n result.oauthParams[key] = p[i].slice(split + 1);\n } else {\n if (result.paramsString !== '') {\n result.paramsString += '&';\n }\n result.paramsString += p[i];\n }\n }\n return result;\n }\n\n function createPromise() {\n // Need to create a native Promise which also preserves the\n // interface of the custom promise type previously used by the API\n var p = {\n setSuccess: function(result) {\n p.resolve(result);\n },\n\n setError: function(result) {\n p.reject(result);\n }\n };\n p.promise = new Promise(function(resolve, reject) {\n p.resolve = resolve;\n p.reject = reject;\n });\n\n return p;\n }\n\n // Function to extend existing native Promise with timeout\n function applyTimeoutToPromise(promise, timeout, errorMessage) {\n var timeoutHandle = null;\n var timeoutPromise = new Promise(function (resolve, reject) {\n timeoutHandle = setTimeout(function () {\n reject({ \"error\": errorMessage || \"Promise is not settled within timeout of \" + timeout + \"ms\" });\n }, timeout);\n });\n\n return Promise.race([promise, timeoutPromise]).finally(function () {\n clearTimeout(timeoutHandle);\n });\n }\n\n function setupCheckLoginIframe() {\n var promise = createPromise();\n\n if (!loginIframe.enable) {\n promise.setSuccess();\n return promise.promise;\n }\n\n if (loginIframe.iframe) {\n promise.setSuccess();\n return promise.promise;\n }\n\n var iframe = document.createElement('iframe');\n loginIframe.iframe = iframe;\n\n iframe.onload = function() {\n var authUrl = kc.endpoints.authorize();\n if (authUrl.charAt(0) === '/') {\n loginIframe.iframeOrigin = getOrigin();\n } else {\n loginIframe.iframeOrigin = authUrl.substring(0, authUrl.indexOf('/', 8));\n }\n promise.setSuccess();\n }\n\n var src = kc.endpoints.checkSessionIframe();\n iframe.setAttribute('src', src );\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-session-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if ((event.origin !== loginIframe.iframeOrigin) || (loginIframe.iframe.contentWindow !== event.source)) {\n return;\n }\n\n if (!(event.data == 'unchanged' || event.data == 'changed' || event.data == 'error')) {\n return;\n }\n\n\n if (event.data != 'unchanged') {\n kc.clearToken();\n }\n\n var callbacks = loginIframe.callbackList.splice(0, loginIframe.callbackList.length);\n\n for (var i = callbacks.length - 1; i >= 0; --i) {\n var promise = callbacks[i];\n if (event.data == 'error') {\n promise.setError();\n } else {\n promise.setSuccess(event.data == 'unchanged');\n }\n }\n };\n\n window.addEventListener('message', messageCallback, false);\n\n return promise.promise;\n }\n\n function scheduleCheckIframe() {\n if (loginIframe.enable) {\n if (kc.token) {\n setTimeout(function() {\n checkLoginIframe().then(function(unchanged) {\n if (unchanged) {\n scheduleCheckIframe();\n }\n });\n }, loginIframe.interval * 1000);\n }\n }\n }\n\n function checkLoginIframe() {\n var promise = createPromise();\n\n if (loginIframe.iframe && loginIframe.iframeOrigin ) {\n var msg = kc.clientId + ' ' + (kc.sessionId ? kc.sessionId : '');\n loginIframe.callbackList.push(promise);\n var origin = loginIframe.iframeOrigin;\n if (loginIframe.callbackList.length == 1) {\n loginIframe.iframe.contentWindow.postMessage(msg, origin);\n }\n } else {\n promise.setSuccess();\n }\n\n return promise.promise;\n }\n\n function check3pCookiesSupported() {\n var promise = createPromise();\n\n if ((loginIframe.enable || kc.silentCheckSsoRedirectUri) && typeof kc.endpoints.thirdPartyCookiesIframe === 'function') {\n var iframe = document.createElement('iframe');\n iframe.setAttribute('src', kc.endpoints.thirdPartyCookiesIframe());\n iframe.setAttribute('sandbox', 'allow-storage-access-by-user-activation allow-scripts allow-same-origin');\n iframe.setAttribute('title', 'keycloak-3p-check-iframe' );\n iframe.style.display = 'none';\n document.body.appendChild(iframe);\n\n var messageCallback = function(event) {\n if (iframe.contentWindow !== event.source) {\n return;\n }\n\n if (event.data !== \"supported\" && event.data !== \"unsupported\") {\n return;\n } else if (event.data === \"unsupported\") {\n logWarn(\n \"[KEYCLOAK] Your browser is blocking access to 3rd-party cookies, this means:\\n\\n\" +\n \" - It is not possible to retrieve tokens without redirecting to the Keycloak server (a.k.a. no support for silent authentication).\\n\" +\n \" - It is not possible to automatically detect changes to the session status (such as the user logging out in another tab).\\n\\n\" +\n \"For more information see: https://www.keycloak.org/securing-apps/javascript-adapter#_modern_browsers\"\n );\n\n loginIframe.enable = false;\n if (kc.silentCheckSsoFallback) {\n kc.silentCheckSsoRedirectUri = false;\n }\n }\n\n document.body.removeChild(iframe);\n window.removeEventListener(\"message\", messageCallback);\n promise.setSuccess();\n };\n\n window.addEventListener('message', messageCallback, false);\n } else {\n promise.setSuccess();\n }\n\n return applyTimeoutToPromise(promise.promise, kc.messageReceiveTimeout, \"Timeout when waiting for 3rd party check iframe message.\");\n }\n\n function loadAdapter(type) {\n if (!type || type == 'default') {\n return {\n login: async function(options) {\n window.location.assign(await kc.createLoginUrl(options));\n return createPromise().promise;\n },\n\n logout: async function(options) {\n\n const logoutMethod = options?.logoutMethod ?? kc.logoutMethod;\n if (logoutMethod === \"GET\") {\n window.location.replace(kc.createLogoutUrl(options));\n return;\n }\n\n // Create form to send POST request.\n const form = document.createElement(\"form\");\n\n form.setAttribute(\"method\", \"POST\");\n form.setAttribute(\"action\", kc.createLogoutUrl(options));\n form.style.display = \"none\";\n\n // Add data to form as hidden input fields.\n const data = {\n id_token_hint: kc.idToken,\n client_id: kc.clientId,\n post_logout_redirect_uri: adapter.redirectUri(options, false)\n };\n\n for (const [name, value] of Object.entries(data)) {\n const input = document.createElement(\"input\");\n\n input.setAttribute(\"type\", \"hidden\");\n input.setAttribute(\"name\", name);\n input.setAttribute(\"value\", value);\n\n form.appendChild(input);\n }\n\n // Append form to page and submit it to perform logout and redirect.\n document.body.appendChild(form);\n form.submit();\n },\n\n register: async function(options) {\n window.location.assign(await kc.createRegisterUrl(options));\n return createPromise().promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.location.href = accountUrl;\n } else {\n throw \"Not supported by the OIDC server\";\n }\n return createPromise().promise;\n },\n\n redirectUri: function(options, encodeHash) {\n if (arguments.length == 1) {\n encodeHash = true;\n }\n\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return location.href;\n }\n }\n };\n }\n\n if (type == 'cordova') {\n loginIframe.enable = false;\n var cordovaOpenWindowWrapper = function(loginUrl, target, options) {\n if (window.cordova && window.cordova.InAppBrowser) {\n // Use inappbrowser for IOS and Android if available\n return window.cordova.InAppBrowser.open(loginUrl, target, options);\n } else {\n return window.open(loginUrl, target, options);\n }\n };\n\n var shallowCloneCordovaOptions = function (userOptions) {\n if (userOptions && userOptions.cordovaOptions) {\n return Object.keys(userOptions.cordovaOptions).reduce(function (options, optionName) {\n options[optionName] = userOptions.cordovaOptions[optionName];\n return options;\n }, {});\n } else {\n return {};\n }\n };\n\n var formatCordovaOptions = function (cordovaOptions) {\n return Object.keys(cordovaOptions).reduce(function (options, optionName) {\n options.push(optionName+\"=\"+cordovaOptions[optionName]);\n return options;\n }, []).join(\",\");\n };\n\n var createCordovaOptions = function (userOptions) {\n var cordovaOptions = shallowCloneCordovaOptions(userOptions);\n cordovaOptions.location = 'no';\n if (userOptions && userOptions.prompt == 'none') {\n cordovaOptions.hidden = 'yes';\n }\n return formatCordovaOptions(cordovaOptions);\n };\n\n var getCordovaRedirectUri = function() {\n return kc.redirectUri || 'http://localhost';\n }\n\n return {\n login: async function(options) {\n var promise = createPromise();\n\n var cordovaOptions = createCordovaOptions(options);\n var loginUrl = await kc.createLoginUrl(options);\n var ref = cordovaOpenWindowWrapper(loginUrl, '_blank', cordovaOptions);\n var completed = false;\n\n var closed = false;\n var closeBrowser = function() {\n closed = true;\n ref.close();\n };\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (!completed) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n var callback = parseCallback(event.url);\n processCallback(callback, promise);\n closeBrowser();\n completed = true;\n } else {\n promise.setError();\n closeBrowser();\n }\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (!closed) {\n promise.setError({\n reason: \"closed_by_user\"\n });\n }\n });\n\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n\n var logoutUrl = kc.createLogoutUrl(options);\n var ref = cordovaOpenWindowWrapper(logoutUrl, '_blank', 'location=no,hidden=yes,clearcache=yes');\n\n var error;\n\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n\n ref.addEventListener('loaderror', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n } else {\n error = true;\n ref.close();\n }\n });\n\n ref.addEventListener('exit', function(event) {\n if (error) {\n promise.setError();\n } else {\n kc.clearToken();\n promise.setSuccess();\n }\n });\n\n return promise.promise;\n },\n\n register : async function(options) {\n var promise = createPromise();\n var registerUrl = await kc.createRegisterUrl();\n var cordovaOptions = createCordovaOptions(options);\n var ref = cordovaOpenWindowWrapper(registerUrl, '_blank', cordovaOptions);\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n }\n });\n return promise.promise;\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n var ref = cordovaOpenWindowWrapper(accountUrl, '_blank', 'location=no');\n ref.addEventListener('loadstart', function(event) {\n if (event.url.indexOf(getCordovaRedirectUri()) == 0) {\n ref.close();\n }\n });\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n return getCordovaRedirectUri();\n }\n }\n }\n\n if (type == 'cordova-native') {\n loginIframe.enable = false;\n\n return {\n login: async function(options) {\n var promise = createPromise();\n var loginUrl = await kc.createLoginUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n\n window.cordova.plugins.browsertab.openUrl(loginUrl);\n return promise.promise;\n },\n\n logout: function(options) {\n var promise = createPromise();\n var logoutUrl = kc.createLogoutUrl(options);\n\n universalLinks.subscribe('keycloak', function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n kc.clearToken();\n promise.setSuccess();\n });\n\n window.cordova.plugins.browsertab.openUrl(logoutUrl);\n return promise.promise;\n },\n\n register : async function(options) {\n var promise = createPromise();\n var registerUrl = await kc.createRegisterUrl(options);\n universalLinks.subscribe('keycloak' , function(event) {\n universalLinks.unsubscribe('keycloak');\n window.cordova.plugins.browsertab.close();\n var oauth = parseCallback(event.url);\n processCallback(oauth, promise);\n });\n window.cordova.plugins.browsertab.openUrl(registerUrl);\n return promise.promise;\n\n },\n\n accountManagement : function() {\n var accountUrl = kc.createAccountUrl();\n if (typeof accountUrl !== 'undefined') {\n window.cordova.plugins.browsertab.openUrl(accountUrl);\n } else {\n throw \"Not supported by the OIDC server\";\n }\n },\n\n redirectUri: function(options) {\n if (options && options.redirectUri) {\n return options.redirectUri;\n } else if (kc.redirectUri) {\n return kc.redirectUri;\n } else {\n return \"http://localhost\";\n }\n }\n }\n }\n\n throw 'invalid adapter type: ' + type;\n }\n\n const STORAGE_KEY_PREFIX = 'kc-callback-';\n\n var LocalStorage = function() {\n if (!(this instanceof LocalStorage)) {\n return new LocalStorage();\n }\n\n localStorage.setItem('kc-test', 'test');\n localStorage.removeItem('kc-test');\n\n var cs = this;\n\n /**\n * Clears all values from local storage that are no longer valid.\n */\n function clearInvalidValues() {\n const currentTime = Date.now();\n\n for (const [key, value] of getStoredEntries()) {\n // Attempt to parse the expiry time from the value.\n const expiry = parseExpiry(value);\n\n // Discard the value if it is malformed or expired.\n if (expiry === null || expiry < currentTime) {\n localStorage.removeItem(key);\n }\n }\n }\n\n /**\n * Clears all known values from local storage.\n */\n function clearAllValues() {\n for (const [key] of getStoredEntries()) {\n localStorage.removeItem(key);\n }\n }\n\n /**\n * Gets all entries stored in local storage that are known to be managed by this class.\n * @returns {Array<[string, unknown]>} An array of key-value pairs.\n */\n function getStoredEntries() {\n return Object.entries(localStorage).filter(([key]) => key.startsWith(STORAGE_KEY_PREFIX));\n }\n\n /**\n * Parses the expiry time from a value stored in local storage.\n * @param {unknown} value\n * @returns {number | null} The expiry time in milliseconds, or `null` if the value is malformed.\n */\n function parseExpiry(value) {\n let parsedValue;\n\n // Attempt to parse the value as JSON.\n try {\n parsedValue = JSON.parse(value);\n } catch (error) {\n return null;\n }\n\n // Attempt to extract the 'expires' property.\n if (isObject(parsedValue) && 'expires' in parsedValue && typeof parsedValue.expires === 'number') {\n return parsedValue.expires;\n }\n\n return null;\n }\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var key = STORAGE_KEY_PREFIX + state;\n var value = localStorage.getItem(key);\n if (value) {\n localStorage.removeItem(key);\n value = JSON.parse(value);\n }\n\n clearInvalidValues();\n return value;\n };\n\n cs.add = function(state) {\n clearInvalidValues();\n\n const key = STORAGE_KEY_PREFIX + state.state;\n const value = JSON.stringify({\n ...state,\n // Set the expiry time to 1 hour from now.\n expires: Date.now() + (60 * 60 * 1000)\n });\n\n try {\n localStorage.setItem(key, value);\n } catch (error) {\n // If the storage is full, clear all known values and try again.\n clearAllValues();\n localStorage.setItem(key, value);\n }\n };\n };\n\n var CookieStorage = function() {\n if (!(this instanceof CookieStorage)) {\n return new CookieStorage();\n }\n\n var cs = this;\n\n cs.get = function(state) {\n if (!state) {\n return;\n }\n\n var value = getCookie(STORAGE_KEY_PREFIX + state);\n setCookie(STORAGE_KEY_PREFIX + state, '', cookieExpiration(-100));\n if (value) {\n return JSON.parse(value);\n }\n };\n\n cs.add = function(state) {\n setCookie(STORAGE_KEY_PREFIX + state.state, JSON.stringify(state), cookieExpiration(60));\n };\n\n cs.removeItem = function(key) {\n setCookie(key, '', cookieExpiration(-100));\n };\n\n var cookieExpiration = function (minutes) {\n var exp = new Date();\n exp.setTime(exp.getTime() + (minutes*60*1000));\n return exp;\n };\n\n var getCookie = function (key) {\n var name = key + '=';\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) == ' ') {\n c = c.substring(1);\n }\n if (c.indexOf(name) == 0) {\n return c.substring(name.length, c.length);\n }\n }\n return '';\n };\n\n var setCookie = function (key, value, expirationDate) {\n var cookie = key + '=' + value + '; '\n + 'expires=' + expirationDate.toUTCString() + '; ';\n document.cookie = cookie;\n }\n };\n\n function createCallbackStorage() {\n try {\n return new LocalStorage();\n } catch (err) {\n }\n\n return new CookieStorage();\n }\n\n function createLogger(fn) {\n return function() {\n if (kc.enableLogging) {\n fn.apply(console, Array.prototype.slice.call(arguments));\n }\n };\n }\n}\n\nexport default Keycloak;\n\n/**\n * @param {ArrayBuffer} bytes\n * @see https://developer.mozilla.org/en-US/docs/Glossary/Base64#the_unicode_problem\n */\nfunction bytesToBase64(bytes) {\n const binString = String.fromCodePoint(...bytes);\n return btoa(binString);\n}\n\n/**\n * @param {string} message\n * @see https://developer.mozilla.org/en-US/docs/Web/API/SubtleCrypto/digest#basic_example\n */\nasync function sha256Digest(message) {\n const encoder = new TextEncoder();\n const data = encoder.encode(message);\n\n if (typeof crypto === \"undefined\" || typeof crypto.subtle === \"undefined\") {\n throw new Error(\"Web Crypto API is not available.\");\n }\n\n return await crypto.subtle.digest(\"SHA-256\", data);\n}\n\n/**\n * @param {string} token\n */\nfunction decodeToken(token) {\n const [header, payload] = token.split(\".\");\n\n if (typeof payload !== \"string\") {\n throw new Error(\"Unable to decode token, payload not found.\");\n }\n\n let decoded;\n\n try {\n decoded = base64UrlDecode(payload);\n } catch (error) {\n throw new Error(\"Unable to decode token, payload is not a valid Base64URL value.\", { cause: error });\n }\n\n try {\n return JSON.parse(decoded);\n } catch (error) {\n throw new Error(\"Unable to decode token, payload is not a valid JSON value.\", { cause: error });\n }\n}\n\n/**\n * @param {string} input\n */\nfunction base64UrlDecode(input) {\n let output = input\n .replaceAll(\"-\", \"+\")\n .replaceAll(\"_\", \"/\");\n\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw new Error(\"Input is not of the correct length.\");\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (error) {\n return atob(output);\n }\n}\n\n/**\n * @param {string} input\n */\nfunction b64DecodeUnicode(input) {\n return decodeURIComponent(atob(input).replace(/(.)/g, (m, p) => {\n let code = p.charCodeAt(0).toString(16).toUpperCase();\n\n if (code.length < 2) {\n code = \"0\" + code;\n }\n\n return \"%\" + code;\n }));\n}\n\n/**\n * Check if the input is an object that can be operated on.\n * @param {unknown} input\n */\nfunction isObject(input) {\n return typeof input === 'object' && input !== null;\n}\n","import { createContext, useContext, useEffect, useState } from \"react\";\nimport { ReactKeycloakProvider, useKeycloak } from \"@react-keycloak/web\";\nimport Keycloak from \"keycloak-js\";\nimport {\n SecurityContextType,\n SecurityProviderProps,\n AcademeKeycloakContextProps,\n} from \"./types\";\n\nexport const AcademeAuthProvider: React.FC<AcademeKeycloakContextProps> = ({\n realm,\n hubUrl,\n children,\n clientId,\n keycloakUrl,\n}) => {\n return (\n <ReactKeycloakProvider\n authClient={new Keycloak({ clientId, realm, url: keycloakUrl })}\n >\n <SecurityProvider hubUrl={hubUrl}>{children}</SecurityProvider>\n </ReactKeycloakProvider>\n );\n};\n\nconst SecurityContext = createContext<SecurityContextType>({\n isInitialized: false,\n getUser: () => ({\n email: \"\",\n name: \"\",\n lastName: \"\",\n attributes: {\n school_ids: [],\n },\n }),\n signOut: () => null,\n goToLogin: () => null,\n hasSchool: () => false,\n hasRealmRole: () => false,\n redirectToHub: () => null,\n hasClientRole: () => false,\n isAuthenticated: () => false,\n});\n\nconst SecurityProvider: React.FC<SecurityProviderProps> = ({\n hubUrl,\n children,\n}) => {\n const [isInitialized, setIsInitialized] = useState(false);\n const { initialized, keycloak } = useKeycloak();\n\n useEffect(() => {\n setIsInitialized(initialized);\n }, [initialized]);\n\n useEffect(() => {\n window.accessToken = keycloak.token;\n }, [keycloak.token]);\n\n const getUser = () => {\n const idTokenParsed = keycloak?.idTokenParsed || {};\n\n return {\n email: keycloak?.idTokenParsed?.email || \"\",\n name: keycloak?.idTokenParsed?.given_name || \"\",\n lastName: keycloak?.idTokenParsed?.family_name || \"\",\n attributes: {\n school_ids: (idTokenParsed.school_ids || []) as string[],\n },\n };\n };\n\n const redirectToHub = (errorMessage: string) => {\n window.location.replace(`${hubUrl}?errorMessage=${errorMessage}`);\n };\n\n const signOut = () => {\n keycloak?.logout();\n };\n\n const isAuthenticated = () => {\n return (\n !!keycloak?.idTokenParsed?.email?.length && !!keycloak?.authenticated\n );\n };\n\n const hasSchool = (schoolId: string) => {\n return getUser().attributes.school_ids.includes(schoolId);\n };\n\n return (\n <SecurityContext.Provider\n value={{\n isInitialized,\n getUser,\n signOut,\n redirectToHub,\n isAuthenticated,\n hasSchool: hasSchool,\n goToLogin: keycloak.login,\n hasRealmRole: keycloak?.hasRealmRole,\n hasClientRole: keycloak.hasResourceRole,\n }}\n >\n {children}\n </SecurityContext.Provider>\n );\n};\n\ndeclare global {\n interface Window {\n accessToken?: string;\n }\n}\n\nexport const useAcademeAuth = () => useContext(SecurityContext);\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nconst toKebabCase = (string) => string.replace(/([a-z0-9])([A-Z])/g, \"$1-$2\").toLowerCase();\nconst toCamelCase = (string) => string.replace(\n /^([A-Z])|[\\s-_]+(\\w)/g,\n (match, p1, p2) => p2 ? p2.toUpperCase() : p1.toLowerCase()\n);\nconst toPascalCase = (string) => {\n const camelCase = toCamelCase(string);\n return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);\n};\nconst mergeClasses = (...classes) => classes.filter((className, index, array) => {\n return Boolean(className) && className.trim() !== \"\" && array.indexOf(className) === index;\n}).join(\" \").trim();\nconst hasA11yProp = (props) => {\n for (const prop in props) {\n if (prop.startsWith(\"aria-\") || prop === \"role\" || prop === \"title\") {\n return true;\n }\n }\n};\n\nexport { hasA11yProp, mergeClasses, toCamelCase, toKebabCase, toPascalCase };\n//# sourceMappingURL=utils.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nvar defaultAttributes = {\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};\n\nexport { defaultAttributes as default };\n//# sourceMappingURL=defaultAttributes.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport defaultAttributes from './defaultAttributes.js';\nimport { mergeClasses, hasA11yProp } from './shared/src/utils.js';\n\nconst Icon = forwardRef(\n ({\n color = \"currentColor\",\n size = 24,\n strokeWidth = 2,\n absoluteStrokeWidth,\n className = \"\",\n children,\n iconNode,\n ...rest\n }, ref) => createElement(\n \"svg\",\n {\n ref,\n ...defaultAttributes,\n width: size,\n height: size,\n stroke: color,\n strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,\n className: mergeClasses(\"lucide\", className),\n ...!children && !hasA11yProp(rest) && { \"aria-hidden\": \"true\" },\n ...rest\n },\n [\n ...iconNode.map(([tag, attrs]) => createElement(tag, attrs)),\n ...Array.isArray(children) ? children : [children]\n ]\n )\n);\n\nexport { Icon as default };\n//# sourceMappingURL=Icon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport { forwardRef, createElement } from 'react';\nimport { mergeClasses, toKebabCase, toPascalCase } from './shared/src/utils.js';\nimport Icon from './Icon.js';\n\nconst createLucideIcon = (iconName, iconNode) => {\n const Component = forwardRef(\n ({ className, ...props }, ref) => createElement(Icon, {\n ref,\n iconNode,\n className: mergeClasses(\n `lucide-${toKebabCase(toPascalCase(iconName))}`,\n `lucide-${iconName}`,\n className\n ),\n ...props\n })\n );\n Component.displayName = toPascalCase(iconName);\n return Component;\n};\n\nexport { createLucideIcon as default };\n//# sourceMappingURL=createLucideIcon.js.map\n","/**\n * @license lucide-react v0.545.0 - ISC\n *\n * This source code is licensed under the ISC license.\n * See the LICENSE file in the root directory of this source tree.\n */\n\nimport createLucideIcon from '../createLucideIcon.js';\n\nconst __iconNode = [[\"path\", { d: \"M21 12a9 9 0 1 1-6.219-8.56\", key: \"13zald\" }]];\nconst LoaderCircle = createLucideIcon(\"loader-circle\", __iconNode);\n\nexport { __iconNode, LoaderCircle as default };\n//# sourceMappingURL=loader-circle.js.map\n","const CLASS_PART_SEPARATOR = '-';\nconst createClassGroupUtils = config => {\n const classMap = createClassMap(config);\n const {\n conflictingClassGroups,\n conflictingClassGroupModifiers\n } = config;\n const getClassGroupId = className => {\n const classParts = className.split(CLASS_PART_SEPARATOR);\n // Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and remove it from classParts.\n if (classParts[0] === '' && classParts.length !== 1) {\n classParts.shift();\n }\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className);\n };\n const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier) => {\n const conflicts = conflictingClassGroups[classGroupId] || [];\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]];\n }\n return conflicts;\n };\n return {\n getClassGroupId,\n getConflictingClassGroupIds\n };\n};\nconst getGroupRecursive = (classParts, classPartObject) => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId;\n }\n const currentClassPart = classParts[0];\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);\n const classGroupFromNextClassPart = nextClassPartObject ? getGroupRecursive(classParts.slice(1), nextClassPartObject) : undefined;\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart;\n }\n if (classPartObject.validators.length === 0) {\n return undefined;\n }\n const classRest = classParts.join(CLASS_PART_SEPARATOR);\n return classPartObject.validators.find(({\n validator\n }) => validator(classRest))?.classGroupId;\n};\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/;\nconst getGroupIdForArbitraryProperty = className => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)[1];\n const property = arbitraryPropertyClassName?.substring(0, arbitraryPropertyClassName.indexOf(':'));\n if (property) {\n // I use two dots here because one dot is used as prefix for class groups in plugins\n return 'arbitrary..' + property;\n }\n }\n};\n/**\n * Exported for testing only\n */\nconst createClassMap = config => {\n const {\n theme,\n classGroups\n } = config;\n const classMap = {\n nextPart: new Map(),\n validators: []\n };\n for (const classGroupId in classGroups) {\n processClassesRecursively(classGroups[classGroupId], classMap, classGroupId, theme);\n }\n return classMap;\n};\nconst processClassesRecursively = (classGroup, classPartObject, classGroupId, theme) => {\n classGroup.forEach(classDefinition => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);\n classPartObjectToEdit.classGroupId = classGroupId;\n return;\n }\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);\n return;\n }\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId\n });\n return;\n }\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(classGroup, getPart(classPartObject, key), classGroupId, theme);\n });\n });\n};\nconst getPart = (classPartObject, path) => {\n let currentClassPartObject = classPartObject;\n path.split(CLASS_PART_SEPARATOR).forEach(pathPart => {\n if (!currentClassPartObject.nextPart.has(pathPart)) {\n currentClassPartObject.nextPart.set(pathPart, {\n nextPart: new Map(),\n validators: []\n });\n }\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart);\n });\n return currentClassPartObject;\n};\nconst isThemeGetter = func => func.isThemeGetter;\n\n// LRU cache inspired from hashlru (https://github.com/dominictarr/hashlru/blob/v1.0.4/index.js) but object replaced with Map to improve performance\nconst createLruCache = maxCacheSize => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {}\n };\n }\n let cacheSize = 0;\n let cache = new Map();\n let previousCache = new Map();\n const update = (key, value) => {\n cache.set(key, value);\n cacheSize++;\n if (cacheSize > maxCacheSize) {\n cacheSize = 0;\n previousCache = cache;\n cache = new Map();\n }\n };\n return {\n get(key) {\n let value = cache.get(key);\n if (value !== undefined) {\n return value;\n }\n if ((value = previousCache.get(key)) !== undefined) {\n update(key, value);\n return value;\n }\n },\n set(key, value) {\n if (cache.has(key)) {\n cache.set(key, value);\n } else {\n update(key, value);\n }\n }\n };\n};\nconst IMPORTANT_MODIFIER = '!';\nconst MODIFIER_SEPARATOR = ':';\nconst MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length;\nconst createParseClassName = config => {\n const {\n prefix,\n experimentalParseClassName\n } = config;\n /**\n * Parse class name into parts.\n *\n * Inspired by `splitAtTopLevelOnly` used in Tailwind CSS\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n */\n let parseClassName = className => {\n const modifiers = [];\n let bracketDepth = 0;\n let parenDepth = 0;\n let modifierStart = 0;\n let postfixModifierPosition;\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index];\n if (bracketDepth === 0 && parenDepth === 0) {\n if (currentCharacter === MODIFIER_SEPARATOR) {\n modifiers.push(className.slice(modifierStart, index));\n modifierStart = index + MODIFIER_SEPARATOR_LENGTH;\n continue;\n }\n if (currentCharacter === '/') {\n postfixModifierPosition = index;\n continue;\n }\n }\n if (currentCharacter === '[') {\n bracketDepth++;\n } else if (currentCharacter === ']') {\n bracketDepth--;\n } else if (currentCharacter === '(') {\n parenDepth++;\n } else if (currentCharacter === ')') {\n parenDepth--;\n }\n }\n const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.substring(modifierStart);\n const baseClassName = stripImportantModifier(baseClassNameWithImportantModifier);\n const hasImportantModifier = baseClassName !== baseClassNameWithImportantModifier;\n const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n };\n };\n if (prefix) {\n const fullPrefix = prefix + MODIFIER_SEPARATOR;\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => className.startsWith(fullPrefix) ? parseClassNameOriginal(className.substring(fullPrefix.length)) : {\n isExternal: true,\n modifiers: [],\n hasImportantModifier: false,\n baseClassName: className,\n maybePostfixModifierPosition: undefined\n };\n }\n if (experimentalParseClassName) {\n const parseClassNameOriginal = parseClassName;\n parseClassName = className => experimentalParseClassName({\n className,\n parseClassName: parseClassNameOriginal\n });\n }\n return parseClassName;\n};\nconst stripImportantModifier = baseClassName => {\n if (baseClassName.endsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(0, baseClassName.length - 1);\n }\n /**\n * In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.\n * @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864\n */\n if (baseClassName.startsWith(IMPORTANT_MODIFIER)) {\n return baseClassName.substring(1);\n }\n return baseClassName;\n};\n\n/**\n * Sorts modifiers according to following schema:\n * - Predefined modifiers are sorted alphabetically\n * - When an arbitrary variant appears, it must be preserved which modifiers are before and after it\n */\nconst createSortModifiers = config => {\n const orderSensitiveModifiers = Object.fromEntries(config.orderSensitiveModifiers.map(modifier => [modifier, true]));\n const sortModifiers = modifiers => {\n if (modifiers.length <= 1) {\n return modifiers;\n }\n const sortedModifiers = [];\n let unsortedModifiers = [];\n modifiers.forEach(modifier => {\n const isPositionSensitive = modifier[0] === '[' || orderSensitiveModifiers[modifier];\n if (isPositionSensitive) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier);\n unsortedModifiers = [];\n } else {\n unsortedModifiers.push(modifier);\n }\n });\n sortedModifiers.push(...unsortedModifiers.sort());\n return sortedModifiers;\n };\n return sortModifiers;\n};\nconst createConfigUtils = config => ({\n cache: createLruCache(config.cacheSize),\n parseClassName: createParseClassName(config),\n sortModifiers: createSortModifiers(config),\n ...createClassGroupUtils(config)\n});\nconst SPLIT_CLASSES_REGEX = /\\s+/;\nconst mergeClassList = (classList, configUtils) => {\n const {\n parseClassName,\n getClassGroupId,\n getConflictingClassGroupIds,\n sortModifiers\n } = configUtils;\n /**\n * Set of classGroupIds in following format:\n * `{importantModifier}{variantModifiers}{classGroupId}`\n * @example 'float'\n * @example 'hover:focus:bg-color'\n * @example 'md:!pr'\n */\n const classGroupsInConflict = [];\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);\n let result = '';\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index];\n const {\n isExternal,\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition\n } = parseClassName(originalClassName);\n if (isExternal) {\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n let hasPostfixModifier = !!maybePostfixModifierPosition;\n let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n classGroupId = getClassGroupId(baseClassName);\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n continue;\n }\n hasPostfixModifier = false;\n }\n const variantModifier = sortModifiers(modifiers).join(':');\n const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;\n const classId = modifierId + classGroupId;\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue;\n }\n classGroupsInConflict.push(classId);\n const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);\n for (let i = 0; i < conflictGroups.length; ++i) {\n const group = conflictGroups[i];\n classGroupsInConflict.push(modifierId + group);\n }\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result);\n }\n return result;\n};\n\n/**\n * The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.\n *\n * Specifically:\n * - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js\n * - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts\n *\n * Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)\n */\nfunction twJoin() {\n let index = 0;\n let argument;\n let resolvedValue;\n let string = '';\n while (index < arguments.length) {\n if (argument = arguments[index++]) {\n if (resolvedValue = toValue(argument)) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n}\nconst toValue = mix => {\n if (typeof mix === 'string') {\n return mix;\n }\n let resolvedValue;\n let string = '';\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if (resolvedValue = toValue(mix[k])) {\n string && (string += ' ');\n string += resolvedValue;\n }\n }\n }\n return string;\n};\nfunction createTailwindMerge(createConfigFirst, ...createConfigRest) {\n let configUtils;\n let cacheGet;\n let cacheSet;\n let functionToCall = initTailwindMerge;\n function initTailwindMerge(classList) {\n const config = createConfigRest.reduce((previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig), createConfigFirst());\n configUtils = createConfigUtils(config);\n cacheGet = configUtils.cache.get;\n cacheSet = configUtils.cache.set;\n functionToCall = tailwindMerge;\n return tailwindMerge(classList);\n }\n function tailwindMerge(classList) {\n const cachedResult = cacheGet(classList);\n if (cachedResult) {\n return cachedResult;\n }\n const result = mergeClassList(classList, configUtils);\n cacheSet(classList, result);\n return result;\n }\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments));\n };\n}\nconst fromTheme = key => {\n const themeGetter = theme => theme[key] || [];\n themeGetter.isThemeGetter = true;\n return themeGetter;\n};\nconst arbitraryValueRegex = /^\\[(?:(\\w[\\w-]*):)?(.+)\\]$/i;\nconst arbitraryVariableRegex = /^\\((?:(\\w[\\w-]*):)?(.+)\\)$/i;\nconst fractionRegex = /^\\d+\\/\\d+$/;\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/;\nconst lengthUnitRegex = /\\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\\b(calc|min|max|clamp)\\(.+\\)|^0$/;\nconst colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\\(.+\\)$/;\n// Shadow always begins with x and y offset separated by underscore optionally prepended by inset\nconst shadowRegex = /^(inset_)?-?((\\d+)?\\.?(\\d+)[a-z]+|0)_-?((\\d+)?\\.?(\\d+)[a-z]+|0)/;\nconst imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/;\nconst isFraction = value => fractionRegex.test(value);\nconst isNumber = value => !!value && !Number.isNaN(Number(value));\nconst isInteger = value => !!value && Number.isInteger(Number(value));\nconst isPercent = value => value.endsWith('%') && isNumber(value.slice(0, -1));\nconst isTshirtSize = value => tshirtUnitRegex.test(value);\nconst isAny = () => true;\nconst isLengthOnly = value =>\n// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.\n// For example, `hsl(0 0% 0%)` would be classified as a length without this check.\n// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.\nlengthUnitRegex.test(value) && !colorFunctionRegex.test(value);\nconst isNever = () => false;\nconst isShadow = value => shadowRegex.test(value);\nconst isImage = value => imageRegex.test(value);\nconst isAnyNonArbitrary = value => !isArbitraryValue(value) && !isArbitraryVariable(value);\nconst isArbitrarySize = value => getIsArbitraryValue(value, isLabelSize, isNever);\nconst isArbitraryValue = value => arbitraryValueRegex.test(value);\nconst isArbitraryLength = value => getIsArbitraryValue(value, isLabelLength, isLengthOnly);\nconst isArbitraryNumber = value => getIsArbitraryValue(value, isLabelNumber, isNumber);\nconst isArbitraryPosition = value => getIsArbitraryValue(value, isLabelPosition, isNever);\nconst isArbitraryImage = value => getIsArbitraryValue(value, isLabelImage, isImage);\nconst isArbitraryShadow = value => getIsArbitraryValue(value, isLabelShadow, isShadow);\nconst isArbitraryVariable = value => arbitraryVariableRegex.test(value);\nconst isArbitraryVariableLength = value => getIsArbitraryVariable(value, isLabelLength);\nconst isArbitraryVariableFamilyName = value => getIsArbitraryVariable(value, isLabelFamilyName);\nconst isArbitraryVariablePosition = value => getIsArbitraryVariable(value, isLabelPosition);\nconst isArbitraryVariableSize = value => getIsArbitraryVariable(value, isLabelSize);\nconst isArbitraryVariableImage = value => getIsArbitraryVariable(value, isLabelImage);\nconst isArbitraryVariableShadow = value => getIsArbitraryVariable(value, isLabelShadow, true);\n// Helpers\nconst getIsArbitraryValue = (value, testLabel, testValue) => {\n const result = arbitraryValueRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return testValue(result[2]);\n }\n return false;\n};\nconst getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false) => {\n const result = arbitraryVariableRegex.exec(value);\n if (result) {\n if (result[1]) {\n return testLabel(result[1]);\n }\n return shouldMatchNoLabel;\n }\n return false;\n};\n// Labels\nconst isLabelPosition = label => label === 'position' || label === 'percentage';\nconst isLabelImage = label => label === 'image' || label === 'url';\nconst isLabelSize = label => label === 'length' || label === 'size' || label === 'bg-size';\nconst isLabelLength = label => label === 'length';\nconst isLabelNumber = label => label === 'number';\nconst isLabelFamilyName = label => label === 'family-name';\nconst isLabelShadow = label => label === 'shadow';\nconst validators = /*#__PURE__*/Object.defineProperty({\n __proto__: null,\n isAny,\n isAnyNonArbitrary,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isArbitraryVariable,\n isArbitraryVariableFamilyName,\n isArbitraryVariableImage,\n isArbitraryVariableLength,\n isArbitraryVariablePosition,\n isArbitraryVariableShadow,\n isArbitraryVariableSize,\n isFraction,\n isInteger,\n isNumber,\n isPercent,\n isTshirtSize\n}, Symbol.toStringTag, {\n value: 'Module'\n});\nconst getDefaultConfig = () => {\n /**\n * Theme getters for theme variable namespaces\n * @see https://tailwindcss.com/docs/theme#theme-variable-namespaces\n */\n /***/\n const themeColor = fromTheme('color');\n const themeFont = fromTheme('font');\n const themeText = fromTheme('text');\n const themeFontWeight = fromTheme('font-weight');\n const themeTracking = fromTheme('tracking');\n const themeLeading = fromTheme('leading');\n const themeBreakpoint = fromTheme('breakpoint');\n const themeContainer = fromTheme('container');\n const themeSpacing = fromTheme('spacing');\n const themeRadius = fromTheme('radius');\n const themeShadow = fromTheme('shadow');\n const themeInsetShadow = fromTheme('inset-shadow');\n const themeTextShadow = fromTheme('text-shadow');\n const themeDropShadow = fromTheme('drop-shadow');\n const themeBlur = fromTheme('blur');\n const themePerspective = fromTheme('perspective');\n const themeAspect = fromTheme('aspect');\n const themeEase = fromTheme('ease');\n const themeAnimate = fromTheme('animate');\n /**\n * Helpers to avoid repeating the same scales\n *\n * We use functions that create a new array every time they're called instead of static arrays.\n * This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.\n */\n /***/\n const scaleBreak = () => ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'];\n const scalePosition = () => ['center', 'top', 'bottom', 'left', 'right', 'top-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-top', 'top-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-top', 'bottom-right',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'right-bottom', 'bottom-left',\n // Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378\n 'left-bottom'];\n const scalePositionWithArbitrary = () => [...scalePosition(), isArbitraryVariable, isArbitraryValue];\n const scaleOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'];\n const scaleOverscroll = () => ['auto', 'contain', 'none'];\n const scaleUnambiguousSpacing = () => [isArbitraryVariable, isArbitraryValue, themeSpacing];\n const scaleInset = () => [isFraction, 'full', 'auto', ...scaleUnambiguousSpacing()];\n const scaleGridTemplateColsRows = () => [isInteger, 'none', 'subgrid', isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartAndEnd = () => ['auto', {\n span: ['full', isInteger, isArbitraryVariable, isArbitraryValue]\n }, isInteger, isArbitraryVariable, isArbitraryValue];\n const scaleGridColRowStartOrEnd = () => [isInteger, 'auto', isArbitraryVariable, isArbitraryValue];\n const scaleGridAutoColsRows = () => ['auto', 'min', 'max', 'fr', isArbitraryVariable, isArbitraryValue];\n const scaleAlignPrimaryAxis = () => ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch', 'baseline', 'center-safe', 'end-safe'];\n const scaleAlignSecondaryAxis = () => ['start', 'end', 'center', 'stretch', 'center-safe', 'end-safe'];\n const scaleMargin = () => ['auto', ...scaleUnambiguousSpacing()];\n const scaleSizing = () => [isFraction, 'auto', 'full', 'dvw', 'dvh', 'lvw', 'lvh', 'svw', 'svh', 'min', 'max', 'fit', ...scaleUnambiguousSpacing()];\n const scaleColor = () => [themeColor, isArbitraryVariable, isArbitraryValue];\n const scaleBgPosition = () => [...scalePosition(), isArbitraryVariablePosition, isArbitraryPosition, {\n position: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleBgRepeat = () => ['no-repeat', {\n repeat: ['', 'x', 'y', 'space', 'round']\n }];\n const scaleBgSize = () => ['auto', 'cover', 'contain', isArbitraryVariableSize, isArbitrarySize, {\n size: [isArbitraryVariable, isArbitraryValue]\n }];\n const scaleGradientStopPosition = () => [isPercent, isArbitraryVariableLength, isArbitraryLength];\n const scaleRadius = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', 'full', themeRadius, isArbitraryVariable, isArbitraryValue];\n const scaleBorderWidth = () => ['', isNumber, isArbitraryVariableLength, isArbitraryLength];\n const scaleLineStyle = () => ['solid', 'dashed', 'dotted', 'double'];\n const scaleBlendMode = () => ['normal', 'multiply', 'screen', 'overlay', 'darken', 'lighten', 'color-dodge', 'color-burn', 'hard-light', 'soft-light', 'difference', 'exclusion', 'hue', 'saturation', 'color', 'luminosity'];\n const scaleMaskImagePosition = () => [isNumber, isPercent, isArbitraryVariablePosition, isArbitraryPosition];\n const scaleBlur = () => [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeBlur, isArbitraryVariable, isArbitraryValue];\n const scaleRotate = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleScale = () => ['none', isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleSkew = () => [isNumber, isArbitraryVariable, isArbitraryValue];\n const scaleTranslate = () => [isFraction, 'full', ...scaleUnambiguousSpacing()];\n return {\n cacheSize: 500,\n theme: {\n animate: ['spin', 'ping', 'pulse', 'bounce'],\n aspect: ['video'],\n blur: [isTshirtSize],\n breakpoint: [isTshirtSize],\n color: [isAny],\n container: [isTshirtSize],\n 'drop-shadow': [isTshirtSize],\n ease: ['in', 'out', 'in-out'],\n font: [isAnyNonArbitrary],\n 'font-weight': ['thin', 'extralight', 'light', 'normal', 'medium', 'semibold', 'bold', 'extrabold', 'black'],\n 'inset-shadow': [isTshirtSize],\n leading: ['none', 'tight', 'snug', 'normal', 'relaxed', 'loose'],\n perspective: ['dramatic', 'near', 'normal', 'midrange', 'distant', 'none'],\n radius: [isTshirtSize],\n shadow: [isTshirtSize],\n spacing: ['px', isNumber],\n text: [isTshirtSize],\n 'text-shadow': [isTshirtSize],\n tracking: ['tighter', 'tight', 'normal', 'wide', 'wider', 'widest']\n },\n classGroups: {\n // --------------\n // --- Layout ---\n // --------------\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{\n aspect: ['auto', 'square', isFraction, isArbitraryValue, isArbitraryVariable, themeAspect]\n }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n * @deprecated since Tailwind CSS v4.0.0\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{\n columns: [isNumber, isArbitraryValue, isArbitraryVariable, themeContainer]\n }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{\n 'break-after': scaleBreak()\n }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{\n 'break-before': scaleBreak()\n }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{\n 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column']\n }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{\n 'box-decoration': ['slice', 'clone']\n }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{\n box: ['border', 'content']\n }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: ['block', 'inline-block', 'inline', 'flex', 'inline-flex', 'table', 'inline-table', 'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row-group', 'table-row', 'flow-root', 'grid', 'inline-grid', 'contents', 'list-item', 'hidden'],\n /**\n * Screen Reader Only\n * @see https://tailwindcss.com/docs/display#screen-reader-only\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{\n float: ['right', 'left', 'none', 'start', 'end']\n }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{\n clear: ['left', 'right', 'both', 'none', 'start', 'end']\n }],\n /**\n * Isolation\n * @see https://tailwindcss.com/docs/isolation\n */\n isolation: ['isolate', 'isolation-auto'],\n /**\n * Object Fit\n * @see https://tailwindcss.com/docs/object-fit\n */\n 'object-fit': [{\n object: ['contain', 'cover', 'fill', 'none', 'scale-down']\n }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{\n object: scalePositionWithArbitrary()\n }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{\n overflow: scaleOverflow()\n }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{\n 'overflow-x': scaleOverflow()\n }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{\n 'overflow-y': scaleOverflow()\n }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{\n overscroll: scaleOverscroll()\n }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{\n 'overscroll-x': scaleOverscroll()\n }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{\n 'overscroll-y': scaleOverscroll()\n }],\n /**\n * Position\n * @see https://tailwindcss.com/docs/position\n */\n position: ['static', 'fixed', 'absolute', 'relative', 'sticky'],\n /**\n * Top / Right / Bottom / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n inset: [{\n inset: scaleInset()\n }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{\n 'inset-x': scaleInset()\n }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{\n 'inset-y': scaleInset()\n }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{\n start: scaleInset()\n }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{\n end: scaleInset()\n }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{\n top: scaleInset()\n }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{\n right: scaleInset()\n }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{\n bottom: scaleInset()\n }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{\n left: scaleInset()\n }],\n /**\n * Visibility\n * @see https://tailwindcss.com/docs/visibility\n */\n visibility: ['visible', 'invisible', 'collapse'],\n /**\n * Z-Index\n * @see https://tailwindcss.com/docs/z-index\n */\n z: [{\n z: [isInteger, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------------\n // --- Flexbox and Grid ---\n // ------------------------\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{\n basis: [isFraction, 'full', 'auto', themeContainer, ...scaleUnambiguousSpacing()]\n }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{\n flex: ['row', 'row-reverse', 'col', 'col-reverse']\n }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{\n flex: ['nowrap', 'wrap', 'wrap-reverse']\n }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{\n flex: [isNumber, isFraction, 'auto', 'initial', 'none', isArbitraryValue]\n }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{\n grow: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{\n shrink: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{\n order: [isInteger, 'first', 'last', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{\n 'grid-cols': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [{\n col: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{\n 'col-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{\n 'col-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{\n 'grid-rows': scaleGridTemplateColsRows()\n }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [{\n row: scaleGridColRowStartAndEnd()\n }],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{\n 'row-start': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{\n 'row-end': scaleGridColRowStartOrEnd()\n }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{\n 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense']\n }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{\n 'auto-cols': scaleGridAutoColsRows()\n }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{\n 'auto-rows': scaleGridAutoColsRows()\n }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{\n gap: scaleUnambiguousSpacing()\n }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{\n 'gap-x': scaleUnambiguousSpacing()\n }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{\n 'gap-y': scaleUnambiguousSpacing()\n }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{\n justify: [...scaleAlignPrimaryAxis(), 'normal']\n }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{\n 'justify-items': [...scaleAlignSecondaryAxis(), 'normal']\n }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{\n 'justify-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{\n content: ['normal', ...scaleAlignPrimaryAxis()]\n }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{\n items: [...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{\n self: ['auto', ...scaleAlignSecondaryAxis(), {\n baseline: ['', 'last']\n }]\n }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{\n 'place-content': scaleAlignPrimaryAxis()\n }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{\n 'place-items': [...scaleAlignSecondaryAxis(), 'baseline']\n }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{\n 'place-self': ['auto', ...scaleAlignSecondaryAxis()]\n }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{\n p: scaleUnambiguousSpacing()\n }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{\n px: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{\n py: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{\n ps: scaleUnambiguousSpacing()\n }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{\n pe: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{\n pt: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{\n pr: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{\n pb: scaleUnambiguousSpacing()\n }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{\n pl: scaleUnambiguousSpacing()\n }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{\n m: scaleMargin()\n }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{\n mx: scaleMargin()\n }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{\n my: scaleMargin()\n }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{\n ms: scaleMargin()\n }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{\n me: scaleMargin()\n }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{\n mt: scaleMargin()\n }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{\n mr: scaleMargin()\n }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{\n mb: scaleMargin()\n }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{\n ml: scaleMargin()\n }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x': [{\n 'space-x': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y': [{\n 'space-y': scaleUnambiguousSpacing()\n }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/margin#adding-space-between-children\n */\n 'space-y-reverse': ['space-y-reverse'],\n // --------------\n // --- Sizing ---\n // --------------\n /**\n * Size\n * @see https://tailwindcss.com/docs/width#setting-both-width-and-height\n */\n size: [{\n size: scaleSizing()\n }],\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [{\n w: [themeContainer, 'screen', ...scaleSizing()]\n }],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{\n 'min-w': [themeContainer, 'screen', /** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'none', ...scaleSizing()]\n }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [{\n 'max-w': [themeContainer, 'screen', 'none', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n 'prose', /** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n {\n screen: [themeBreakpoint]\n }, ...scaleSizing()]\n }],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [{\n h: ['screen', 'lh', ...scaleSizing()]\n }],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [{\n 'min-h': ['screen', 'lh', 'none', ...scaleSizing()]\n }],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [{\n 'max-h': ['screen', 'lh', ...scaleSizing()]\n }],\n // ------------------\n // --- Typography ---\n // ------------------\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{\n text: ['base', themeText, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Font Smoothing\n * @see https://tailwindcss.com/docs/font-smoothing\n */\n 'font-smoothing': ['antialiased', 'subpixel-antialiased'],\n /**\n * Font Style\n * @see https://tailwindcss.com/docs/font-style\n */\n 'font-style': ['italic', 'not-italic'],\n /**\n * Font Weight\n * @see https://tailwindcss.com/docs/font-weight\n */\n 'font-weight': [{\n font: [themeFontWeight, isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Font Stretch\n * @see https://tailwindcss.com/docs/font-stretch\n */\n 'font-stretch': [{\n 'font-stretch': ['ultra-condensed', 'extra-condensed', 'condensed', 'semi-condensed', 'normal', 'semi-expanded', 'expanded', 'extra-expanded', 'ultra-expanded', isPercent, isArbitraryValue]\n }],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{\n font: [isArbitraryVariableFamilyName, isArbitraryValue, themeFont]\n }],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-normal': ['normal-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-ordinal': ['ordinal'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-slashed-zero': ['slashed-zero'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-figure': ['lining-nums', 'oldstyle-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-spacing': ['proportional-nums', 'tabular-nums'],\n /**\n * Font Variant Numeric\n * @see https://tailwindcss.com/docs/font-variant-numeric\n */\n 'fvn-fraction': ['diagonal-fractions', 'stacked-fractions'],\n /**\n * Letter Spacing\n * @see https://tailwindcss.com/docs/letter-spacing\n */\n tracking: [{\n tracking: [themeTracking, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{\n 'line-clamp': [isNumber, 'none', isArbitraryVariable, isArbitraryNumber]\n }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [{\n leading: [/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */\n themeLeading, ...scaleUnambiguousSpacing()]\n }],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{\n 'list-image': ['none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{\n list: ['inside', 'outside']\n }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{\n list: ['disc', 'decimal', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{\n text: ['left', 'center', 'right', 'justify', 'start', 'end']\n }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://v3.tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{\n placeholder: scaleColor()\n }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{\n text: scaleColor()\n }],\n /**\n * Text Decoration\n * @see https://tailwindcss.com/docs/text-decoration\n */\n 'text-decoration': ['underline', 'overline', 'line-through', 'no-underline'],\n /**\n * Text Decoration Style\n * @see https://tailwindcss.com/docs/text-decoration-style\n */\n 'text-decoration-style': [{\n decoration: [...scaleLineStyle(), 'wavy']\n }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [{\n decoration: [isNumber, 'from-font', 'auto', isArbitraryVariable, isArbitraryLength]\n }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{\n decoration: scaleColor()\n }],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{\n 'underline-offset': [isNumber, 'auto', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Text Transform\n * @see https://tailwindcss.com/docs/text-transform\n */\n 'text-transform': ['uppercase', 'lowercase', 'capitalize', 'normal-case'],\n /**\n * Text Overflow\n * @see https://tailwindcss.com/docs/text-overflow\n */\n 'text-overflow': ['truncate', 'text-ellipsis', 'text-clip'],\n /**\n * Text Wrap\n * @see https://tailwindcss.com/docs/text-wrap\n */\n 'text-wrap': [{\n text: ['wrap', 'nowrap', 'balance', 'pretty']\n }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{\n indent: scaleUnambiguousSpacing()\n }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [{\n align: ['baseline', 'top', 'middle', 'bottom', 'text-top', 'text-bottom', 'sub', 'super', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Whitespace\n * @see https://tailwindcss.com/docs/whitespace\n */\n whitespace: [{\n whitespace: ['normal', 'nowrap', 'pre', 'pre-line', 'pre-wrap', 'break-spaces']\n }],\n /**\n * Word Break\n * @see https://tailwindcss.com/docs/word-break\n */\n break: [{\n break: ['normal', 'words', 'all', 'keep']\n }],\n /**\n * Overflow Wrap\n * @see https://tailwindcss.com/docs/overflow-wrap\n */\n wrap: [{\n wrap: ['break-word', 'anywhere', 'normal']\n }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{\n hyphens: ['none', 'manual', 'auto']\n }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{\n content: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // -------------------\n // --- Backgrounds ---\n // -------------------\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{\n bg: ['fixed', 'local', 'scroll']\n }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{\n 'bg-clip': ['border', 'padding', 'content', 'text']\n }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{\n 'bg-origin': ['border', 'padding', 'content']\n }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{\n bg: scaleBgPosition()\n }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{\n bg: scaleBgRepeat()\n }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{\n bg: scaleBgSize()\n }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [{\n bg: ['none', {\n linear: [{\n to: ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl']\n }, isInteger, isArbitraryVariable, isArbitraryValue],\n radial: ['', isArbitraryVariable, isArbitraryValue],\n conic: [isInteger, isArbitraryVariable, isArbitraryValue]\n }, isArbitraryVariableImage, isArbitraryImage]\n }],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{\n bg: scaleColor()\n }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{\n from: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{\n via: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{\n to: scaleGradientStopPosition()\n }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{\n from: scaleColor()\n }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{\n via: scaleColor()\n }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{\n to: scaleColor()\n }],\n // ---------------\n // --- Borders ---\n // ---------------\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{\n rounded: scaleRadius()\n }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{\n 'rounded-s': scaleRadius()\n }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{\n 'rounded-e': scaleRadius()\n }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{\n 'rounded-t': scaleRadius()\n }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{\n 'rounded-r': scaleRadius()\n }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{\n 'rounded-b': scaleRadius()\n }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{\n 'rounded-l': scaleRadius()\n }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{\n 'rounded-ss': scaleRadius()\n }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{\n 'rounded-se': scaleRadius()\n }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{\n 'rounded-ee': scaleRadius()\n }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{\n 'rounded-es': scaleRadius()\n }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{\n 'rounded-tl': scaleRadius()\n }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{\n 'rounded-tr': scaleRadius()\n }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{\n 'rounded-br': scaleRadius()\n }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{\n 'rounded-bl': scaleRadius()\n }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{\n border: scaleBorderWidth()\n }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{\n 'border-x': scaleBorderWidth()\n }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{\n 'border-y': scaleBorderWidth()\n }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{\n 'border-s': scaleBorderWidth()\n }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{\n 'border-e': scaleBorderWidth()\n }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{\n 'border-t': scaleBorderWidth()\n }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{\n 'border-r': scaleBorderWidth()\n }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{\n 'border-b': scaleBorderWidth()\n }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{\n 'border-l': scaleBorderWidth()\n }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x': [{\n 'divide-x': scaleBorderWidth()\n }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y': [{\n 'divide-y': scaleBorderWidth()\n }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/border-width#between-children\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{\n border: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/border-style#setting-the-divider-style\n */\n 'divide-style': [{\n divide: [...scaleLineStyle(), 'hidden', 'none']\n }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{\n border: scaleColor()\n }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{\n 'border-x': scaleColor()\n }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{\n 'border-y': scaleColor()\n }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{\n 'border-s': scaleColor()\n }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{\n 'border-e': scaleColor()\n }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{\n 'border-t': scaleColor()\n }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{\n 'border-r': scaleColor()\n }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{\n 'border-b': scaleColor()\n }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{\n 'border-l': scaleColor()\n }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{\n divide: scaleColor()\n }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{\n outline: [...scaleLineStyle(), 'none', 'hidden']\n }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{\n 'outline-offset': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{\n outline: ['', isNumber, isArbitraryVariableLength, isArbitraryLength]\n }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{\n outline: scaleColor()\n }],\n // ---------------\n // --- Effects ---\n // ---------------\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{\n shadow: [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color\n */\n 'shadow-color': [{\n shadow: scaleColor()\n }],\n /**\n * Inset Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow\n */\n 'inset-shadow': [{\n 'inset-shadow': ['none', themeInsetShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Inset Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color\n */\n 'inset-shadow-color': [{\n 'inset-shadow': scaleColor()\n }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-a-ring\n */\n 'ring-w': [{\n ring: scaleBorderWidth()\n }],\n /**\n * Ring Width Inset\n * @see https://v3.tailwindcss.com/docs/ring-width#inset-rings\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color\n */\n 'ring-color': [{\n ring: scaleColor()\n }],\n /**\n * Ring Offset Width\n * @see https://v3.tailwindcss.com/docs/ring-offset-width\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-w': [{\n 'ring-offset': [isNumber, isArbitraryLength]\n }],\n /**\n * Ring Offset Color\n * @see https://v3.tailwindcss.com/docs/ring-offset-color\n * @deprecated since Tailwind CSS v4.0.0\n * @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158\n */\n 'ring-offset-color': [{\n 'ring-offset': scaleColor()\n }],\n /**\n * Inset Ring Width\n * @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring\n */\n 'inset-ring-w': [{\n 'inset-ring': scaleBorderWidth()\n }],\n /**\n * Inset Ring Color\n * @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color\n */\n 'inset-ring-color': [{\n 'inset-ring': scaleColor()\n }],\n /**\n * Text Shadow\n * @see https://tailwindcss.com/docs/text-shadow\n */\n 'text-shadow': [{\n 'text-shadow': ['none', themeTextShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Text Shadow Color\n * @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color\n */\n 'text-shadow-color': [{\n 'text-shadow': scaleColor()\n }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{\n opacity: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{\n 'mix-blend': [...scaleBlendMode(), 'plus-darker', 'plus-lighter']\n }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{\n 'bg-blend': scaleBlendMode()\n }],\n /**\n * Mask Clip\n * @see https://tailwindcss.com/docs/mask-clip\n */\n 'mask-clip': [{\n 'mask-clip': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }, 'mask-no-clip'],\n /**\n * Mask Composite\n * @see https://tailwindcss.com/docs/mask-composite\n */\n 'mask-composite': [{\n mask: ['add', 'subtract', 'intersect', 'exclude']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image-linear-pos': [{\n 'mask-linear': [isNumber]\n }],\n 'mask-image-linear-from-pos': [{\n 'mask-linear-from': scaleMaskImagePosition()\n }],\n 'mask-image-linear-to-pos': [{\n 'mask-linear-to': scaleMaskImagePosition()\n }],\n 'mask-image-linear-from-color': [{\n 'mask-linear-from': scaleColor()\n }],\n 'mask-image-linear-to-color': [{\n 'mask-linear-to': scaleColor()\n }],\n 'mask-image-t-from-pos': [{\n 'mask-t-from': scaleMaskImagePosition()\n }],\n 'mask-image-t-to-pos': [{\n 'mask-t-to': scaleMaskImagePosition()\n }],\n 'mask-image-t-from-color': [{\n 'mask-t-from': scaleColor()\n }],\n 'mask-image-t-to-color': [{\n 'mask-t-to': scaleColor()\n }],\n 'mask-image-r-from-pos': [{\n 'mask-r-from': scaleMaskImagePosition()\n }],\n 'mask-image-r-to-pos': [{\n 'mask-r-to': scaleMaskImagePosition()\n }],\n 'mask-image-r-from-color': [{\n 'mask-r-from': scaleColor()\n }],\n 'mask-image-r-to-color': [{\n 'mask-r-to': scaleColor()\n }],\n 'mask-image-b-from-pos': [{\n 'mask-b-from': scaleMaskImagePosition()\n }],\n 'mask-image-b-to-pos': [{\n 'mask-b-to': scaleMaskImagePosition()\n }],\n 'mask-image-b-from-color': [{\n 'mask-b-from': scaleColor()\n }],\n 'mask-image-b-to-color': [{\n 'mask-b-to': scaleColor()\n }],\n 'mask-image-l-from-pos': [{\n 'mask-l-from': scaleMaskImagePosition()\n }],\n 'mask-image-l-to-pos': [{\n 'mask-l-to': scaleMaskImagePosition()\n }],\n 'mask-image-l-from-color': [{\n 'mask-l-from': scaleColor()\n }],\n 'mask-image-l-to-color': [{\n 'mask-l-to': scaleColor()\n }],\n 'mask-image-x-from-pos': [{\n 'mask-x-from': scaleMaskImagePosition()\n }],\n 'mask-image-x-to-pos': [{\n 'mask-x-to': scaleMaskImagePosition()\n }],\n 'mask-image-x-from-color': [{\n 'mask-x-from': scaleColor()\n }],\n 'mask-image-x-to-color': [{\n 'mask-x-to': scaleColor()\n }],\n 'mask-image-y-from-pos': [{\n 'mask-y-from': scaleMaskImagePosition()\n }],\n 'mask-image-y-to-pos': [{\n 'mask-y-to': scaleMaskImagePosition()\n }],\n 'mask-image-y-from-color': [{\n 'mask-y-from': scaleColor()\n }],\n 'mask-image-y-to-color': [{\n 'mask-y-to': scaleColor()\n }],\n 'mask-image-radial': [{\n 'mask-radial': [isArbitraryVariable, isArbitraryValue]\n }],\n 'mask-image-radial-from-pos': [{\n 'mask-radial-from': scaleMaskImagePosition()\n }],\n 'mask-image-radial-to-pos': [{\n 'mask-radial-to': scaleMaskImagePosition()\n }],\n 'mask-image-radial-from-color': [{\n 'mask-radial-from': scaleColor()\n }],\n 'mask-image-radial-to-color': [{\n 'mask-radial-to': scaleColor()\n }],\n 'mask-image-radial-shape': [{\n 'mask-radial': ['circle', 'ellipse']\n }],\n 'mask-image-radial-size': [{\n 'mask-radial': [{\n closest: ['side', 'corner'],\n farthest: ['side', 'corner']\n }]\n }],\n 'mask-image-radial-pos': [{\n 'mask-radial-at': scalePosition()\n }],\n 'mask-image-conic-pos': [{\n 'mask-conic': [isNumber]\n }],\n 'mask-image-conic-from-pos': [{\n 'mask-conic-from': scaleMaskImagePosition()\n }],\n 'mask-image-conic-to-pos': [{\n 'mask-conic-to': scaleMaskImagePosition()\n }],\n 'mask-image-conic-from-color': [{\n 'mask-conic-from': scaleColor()\n }],\n 'mask-image-conic-to-color': [{\n 'mask-conic-to': scaleColor()\n }],\n /**\n * Mask Mode\n * @see https://tailwindcss.com/docs/mask-mode\n */\n 'mask-mode': [{\n mask: ['alpha', 'luminance', 'match']\n }],\n /**\n * Mask Origin\n * @see https://tailwindcss.com/docs/mask-origin\n */\n 'mask-origin': [{\n 'mask-origin': ['border', 'padding', 'content', 'fill', 'stroke', 'view']\n }],\n /**\n * Mask Position\n * @see https://tailwindcss.com/docs/mask-position\n */\n 'mask-position': [{\n mask: scaleBgPosition()\n }],\n /**\n * Mask Repeat\n * @see https://tailwindcss.com/docs/mask-repeat\n */\n 'mask-repeat': [{\n mask: scaleBgRepeat()\n }],\n /**\n * Mask Size\n * @see https://tailwindcss.com/docs/mask-size\n */\n 'mask-size': [{\n mask: scaleBgSize()\n }],\n /**\n * Mask Type\n * @see https://tailwindcss.com/docs/mask-type\n */\n 'mask-type': [{\n 'mask-type': ['alpha', 'luminance']\n }],\n /**\n * Mask Image\n * @see https://tailwindcss.com/docs/mask-image\n */\n 'mask-image': [{\n mask: ['none', isArbitraryVariable, isArbitraryValue]\n }],\n // ---------------\n // --- Filters ---\n // ---------------\n /**\n * Filter\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{\n filter: [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{\n blur: scaleBlur()\n }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{\n brightness: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{\n contrast: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{\n 'drop-shadow': [\n // Deprecated since Tailwind CSS v4.0.0\n '', 'none', themeDropShadow, isArbitraryVariableShadow, isArbitraryShadow]\n }],\n /**\n * Drop Shadow Color\n * @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color\n */\n 'drop-shadow-color': [{\n 'drop-shadow': scaleColor()\n }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{\n grayscale: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{\n 'hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{\n invert: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{\n saturate: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{\n sepia: ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Filter\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{\n 'backdrop-filter': [\n // Deprecated since Tailwind CSS v3.0.0\n '', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{\n 'backdrop-blur': scaleBlur()\n }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{\n 'backdrop-brightness': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{\n 'backdrop-contrast': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{\n 'backdrop-grayscale': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{\n 'backdrop-hue-rotate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{\n 'backdrop-invert': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{\n 'backdrop-opacity': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{\n 'backdrop-saturate': [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{\n 'backdrop-sepia': ['', isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n // --------------\n // --- Tables ---\n // --------------\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{\n border: ['collapse', 'separate']\n }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{\n 'border-spacing': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{\n 'border-spacing-x': scaleUnambiguousSpacing()\n }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{\n 'border-spacing-y': scaleUnambiguousSpacing()\n }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{\n table: ['auto', 'fixed']\n }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{\n caption: ['top', 'bottom']\n }],\n // ---------------------------------\n // --- Transitions and Animation ---\n // ---------------------------------\n /**\n * Transition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [{\n transition: ['', 'all', 'colors', 'opacity', 'shadow', 'transform', 'none', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Behavior\n * @see https://tailwindcss.com/docs/transition-behavior\n */\n 'transition-behavior': [{\n transition: ['normal', 'discrete']\n }],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{\n duration: [isNumber, 'initial', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{\n ease: ['linear', 'initial', themeEase, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{\n delay: [isNumber, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{\n animate: ['none', themeAnimate, isArbitraryVariable, isArbitraryValue]\n }],\n // ------------------\n // --- Transforms ---\n // ------------------\n /**\n * Backface Visibility\n * @see https://tailwindcss.com/docs/backface-visibility\n */\n backface: [{\n backface: ['hidden', 'visible']\n }],\n /**\n * Perspective\n * @see https://tailwindcss.com/docs/perspective\n */\n perspective: [{\n perspective: [themePerspective, isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Perspective Origin\n * @see https://tailwindcss.com/docs/perspective-origin\n */\n 'perspective-origin': [{\n 'perspective-origin': scalePositionWithArbitrary()\n }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{\n rotate: scaleRotate()\n }],\n /**\n * Rotate X\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-x': [{\n 'rotate-x': scaleRotate()\n }],\n /**\n * Rotate Y\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-y': [{\n 'rotate-y': scaleRotate()\n }],\n /**\n * Rotate Z\n * @see https://tailwindcss.com/docs/rotate\n */\n 'rotate-z': [{\n 'rotate-z': scaleRotate()\n }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{\n scale: scaleScale()\n }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{\n 'scale-x': scaleScale()\n }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{\n 'scale-y': scaleScale()\n }],\n /**\n * Scale Z\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-z': [{\n 'scale-z': scaleScale()\n }],\n /**\n * Scale 3D\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-3d': ['scale-3d'],\n /**\n * Skew\n * @see https://tailwindcss.com/docs/skew\n */\n skew: [{\n skew: scaleSkew()\n }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{\n 'skew-x': scaleSkew()\n }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{\n 'skew-y': scaleSkew()\n }],\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{\n transform: [isArbitraryVariable, isArbitraryValue, '', 'none', 'gpu', 'cpu']\n }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [{\n origin: scalePositionWithArbitrary()\n }],\n /**\n * Transform Style\n * @see https://tailwindcss.com/docs/transform-style\n */\n 'transform-style': [{\n transform: ['3d', 'flat']\n }],\n /**\n * Translate\n * @see https://tailwindcss.com/docs/translate\n */\n translate: [{\n translate: scaleTranslate()\n }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{\n 'translate-x': scaleTranslate()\n }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{\n 'translate-y': scaleTranslate()\n }],\n /**\n * Translate Z\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-z': [{\n 'translate-z': scaleTranslate()\n }],\n /**\n * Translate None\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-none': ['translate-none'],\n // ---------------------\n // --- Interactivity ---\n // ---------------------\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{\n accent: scaleColor()\n }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{\n appearance: ['none', 'auto']\n }],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{\n caret: scaleColor()\n }],\n /**\n * Color Scheme\n * @see https://tailwindcss.com/docs/color-scheme\n */\n 'color-scheme': [{\n scheme: ['normal', 'dark', 'light', 'light-dark', 'only-dark', 'only-light']\n }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [{\n cursor: ['auto', 'default', 'pointer', 'wait', 'text', 'move', 'help', 'not-allowed', 'none', 'context-menu', 'progress', 'cell', 'crosshair', 'vertical-text', 'alias', 'copy', 'no-drop', 'grab', 'grabbing', 'all-scroll', 'col-resize', 'row-resize', 'n-resize', 'e-resize', 's-resize', 'w-resize', 'ne-resize', 'nw-resize', 'se-resize', 'sw-resize', 'ew-resize', 'ns-resize', 'nesw-resize', 'nwse-resize', 'zoom-in', 'zoom-out', isArbitraryVariable, isArbitraryValue]\n }],\n /**\n * Field Sizing\n * @see https://tailwindcss.com/docs/field-sizing\n */\n 'field-sizing': [{\n 'field-sizing': ['fixed', 'content']\n }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{\n 'pointer-events': ['auto', 'none']\n }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{\n resize: ['none', '', 'y', 'x']\n }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{\n scroll: ['auto', 'smooth']\n }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{\n 'scroll-m': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{\n 'scroll-mx': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{\n 'scroll-my': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{\n 'scroll-ms': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{\n 'scroll-me': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{\n 'scroll-mt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{\n 'scroll-mr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{\n 'scroll-mb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{\n 'scroll-ml': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{\n 'scroll-p': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{\n 'scroll-px': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{\n 'scroll-py': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{\n 'scroll-ps': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{\n 'scroll-pe': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{\n 'scroll-pt': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{\n 'scroll-pr': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{\n 'scroll-pb': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{\n 'scroll-pl': scaleUnambiguousSpacing()\n }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{\n snap: ['start', 'end', 'center', 'align-none']\n }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{\n snap: ['normal', 'always']\n }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{\n snap: ['none', 'x', 'y', 'both']\n }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{\n snap: ['mandatory', 'proximity']\n }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [{\n touch: ['auto', 'none', 'manipulation']\n }],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [{\n 'touch-pan': ['x', 'left', 'right']\n }],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [{\n 'touch-pan': ['y', 'up', 'down']\n }],\n /**\n * Touch Action Pinch Zoom\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-pz': ['touch-pinch-zoom'],\n /**\n * User Select\n * @see https://tailwindcss.com/docs/user-select\n */\n select: [{\n select: ['none', 'text', 'all', 'auto']\n }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [{\n 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryVariable, isArbitraryValue]\n }],\n // -----------\n // --- SVG ---\n // -----------\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{\n fill: ['none', ...scaleColor()]\n }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{\n stroke: [isNumber, isArbitraryVariableLength, isArbitraryLength, isArbitraryNumber]\n }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{\n stroke: ['none', ...scaleColor()]\n }],\n // ---------------------\n // --- Accessibility ---\n // ---------------------\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{\n 'forced-color-adjust': ['auto', 'none']\n }]\n },\n conflictingClassGroups: {\n overflow: ['overflow-x', 'overflow-y'],\n overscroll: ['overscroll-x', 'overscroll-y'],\n inset: ['inset-x', 'inset-y', 'start', 'end', 'top', 'right', 'bottom', 'left'],\n 'inset-x': ['right', 'left'],\n 'inset-y': ['top', 'bottom'],\n flex: ['basis', 'grow', 'shrink'],\n gap: ['gap-x', 'gap-y'],\n p: ['px', 'py', 'ps', 'pe', 'pt', 'pr', 'pb', 'pl'],\n px: ['pr', 'pl'],\n py: ['pt', 'pb'],\n m: ['mx', 'my', 'ms', 'me', 'mt', 'mr', 'mb', 'ml'],\n mx: ['mr', 'ml'],\n my: ['mt', 'mb'],\n size: ['w', 'h'],\n 'font-size': ['leading'],\n 'fvn-normal': ['fvn-ordinal', 'fvn-slashed-zero', 'fvn-figure', 'fvn-spacing', 'fvn-fraction'],\n 'fvn-ordinal': ['fvn-normal'],\n 'fvn-slashed-zero': ['fvn-normal'],\n 'fvn-figure': ['fvn-normal'],\n 'fvn-spacing': ['fvn-normal'],\n 'fvn-fraction': ['fvn-normal'],\n 'line-clamp': ['display', 'overflow'],\n rounded: ['rounded-s', 'rounded-e', 'rounded-t', 'rounded-r', 'rounded-b', 'rounded-l', 'rounded-ss', 'rounded-se', 'rounded-ee', 'rounded-es', 'rounded-tl', 'rounded-tr', 'rounded-br', 'rounded-bl'],\n 'rounded-s': ['rounded-ss', 'rounded-es'],\n 'rounded-e': ['rounded-se', 'rounded-ee'],\n 'rounded-t': ['rounded-tl', 'rounded-tr'],\n 'rounded-r': ['rounded-tr', 'rounded-br'],\n 'rounded-b': ['rounded-br', 'rounded-bl'],\n 'rounded-l': ['rounded-tl', 'rounded-bl'],\n 'border-spacing': ['border-spacing-x', 'border-spacing-y'],\n 'border-w': ['border-w-x', 'border-w-y', 'border-w-s', 'border-w-e', 'border-w-t', 'border-w-r', 'border-w-b', 'border-w-l'],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': ['border-color-x', 'border-color-y', 'border-color-s', 'border-color-e', 'border-color-t', 'border-color-r', 'border-color-b', 'border-color-l'],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n translate: ['translate-x', 'translate-y', 'translate-none'],\n 'translate-none': ['translate', 'translate-x', 'translate-y', 'translate-z'],\n 'scroll-m': ['scroll-mx', 'scroll-my', 'scroll-ms', 'scroll-me', 'scroll-mt', 'scroll-mr', 'scroll-mb', 'scroll-ml'],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': ['scroll-px', 'scroll-py', 'scroll-ps', 'scroll-pe', 'scroll-pt', 'scroll-pr', 'scroll-pb', 'scroll-pl'],\n 'scroll-px': ['scroll-pr', 'scroll-pl'],\n 'scroll-py': ['scroll-pt', 'scroll-pb'],\n touch: ['touch-x', 'touch-y', 'touch-pz'],\n 'touch-x': ['touch'],\n 'touch-y': ['touch'],\n 'touch-pz': ['touch']\n },\n conflictingClassGroupModifiers: {\n 'font-size': ['leading']\n },\n orderSensitiveModifiers: ['*', '**', 'after', 'backdrop', 'before', 'details-content', 'file', 'first-letter', 'first-line', 'marker', 'placeholder', 'selection']\n };\n};\n\n/**\n * @param baseConfig Config where other config will be merged into. This object will be mutated.\n * @param configExtension Partial config to merge into the `baseConfig`.\n */\nconst mergeConfigs = (baseConfig, {\n cacheSize,\n prefix,\n experimentalParseClassName,\n extend = {},\n override = {}\n}) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize);\n overrideProperty(baseConfig, 'prefix', prefix);\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);\n overrideConfigProperties(baseConfig.theme, override.theme);\n overrideConfigProperties(baseConfig.classGroups, override.classGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);\n overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);\n overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);\n mergeConfigProperties(baseConfig.theme, extend.theme);\n mergeConfigProperties(baseConfig.classGroups, extend.classGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);\n mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);\n mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');\n return baseConfig;\n};\nconst overrideProperty = (baseObject, overrideKey, overrideValue) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue;\n }\n};\nconst overrideConfigProperties = (baseObject, overrideObject) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key]);\n }\n }\n};\nconst mergeConfigProperties = (baseObject, mergeObject) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n mergeArrayProperties(baseObject, mergeObject, key);\n }\n }\n};\nconst mergeArrayProperties = (baseObject, mergeObject, key) => {\n const mergeValue = mergeObject[key];\n if (mergeValue !== undefined) {\n baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;\n }\n};\nconst extendTailwindMerge = (configExtension, ...createConfig) => typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(() => mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);\nconst twMerge = /*#__PURE__*/createTailwindMerge(getDefaultConfig);\nexport { createTailwindMerge, extendTailwindMerge, fromTheme, getDefaultConfig, mergeConfigs, twJoin, twMerge, validators };\n//# sourceMappingURL=bundle-mjs.mjs.map\n","import { clsx, type ClassValue } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n\nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n}\n","import { Loader2Icon } from \"lucide-react\"\n\nimport { cn } from \"@/lib/utils\"\n\nfunction Spinner({ className, ...props }: React.ComponentProps<\"svg\">) {\n return (\n <Loader2Icon\n role=\"status\"\n aria-label=\"Loading\"\n className={cn(\"size-4 animate-spin\", className)}\n {...props}\n />\n )\n}\n\nexport { Spinner }\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\nimport { Spinner } from \"../ui/spinner\";\n\ntype ProtectedAppProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n unauthorizedMessage?: string;\n};\n\nexport const ProtectedApp: React.FC<ProtectedAppProps> = ({\n children,\n unauthorizedMessage,\n requiredClientRoles,\n}) => {\n const {\n isInitialized,\n goToLogin,\n hasClientRole,\n redirectToHub,\n isAuthenticated,\n } = useAcademeAuth();\n\n if (!isInitialized) {\n return (\n <div className=\"flex w-screen h-screen items-center justify-center\">\n <Spinner className=\"size-10 text-violet-500\" />\n </div>\n );\n }\n\n if (!isAuthenticated()) {\n goToLogin();\n return <></>;\n }\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n redirectToHub(unauthorizedMessage || \"Unauthorized\");\n return <></>;\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n requiredRealmRoles?: string[];\n};\n\nexport const ProtectedComponent: React.FC<ProtectedRouterProps> = ({\n children,\n requiredRealmRoles,\n requiredClientRoles,\n}) => {\n const { hasClientRole, hasRealmRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <></>;\n }\n\n if (\n requiredRealmRoles &&\n !requiredRealmRoles?.some((role) => hasRealmRole(role))\n ) {\n return <></>;\n }\n\n return children;\n};\n","import { useAcademeAuth } from \"../../context/SecurityProvider\";\n\ntype ProtectedRouterProps = {\n children: React.ReactElement;\n requiredClientRoles?: string[];\n unauthorizedMessage?: string;\n};\n\nexport const ProtectedRouter: React.FC<ProtectedRouterProps> = ({\n children,\n requiredClientRoles,\n unauthorizedMessage,\n}) => {\n const { hasClientRole } = useAcademeAuth();\n\n if (\n requiredClientRoles &&\n !requiredClientRoles?.some((role) => hasClientRole(role))\n ) {\n return <h1>{unauthorizedMessage || \"unauthorized\"}</h1>;\n }\n\n return children;\n};\n"],"names":["_jsx","__assign","this","createContext","React","useContext","useState","useEffect","forwardRef","createElement","Loader2Icon"],"mappings":"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","x_google_ignoreList":[0,2,3,4,5,6,7,8,9,11,12,13,14,15,16]}
|