jean-react-utils 0.2.1 → 0.2.3

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.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"sources":["../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../src/index.ts","../src/components/Button/index.tsx","../../node_modules/clsx/dist/clsx.mjs","../../node_modules/class-variance-authority/dist/index.mjs","../../node_modules/tailwind-merge/src/lib/class-group-utils.ts","../../node_modules/tailwind-merge/src/lib/lru-cache.ts","../../node_modules/tailwind-merge/src/lib/parse-class-name.ts","../../node_modules/tailwind-merge/src/lib/config-utils.ts","../../node_modules/tailwind-merge/src/lib/merge-classlist.ts","../../node_modules/tailwind-merge/src/lib/tw-join.ts","../../node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../../node_modules/tailwind-merge/src/lib/from-theme.ts","../../node_modules/tailwind-merge/src/lib/validators.ts","../../node_modules/tailwind-merge/src/lib/default-config.ts","../../node_modules/tailwind-merge/src/lib/merge-configs.ts","../../node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../../node_modules/tailwind-merge/src/lib/tw-merge.ts","../src/theme/lib/utils.ts","../src/components/Heading/index.tsx","../src/layout/Header/index.tsx","../src/layout/Header/BreadIcon.tsx","../../node_modules/next-themes/dist/index.mjs","../src/theme/providers/theme-toggle.tsx","../src/layout/Footer/index.tsx","../src/layout/BasicLayout/index.tsx","../src/hooks/useForceRerender.ts","../../node_modules/@studio-freight/tempus/src/index.js","../../node_modules/just-debounce-it/index.mjs","../../node_modules/nanoevents/index.js","../../node_modules/@studio-freight/hamo/src/hooks/use-click-outside-event.js","../../node_modules/@studio-freight/hamo/src/hooks/use-is-client.js","../../node_modules/@studio-freight/hamo/src/hooks/use-debug.js","../../node_modules/@studio-freight/hamo/src/hooks/use-document-ready-state.js","../../node_modules/@studio-freight/hamo/src/hooks/use-frame/index.js","../../node_modules/@studio-freight/hamo/src/hooks/use-intersection-observer.js","../../node_modules/@studio-freight/hamo/src/hooks/use-interval.js","../../node_modules/@studio-freight/hamo/src/hooks/use-is-touch-device.js","../../node_modules/@studio-freight/hamo/src/hooks/use-media-query.js","../../node_modules/@studio-freight/hamo/src/hooks/use-rect/utils.js","../../node_modules/@studio-freight/hamo/src/hooks/use-rect/emitter.js","../../node_modules/@studio-freight/hamo/src/hooks/use-rect/index.js","../../node_modules/@studio-freight/hamo/src/hooks/use-resize-observer/index.js","../../node_modules/@studio-freight/hamo/src/hooks/use-slots.js","../../node_modules/@studio-freight/hamo/src/hooks/use-window-size/index.js","../../node_modules/@studio-freight/lenis/src/maths.js","../../node_modules/@studio-freight/lenis/src/animate.js","../../node_modules/@studio-freight/lenis/src/dimensions.js","../../node_modules/@studio-freight/lenis/src/debounce.js","../../node_modules/@studio-freight/lenis/src/emitter.js","../../node_modules/@studio-freight/lenis/src/virtual-scroll.js","../../node_modules/@studio-freight/src/index.ts","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/zustand/esm/index.mjs","../../node_modules/node_modules/tslib/tslib.es6.js","../../node_modules/@studio-freight/src/index.tsx","../src/providers/smooth-scroll-provider.tsx","../src/theme/providers/theme-provider.tsx"],"sourcesContent":["/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","export * from './components'\nexport * from './layout'\nexport { default as useForceRerender } from './hooks/useForceRerender'\nexport * from './providers'\nexport * from './theme'\n// export * from './hooks'\n// export * from './layout'\n// export * from './theme'\n// export * from './i18n'","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../../theme/lib/utils\"\n\n/**\n * 按钮变体样式配置\n * @private\n */\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n borderNone: \"border-none\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Button 组件的属性类型\n * @extends {React.ButtonHTMLAttributes<HTMLButtonElement>} 继承原生按钮属性\n */\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {}\n\n/**\n * 现代化的按钮组件,支持多种变体和尺寸。\n * \n * @component\n * @example\n * ```tsx\n * // 默认按钮\n * <Button>Click me</Button>\n * \n * // 带变体的按钮\n * <Button variant=\"destructive\" size=\"lg\">Delete</Button>\n * \n * // 图标按钮\n * <Button variant=\"ghost\" size=\"icon\">\n * <IconComponent />\n * </Button>\n * ```\n * \n * @param {ButtonProps} props - 组件属性\n * @param {string} [props.variant=\"default\"] - 按钮变体样式\n * - 'default' - 主要按钮\n * - 'destructive' - 危险操作按钮\n * - 'outline' - 轮廓按钮\n * - 'secondary' - 次要按钮\n * - 'ghost' - 幽灵按钮\n * - 'link' - 链接样式按钮\n * @param {string} [props.size=\"default\"] - 按钮尺寸\n * - 'default' - 默认大小\n * - 'sm' - 小型按钮\n * - 'lg' - 大型按钮\n * - 'icon' - 图标按钮\n * @param {string} [props.className] - 自定义类名\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, ...props }, ref) => {\n console.log('>>>>> button props >>> ', props)\n return (\n <button\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n\nexport default Button;","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;","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. 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, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[]\n classGroupId?: AnyClassGroupIds\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n const classParts = className.split(CLASS_PART_SEPARATOR)\n\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\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ) => {\n const conflicts = conflictingClassGroups[classGroupId] || []\n\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]!]\n }\n\n return conflicts\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[0]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n const classGroupFromNextClassPart = nextClassPartObject\n ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n : undefined\n\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart\n }\n\n if (classPartObject.validators.length === 0) {\n return undefined\n }\n\n const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nconst getGroupIdForArbitraryProperty = (className: string) => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n const property = arbitraryPropertyClassName?.substring(\n 0,\n arbitraryPropertyClassName.indexOf(':'),\n )\n\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/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n const { theme, prefix } = config\n const classMap: ClassPartObject = {\n nextPart: new Map<string, ClassPartObject>(),\n validators: [],\n }\n\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(\n Object.entries(config.classGroups),\n prefix,\n )\n\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme)\n })\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup<AnyThemeGroupIds>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n classGroup.forEach((classDefinition) => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n return\n }\n\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(\n classDefinition(theme),\n classPartObject,\n classGroupId,\n theme,\n )\n return\n }\n\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId,\n })\n\n return\n }\n\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(\n classGroup,\n getPart(classPartObject, key),\n classGroupId,\n theme,\n )\n })\n })\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string) => {\n let currentClassPartObject = classPartObject\n\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\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n })\n\n return currentClassPartObject\n}\n\nconst isThemeGetter = (func: ClassValidator | ThemeGetter): func is ThemeGetter =>\n (func as ThemeGetter).isThemeGetter\n\nconst getPrefixedClassGroupEntries = (\n classGroupEntries: Array<[classGroupId: string, classGroup: ClassGroup<AnyThemeGroupIds>]>,\n prefix: string | undefined,\n): Array<[classGroupId: string, classGroup: ClassGroup<AnyThemeGroupIds>]> => {\n if (!prefix) {\n return classGroupEntries\n }\n\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map((classDefinition) => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition\n }\n\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(\n Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]),\n )\n }\n\n return classDefinition\n })\n\n return [classGroupId, prefixedClassGroup]\n })\n}\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key, Value> {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\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\nexport const createLruCache = <Key, Value>(maxCacheSize: number): LruCache<Key, Value> => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache = new Map<Key, Value>()\n let previousCache = new Map<Key, Value>()\n\n const update = (key: Key, value: Value) => {\n cache.set(key, value)\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = new Map()\n }\n }\n\n return {\n get(key) {\n let value = cache.get(key)\n\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}\n","import { AnyConfig } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { separator, experimentalParseClassName } = config\n const isSeparatorSingleCharacter = separator.length === 1\n const firstSeparatorCharacter = separator[0]\n const separatorLength = separator.length\n\n // parseClassName inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n const parseClassName = (className: string) => {\n const modifiers = []\n\n let bracketDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index]\n\n if (bracketDepth === 0) {\n if (\n currentCharacter === firstSeparatorCharacter &&\n (isSeparatorSingleCharacter ||\n className.slice(index, index + separatorLength) === separator)\n ) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + separatorLength\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') {\n bracketDepth++\n } else if (currentCharacter === ']') {\n bracketDepth--\n }\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.substring(modifierStart)\n const hasImportantModifier =\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n const baseClassName = hasImportantModifier\n ? baseClassNameWithImportantModifier.substring(1)\n : baseClassNameWithImportantModifier\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n }\n }\n\n if (experimentalParseClassName) {\n return (className: string) => experimentalParseClassName({ className, parseClassName })\n }\n\n return parseClassName\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 */\nexport const sortModifiers = (modifiers: string[]) => {\n if (modifiers.length <= 1) {\n return modifiers\n }\n\n const sortedModifiers: string[] = []\n let unsortedModifiers: string[] = []\n\n modifiers.forEach((modifier) => {\n const isArbitraryVariant = modifier[0] === '['\n\n if (isArbitraryVariant) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier)\n unsortedModifiers = []\n } else {\n unsortedModifiers.push(modifier)\n }\n })\n\n sortedModifiers.push(...unsortedModifiers.sort())\n\n return sortedModifiers\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache<string, string>(config.cacheSize),\n parseClassName: createParseClassName(config),\n ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER, sortModifiers } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds } = configUtils\n\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: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const { modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } =\n parseClassName(originalClassName)\n\n let hasPostfixModifier = Boolean(maybePostfixModifierPosition)\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n const variantModifier = sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\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\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\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 */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport function twJoin(...classLists: ClassNameValue[]): string\nexport function twJoin() {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\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}\n\nconst toValue = (mix: ClassNameArray | string) => {\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createTailwindMerge(\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall = initTailwindMerge\n\n function initTailwindMerge(classList: string) {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n function tailwindMerge(classList: string) {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments as any))\n }\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>): ThemeGetter => {\n const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n theme[key] || []\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst stringLengths = new Set(['px', 'full', 'screen'])\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\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))\\(.+\\)$/\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 =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isLength = (value: string) =>\n isNumber(value) || stringLengths.has(value) || fractionRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, 'length', isLengthOnly)\n\nexport const isNumber = (value: string) => Boolean(value) && !Number.isNaN(Number(value))\n\nexport const isArbitraryNumber = (value: string) => getIsArbitraryValue(value, 'number', isNumber)\n\nexport const isInteger = (value: string) => Boolean(value) && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nconst sizeLabels = new Set(['length', 'size', 'percentage'])\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, sizeLabels, isNever)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, 'position', isNever)\n\nconst imageLabels = new Set(['image', 'url'])\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, imageLabels, isImage)\n\nexport const isArbitraryShadow = (value: string) => getIsArbitraryValue(value, '', isShadow)\n\nexport const isAny = () => true\n\nconst getIsArbitraryValue = (\n value: string,\n label: string | Set<string>,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return typeof label === 'string' ? result[1] === label : label.has(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst isLengthOnly = (value: string) =>\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.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isInteger,\n isLength,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n const colors = fromTheme('colors')\n const spacing = fromTheme('spacing')\n const blur = fromTheme('blur')\n const brightness = fromTheme('brightness')\n const borderColor = fromTheme('borderColor')\n const borderRadius = fromTheme('borderRadius')\n const borderSpacing = fromTheme('borderSpacing')\n const borderWidth = fromTheme('borderWidth')\n const contrast = fromTheme('contrast')\n const grayscale = fromTheme('grayscale')\n const hueRotate = fromTheme('hueRotate')\n const invert = fromTheme('invert')\n const gap = fromTheme('gap')\n const gradientColorStops = fromTheme('gradientColorStops')\n const gradientColorStopPositions = fromTheme('gradientColorStopPositions')\n const inset = fromTheme('inset')\n const margin = fromTheme('margin')\n const opacity = fromTheme('opacity')\n const padding = fromTheme('padding')\n const saturate = fromTheme('saturate')\n const scale = fromTheme('scale')\n const sepia = fromTheme('sepia')\n const skew = fromTheme('skew')\n const space = fromTheme('space')\n const translate = fromTheme('translate')\n\n const getOverscroll = () => ['auto', 'contain', 'none'] as const\n const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing] as const\n const getSpacingWithArbitrary = () => [isArbitraryValue, spacing] as const\n const getLengthWithEmptyAndArbitrary = () => ['', isLength, isArbitraryLength] as const\n const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue] as const\n const getPositions = () =>\n [\n 'bottom',\n 'center',\n 'left',\n 'left-bottom',\n 'left-top',\n 'right',\n 'right-bottom',\n 'right-top',\n 'top',\n ] as const\n const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'] as const\n const getBlendModes = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const getAlign = () =>\n ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'] as const\n const getZeroAndEmpty = () => ['', '0', isArbitraryValue] as const\n const getBreaks = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const getNumberAndArbitrary = () => [isNumber, isArbitraryValue]\n\n return {\n cacheSize: 500,\n separator: ':',\n theme: {\n colors: [isAny],\n spacing: [isLength, isArbitraryLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumberAndArbitrary(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmptyAndArbitrary(),\n contrast: getNumberAndArbitrary(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumberAndArbitrary(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumberAndArbitrary(),\n scale: getNumberAndArbitrary(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary(),\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{ aspect: ['auto', 'square', 'video', isArbitraryValue] }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{ columns: [isTshirtSize] }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': getBreaks() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': getBreaks() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\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': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: [...getPositions(), isArbitraryValue] }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: getOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': getOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': getOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: getOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': getOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': getOverscroll() }],\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: [{ inset: [inset] }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': [inset] }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': [inset] }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{ start: [inset] }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{ end: [inset] }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: [inset] }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: [inset] }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: [inset] }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: [inset] }],\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: [{ z: ['auto', isInteger, isArbitraryValue] }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{ basis: getSpacingWithAutoAndArbitrary() }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['wrap', 'wrap-reverse', 'nowrap'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: ['1', 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: getZeroAndEmpty() }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: getZeroAndEmpty() }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{ order: ['first', 'last', 'none', isInteger, isArbitraryValue] }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': [isAny] }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [\n {\n col: [\n 'auto',\n { span: ['full', isInteger, isArbitraryValue] },\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': [isAny] }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [\n { row: ['auto', { span: [isInteger, isArbitraryValue] }, isArbitraryValue] },\n ],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue] }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue] }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: [gap] }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': [gap] }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': [gap] }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: ['normal', ...getAlign()] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': ['start', 'end', 'center', 'stretch'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', 'start', 'end', 'center', 'stretch'] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...getAlign(), 'baseline'] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: ['start', 'end', 'center', 'baseline', 'stretch'] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{ self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline'] }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': [...getAlign(), 'baseline'] }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': ['start', 'end', 'center', 'baseline', 'stretch'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', 'start', 'end', 'center', 'stretch'] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: [padding] }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: [padding] }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: [padding] }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: [padding] }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: [padding] }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: [padding] }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: [padding] }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: [padding] }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: [padding] }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: [margin] }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: [margin] }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: [margin] }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: [margin] }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: [margin] }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: [margin] }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: [margin] }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: [margin] }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: [margin] }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{ 'space-x': [space] }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{ 'space-y': [space] }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [\n {\n w: [\n 'auto',\n 'min',\n 'max',\n 'fit',\n 'svw',\n 'lvw',\n 'dvw',\n isArbitraryValue,\n spacing,\n ],\n },\n ],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{ 'min-w': [isArbitraryValue, spacing, 'min', 'max', 'fit'] }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n isArbitraryValue,\n spacing,\n 'none',\n 'full',\n 'min',\n 'max',\n 'fit',\n 'prose',\n { screen: [isTshirtSize] },\n isTshirtSize,\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [\n {\n h: [\n isArbitraryValue,\n spacing,\n 'auto',\n 'min',\n 'max',\n 'fit',\n 'svh',\n 'lvh',\n 'dvh',\n ],\n },\n ],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [\n { 'min-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh'] },\n ],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [\n { 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh'] },\n ],\n /**\n * Size\n * @see https://tailwindcss.com/docs/size\n */\n size: [{ size: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit'] }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{ text: ['base', isTshirtSize, isArbitraryLength] }],\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 {\n font: [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{ font: [isAny] }],\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 {\n tracking: [\n 'tighter',\n 'tight',\n 'normal',\n 'wide',\n 'wider',\n 'widest',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{ 'line-clamp': ['none', isNumber, isArbitraryNumber] }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n 'none',\n 'tight',\n 'snug',\n 'normal',\n 'relaxed',\n 'loose',\n isLength,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryValue] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{ list: ['none', 'disc', 'decimal', isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: [colors] }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{ 'placeholder-opacity': [opacity] }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: [colors] }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{ 'text-opacity': [opacity] }],\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': [{ decoration: [...getLineStyles(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n { decoration: ['auto', 'from-font', isLength, isArbitraryLength] },\n ],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{ 'underline-offset': ['auto', isLength, isArbitraryValue] }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: [colors] }],\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': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: getSpacingWithArbitrary() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryValue,\n ],\n },\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: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryValue] }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{ 'bg-opacity': [opacity] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: [...getPositions(), isArbitraryPosition] }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: ['no-repeat', { repeat: ['', 'x', 'y', 'round', 'space'] }] }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: ['auto', 'cover', 'contain', isArbitrarySize] }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n { 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: [colors] }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: [gradientColorStops] }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: [gradientColorStops] }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: [gradientColorStops] }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: [borderRadius] }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': [borderRadius] }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': [borderRadius] }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': [borderRadius] }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': [borderRadius] }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': [borderRadius] }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': [borderRadius] }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': [borderRadius] }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': [borderRadius] }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': [borderRadius] }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': [borderRadius] }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': [borderRadius] }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': [borderRadius] }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': [borderRadius] }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': [borderRadius] }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: [borderWidth] }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': [borderWidth] }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': [borderWidth] }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': [borderWidth] }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': [borderWidth] }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': [borderWidth] }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': [borderWidth] }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': [borderWidth] }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': [borderWidth] }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{ 'border-opacity': [opacity] }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...getLineStyles(), 'hidden'] }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{ 'divide-x': [borderWidth] }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{ 'divide-y': [borderWidth] }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{ 'divide-opacity': [opacity] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{ divide: getLineStyles() }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: [borderColor] }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': [borderColor] }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': [borderColor] }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': [borderColor] }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': [borderColor] }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': [borderColor] }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': [borderColor] }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': [borderColor] }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': [borderColor] }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: [borderColor] }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: ['', ...getLineStyles()] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{ 'outline-offset': [isLength, isArbitraryValue] }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{ outline: [isLength, isArbitraryLength] }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: [colors] }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{ ring: getLengthWithEmptyAndArbitrary() }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{ ring: [colors] }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{ 'ring-opacity': [opacity] }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{ 'ring-offset': [isLength, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{ 'ring-offset': [colors] }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{ shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow] }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{ shadow: [isAny] }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [opacity] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...getBlendModes(), 'plus-lighter', 'plus-darker'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': getBlendModes() }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{ filter: ['', 'none'] }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: [blur] }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [brightness] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [contrast] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{ 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue] }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: [grayscale] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [hueRotate] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: [invert] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [saturate] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: [sepia] }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{ 'backdrop-filter': ['', 'none'] }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': [blur] }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{ 'backdrop-brightness': [brightness] }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{ 'backdrop-contrast': [contrast] }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{ 'backdrop-grayscale': [grayscale] }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{ 'backdrop-hue-rotate': [hueRotate] }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{ 'backdrop-invert': [invert] }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{ 'backdrop-opacity': [opacity] }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{ 'backdrop-saturate': [saturate] }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{ 'backdrop-sepia': [sepia] }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': [borderSpacing] }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': [borderSpacing] }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': [borderSpacing] }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n 'none',\n 'all',\n '',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: getNumberAndArbitrary() }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{ ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue] }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: getNumberAndArbitrary() }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue] }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{ transform: ['', 'gpu', 'none'] }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: [scale] }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': [scale] }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': [scale] }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: [isInteger, isArbitraryValue] }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': [translate] }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': [translate] }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': [skew] }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': [skew] }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [\n {\n origin: [\n 'center',\n 'top',\n 'top-right',\n 'right',\n 'bottom-right',\n 'bottom',\n 'bottom-left',\n 'left',\n 'top-left',\n isArbitraryValue,\n ],\n },\n ],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: ['auto', colors] }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: [colors] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['none', 'auto'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', 'y', 'x', ''] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': getSpacingWithArbitrary() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [\n {\n touch: ['auto', 'none', 'manipulation'],\n },\n ],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [\n {\n 'touch-pan': ['x', 'left', 'right'],\n },\n ],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [\n {\n 'touch-pan': ['y', 'up', 'down'],\n },\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: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n { 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue] },\n ],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: [colors, 'none'] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{ stroke: [isLength, isArbitraryLength, isArbitraryNumber] }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: [colors, 'none'] }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\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': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\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: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\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': [\n 'border-w-s',\n 'border-w-e',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-s',\n 'border-color-e',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\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 } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { AnyConfig, ConfigExtension } from './types'\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 */\nexport const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(\n baseConfig: AnyConfig,\n {\n cacheSize,\n prefix,\n separator,\n experimentalParseClassName,\n extend = {},\n override = {},\n }: ConfigExtension<ClassGroupIds, ThemeGroupIds>,\n) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize)\n overrideProperty(baseConfig, 'prefix', prefix)\n overrideProperty(baseConfig, 'separator', separator)\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n for (const configKey in override) {\n overrideConfigProperties(\n baseConfig[configKey as keyof typeof override],\n override[configKey as keyof typeof override],\n )\n }\n\n for (const key in extend) {\n mergeConfigProperties(\n baseConfig[key as keyof typeof extend],\n extend[key as keyof typeof extend],\n )\n }\n\n return baseConfig\n}\n\nconst overrideProperty = <T extends object, K extends keyof T>(\n baseObject: T,\n overrideKey: K,\n overrideValue: T[K] | undefined,\n) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue\n }\n}\n\nconst overrideConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key])\n }\n }\n}\n\nconst mergeConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n const mergeValue = mergeObject[key]\n\n if (mergeValue !== undefined) {\n baseObject[key] = (baseObject[key] || []).concat(mergeValue)\n }\n }\n }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n AdditionalClassGroupIds extends string = never,\n AdditionalThemeGroupIds extends string = never,\n>(\n configExtension:\n | ConfigExtension<\n DefaultClassGroupIds | AdditionalClassGroupIds,\n DefaultThemeGroupIds | AdditionalThemeGroupIds\n >\n | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) =>\n typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n \nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n} ","'use client';\n\nimport { motion } from 'framer-motion';\nimport { ReactNode } from 'react';\n\n/**\n * Heading 组件的通用属性类型\n */\nexport interface HeadingProps {\n /** 子元素内容 */\n children?: ReactNode;\n /** 自定义类名 */\n className?: string;\n /** 标题文本,可以替代 children */\n title?: string;\n}\n\n/**\n * 页面主标题组件,带有渐变色效果和动画\n * \n * @component\n * @example\n * ```tsx\n * <PageTitle>Welcome to My Site</PageTitle>\n * \n * // 使用 title 属性\n * <PageTitle title=\"Welcome\" className=\"my-8\" />\n * ```\n */\nexport function PageTitle({ children, title, className = '' }: HeadingProps) {\n return (\n <motion.h1\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8 }}\n className={`text-4xl md:text-5xl font-bold mb-6 bg-gradient-to-r from-purple-600 to-pink-500 bg-clip-text text-transparent ${className}`}\n >\n {title || children}\n </motion.h1>\n );\n}\n\n/**\n * 区块标题组件,用于页面主要区块的标题\n * \n * @component\n * @example\n * ```tsx\n * <SectionTitle>Featured Products</SectionTitle>\n * \n * // 自定义样式\n * <SectionTitle className=\"mb-8\">Our Services</SectionTitle>\n * ```\n */\nexport function SectionTitle({ children, title, className = '' }: HeadingProps) {\n return (\n <motion.h2\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8, delay: 0.2 }}\n className={`text-3xl font-bold text-center mb-16 bg-gradient-to-r from-purple-600 to-pink-500 bg-clip-text text-transparent ${className}`}\n >\n {title || children}\n </motion.h2>\n );\n}\n\n/**\n * 卡片标题组件,用于卡片或小区块的标题\n * \n * @component\n * @example\n * ```tsx\n * <CardTitle>Product Features</CardTitle>\n * \n * // 在卡片中使用\n * <Card>\n * <CardTitle>Premium Plan</CardTitle>\n * <CardContent>...</CardContent>\n * </Card>\n * ```\n */\nexport function CardTitle({ children, title, className = '' }: HeadingProps) {\n return (\n <motion.h3\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.5 }}\n className={`text-2xl font-bold text-gray-800 ${className}`}\n >\n {title || children}\n </motion.h3>\n );\n}\n\n/**\n * 子标题组件,用于次级内容的标题\n * \n * @component\n * @example\n * font-semibold: font-weight: 600;\n * text-lg: font-size: 1.125rem;\n * ```tsx\n * <SubTitle>Technical Details</SubTitle>\n * \n * // 在列表中使用\n * <div>\n * <SubTitle>Specifications</SubTitle>\n * <ul>...</ul>\n * </div>\n * ```\n */\nexport function SubTitle({ children, title, className = '' }: HeadingProps) {\n return (\n <motion.h4\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.5 }}\n className={`text-lg font-semibold ${className}`}\n >\n {title || children}\n </motion.h4>\n );\n}\n\nexport default {\n PageTitle,\n SectionTitle,\n CardTitle,\n SubTitle,\n}","'use client';\nimport React, { useState } from 'react';\nimport Link from 'next/link';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport BreadIcon from './BreadIcon';\nimport { usePathname } from 'next/navigation';\nimport { ThemeToggle } from '../../theme/providers/theme-toggle';\n\n/**\n * 导航项接口\n * @interface NavItem\n */\nexport interface NavItem {\n /** 导航项唯一标识 */\n key: string;\n /** 导航链接地址 */\n href: string;\n label: string;\n /** 自定义样式类名 */\n className?: {\n /** PC端样式 */\n pc?: string;\n /** 移动端样式 */\n mobile?: string;\n };\n}\n\nexport interface HeaderTheme {\n activeClassName?: string;\n mobileMenu?: {\n button?: string;\n nav?: string;\n };\n}\n\nexport interface HeaderProps {\n /** Logo 组件 */\n logo: React.ReactNode;\n /** 导航菜单项 */\n menuItems: NavItem[];\n /** 自定义样式类名 */\n className?: string;\n /** 是否启用动画效果 */\n enableAnimation?: boolean;\n theme?: HeaderTheme;\n}\n\nconst getActivedCls = (href: string, selectedKey: string, activeClassName: string = 'text-primary') => {\n if(href.includes(selectedKey) || (href === '/' && selectedKey === 'home')) {\n return activeClassName;\n }\n return '';\n}\n\nexport const Header: React.FC<HeaderProps> = ({\n logo,\n menuItems,\n className = '',\n enableAnimation = true,\n theme = {}\n}) => {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const selectedKey = usePathname().split('/')[2] || 'home';\n const baseNavClassName = `fixed top-0 left-0 right-0 z-50 backdrop-blur-lg ${className}`;\n\n const navVariants = {\n hidden: { y: -20, opacity: 0 },\n visible: { \n y: 0, \n opacity: 1,\n transition: {\n duration: 0.5,\n ease: \"easeOut\"\n }\n }\n };\n\n const HeaderWrapper = enableAnimation ? motion.header : 'header';\n return (\n <HeaderWrapper \n className={baseNavClassName}\n {...(enableAnimation && {\n initial: \"hidden\",\n animate: \"visible\",\n variants: navVariants\n })}\n >\n <div className='container flex items-center justify-between p-4'>\n {logo}\n\n <DesktopNav \n menuItems={menuItems} \n selectedKey={selectedKey} \n enableAnimation={enableAnimation}\n activeClassName={theme.activeClassName}\n />\n <MobileMenuBtn \n menuItems={menuItems} \n selectedKey={selectedKey} \n setIsMenuOpen={setIsMenuOpen} \n isMenuOpen={isMenuOpen}\n className={theme.mobileMenu?.button}\n />\n </div>\n <AnimatePresence>\n {isMenuOpen && (\n <MobileNav \n menuItems={menuItems} \n selectedKey={selectedKey} \n enableAnimation={enableAnimation}\n className={theme.mobileMenu?.nav}\n activeClassName={theme.activeClassName}\n />\n )}\n </AnimatePresence>\n </HeaderWrapper>\n );\n}; \n\nconst DesktopNav = ({ \n menuItems, \n selectedKey, \n enableAnimation,\n activeClassName \n}: { \n menuItems: NavItem[], \n selectedKey: string, \n enableAnimation: boolean,\n activeClassName?: string \n}) => {\n return (\n <nav className='hidden md:flex items-center space-x-8'>\n <ThemeToggle/>\n {menuItems.map((item) => (\n <NavLink \n key={item.key} \n href={item.href} \n selectedKey={selectedKey} \n className={item.className?.pc}\n activeClassName={activeClassName}\n >\n {item.label}\n </NavLink>\n ))}\n </nav>\n )\n}\n\nconst MobileNav = ({ \n menuItems, \n selectedKey, \n enableAnimation,\n className,\n activeClassName \n}: { \n menuItems: NavItem[], \n selectedKey: string, \n enableAnimation: boolean,\n className?: string,\n activeClassName?: string \n}) => {\n const MobileMenuComponent = enableAnimation ? motion.div : 'div';\n const mobileMenuVariants = {\n hidden: { \n height: 0,\n opacity: 0,\n transition: {\n duration: 0.3,\n ease: \"easeInOut\"\n }\n },\n visible: { \n height: \"auto\",\n opacity: 1,\n transition: {\n duration: 0.3,\n ease: \"easeInOut\"\n }\n }\n };\n return (\n <MobileMenuComponent \n className={`md:hidden overflow-hidden ${className || ''}`}\n {...(enableAnimation && {\n initial: \"hidden\",\n animate: \"visible\",\n exit: \"hidden\",\n variants: mobileMenuVariants\n })}\n >\n <nav className='flex flex-col space-y-4 py-4 items-center'>\n <ThemeToggle/>\n {menuItems.map((item) => (\n <MobileMenuComponent key={item.key} {...(enableAnimation && {\n initial: { x: -20, opacity: 0 },\n animate: { x: 0, opacity: 1 },\n transition: { delay: 0.1 }\n })}>\n <MobileNavLink \n href={item.href} \n selectedKey={selectedKey} \n className={item.className?.mobile}\n activeClassName={activeClassName}\n >\n {item.label}\n </MobileNavLink>\n </MobileMenuComponent>\n ))}\n </nav>\n </MobileMenuComponent>\n )\n}\n\nconst MobileMenuBtn = ({ \n setIsMenuOpen, \n isMenuOpen,\n className = 'p-2 hover:bg-accent rounded-lg transition-colors'\n}: { \n menuItems: NavItem[], \n selectedKey: string, \n setIsMenuOpen: (isMenuOpen: boolean) => void, \n isMenuOpen: boolean,\n className?: string\n}) => {\n return (\n <button \n onClick={() => setIsMenuOpen(!isMenuOpen)}\n className={`md:hidden ${className}`}\n >\n <BreadIcon isMenuOpen={isMenuOpen}/>\n </button>\n )\n}\n\nconst NavLink = ({ \n href, \n children, \n className, \n selectedKey,\n activeClassName \n}: { \n href: string; \n children: React.ReactNode, \n className?: string, \n selectedKey: string,\n activeClassName?: string\n}) => {\n const combinedClassName = `${className || 'hover:text-foreground transition-colors'} ${getActivedCls(href, selectedKey, activeClassName)}`;\n return (\n <Link href={href} legacyBehavior>\n <a className={combinedClassName}>{children}</a>\n </Link>\n );\n};\n\nconst MobileNavLink = ({ \n href, \n children, \n className, \n selectedKey,\n activeClassName \n}: { \n href: string; \n children: React.ReactNode, \n className?: string, \n selectedKey: string,\n activeClassName?: string\n}) => {\n const combinedClassName = `${className || 'text-lg font-medium text-center hover:text-primary transition-colors'} ${getActivedCls(href, selectedKey, activeClassName)}`;\n return (\n <Link href={href} legacyBehavior>\n <a className={combinedClassName}>{children}</a>\n </Link>\n );\n};\n\nexport default Header;","const commonCls= 'w-full h-0.5 bg-primary duration-300'\nconst spanDefaultCls= `${commonCls} transition-transform`\nconst spanOpacityCls= `${commonCls} transition-opacity`\n\nexport default function BreadIcon({isMenuOpen}: {isMenuOpen: boolean}) {\n return (\n <div className=\"w-6 h-5 relative flex flex-col justify-between\">\n <span className={`${spanDefaultCls} ${isMenuOpen ? 'rotate-45 translate-y-2' : ''}`} />\n <span className={`${spanOpacityCls} ${isMenuOpen ? 'opacity-0' : ''}`} />\n <span className={`${spanDefaultCls} ${isMenuOpen ? '-rotate-45 -translate-y-2' : ''}`} />\n </div>\n )\n}","\"use client\";import*as t from\"react\";var M=(e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=[\"light\",\"dark\"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y===\"class\",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n===\"system\"?c():n;p(y)}catch(n){}};var b=[\"light\",\"dark\"],I=\"(prefers-color-scheme: dark)\",O=typeof window==\"undefined\",x=t.createContext(void 0),U={setTheme:e=>{},themes:[]},z=()=>{var e;return(e=t.useContext(x))!=null?e:U},J=e=>t.useContext(x)?t.createElement(t.Fragment,null,e.children):t.createElement(V,{...e}),N=[\"light\",\"dark\"],V=({forcedTheme:e,disableTransitionOnChange:i=!1,enableSystem:s=!0,enableColorScheme:u=!0,storageKey:m=\"theme\",themes:a=N,defaultTheme:l=s?\"system\":\"light\",attribute:h=\"data-theme\",value:d,children:w,nonce:p,scriptProps:R})=>{let[c,n]=t.useState(()=>H(m,l)),[T,y]=t.useState(()=>c===\"system\"?E():c),k=d?Object.values(d):a,S=t.useCallback(o=>{let r=o;if(!r)return;o===\"system\"&&s&&(r=E());let v=d?d[r]:r,C=i?W(p):null,P=document.documentElement,L=g=>{g===\"class\"?(P.classList.remove(...k),v&&P.classList.add(v)):g.startsWith(\"data-\")&&(v?P.setAttribute(g,v):P.removeAttribute(g))};if(Array.isArray(h)?h.forEach(L):L(h),u){let g=b.includes(l)?l:null,D=b.includes(r)?r:g;P.style.colorScheme=D}C==null||C()},[p]),f=t.useCallback(o=>{let r=typeof o==\"function\"?o(c):o;n(r);try{localStorage.setItem(m,r)}catch(v){}},[c]),A=t.useCallback(o=>{let r=E(o);y(r),c===\"system\"&&s&&!e&&S(\"system\")},[c,e]);t.useEffect(()=>{let o=window.matchMedia(I);return o.addListener(A),A(o),()=>o.removeListener(A)},[A]),t.useEffect(()=>{let o=r=>{r.key===m&&(r.newValue?n(r.newValue):f(l))};return window.addEventListener(\"storage\",o),()=>window.removeEventListener(\"storage\",o)},[f]),t.useEffect(()=>{S(e!=null?e:c)},[e,c]);let Q=t.useMemo(()=>({theme:c,setTheme:f,forcedTheme:e,resolvedTheme:c===\"system\"?T:c,themes:s?[...a,\"system\"]:a,systemTheme:s?T:void 0}),[c,f,e,T,s,a]);return t.createElement(x.Provider,{value:Q},t.createElement(_,{forcedTheme:e,storageKey:m,attribute:h,enableSystem:s,enableColorScheme:u,defaultTheme:l,value:d,themes:a,nonce:p,scriptProps:R}),w)},_=t.memo(({forcedTheme:e,storageKey:i,attribute:s,enableSystem:u,enableColorScheme:m,defaultTheme:a,value:l,themes:h,nonce:d,scriptProps:w})=>{let p=JSON.stringify([s,i,a,e,h,l,u,m]).slice(1,-1);return t.createElement(\"script\",{...w,suppressHydrationWarning:!0,nonce:typeof window==\"undefined\"?d:\"\",dangerouslySetInnerHTML:{__html:`(${M.toString()})(${p})`}})}),H=(e,i)=>{if(O)return;let s;try{s=localStorage.getItem(e)||void 0}catch(u){}return s||i},W=e=>{let i=document.createElement(\"style\");return e&&i.setAttribute(\"nonce\",e),i.appendChild(document.createTextNode(\"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\")),document.head.appendChild(i),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(i)},1)}},E=e=>(e||(e=window.matchMedia(I)),e.matches?\"dark\":\"light\");export{J as ThemeProvider,z as useTheme};\n","'use client'\n\nimport * as React from 'react'\nimport { useTheme } from 'next-themes'\nimport { Button } from '../../components/Button'\nimport { Moon, Sun } from 'lucide-react'\n\nexport function ThemeToggle() {\n const { theme, setTheme } = useTheme()\n\n return (\n <Button\n variant=\"borderNone\"\n size=\"icon\"\n onClick={() => setTheme(theme === 'light' ? 'dark' : 'light')}\n >\n <Sun className=\"h-5 w-5 rotate-0 scale-100 transition-all dark:rotate-90 dark:scale-0\" />\n <Moon className=\"absolute h-5 w-5 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n <span className=\"sr-only\">Toggle theme</span>\n </Button>\n )\n}\n\nexport default ThemeToggle;","'use client';\nimport React from 'react';\nimport Link from 'next/link';\n\nexport interface FooterLink {\n href: string;\n title: string;\n}\n\nexport interface FooterTexts {\n copyright: string;\n privacy: string;\n terms: string;\n social: string;\n}\n\nexport interface FooterProps {\n /** 網站基本信息 */\n site: {\n name: string;\n description: string;\n };\n /** 導航鏈接 */\n navigation: {\n /** 快速鏈接區塊 */\n quickLinks: {\n title: string;\n items: FooterLink[];\n };\n /** 社交媒體鏈接 */\n socialLinks: FooterLink[];\n };\n /** 頁腳文本 */\n texts: FooterTexts;\n /** 自定義類名 */\n className?: string;\n}\n\nexport const Footer: React.FC<FooterProps> = ({\n site,\n navigation,\n texts,\n className = '',\n}) => {\n return (\n <footer className={`relative bg-gradient-to-b from-gray-50 to-gray-100 pt-16 pb-6 ${className}`}>\n <div className=\"absolute inset-0 bg-grid-gray-200/25 [mask-image:linear-gradient(0deg,white,rgba(255,255,255,0.6))]\" />\n \n <div className=\"container mx-auto p-4 relative\">\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-8 mb-12\">\n {/* Brand Section */}\n <div className=\"space-y-4\">\n <h3 className=\"text-xl font-bold bg-gradient-to-r from-purple-600 to-pink-500 bg-clip-text text-transparent\">\n {site.name}\n </h3>\n <p className=\"text-gray-600 max-w-xs hover-text-foreground\">\n {site.description}\n </p>\n </div>\n\n {/* Quick Links */}\n <div className=\"space-y-4 \">\n <h4 className=\"text-sm font-semibold uppercase text-foreground\">\n {navigation.quickLinks.title}\n </h4>\n <nav className=\"flex flex-col space-y-2\">\n {navigation.quickLinks.items.map((item) => (\n <Link\n key={item.href}\n href={item.href}\n className=\"text-gray-600 hover:text-purple-600 transition-colors\"\n >\n {item.title}\n </Link>\n ))}\n </nav>\n </div>\n\n {/* Social Links */}\n <div className=\"space-y-4\">\n <h4 className=\"text-sm font-semibold uppercase text-foreground\">\n {texts.social}\n </h4>\n <div className=\"flex space-x-4\">\n {navigation.socialLinks.map((link) => (\n <a\n key={link.href}\n href={link.href}\n className=\"text-gray-600 hover:text-purple-600 transition-colors\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {link.title}\n </a>\n ))}\n </div>\n </div>\n </div>\n\n {/* Bottom Bar: copyright, privacy and terms */}\n <div className=\"border-t pt-4\">\n <div className=\"flex flex-col md:flex-row justify-between items-center space-y-4 md:space-y-0\">\n <p className=\"text-sm text-gray-600\">\n {texts.copyright}\n </p>\n <div className=\"flex space-x-6\">\n <Link href=\"/privacy\" className=\"text-sm px-8 text-gray-600 hover:text-purple-600 transition-colors\">\n {texts.privacy}\n </Link>\n <Link href=\"/terms\" className=\"text-sm px-8 text-gray-600 hover:text-purple-600 transition-colors\">\n {texts.terms}\n </Link>\n </div>\n </div>\n </div>\n </div>\n\n {/* Decorative gradient line */}\n {/* <div className=\"absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-purple-600 via-pink-500 to-purple-600\" /> */}\n \n </footer>\n );\n}; \n\nexport default Footer;","\nimport type { Metadata, Viewport } from \"next\"\n\n/**\n * 基础布局组件的属性接口\n * @interface BaseLayoutProps\n */\nexport interface BaseLayoutProps {\n /** 子元素内容 */\n children: React.ReactNode,\n /** Next.js viewport 配置 */\n viewport?: Viewport,\n /** Next.js metadata 配置 */\n metadata?: Metadata,\n}\n\n/**\n * 基础布局组件,提供页面的基本结构\n * \n * @component\n * @example\n * ```tsx\n * <BasicLayout>\n * <main>\n * <h1>Welcome</h1>\n * <p>Content goes here</p>\n * </main>\n * </BasicLayout>\n * ```\n * \n * @example\n * ```tsx\n * // 带有 metadata 的使用示例\n * <BasicLayout\n * metadata={{\n * title: 'My Page',\n * description: 'Page description'\n * }}\n * >\n * <div>Content</div>\n * </BasicLayout>\n * ```\n */\nexport default function BasicLayout({ children }: { children: React.ReactNode }):JSX.Element {\n return (\n <div>\n {children}\n </div>\n )\n}\n","'use client'\nimport { useState, useCallback } from 'react';\n\nconst useForceRerender = (): [number, () => void] => {\n const [key, setKey] = useState(0);\n\n const forceRerender = useCallback(() => {\n setKey(prevKey => prevKey + 1);\n }, []);\n\n return [key, forceRerender];\n};\n\nexport default useForceRerender;","class Tempus {\r\n constructor() {\r\n this.callbacks = []\r\n this.now = performance.now()\r\n requestAnimationFrame(this.raf)\r\n }\r\n\r\n add(callback, priority = 0) {\r\n this.callbacks.push({ callback, priority })\r\n this.callbacks.sort((a, b) => a.priority - b.priority)\r\n\r\n return () => this.remove(callback)\r\n }\r\n\r\n remove(callback) {\r\n this.callbacks = this.callbacks.filter(({ callback: cb }) => callback !== cb)\r\n }\r\n\r\n raf = (now) => {\r\n requestAnimationFrame(this.raf)\r\n\r\n const deltaTime = now - this.now\r\n this.now = now\r\n\r\n for (let i = 0; i < this.callbacks.length; i++) {\r\n this.callbacks[i].callback(now, deltaTime)\r\n }\r\n }\r\n}\r\n\r\nconst isClient = typeof window !== 'undefined'\r\n\r\nexport default isClient && new Tempus()\r\n","var functionDebounce = debounce;\n\nfunction debounce(fn, wait, callFirst) {\n var timeout = null;\n var debouncedFn = null;\n\n var clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n\n debouncedFn = null;\n timeout = null;\n }\n };\n\n var flush = function() {\n var call = debouncedFn;\n clear();\n\n if (call) {\n call();\n }\n };\n\n var debounceWrapper = function() {\n if (!wait) {\n return fn.apply(this, arguments);\n }\n\n var context = this;\n var args = arguments;\n var callNow = callFirst && !timeout;\n clear();\n\n debouncedFn = function() {\n fn.apply(context, args);\n };\n\n timeout = setTimeout(function() {\n timeout = null;\n\n if (!callNow) {\n var call = debouncedFn;\n debouncedFn = null;\n\n return call();\n }\n }, wait);\n\n if (callNow) {\n return debouncedFn();\n }\n };\n\n debounceWrapper.cancel = clear;\n debounceWrapper.flush = flush;\n\n return debounceWrapper;\n}\n\nexport {functionDebounce as default};\n","export let createNanoEvents = () => ({\n emit(event, ...args) {\n for (\n let callbacks = this.events[event] || [],\n i = 0,\n length = callbacks.length;\n i < length;\n i++\n ) {\n callbacks[i](...args)\n }\n },\n events: {},\n on(event, cb) {\n ;(this.events[event] ||= []).push(cb)\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n","/**\r\n * useOutsideClickEvent - custom hook that listens for clicks outside of a component\r\n * @param {Object} ref - React ref for the element to listen for clicks outside of\r\n * @param {Function} callback - callback function to call when a click outside of the element is detected\r\n */\r\n\r\nimport { useCallback, useEffect } from 'react'\r\n\r\nexport function useOutsideClickEvent(ref, callback) {\r\n const handleClickOutside = useCallback(\r\n (event) => {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n callback()\r\n }\r\n },\r\n [ref, callback]\r\n )\r\n\r\n useEffect(() => {\r\n if (ref.current) {\r\n document.addEventListener('mousedown', handleClickOutside)\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside)\r\n }\r\n }\r\n }, [handleClickOutside, ref])\r\n}\r\n","// This component is used to check if the window object is present.\r\nimport { useEffect, useState } from 'react'\r\n\r\nexport function useIsClient() {\r\n const [isClient, setClient] = useState(false)\r\n\r\n useEffect(() => {\r\n setClient(true)\r\n }, [])\r\n\r\n return isClient\r\n}\r\n","import { useMemo } from 'react'\r\nimport { useIsClient } from './use-is-client'\r\n\r\nexport function useDebug() {\r\n const isClient = useIsClient()\r\n\r\n const debug = useMemo(() => {\r\n if (!isClient) return undefined\r\n\r\n const location = window.location\r\n const search = location.search\r\n const href = location.href\r\n const searchParams = new URLSearchParams(search)\r\n\r\n const isDebug =\r\n href.includes('#debug') || // localhost:3000/#debug\r\n href.includes('/_debug') || // localhost:3000/_debug\r\n searchParams.has('debug') || // localhost:3000/?debug\r\n // eslint-disable-next-line no-undef\r\n process.env.NODE_ENV === 'development' // localhost:3000\r\n\r\n const isProduction =\r\n href.includes('#production') || // localhost:3000/#production\r\n searchParams.has('production') // localhost:3000/?production\r\n\r\n return isDebug && !isProduction\r\n }, [isClient])\r\n\r\n return debug\r\n}\r\n","// useDocumentReadyState.js\r\n// This code is a custom hook that returns the current document.readyState\r\n// The useLayoutEffect hook is used to set the state of the document\r\n// The useEffect hook is used to set the state of the document to 'complete' when the document is ready\r\n\r\nimport { useEffect, useState } from 'react'\r\n\r\n/**\r\n * @name useDocumentReadyState\r\n * @description A React hook that listen to document.readyState.\r\n * @returns {string} document.readyState\r\n */\r\n\r\nexport function useDocumentReadyState() {\r\n const [readyState, setReadyState] = useState()\r\n\r\n useEffect(() => {\r\n function onStateChange() {\r\n setReadyState(document.readyState)\r\n }\r\n\r\n document.addEventListener('readystatechange', onStateChange, false)\r\n onStateChange()\r\n\r\n return () => document.removeEventListener('readystatechange', onStateChange, false)\r\n }, [])\r\n\r\n return readyState\r\n}\r\n","/**\r\n * Creates a requestAnimationFrame loop and manages the lifecycle of the callback.\r\n * @param {Function} callback - A function that is called every frame.\r\n * @param {Number} priority - A number that determines the order in which the callback is called.\r\n */\r\n\r\nimport Tempus from '@studio-freight/tempus'\r\nimport { useEffect } from 'react'\r\n\r\nexport function useFrame(callback, priority = 0) {\r\n useEffect(() => {\r\n if (callback) {\r\n Tempus.add(callback, priority)\r\n\r\n return () => Tempus.remove(callback)\r\n }\r\n }, [callback, priority])\r\n}\r\n","import { useCallback, useEffect, useRef, useState } from 'react'\r\n\r\n/**\r\n * @name useIntersectionObserver\r\n * @description A React hook that oberves element visibility using IntersectionObserver.\r\n * @param {HTMLElement} root\r\n * @param {string} rootMargin\r\n * @param {number} threshold\r\n * @param {boolean} once\r\n * @param {boolean} lazy\r\n * @param {function} callback\r\n * @param {array} deps\r\n * @returns {array} [setElement, entry]\r\n */\r\n\r\nexport function useIntersectionObserver(\r\n { root = null, rootMargin = '0px', threshold = 0, once = false, lazy = false, callback = () => {} } = {},\r\n deps = []\r\n) {\r\n const entryRef = useRef({})\r\n const [entry, setEntry] = useState({})\r\n const [element, setElement] = useState()\r\n\r\n useEffect(() => {\r\n if (!element) return\r\n\r\n const intersection = new IntersectionObserver(\r\n ([entry]) => {\r\n if (lazy) {\r\n entryRef.current = entry\r\n } else {\r\n setEntry(entry)\r\n }\r\n\r\n callback(entry)\r\n\r\n if (once && entry.isIntersecting) intersection.disconnect()\r\n },\r\n {\r\n root,\r\n rootMargin,\r\n threshold,\r\n }\r\n )\r\n intersection.observe(element)\r\n\r\n return () => {\r\n intersection.disconnect()\r\n }\r\n }, [element, root, rootMargin, threshold, lazy, once, ...deps])\r\n\r\n const get = useCallback(() => entryRef.current, [])\r\n\r\n return [setElement, lazy ? get : entry]\r\n}\r\n","/**\r\n * This function allows you to set an interval in a functional component\r\n * @param {function} callback - The callback function\r\n * @param {number} delay - The delay between each interval\r\n */\r\n\r\nimport { useEffect } from 'react'\r\n\r\nexport function useInterval(callback, delay = 1000, deps = []) {\r\n useEffect(() => {\r\n const interval = setInterval(callback, delay)\r\n return () => clearInterval(interval)\r\n }, [delay, ...deps])\r\n}\r\n","/*\r\n This hook checks if the device has a touch screen. It checks for the touchstart event,\r\n as well as the maxTouchPoints property on the navigator object. It also checks the\r\n msMaxTouchPoints property, which is specific to Microsoft browsers.\r\n*/\r\n\r\nimport { useEffect, useState } from 'react'\r\n\r\n/**\r\n * @name useIsTouchDevice\r\n * @description A React hook that detects if the device supports touch.\r\n * @returns {boolean} Whether the device supports touch or not.\r\n */\r\n\r\nexport function useIsTouchDevice() {\r\n const [isTouchDevice, setIsTouchDevice] = useState()\r\n\r\n useEffect(() => {\r\n function onResize() {\r\n setIsTouchDevice('ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0)\r\n }\r\n\r\n window.addEventListener('resize', onResize, false)\r\n onResize()\r\n\r\n return () => {\r\n window.removeEventListener('resize', onResize, false)\r\n }\r\n }, [])\r\n\r\n return isTouchDevice\r\n}\r\n","import { useEffect, useState } from 'react'\r\n\r\n/**\r\n * @name useMediaQuery\r\n * @description A React hook that detects whether a media query is true or false.\r\n * @param {string} queryString The media query to test against.\r\n * @returns {boolean} Whether the media query is true or false.\r\n */\r\n\r\nexport function useMediaQuery(queryString) {\r\n const [isMatch, setIsMatch] = useState()\r\n\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia(queryString)\r\n\r\n function onChange() {\r\n setIsMatch(mediaQuery.matches)\r\n }\r\n\r\n mediaQuery.addEventListener('change', onChange, false)\r\n onChange()\r\n\r\n return () => mediaQuery.removeEventListener('change', onChange, false)\r\n }, [queryString])\r\n\r\n return isMatch\r\n}\r\n","export function removeParentSticky(element) {\r\n const position = getComputedStyle(element).position\r\n\r\n const isSticky = position === 'sticky'\r\n\r\n if (isSticky) {\r\n element.style.setProperty('position', 'static')\r\n element.dataset.sticky = 'true'\r\n }\r\n\r\n if (element.offsetParent) {\r\n removeParentSticky(element.offsetParent)\r\n }\r\n}\r\n\r\nexport function addParentSticky(element) {\r\n if (element?.dataset?.sticky === 'true') {\r\n element.style.removeProperty('position')\r\n element.dataset.sticky = 'true'\r\n delete element.dataset.sticky\r\n }\r\n\r\n if (element.parentNode) {\r\n addParentSticky(element.parentNode)\r\n }\r\n}\r\n\r\nexport function offsetTop(element, accumulator = 0) {\r\n const top = accumulator + element.offsetTop\r\n if (element.offsetParent) {\r\n return offsetTop(element.offsetParent, top)\r\n }\r\n return top\r\n}\r\n\r\nexport function offsetLeft(element, accumulator = 0) {\r\n const left = accumulator + element.offsetLeft\r\n if (element.offsetParent) {\r\n return offsetLeft(element.offsetParent, left)\r\n }\r\n return left\r\n}\r\n\r\nexport function scrollTop(element, accumulator = 0) {\r\n const top = accumulator + element.scrollTop\r\n if (element.offsetParent) {\r\n return scrollTop(element.offsetParent, top)\r\n }\r\n return top + window.scrollY\r\n}\r\n\r\nexport function scrollLeft(element, accumulator = 0) {\r\n const left = accumulator + element.scrollLeft\r\n if (element.offsetParent) {\r\n return scrollLeft(element.offsetParent, left)\r\n }\r\n return left + window.scrollX\r\n}\r\n","import { createNanoEvents } from 'nanoevents'\r\n\r\nexport const emitter = createNanoEvents()\r\n","import { useEffect, useCallback, useRef, useState } from 'react'\r\nimport { addParentSticky, offsetLeft, offsetTop, removeParentSticky, scrollLeft, scrollTop } from './utils'\r\nimport debounce from 'just-debounce-it'\r\nimport { emitter } from './emitter'\r\n\r\nexport function useRect({\r\n ignoreTransform = false,\r\n ignoreSticky = true,\r\n debounce: debounceDelay = 500,\r\n lazy = false,\r\n callback,\r\n} = {}) {\r\n const [element, setElement] = useState()\r\n const rectRef = useRef({})\r\n const [rect, setRectState] = useState({})\r\n\r\n const setRect = useCallback(\r\n ({ top, left, width, height, element }) => {\r\n top = top ?? rectRef.current.top\r\n left = left ?? rectRef.current.left\r\n width = width ?? rectRef.current.width\r\n height = height ?? rectRef.current.height\r\n element = element ?? rectRef.current.element\r\n\r\n if (\r\n top === rectRef.current.top &&\r\n left === rectRef.current.left &&\r\n width === rectRef.current.width &&\r\n height === rectRef.current.height &&\r\n element === rectRef.current.element\r\n )\r\n return\r\n\r\n rectRef.current.top = top\r\n rectRef.current.y = top\r\n rectRef.current.width = width\r\n rectRef.current.height = height\r\n rectRef.current.left = left\r\n rectRef.current.x = left\r\n rectRef.current.bottom = top + height\r\n rectRef.current.right = left + width\r\n rectRef.current.element = element\r\n\r\n callback?.(rectRef.current)\r\n\r\n if (!lazy) {\r\n setRectState({ ...rectRef.current })\r\n }\r\n },\r\n [lazy],\r\n )\r\n\r\n useEffect(() => {\r\n if (!element) return\r\n\r\n const rect = element.getBoundingClientRect()\r\n const width = rect.width\r\n const height = rect.height\r\n setRect({ width, height })\r\n\r\n const onResize = debounce(([entry]) => {\r\n const width = entry.borderBoxSize[0].inlineSize\r\n const height = entry.borderBoxSize[0].blockSize\r\n\r\n setRect({ width, height })\r\n }, debounceDelay)\r\n\r\n const resizeObserver = new ResizeObserver(onResize)\r\n resizeObserver.observe(element)\r\n\r\n return () => {\r\n resizeObserver.disconnect()\r\n onResize.cancel()\r\n }\r\n }, [element, debounceDelay, setRect])\r\n\r\n const [wrapperElement, setWrapperElementRef] = useState()\r\n\r\n const onWrapperResize = useCallback(() => {\r\n if (!element) return\r\n\r\n let top, left\r\n\r\n if (ignoreSticky) removeParentSticky(element)\r\n if (ignoreTransform) {\r\n top = offsetTop(element)\r\n left = offsetLeft(element)\r\n } else {\r\n const rect = element.getBoundingClientRect()\r\n top = rect.top + scrollTop(element)\r\n left = rect.left + scrollLeft(element)\r\n }\r\n if (ignoreSticky) addParentSticky(element)\r\n\r\n setRect({ top, left, element })\r\n }, [ignoreTransform, ignoreSticky, element, setRect])\r\n\r\n // resize if body height changes\r\n useEffect(() => {\r\n onWrapperResize()\r\n const debouncedOnWrapperResize = debounce(onWrapperResize, debounceDelay)\r\n\r\n const resizeObserver = new ResizeObserver(debouncedOnWrapperResize)\r\n resizeObserver.observe(wrapperElement ?? document.body)\r\n\r\n return () => {\r\n resizeObserver.disconnect()\r\n debouncedOnWrapperResize.cancel()\r\n }\r\n }, [wrapperElement, debounceDelay, onWrapperResize])\r\n\r\n useEffect(() => {\r\n function onResize() {\r\n if (!element) return\r\n const elementRect = element.getBoundingClientRect()\r\n\r\n const width = elementRect.width\r\n const height = elementRect.height\r\n\r\n setRect({ width, height })\r\n\r\n onWrapperResize()\r\n }\r\n\r\n const unbind = emitter.on('resize', onResize)\r\n\r\n return unbind\r\n }, [element, onWrapperResize, setRect])\r\n\r\n const getRect = useCallback(() => rectRef.current, [])\r\n\r\n return [setElement, lazy ? getRect : rect, setWrapperElementRef]\r\n}\r\n\r\nuseRect.resize = () => {\r\n emitter.emit('resize')\r\n}\r\n","import { useCallback, useEffect, useRef, useState } from 'react'\r\nimport debounce from 'just-debounce-it'\r\n\r\n/**\r\n * useResizeObserver - observe elements dimensions using ResizeObserver\r\n * @param {Boolean} lazy - should return a state or not\r\n * @param {Number} debounce - minimum delay between two ResizeObserver computations\r\n * @param {String} box - ResizeObserver parameter\r\n * @param {Function} callback - called on value change\r\n */\r\n\r\nexport function useResizeObserver({\r\n lazy = false,\r\n debounce: debounceDelay = 500,\r\n box = 'border-box',\r\n callback = () => {},\r\n} = {}) {\r\n const entryRef = useRef({})\r\n const [entry, setEntry] = useState({})\r\n const [element, setElement] = useState()\r\n\r\n useEffect(() => {\r\n if (!element) return\r\n\r\n const onResize = debounce(\r\n ([entry]) => {\r\n entryRef.current = entry\r\n\r\n callback(entry)\r\n\r\n if (!lazy) {\r\n setEntry(entry)\r\n }\r\n },\r\n debounceDelay,\r\n true,\r\n )\r\n\r\n const resizeObserver = new ResizeObserver(onResize)\r\n resizeObserver.observe(element, { box })\r\n\r\n return () => {\r\n resizeObserver.disconnect()\r\n onResize.cancel()\r\n }\r\n }, [element, lazy, debounceDelay, box])\r\n\r\n const get = useCallback(() => entryRef.current, [])\r\n\r\n return [setElement, lazy ? get : entry]\r\n}\r\n","// This code is used to extract the contents of a component's children and return them as an array.\r\n// The code accepts two arguments, the names of the components that it should extract, and the children to extract from.\r\n// The code returns an array of the children of the components passed in the types argument.\r\n// based on:\r\n// https://medium.com/swlh/bring-vue-named-slots-to-react-87684188f18e\r\n\r\nimport { useMemo } from 'react'\r\n\r\nexport function useSlots(types = [], children = []) {\r\n const _children = useMemo(() => children && [children].flat(), [children])\r\n const _types = useMemo(() => types && [types].flat(), [types])\r\n const slots = useMemo(() => {\r\n if (!_children || !_types) {\r\n return\r\n }\r\n\r\n const slots = _types.map((type) => _children.find((el) => el.type === type)?.props.children)\r\n\r\n return types[0] ? slots : slots[0]\r\n }, [_children, _types])\r\n\r\n return slots\r\n}\r\n","import { useEffect, useState } from 'react'\r\nimport debounce from 'just-debounce-it'\r\n\r\n/**\r\n * @name useWindowSize\r\n * @description A React hook that listens to window size.\r\n * @returns {object} { width, height }\r\n */\r\n\r\nexport function useWindowSize(debounceDelay = 500) {\r\n const [width, setWidth] = useState()\r\n const [height, setHeight] = useState()\r\n\r\n useEffect(() => {\r\n const onWindowRezise = debounce(() => {\r\n setWidth(Math.min(window.innerWidth, document.documentElement.clientWidth))\r\n setHeight(Math.min(window.innerHeight, document.documentElement.clientHeight))\r\n }, debounceDelay)\r\n\r\n window.addEventListener('resize', onWindowRezise, false)\r\n\r\n onWindowRezise()\r\n\r\n return () => window.removeEventListener('resize', onWindowRezise, false)\r\n }, [debounceDelay])\r\n\r\n return { width, height }\r\n}\r\n","// Clamp a value between a minimum and maximum value\r\nexport function clamp(min, input, max) {\r\n return Math.max(min, Math.min(input, max))\r\n}\r\n\r\n// Truncate a floating-point number to a specified number of decimal places\r\nexport function truncate(value, decimals = 0) {\r\n return parseFloat(value.toFixed(decimals))\r\n}\r\n\r\n// Linearly interpolate between two values using an amount (0 <= t <= 1)\r\nexport function lerp(x, y, t) {\r\n return (1 - t) * x + t * y\r\n}\r\n\r\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\r\nexport function damp(x, y, lambda, dt) {\r\n return lerp(x, y, 1 - Math.exp(-lambda * dt))\r\n}\r\n\r\n// Calculate the modulo of the dividend and divisor while keeping the result within the same sign as the divisor\r\n// https://anguscroll.com/just/just-modulo\r\nexport function modulo(n, d) {\r\n return ((n % d) + d) % d\r\n}\r\n","import { clamp, damp } from './maths'\r\n\r\n// Animate class to handle value animations with lerping or easing\r\nexport class Animate {\r\n // Advance the animation by the given delta time\r\n advance(deltaTime) {\r\n if (!this.isRunning) return\r\n\r\n let completed = false\r\n\r\n if (this.lerp) {\r\n this.value = damp(this.value, this.to, this.lerp * 60, deltaTime)\r\n if (Math.round(this.value) === this.to) {\r\n this.value = this.to\r\n completed = true\r\n }\r\n } else {\r\n this.currentTime += deltaTime\r\n const linearProgress = clamp(0, this.currentTime / this.duration, 1)\r\n\r\n completed = linearProgress >= 1\r\n const easedProgress = completed ? 1 : this.easing(linearProgress)\r\n this.value = this.from + (this.to - this.from) * easedProgress\r\n }\r\n\r\n // Call the onUpdate callback with the current value and completed status\r\n this.onUpdate?.(this.value, completed)\r\n\r\n if (completed) {\r\n this.stop()\r\n }\r\n }\r\n\r\n // Stop the animation\r\n stop() {\r\n this.isRunning = false\r\n }\r\n\r\n // Set up the animation from a starting value to an ending value\r\n // with optional parameters for lerping, duration, easing, and onUpdate callback\r\n fromTo(\r\n from,\r\n to,\r\n { lerp = 0.1, duration = 1, easing = (t) => t, onStart, onUpdate }\r\n ) {\r\n this.from = this.value = from\r\n this.to = to\r\n this.lerp = lerp\r\n this.duration = duration\r\n this.easing = easing\r\n this.currentTime = 0\r\n this.isRunning = true\r\n\r\n onStart?.()\r\n this.onUpdate = onUpdate\r\n }\r\n}\r\n","import { debounce } from './debounce'\r\n\r\nexport class Dimensions {\r\n constructor({\r\n wrapper,\r\n content,\r\n autoResize = true,\r\n debounce: debounceValue = 250,\r\n } = {}) {\r\n this.wrapper = wrapper\r\n this.content = content\r\n\r\n if (autoResize) {\r\n this.debouncedResize = debounce(this.resize, debounceValue)\r\n\r\n if (this.wrapper === window) {\r\n window.addEventListener('resize', this.debouncedResize, false)\r\n } else {\r\n this.wrapperResizeObserver = new ResizeObserver(this.debouncedResize)\r\n this.wrapperResizeObserver.observe(this.wrapper)\r\n }\r\n\r\n this.contentResizeObserver = new ResizeObserver(this.debouncedResize)\r\n this.contentResizeObserver.observe(this.content)\r\n }\r\n\r\n this.resize()\r\n }\r\n\r\n destroy() {\r\n this.wrapperResizeObserver?.disconnect()\r\n this.contentResizeObserver?.disconnect()\r\n window.removeEventListener('resize', this.debouncedResize, false)\r\n }\r\n\r\n resize = () => {\r\n this.onWrapperResize()\r\n this.onContentResize()\r\n }\r\n\r\n onWrapperResize = () => {\r\n if (this.wrapper === window) {\r\n this.width = window.innerWidth\r\n this.height = window.innerHeight\r\n } else {\r\n this.width = this.wrapper.clientWidth\r\n this.height = this.wrapper.clientHeight\r\n }\r\n }\r\n\r\n onContentResize = () => {\r\n if (this.wrapper === window) {\r\n this.scrollHeight = this.content.scrollHeight\r\n this.scrollWidth = this.content.scrollWidth\r\n } else {\r\n this.scrollHeight = this.wrapper.scrollHeight\r\n this.scrollWidth = this.wrapper.scrollWidth\r\n }\r\n }\r\n\r\n get limit() {\r\n return {\r\n x: this.scrollWidth - this.width,\r\n y: this.scrollHeight - this.height,\r\n }\r\n }\r\n}\r\n","export function debounce(callback, delay) {\r\n let timer\r\n return function () {\r\n let args = arguments\r\n let context = this\r\n clearTimeout(timer)\r\n timer = setTimeout(function () {\r\n callback.apply(context, args)\r\n }, delay)\r\n }\r\n}\r\n","export class Emitter {\r\n constructor() {\r\n this.events = {}\r\n }\r\n\r\n emit(event, ...args) {\r\n let callbacks = this.events[event] || []\r\n for (let i = 0, length = callbacks.length; i < length; i++) {\r\n callbacks[i](...args)\r\n }\r\n }\r\n\r\n on(event, cb) {\r\n // Add the callback to the event's callback list, or create a new list with the callback\r\n this.events[event]?.push(cb) || (this.events[event] = [cb])\r\n\r\n // Return an unsubscribe function\r\n return () => {\r\n this.events[event] = this.events[event]?.filter((i) => cb !== i)\r\n }\r\n }\r\n\r\n off(event, callback) {\r\n this.events[event] = this.events[event]?.filter((i) => callback !== i)\r\n }\r\n\r\n destroy() {\r\n this.events = {}\r\n }\r\n}\r\n","import { Emitter } from './emitter'\r\n\r\nconst LINE_HEIGHT = 100 / 6\r\n\r\nexport class VirtualScroll {\r\n constructor(element, { wheelMultiplier = 1, touchMultiplier = 1 }) {\r\n this.element = element\r\n this.wheelMultiplier = wheelMultiplier\r\n this.touchMultiplier = touchMultiplier\r\n\r\n this.touchStart = {\r\n x: null,\r\n y: null,\r\n }\r\n\r\n this.emitter = new Emitter()\r\n window.addEventListener('resize', this.onWindowResize, false)\r\n this.onWindowResize()\r\n\r\n this.element.addEventListener('wheel', this.onWheel, { passive: false })\r\n this.element.addEventListener('touchstart', this.onTouchStart, {\r\n passive: false,\r\n })\r\n this.element.addEventListener('touchmove', this.onTouchMove, {\r\n passive: false,\r\n })\r\n this.element.addEventListener('touchend', this.onTouchEnd, {\r\n passive: false,\r\n })\r\n }\r\n\r\n // Add an event listener for the given event and callback\r\n on(event, callback) {\r\n return this.emitter.on(event, callback)\r\n }\r\n\r\n // Remove all event listeners and clean up\r\n destroy() {\r\n this.emitter.destroy()\r\n\r\n window.removeEventListener('resize', this.onWindowResize, false)\r\n\r\n this.element.removeEventListener('wheel', this.onWheel, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchstart', this.onTouchStart, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchmove', this.onTouchMove, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchend', this.onTouchEnd, {\r\n passive: false,\r\n })\r\n }\r\n\r\n // Event handler for 'touchstart' event\r\n onTouchStart = (event) => {\r\n const { clientX, clientY } = event.targetTouches\r\n ? event.targetTouches[0]\r\n : event\r\n\r\n this.touchStart.x = clientX\r\n this.touchStart.y = clientY\r\n\r\n this.lastDelta = {\r\n x: 0,\r\n y: 0,\r\n }\r\n\r\n this.emitter.emit('scroll', {\r\n deltaX: 0,\r\n deltaY: 0,\r\n event,\r\n })\r\n }\r\n\r\n // Event handler for 'touchmove' event\r\n onTouchMove = (event) => {\r\n const { clientX, clientY } = event.targetTouches\r\n ? event.targetTouches[0]\r\n : event\r\n\r\n const deltaX = -(clientX - this.touchStart.x) * this.touchMultiplier\r\n const deltaY = -(clientY - this.touchStart.y) * this.touchMultiplier\r\n\r\n this.touchStart.x = clientX\r\n this.touchStart.y = clientY\r\n\r\n this.lastDelta = {\r\n x: deltaX,\r\n y: deltaY,\r\n }\r\n\r\n this.emitter.emit('scroll', {\r\n deltaX,\r\n deltaY,\r\n event,\r\n })\r\n }\r\n\r\n onTouchEnd = (event) => {\r\n this.emitter.emit('scroll', {\r\n deltaX: this.lastDelta.x,\r\n deltaY: this.lastDelta.y,\r\n event,\r\n })\r\n }\r\n\r\n // Event handler for 'wheel' event\r\n onWheel = (event) => {\r\n let { deltaX, deltaY, deltaMode } = event\r\n\r\n const multiplierX =\r\n deltaMode === 1 ? LINE_HEIGHT : deltaMode === 2 ? this.windowWidth : 1\r\n const multiplierY =\r\n deltaMode === 1 ? LINE_HEIGHT : deltaMode === 2 ? this.windowHeight : 1\r\n\r\n deltaX *= multiplierX\r\n deltaY *= multiplierY\r\n\r\n deltaX *= this.wheelMultiplier\r\n deltaY *= this.wheelMultiplier\r\n\r\n this.emitter.emit('scroll', { deltaX, deltaY, event })\r\n }\r\n\r\n onWindowResize = () => {\r\n this.windowWidth = window.innerWidth\r\n this.windowHeight = window.innerHeight\r\n }\r\n}\r\n","import { version } from '../package.json'\r\nimport { Animate } from './animate'\r\nimport { Dimensions } from './dimensions'\r\nimport { Emitter } from './emitter'\r\nimport { clamp, modulo } from './maths'\r\nimport { VirtualScroll } from './virtual-scroll'\r\n\r\n// Technical explanation\r\n// - listen to 'wheel' events\r\n// - prevent 'wheel' event to prevent scroll\r\n// - normalize wheel delta\r\n// - add delta to targetScroll\r\n// - animate scroll to targetScroll (smooth context)\r\n// - if animation is not running, listen to 'scroll' events (native context)\r\n\r\ntype EasingFunction = (t: number) => number\r\ntype Orientation = 'vertical' | 'horizontal'\r\ntype GestureOrientation = 'vertical' | 'horizontal' | 'both'\r\n\r\nexport type LenisOptions = {\r\n wrapper?: Window | HTMLElement\r\n content?: HTMLElement\r\n wheelEventsTarget?: Window | HTMLElement\r\n eventsTarget?: Window | HTMLElement\r\n smoothWheel?: boolean\r\n syncTouch?: boolean\r\n syncTouchLerp?: number\r\n touchInertiaMultiplier?: number\r\n duration?: number\r\n easing?: EasingFunction\r\n lerp?: number\r\n infinite?: boolean\r\n orientation?: Orientation\r\n gestureOrientation?: GestureOrientation\r\n touchMultiplier?: number\r\n wheelMultiplier?: number\r\n autoResize?: boolean\r\n __experimental__naiveDimensions?: boolean\r\n}\r\n\r\nexport default class Lenis {\r\n __isSmooth: boolean = false // true if scroll should be animated\r\n __isScrolling: boolean = false // true when scroll is animating\r\n __isStopped: boolean = false // true if user should not be able to scroll - enable/disable programmatically\r\n __isLocked: boolean = false // same as isStopped but enabled/disabled when scroll reaches target\r\n\r\n constructor({\r\n wrapper = window,\r\n content = document.documentElement,\r\n wheelEventsTarget = wrapper, // deprecated\r\n eventsTarget = wheelEventsTarget,\r\n smoothWheel = true,\r\n syncTouch = false,\r\n syncTouchLerp = 0.075,\r\n touchInertiaMultiplier = 35,\r\n duration, // in seconds\r\n easing = (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),\r\n lerp = !duration && 0.1,\r\n infinite = false,\r\n orientation = 'vertical', // vertical, horizontal\r\n gestureOrientation = 'vertical', // vertical, horizontal, both\r\n touchMultiplier = 1,\r\n wheelMultiplier = 1,\r\n autoResize = true,\r\n __experimental__naiveDimensions = false,\r\n }: LenisOptions = {}) {\r\n window.lenisVersion = version\r\n\r\n // if wrapper is html or body, fallback to window\r\n if (wrapper === document.documentElement || wrapper === document.body) {\r\n wrapper = window\r\n }\r\n\r\n this.options = {\r\n wrapper,\r\n content,\r\n wheelEventsTarget,\r\n eventsTarget,\r\n smoothWheel,\r\n syncTouch,\r\n syncTouchLerp,\r\n touchInertiaMultiplier,\r\n duration,\r\n easing,\r\n lerp,\r\n infinite,\r\n gestureOrientation,\r\n orientation,\r\n touchMultiplier,\r\n wheelMultiplier,\r\n autoResize,\r\n __experimental__naiveDimensions,\r\n }\r\n\r\n this.animate = new Animate()\r\n this.emitter = new Emitter()\r\n this.dimensions = new Dimensions({ wrapper, content, autoResize })\r\n this.toggleClassName('lenis', true)\r\n\r\n this.velocity = 0\r\n this.isLocked = false\r\n this.isStopped = false\r\n this.isSmooth = syncTouch || smoothWheel\r\n this.isScrolling = false\r\n this.targetScroll = this.animatedScroll = this.actualScroll\r\n\r\n this.options.wrapper.addEventListener('scroll', this.onNativeScroll, false)\r\n\r\n this.virtualScroll = new VirtualScroll(eventsTarget, {\r\n touchMultiplier,\r\n wheelMultiplier,\r\n })\r\n this.virtualScroll.on('scroll', this.onVirtualScroll)\r\n }\r\n\r\n destroy() {\r\n this.emitter.destroy()\r\n\r\n this.options.wrapper.removeEventListener(\r\n 'scroll',\r\n this.onNativeScroll,\r\n false\r\n )\r\n\r\n this.virtualScroll.destroy()\r\n this.dimensions.destroy()\r\n\r\n this.toggleClassName('lenis', false)\r\n this.toggleClassName('lenis-smooth', false)\r\n this.toggleClassName('lenis-scrolling', false)\r\n this.toggleClassName('lenis-stopped', false)\r\n this.toggleClassName('lenis-locked', false)\r\n }\r\n\r\n on(event: string, callback: Function) {\r\n return this.emitter.on(event, callback)\r\n }\r\n\r\n off(event: string, callback: Function) {\r\n return this.emitter.off(event, callback)\r\n }\r\n\r\n private setScroll(scroll) {\r\n // apply scroll value immediately\r\n if (this.isHorizontal) {\r\n this.rootElement.scrollLeft = scroll\r\n } else {\r\n this.rootElement.scrollTop = scroll\r\n }\r\n }\r\n\r\n private onVirtualScroll = ({ deltaX, deltaY, event }) => {\r\n // keep zoom feature\r\n if (event.ctrlKey) return\r\n\r\n const isTouch = event.type.includes('touch')\r\n const isWheel = event.type.includes('wheel')\r\n\r\n const isTapToStop =\r\n this.options.syncTouch &&\r\n isTouch &&\r\n event.type === 'touchstart' &&\r\n !this.isStopped &&\r\n !this.isLocked\r\n\r\n if (isTapToStop) {\r\n this.reset()\r\n return\r\n }\r\n\r\n const isClick = deltaX === 0 && deltaY === 0 // click event\r\n\r\n // const isPullToRefresh =\r\n // this.options.gestureOrientation === 'vertical' &&\r\n // this.scroll === 0 &&\r\n // !this.options.infinite &&\r\n // deltaY <= 5 // touch pull to refresh, not reliable yet\r\n\r\n const isUnknownGesture =\r\n (this.options.gestureOrientation === 'vertical' && deltaY === 0) ||\r\n (this.options.gestureOrientation === 'horizontal' && deltaX === 0)\r\n\r\n if (isClick || isUnknownGesture) {\r\n // console.log('prevent')\r\n return\r\n }\r\n\r\n // catch if scrolling on nested scroll elements\r\n let composedPath = event.composedPath()\r\n composedPath = composedPath.slice(0, composedPath.indexOf(this.rootElement)) // remove parents elements\r\n\r\n if (\r\n !!composedPath.find(\r\n (node) =>\r\n node.hasAttribute?.('data-lenis-prevent') ||\r\n (isTouch && node.hasAttribute?.('data-lenis-prevent-touch')) ||\r\n (isWheel && node.hasAttribute?.('data-lenis-prevent-wheel')) ||\r\n (node.classList?.contains('lenis') &&\r\n !node.classList?.contains('lenis-stopped')) // nested lenis instance\r\n )\r\n )\r\n return\r\n\r\n if (this.isStopped || this.isLocked) {\r\n event.preventDefault() // this will stop forwarding the event to the parent, this is problematic\r\n return\r\n }\r\n\r\n this.isSmooth =\r\n (this.options.syncTouch && isTouch) ||\r\n (this.options.smoothWheel && isWheel)\r\n\r\n if (!this.isSmooth) {\r\n this.isScrolling = false\r\n this.animate.stop()\r\n return\r\n }\r\n\r\n event.preventDefault()\r\n\r\n let delta = deltaY\r\n if (this.options.gestureOrientation === 'both') {\r\n delta = Math.abs(deltaY) > Math.abs(deltaX) ? deltaY : deltaX\r\n } else if (this.options.gestureOrientation === 'horizontal') {\r\n delta = deltaX\r\n }\r\n\r\n const syncTouch = isTouch && this.options.syncTouch\r\n const isTouchEnd = isTouch && event.type === 'touchend'\r\n\r\n const hasTouchInertia = isTouchEnd && Math.abs(delta) > 5\r\n\r\n if (hasTouchInertia) {\r\n delta = this.velocity * this.options.touchInertiaMultiplier\r\n }\r\n\r\n this.scrollTo(this.targetScroll + delta, {\r\n programmatic: false,\r\n ...(syncTouch\r\n ? {\r\n lerp: hasTouchInertia ? this.options.syncTouchLerp : 1,\r\n }\r\n : {\r\n lerp: this.options.lerp,\r\n duration: this.options.duration,\r\n easing: this.options.easing,\r\n }),\r\n })\r\n }\r\n\r\n resize() {\r\n this.dimensions.resize()\r\n }\r\n\r\n private emit() {\r\n this.emitter.emit('scroll', this)\r\n }\r\n\r\n private onNativeScroll = () => {\r\n if (this.__preventNextScrollEvent) return\r\n\r\n if (!this.isScrolling) {\r\n const lastScroll = this.animatedScroll\r\n this.animatedScroll = this.targetScroll = this.actualScroll\r\n this.velocity = 0\r\n this.direction = Math.sign(this.animatedScroll - lastScroll)\r\n this.emit()\r\n }\r\n }\r\n\r\n private reset() {\r\n this.isLocked = false\r\n this.isScrolling = false\r\n this.animatedScroll = this.targetScroll = this.actualScroll\r\n this.velocity = 0\r\n this.animate.stop()\r\n }\r\n\r\n start() {\r\n if (!this.isStopped) return\r\n this.isStopped = false\r\n\r\n this.reset()\r\n }\r\n\r\n stop() {\r\n if (this.isStopped) return\r\n this.isStopped = true\r\n this.animate.stop()\r\n\r\n this.reset()\r\n }\r\n\r\n raf(time: number) {\r\n const deltaTime = time - (this.time || time)\r\n this.time = time\r\n\r\n this.animate.advance(deltaTime * 0.001)\r\n }\r\n\r\n scrollTo(\r\n target: number | string | HTMLElement,\r\n {\r\n offset = 0,\r\n immediate = false,\r\n lock = false,\r\n duration = this.options.duration,\r\n easing = this.options.easing,\r\n lerp = !duration && this.options.lerp,\r\n onComplete,\r\n force = false, // scroll even if stopped\r\n programmatic = true, // called from outside of the class\r\n }: {\r\n offset?: number\r\n immediate?: boolean\r\n lock?: boolean\r\n duration?: number\r\n easing?: EasingFunction\r\n lerp?: number\r\n onComplete?: (lenis: Lenis) => void\r\n force?: boolean\r\n programmatic?: boolean\r\n } = {}\r\n ) {\r\n if ((this.isStopped || this.isLocked) && !force) return\r\n\r\n // keywords\r\n if (['top', 'left', 'start'].includes(target)) {\r\n target = 0\r\n } else if (['bottom', 'right', 'end'].includes(target)) {\r\n target = this.limit\r\n } else {\r\n let node\r\n\r\n if (typeof target === 'string') {\r\n // CSS selector\r\n node = document.querySelector(target)\r\n } else if (target?.nodeType) {\r\n // Node element\r\n node = target\r\n }\r\n\r\n if (node) {\r\n if (this.options.wrapper !== window) {\r\n // nested scroll offset correction\r\n const wrapperRect = this.options.wrapper.getBoundingClientRect()\r\n offset -= this.isHorizontal ? wrapperRect.left : wrapperRect.top\r\n }\r\n\r\n const rect = node.getBoundingClientRect()\r\n\r\n target =\r\n (this.isHorizontal ? rect.left : rect.top) + this.animatedScroll\r\n }\r\n }\r\n\r\n if (typeof target !== 'number') return\r\n\r\n target += offset\r\n target = Math.round(target)\r\n\r\n if (this.options.infinite) {\r\n if (programmatic) {\r\n this.targetScroll = this.animatedScroll = this.scroll\r\n }\r\n } else {\r\n target = clamp(0, target, this.limit)\r\n }\r\n\r\n if (immediate) {\r\n this.animatedScroll = this.targetScroll = target\r\n this.setScroll(this.scroll)\r\n this.reset()\r\n onComplete?.(this)\r\n return\r\n }\r\n\r\n if (!programmatic) {\r\n if (target === this.targetScroll) return\r\n\r\n this.targetScroll = target\r\n }\r\n\r\n this.animate.fromTo(this.animatedScroll, target, {\r\n duration,\r\n easing,\r\n lerp,\r\n onStart: () => {\r\n // started\r\n if (lock) this.isLocked = true\r\n this.isScrolling = true\r\n },\r\n onUpdate: (value: number, completed: boolean) => {\r\n this.isScrolling = true\r\n\r\n // updated\r\n this.velocity = value - this.animatedScroll\r\n this.direction = Math.sign(this.velocity)\r\n\r\n this.animatedScroll = value\r\n this.setScroll(this.scroll)\r\n\r\n if (programmatic) {\r\n // wheel during programmatic should stop it\r\n this.targetScroll = value\r\n }\r\n\r\n if (!completed) this.emit()\r\n\r\n if (completed) {\r\n this.reset()\r\n this.emit()\r\n onComplete?.(this)\r\n\r\n // avoid emitting event twice\r\n this.__preventNextScrollEvent = true\r\n requestAnimationFrame(() => {\r\n delete this.__preventNextScrollEvent\r\n })\r\n }\r\n },\r\n })\r\n }\r\n\r\n get rootElement() {\r\n return this.options.wrapper === window\r\n ? document.documentElement\r\n : this.options.wrapper\r\n }\r\n\r\n get limit() {\r\n if (this.options.__experimental__naiveDimensions) {\r\n if (this.isHorizontal) {\r\n return this.rootElement.scrollWidth - this.rootElement.clientWidth\r\n } else {\r\n return this.rootElement.scrollHeight - this.rootElement.clientHeight\r\n }\r\n } else {\r\n return this.dimensions.limit[this.isHorizontal ? 'x' : 'y']\r\n }\r\n }\r\n\r\n get isHorizontal() {\r\n return this.options.orientation === 'horizontal'\r\n }\r\n\r\n get actualScroll() {\r\n // value browser takes into account\r\n return this.isHorizontal\r\n ? this.rootElement.scrollLeft\r\n : this.rootElement.scrollTop\r\n }\r\n\r\n get scroll() {\r\n return this.options.infinite\r\n ? modulo(this.animatedScroll, this.limit)\r\n : this.animatedScroll\r\n }\r\n\r\n get progress() {\r\n // avoid progress to be NaN\r\n return this.limit === 0 ? 1 : this.scroll / this.limit\r\n }\r\n\r\n get isSmooth() {\r\n return this.__isSmooth\r\n }\r\n\r\n private set isSmooth(value: boolean) {\r\n if (this.__isSmooth !== value) {\r\n this.__isSmooth = value\r\n this.toggleClassName('lenis-smooth', value)\r\n }\r\n }\r\n\r\n get isScrolling() {\r\n return this.__isScrolling\r\n }\r\n\r\n private set isScrolling(value: boolean) {\r\n if (this.__isScrolling !== value) {\r\n this.__isScrolling = value\r\n this.toggleClassName('lenis-scrolling', value)\r\n }\r\n }\r\n\r\n get isStopped() {\r\n return this.__isStopped\r\n }\r\n\r\n private set isStopped(value: boolean) {\r\n if (this.__isStopped !== value) {\r\n this.__isStopped = value\r\n this.toggleClassName('lenis-stopped', value)\r\n }\r\n }\r\n\r\n get isLocked() {\r\n return this.__isLocked\r\n }\r\n\r\n private set isLocked(value: boolean) {\r\n if (this.__isLocked !== value) {\r\n this.__isLocked = value\r\n this.toggleClassName('lenis-locked', value)\r\n }\r\n }\r\n\r\n get className() {\r\n let className = 'lenis'\r\n if (this.isStopped) className += ' lenis-stopped'\r\n if (this.isLocked) className += ' lenis-locked'\r\n if (this.isScrolling) className += ' lenis-scrolling'\r\n if (this.isSmooth) className += ' lenis-smooth'\r\n return className\r\n }\r\n\r\n private toggleClassName(name: string, value: boolean) {\r\n this.rootElement.classList.toggle(name, value)\r\n this.emitter.emit('className change', this)\r\n }\r\n}\r\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nlet didWarnAboutEqualityFn = false;\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity, equalityFn) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && equalityFn && !didWarnAboutEqualityFn) {\n console.warn(\n \"[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937\"\n );\n didWarnAboutEqualityFn = true;\n }\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, useStore };\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","'use client'\r\n\r\nimport { useFrame } from '@studio-freight/hamo'\r\nimport Lenis, { LenisOptions } from '@studio-freight/lenis'\r\nimport cn from 'clsx'\r\nimport React, {\r\n ForwardRefExoticComponent,\r\n PropsWithoutRef,\r\n ReactNode,\r\n RefAttributes,\r\n createContext,\r\n forwardRef,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useImperativeHandle,\r\n useRef,\r\n useState,\r\n} from 'react'\r\nimport { create } from 'zustand'\r\nimport { version } from '../package.json'\r\n\r\ntype LenisEventHandler = (lenis: Lenis) => void\r\ninterface LenisContextValue {\r\n lenis: Lenis\r\n addCallback: (handler: LenisEventHandler, priority: number) => void\r\n removeCallback: (handler: LenisEventHandler) => void\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n reactLenisVersion: string\r\n }\r\n}\r\nif (typeof window !== 'undefined') {\r\n window.reactLenisVersion = version\r\n}\r\n\r\nexport const LenisContext = createContext<LenisContextValue | null>(null)\r\n\r\nconst useRoot = create<Partial<LenisContextValue>>(() => ({}))\r\n\r\nfunction useCurrentLenis() {\r\n const local = useContext(LenisContext)\r\n const root = useRoot()\r\n\r\n return local ?? root\r\n}\r\n\r\nexport function useLenis(\r\n callback?: (lenis: Lenis) => void,\r\n deps: Array<any> = [],\r\n priority = 0\r\n): Lenis | undefined {\r\n const { lenis, addCallback, removeCallback } = useCurrentLenis()\r\n\r\n useEffect(() => {\r\n if (!callback || !addCallback || !removeCallback || !lenis) return\r\n\r\n addCallback(callback, priority)\r\n callback(lenis)\r\n\r\n return () => {\r\n removeCallback(callback)\r\n }\r\n }, [lenis, addCallback, removeCallback, priority, ...deps])\r\n\r\n return lenis\r\n}\r\n\r\ntype ForwardRefComponent<P, T> = ForwardRefExoticComponent<\r\n PropsWithoutRef<P> & RefAttributes<T>\r\n>\r\n\r\ntype Props = {\r\n root?: boolean\r\n options?: LenisOptions\r\n autoRaf?: boolean\r\n rafPriority?: number\r\n className?: string\r\n children?: ReactNode\r\n props?: any\r\n}\r\n\r\ntype LenisRef = {\r\n wrapper?: HTMLElement\r\n content?: HTMLElement\r\n lenis?: Lenis\r\n}\r\n\r\nconst ReactLenis: ForwardRefComponent<Props, LenisRef> = forwardRef<\r\n LenisRef,\r\n Props\r\n>(\r\n (\r\n {\r\n children,\r\n root = false,\r\n options = {},\r\n autoRaf = true,\r\n rafPriority = 0,\r\n className,\r\n ...props\r\n }: Props,\r\n ref\r\n ) => {\r\n const wrapperRef = useRef<HTMLDivElement | null>(null)\r\n const contentRef = useRef<HTMLDivElement | null>(null)\r\n\r\n const [lenis, setLenis] = useState<Lenis | undefined>(undefined)\r\n\r\n const callbacksRefs = useRef<\r\n {\r\n callback: LenisEventHandler\r\n priority: number\r\n }[]\r\n >([])\r\n\r\n const addCallback: LenisContextValue['addCallback'] = useCallback(\r\n (callback, priority) => {\r\n callbacksRefs.current.push({ callback, priority })\r\n callbacksRefs.current.sort((a, b) => a.priority - b.priority)\r\n },\r\n []\r\n )\r\n\r\n const removeCallback: LenisContextValue['removeCallback'] = useCallback(\r\n (callback) => {\r\n callbacksRefs.current = callbacksRefs.current.filter(\r\n (cb) => cb.callback !== callback\r\n )\r\n },\r\n []\r\n )\r\n\r\n useImperativeHandle(\r\n ref,\r\n () => ({\r\n wrapper: wrapperRef.current!,\r\n content: contentRef.current!,\r\n lenis,\r\n }),\r\n [lenis]\r\n )\r\n\r\n useEffect(() => {\r\n const lenis = new Lenis({\r\n ...options,\r\n ...(!root && {\r\n wrapper: wrapperRef.current!,\r\n content: contentRef.current!,\r\n }),\r\n })\r\n\r\n setLenis(lenis)\r\n\r\n return () => {\r\n lenis.destroy()\r\n setLenis(undefined)\r\n }\r\n }, [root, JSON.stringify(options)])\r\n\r\n useFrame((time: number) => {\r\n if (autoRaf) {\r\n lenis?.raf(time)\r\n }\r\n }, rafPriority)\r\n\r\n useEffect(() => {\r\n if (root && lenis) {\r\n useRoot.setState({ lenis, addCallback, removeCallback })\r\n }\r\n }, [root, lenis, addCallback, removeCallback])\r\n\r\n const onScroll = useCallback((lenisInstance: Lenis) => {\r\n for (let i = 0; i < callbacksRefs.current.length; i++) {\r\n callbacksRefs.current[i].callback(lenisInstance)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n lenis?.on('scroll', onScroll)\r\n\r\n return () => {\r\n lenis?.off('scroll', onScroll)\r\n }\r\n }, [lenis, onScroll])\r\n\r\n const onClassNameChange = useCallback(() => {\r\n if (wrapperRef.current) {\r\n wrapperRef.current.className = cn(lenis?.className, className)\r\n }\r\n }, [lenis, className])\r\n\r\n useEffect(() => {\r\n onClassNameChange()\r\n\r\n lenis?.on('className change', onClassNameChange)\r\n\r\n return () => {\r\n lenis?.off('className change', onClassNameChange)\r\n }\r\n }, [lenis, onClassNameChange])\r\n\r\n return (\r\n <LenisContext.Provider\r\n value={{ lenis: lenis!, addCallback, removeCallback }}\r\n >\r\n {root ? (\r\n children\r\n ) : (\r\n <div\r\n ref={wrapperRef}\r\n className={cn(lenis?.className, className)}\r\n {...props}\r\n >\r\n <div ref={contentRef}>{children}</div>\r\n </div>\r\n )}\r\n </LenisContext.Provider>\r\n )\r\n }\r\n)\r\n\r\nexport { ReactLenis as Lenis, ReactLenis }\r\nexport default ReactLenis\r\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ReactLenis } from \"@studio-freight/react-lenis\"\n\ninterface SmoothScrollProviderProps {\n children: React.ReactNode\n}\n\nexport function SmoothScrollProvider({ children }: SmoothScrollProviderProps) {\n return (\n <ReactLenis root options={{ lerp: 0.1, duration: 1.5, syncTouch: true }}>\n <div className=\"smooth-scroll\">{ children }</div>\n </ReactLenis>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { ThemeProvider as NextThemeProvider } from 'next-themes'\nimport type { ThemeProviderProps } from 'next-themes'\n\nexport function ThemeProvider({ children, ...props }: ThemeProviderProps) {\n return (\n <NextThemeProvider {...props}>\n {children}\n </NextThemeProvider>\n )\n} \n\nexport default ThemeProvider;"],"mappings":"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","names":["exports","React","x","y","useState","useEffect","useDebugValue","exports","x","y","React","useState","useEffect","useDebugValue","exports","module","exports","React","x","y","useEffect","useMemo","useDebugValue","exports","x","y","React","useEffect","useMemo","useDebugValue","exports","module","e","t","f","n","o","param","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","classParts","split","length","shift","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","nextPart","get","classGroupFromNextClassPart","slice","undefined","validators","classRest","join","find","validator","arbitraryPropertyRegex","test","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","prefix","Map","prefixedClassGroupEntries","getPrefixedClassGroupEntries","Object","entries","classGroups","forEach","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","key","path","currentClassPartObject","pathPart","has","set","func","classGroupEntries","map","prefixedClassGroup","fromEntries","value","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","createParseClassName","separator","experimentalParseClassName","isSeparatorSingleCharacter","firstSeparatorCharacter","separatorLength","parseClassName","modifiers","bracketDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","hasImportantModifier","startsWith","baseClassName","maybePostfixModifierPosition","sortModifiers","sortedModifiers","unsortedModifiers","modifier","isArbitraryVariant","sort","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","classGroupsInConflict","classNames","trim","result","originalClassName","Boolean","variantModifier","modifierId","classId","includes","conflictGroups","i","group","twJoin","argument","resolvedValue","string","arguments","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","callTailwindMerge","apply","fromTheme","themeGetter","arbitraryValueRegex","fractionRegex","stringLengths","Set","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isLength","isNumber","isArbitraryLength","getIsArbitraryValue","isLengthOnly","Number","isNaN","isArbitraryNumber","isInteger","isPercent","endsWith","isArbitraryValue","isTshirtSize","sizeLabels","isArbitrarySize","isNever","isArbitraryPosition","imageLabels","isArbitraryImage","isImage","isArbitraryShadow","isShadow","isAny","label","testValue","getDefaultConfig","colors","fromTheme","spacing","blur","brightness","borderColor","borderRadius","borderSpacing","borderWidth","contrast","grayscale","hueRotate","invert","gap","gradientColorStops","gradientColorStopPositions","inset","margin","opacity","padding","saturate","scale","sepia","skew","space","translate","getOverscroll","getOverflow","getSpacingWithAutoAndArbitrary","isArbitraryValue","getSpacingWithArbitrary","getLengthWithEmptyAndArbitrary","isLength","isArbitraryLength","getNumberWithAutoAndArbitrary","isNumber","getPositions","getLineStyles","getBlendModes","getAlign","getZeroAndEmpty","getBreaks","getNumberAndArbitrary","cacheSize","separator","theme","isAny","isTshirtSize","isPercent","classGroups","aspect","container","columns","box","display","float","clear","isolation","object","overflow","overscroll","position","start","end","top","right","bottom","left","visibility","z","isInteger","basis","flex","grow","shrink","order","col","span","row","justify","content","items","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","size","text","font","isArbitraryNumber","tracking","leading","list","placeholder","decoration","indent","align","whitespace","break","hyphens","bg","isArbitraryPosition","repeat","isArbitrarySize","isArbitraryImage","from","via","to","rounded","border","divide","outline","ring","shadow","isArbitraryShadow","filter","table","caption","transition","duration","ease","delay","animate","transform","rotate","origin","accent","appearance","cursor","caret","resize","scroll","snap","touch","select","fill","stroke","sr","conflictingClassGroups","conflictingClassGroupModifiers","twMerge","createTailwindMerge","getDefaultConfig","import_jsx_runtime","import_framer_motion","import_jsx_runtime","e","i","s","u","m","a","l","d","p","n","y","k","f","c","o","r","P","L","g","import_jsx_runtime","import_jsx_runtime","Link","import_link","import_jsx_runtime","Link","import_jsx_runtime","import_react","window","constructor","raf","now","requestAnimationFrame","this","deltaTime","s","i","callbacks","length","callback","performance","add","priority","push","sort","a","b","remove","filter","cb","i","useFrame","callback","priority","useEffect","Tempus","add","remove","e","t","n","r","removeParentSticky","element","getComputedStyle","position","style","setProperty","dataset","sticky","offsetParent","addParentSticky","_element$dataset","removeProperty","parentNode","offsetTop","accumulator","top","offsetLeft","left","scrollTop","window","scrollY","scrollLeft","scrollX","emitter","createNanoEvents","useRect","ignoreTransform","ignoreSticky","debounce","debounceDelay","lazy","callback","setElement","useState","rectRef","useRef","rect","setRectState","setRect","useCallback","width","height","_top","_left","_width","_height","_element","current","y","x","bottom","right","_extends","useEffect","getBoundingClientRect","onResize","entry","borderBoxSize","inlineSize","blockSize","resizeObserver","ResizeObserver","observe","disconnect","cancel","wrapperElement","setWrapperElementRef","onWrapperResize","debouncedOnWrapperResize","document","body","on","elementRect","getRect","useRect","resize","emitter","emit","clamp","min","input","max","Math","Animate","deltaTime","this","isRunning","completed","lerp","value","x","y","to","lambda","dt","t","exp","round","currentTime","linearProgress","duration","easedProgress","easing","from","onUpdate","stop","onStart","Dimensions","constructor","wrapper","content","autoResize","debounce","debounceValue","resize","onWrapperResize","onContentResize","window","width","innerWidth","height","innerHeight","clientWidth","clientHeight","scrollHeight","scrollWidth","debouncedResize","callback","delay","timer","args","arguments","context","clearTimeout","setTimeout","apply","addEventListener","wrapperResizeObserver","ResizeObserver","observe","contentResizeObserver","destroy","disconnect","removeEventListener","limit","Emitter","events","event","callbacks","i","length","cb","push","filter","LINE_HEIGHT","VirtualScroll","element","wheelMultiplier","touchMultiplier","onTouchStart","clientX","clientY","targetTouches","touchStart","lastDelta","emitter","emit","deltaX","deltaY","onTouchMove","onTouchEnd","onWheel","deltaMode","windowWidth","windowHeight","onWindowResize","passive","on","Lenis","document","documentElement","wheelEventsTarget","eventsTarget","smoothWheel","syncTouch","syncTouchLerp","touchInertiaMultiplier","pow","infinite","orientation","gestureOrientation","__experimental__naiveDimensions","__isSmooth","__isScrolling","__isStopped","__isLocked","onVirtualScroll","ctrlKey","isTouch","type","includes","isWheel","options","isStopped","isLocked","reset","isClick","isUnknownGesture","composedPath","slice","indexOf","rootElement","find","node","_a","hasAttribute","call","_b","_c","r","classList","_d","contains","_e","preventDefault","isSmooth","isScrolling","animate","delta","abs","hasTouchInertia","velocity","scrollTo","targetScroll","Object","assign","programmatic","onNativeScroll","__preventNextScrollEvent","lastScroll","animatedScroll","actualScroll","direction","sign","lenisVersion","body","dimensions","toggleClassName","virtualScroll","off","scroll","isHorizontal","scrollLeft","scrollTop","start","time","advance","target","offset","immediate","lock","onComplete","force","querySelector","nodeType","wrapperRect","getBoundingClientRect","left","top","rect","setScroll","fromTo","requestAnimationFrame","n","d","progress","className","name","toggle","import_react","import_meta","ReactExports","useSyncExternalStoreExports","window","reactLenisVersion","LenisContext","createContext","useRoot","create","ReactLenis","forwardRef","_a","ref","children","root","options","autoRaf","rafPriority","className","props","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","wrapperRef","useRef","contentRef","lenis","setLenis","useState","undefined","callbacksRefs","addCallback","useCallback","callback","priority","current","push","sort","a","b","removeCallback","filter","cb","useImperativeHandle","wrapper","content","useEffect","Lenis","assign","destroy","JSON","stringify","useFrame","time","raf","useRoot","setState","onScroll","lenisInstance","on","off","onClassNameChange","cn","React","LenisContext","Provider","value","createElement","import_jsx_runtime","y","import_jsx_runtime"]}
1
+ {"version":3,"sources":["../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.production.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim.development.js","../../node_modules/use-sync-external-store/shim/index.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.production.js","../../node_modules/use-sync-external-store/cjs/use-sync-external-store-shim/with-selector.development.js","../../node_modules/use-sync-external-store/shim/with-selector.js","../src/index.ts","../src/components/Button/index.tsx","../../node_modules/clsx/dist/clsx.mjs","../../node_modules/class-variance-authority/dist/index.mjs","../../node_modules/tailwind-merge/src/lib/class-group-utils.ts","../../node_modules/tailwind-merge/src/lib/lru-cache.ts","../../node_modules/tailwind-merge/src/lib/parse-class-name.ts","../../node_modules/tailwind-merge/src/lib/config-utils.ts","../../node_modules/tailwind-merge/src/lib/merge-classlist.ts","../../node_modules/tailwind-merge/src/lib/tw-join.ts","../../node_modules/tailwind-merge/src/lib/create-tailwind-merge.ts","../../node_modules/tailwind-merge/src/lib/from-theme.ts","../../node_modules/tailwind-merge/src/lib/validators.ts","../../node_modules/tailwind-merge/src/lib/default-config.ts","../../node_modules/tailwind-merge/src/lib/merge-configs.ts","../../node_modules/tailwind-merge/src/lib/extend-tailwind-merge.ts","../../node_modules/tailwind-merge/src/lib/tw-merge.ts","../src/theme/lib/utils.ts","../src/components/Heading/index.tsx","../src/layout/Header/index.tsx","../src/layout/Header/BreadIcon.tsx","../src/theme/providers/theme-toggle.tsx","../../node_modules/next-themes/dist/index.mjs","../src/layout/Footer/index.tsx","../src/layout/BasicLayout/index.tsx","../src/hooks/useForceRerender.ts","../../node_modules/@studio-freight/tempus/src/index.js","../../node_modules/just-debounce-it/index.mjs","../../node_modules/nanoevents/index.js","../../node_modules/@studio-freight/hamo/src/hooks/use-click-outside-event.js","../../node_modules/@studio-freight/hamo/src/hooks/use-is-client.js","../../node_modules/@studio-freight/hamo/src/hooks/use-debug.js","../../node_modules/@studio-freight/hamo/src/hooks/use-document-ready-state.js","../../node_modules/@studio-freight/hamo/src/hooks/use-frame/index.js","../../node_modules/@studio-freight/hamo/src/hooks/use-intersection-observer.js","../../node_modules/@studio-freight/hamo/src/hooks/use-interval.js","../../node_modules/@studio-freight/hamo/src/hooks/use-is-touch-device.js","../../node_modules/@studio-freight/hamo/src/hooks/use-media-query.js","../../node_modules/@studio-freight/hamo/src/hooks/use-rect/utils.js","../../node_modules/@studio-freight/hamo/src/hooks/use-rect/emitter.js","../../node_modules/@studio-freight/hamo/src/hooks/use-rect/index.js","../../node_modules/@studio-freight/hamo/src/hooks/use-resize-observer/index.js","../../node_modules/@studio-freight/hamo/src/hooks/use-slots.js","../../node_modules/@studio-freight/hamo/src/hooks/use-window-size/index.js","../../node_modules/@studio-freight/lenis/src/maths.js","../../node_modules/@studio-freight/lenis/src/animate.js","../../node_modules/@studio-freight/lenis/src/dimensions.js","../../node_modules/@studio-freight/lenis/src/debounce.js","../../node_modules/@studio-freight/lenis/src/emitter.js","../../node_modules/@studio-freight/lenis/src/virtual-scroll.js","../../node_modules/@studio-freight/src/index.ts","../../node_modules/zustand/esm/vanilla.mjs","../../node_modules/zustand/esm/index.mjs","../../node_modules/node_modules/tslib/tslib.es6.js","../../node_modules/@studio-freight/src/index.tsx","../src/providers/smooth-scroll-provider.tsx","../src/theme/providers/theme-provider.tsx"],"sourcesContent":["/**\n * @license React\n * use-sync-external-store-shim.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue;\nfunction useSyncExternalStore$2(subscribe, getSnapshot) {\n var value = getSnapshot(),\n _useState = useState({ inst: { value: value, getSnapshot: getSnapshot } }),\n inst = _useState[0].inst,\n forceUpdate = _useState[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n}\nfunction checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n}\nfunction useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n}\nvar shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\nexports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n","/**\n * @license React\n * use-sync-external-store-shim.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n function useSyncExternalStore$2(subscribe, getSnapshot) {\n didWarnOld18Alpha ||\n void 0 === React.startTransition ||\n ((didWarnOld18Alpha = !0),\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that does not support useSyncExternalStore. The use-sync-external-store shim will not work correctly. Upgrade to a newer pre-release.\"\n ));\n var value = getSnapshot();\n if (!didWarnUncachedGetSnapshot) {\n var cachedValue = getSnapshot();\n objectIs(value, cachedValue) ||\n (console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n ),\n (didWarnUncachedGetSnapshot = !0));\n }\n cachedValue = useState({\n inst: { value: value, getSnapshot: getSnapshot }\n });\n var inst = cachedValue[0].inst,\n forceUpdate = cachedValue[1];\n useLayoutEffect(\n function () {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n },\n [subscribe, value, getSnapshot]\n );\n useEffect(\n function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n return subscribe(function () {\n checkIfSnapshotChanged(inst) && forceUpdate({ inst: inst });\n });\n },\n [subscribe]\n );\n useDebugValue(value);\n return value;\n }\n function checkIfSnapshotChanged(inst) {\n var latestGetSnapshot = inst.getSnapshot;\n inst = inst.value;\n try {\n var nextValue = latestGetSnapshot();\n return !objectIs(inst, nextValue);\n } catch (error) {\n return !0;\n }\n }\n function useSyncExternalStore$1(subscribe, getSnapshot) {\n return getSnapshot();\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useState = React.useState,\n useEffect = React.useEffect,\n useLayoutEffect = React.useLayoutEffect,\n useDebugValue = React.useDebugValue,\n didWarnOld18Alpha = !1,\n didWarnUncachedGetSnapshot = !1,\n shim =\n \"undefined\" === typeof window ||\n \"undefined\" === typeof window.document ||\n \"undefined\" === typeof window.document.createElement\n ? useSyncExternalStore$1\n : useSyncExternalStore$2;\n exports.useSyncExternalStore =\n void 0 !== React.useSyncExternalStore ? React.useSyncExternalStore : shim;\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim.development.js');\n}\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.production.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\nvar React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\");\nfunction is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n}\nvar objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\nexports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot)) return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n};\n","/**\n * @license React\n * use-sync-external-store-shim/with-selector.development.js\n *\n * Copyright (c) Meta Platforms, Inc. and affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\"use strict\";\n\"production\" !== process.env.NODE_ENV &&\n (function () {\n function is(x, y) {\n return (x === y && (0 !== x || 1 / x === 1 / y)) || (x !== x && y !== y);\n }\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStart(Error());\n var React = require(\"react\"),\n shim = require(\"use-sync-external-store/shim\"),\n objectIs = \"function\" === typeof Object.is ? Object.is : is,\n useSyncExternalStore = shim.useSyncExternalStore,\n useRef = React.useRef,\n useEffect = React.useEffect,\n useMemo = React.useMemo,\n useDebugValue = React.useDebugValue;\n exports.useSyncExternalStoreWithSelector = function (\n subscribe,\n getSnapshot,\n getServerSnapshot,\n selector,\n isEqual\n ) {\n var instRef = useRef(null);\n if (null === instRef.current) {\n var inst = { hasValue: !1, value: null };\n instRef.current = inst;\n } else inst = instRef.current;\n instRef = useMemo(\n function () {\n function memoizedSelector(nextSnapshot) {\n if (!hasMemo) {\n hasMemo = !0;\n memoizedSnapshot = nextSnapshot;\n nextSnapshot = selector(nextSnapshot);\n if (void 0 !== isEqual && inst.hasValue) {\n var currentSelection = inst.value;\n if (isEqual(currentSelection, nextSnapshot))\n return (memoizedSelection = currentSelection);\n }\n return (memoizedSelection = nextSnapshot);\n }\n currentSelection = memoizedSelection;\n if (objectIs(memoizedSnapshot, nextSnapshot))\n return currentSelection;\n var nextSelection = selector(nextSnapshot);\n if (void 0 !== isEqual && isEqual(currentSelection, nextSelection))\n return (memoizedSnapshot = nextSnapshot), currentSelection;\n memoizedSnapshot = nextSnapshot;\n return (memoizedSelection = nextSelection);\n }\n var hasMemo = !1,\n memoizedSnapshot,\n memoizedSelection,\n maybeGetServerSnapshot =\n void 0 === getServerSnapshot ? null : getServerSnapshot;\n return [\n function () {\n return memoizedSelector(getSnapshot());\n },\n null === maybeGetServerSnapshot\n ? void 0\n : function () {\n return memoizedSelector(maybeGetServerSnapshot());\n }\n ];\n },\n [getSnapshot, getServerSnapshot, selector, isEqual]\n );\n var value = useSyncExternalStore(subscribe, instRef[0], instRef[1]);\n useEffect(\n function () {\n inst.hasValue = !0;\n inst.value = value;\n },\n [value]\n );\n useDebugValue(value);\n return value;\n };\n \"undefined\" !== typeof __REACT_DEVTOOLS_GLOBAL_HOOK__ &&\n \"function\" ===\n typeof __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop &&\n __REACT_DEVTOOLS_GLOBAL_HOOK__.registerInternalModuleStop(Error());\n })();\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.production.js');\n} else {\n module.exports = require('../cjs/use-sync-external-store-shim/with-selector.development.js');\n}\n","export * from './components'\nexport * from './layout'\nexport { default as useForceRerender } from './hooks/useForceRerender'\nexport * from './providers'\nexport * from './theme'\n// export * from './hooks'\n// export * from './layout'\n// export * from './theme'\n// export * from './i18n'","import * as React from \"react\"\nimport { cva, type VariantProps } from \"class-variance-authority\"\nimport { cn } from \"../../theme/lib/utils\"\n\n/**\n * 按钮变体样式配置\n * @private\n */\nconst buttonVariants = cva(\n \"inline-flex items-center justify-center whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring disabled:pointer-events-none disabled:opacity-50\",\n {\n variants: {\n variant: {\n default:\n \"bg-primary text-primary-foreground shadow hover:bg-primary/90\",\n destructive:\n \"bg-destructive text-destructive-foreground shadow-sm hover:bg-destructive/90\",\n outline:\n \"border border-input bg-background shadow-sm hover:bg-accent hover:text-accent-foreground\",\n secondary:\n \"bg-secondary text-secondary-foreground shadow-sm hover:bg-secondary/80\",\n ghost: \"hover:bg-accent hover:text-accent-foreground\",\n link: \"text-primary underline-offset-4 hover:underline\",\n borderNone: \"border-none\",\n },\n size: {\n default: \"h-9 px-4 py-2\",\n sm: \"h-8 rounded-md px-3 text-xs\",\n lg: \"h-10 rounded-md px-8\",\n icon: \"h-9 w-9\",\n },\n },\n defaultVariants: {\n variant: \"default\",\n size: \"default\",\n },\n }\n)\n\n/**\n * Button 组件的属性类型\n * @extends {React.ButtonHTMLAttributes<HTMLButtonElement>} 继承原生按钮属性\n */\nexport interface ButtonProps\n extends React.ButtonHTMLAttributes<HTMLButtonElement>,\n VariantProps<typeof buttonVariants> {}\n\n/**\n * 现代化的按钮组件,支持多种变体和尺寸。\n * \n * @component\n * @example\n * ```tsx\n * // 默认按钮\n * <Button>Click me</Button>\n * \n * // 带变体的按钮\n * <Button variant=\"destructive\" size=\"lg\">Delete</Button>\n * \n * // 图标按钮\n * <Button variant=\"ghost\" size=\"icon\">\n * <IconComponent />\n * </Button>\n * ```\n * \n * @param {ButtonProps} props - 组件属性\n * @param {string} [props.variant=\"default\"] - 按钮变体样式\n * - 'default' - 主要按钮\n * - 'destructive' - 危险操作按钮\n * - 'outline' - 轮廓按钮\n * - 'secondary' - 次要按钮\n * - 'ghost' - 幽灵按钮\n * - 'link' - 链接样式按钮\n * @param {string} [props.size=\"default\"] - 按钮尺寸\n * - 'default' - 默认大小\n * - 'sm' - 小型按钮\n * - 'lg' - 大型按钮\n * - 'icon' - 图标按钮\n * @param {string} [props.className] - 自定义类名\n */\nconst Button = React.forwardRef<HTMLButtonElement, ButtonProps>(\n ({ className, variant, size, ...props }, ref) => {\n return (\n <button\n className={cn(buttonVariants({ variant, size, className }))}\n ref={ref}\n {...props}\n />\n )\n }\n)\nButton.displayName = \"Button\"\n\nexport { Button, buttonVariants }\n\nexport default Button;","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;","/**\n * Copyright 2022 Joe Bell. All rights reserved.\n *\n * This file is licensed to you under the Apache License, Version 2.0\n * (the \"License\"); you may not use this file except in compliance with the\n * License. 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, WITHOUT\n * WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the\n * License for the specific language governing permissions and limitations under\n * the License.\n */ import { clsx } from \"clsx\";\nconst falsyToString = (value)=>typeof value === \"boolean\" ? `${value}` : value === 0 ? \"0\" : value;\nexport const cx = clsx;\nexport const cva = (base, config)=>(props)=>{\n var _config_compoundVariants;\n if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n const { variants, defaultVariants } = config;\n const getVariantClassNames = Object.keys(variants).map((variant)=>{\n const variantProp = props === null || props === void 0 ? void 0 : props[variant];\n const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];\n if (variantProp === null) return null;\n const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);\n return variants[variant][variantKey];\n });\n const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{\n let [key, value] = param;\n if (value === undefined) {\n return acc;\n }\n acc[key] = value;\n return acc;\n }, {});\n const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{\n let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;\n return Object.entries(compoundVariantOptions).every((param)=>{\n let [key, value] = param;\n return Array.isArray(value) ? value.includes({\n ...defaultVariants,\n ...propsWithoutUndefined\n }[key]) : ({\n ...defaultVariants,\n ...propsWithoutUndefined\n })[key] === value;\n }) ? [\n ...acc,\n cvClass,\n cvClassName\n ] : acc;\n }, []);\n return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);\n };\n\n","import {\n AnyClassGroupIds,\n AnyConfig,\n AnyThemeGroupIds,\n ClassGroup,\n ClassValidator,\n Config,\n ThemeGetter,\n ThemeObject,\n} from './types'\n\nexport interface ClassPartObject {\n nextPart: Map<string, ClassPartObject>\n validators: ClassValidatorObject[]\n classGroupId?: AnyClassGroupIds\n}\n\ninterface ClassValidatorObject {\n classGroupId: AnyClassGroupIds\n validator: ClassValidator\n}\n\nconst CLASS_PART_SEPARATOR = '-'\n\nexport const createClassGroupUtils = (config: AnyConfig) => {\n const classMap = createClassMap(config)\n const { conflictingClassGroups, conflictingClassGroupModifiers } = config\n\n const getClassGroupId = (className: string) => {\n const classParts = className.split(CLASS_PART_SEPARATOR)\n\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\n return getGroupRecursive(classParts, classMap) || getGroupIdForArbitraryProperty(className)\n }\n\n const getConflictingClassGroupIds = (\n classGroupId: AnyClassGroupIds,\n hasPostfixModifier: boolean,\n ) => {\n const conflicts = conflictingClassGroups[classGroupId] || []\n\n if (hasPostfixModifier && conflictingClassGroupModifiers[classGroupId]) {\n return [...conflicts, ...conflictingClassGroupModifiers[classGroupId]!]\n }\n\n return conflicts\n }\n\n return {\n getClassGroupId,\n getConflictingClassGroupIds,\n }\n}\n\nconst getGroupRecursive = (\n classParts: string[],\n classPartObject: ClassPartObject,\n): AnyClassGroupIds | undefined => {\n if (classParts.length === 0) {\n return classPartObject.classGroupId\n }\n\n const currentClassPart = classParts[0]!\n const nextClassPartObject = classPartObject.nextPart.get(currentClassPart)\n const classGroupFromNextClassPart = nextClassPartObject\n ? getGroupRecursive(classParts.slice(1), nextClassPartObject)\n : undefined\n\n if (classGroupFromNextClassPart) {\n return classGroupFromNextClassPart\n }\n\n if (classPartObject.validators.length === 0) {\n return undefined\n }\n\n const classRest = classParts.join(CLASS_PART_SEPARATOR)\n\n return classPartObject.validators.find(({ validator }) => validator(classRest))?.classGroupId\n}\n\nconst arbitraryPropertyRegex = /^\\[(.+)\\]$/\n\nconst getGroupIdForArbitraryProperty = (className: string) => {\n if (arbitraryPropertyRegex.test(className)) {\n const arbitraryPropertyClassName = arbitraryPropertyRegex.exec(className)![1]\n const property = arbitraryPropertyClassName?.substring(\n 0,\n arbitraryPropertyClassName.indexOf(':'),\n )\n\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/**\n * Exported for testing only\n */\nexport const createClassMap = (config: Config<AnyClassGroupIds, AnyThemeGroupIds>) => {\n const { theme, prefix } = config\n const classMap: ClassPartObject = {\n nextPart: new Map<string, ClassPartObject>(),\n validators: [],\n }\n\n const prefixedClassGroupEntries = getPrefixedClassGroupEntries(\n Object.entries(config.classGroups),\n prefix,\n )\n\n prefixedClassGroupEntries.forEach(([classGroupId, classGroup]) => {\n processClassesRecursively(classGroup, classMap, classGroupId, theme)\n })\n\n return classMap\n}\n\nconst processClassesRecursively = (\n classGroup: ClassGroup<AnyThemeGroupIds>,\n classPartObject: ClassPartObject,\n classGroupId: AnyClassGroupIds,\n theme: ThemeObject<AnyThemeGroupIds>,\n) => {\n classGroup.forEach((classDefinition) => {\n if (typeof classDefinition === 'string') {\n const classPartObjectToEdit =\n classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition)\n classPartObjectToEdit.classGroupId = classGroupId\n return\n }\n\n if (typeof classDefinition === 'function') {\n if (isThemeGetter(classDefinition)) {\n processClassesRecursively(\n classDefinition(theme),\n classPartObject,\n classGroupId,\n theme,\n )\n return\n }\n\n classPartObject.validators.push({\n validator: classDefinition,\n classGroupId,\n })\n\n return\n }\n\n Object.entries(classDefinition).forEach(([key, classGroup]) => {\n processClassesRecursively(\n classGroup,\n getPart(classPartObject, key),\n classGroupId,\n theme,\n )\n })\n })\n}\n\nconst getPart = (classPartObject: ClassPartObject, path: string) => {\n let currentClassPartObject = classPartObject\n\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\n currentClassPartObject = currentClassPartObject.nextPart.get(pathPart)!\n })\n\n return currentClassPartObject\n}\n\nconst isThemeGetter = (func: ClassValidator | ThemeGetter): func is ThemeGetter =>\n (func as ThemeGetter).isThemeGetter\n\nconst getPrefixedClassGroupEntries = (\n classGroupEntries: Array<[classGroupId: string, classGroup: ClassGroup<AnyThemeGroupIds>]>,\n prefix: string | undefined,\n): Array<[classGroupId: string, classGroup: ClassGroup<AnyThemeGroupIds>]> => {\n if (!prefix) {\n return classGroupEntries\n }\n\n return classGroupEntries.map(([classGroupId, classGroup]) => {\n const prefixedClassGroup = classGroup.map((classDefinition) => {\n if (typeof classDefinition === 'string') {\n return prefix + classDefinition\n }\n\n if (typeof classDefinition === 'object') {\n return Object.fromEntries(\n Object.entries(classDefinition).map(([key, value]) => [prefix + key, value]),\n )\n }\n\n return classDefinition\n })\n\n return [classGroupId, prefixedClassGroup]\n })\n}\n","// Export is needed because TypeScript complains about an error otherwise:\n// Error: …/tailwind-merge/src/config-utils.ts(8,17): semantic error TS4058: Return type of exported function has or is using name 'LruCache' from external module \"…/tailwind-merge/src/lru-cache\" but cannot be named.\nexport interface LruCache<Key, Value> {\n get(key: Key): Value | undefined\n set(key: Key, value: Value): void\n}\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\nexport const createLruCache = <Key, Value>(maxCacheSize: number): LruCache<Key, Value> => {\n if (maxCacheSize < 1) {\n return {\n get: () => undefined,\n set: () => {},\n }\n }\n\n let cacheSize = 0\n let cache = new Map<Key, Value>()\n let previousCache = new Map<Key, Value>()\n\n const update = (key: Key, value: Value) => {\n cache.set(key, value)\n cacheSize++\n\n if (cacheSize > maxCacheSize) {\n cacheSize = 0\n previousCache = cache\n cache = new Map()\n }\n }\n\n return {\n get(key) {\n let value = cache.get(key)\n\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}\n","import { AnyConfig } from './types'\n\nexport const IMPORTANT_MODIFIER = '!'\n\nexport const createParseClassName = (config: AnyConfig) => {\n const { separator, experimentalParseClassName } = config\n const isSeparatorSingleCharacter = separator.length === 1\n const firstSeparatorCharacter = separator[0]\n const separatorLength = separator.length\n\n // parseClassName inspired by https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js\n const parseClassName = (className: string) => {\n const modifiers = []\n\n let bracketDepth = 0\n let modifierStart = 0\n let postfixModifierPosition: number | undefined\n\n for (let index = 0; index < className.length; index++) {\n let currentCharacter = className[index]\n\n if (bracketDepth === 0) {\n if (\n currentCharacter === firstSeparatorCharacter &&\n (isSeparatorSingleCharacter ||\n className.slice(index, index + separatorLength) === separator)\n ) {\n modifiers.push(className.slice(modifierStart, index))\n modifierStart = index + separatorLength\n continue\n }\n\n if (currentCharacter === '/') {\n postfixModifierPosition = index\n continue\n }\n }\n\n if (currentCharacter === '[') {\n bracketDepth++\n } else if (currentCharacter === ']') {\n bracketDepth--\n }\n }\n\n const baseClassNameWithImportantModifier =\n modifiers.length === 0 ? className : className.substring(modifierStart)\n const hasImportantModifier =\n baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)\n const baseClassName = hasImportantModifier\n ? baseClassNameWithImportantModifier.substring(1)\n : baseClassNameWithImportantModifier\n\n const maybePostfixModifierPosition =\n postfixModifierPosition && postfixModifierPosition > modifierStart\n ? postfixModifierPosition - modifierStart\n : undefined\n\n return {\n modifiers,\n hasImportantModifier,\n baseClassName,\n maybePostfixModifierPosition,\n }\n }\n\n if (experimentalParseClassName) {\n return (className: string) => experimentalParseClassName({ className, parseClassName })\n }\n\n return parseClassName\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 */\nexport const sortModifiers = (modifiers: string[]) => {\n if (modifiers.length <= 1) {\n return modifiers\n }\n\n const sortedModifiers: string[] = []\n let unsortedModifiers: string[] = []\n\n modifiers.forEach((modifier) => {\n const isArbitraryVariant = modifier[0] === '['\n\n if (isArbitraryVariant) {\n sortedModifiers.push(...unsortedModifiers.sort(), modifier)\n unsortedModifiers = []\n } else {\n unsortedModifiers.push(modifier)\n }\n })\n\n sortedModifiers.push(...unsortedModifiers.sort())\n\n return sortedModifiers\n}\n","import { createClassGroupUtils } from './class-group-utils'\nimport { createLruCache } from './lru-cache'\nimport { createParseClassName } from './parse-class-name'\nimport { AnyConfig } from './types'\n\nexport type ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport const createConfigUtils = (config: AnyConfig) => ({\n cache: createLruCache<string, string>(config.cacheSize),\n parseClassName: createParseClassName(config),\n ...createClassGroupUtils(config),\n})\n","import { ConfigUtils } from './config-utils'\nimport { IMPORTANT_MODIFIER, sortModifiers } from './parse-class-name'\n\nconst SPLIT_CLASSES_REGEX = /\\s+/\n\nexport const mergeClassList = (classList: string, configUtils: ConfigUtils) => {\n const { parseClassName, getClassGroupId, getConflictingClassGroupIds } = configUtils\n\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: string[] = []\n const classNames = classList.trim().split(SPLIT_CLASSES_REGEX)\n\n let result = ''\n\n for (let index = classNames.length - 1; index >= 0; index -= 1) {\n const originalClassName = classNames[index]!\n\n const { modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } =\n parseClassName(originalClassName)\n\n let hasPostfixModifier = Boolean(maybePostfixModifierPosition)\n let classGroupId = getClassGroupId(\n hasPostfixModifier\n ? baseClassName.substring(0, maybePostfixModifierPosition)\n : baseClassName,\n )\n\n if (!classGroupId) {\n if (!hasPostfixModifier) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n classGroupId = getClassGroupId(baseClassName)\n\n if (!classGroupId) {\n // Not a Tailwind class\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n continue\n }\n\n hasPostfixModifier = false\n }\n\n const variantModifier = sortModifiers(modifiers).join(':')\n\n const modifierId = hasImportantModifier\n ? variantModifier + IMPORTANT_MODIFIER\n : variantModifier\n\n const classId = modifierId + classGroupId\n\n if (classGroupsInConflict.includes(classId)) {\n // Tailwind class omitted due to conflict\n continue\n }\n\n classGroupsInConflict.push(classId)\n\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\n // Tailwind class not in conflict\n result = originalClassName + (result.length > 0 ? ' ' + result : result)\n }\n\n return result\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 */\n\nexport type ClassNameValue = ClassNameArray | string | null | undefined | 0 | 0n | false\ntype ClassNameArray = ClassNameValue[]\n\nexport function twJoin(...classLists: ClassNameValue[]): string\nexport function twJoin() {\n let index = 0\n let argument: ClassNameValue\n let resolvedValue: string\n let string = ''\n\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}\n\nconst toValue = (mix: ClassNameArray | string) => {\n if (typeof mix === 'string') {\n return mix\n }\n\n let resolvedValue: string\n let string = ''\n\n for (let k = 0; k < mix.length; k++) {\n if (mix[k]) {\n if ((resolvedValue = toValue(mix[k] as ClassNameArray | string))) {\n string && (string += ' ')\n string += resolvedValue\n }\n }\n }\n\n return string\n}\n","import { createConfigUtils } from './config-utils'\nimport { mergeClassList } from './merge-classlist'\nimport { ClassNameValue, twJoin } from './tw-join'\nimport { AnyConfig } from './types'\n\ntype CreateConfigFirst = () => AnyConfig\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\ntype TailwindMerge = (...classLists: ClassNameValue[]) => string\ntype ConfigUtils = ReturnType<typeof createConfigUtils>\n\nexport function createTailwindMerge(\n createConfigFirst: CreateConfigFirst,\n ...createConfigRest: CreateConfigSubsequent[]\n): TailwindMerge {\n let configUtils: ConfigUtils\n let cacheGet: ConfigUtils['cache']['get']\n let cacheSet: ConfigUtils['cache']['set']\n let functionToCall = initTailwindMerge\n\n function initTailwindMerge(classList: string) {\n const config = createConfigRest.reduce(\n (previousConfig, createConfigCurrent) => createConfigCurrent(previousConfig),\n createConfigFirst() as AnyConfig,\n )\n\n configUtils = createConfigUtils(config)\n cacheGet = configUtils.cache.get\n cacheSet = configUtils.cache.set\n functionToCall = tailwindMerge\n\n return tailwindMerge(classList)\n }\n\n function tailwindMerge(classList: string) {\n const cachedResult = cacheGet(classList)\n\n if (cachedResult) {\n return cachedResult\n }\n\n const result = mergeClassList(classList, configUtils)\n cacheSet(classList, result)\n\n return result\n }\n\n return function callTailwindMerge() {\n return functionToCall(twJoin.apply(null, arguments as any))\n }\n}\n","import { DefaultThemeGroupIds, NoInfer, ThemeGetter, ThemeObject } from './types'\n\nexport const fromTheme = <\n AdditionalThemeGroupIds extends string = never,\n DefaultThemeGroupIdsInner extends string = DefaultThemeGroupIds,\n>(key: NoInfer<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>): ThemeGetter => {\n const themeGetter = (theme: ThemeObject<DefaultThemeGroupIdsInner | AdditionalThemeGroupIds>) =>\n theme[key] || []\n\n themeGetter.isThemeGetter = true as const\n\n return themeGetter\n}\n","const arbitraryValueRegex = /^\\[(?:([a-z-]+):)?(.+)\\]$/i\nconst fractionRegex = /^\\d+\\/\\d+$/\nconst stringLengths = new Set(['px', 'full', 'screen'])\nconst tshirtUnitRegex = /^(\\d+(\\.\\d+)?)?(xs|sm|md|lg|xl)$/\nconst lengthUnitRegex =\n /\\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))\\(.+\\)$/\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 =\n /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\\(.+\\)$/\n\nexport const isLength = (value: string) =>\n isNumber(value) || stringLengths.has(value) || fractionRegex.test(value)\n\nexport const isArbitraryLength = (value: string) =>\n getIsArbitraryValue(value, 'length', isLengthOnly)\n\nexport const isNumber = (value: string) => Boolean(value) && !Number.isNaN(Number(value))\n\nexport const isArbitraryNumber = (value: string) => getIsArbitraryValue(value, 'number', isNumber)\n\nexport const isInteger = (value: string) => Boolean(value) && Number.isInteger(Number(value))\n\nexport const isPercent = (value: string) => value.endsWith('%') && isNumber(value.slice(0, -1))\n\nexport const isArbitraryValue = (value: string) => arbitraryValueRegex.test(value)\n\nexport const isTshirtSize = (value: string) => tshirtUnitRegex.test(value)\n\nconst sizeLabels = new Set(['length', 'size', 'percentage'])\n\nexport const isArbitrarySize = (value: string) => getIsArbitraryValue(value, sizeLabels, isNever)\n\nexport const isArbitraryPosition = (value: string) =>\n getIsArbitraryValue(value, 'position', isNever)\n\nconst imageLabels = new Set(['image', 'url'])\n\nexport const isArbitraryImage = (value: string) => getIsArbitraryValue(value, imageLabels, isImage)\n\nexport const isArbitraryShadow = (value: string) => getIsArbitraryValue(value, '', isShadow)\n\nexport const isAny = () => true\n\nconst getIsArbitraryValue = (\n value: string,\n label: string | Set<string>,\n testValue: (value: string) => boolean,\n) => {\n const result = arbitraryValueRegex.exec(value)\n\n if (result) {\n if (result[1]) {\n return typeof label === 'string' ? result[1] === label : label.has(result[1])\n }\n\n return testValue(result[2]!)\n }\n\n return false\n}\n\nconst isLengthOnly = (value: string) =>\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.\n lengthUnitRegex.test(value) && !colorFunctionRegex.test(value)\n\nconst isNever = () => false\n\nconst isShadow = (value: string) => shadowRegex.test(value)\n\nconst isImage = (value: string) => imageRegex.test(value)\n","import { fromTheme } from './from-theme'\nimport { Config, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\nimport {\n isAny,\n isArbitraryImage,\n isArbitraryLength,\n isArbitraryNumber,\n isArbitraryPosition,\n isArbitraryShadow,\n isArbitrarySize,\n isArbitraryValue,\n isInteger,\n isLength,\n isNumber,\n isPercent,\n isTshirtSize,\n} from './validators'\n\nexport const getDefaultConfig = () => {\n const colors = fromTheme('colors')\n const spacing = fromTheme('spacing')\n const blur = fromTheme('blur')\n const brightness = fromTheme('brightness')\n const borderColor = fromTheme('borderColor')\n const borderRadius = fromTheme('borderRadius')\n const borderSpacing = fromTheme('borderSpacing')\n const borderWidth = fromTheme('borderWidth')\n const contrast = fromTheme('contrast')\n const grayscale = fromTheme('grayscale')\n const hueRotate = fromTheme('hueRotate')\n const invert = fromTheme('invert')\n const gap = fromTheme('gap')\n const gradientColorStops = fromTheme('gradientColorStops')\n const gradientColorStopPositions = fromTheme('gradientColorStopPositions')\n const inset = fromTheme('inset')\n const margin = fromTheme('margin')\n const opacity = fromTheme('opacity')\n const padding = fromTheme('padding')\n const saturate = fromTheme('saturate')\n const scale = fromTheme('scale')\n const sepia = fromTheme('sepia')\n const skew = fromTheme('skew')\n const space = fromTheme('space')\n const translate = fromTheme('translate')\n\n const getOverscroll = () => ['auto', 'contain', 'none'] as const\n const getOverflow = () => ['auto', 'hidden', 'clip', 'visible', 'scroll'] as const\n const getSpacingWithAutoAndArbitrary = () => ['auto', isArbitraryValue, spacing] as const\n const getSpacingWithArbitrary = () => [isArbitraryValue, spacing] as const\n const getLengthWithEmptyAndArbitrary = () => ['', isLength, isArbitraryLength] as const\n const getNumberWithAutoAndArbitrary = () => ['auto', isNumber, isArbitraryValue] as const\n const getPositions = () =>\n [\n 'bottom',\n 'center',\n 'left',\n 'left-bottom',\n 'left-top',\n 'right',\n 'right-bottom',\n 'right-top',\n 'top',\n ] as const\n const getLineStyles = () => ['solid', 'dashed', 'dotted', 'double', 'none'] as const\n const getBlendModes = () =>\n [\n 'normal',\n 'multiply',\n 'screen',\n 'overlay',\n 'darken',\n 'lighten',\n 'color-dodge',\n 'color-burn',\n 'hard-light',\n 'soft-light',\n 'difference',\n 'exclusion',\n 'hue',\n 'saturation',\n 'color',\n 'luminosity',\n ] as const\n const getAlign = () =>\n ['start', 'end', 'center', 'between', 'around', 'evenly', 'stretch'] as const\n const getZeroAndEmpty = () => ['', '0', isArbitraryValue] as const\n const getBreaks = () =>\n ['auto', 'avoid', 'all', 'avoid-page', 'page', 'left', 'right', 'column'] as const\n const getNumberAndArbitrary = () => [isNumber, isArbitraryValue]\n\n return {\n cacheSize: 500,\n separator: ':',\n theme: {\n colors: [isAny],\n spacing: [isLength, isArbitraryLength],\n blur: ['none', '', isTshirtSize, isArbitraryValue],\n brightness: getNumberAndArbitrary(),\n borderColor: [colors],\n borderRadius: ['none', '', 'full', isTshirtSize, isArbitraryValue],\n borderSpacing: getSpacingWithArbitrary(),\n borderWidth: getLengthWithEmptyAndArbitrary(),\n contrast: getNumberAndArbitrary(),\n grayscale: getZeroAndEmpty(),\n hueRotate: getNumberAndArbitrary(),\n invert: getZeroAndEmpty(),\n gap: getSpacingWithArbitrary(),\n gradientColorStops: [colors],\n gradientColorStopPositions: [isPercent, isArbitraryLength],\n inset: getSpacingWithAutoAndArbitrary(),\n margin: getSpacingWithAutoAndArbitrary(),\n opacity: getNumberAndArbitrary(),\n padding: getSpacingWithArbitrary(),\n saturate: getNumberAndArbitrary(),\n scale: getNumberAndArbitrary(),\n sepia: getZeroAndEmpty(),\n skew: getNumberAndArbitrary(),\n space: getSpacingWithArbitrary(),\n translate: getSpacingWithArbitrary(),\n },\n classGroups: {\n // Layout\n /**\n * Aspect Ratio\n * @see https://tailwindcss.com/docs/aspect-ratio\n */\n aspect: [{ aspect: ['auto', 'square', 'video', isArbitraryValue] }],\n /**\n * Container\n * @see https://tailwindcss.com/docs/container\n */\n container: ['container'],\n /**\n * Columns\n * @see https://tailwindcss.com/docs/columns\n */\n columns: [{ columns: [isTshirtSize] }],\n /**\n * Break After\n * @see https://tailwindcss.com/docs/break-after\n */\n 'break-after': [{ 'break-after': getBreaks() }],\n /**\n * Break Before\n * @see https://tailwindcss.com/docs/break-before\n */\n 'break-before': [{ 'break-before': getBreaks() }],\n /**\n * Break Inside\n * @see https://tailwindcss.com/docs/break-inside\n */\n 'break-inside': [{ 'break-inside': ['auto', 'avoid', 'avoid-page', 'avoid-column'] }],\n /**\n * Box Decoration Break\n * @see https://tailwindcss.com/docs/box-decoration-break\n */\n 'box-decoration': [{ 'box-decoration': ['slice', 'clone'] }],\n /**\n * Box Sizing\n * @see https://tailwindcss.com/docs/box-sizing\n */\n box: [{ box: ['border', 'content'] }],\n /**\n * Display\n * @see https://tailwindcss.com/docs/display\n */\n display: [\n 'block',\n 'inline-block',\n 'inline',\n 'flex',\n 'inline-flex',\n 'table',\n 'inline-table',\n 'table-caption',\n 'table-cell',\n 'table-column',\n 'table-column-group',\n 'table-footer-group',\n 'table-header-group',\n 'table-row-group',\n 'table-row',\n 'flow-root',\n 'grid',\n 'inline-grid',\n 'contents',\n 'list-item',\n 'hidden',\n ],\n /**\n * Floats\n * @see https://tailwindcss.com/docs/float\n */\n float: [{ float: ['right', 'left', 'none', 'start', 'end'] }],\n /**\n * Clear\n * @see https://tailwindcss.com/docs/clear\n */\n clear: [{ clear: ['left', 'right', 'both', 'none', 'start', 'end'] }],\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': [{ object: ['contain', 'cover', 'fill', 'none', 'scale-down'] }],\n /**\n * Object Position\n * @see https://tailwindcss.com/docs/object-position\n */\n 'object-position': [{ object: [...getPositions(), isArbitraryValue] }],\n /**\n * Overflow\n * @see https://tailwindcss.com/docs/overflow\n */\n overflow: [{ overflow: getOverflow() }],\n /**\n * Overflow X\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-x': [{ 'overflow-x': getOverflow() }],\n /**\n * Overflow Y\n * @see https://tailwindcss.com/docs/overflow\n */\n 'overflow-y': [{ 'overflow-y': getOverflow() }],\n /**\n * Overscroll Behavior\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n overscroll: [{ overscroll: getOverscroll() }],\n /**\n * Overscroll Behavior X\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-x': [{ 'overscroll-x': getOverscroll() }],\n /**\n * Overscroll Behavior Y\n * @see https://tailwindcss.com/docs/overscroll-behavior\n */\n 'overscroll-y': [{ 'overscroll-y': getOverscroll() }],\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: [{ inset: [inset] }],\n /**\n * Right / Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-x': [{ 'inset-x': [inset] }],\n /**\n * Top / Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n 'inset-y': [{ 'inset-y': [inset] }],\n /**\n * Start\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n start: [{ start: [inset] }],\n /**\n * End\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n end: [{ end: [inset] }],\n /**\n * Top\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n top: [{ top: [inset] }],\n /**\n * Right\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n right: [{ right: [inset] }],\n /**\n * Bottom\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n bottom: [{ bottom: [inset] }],\n /**\n * Left\n * @see https://tailwindcss.com/docs/top-right-bottom-left\n */\n left: [{ left: [inset] }],\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: [{ z: ['auto', isInteger, isArbitraryValue] }],\n // Flexbox and Grid\n /**\n * Flex Basis\n * @see https://tailwindcss.com/docs/flex-basis\n */\n basis: [{ basis: getSpacingWithAutoAndArbitrary() }],\n /**\n * Flex Direction\n * @see https://tailwindcss.com/docs/flex-direction\n */\n 'flex-direction': [{ flex: ['row', 'row-reverse', 'col', 'col-reverse'] }],\n /**\n * Flex Wrap\n * @see https://tailwindcss.com/docs/flex-wrap\n */\n 'flex-wrap': [{ flex: ['wrap', 'wrap-reverse', 'nowrap'] }],\n /**\n * Flex\n * @see https://tailwindcss.com/docs/flex\n */\n flex: [{ flex: ['1', 'auto', 'initial', 'none', isArbitraryValue] }],\n /**\n * Flex Grow\n * @see https://tailwindcss.com/docs/flex-grow\n */\n grow: [{ grow: getZeroAndEmpty() }],\n /**\n * Flex Shrink\n * @see https://tailwindcss.com/docs/flex-shrink\n */\n shrink: [{ shrink: getZeroAndEmpty() }],\n /**\n * Order\n * @see https://tailwindcss.com/docs/order\n */\n order: [{ order: ['first', 'last', 'none', isInteger, isArbitraryValue] }],\n /**\n * Grid Template Columns\n * @see https://tailwindcss.com/docs/grid-template-columns\n */\n 'grid-cols': [{ 'grid-cols': [isAny] }],\n /**\n * Grid Column Start / End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start-end': [\n {\n col: [\n 'auto',\n { span: ['full', isInteger, isArbitraryValue] },\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Grid Column Start\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-start': [{ 'col-start': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Column End\n * @see https://tailwindcss.com/docs/grid-column\n */\n 'col-end': [{ 'col-end': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Template Rows\n * @see https://tailwindcss.com/docs/grid-template-rows\n */\n 'grid-rows': [{ 'grid-rows': [isAny] }],\n /**\n * Grid Row Start / End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start-end': [\n { row: ['auto', { span: [isInteger, isArbitraryValue] }, isArbitraryValue] },\n ],\n /**\n * Grid Row Start\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-start': [{ 'row-start': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Row End\n * @see https://tailwindcss.com/docs/grid-row\n */\n 'row-end': [{ 'row-end': getNumberWithAutoAndArbitrary() }],\n /**\n * Grid Auto Flow\n * @see https://tailwindcss.com/docs/grid-auto-flow\n */\n 'grid-flow': [{ 'grid-flow': ['row', 'col', 'dense', 'row-dense', 'col-dense'] }],\n /**\n * Grid Auto Columns\n * @see https://tailwindcss.com/docs/grid-auto-columns\n */\n 'auto-cols': [{ 'auto-cols': ['auto', 'min', 'max', 'fr', isArbitraryValue] }],\n /**\n * Grid Auto Rows\n * @see https://tailwindcss.com/docs/grid-auto-rows\n */\n 'auto-rows': [{ 'auto-rows': ['auto', 'min', 'max', 'fr', isArbitraryValue] }],\n /**\n * Gap\n * @see https://tailwindcss.com/docs/gap\n */\n gap: [{ gap: [gap] }],\n /**\n * Gap X\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-x': [{ 'gap-x': [gap] }],\n /**\n * Gap Y\n * @see https://tailwindcss.com/docs/gap\n */\n 'gap-y': [{ 'gap-y': [gap] }],\n /**\n * Justify Content\n * @see https://tailwindcss.com/docs/justify-content\n */\n 'justify-content': [{ justify: ['normal', ...getAlign()] }],\n /**\n * Justify Items\n * @see https://tailwindcss.com/docs/justify-items\n */\n 'justify-items': [{ 'justify-items': ['start', 'end', 'center', 'stretch'] }],\n /**\n * Justify Self\n * @see https://tailwindcss.com/docs/justify-self\n */\n 'justify-self': [{ 'justify-self': ['auto', 'start', 'end', 'center', 'stretch'] }],\n /**\n * Align Content\n * @see https://tailwindcss.com/docs/align-content\n */\n 'align-content': [{ content: ['normal', ...getAlign(), 'baseline'] }],\n /**\n * Align Items\n * @see https://tailwindcss.com/docs/align-items\n */\n 'align-items': [{ items: ['start', 'end', 'center', 'baseline', 'stretch'] }],\n /**\n * Align Self\n * @see https://tailwindcss.com/docs/align-self\n */\n 'align-self': [{ self: ['auto', 'start', 'end', 'center', 'stretch', 'baseline'] }],\n /**\n * Place Content\n * @see https://tailwindcss.com/docs/place-content\n */\n 'place-content': [{ 'place-content': [...getAlign(), 'baseline'] }],\n /**\n * Place Items\n * @see https://tailwindcss.com/docs/place-items\n */\n 'place-items': [{ 'place-items': ['start', 'end', 'center', 'baseline', 'stretch'] }],\n /**\n * Place Self\n * @see https://tailwindcss.com/docs/place-self\n */\n 'place-self': [{ 'place-self': ['auto', 'start', 'end', 'center', 'stretch'] }],\n // Spacing\n /**\n * Padding\n * @see https://tailwindcss.com/docs/padding\n */\n p: [{ p: [padding] }],\n /**\n * Padding X\n * @see https://tailwindcss.com/docs/padding\n */\n px: [{ px: [padding] }],\n /**\n * Padding Y\n * @see https://tailwindcss.com/docs/padding\n */\n py: [{ py: [padding] }],\n /**\n * Padding Start\n * @see https://tailwindcss.com/docs/padding\n */\n ps: [{ ps: [padding] }],\n /**\n * Padding End\n * @see https://tailwindcss.com/docs/padding\n */\n pe: [{ pe: [padding] }],\n /**\n * Padding Top\n * @see https://tailwindcss.com/docs/padding\n */\n pt: [{ pt: [padding] }],\n /**\n * Padding Right\n * @see https://tailwindcss.com/docs/padding\n */\n pr: [{ pr: [padding] }],\n /**\n * Padding Bottom\n * @see https://tailwindcss.com/docs/padding\n */\n pb: [{ pb: [padding] }],\n /**\n * Padding Left\n * @see https://tailwindcss.com/docs/padding\n */\n pl: [{ pl: [padding] }],\n /**\n * Margin\n * @see https://tailwindcss.com/docs/margin\n */\n m: [{ m: [margin] }],\n /**\n * Margin X\n * @see https://tailwindcss.com/docs/margin\n */\n mx: [{ mx: [margin] }],\n /**\n * Margin Y\n * @see https://tailwindcss.com/docs/margin\n */\n my: [{ my: [margin] }],\n /**\n * Margin Start\n * @see https://tailwindcss.com/docs/margin\n */\n ms: [{ ms: [margin] }],\n /**\n * Margin End\n * @see https://tailwindcss.com/docs/margin\n */\n me: [{ me: [margin] }],\n /**\n * Margin Top\n * @see https://tailwindcss.com/docs/margin\n */\n mt: [{ mt: [margin] }],\n /**\n * Margin Right\n * @see https://tailwindcss.com/docs/margin\n */\n mr: [{ mr: [margin] }],\n /**\n * Margin Bottom\n * @see https://tailwindcss.com/docs/margin\n */\n mb: [{ mb: [margin] }],\n /**\n * Margin Left\n * @see https://tailwindcss.com/docs/margin\n */\n ml: [{ ml: [margin] }],\n /**\n * Space Between X\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x': [{ 'space-x': [space] }],\n /**\n * Space Between X Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-x-reverse': ['space-x-reverse'],\n /**\n * Space Between Y\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y': [{ 'space-y': [space] }],\n /**\n * Space Between Y Reverse\n * @see https://tailwindcss.com/docs/space\n */\n 'space-y-reverse': ['space-y-reverse'],\n // Sizing\n /**\n * Width\n * @see https://tailwindcss.com/docs/width\n */\n w: [\n {\n w: [\n 'auto',\n 'min',\n 'max',\n 'fit',\n 'svw',\n 'lvw',\n 'dvw',\n isArbitraryValue,\n spacing,\n ],\n },\n ],\n /**\n * Min-Width\n * @see https://tailwindcss.com/docs/min-width\n */\n 'min-w': [{ 'min-w': [isArbitraryValue, spacing, 'min', 'max', 'fit'] }],\n /**\n * Max-Width\n * @see https://tailwindcss.com/docs/max-width\n */\n 'max-w': [\n {\n 'max-w': [\n isArbitraryValue,\n spacing,\n 'none',\n 'full',\n 'min',\n 'max',\n 'fit',\n 'prose',\n { screen: [isTshirtSize] },\n isTshirtSize,\n ],\n },\n ],\n /**\n * Height\n * @see https://tailwindcss.com/docs/height\n */\n h: [\n {\n h: [\n isArbitraryValue,\n spacing,\n 'auto',\n 'min',\n 'max',\n 'fit',\n 'svh',\n 'lvh',\n 'dvh',\n ],\n },\n ],\n /**\n * Min-Height\n * @see https://tailwindcss.com/docs/min-height\n */\n 'min-h': [\n { 'min-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh'] },\n ],\n /**\n * Max-Height\n * @see https://tailwindcss.com/docs/max-height\n */\n 'max-h': [\n { 'max-h': [isArbitraryValue, spacing, 'min', 'max', 'fit', 'svh', 'lvh', 'dvh'] },\n ],\n /**\n * Size\n * @see https://tailwindcss.com/docs/size\n */\n size: [{ size: [isArbitraryValue, spacing, 'auto', 'min', 'max', 'fit'] }],\n // Typography\n /**\n * Font Size\n * @see https://tailwindcss.com/docs/font-size\n */\n 'font-size': [{ text: ['base', isTshirtSize, isArbitraryLength] }],\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 {\n font: [\n 'thin',\n 'extralight',\n 'light',\n 'normal',\n 'medium',\n 'semibold',\n 'bold',\n 'extrabold',\n 'black',\n isArbitraryNumber,\n ],\n },\n ],\n /**\n * Font Family\n * @see https://tailwindcss.com/docs/font-family\n */\n 'font-family': [{ font: [isAny] }],\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 {\n tracking: [\n 'tighter',\n 'tight',\n 'normal',\n 'wide',\n 'wider',\n 'widest',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Line Clamp\n * @see https://tailwindcss.com/docs/line-clamp\n */\n 'line-clamp': [{ 'line-clamp': ['none', isNumber, isArbitraryNumber] }],\n /**\n * Line Height\n * @see https://tailwindcss.com/docs/line-height\n */\n leading: [\n {\n leading: [\n 'none',\n 'tight',\n 'snug',\n 'normal',\n 'relaxed',\n 'loose',\n isLength,\n isArbitraryValue,\n ],\n },\n ],\n /**\n * List Style Image\n * @see https://tailwindcss.com/docs/list-style-image\n */\n 'list-image': [{ 'list-image': ['none', isArbitraryValue] }],\n /**\n * List Style Type\n * @see https://tailwindcss.com/docs/list-style-type\n */\n 'list-style-type': [{ list: ['none', 'disc', 'decimal', isArbitraryValue] }],\n /**\n * List Style Position\n * @see https://tailwindcss.com/docs/list-style-position\n */\n 'list-style-position': [{ list: ['inside', 'outside'] }],\n /**\n * Placeholder Color\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/placeholder-color\n */\n 'placeholder-color': [{ placeholder: [colors] }],\n /**\n * Placeholder Opacity\n * @see https://tailwindcss.com/docs/placeholder-opacity\n */\n 'placeholder-opacity': [{ 'placeholder-opacity': [opacity] }],\n /**\n * Text Alignment\n * @see https://tailwindcss.com/docs/text-align\n */\n 'text-alignment': [{ text: ['left', 'center', 'right', 'justify', 'start', 'end'] }],\n /**\n * Text Color\n * @see https://tailwindcss.com/docs/text-color\n */\n 'text-color': [{ text: [colors] }],\n /**\n * Text Opacity\n * @see https://tailwindcss.com/docs/text-opacity\n */\n 'text-opacity': [{ 'text-opacity': [opacity] }],\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': [{ decoration: [...getLineStyles(), 'wavy'] }],\n /**\n * Text Decoration Thickness\n * @see https://tailwindcss.com/docs/text-decoration-thickness\n */\n 'text-decoration-thickness': [\n { decoration: ['auto', 'from-font', isLength, isArbitraryLength] },\n ],\n /**\n * Text Underline Offset\n * @see https://tailwindcss.com/docs/text-underline-offset\n */\n 'underline-offset': [{ 'underline-offset': ['auto', isLength, isArbitraryValue] }],\n /**\n * Text Decoration Color\n * @see https://tailwindcss.com/docs/text-decoration-color\n */\n 'text-decoration-color': [{ decoration: [colors] }],\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': [{ text: ['wrap', 'nowrap', 'balance', 'pretty'] }],\n /**\n * Text Indent\n * @see https://tailwindcss.com/docs/text-indent\n */\n indent: [{ indent: getSpacingWithArbitrary() }],\n /**\n * Vertical Alignment\n * @see https://tailwindcss.com/docs/vertical-align\n */\n 'vertical-align': [\n {\n align: [\n 'baseline',\n 'top',\n 'middle',\n 'bottom',\n 'text-top',\n 'text-bottom',\n 'sub',\n 'super',\n isArbitraryValue,\n ],\n },\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: [{ break: ['normal', 'words', 'all', 'keep'] }],\n /**\n * Hyphens\n * @see https://tailwindcss.com/docs/hyphens\n */\n hyphens: [{ hyphens: ['none', 'manual', 'auto'] }],\n /**\n * Content\n * @see https://tailwindcss.com/docs/content\n */\n content: [{ content: ['none', isArbitraryValue] }],\n // Backgrounds\n /**\n * Background Attachment\n * @see https://tailwindcss.com/docs/background-attachment\n */\n 'bg-attachment': [{ bg: ['fixed', 'local', 'scroll'] }],\n /**\n * Background Clip\n * @see https://tailwindcss.com/docs/background-clip\n */\n 'bg-clip': [{ 'bg-clip': ['border', 'padding', 'content', 'text'] }],\n /**\n * Background Opacity\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/background-opacity\n */\n 'bg-opacity': [{ 'bg-opacity': [opacity] }],\n /**\n * Background Origin\n * @see https://tailwindcss.com/docs/background-origin\n */\n 'bg-origin': [{ 'bg-origin': ['border', 'padding', 'content'] }],\n /**\n * Background Position\n * @see https://tailwindcss.com/docs/background-position\n */\n 'bg-position': [{ bg: [...getPositions(), isArbitraryPosition] }],\n /**\n * Background Repeat\n * @see https://tailwindcss.com/docs/background-repeat\n */\n 'bg-repeat': [{ bg: ['no-repeat', { repeat: ['', 'x', 'y', 'round', 'space'] }] }],\n /**\n * Background Size\n * @see https://tailwindcss.com/docs/background-size\n */\n 'bg-size': [{ bg: ['auto', 'cover', 'contain', isArbitrarySize] }],\n /**\n * Background Image\n * @see https://tailwindcss.com/docs/background-image\n */\n 'bg-image': [\n {\n bg: [\n 'none',\n { 'gradient-to': ['t', 'tr', 'r', 'br', 'b', 'bl', 'l', 'tl'] },\n isArbitraryImage,\n ],\n },\n ],\n /**\n * Background Color\n * @see https://tailwindcss.com/docs/background-color\n */\n 'bg-color': [{ bg: [colors] }],\n /**\n * Gradient Color Stops From Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from-pos': [{ from: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops Via Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via-pos': [{ via: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops To Position\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to-pos': [{ to: [gradientColorStopPositions] }],\n /**\n * Gradient Color Stops From\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-from': [{ from: [gradientColorStops] }],\n /**\n * Gradient Color Stops Via\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-via': [{ via: [gradientColorStops] }],\n /**\n * Gradient Color Stops To\n * @see https://tailwindcss.com/docs/gradient-color-stops\n */\n 'gradient-to': [{ to: [gradientColorStops] }],\n // Borders\n /**\n * Border Radius\n * @see https://tailwindcss.com/docs/border-radius\n */\n rounded: [{ rounded: [borderRadius] }],\n /**\n * Border Radius Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-s': [{ 'rounded-s': [borderRadius] }],\n /**\n * Border Radius End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-e': [{ 'rounded-e': [borderRadius] }],\n /**\n * Border Radius Top\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-t': [{ 'rounded-t': [borderRadius] }],\n /**\n * Border Radius Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-r': [{ 'rounded-r': [borderRadius] }],\n /**\n * Border Radius Bottom\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-b': [{ 'rounded-b': [borderRadius] }],\n /**\n * Border Radius Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-l': [{ 'rounded-l': [borderRadius] }],\n /**\n * Border Radius Start Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ss': [{ 'rounded-ss': [borderRadius] }],\n /**\n * Border Radius Start End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-se': [{ 'rounded-se': [borderRadius] }],\n /**\n * Border Radius End End\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-ee': [{ 'rounded-ee': [borderRadius] }],\n /**\n * Border Radius End Start\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-es': [{ 'rounded-es': [borderRadius] }],\n /**\n * Border Radius Top Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tl': [{ 'rounded-tl': [borderRadius] }],\n /**\n * Border Radius Top Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-tr': [{ 'rounded-tr': [borderRadius] }],\n /**\n * Border Radius Bottom Right\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-br': [{ 'rounded-br': [borderRadius] }],\n /**\n * Border Radius Bottom Left\n * @see https://tailwindcss.com/docs/border-radius\n */\n 'rounded-bl': [{ 'rounded-bl': [borderRadius] }],\n /**\n * Border Width\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w': [{ border: [borderWidth] }],\n /**\n * Border Width X\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-x': [{ 'border-x': [borderWidth] }],\n /**\n * Border Width Y\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-y': [{ 'border-y': [borderWidth] }],\n /**\n * Border Width Start\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-s': [{ 'border-s': [borderWidth] }],\n /**\n * Border Width End\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-e': [{ 'border-e': [borderWidth] }],\n /**\n * Border Width Top\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-t': [{ 'border-t': [borderWidth] }],\n /**\n * Border Width Right\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-r': [{ 'border-r': [borderWidth] }],\n /**\n * Border Width Bottom\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-b': [{ 'border-b': [borderWidth] }],\n /**\n * Border Width Left\n * @see https://tailwindcss.com/docs/border-width\n */\n 'border-w-l': [{ 'border-l': [borderWidth] }],\n /**\n * Border Opacity\n * @see https://tailwindcss.com/docs/border-opacity\n */\n 'border-opacity': [{ 'border-opacity': [opacity] }],\n /**\n * Border Style\n * @see https://tailwindcss.com/docs/border-style\n */\n 'border-style': [{ border: [...getLineStyles(), 'hidden'] }],\n /**\n * Divide Width X\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x': [{ 'divide-x': [borderWidth] }],\n /**\n * Divide Width X Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-x-reverse': ['divide-x-reverse'],\n /**\n * Divide Width Y\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y': [{ 'divide-y': [borderWidth] }],\n /**\n * Divide Width Y Reverse\n * @see https://tailwindcss.com/docs/divide-width\n */\n 'divide-y-reverse': ['divide-y-reverse'],\n /**\n * Divide Opacity\n * @see https://tailwindcss.com/docs/divide-opacity\n */\n 'divide-opacity': [{ 'divide-opacity': [opacity] }],\n /**\n * Divide Style\n * @see https://tailwindcss.com/docs/divide-style\n */\n 'divide-style': [{ divide: getLineStyles() }],\n /**\n * Border Color\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color': [{ border: [borderColor] }],\n /**\n * Border Color X\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-x': [{ 'border-x': [borderColor] }],\n /**\n * Border Color Y\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-y': [{ 'border-y': [borderColor] }],\n /**\n * Border Color S\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-s': [{ 'border-s': [borderColor] }],\n /**\n * Border Color E\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-e': [{ 'border-e': [borderColor] }],\n /**\n * Border Color Top\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-t': [{ 'border-t': [borderColor] }],\n /**\n * Border Color Right\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-r': [{ 'border-r': [borderColor] }],\n /**\n * Border Color Bottom\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-b': [{ 'border-b': [borderColor] }],\n /**\n * Border Color Left\n * @see https://tailwindcss.com/docs/border-color\n */\n 'border-color-l': [{ 'border-l': [borderColor] }],\n /**\n * Divide Color\n * @see https://tailwindcss.com/docs/divide-color\n */\n 'divide-color': [{ divide: [borderColor] }],\n /**\n * Outline Style\n * @see https://tailwindcss.com/docs/outline-style\n */\n 'outline-style': [{ outline: ['', ...getLineStyles()] }],\n /**\n * Outline Offset\n * @see https://tailwindcss.com/docs/outline-offset\n */\n 'outline-offset': [{ 'outline-offset': [isLength, isArbitraryValue] }],\n /**\n * Outline Width\n * @see https://tailwindcss.com/docs/outline-width\n */\n 'outline-w': [{ outline: [isLength, isArbitraryLength] }],\n /**\n * Outline Color\n * @see https://tailwindcss.com/docs/outline-color\n */\n 'outline-color': [{ outline: [colors] }],\n /**\n * Ring Width\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w': [{ ring: getLengthWithEmptyAndArbitrary() }],\n /**\n * Ring Width Inset\n * @see https://tailwindcss.com/docs/ring-width\n */\n 'ring-w-inset': ['ring-inset'],\n /**\n * Ring Color\n * @see https://tailwindcss.com/docs/ring-color\n */\n 'ring-color': [{ ring: [colors] }],\n /**\n * Ring Opacity\n * @see https://tailwindcss.com/docs/ring-opacity\n */\n 'ring-opacity': [{ 'ring-opacity': [opacity] }],\n /**\n * Ring Offset Width\n * @see https://tailwindcss.com/docs/ring-offset-width\n */\n 'ring-offset-w': [{ 'ring-offset': [isLength, isArbitraryLength] }],\n /**\n * Ring Offset Color\n * @see https://tailwindcss.com/docs/ring-offset-color\n */\n 'ring-offset-color': [{ 'ring-offset': [colors] }],\n // Effects\n /**\n * Box Shadow\n * @see https://tailwindcss.com/docs/box-shadow\n */\n shadow: [{ shadow: ['', 'inner', 'none', isTshirtSize, isArbitraryShadow] }],\n /**\n * Box Shadow Color\n * @see https://tailwindcss.com/docs/box-shadow-color\n */\n 'shadow-color': [{ shadow: [isAny] }],\n /**\n * Opacity\n * @see https://tailwindcss.com/docs/opacity\n */\n opacity: [{ opacity: [opacity] }],\n /**\n * Mix Blend Mode\n * @see https://tailwindcss.com/docs/mix-blend-mode\n */\n 'mix-blend': [{ 'mix-blend': [...getBlendModes(), 'plus-lighter', 'plus-darker'] }],\n /**\n * Background Blend Mode\n * @see https://tailwindcss.com/docs/background-blend-mode\n */\n 'bg-blend': [{ 'bg-blend': getBlendModes() }],\n // Filters\n /**\n * Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/filter\n */\n filter: [{ filter: ['', 'none'] }],\n /**\n * Blur\n * @see https://tailwindcss.com/docs/blur\n */\n blur: [{ blur: [blur] }],\n /**\n * Brightness\n * @see https://tailwindcss.com/docs/brightness\n */\n brightness: [{ brightness: [brightness] }],\n /**\n * Contrast\n * @see https://tailwindcss.com/docs/contrast\n */\n contrast: [{ contrast: [contrast] }],\n /**\n * Drop Shadow\n * @see https://tailwindcss.com/docs/drop-shadow\n */\n 'drop-shadow': [{ 'drop-shadow': ['', 'none', isTshirtSize, isArbitraryValue] }],\n /**\n * Grayscale\n * @see https://tailwindcss.com/docs/grayscale\n */\n grayscale: [{ grayscale: [grayscale] }],\n /**\n * Hue Rotate\n * @see https://tailwindcss.com/docs/hue-rotate\n */\n 'hue-rotate': [{ 'hue-rotate': [hueRotate] }],\n /**\n * Invert\n * @see https://tailwindcss.com/docs/invert\n */\n invert: [{ invert: [invert] }],\n /**\n * Saturate\n * @see https://tailwindcss.com/docs/saturate\n */\n saturate: [{ saturate: [saturate] }],\n /**\n * Sepia\n * @see https://tailwindcss.com/docs/sepia\n */\n sepia: [{ sepia: [sepia] }],\n /**\n * Backdrop Filter\n * @deprecated since Tailwind CSS v3.0.0\n * @see https://tailwindcss.com/docs/backdrop-filter\n */\n 'backdrop-filter': [{ 'backdrop-filter': ['', 'none'] }],\n /**\n * Backdrop Blur\n * @see https://tailwindcss.com/docs/backdrop-blur\n */\n 'backdrop-blur': [{ 'backdrop-blur': [blur] }],\n /**\n * Backdrop Brightness\n * @see https://tailwindcss.com/docs/backdrop-brightness\n */\n 'backdrop-brightness': [{ 'backdrop-brightness': [brightness] }],\n /**\n * Backdrop Contrast\n * @see https://tailwindcss.com/docs/backdrop-contrast\n */\n 'backdrop-contrast': [{ 'backdrop-contrast': [contrast] }],\n /**\n * Backdrop Grayscale\n * @see https://tailwindcss.com/docs/backdrop-grayscale\n */\n 'backdrop-grayscale': [{ 'backdrop-grayscale': [grayscale] }],\n /**\n * Backdrop Hue Rotate\n * @see https://tailwindcss.com/docs/backdrop-hue-rotate\n */\n 'backdrop-hue-rotate': [{ 'backdrop-hue-rotate': [hueRotate] }],\n /**\n * Backdrop Invert\n * @see https://tailwindcss.com/docs/backdrop-invert\n */\n 'backdrop-invert': [{ 'backdrop-invert': [invert] }],\n /**\n * Backdrop Opacity\n * @see https://tailwindcss.com/docs/backdrop-opacity\n */\n 'backdrop-opacity': [{ 'backdrop-opacity': [opacity] }],\n /**\n * Backdrop Saturate\n * @see https://tailwindcss.com/docs/backdrop-saturate\n */\n 'backdrop-saturate': [{ 'backdrop-saturate': [saturate] }],\n /**\n * Backdrop Sepia\n * @see https://tailwindcss.com/docs/backdrop-sepia\n */\n 'backdrop-sepia': [{ 'backdrop-sepia': [sepia] }],\n // Tables\n /**\n * Border Collapse\n * @see https://tailwindcss.com/docs/border-collapse\n */\n 'border-collapse': [{ border: ['collapse', 'separate'] }],\n /**\n * Border Spacing\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing': [{ 'border-spacing': [borderSpacing] }],\n /**\n * Border Spacing X\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-x': [{ 'border-spacing-x': [borderSpacing] }],\n /**\n * Border Spacing Y\n * @see https://tailwindcss.com/docs/border-spacing\n */\n 'border-spacing-y': [{ 'border-spacing-y': [borderSpacing] }],\n /**\n * Table Layout\n * @see https://tailwindcss.com/docs/table-layout\n */\n 'table-layout': [{ table: ['auto', 'fixed'] }],\n /**\n * Caption Side\n * @see https://tailwindcss.com/docs/caption-side\n */\n caption: [{ caption: ['top', 'bottom'] }],\n // Transitions and Animation\n /**\n * Tranisition Property\n * @see https://tailwindcss.com/docs/transition-property\n */\n transition: [\n {\n transition: [\n 'none',\n 'all',\n '',\n 'colors',\n 'opacity',\n 'shadow',\n 'transform',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Transition Duration\n * @see https://tailwindcss.com/docs/transition-duration\n */\n duration: [{ duration: getNumberAndArbitrary() }],\n /**\n * Transition Timing Function\n * @see https://tailwindcss.com/docs/transition-timing-function\n */\n ease: [{ ease: ['linear', 'in', 'out', 'in-out', isArbitraryValue] }],\n /**\n * Transition Delay\n * @see https://tailwindcss.com/docs/transition-delay\n */\n delay: [{ delay: getNumberAndArbitrary() }],\n /**\n * Animation\n * @see https://tailwindcss.com/docs/animation\n */\n animate: [{ animate: ['none', 'spin', 'ping', 'pulse', 'bounce', isArbitraryValue] }],\n // Transforms\n /**\n * Transform\n * @see https://tailwindcss.com/docs/transform\n */\n transform: [{ transform: ['', 'gpu', 'none'] }],\n /**\n * Scale\n * @see https://tailwindcss.com/docs/scale\n */\n scale: [{ scale: [scale] }],\n /**\n * Scale X\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-x': [{ 'scale-x': [scale] }],\n /**\n * Scale Y\n * @see https://tailwindcss.com/docs/scale\n */\n 'scale-y': [{ 'scale-y': [scale] }],\n /**\n * Rotate\n * @see https://tailwindcss.com/docs/rotate\n */\n rotate: [{ rotate: [isInteger, isArbitraryValue] }],\n /**\n * Translate X\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-x': [{ 'translate-x': [translate] }],\n /**\n * Translate Y\n * @see https://tailwindcss.com/docs/translate\n */\n 'translate-y': [{ 'translate-y': [translate] }],\n /**\n * Skew X\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-x': [{ 'skew-x': [skew] }],\n /**\n * Skew Y\n * @see https://tailwindcss.com/docs/skew\n */\n 'skew-y': [{ 'skew-y': [skew] }],\n /**\n * Transform Origin\n * @see https://tailwindcss.com/docs/transform-origin\n */\n 'transform-origin': [\n {\n origin: [\n 'center',\n 'top',\n 'top-right',\n 'right',\n 'bottom-right',\n 'bottom',\n 'bottom-left',\n 'left',\n 'top-left',\n isArbitraryValue,\n ],\n },\n ],\n // Interactivity\n /**\n * Accent Color\n * @see https://tailwindcss.com/docs/accent-color\n */\n accent: [{ accent: ['auto', colors] }],\n /**\n * Appearance\n * @see https://tailwindcss.com/docs/appearance\n */\n appearance: [{ appearance: ['none', 'auto'] }],\n /**\n * Cursor\n * @see https://tailwindcss.com/docs/cursor\n */\n cursor: [\n {\n cursor: [\n 'auto',\n 'default',\n 'pointer',\n 'wait',\n 'text',\n 'move',\n 'help',\n 'not-allowed',\n 'none',\n 'context-menu',\n 'progress',\n 'cell',\n 'crosshair',\n 'vertical-text',\n 'alias',\n 'copy',\n 'no-drop',\n 'grab',\n 'grabbing',\n 'all-scroll',\n 'col-resize',\n 'row-resize',\n 'n-resize',\n 'e-resize',\n 's-resize',\n 'w-resize',\n 'ne-resize',\n 'nw-resize',\n 'se-resize',\n 'sw-resize',\n 'ew-resize',\n 'ns-resize',\n 'nesw-resize',\n 'nwse-resize',\n 'zoom-in',\n 'zoom-out',\n isArbitraryValue,\n ],\n },\n ],\n /**\n * Caret Color\n * @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities\n */\n 'caret-color': [{ caret: [colors] }],\n /**\n * Pointer Events\n * @see https://tailwindcss.com/docs/pointer-events\n */\n 'pointer-events': [{ 'pointer-events': ['none', 'auto'] }],\n /**\n * Resize\n * @see https://tailwindcss.com/docs/resize\n */\n resize: [{ resize: ['none', 'y', 'x', ''] }],\n /**\n * Scroll Behavior\n * @see https://tailwindcss.com/docs/scroll-behavior\n */\n 'scroll-behavior': [{ scroll: ['auto', 'smooth'] }],\n /**\n * Scroll Margin\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-m': [{ 'scroll-m': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin X\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mx': [{ 'scroll-mx': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Y\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-my': [{ 'scroll-my': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Start\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ms': [{ 'scroll-ms': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin End\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-me': [{ 'scroll-me': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Top\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mt': [{ 'scroll-mt': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Right\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mr': [{ 'scroll-mr': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Bottom\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-mb': [{ 'scroll-mb': getSpacingWithArbitrary() }],\n /**\n * Scroll Margin Left\n * @see https://tailwindcss.com/docs/scroll-margin\n */\n 'scroll-ml': [{ 'scroll-ml': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-p': [{ 'scroll-p': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding X\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-px': [{ 'scroll-px': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Y\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-py': [{ 'scroll-py': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Start\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-ps': [{ 'scroll-ps': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding End\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pe': [{ 'scroll-pe': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Top\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pt': [{ 'scroll-pt': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Right\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pr': [{ 'scroll-pr': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Bottom\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pb': [{ 'scroll-pb': getSpacingWithArbitrary() }],\n /**\n * Scroll Padding Left\n * @see https://tailwindcss.com/docs/scroll-padding\n */\n 'scroll-pl': [{ 'scroll-pl': getSpacingWithArbitrary() }],\n /**\n * Scroll Snap Align\n * @see https://tailwindcss.com/docs/scroll-snap-align\n */\n 'snap-align': [{ snap: ['start', 'end', 'center', 'align-none'] }],\n /**\n * Scroll Snap Stop\n * @see https://tailwindcss.com/docs/scroll-snap-stop\n */\n 'snap-stop': [{ snap: ['normal', 'always'] }],\n /**\n * Scroll Snap Type\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-type': [{ snap: ['none', 'x', 'y', 'both'] }],\n /**\n * Scroll Snap Type Strictness\n * @see https://tailwindcss.com/docs/scroll-snap-type\n */\n 'snap-strictness': [{ snap: ['mandatory', 'proximity'] }],\n /**\n * Touch Action\n * @see https://tailwindcss.com/docs/touch-action\n */\n touch: [\n {\n touch: ['auto', 'none', 'manipulation'],\n },\n ],\n /**\n * Touch Action X\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-x': [\n {\n 'touch-pan': ['x', 'left', 'right'],\n },\n ],\n /**\n * Touch Action Y\n * @see https://tailwindcss.com/docs/touch-action\n */\n 'touch-y': [\n {\n 'touch-pan': ['y', 'up', 'down'],\n },\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: [{ select: ['none', 'text', 'all', 'auto'] }],\n /**\n * Will Change\n * @see https://tailwindcss.com/docs/will-change\n */\n 'will-change': [\n { 'will-change': ['auto', 'scroll', 'contents', 'transform', isArbitraryValue] },\n ],\n // SVG\n /**\n * Fill\n * @see https://tailwindcss.com/docs/fill\n */\n fill: [{ fill: [colors, 'none'] }],\n /**\n * Stroke Width\n * @see https://tailwindcss.com/docs/stroke-width\n */\n 'stroke-w': [{ stroke: [isLength, isArbitraryLength, isArbitraryNumber] }],\n /**\n * Stroke\n * @see https://tailwindcss.com/docs/stroke\n */\n stroke: [{ stroke: [colors, 'none'] }],\n // Accessibility\n /**\n * Screen Readers\n * @see https://tailwindcss.com/docs/screen-readers\n */\n sr: ['sr-only', 'not-sr-only'],\n /**\n * Forced Color Adjust\n * @see https://tailwindcss.com/docs/forced-color-adjust\n */\n 'forced-color-adjust': [{ 'forced-color-adjust': ['auto', 'none'] }],\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': [\n 'fvn-ordinal',\n 'fvn-slashed-zero',\n 'fvn-figure',\n 'fvn-spacing',\n 'fvn-fraction',\n ],\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: [\n 'rounded-s',\n 'rounded-e',\n 'rounded-t',\n 'rounded-r',\n 'rounded-b',\n 'rounded-l',\n 'rounded-ss',\n 'rounded-se',\n 'rounded-ee',\n 'rounded-es',\n 'rounded-tl',\n 'rounded-tr',\n 'rounded-br',\n 'rounded-bl',\n ],\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': [\n 'border-w-s',\n 'border-w-e',\n 'border-w-t',\n 'border-w-r',\n 'border-w-b',\n 'border-w-l',\n ],\n 'border-w-x': ['border-w-r', 'border-w-l'],\n 'border-w-y': ['border-w-t', 'border-w-b'],\n 'border-color': [\n 'border-color-s',\n 'border-color-e',\n 'border-color-t',\n 'border-color-r',\n 'border-color-b',\n 'border-color-l',\n ],\n 'border-color-x': ['border-color-r', 'border-color-l'],\n 'border-color-y': ['border-color-t', 'border-color-b'],\n 'scroll-m': [\n 'scroll-mx',\n 'scroll-my',\n 'scroll-ms',\n 'scroll-me',\n 'scroll-mt',\n 'scroll-mr',\n 'scroll-mb',\n 'scroll-ml',\n ],\n 'scroll-mx': ['scroll-mr', 'scroll-ml'],\n 'scroll-my': ['scroll-mt', 'scroll-mb'],\n 'scroll-p': [\n 'scroll-px',\n 'scroll-py',\n 'scroll-ps',\n 'scroll-pe',\n 'scroll-pt',\n 'scroll-pr',\n 'scroll-pb',\n 'scroll-pl',\n ],\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 } as const satisfies Config<DefaultClassGroupIds, DefaultThemeGroupIds>\n}\n","import { AnyConfig, ConfigExtension } from './types'\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 */\nexport const mergeConfigs = <ClassGroupIds extends string, ThemeGroupIds extends string = never>(\n baseConfig: AnyConfig,\n {\n cacheSize,\n prefix,\n separator,\n experimentalParseClassName,\n extend = {},\n override = {},\n }: ConfigExtension<ClassGroupIds, ThemeGroupIds>,\n) => {\n overrideProperty(baseConfig, 'cacheSize', cacheSize)\n overrideProperty(baseConfig, 'prefix', prefix)\n overrideProperty(baseConfig, 'separator', separator)\n overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName)\n\n for (const configKey in override) {\n overrideConfigProperties(\n baseConfig[configKey as keyof typeof override],\n override[configKey as keyof typeof override],\n )\n }\n\n for (const key in extend) {\n mergeConfigProperties(\n baseConfig[key as keyof typeof extend],\n extend[key as keyof typeof extend],\n )\n }\n\n return baseConfig\n}\n\nconst overrideProperty = <T extends object, K extends keyof T>(\n baseObject: T,\n overrideKey: K,\n overrideValue: T[K] | undefined,\n) => {\n if (overrideValue !== undefined) {\n baseObject[overrideKey] = overrideValue\n }\n}\n\nconst overrideConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n overrideObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (overrideObject) {\n for (const key in overrideObject) {\n overrideProperty(baseObject, key, overrideObject[key])\n }\n }\n}\n\nconst mergeConfigProperties = (\n baseObject: Partial<Record<string, readonly unknown[]>>,\n mergeObject: Partial<Record<string, readonly unknown[]>> | undefined,\n) => {\n if (mergeObject) {\n for (const key in mergeObject) {\n const mergeValue = mergeObject[key]\n\n if (mergeValue !== undefined) {\n baseObject[key] = (baseObject[key] || []).concat(mergeValue)\n }\n }\n }\n}\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\nimport { mergeConfigs } from './merge-configs'\nimport { AnyConfig, ConfigExtension, DefaultClassGroupIds, DefaultThemeGroupIds } from './types'\n\ntype CreateConfigSubsequent = (config: AnyConfig) => AnyConfig\n\nexport const extendTailwindMerge = <\n AdditionalClassGroupIds extends string = never,\n AdditionalThemeGroupIds extends string = never,\n>(\n configExtension:\n | ConfigExtension<\n DefaultClassGroupIds | AdditionalClassGroupIds,\n DefaultThemeGroupIds | AdditionalThemeGroupIds\n >\n | CreateConfigSubsequent,\n ...createConfig: CreateConfigSubsequent[]\n) =>\n typeof configExtension === 'function'\n ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig)\n : createTailwindMerge(\n () => mergeConfigs(getDefaultConfig(), configExtension),\n ...createConfig,\n )\n","import { createTailwindMerge } from './create-tailwind-merge'\nimport { getDefaultConfig } from './default-config'\n\nexport const twMerge = createTailwindMerge(getDefaultConfig)\n","import { type ClassValue, clsx } from \"clsx\"\nimport { twMerge } from \"tailwind-merge\"\n \nexport function cn(...inputs: ClassValue[]) {\n return twMerge(clsx(inputs))\n} ","'use client';\n\nimport { motion } from 'framer-motion';\nimport { ReactNode } from 'react';\n\n/**\n * Heading 组件的通用属性类型\n */\nexport interface HeadingProps {\n /** 子元素内容 */\n children?: ReactNode;\n /** 自定义类名 */\n className?: string;\n /** 标题文本,可以替代 children */\n title?: string;\n}\n\n/**\n * 页面主标题组件,带有渐变色效果和动画\n * \n * @component\n * @example\n * ```tsx\n * <PageTitle>Welcome to My Site</PageTitle>\n * \n * // 使用 title 属性\n * <PageTitle title=\"Welcome\" className=\"my-8\" />\n * ```\n */\nexport function PageTitle({ children, title, className = '' }: HeadingProps) {\n return (\n <motion.h1\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8 }}\n className={`text-4xl md:text-5xl font-bold mb-6 bg-gradient-to-r from-purple-600 to-pink-500 bg-clip-text text-transparent ${className}`}\n >\n {title || children}\n </motion.h1>\n );\n}\n\n/**\n * 区块标题组件,用于页面主要区块的标题\n * \n * @component\n * @example\n * ```tsx\n * <SectionTitle>Featured Products</SectionTitle>\n * \n * // 自定义样式\n * <SectionTitle className=\"mb-8\">Our Services</SectionTitle>\n * ```\n */\nexport function SectionTitle({ children, title, className = '' }: HeadingProps) {\n return (\n <motion.h2\n initial={{ opacity: 0, y: 20 }}\n animate={{ opacity: 1, y: 0 }}\n transition={{ duration: 0.8, delay: 0.2 }}\n className={`text-3xl font-bold text-center mb-16 bg-gradient-to-r from-purple-600 to-pink-500 bg-clip-text text-transparent ${className}`}\n >\n {title || children}\n </motion.h2>\n );\n}\n\n/**\n * 卡片标题组件,用于卡片或小区块的标题\n * \n * @component\n * @example\n * ```tsx\n * <CardTitle>Product Features</CardTitle>\n * \n * // 在卡片中使用\n * <Card>\n * <CardTitle>Premium Plan</CardTitle>\n * <CardContent>...</CardContent>\n * </Card>\n * ```\n */\nexport function CardTitle({ children, title, className = '' }: HeadingProps) {\n return (\n <motion.h3\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.5 }}\n className={`text-2xl font-bold text-gray-800 ${className}`}\n >\n {title || children}\n </motion.h3>\n );\n}\n\n/**\n * 子标题组件,用于次级内容的标题\n * \n * @component\n * @example\n * font-semibold: font-weight: 600;\n * text-lg: font-size: 1.125rem;\n * ```tsx\n * <SubTitle>Technical Details</SubTitle>\n * \n * // 在列表中使用\n * <div>\n * <SubTitle>Specifications</SubTitle>\n * <ul>...</ul>\n * </div>\n * ```\n */\nexport function SubTitle({ children, title, className = '' }: HeadingProps) {\n return (\n <motion.h4\n initial={{ opacity: 0 }}\n animate={{ opacity: 1 }}\n transition={{ duration: 0.5 }}\n className={`text-lg font-semibold ${className}`}\n >\n {title || children}\n </motion.h4>\n );\n}\n\nexport default {\n PageTitle,\n SectionTitle,\n CardTitle,\n SubTitle,\n}","'use client';\nimport React, { useState } from 'react';\nimport Link from 'next/link';\nimport { motion, AnimatePresence } from 'framer-motion';\nimport BreadIcon from './BreadIcon';\nimport { usePathname } from 'next/navigation';\nimport { ThemeToggle } from '../../theme/providers/theme-toggle';\n\n/**\n * 导航项接口\n * @interface NavItem\n */\nexport interface NavItem {\n /** 导航项唯一标识 */\n key: string;\n /** 导航链接地址 */\n href: string;\n label: string;\n /** 自定义样式类名 */\n className?: {\n /** PC端样式 */\n pc?: string;\n /** 移动端样式 */\n mobile?: string;\n };\n}\n\nexport interface HeaderTheme {\n activeClassName?: string;\n mobileMenu?: {\n button?: string;\n nav?: string;\n };\n}\n\nexport interface HeaderProps {\n /** Logo 组件 */\n logo: React.ReactNode;\n /** 导航菜单项 */\n menuItems: NavItem[];\n /** 自定义样式类名 */\n className?: string;\n /** 是否启用动画效果 */\n enableAnimation?: boolean;\n theme?: HeaderTheme;\n}\n\nconst getActivedCls = (href: string, selectedKey: string, activeClassName: string = 'text-primary') => {\n if(href.includes(selectedKey) || (href === '/' && selectedKey === 'home')) {\n return activeClassName;\n }\n return '';\n}\n\nexport const Header: React.FC<HeaderProps> = ({\n logo,\n menuItems,\n className = '',\n enableAnimation = true,\n theme = {}\n}) => {\n const [isMenuOpen, setIsMenuOpen] = useState(false);\n const selectedKey = usePathname().split('/')[2] || 'home';\n const baseNavClassName = `fixed top-0 left-0 right-0 z-50 backdrop-blur-lg ${className}`;\n\n const navVariants = {\n hidden: { y: -20, opacity: 0 },\n visible: { \n y: 0, \n opacity: 1,\n transition: {\n duration: 0.5,\n ease: \"easeOut\"\n }\n }\n };\n\n const HeaderWrapper = enableAnimation ? motion.header : 'header';\n return (\n <HeaderWrapper \n className={baseNavClassName}\n {...(enableAnimation && {\n initial: \"hidden\",\n animate: \"visible\",\n variants: navVariants\n })}\n >\n <div className='container flex items-center justify-between p-4'>\n {logo}\n\n <DesktopNav \n menuItems={menuItems} \n selectedKey={selectedKey} \n enableAnimation={enableAnimation}\n activeClassName={theme.activeClassName}\n />\n <MobileMenuBtn \n menuItems={menuItems} \n selectedKey={selectedKey} \n setIsMenuOpen={setIsMenuOpen} \n isMenuOpen={isMenuOpen}\n className={theme.mobileMenu?.button}\n />\n </div>\n <AnimatePresence>\n {isMenuOpen && (\n <MobileNav \n menuItems={menuItems} \n selectedKey={selectedKey} \n enableAnimation={enableAnimation}\n className={theme.mobileMenu?.nav}\n activeClassName={theme.activeClassName}\n />\n )}\n </AnimatePresence>\n </HeaderWrapper>\n );\n}; \n\nconst DesktopNav = ({ \n menuItems, \n selectedKey, \n enableAnimation,\n activeClassName \n}: { \n menuItems: NavItem[], \n selectedKey: string, \n enableAnimation: boolean,\n activeClassName?: string \n}) => {\n return (\n <nav className='hidden md:flex items-center space-x-8'>\n <ThemeToggle/>\n {menuItems.map((item) => (\n <NavLink \n key={item.key} \n href={item.href} \n selectedKey={selectedKey} \n className={item.className?.pc}\n activeClassName={activeClassName}\n >\n {item.label}\n </NavLink>\n ))}\n </nav>\n )\n}\n\nconst MobileNav = ({ \n menuItems, \n selectedKey, \n enableAnimation,\n className,\n activeClassName \n}: { \n menuItems: NavItem[], \n selectedKey: string, \n enableAnimation: boolean,\n className?: string,\n activeClassName?: string \n}) => {\n const MobileMenuComponent = enableAnimation ? motion.div : 'div';\n const mobileMenuVariants = {\n hidden: { \n height: 0,\n opacity: 0,\n transition: {\n duration: 0.3,\n ease: \"easeInOut\"\n }\n },\n visible: { \n height: \"auto\",\n opacity: 1,\n transition: {\n duration: 0.3,\n ease: \"easeInOut\"\n }\n }\n };\n return (\n <MobileMenuComponent \n className={`md:hidden overflow-hidden ${className || ''}`}\n {...(enableAnimation && {\n initial: \"hidden\",\n animate: \"visible\",\n exit: \"hidden\",\n variants: mobileMenuVariants\n })}\n >\n <nav className='flex flex-col space-y-4 py-4 items-center'>\n <ThemeToggle/>\n {menuItems.map((item) => (\n <MobileMenuComponent key={item.key} {...(enableAnimation && {\n initial: { x: -20, opacity: 0 },\n animate: { x: 0, opacity: 1 },\n transition: { delay: 0.1 }\n })}>\n <MobileNavLink \n href={item.href} \n selectedKey={selectedKey} \n className={item.className?.mobile}\n activeClassName={activeClassName}\n >\n {item.label}\n </MobileNavLink>\n </MobileMenuComponent>\n ))}\n </nav>\n </MobileMenuComponent>\n )\n}\n\nconst MobileMenuBtn = ({ \n setIsMenuOpen, \n isMenuOpen,\n className = 'p-2 hover:bg-accent rounded-lg transition-colors'\n}: { \n menuItems: NavItem[], \n selectedKey: string, \n setIsMenuOpen: (isMenuOpen: boolean) => void, \n isMenuOpen: boolean,\n className?: string\n}) => {\n return (\n <button \n onClick={() => setIsMenuOpen(!isMenuOpen)}\n className={`md:hidden ${className}`}\n >\n <BreadIcon isMenuOpen={isMenuOpen}/>\n </button>\n )\n}\n\nconst NavLink = ({ \n href, \n children, \n className, \n selectedKey,\n activeClassName \n}: { \n href: string; \n children: React.ReactNode, \n className?: string, \n selectedKey: string,\n activeClassName?: string\n}) => {\n const combinedClassName = `${className || 'hover:text-foreground transition-colors'} ${getActivedCls(href, selectedKey, activeClassName)}`;\n return (\n <Link href={href} legacyBehavior>\n <a className={combinedClassName}>{children}</a>\n </Link>\n );\n};\n\nconst MobileNavLink = ({ \n href, \n children, \n className, \n selectedKey,\n activeClassName \n}: { \n href: string; \n children: React.ReactNode, \n className?: string, \n selectedKey: string,\n activeClassName?: string\n}) => {\n const combinedClassName = `${className || 'text-lg font-medium text-center hover:text-primary transition-colors'} ${getActivedCls(href, selectedKey, activeClassName)}`;\n return (\n <Link href={href} legacyBehavior>\n <a className={combinedClassName}>{children}</a>\n </Link>\n );\n};\n\nexport default Header;","const commonCls= 'w-full h-0.5 bg-primary duration-300'\nconst spanDefaultCls= `${commonCls} transition-transform`\nconst spanOpacityCls= `${commonCls} transition-opacity`\n\nexport default function BreadIcon({isMenuOpen}: {isMenuOpen: boolean}) {\n return (\n <div className=\"w-6 h-5 relative flex flex-col justify-between\">\n <span className={`${spanDefaultCls} ${isMenuOpen ? 'rotate-45 translate-y-2' : ''}`} />\n <span className={`${spanOpacityCls} ${isMenuOpen ? 'opacity-0' : ''}`} />\n <span className={`${spanDefaultCls} ${isMenuOpen ? '-rotate-45 -translate-y-2' : ''}`} />\n </div>\n )\n}","'use client'\n\nimport { useState, useEffect } from 'react'\nimport { useTheme } from 'next-themes'\nimport { Button } from '../../components/Button'\nimport { Moon, Sun } from 'lucide-react'\n\nexport function ThemeToggle() {\n const [mounted, setMounted] = useState(false)\n const { theme, setTheme } = useTheme()\n\n useEffect(() => {\n setMounted(true)\n }, [])\n\n if (!mounted) {\n return null\n }\n\n const isDark = theme === 'dark'\n\n return (\n <Button\n variant=\"borderNone\"\n size=\"icon\"\n onClick={() => setTheme(isDark ? 'light' : 'dark')}\n >\n <Sun className=\"h-5 w-5 rotate-0 scale-100 transition-all dark:rotate-90 dark:scale-0\" />\n <Moon className=\"absolute h-5 w-5 rotate-90 scale-0 transition-all dark:rotate-0 dark:scale-100\" />\n </Button>\n )\n}\n\nexport default ThemeToggle;","\"use client\";import*as t from\"react\";var M=(e,i,s,u,m,a,l,h)=>{let d=document.documentElement,w=[\"light\",\"dark\"];function p(n){(Array.isArray(e)?e:[e]).forEach(y=>{let k=y===\"class\",S=k&&a?m.map(f=>a[f]||f):m;k?(d.classList.remove(...S),d.classList.add(a&&a[n]?a[n]:n)):d.setAttribute(y,n)}),R(n)}function R(n){h&&w.includes(n)&&(d.style.colorScheme=n)}function c(){return window.matchMedia(\"(prefers-color-scheme: dark)\").matches?\"dark\":\"light\"}if(u)p(u);else try{let n=localStorage.getItem(i)||s,y=l&&n===\"system\"?c():n;p(y)}catch(n){}};var b=[\"light\",\"dark\"],I=\"(prefers-color-scheme: dark)\",O=typeof window==\"undefined\",x=t.createContext(void 0),U={setTheme:e=>{},themes:[]},z=()=>{var e;return(e=t.useContext(x))!=null?e:U},J=e=>t.useContext(x)?t.createElement(t.Fragment,null,e.children):t.createElement(V,{...e}),N=[\"light\",\"dark\"],V=({forcedTheme:e,disableTransitionOnChange:i=!1,enableSystem:s=!0,enableColorScheme:u=!0,storageKey:m=\"theme\",themes:a=N,defaultTheme:l=s?\"system\":\"light\",attribute:h=\"data-theme\",value:d,children:w,nonce:p,scriptProps:R})=>{let[c,n]=t.useState(()=>H(m,l)),[T,y]=t.useState(()=>c===\"system\"?E():c),k=d?Object.values(d):a,S=t.useCallback(o=>{let r=o;if(!r)return;o===\"system\"&&s&&(r=E());let v=d?d[r]:r,C=i?W(p):null,P=document.documentElement,L=g=>{g===\"class\"?(P.classList.remove(...k),v&&P.classList.add(v)):g.startsWith(\"data-\")&&(v?P.setAttribute(g,v):P.removeAttribute(g))};if(Array.isArray(h)?h.forEach(L):L(h),u){let g=b.includes(l)?l:null,D=b.includes(r)?r:g;P.style.colorScheme=D}C==null||C()},[p]),f=t.useCallback(o=>{let r=typeof o==\"function\"?o(c):o;n(r);try{localStorage.setItem(m,r)}catch(v){}},[c]),A=t.useCallback(o=>{let r=E(o);y(r),c===\"system\"&&s&&!e&&S(\"system\")},[c,e]);t.useEffect(()=>{let o=window.matchMedia(I);return o.addListener(A),A(o),()=>o.removeListener(A)},[A]),t.useEffect(()=>{let o=r=>{r.key===m&&(r.newValue?n(r.newValue):f(l))};return window.addEventListener(\"storage\",o),()=>window.removeEventListener(\"storage\",o)},[f]),t.useEffect(()=>{S(e!=null?e:c)},[e,c]);let Q=t.useMemo(()=>({theme:c,setTheme:f,forcedTheme:e,resolvedTheme:c===\"system\"?T:c,themes:s?[...a,\"system\"]:a,systemTheme:s?T:void 0}),[c,f,e,T,s,a]);return t.createElement(x.Provider,{value:Q},t.createElement(_,{forcedTheme:e,storageKey:m,attribute:h,enableSystem:s,enableColorScheme:u,defaultTheme:l,value:d,themes:a,nonce:p,scriptProps:R}),w)},_=t.memo(({forcedTheme:e,storageKey:i,attribute:s,enableSystem:u,enableColorScheme:m,defaultTheme:a,value:l,themes:h,nonce:d,scriptProps:w})=>{let p=JSON.stringify([s,i,a,e,h,l,u,m]).slice(1,-1);return t.createElement(\"script\",{...w,suppressHydrationWarning:!0,nonce:typeof window==\"undefined\"?d:\"\",dangerouslySetInnerHTML:{__html:`(${M.toString()})(${p})`}})}),H=(e,i)=>{if(O)return;let s;try{s=localStorage.getItem(e)||void 0}catch(u){}return s||i},W=e=>{let i=document.createElement(\"style\");return e&&i.setAttribute(\"nonce\",e),i.appendChild(document.createTextNode(\"*,*::before,*::after{-webkit-transition:none!important;-moz-transition:none!important;-o-transition:none!important;-ms-transition:none!important;transition:none!important}\")),document.head.appendChild(i),()=>{window.getComputedStyle(document.body),setTimeout(()=>{document.head.removeChild(i)},1)}},E=e=>(e||(e=window.matchMedia(I)),e.matches?\"dark\":\"light\");export{J as ThemeProvider,z as useTheme};\n","'use client';\nimport React from 'react';\nimport Link from 'next/link';\n\nexport interface FooterLink {\n href: string;\n title: string;\n}\n\nexport interface FooterTexts {\n copyright: string;\n privacy: string;\n terms: string;\n social: string;\n}\n\nexport interface FooterProps {\n /** 網站基本信息 */\n site: {\n name: string;\n description: string;\n };\n /** 導航鏈接 */\n navigation: {\n /** 快速鏈接區塊 */\n quickLinks: {\n title: string;\n items: FooterLink[];\n };\n /** 社交媒體鏈接 */\n socialLinks: FooterLink[];\n };\n /** 頁腳文本 */\n texts: FooterTexts;\n /** 自定義類名 */\n className?: string;\n}\n\nexport const Footer: React.FC<FooterProps> = ({\n site,\n navigation,\n texts,\n className = '',\n}) => {\n \n // 请帮我改造下这个模块,使其在移动端内容水平居中展示\n return (\n <footer className={`relative bg-gradient-to-b from-gray-50 to-gray-100 pt-16 pb-6 ${className}`}>\n <div className=\"absolute inset-0 bg-grid-gray-200/25 [mask-image:linear-gradient(0deg,white,rgba(255,255,255,0.6))]\" />\n <div className=\"container mx-auto p-4 relative\">\n <div className=\"grid grid-cols-1 md:grid-cols-3 gap-8 mb-12\">\n {/* Brand Section */}\n <div className=\"space-y-4\">\n <h3 className=\"text-xl font-bold bg-gradient-to-r from-purple-600 to-pink-500 bg-clip-text text-transparent\">\n {site.name}\n </h3>\n <p className=\"text-gray-600 max-w-xs hover-text-foreground\">\n {site.description}\n </p>\n </div>\n\n {/* Quick Links */}\n <div className=\"space-y-4 \">\n <h4 className=\"text-sm font-semibold uppercase text-foreground\">\n {navigation.quickLinks.title}\n </h4>\n <nav className=\"flex flex-col space-y-2\">\n {navigation.quickLinks.items.map((item) => (\n <Link\n key={item.href}\n href={item.href}\n className=\"text-gray-600 hover:text-purple-600 transition-colors\"\n >\n {item.title}\n </Link>\n ))}\n </nav>\n </div>\n\n {/* Social Links */}\n <div className=\"space-y-4\">\n <h4 className=\"text-sm font-semibold uppercase text-foreground\">\n {texts.social}\n </h4>\n <div className=\"flex space-x-4\">\n {navigation.socialLinks.map((link) => (\n <a\n key={link.href}\n href={link.href}\n className=\"text-gray-600 hover:text-purple-600 transition-colors\"\n target=\"_blank\"\n rel=\"noopener noreferrer\"\n >\n {link.title}\n </a>\n ))}\n </div>\n </div>\n </div>\n\n {/* Bottom Bar: copyright, privacy and terms */}\n <div className=\"border-t pt-4\">\n <div className=\"flex flex-col md:flex-row justify-between items-center space-y-4 md:space-y-0\">\n <p className=\"text-sm text-gray-600\">\n {texts.copyright}\n </p>\n <div className=\"flex space-x-6\">\n <Link href=\"/privacy\" className=\"text-sm px-8 text-gray-600 hover:text-purple-600 transition-colors\">\n {texts.privacy}\n </Link>\n <Link href=\"/terms\" className=\"text-sm px-8 text-gray-600 hover:text-purple-600 transition-colors\">\n {texts.terms}\n </Link>\n </div>\n </div>\n </div>\n </div>\n\n {/* Decorative gradient line */}\n {/* <div className=\"absolute top-0 left-0 right-0 h-1 bg-gradient-to-r from-purple-600 via-pink-500 to-purple-600\" /> */}\n \n </footer>\n );\n}; \n\nexport default Footer;","\nimport type { Metadata, Viewport } from \"next\"\n\n/**\n * 基础布局组件的属性接口\n * @interface BaseLayoutProps\n */\nexport interface BaseLayoutProps {\n /** 子元素内容 */\n children: React.ReactNode,\n /** Next.js viewport 配置 */\n viewport?: Viewport,\n /** Next.js metadata 配置 */\n metadata?: Metadata,\n}\n\n/**\n * 基础布局组件,提供页面的基本结构\n * \n * @component\n * @example\n * ```tsx\n * <BasicLayout>\n * <main>\n * <h1>Welcome</h1>\n * <p>Content goes here</p>\n * </main>\n * </BasicLayout>\n * ```\n * \n * @example\n * ```tsx\n * // 带有 metadata 的使用示例\n * <BasicLayout\n * metadata={{\n * title: 'My Page',\n * description: 'Page description'\n * }}\n * >\n * <div>Content</div>\n * </BasicLayout>\n * ```\n */\nexport default function BasicLayout({ children }: { children: React.ReactNode }):JSX.Element {\n return (\n <div>\n {children}\n </div>\n )\n}\n","'use client'\nimport { useState, useCallback } from 'react';\n\nconst useForceRerender = (): [number, () => void] => {\n const [key, setKey] = useState(0);\n\n const forceRerender = useCallback(() => {\n setKey(prevKey => prevKey + 1);\n }, []);\n\n return [key, forceRerender];\n};\n\nexport default useForceRerender;","class Tempus {\r\n constructor() {\r\n this.callbacks = []\r\n this.now = performance.now()\r\n requestAnimationFrame(this.raf)\r\n }\r\n\r\n add(callback, priority = 0) {\r\n this.callbacks.push({ callback, priority })\r\n this.callbacks.sort((a, b) => a.priority - b.priority)\r\n\r\n return () => this.remove(callback)\r\n }\r\n\r\n remove(callback) {\r\n this.callbacks = this.callbacks.filter(({ callback: cb }) => callback !== cb)\r\n }\r\n\r\n raf = (now) => {\r\n requestAnimationFrame(this.raf)\r\n\r\n const deltaTime = now - this.now\r\n this.now = now\r\n\r\n for (let i = 0; i < this.callbacks.length; i++) {\r\n this.callbacks[i].callback(now, deltaTime)\r\n }\r\n }\r\n}\r\n\r\nconst isClient = typeof window !== 'undefined'\r\n\r\nexport default isClient && new Tempus()\r\n","var functionDebounce = debounce;\n\nfunction debounce(fn, wait, callFirst) {\n var timeout = null;\n var debouncedFn = null;\n\n var clear = function() {\n if (timeout) {\n clearTimeout(timeout);\n\n debouncedFn = null;\n timeout = null;\n }\n };\n\n var flush = function() {\n var call = debouncedFn;\n clear();\n\n if (call) {\n call();\n }\n };\n\n var debounceWrapper = function() {\n if (!wait) {\n return fn.apply(this, arguments);\n }\n\n var context = this;\n var args = arguments;\n var callNow = callFirst && !timeout;\n clear();\n\n debouncedFn = function() {\n fn.apply(context, args);\n };\n\n timeout = setTimeout(function() {\n timeout = null;\n\n if (!callNow) {\n var call = debouncedFn;\n debouncedFn = null;\n\n return call();\n }\n }, wait);\n\n if (callNow) {\n return debouncedFn();\n }\n };\n\n debounceWrapper.cancel = clear;\n debounceWrapper.flush = flush;\n\n return debounceWrapper;\n}\n\nexport {functionDebounce as default};\n","export let createNanoEvents = () => ({\n emit(event, ...args) {\n for (\n let callbacks = this.events[event] || [],\n i = 0,\n length = callbacks.length;\n i < length;\n i++\n ) {\n callbacks[i](...args)\n }\n },\n events: {},\n on(event, cb) {\n ;(this.events[event] ||= []).push(cb)\n return () => {\n this.events[event] = this.events[event]?.filter(i => cb !== i)\n }\n }\n})\n","/**\r\n * useOutsideClickEvent - custom hook that listens for clicks outside of a component\r\n * @param {Object} ref - React ref for the element to listen for clicks outside of\r\n * @param {Function} callback - callback function to call when a click outside of the element is detected\r\n */\r\n\r\nimport { useCallback, useEffect } from 'react'\r\n\r\nexport function useOutsideClickEvent(ref, callback) {\r\n const handleClickOutside = useCallback(\r\n (event) => {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n callback()\r\n }\r\n },\r\n [ref, callback]\r\n )\r\n\r\n useEffect(() => {\r\n if (ref.current) {\r\n document.addEventListener('mousedown', handleClickOutside)\r\n return () => {\r\n document.removeEventListener('mousedown', handleClickOutside)\r\n }\r\n }\r\n }, [handleClickOutside, ref])\r\n}\r\n","// This component is used to check if the window object is present.\r\nimport { useEffect, useState } from 'react'\r\n\r\nexport function useIsClient() {\r\n const [isClient, setClient] = useState(false)\r\n\r\n useEffect(() => {\r\n setClient(true)\r\n }, [])\r\n\r\n return isClient\r\n}\r\n","import { useMemo } from 'react'\r\nimport { useIsClient } from './use-is-client'\r\n\r\nexport function useDebug() {\r\n const isClient = useIsClient()\r\n\r\n const debug = useMemo(() => {\r\n if (!isClient) return undefined\r\n\r\n const location = window.location\r\n const search = location.search\r\n const href = location.href\r\n const searchParams = new URLSearchParams(search)\r\n\r\n const isDebug =\r\n href.includes('#debug') || // localhost:3000/#debug\r\n href.includes('/_debug') || // localhost:3000/_debug\r\n searchParams.has('debug') || // localhost:3000/?debug\r\n // eslint-disable-next-line no-undef\r\n process.env.NODE_ENV === 'development' // localhost:3000\r\n\r\n const isProduction =\r\n href.includes('#production') || // localhost:3000/#production\r\n searchParams.has('production') // localhost:3000/?production\r\n\r\n return isDebug && !isProduction\r\n }, [isClient])\r\n\r\n return debug\r\n}\r\n","// useDocumentReadyState.js\r\n// This code is a custom hook that returns the current document.readyState\r\n// The useLayoutEffect hook is used to set the state of the document\r\n// The useEffect hook is used to set the state of the document to 'complete' when the document is ready\r\n\r\nimport { useEffect, useState } from 'react'\r\n\r\n/**\r\n * @name useDocumentReadyState\r\n * @description A React hook that listen to document.readyState.\r\n * @returns {string} document.readyState\r\n */\r\n\r\nexport function useDocumentReadyState() {\r\n const [readyState, setReadyState] = useState()\r\n\r\n useEffect(() => {\r\n function onStateChange() {\r\n setReadyState(document.readyState)\r\n }\r\n\r\n document.addEventListener('readystatechange', onStateChange, false)\r\n onStateChange()\r\n\r\n return () => document.removeEventListener('readystatechange', onStateChange, false)\r\n }, [])\r\n\r\n return readyState\r\n}\r\n","/**\r\n * Creates a requestAnimationFrame loop and manages the lifecycle of the callback.\r\n * @param {Function} callback - A function that is called every frame.\r\n * @param {Number} priority - A number that determines the order in which the callback is called.\r\n */\r\n\r\nimport Tempus from '@studio-freight/tempus'\r\nimport { useEffect } from 'react'\r\n\r\nexport function useFrame(callback, priority = 0) {\r\n useEffect(() => {\r\n if (callback) {\r\n Tempus.add(callback, priority)\r\n\r\n return () => Tempus.remove(callback)\r\n }\r\n }, [callback, priority])\r\n}\r\n","import { useCallback, useEffect, useRef, useState } from 'react'\r\n\r\n/**\r\n * @name useIntersectionObserver\r\n * @description A React hook that oberves element visibility using IntersectionObserver.\r\n * @param {HTMLElement} root\r\n * @param {string} rootMargin\r\n * @param {number} threshold\r\n * @param {boolean} once\r\n * @param {boolean} lazy\r\n * @param {function} callback\r\n * @param {array} deps\r\n * @returns {array} [setElement, entry]\r\n */\r\n\r\nexport function useIntersectionObserver(\r\n { root = null, rootMargin = '0px', threshold = 0, once = false, lazy = false, callback = () => {} } = {},\r\n deps = []\r\n) {\r\n const entryRef = useRef({})\r\n const [entry, setEntry] = useState({})\r\n const [element, setElement] = useState()\r\n\r\n useEffect(() => {\r\n if (!element) return\r\n\r\n const intersection = new IntersectionObserver(\r\n ([entry]) => {\r\n if (lazy) {\r\n entryRef.current = entry\r\n } else {\r\n setEntry(entry)\r\n }\r\n\r\n callback(entry)\r\n\r\n if (once && entry.isIntersecting) intersection.disconnect()\r\n },\r\n {\r\n root,\r\n rootMargin,\r\n threshold,\r\n }\r\n )\r\n intersection.observe(element)\r\n\r\n return () => {\r\n intersection.disconnect()\r\n }\r\n }, [element, root, rootMargin, threshold, lazy, once, ...deps])\r\n\r\n const get = useCallback(() => entryRef.current, [])\r\n\r\n return [setElement, lazy ? get : entry]\r\n}\r\n","/**\r\n * This function allows you to set an interval in a functional component\r\n * @param {function} callback - The callback function\r\n * @param {number} delay - The delay between each interval\r\n */\r\n\r\nimport { useEffect } from 'react'\r\n\r\nexport function useInterval(callback, delay = 1000, deps = []) {\r\n useEffect(() => {\r\n const interval = setInterval(callback, delay)\r\n return () => clearInterval(interval)\r\n }, [delay, ...deps])\r\n}\r\n","/*\r\n This hook checks if the device has a touch screen. It checks for the touchstart event,\r\n as well as the maxTouchPoints property on the navigator object. It also checks the\r\n msMaxTouchPoints property, which is specific to Microsoft browsers.\r\n*/\r\n\r\nimport { useEffect, useState } from 'react'\r\n\r\n/**\r\n * @name useIsTouchDevice\r\n * @description A React hook that detects if the device supports touch.\r\n * @returns {boolean} Whether the device supports touch or not.\r\n */\r\n\r\nexport function useIsTouchDevice() {\r\n const [isTouchDevice, setIsTouchDevice] = useState()\r\n\r\n useEffect(() => {\r\n function onResize() {\r\n setIsTouchDevice('ontouchstart' in window || navigator.maxTouchPoints > 0 || navigator.msMaxTouchPoints > 0)\r\n }\r\n\r\n window.addEventListener('resize', onResize, false)\r\n onResize()\r\n\r\n return () => {\r\n window.removeEventListener('resize', onResize, false)\r\n }\r\n }, [])\r\n\r\n return isTouchDevice\r\n}\r\n","import { useEffect, useState } from 'react'\r\n\r\n/**\r\n * @name useMediaQuery\r\n * @description A React hook that detects whether a media query is true or false.\r\n * @param {string} queryString The media query to test against.\r\n * @returns {boolean} Whether the media query is true or false.\r\n */\r\n\r\nexport function useMediaQuery(queryString) {\r\n const [isMatch, setIsMatch] = useState()\r\n\r\n useEffect(() => {\r\n const mediaQuery = window.matchMedia(queryString)\r\n\r\n function onChange() {\r\n setIsMatch(mediaQuery.matches)\r\n }\r\n\r\n mediaQuery.addEventListener('change', onChange, false)\r\n onChange()\r\n\r\n return () => mediaQuery.removeEventListener('change', onChange, false)\r\n }, [queryString])\r\n\r\n return isMatch\r\n}\r\n","export function removeParentSticky(element) {\r\n const position = getComputedStyle(element).position\r\n\r\n const isSticky = position === 'sticky'\r\n\r\n if (isSticky) {\r\n element.style.setProperty('position', 'static')\r\n element.dataset.sticky = 'true'\r\n }\r\n\r\n if (element.offsetParent) {\r\n removeParentSticky(element.offsetParent)\r\n }\r\n}\r\n\r\nexport function addParentSticky(element) {\r\n if (element?.dataset?.sticky === 'true') {\r\n element.style.removeProperty('position')\r\n element.dataset.sticky = 'true'\r\n delete element.dataset.sticky\r\n }\r\n\r\n if (element.parentNode) {\r\n addParentSticky(element.parentNode)\r\n }\r\n}\r\n\r\nexport function offsetTop(element, accumulator = 0) {\r\n const top = accumulator + element.offsetTop\r\n if (element.offsetParent) {\r\n return offsetTop(element.offsetParent, top)\r\n }\r\n return top\r\n}\r\n\r\nexport function offsetLeft(element, accumulator = 0) {\r\n const left = accumulator + element.offsetLeft\r\n if (element.offsetParent) {\r\n return offsetLeft(element.offsetParent, left)\r\n }\r\n return left\r\n}\r\n\r\nexport function scrollTop(element, accumulator = 0) {\r\n const top = accumulator + element.scrollTop\r\n if (element.offsetParent) {\r\n return scrollTop(element.offsetParent, top)\r\n }\r\n return top + window.scrollY\r\n}\r\n\r\nexport function scrollLeft(element, accumulator = 0) {\r\n const left = accumulator + element.scrollLeft\r\n if (element.offsetParent) {\r\n return scrollLeft(element.offsetParent, left)\r\n }\r\n return left + window.scrollX\r\n}\r\n","import { createNanoEvents } from 'nanoevents'\r\n\r\nexport const emitter = createNanoEvents()\r\n","import { useEffect, useCallback, useRef, useState } from 'react'\r\nimport { addParentSticky, offsetLeft, offsetTop, removeParentSticky, scrollLeft, scrollTop } from './utils'\r\nimport debounce from 'just-debounce-it'\r\nimport { emitter } from './emitter'\r\n\r\nexport function useRect({\r\n ignoreTransform = false,\r\n ignoreSticky = true,\r\n debounce: debounceDelay = 500,\r\n lazy = false,\r\n callback,\r\n} = {}) {\r\n const [element, setElement] = useState()\r\n const rectRef = useRef({})\r\n const [rect, setRectState] = useState({})\r\n\r\n const setRect = useCallback(\r\n ({ top, left, width, height, element }) => {\r\n top = top ?? rectRef.current.top\r\n left = left ?? rectRef.current.left\r\n width = width ?? rectRef.current.width\r\n height = height ?? rectRef.current.height\r\n element = element ?? rectRef.current.element\r\n\r\n if (\r\n top === rectRef.current.top &&\r\n left === rectRef.current.left &&\r\n width === rectRef.current.width &&\r\n height === rectRef.current.height &&\r\n element === rectRef.current.element\r\n )\r\n return\r\n\r\n rectRef.current.top = top\r\n rectRef.current.y = top\r\n rectRef.current.width = width\r\n rectRef.current.height = height\r\n rectRef.current.left = left\r\n rectRef.current.x = left\r\n rectRef.current.bottom = top + height\r\n rectRef.current.right = left + width\r\n rectRef.current.element = element\r\n\r\n callback?.(rectRef.current)\r\n\r\n if (!lazy) {\r\n setRectState({ ...rectRef.current })\r\n }\r\n },\r\n [lazy],\r\n )\r\n\r\n useEffect(() => {\r\n if (!element) return\r\n\r\n const rect = element.getBoundingClientRect()\r\n const width = rect.width\r\n const height = rect.height\r\n setRect({ width, height })\r\n\r\n const onResize = debounce(([entry]) => {\r\n const width = entry.borderBoxSize[0].inlineSize\r\n const height = entry.borderBoxSize[0].blockSize\r\n\r\n setRect({ width, height })\r\n }, debounceDelay)\r\n\r\n const resizeObserver = new ResizeObserver(onResize)\r\n resizeObserver.observe(element)\r\n\r\n return () => {\r\n resizeObserver.disconnect()\r\n onResize.cancel()\r\n }\r\n }, [element, debounceDelay, setRect])\r\n\r\n const [wrapperElement, setWrapperElementRef] = useState()\r\n\r\n const onWrapperResize = useCallback(() => {\r\n if (!element) return\r\n\r\n let top, left\r\n\r\n if (ignoreSticky) removeParentSticky(element)\r\n if (ignoreTransform) {\r\n top = offsetTop(element)\r\n left = offsetLeft(element)\r\n } else {\r\n const rect = element.getBoundingClientRect()\r\n top = rect.top + scrollTop(element)\r\n left = rect.left + scrollLeft(element)\r\n }\r\n if (ignoreSticky) addParentSticky(element)\r\n\r\n setRect({ top, left, element })\r\n }, [ignoreTransform, ignoreSticky, element, setRect])\r\n\r\n // resize if body height changes\r\n useEffect(() => {\r\n onWrapperResize()\r\n const debouncedOnWrapperResize = debounce(onWrapperResize, debounceDelay)\r\n\r\n const resizeObserver = new ResizeObserver(debouncedOnWrapperResize)\r\n resizeObserver.observe(wrapperElement ?? document.body)\r\n\r\n return () => {\r\n resizeObserver.disconnect()\r\n debouncedOnWrapperResize.cancel()\r\n }\r\n }, [wrapperElement, debounceDelay, onWrapperResize])\r\n\r\n useEffect(() => {\r\n function onResize() {\r\n if (!element) return\r\n const elementRect = element.getBoundingClientRect()\r\n\r\n const width = elementRect.width\r\n const height = elementRect.height\r\n\r\n setRect({ width, height })\r\n\r\n onWrapperResize()\r\n }\r\n\r\n const unbind = emitter.on('resize', onResize)\r\n\r\n return unbind\r\n }, [element, onWrapperResize, setRect])\r\n\r\n const getRect = useCallback(() => rectRef.current, [])\r\n\r\n return [setElement, lazy ? getRect : rect, setWrapperElementRef]\r\n}\r\n\r\nuseRect.resize = () => {\r\n emitter.emit('resize')\r\n}\r\n","import { useCallback, useEffect, useRef, useState } from 'react'\r\nimport debounce from 'just-debounce-it'\r\n\r\n/**\r\n * useResizeObserver - observe elements dimensions using ResizeObserver\r\n * @param {Boolean} lazy - should return a state or not\r\n * @param {Number} debounce - minimum delay between two ResizeObserver computations\r\n * @param {String} box - ResizeObserver parameter\r\n * @param {Function} callback - called on value change\r\n */\r\n\r\nexport function useResizeObserver({\r\n lazy = false,\r\n debounce: debounceDelay = 500,\r\n box = 'border-box',\r\n callback = () => {},\r\n} = {}) {\r\n const entryRef = useRef({})\r\n const [entry, setEntry] = useState({})\r\n const [element, setElement] = useState()\r\n\r\n useEffect(() => {\r\n if (!element) return\r\n\r\n const onResize = debounce(\r\n ([entry]) => {\r\n entryRef.current = entry\r\n\r\n callback(entry)\r\n\r\n if (!lazy) {\r\n setEntry(entry)\r\n }\r\n },\r\n debounceDelay,\r\n true,\r\n )\r\n\r\n const resizeObserver = new ResizeObserver(onResize)\r\n resizeObserver.observe(element, { box })\r\n\r\n return () => {\r\n resizeObserver.disconnect()\r\n onResize.cancel()\r\n }\r\n }, [element, lazy, debounceDelay, box])\r\n\r\n const get = useCallback(() => entryRef.current, [])\r\n\r\n return [setElement, lazy ? get : entry]\r\n}\r\n","// This code is used to extract the contents of a component's children and return them as an array.\r\n// The code accepts two arguments, the names of the components that it should extract, and the children to extract from.\r\n// The code returns an array of the children of the components passed in the types argument.\r\n// based on:\r\n// https://medium.com/swlh/bring-vue-named-slots-to-react-87684188f18e\r\n\r\nimport { useMemo } from 'react'\r\n\r\nexport function useSlots(types = [], children = []) {\r\n const _children = useMemo(() => children && [children].flat(), [children])\r\n const _types = useMemo(() => types && [types].flat(), [types])\r\n const slots = useMemo(() => {\r\n if (!_children || !_types) {\r\n return\r\n }\r\n\r\n const slots = _types.map((type) => _children.find((el) => el.type === type)?.props.children)\r\n\r\n return types[0] ? slots : slots[0]\r\n }, [_children, _types])\r\n\r\n return slots\r\n}\r\n","import { useEffect, useState } from 'react'\r\nimport debounce from 'just-debounce-it'\r\n\r\n/**\r\n * @name useWindowSize\r\n * @description A React hook that listens to window size.\r\n * @returns {object} { width, height }\r\n */\r\n\r\nexport function useWindowSize(debounceDelay = 500) {\r\n const [width, setWidth] = useState()\r\n const [height, setHeight] = useState()\r\n\r\n useEffect(() => {\r\n const onWindowRezise = debounce(() => {\r\n setWidth(Math.min(window.innerWidth, document.documentElement.clientWidth))\r\n setHeight(Math.min(window.innerHeight, document.documentElement.clientHeight))\r\n }, debounceDelay)\r\n\r\n window.addEventListener('resize', onWindowRezise, false)\r\n\r\n onWindowRezise()\r\n\r\n return () => window.removeEventListener('resize', onWindowRezise, false)\r\n }, [debounceDelay])\r\n\r\n return { width, height }\r\n}\r\n","// Clamp a value between a minimum and maximum value\r\nexport function clamp(min, input, max) {\r\n return Math.max(min, Math.min(input, max))\r\n}\r\n\r\n// Truncate a floating-point number to a specified number of decimal places\r\nexport function truncate(value, decimals = 0) {\r\n return parseFloat(value.toFixed(decimals))\r\n}\r\n\r\n// Linearly interpolate between two values using an amount (0 <= t <= 1)\r\nexport function lerp(x, y, t) {\r\n return (1 - t) * x + t * y\r\n}\r\n\r\n// http://www.rorydriscoll.com/2016/03/07/frame-rate-independent-damping-using-lerp/\r\nexport function damp(x, y, lambda, dt) {\r\n return lerp(x, y, 1 - Math.exp(-lambda * dt))\r\n}\r\n\r\n// Calculate the modulo of the dividend and divisor while keeping the result within the same sign as the divisor\r\n// https://anguscroll.com/just/just-modulo\r\nexport function modulo(n, d) {\r\n return ((n % d) + d) % d\r\n}\r\n","import { clamp, damp } from './maths'\r\n\r\n// Animate class to handle value animations with lerping or easing\r\nexport class Animate {\r\n // Advance the animation by the given delta time\r\n advance(deltaTime) {\r\n if (!this.isRunning) return\r\n\r\n let completed = false\r\n\r\n if (this.lerp) {\r\n this.value = damp(this.value, this.to, this.lerp * 60, deltaTime)\r\n if (Math.round(this.value) === this.to) {\r\n this.value = this.to\r\n completed = true\r\n }\r\n } else {\r\n this.currentTime += deltaTime\r\n const linearProgress = clamp(0, this.currentTime / this.duration, 1)\r\n\r\n completed = linearProgress >= 1\r\n const easedProgress = completed ? 1 : this.easing(linearProgress)\r\n this.value = this.from + (this.to - this.from) * easedProgress\r\n }\r\n\r\n // Call the onUpdate callback with the current value and completed status\r\n this.onUpdate?.(this.value, completed)\r\n\r\n if (completed) {\r\n this.stop()\r\n }\r\n }\r\n\r\n // Stop the animation\r\n stop() {\r\n this.isRunning = false\r\n }\r\n\r\n // Set up the animation from a starting value to an ending value\r\n // with optional parameters for lerping, duration, easing, and onUpdate callback\r\n fromTo(\r\n from,\r\n to,\r\n { lerp = 0.1, duration = 1, easing = (t) => t, onStart, onUpdate }\r\n ) {\r\n this.from = this.value = from\r\n this.to = to\r\n this.lerp = lerp\r\n this.duration = duration\r\n this.easing = easing\r\n this.currentTime = 0\r\n this.isRunning = true\r\n\r\n onStart?.()\r\n this.onUpdate = onUpdate\r\n }\r\n}\r\n","import { debounce } from './debounce'\r\n\r\nexport class Dimensions {\r\n constructor({\r\n wrapper,\r\n content,\r\n autoResize = true,\r\n debounce: debounceValue = 250,\r\n } = {}) {\r\n this.wrapper = wrapper\r\n this.content = content\r\n\r\n if (autoResize) {\r\n this.debouncedResize = debounce(this.resize, debounceValue)\r\n\r\n if (this.wrapper === window) {\r\n window.addEventListener('resize', this.debouncedResize, false)\r\n } else {\r\n this.wrapperResizeObserver = new ResizeObserver(this.debouncedResize)\r\n this.wrapperResizeObserver.observe(this.wrapper)\r\n }\r\n\r\n this.contentResizeObserver = new ResizeObserver(this.debouncedResize)\r\n this.contentResizeObserver.observe(this.content)\r\n }\r\n\r\n this.resize()\r\n }\r\n\r\n destroy() {\r\n this.wrapperResizeObserver?.disconnect()\r\n this.contentResizeObserver?.disconnect()\r\n window.removeEventListener('resize', this.debouncedResize, false)\r\n }\r\n\r\n resize = () => {\r\n this.onWrapperResize()\r\n this.onContentResize()\r\n }\r\n\r\n onWrapperResize = () => {\r\n if (this.wrapper === window) {\r\n this.width = window.innerWidth\r\n this.height = window.innerHeight\r\n } else {\r\n this.width = this.wrapper.clientWidth\r\n this.height = this.wrapper.clientHeight\r\n }\r\n }\r\n\r\n onContentResize = () => {\r\n if (this.wrapper === window) {\r\n this.scrollHeight = this.content.scrollHeight\r\n this.scrollWidth = this.content.scrollWidth\r\n } else {\r\n this.scrollHeight = this.wrapper.scrollHeight\r\n this.scrollWidth = this.wrapper.scrollWidth\r\n }\r\n }\r\n\r\n get limit() {\r\n return {\r\n x: this.scrollWidth - this.width,\r\n y: this.scrollHeight - this.height,\r\n }\r\n }\r\n}\r\n","export function debounce(callback, delay) {\r\n let timer\r\n return function () {\r\n let args = arguments\r\n let context = this\r\n clearTimeout(timer)\r\n timer = setTimeout(function () {\r\n callback.apply(context, args)\r\n }, delay)\r\n }\r\n}\r\n","export class Emitter {\r\n constructor() {\r\n this.events = {}\r\n }\r\n\r\n emit(event, ...args) {\r\n let callbacks = this.events[event] || []\r\n for (let i = 0, length = callbacks.length; i < length; i++) {\r\n callbacks[i](...args)\r\n }\r\n }\r\n\r\n on(event, cb) {\r\n // Add the callback to the event's callback list, or create a new list with the callback\r\n this.events[event]?.push(cb) || (this.events[event] = [cb])\r\n\r\n // Return an unsubscribe function\r\n return () => {\r\n this.events[event] = this.events[event]?.filter((i) => cb !== i)\r\n }\r\n }\r\n\r\n off(event, callback) {\r\n this.events[event] = this.events[event]?.filter((i) => callback !== i)\r\n }\r\n\r\n destroy() {\r\n this.events = {}\r\n }\r\n}\r\n","import { Emitter } from './emitter'\r\n\r\nconst LINE_HEIGHT = 100 / 6\r\n\r\nexport class VirtualScroll {\r\n constructor(element, { wheelMultiplier = 1, touchMultiplier = 1 }) {\r\n this.element = element\r\n this.wheelMultiplier = wheelMultiplier\r\n this.touchMultiplier = touchMultiplier\r\n\r\n this.touchStart = {\r\n x: null,\r\n y: null,\r\n }\r\n\r\n this.emitter = new Emitter()\r\n window.addEventListener('resize', this.onWindowResize, false)\r\n this.onWindowResize()\r\n\r\n this.element.addEventListener('wheel', this.onWheel, { passive: false })\r\n this.element.addEventListener('touchstart', this.onTouchStart, {\r\n passive: false,\r\n })\r\n this.element.addEventListener('touchmove', this.onTouchMove, {\r\n passive: false,\r\n })\r\n this.element.addEventListener('touchend', this.onTouchEnd, {\r\n passive: false,\r\n })\r\n }\r\n\r\n // Add an event listener for the given event and callback\r\n on(event, callback) {\r\n return this.emitter.on(event, callback)\r\n }\r\n\r\n // Remove all event listeners and clean up\r\n destroy() {\r\n this.emitter.destroy()\r\n\r\n window.removeEventListener('resize', this.onWindowResize, false)\r\n\r\n this.element.removeEventListener('wheel', this.onWheel, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchstart', this.onTouchStart, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchmove', this.onTouchMove, {\r\n passive: false,\r\n })\r\n this.element.removeEventListener('touchend', this.onTouchEnd, {\r\n passive: false,\r\n })\r\n }\r\n\r\n // Event handler for 'touchstart' event\r\n onTouchStart = (event) => {\r\n const { clientX, clientY } = event.targetTouches\r\n ? event.targetTouches[0]\r\n : event\r\n\r\n this.touchStart.x = clientX\r\n this.touchStart.y = clientY\r\n\r\n this.lastDelta = {\r\n x: 0,\r\n y: 0,\r\n }\r\n\r\n this.emitter.emit('scroll', {\r\n deltaX: 0,\r\n deltaY: 0,\r\n event,\r\n })\r\n }\r\n\r\n // Event handler for 'touchmove' event\r\n onTouchMove = (event) => {\r\n const { clientX, clientY } = event.targetTouches\r\n ? event.targetTouches[0]\r\n : event\r\n\r\n const deltaX = -(clientX - this.touchStart.x) * this.touchMultiplier\r\n const deltaY = -(clientY - this.touchStart.y) * this.touchMultiplier\r\n\r\n this.touchStart.x = clientX\r\n this.touchStart.y = clientY\r\n\r\n this.lastDelta = {\r\n x: deltaX,\r\n y: deltaY,\r\n }\r\n\r\n this.emitter.emit('scroll', {\r\n deltaX,\r\n deltaY,\r\n event,\r\n })\r\n }\r\n\r\n onTouchEnd = (event) => {\r\n this.emitter.emit('scroll', {\r\n deltaX: this.lastDelta.x,\r\n deltaY: this.lastDelta.y,\r\n event,\r\n })\r\n }\r\n\r\n // Event handler for 'wheel' event\r\n onWheel = (event) => {\r\n let { deltaX, deltaY, deltaMode } = event\r\n\r\n const multiplierX =\r\n deltaMode === 1 ? LINE_HEIGHT : deltaMode === 2 ? this.windowWidth : 1\r\n const multiplierY =\r\n deltaMode === 1 ? LINE_HEIGHT : deltaMode === 2 ? this.windowHeight : 1\r\n\r\n deltaX *= multiplierX\r\n deltaY *= multiplierY\r\n\r\n deltaX *= this.wheelMultiplier\r\n deltaY *= this.wheelMultiplier\r\n\r\n this.emitter.emit('scroll', { deltaX, deltaY, event })\r\n }\r\n\r\n onWindowResize = () => {\r\n this.windowWidth = window.innerWidth\r\n this.windowHeight = window.innerHeight\r\n }\r\n}\r\n","import { version } from '../package.json'\r\nimport { Animate } from './animate'\r\nimport { Dimensions } from './dimensions'\r\nimport { Emitter } from './emitter'\r\nimport { clamp, modulo } from './maths'\r\nimport { VirtualScroll } from './virtual-scroll'\r\n\r\n// Technical explanation\r\n// - listen to 'wheel' events\r\n// - prevent 'wheel' event to prevent scroll\r\n// - normalize wheel delta\r\n// - add delta to targetScroll\r\n// - animate scroll to targetScroll (smooth context)\r\n// - if animation is not running, listen to 'scroll' events (native context)\r\n\r\ntype EasingFunction = (t: number) => number\r\ntype Orientation = 'vertical' | 'horizontal'\r\ntype GestureOrientation = 'vertical' | 'horizontal' | 'both'\r\n\r\nexport type LenisOptions = {\r\n wrapper?: Window | HTMLElement\r\n content?: HTMLElement\r\n wheelEventsTarget?: Window | HTMLElement\r\n eventsTarget?: Window | HTMLElement\r\n smoothWheel?: boolean\r\n syncTouch?: boolean\r\n syncTouchLerp?: number\r\n touchInertiaMultiplier?: number\r\n duration?: number\r\n easing?: EasingFunction\r\n lerp?: number\r\n infinite?: boolean\r\n orientation?: Orientation\r\n gestureOrientation?: GestureOrientation\r\n touchMultiplier?: number\r\n wheelMultiplier?: number\r\n autoResize?: boolean\r\n __experimental__naiveDimensions?: boolean\r\n}\r\n\r\nexport default class Lenis {\r\n __isSmooth: boolean = false // true if scroll should be animated\r\n __isScrolling: boolean = false // true when scroll is animating\r\n __isStopped: boolean = false // true if user should not be able to scroll - enable/disable programmatically\r\n __isLocked: boolean = false // same as isStopped but enabled/disabled when scroll reaches target\r\n\r\n constructor({\r\n wrapper = window,\r\n content = document.documentElement,\r\n wheelEventsTarget = wrapper, // deprecated\r\n eventsTarget = wheelEventsTarget,\r\n smoothWheel = true,\r\n syncTouch = false,\r\n syncTouchLerp = 0.075,\r\n touchInertiaMultiplier = 35,\r\n duration, // in seconds\r\n easing = (t) => Math.min(1, 1.001 - Math.pow(2, -10 * t)),\r\n lerp = !duration && 0.1,\r\n infinite = false,\r\n orientation = 'vertical', // vertical, horizontal\r\n gestureOrientation = 'vertical', // vertical, horizontal, both\r\n touchMultiplier = 1,\r\n wheelMultiplier = 1,\r\n autoResize = true,\r\n __experimental__naiveDimensions = false,\r\n }: LenisOptions = {}) {\r\n window.lenisVersion = version\r\n\r\n // if wrapper is html or body, fallback to window\r\n if (wrapper === document.documentElement || wrapper === document.body) {\r\n wrapper = window\r\n }\r\n\r\n this.options = {\r\n wrapper,\r\n content,\r\n wheelEventsTarget,\r\n eventsTarget,\r\n smoothWheel,\r\n syncTouch,\r\n syncTouchLerp,\r\n touchInertiaMultiplier,\r\n duration,\r\n easing,\r\n lerp,\r\n infinite,\r\n gestureOrientation,\r\n orientation,\r\n touchMultiplier,\r\n wheelMultiplier,\r\n autoResize,\r\n __experimental__naiveDimensions,\r\n }\r\n\r\n this.animate = new Animate()\r\n this.emitter = new Emitter()\r\n this.dimensions = new Dimensions({ wrapper, content, autoResize })\r\n this.toggleClassName('lenis', true)\r\n\r\n this.velocity = 0\r\n this.isLocked = false\r\n this.isStopped = false\r\n this.isSmooth = syncTouch || smoothWheel\r\n this.isScrolling = false\r\n this.targetScroll = this.animatedScroll = this.actualScroll\r\n\r\n this.options.wrapper.addEventListener('scroll', this.onNativeScroll, false)\r\n\r\n this.virtualScroll = new VirtualScroll(eventsTarget, {\r\n touchMultiplier,\r\n wheelMultiplier,\r\n })\r\n this.virtualScroll.on('scroll', this.onVirtualScroll)\r\n }\r\n\r\n destroy() {\r\n this.emitter.destroy()\r\n\r\n this.options.wrapper.removeEventListener(\r\n 'scroll',\r\n this.onNativeScroll,\r\n false\r\n )\r\n\r\n this.virtualScroll.destroy()\r\n this.dimensions.destroy()\r\n\r\n this.toggleClassName('lenis', false)\r\n this.toggleClassName('lenis-smooth', false)\r\n this.toggleClassName('lenis-scrolling', false)\r\n this.toggleClassName('lenis-stopped', false)\r\n this.toggleClassName('lenis-locked', false)\r\n }\r\n\r\n on(event: string, callback: Function) {\r\n return this.emitter.on(event, callback)\r\n }\r\n\r\n off(event: string, callback: Function) {\r\n return this.emitter.off(event, callback)\r\n }\r\n\r\n private setScroll(scroll) {\r\n // apply scroll value immediately\r\n if (this.isHorizontal) {\r\n this.rootElement.scrollLeft = scroll\r\n } else {\r\n this.rootElement.scrollTop = scroll\r\n }\r\n }\r\n\r\n private onVirtualScroll = ({ deltaX, deltaY, event }) => {\r\n // keep zoom feature\r\n if (event.ctrlKey) return\r\n\r\n const isTouch = event.type.includes('touch')\r\n const isWheel = event.type.includes('wheel')\r\n\r\n const isTapToStop =\r\n this.options.syncTouch &&\r\n isTouch &&\r\n event.type === 'touchstart' &&\r\n !this.isStopped &&\r\n !this.isLocked\r\n\r\n if (isTapToStop) {\r\n this.reset()\r\n return\r\n }\r\n\r\n const isClick = deltaX === 0 && deltaY === 0 // click event\r\n\r\n // const isPullToRefresh =\r\n // this.options.gestureOrientation === 'vertical' &&\r\n // this.scroll === 0 &&\r\n // !this.options.infinite &&\r\n // deltaY <= 5 // touch pull to refresh, not reliable yet\r\n\r\n const isUnknownGesture =\r\n (this.options.gestureOrientation === 'vertical' && deltaY === 0) ||\r\n (this.options.gestureOrientation === 'horizontal' && deltaX === 0)\r\n\r\n if (isClick || isUnknownGesture) {\r\n // console.log('prevent')\r\n return\r\n }\r\n\r\n // catch if scrolling on nested scroll elements\r\n let composedPath = event.composedPath()\r\n composedPath = composedPath.slice(0, composedPath.indexOf(this.rootElement)) // remove parents elements\r\n\r\n if (\r\n !!composedPath.find(\r\n (node) =>\r\n node.hasAttribute?.('data-lenis-prevent') ||\r\n (isTouch && node.hasAttribute?.('data-lenis-prevent-touch')) ||\r\n (isWheel && node.hasAttribute?.('data-lenis-prevent-wheel')) ||\r\n (node.classList?.contains('lenis') &&\r\n !node.classList?.contains('lenis-stopped')) // nested lenis instance\r\n )\r\n )\r\n return\r\n\r\n if (this.isStopped || this.isLocked) {\r\n event.preventDefault() // this will stop forwarding the event to the parent, this is problematic\r\n return\r\n }\r\n\r\n this.isSmooth =\r\n (this.options.syncTouch && isTouch) ||\r\n (this.options.smoothWheel && isWheel)\r\n\r\n if (!this.isSmooth) {\r\n this.isScrolling = false\r\n this.animate.stop()\r\n return\r\n }\r\n\r\n event.preventDefault()\r\n\r\n let delta = deltaY\r\n if (this.options.gestureOrientation === 'both') {\r\n delta = Math.abs(deltaY) > Math.abs(deltaX) ? deltaY : deltaX\r\n } else if (this.options.gestureOrientation === 'horizontal') {\r\n delta = deltaX\r\n }\r\n\r\n const syncTouch = isTouch && this.options.syncTouch\r\n const isTouchEnd = isTouch && event.type === 'touchend'\r\n\r\n const hasTouchInertia = isTouchEnd && Math.abs(delta) > 5\r\n\r\n if (hasTouchInertia) {\r\n delta = this.velocity * this.options.touchInertiaMultiplier\r\n }\r\n\r\n this.scrollTo(this.targetScroll + delta, {\r\n programmatic: false,\r\n ...(syncTouch\r\n ? {\r\n lerp: hasTouchInertia ? this.options.syncTouchLerp : 1,\r\n }\r\n : {\r\n lerp: this.options.lerp,\r\n duration: this.options.duration,\r\n easing: this.options.easing,\r\n }),\r\n })\r\n }\r\n\r\n resize() {\r\n this.dimensions.resize()\r\n }\r\n\r\n private emit() {\r\n this.emitter.emit('scroll', this)\r\n }\r\n\r\n private onNativeScroll = () => {\r\n if (this.__preventNextScrollEvent) return\r\n\r\n if (!this.isScrolling) {\r\n const lastScroll = this.animatedScroll\r\n this.animatedScroll = this.targetScroll = this.actualScroll\r\n this.velocity = 0\r\n this.direction = Math.sign(this.animatedScroll - lastScroll)\r\n this.emit()\r\n }\r\n }\r\n\r\n private reset() {\r\n this.isLocked = false\r\n this.isScrolling = false\r\n this.animatedScroll = this.targetScroll = this.actualScroll\r\n this.velocity = 0\r\n this.animate.stop()\r\n }\r\n\r\n start() {\r\n if (!this.isStopped) return\r\n this.isStopped = false\r\n\r\n this.reset()\r\n }\r\n\r\n stop() {\r\n if (this.isStopped) return\r\n this.isStopped = true\r\n this.animate.stop()\r\n\r\n this.reset()\r\n }\r\n\r\n raf(time: number) {\r\n const deltaTime = time - (this.time || time)\r\n this.time = time\r\n\r\n this.animate.advance(deltaTime * 0.001)\r\n }\r\n\r\n scrollTo(\r\n target: number | string | HTMLElement,\r\n {\r\n offset = 0,\r\n immediate = false,\r\n lock = false,\r\n duration = this.options.duration,\r\n easing = this.options.easing,\r\n lerp = !duration && this.options.lerp,\r\n onComplete,\r\n force = false, // scroll even if stopped\r\n programmatic = true, // called from outside of the class\r\n }: {\r\n offset?: number\r\n immediate?: boolean\r\n lock?: boolean\r\n duration?: number\r\n easing?: EasingFunction\r\n lerp?: number\r\n onComplete?: (lenis: Lenis) => void\r\n force?: boolean\r\n programmatic?: boolean\r\n } = {}\r\n ) {\r\n if ((this.isStopped || this.isLocked) && !force) return\r\n\r\n // keywords\r\n if (['top', 'left', 'start'].includes(target)) {\r\n target = 0\r\n } else if (['bottom', 'right', 'end'].includes(target)) {\r\n target = this.limit\r\n } else {\r\n let node\r\n\r\n if (typeof target === 'string') {\r\n // CSS selector\r\n node = document.querySelector(target)\r\n } else if (target?.nodeType) {\r\n // Node element\r\n node = target\r\n }\r\n\r\n if (node) {\r\n if (this.options.wrapper !== window) {\r\n // nested scroll offset correction\r\n const wrapperRect = this.options.wrapper.getBoundingClientRect()\r\n offset -= this.isHorizontal ? wrapperRect.left : wrapperRect.top\r\n }\r\n\r\n const rect = node.getBoundingClientRect()\r\n\r\n target =\r\n (this.isHorizontal ? rect.left : rect.top) + this.animatedScroll\r\n }\r\n }\r\n\r\n if (typeof target !== 'number') return\r\n\r\n target += offset\r\n target = Math.round(target)\r\n\r\n if (this.options.infinite) {\r\n if (programmatic) {\r\n this.targetScroll = this.animatedScroll = this.scroll\r\n }\r\n } else {\r\n target = clamp(0, target, this.limit)\r\n }\r\n\r\n if (immediate) {\r\n this.animatedScroll = this.targetScroll = target\r\n this.setScroll(this.scroll)\r\n this.reset()\r\n onComplete?.(this)\r\n return\r\n }\r\n\r\n if (!programmatic) {\r\n if (target === this.targetScroll) return\r\n\r\n this.targetScroll = target\r\n }\r\n\r\n this.animate.fromTo(this.animatedScroll, target, {\r\n duration,\r\n easing,\r\n lerp,\r\n onStart: () => {\r\n // started\r\n if (lock) this.isLocked = true\r\n this.isScrolling = true\r\n },\r\n onUpdate: (value: number, completed: boolean) => {\r\n this.isScrolling = true\r\n\r\n // updated\r\n this.velocity = value - this.animatedScroll\r\n this.direction = Math.sign(this.velocity)\r\n\r\n this.animatedScroll = value\r\n this.setScroll(this.scroll)\r\n\r\n if (programmatic) {\r\n // wheel during programmatic should stop it\r\n this.targetScroll = value\r\n }\r\n\r\n if (!completed) this.emit()\r\n\r\n if (completed) {\r\n this.reset()\r\n this.emit()\r\n onComplete?.(this)\r\n\r\n // avoid emitting event twice\r\n this.__preventNextScrollEvent = true\r\n requestAnimationFrame(() => {\r\n delete this.__preventNextScrollEvent\r\n })\r\n }\r\n },\r\n })\r\n }\r\n\r\n get rootElement() {\r\n return this.options.wrapper === window\r\n ? document.documentElement\r\n : this.options.wrapper\r\n }\r\n\r\n get limit() {\r\n if (this.options.__experimental__naiveDimensions) {\r\n if (this.isHorizontal) {\r\n return this.rootElement.scrollWidth - this.rootElement.clientWidth\r\n } else {\r\n return this.rootElement.scrollHeight - this.rootElement.clientHeight\r\n }\r\n } else {\r\n return this.dimensions.limit[this.isHorizontal ? 'x' : 'y']\r\n }\r\n }\r\n\r\n get isHorizontal() {\r\n return this.options.orientation === 'horizontal'\r\n }\r\n\r\n get actualScroll() {\r\n // value browser takes into account\r\n return this.isHorizontal\r\n ? this.rootElement.scrollLeft\r\n : this.rootElement.scrollTop\r\n }\r\n\r\n get scroll() {\r\n return this.options.infinite\r\n ? modulo(this.animatedScroll, this.limit)\r\n : this.animatedScroll\r\n }\r\n\r\n get progress() {\r\n // avoid progress to be NaN\r\n return this.limit === 0 ? 1 : this.scroll / this.limit\r\n }\r\n\r\n get isSmooth() {\r\n return this.__isSmooth\r\n }\r\n\r\n private set isSmooth(value: boolean) {\r\n if (this.__isSmooth !== value) {\r\n this.__isSmooth = value\r\n this.toggleClassName('lenis-smooth', value)\r\n }\r\n }\r\n\r\n get isScrolling() {\r\n return this.__isScrolling\r\n }\r\n\r\n private set isScrolling(value: boolean) {\r\n if (this.__isScrolling !== value) {\r\n this.__isScrolling = value\r\n this.toggleClassName('lenis-scrolling', value)\r\n }\r\n }\r\n\r\n get isStopped() {\r\n return this.__isStopped\r\n }\r\n\r\n private set isStopped(value: boolean) {\r\n if (this.__isStopped !== value) {\r\n this.__isStopped = value\r\n this.toggleClassName('lenis-stopped', value)\r\n }\r\n }\r\n\r\n get isLocked() {\r\n return this.__isLocked\r\n }\r\n\r\n private set isLocked(value: boolean) {\r\n if (this.__isLocked !== value) {\r\n this.__isLocked = value\r\n this.toggleClassName('lenis-locked', value)\r\n }\r\n }\r\n\r\n get className() {\r\n let className = 'lenis'\r\n if (this.isStopped) className += ' lenis-stopped'\r\n if (this.isLocked) className += ' lenis-locked'\r\n if (this.isScrolling) className += ' lenis-scrolling'\r\n if (this.isSmooth) className += ' lenis-smooth'\r\n return className\r\n }\r\n\r\n private toggleClassName(name: string, value: boolean) {\r\n this.rootElement.classList.toggle(name, value)\r\n this.emitter.emit('className change', this)\r\n }\r\n}\r\n","const createStoreImpl = (createState) => {\n let state;\n const listeners = /* @__PURE__ */ new Set();\n const setState = (partial, replace) => {\n const nextState = typeof partial === \"function\" ? partial(state) : partial;\n if (!Object.is(nextState, state)) {\n const previousState = state;\n state = (replace != null ? replace : typeof nextState !== \"object\" || nextState === null) ? nextState : Object.assign({}, state, nextState);\n listeners.forEach((listener) => listener(state, previousState));\n }\n };\n const getState = () => state;\n const getInitialState = () => initialState;\n const subscribe = (listener) => {\n listeners.add(listener);\n return () => listeners.delete(listener);\n };\n const destroy = () => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] The `destroy` method will be unsupported in a future version. Instead use unsubscribe function returned by subscribe. Everything will be garbage-collected if store is garbage-collected.\"\n );\n }\n listeners.clear();\n };\n const api = { setState, getState, getInitialState, subscribe, destroy };\n const initialState = state = createState(setState, getState, api);\n return api;\n};\nconst createStore = (createState) => createState ? createStoreImpl(createState) : createStoreImpl;\nvar vanilla = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use import { createStore } from 'zustand/vanilla'.\"\n );\n }\n return createStore(createState);\n};\n\nexport { createStore, vanilla as default };\n","import { createStore } from 'zustand/vanilla';\nexport * from 'zustand/vanilla';\nimport ReactExports from 'react';\nimport useSyncExternalStoreExports from 'use-sync-external-store/shim/with-selector.js';\n\nconst { useDebugValue } = ReactExports;\nconst { useSyncExternalStoreWithSelector } = useSyncExternalStoreExports;\nlet didWarnAboutEqualityFn = false;\nconst identity = (arg) => arg;\nfunction useStore(api, selector = identity, equalityFn) {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && equalityFn && !didWarnAboutEqualityFn) {\n console.warn(\n \"[DEPRECATED] Use `createWithEqualityFn` instead of `create` or use `useStoreWithEqualityFn` instead of `useStore`. They can be imported from 'zustand/traditional'. https://github.com/pmndrs/zustand/discussions/1937\"\n );\n didWarnAboutEqualityFn = true;\n }\n const slice = useSyncExternalStoreWithSelector(\n api.subscribe,\n api.getState,\n api.getServerState || api.getInitialState,\n selector,\n equalityFn\n );\n useDebugValue(slice);\n return slice;\n}\nconst createImpl = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\" && typeof createState !== \"function\") {\n console.warn(\n \"[DEPRECATED] Passing a vanilla store will be unsupported in a future version. Instead use `import { useStore } from 'zustand'`.\"\n );\n }\n const api = typeof createState === \"function\" ? createStore(createState) : createState;\n const useBoundStore = (selector, equalityFn) => useStore(api, selector, equalityFn);\n Object.assign(useBoundStore, api);\n return useBoundStore;\n};\nconst create = (createState) => createState ? createImpl(createState) : createImpl;\nvar react = (createState) => {\n if ((import.meta.env ? import.meta.env.MODE : void 0) !== \"production\") {\n console.warn(\n \"[DEPRECATED] Default export is deprecated. Instead use `import { create } from 'zustand'`.\"\n );\n }\n return create(createState);\n};\n\nexport { create, react as default, useStore };\n","/******************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise, SuppressedError, Symbol */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __esDecorate(ctor, descriptorIn, decorators, contextIn, initializers, extraInitializers) {\r\n function accept(f) { if (f !== void 0 && typeof f !== \"function\") throw new TypeError(\"Function expected\"); return f; }\r\n var kind = contextIn.kind, key = kind === \"getter\" ? \"get\" : kind === \"setter\" ? \"set\" : \"value\";\r\n var target = !descriptorIn && ctor ? contextIn[\"static\"] ? ctor : ctor.prototype : null;\r\n var descriptor = descriptorIn || (target ? Object.getOwnPropertyDescriptor(target, contextIn.name) : {});\r\n var _, done = false;\r\n for (var i = decorators.length - 1; i >= 0; i--) {\r\n var context = {};\r\n for (var p in contextIn) context[p] = p === \"access\" ? {} : contextIn[p];\r\n for (var p in contextIn.access) context.access[p] = contextIn.access[p];\r\n context.addInitializer = function (f) { if (done) throw new TypeError(\"Cannot add initializers after decoration has completed\"); extraInitializers.push(accept(f || null)); };\r\n var result = (0, decorators[i])(kind === \"accessor\" ? { get: descriptor.get, set: descriptor.set } : descriptor[key], context);\r\n if (kind === \"accessor\") {\r\n if (result === void 0) continue;\r\n if (result === null || typeof result !== \"object\") throw new TypeError(\"Object expected\");\r\n if (_ = accept(result.get)) descriptor.get = _;\r\n if (_ = accept(result.set)) descriptor.set = _;\r\n if (_ = accept(result.init)) initializers.unshift(_);\r\n }\r\n else if (_ = accept(result)) {\r\n if (kind === \"field\") initializers.unshift(_);\r\n else descriptor[key] = _;\r\n }\r\n }\r\n if (target) Object.defineProperty(target, contextIn.name, descriptor);\r\n done = true;\r\n};\r\n\r\nexport function __runInitializers(thisArg, initializers, value) {\r\n var useValue = arguments.length > 2;\r\n for (var i = 0; i < initializers.length; i++) {\r\n value = useValue ? initializers[i].call(thisArg, value) : initializers[i].call(thisArg);\r\n }\r\n return useValue ? value : void 0;\r\n};\r\n\r\nexport function __propKey(x) {\r\n return typeof x === \"symbol\" ? x : \"\".concat(x);\r\n};\r\n\r\nexport function __setFunctionName(f, name, prefix) {\r\n if (typeof name === \"symbol\") name = name.description ? \"[\".concat(name.description, \"]\") : \"\";\r\n return Object.defineProperty(f, \"name\", { configurable: true, value: prefix ? \"\".concat(prefix, \" \", name) : name });\r\n};\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (g && (g = 0, op[0] && (_ = 0)), _) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n var desc = Object.getOwnPropertyDescriptor(m, k);\r\n if (!desc || (\"get\" in desc ? !m.__esModule : desc.writable || desc.configurable)) {\r\n desc = { enumerable: true, get: function() { return m[k]; } };\r\n }\r\n Object.defineProperty(o, k2, desc);\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: false } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n\r\nexport function __classPrivateFieldIn(state, receiver) {\r\n if (receiver === null || (typeof receiver !== \"object\" && typeof receiver !== \"function\")) throw new TypeError(\"Cannot use 'in' operator on non-object\");\r\n return typeof state === \"function\" ? receiver === state : state.has(receiver);\r\n}\r\n\r\nexport function __addDisposableResource(env, value, async) {\r\n if (value !== null && value !== void 0) {\r\n if (typeof value !== \"object\" && typeof value !== \"function\") throw new TypeError(\"Object expected.\");\r\n var dispose;\r\n if (async) {\r\n if (!Symbol.asyncDispose) throw new TypeError(\"Symbol.asyncDispose is not defined.\");\r\n dispose = value[Symbol.asyncDispose];\r\n }\r\n if (dispose === void 0) {\r\n if (!Symbol.dispose) throw new TypeError(\"Symbol.dispose is not defined.\");\r\n dispose = value[Symbol.dispose];\r\n }\r\n if (typeof dispose !== \"function\") throw new TypeError(\"Object not disposable.\");\r\n env.stack.push({ value: value, dispose: dispose, async: async });\r\n }\r\n else if (async) {\r\n env.stack.push({ async: true });\r\n }\r\n return value;\r\n}\r\n\r\nvar _SuppressedError = typeof SuppressedError === \"function\" ? SuppressedError : function (error, suppressed, message) {\r\n var e = new Error(message);\r\n return e.name = \"SuppressedError\", e.error = error, e.suppressed = suppressed, e;\r\n};\r\n\r\nexport function __disposeResources(env) {\r\n function fail(e) {\r\n env.error = env.hasError ? new _SuppressedError(e, env.error, \"An error was suppressed during disposal.\") : e;\r\n env.hasError = true;\r\n }\r\n function next() {\r\n while (env.stack.length) {\r\n var rec = env.stack.pop();\r\n try {\r\n var result = rec.dispose && rec.dispose.call(rec.value);\r\n if (rec.async) return Promise.resolve(result).then(next, function(e) { fail(e); return next(); });\r\n }\r\n catch (e) {\r\n fail(e);\r\n }\r\n }\r\n if (env.hasError) throw env.error;\r\n }\r\n return next();\r\n}\r\n\r\nexport default {\r\n __extends: __extends,\r\n __assign: __assign,\r\n __rest: __rest,\r\n __decorate: __decorate,\r\n __param: __param,\r\n __metadata: __metadata,\r\n __awaiter: __awaiter,\r\n __generator: __generator,\r\n __createBinding: __createBinding,\r\n __exportStar: __exportStar,\r\n __values: __values,\r\n __read: __read,\r\n __spread: __spread,\r\n __spreadArrays: __spreadArrays,\r\n __spreadArray: __spreadArray,\r\n __await: __await,\r\n __asyncGenerator: __asyncGenerator,\r\n __asyncDelegator: __asyncDelegator,\r\n __asyncValues: __asyncValues,\r\n __makeTemplateObject: __makeTemplateObject,\r\n __importStar: __importStar,\r\n __importDefault: __importDefault,\r\n __classPrivateFieldGet: __classPrivateFieldGet,\r\n __classPrivateFieldSet: __classPrivateFieldSet,\r\n __classPrivateFieldIn: __classPrivateFieldIn,\r\n __addDisposableResource: __addDisposableResource,\r\n __disposeResources: __disposeResources,\r\n};\r\n","'use client'\r\n\r\nimport { useFrame } from '@studio-freight/hamo'\r\nimport Lenis, { LenisOptions } from '@studio-freight/lenis'\r\nimport cn from 'clsx'\r\nimport React, {\r\n ForwardRefExoticComponent,\r\n PropsWithoutRef,\r\n ReactNode,\r\n RefAttributes,\r\n createContext,\r\n forwardRef,\r\n useCallback,\r\n useContext,\r\n useEffect,\r\n useImperativeHandle,\r\n useRef,\r\n useState,\r\n} from 'react'\r\nimport { create } from 'zustand'\r\nimport { version } from '../package.json'\r\n\r\ntype LenisEventHandler = (lenis: Lenis) => void\r\ninterface LenisContextValue {\r\n lenis: Lenis\r\n addCallback: (handler: LenisEventHandler, priority: number) => void\r\n removeCallback: (handler: LenisEventHandler) => void\r\n}\r\n\r\ndeclare global {\r\n interface Window {\r\n reactLenisVersion: string\r\n }\r\n}\r\nif (typeof window !== 'undefined') {\r\n window.reactLenisVersion = version\r\n}\r\n\r\nexport const LenisContext = createContext<LenisContextValue | null>(null)\r\n\r\nconst useRoot = create<Partial<LenisContextValue>>(() => ({}))\r\n\r\nfunction useCurrentLenis() {\r\n const local = useContext(LenisContext)\r\n const root = useRoot()\r\n\r\n return local ?? root\r\n}\r\n\r\nexport function useLenis(\r\n callback?: (lenis: Lenis) => void,\r\n deps: Array<any> = [],\r\n priority = 0\r\n): Lenis | undefined {\r\n const { lenis, addCallback, removeCallback } = useCurrentLenis()\r\n\r\n useEffect(() => {\r\n if (!callback || !addCallback || !removeCallback || !lenis) return\r\n\r\n addCallback(callback, priority)\r\n callback(lenis)\r\n\r\n return () => {\r\n removeCallback(callback)\r\n }\r\n }, [lenis, addCallback, removeCallback, priority, ...deps])\r\n\r\n return lenis\r\n}\r\n\r\ntype ForwardRefComponent<P, T> = ForwardRefExoticComponent<\r\n PropsWithoutRef<P> & RefAttributes<T>\r\n>\r\n\r\ntype Props = {\r\n root?: boolean\r\n options?: LenisOptions\r\n autoRaf?: boolean\r\n rafPriority?: number\r\n className?: string\r\n children?: ReactNode\r\n props?: any\r\n}\r\n\r\ntype LenisRef = {\r\n wrapper?: HTMLElement\r\n content?: HTMLElement\r\n lenis?: Lenis\r\n}\r\n\r\nconst ReactLenis: ForwardRefComponent<Props, LenisRef> = forwardRef<\r\n LenisRef,\r\n Props\r\n>(\r\n (\r\n {\r\n children,\r\n root = false,\r\n options = {},\r\n autoRaf = true,\r\n rafPriority = 0,\r\n className,\r\n ...props\r\n }: Props,\r\n ref\r\n ) => {\r\n const wrapperRef = useRef<HTMLDivElement | null>(null)\r\n const contentRef = useRef<HTMLDivElement | null>(null)\r\n\r\n const [lenis, setLenis] = useState<Lenis | undefined>(undefined)\r\n\r\n const callbacksRefs = useRef<\r\n {\r\n callback: LenisEventHandler\r\n priority: number\r\n }[]\r\n >([])\r\n\r\n const addCallback: LenisContextValue['addCallback'] = useCallback(\r\n (callback, priority) => {\r\n callbacksRefs.current.push({ callback, priority })\r\n callbacksRefs.current.sort((a, b) => a.priority - b.priority)\r\n },\r\n []\r\n )\r\n\r\n const removeCallback: LenisContextValue['removeCallback'] = useCallback(\r\n (callback) => {\r\n callbacksRefs.current = callbacksRefs.current.filter(\r\n (cb) => cb.callback !== callback\r\n )\r\n },\r\n []\r\n )\r\n\r\n useImperativeHandle(\r\n ref,\r\n () => ({\r\n wrapper: wrapperRef.current!,\r\n content: contentRef.current!,\r\n lenis,\r\n }),\r\n [lenis]\r\n )\r\n\r\n useEffect(() => {\r\n const lenis = new Lenis({\r\n ...options,\r\n ...(!root && {\r\n wrapper: wrapperRef.current!,\r\n content: contentRef.current!,\r\n }),\r\n })\r\n\r\n setLenis(lenis)\r\n\r\n return () => {\r\n lenis.destroy()\r\n setLenis(undefined)\r\n }\r\n }, [root, JSON.stringify(options)])\r\n\r\n useFrame((time: number) => {\r\n if (autoRaf) {\r\n lenis?.raf(time)\r\n }\r\n }, rafPriority)\r\n\r\n useEffect(() => {\r\n if (root && lenis) {\r\n useRoot.setState({ lenis, addCallback, removeCallback })\r\n }\r\n }, [root, lenis, addCallback, removeCallback])\r\n\r\n const onScroll = useCallback((lenisInstance: Lenis) => {\r\n for (let i = 0; i < callbacksRefs.current.length; i++) {\r\n callbacksRefs.current[i].callback(lenisInstance)\r\n }\r\n }, [])\r\n\r\n useEffect(() => {\r\n lenis?.on('scroll', onScroll)\r\n\r\n return () => {\r\n lenis?.off('scroll', onScroll)\r\n }\r\n }, [lenis, onScroll])\r\n\r\n const onClassNameChange = useCallback(() => {\r\n if (wrapperRef.current) {\r\n wrapperRef.current.className = cn(lenis?.className, className)\r\n }\r\n }, [lenis, className])\r\n\r\n useEffect(() => {\r\n onClassNameChange()\r\n\r\n lenis?.on('className change', onClassNameChange)\r\n\r\n return () => {\r\n lenis?.off('className change', onClassNameChange)\r\n }\r\n }, [lenis, onClassNameChange])\r\n\r\n return (\r\n <LenisContext.Provider\r\n value={{ lenis: lenis!, addCallback, removeCallback }}\r\n >\r\n {root ? (\r\n children\r\n ) : (\r\n <div\r\n ref={wrapperRef}\r\n className={cn(lenis?.className, className)}\r\n {...props}\r\n >\r\n <div ref={contentRef}>{children}</div>\r\n </div>\r\n )}\r\n </LenisContext.Provider>\r\n )\r\n }\r\n)\r\n\r\nexport { ReactLenis as Lenis, ReactLenis }\r\nexport default ReactLenis\r\n","\"use client\"\n\nimport * as React from \"react\"\nimport { ReactLenis } from \"@studio-freight/react-lenis\"\n\ninterface SmoothScrollProviderProps {\n children: React.ReactNode\n}\n\nexport function SmoothScrollProvider({ children }: SmoothScrollProviderProps) {\n return (\n <ReactLenis root options={{ lerp: 0.1, duration: 1.5, syncTouch: true }}>\n <div className=\"smooth-scroll\">{ children }</div>\n </ReactLenis>\n )\n}\n","'use client'\n\nimport * as React from 'react'\nimport { ThemeProvider as NextThemeProvider } from 'next-themes'\nimport type { ThemeProviderProps } from 'next-themes'\n\nexport function ThemeProvider({ children, ...props }: ThemeProviderProps) {\n return (\n <NextThemeProvider {...props}>\n {children}\n </NextThemeProvider>\n )\n} \n\nexport default ThemeProvider;"],"mappings":"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","names":["exports","React","x","y","useState","useEffect","useDebugValue","exports","x","y","React","useState","useEffect","useDebugValue","exports","module","exports","React","x","y","useEffect","useMemo","useDebugValue","exports","x","y","React","useEffect","useMemo","useDebugValue","exports","module","e","t","f","n","o","param","CLASS_PART_SEPARATOR","createClassGroupUtils","config","classMap","createClassMap","conflictingClassGroups","conflictingClassGroupModifiers","getClassGroupId","className","classParts","split","length","shift","getGroupRecursive","getGroupIdForArbitraryProperty","getConflictingClassGroupIds","classGroupId","hasPostfixModifier","conflicts","classPartObject","currentClassPart","nextClassPartObject","nextPart","get","classGroupFromNextClassPart","slice","undefined","validators","classRest","join","find","validator","arbitraryPropertyRegex","test","arbitraryPropertyClassName","exec","property","substring","indexOf","theme","prefix","Map","prefixedClassGroupEntries","getPrefixedClassGroupEntries","Object","entries","classGroups","forEach","classGroup","processClassesRecursively","classDefinition","classPartObjectToEdit","getPart","isThemeGetter","push","key","path","currentClassPartObject","pathPart","has","set","func","classGroupEntries","map","prefixedClassGroup","fromEntries","value","createLruCache","maxCacheSize","cacheSize","cache","previousCache","update","IMPORTANT_MODIFIER","createParseClassName","separator","experimentalParseClassName","isSeparatorSingleCharacter","firstSeparatorCharacter","separatorLength","parseClassName","modifiers","bracketDepth","modifierStart","postfixModifierPosition","index","currentCharacter","baseClassNameWithImportantModifier","hasImportantModifier","startsWith","baseClassName","maybePostfixModifierPosition","sortModifiers","sortedModifiers","unsortedModifiers","modifier","isArbitraryVariant","sort","createConfigUtils","SPLIT_CLASSES_REGEX","mergeClassList","classList","configUtils","classGroupsInConflict","classNames","trim","result","originalClassName","Boolean","variantModifier","modifierId","classId","includes","conflictGroups","i","group","twJoin","argument","resolvedValue","string","arguments","toValue","mix","k","createTailwindMerge","createConfigFirst","createConfigRest","cacheGet","cacheSet","functionToCall","initTailwindMerge","reduce","previousConfig","createConfigCurrent","tailwindMerge","cachedResult","callTailwindMerge","apply","fromTheme","themeGetter","arbitraryValueRegex","fractionRegex","stringLengths","Set","tshirtUnitRegex","lengthUnitRegex","colorFunctionRegex","shadowRegex","imageRegex","isLength","isNumber","isArbitraryLength","getIsArbitraryValue","isLengthOnly","Number","isNaN","isArbitraryNumber","isInteger","isPercent","endsWith","isArbitraryValue","isTshirtSize","sizeLabels","isArbitrarySize","isNever","isArbitraryPosition","imageLabels","isArbitraryImage","isImage","isArbitraryShadow","isShadow","isAny","label","testValue","getDefaultConfig","colors","fromTheme","spacing","blur","brightness","borderColor","borderRadius","borderSpacing","borderWidth","contrast","grayscale","hueRotate","invert","gap","gradientColorStops","gradientColorStopPositions","inset","margin","opacity","padding","saturate","scale","sepia","skew","space","translate","getOverscroll","getOverflow","getSpacingWithAutoAndArbitrary","isArbitraryValue","getSpacingWithArbitrary","getLengthWithEmptyAndArbitrary","isLength","isArbitraryLength","getNumberWithAutoAndArbitrary","isNumber","getPositions","getLineStyles","getBlendModes","getAlign","getZeroAndEmpty","getBreaks","getNumberAndArbitrary","cacheSize","separator","theme","isAny","isTshirtSize","isPercent","classGroups","aspect","container","columns","box","display","float","clear","isolation","object","overflow","overscroll","position","start","end","top","right","bottom","left","visibility","z","isInteger","basis","flex","grow","shrink","order","col","span","row","justify","content","items","self","p","px","py","ps","pe","pt","pr","pb","pl","m","mx","my","ms","me","mt","mr","mb","ml","w","screen","h","size","text","font","isArbitraryNumber","tracking","leading","list","placeholder","decoration","indent","align","whitespace","break","hyphens","bg","isArbitraryPosition","repeat","isArbitrarySize","isArbitraryImage","from","via","to","rounded","border","divide","outline","ring","shadow","isArbitraryShadow","filter","table","caption","transition","duration","ease","delay","animate","transform","rotate","origin","accent","appearance","cursor","caret","resize","scroll","snap","touch","select","fill","stroke","sr","conflictingClassGroups","conflictingClassGroupModifiers","twMerge","createTailwindMerge","getDefaultConfig","import_jsx_runtime","import_react","import_framer_motion","import_jsx_runtime","e","i","s","u","m","a","l","d","p","n","y","k","f","c","o","r","P","L","g","import_jsx_runtime","import_jsx_runtime","Link","import_link","import_jsx_runtime","Link","import_jsx_runtime","import_react","window","constructor","raf","now","requestAnimationFrame","this","deltaTime","s","i","callbacks","length","callback","performance","add","priority","push","sort","a","b","remove","filter","cb","i","useFrame","callback","priority","useEffect","Tempus","add","remove","e","t","n","r","removeParentSticky","element","getComputedStyle","position","style","setProperty","dataset","sticky","offsetParent","addParentSticky","_element$dataset","removeProperty","parentNode","offsetTop","accumulator","top","offsetLeft","left","scrollTop","window","scrollY","scrollLeft","scrollX","emitter","createNanoEvents","useRect","ignoreTransform","ignoreSticky","debounce","debounceDelay","lazy","callback","setElement","useState","rectRef","useRef","rect","setRectState","setRect","useCallback","width","height","_top","_left","_width","_height","_element","current","y","x","bottom","right","_extends","useEffect","getBoundingClientRect","onResize","entry","borderBoxSize","inlineSize","blockSize","resizeObserver","ResizeObserver","observe","disconnect","cancel","wrapperElement","setWrapperElementRef","onWrapperResize","debouncedOnWrapperResize","document","body","on","elementRect","getRect","useRect","resize","emitter","emit","clamp","min","input","max","Math","Animate","deltaTime","this","isRunning","completed","lerp","value","x","y","to","lambda","dt","t","exp","round","currentTime","linearProgress","duration","easedProgress","easing","from","onUpdate","stop","onStart","Dimensions","constructor","wrapper","content","autoResize","debounce","debounceValue","resize","onWrapperResize","onContentResize","window","width","innerWidth","height","innerHeight","clientWidth","clientHeight","scrollHeight","scrollWidth","debouncedResize","callback","delay","timer","args","arguments","context","clearTimeout","setTimeout","apply","addEventListener","wrapperResizeObserver","ResizeObserver","observe","contentResizeObserver","destroy","disconnect","removeEventListener","limit","Emitter","events","event","callbacks","i","length","cb","push","filter","LINE_HEIGHT","VirtualScroll","element","wheelMultiplier","touchMultiplier","onTouchStart","clientX","clientY","targetTouches","touchStart","lastDelta","emitter","emit","deltaX","deltaY","onTouchMove","onTouchEnd","onWheel","deltaMode","windowWidth","windowHeight","onWindowResize","passive","on","Lenis","document","documentElement","wheelEventsTarget","eventsTarget","smoothWheel","syncTouch","syncTouchLerp","touchInertiaMultiplier","pow","infinite","orientation","gestureOrientation","__experimental__naiveDimensions","__isSmooth","__isScrolling","__isStopped","__isLocked","onVirtualScroll","ctrlKey","isTouch","type","includes","isWheel","options","isStopped","isLocked","reset","isClick","isUnknownGesture","composedPath","slice","indexOf","rootElement","find","node","_a","hasAttribute","call","_b","_c","r","classList","_d","contains","_e","preventDefault","isSmooth","isScrolling","animate","delta","abs","hasTouchInertia","velocity","scrollTo","targetScroll","Object","assign","programmatic","onNativeScroll","__preventNextScrollEvent","lastScroll","animatedScroll","actualScroll","direction","sign","lenisVersion","body","dimensions","toggleClassName","virtualScroll","off","scroll","isHorizontal","scrollLeft","scrollTop","start","time","advance","target","offset","immediate","lock","onComplete","force","querySelector","nodeType","wrapperRect","getBoundingClientRect","left","top","rect","setScroll","fromTo","requestAnimationFrame","n","d","progress","className","name","toggle","import_react","import_meta","ReactExports","useSyncExternalStoreExports","window","reactLenisVersion","LenisContext","createContext","useRoot","create","ReactLenis","forwardRef","_a","ref","children","root","options","autoRaf","rafPriority","className","props","s","e","t","p","Object","prototype","hasOwnProperty","call","indexOf","getOwnPropertySymbols","i","length","propertyIsEnumerable","wrapperRef","useRef","contentRef","lenis","setLenis","useState","undefined","callbacksRefs","addCallback","useCallback","callback","priority","current","push","sort","a","b","removeCallback","filter","cb","useImperativeHandle","wrapper","content","useEffect","Lenis","assign","destroy","JSON","stringify","useFrame","time","raf","useRoot","setState","onScroll","lenisInstance","on","off","onClassNameChange","cn","React","LenisContext","Provider","value","createElement","import_jsx_runtime","y","import_jsx_runtime"]}