8067 lines
331 KiB
JavaScript
8067 lines
331 KiB
JavaScript
(globalThis.TURBOPACK || (globalThis.TURBOPACK = [])).push([typeof document === "object" ? document.currentScript : undefined,
|
|
"[project]/node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
|
|
"use strict";
|
|
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
|
|
/**
|
|
* @license React
|
|
* react-jsx-dev-runtime.development.js
|
|
*
|
|
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
|
*
|
|
* This source code is licensed under the MIT license found in the
|
|
* LICENSE file in the root directory of this source tree.
|
|
*/ "use strict";
|
|
"production" !== ("TURBOPACK compile-time value", "development") && function() {
|
|
function getComponentNameFromType(type) {
|
|
if (null == type) return null;
|
|
if ("function" === typeof type) return type.$$typeof === REACT_CLIENT_REFERENCE ? null : type.displayName || type.name || null;
|
|
if ("string" === typeof type) return type;
|
|
switch(type){
|
|
case REACT_FRAGMENT_TYPE:
|
|
return "Fragment";
|
|
case REACT_PROFILER_TYPE:
|
|
return "Profiler";
|
|
case REACT_STRICT_MODE_TYPE:
|
|
return "StrictMode";
|
|
case REACT_SUSPENSE_TYPE:
|
|
return "Suspense";
|
|
case REACT_SUSPENSE_LIST_TYPE:
|
|
return "SuspenseList";
|
|
case REACT_ACTIVITY_TYPE:
|
|
return "Activity";
|
|
case REACT_VIEW_TRANSITION_TYPE:
|
|
return "ViewTransition";
|
|
}
|
|
if ("object" === typeof type) switch("number" === typeof type.tag && console.error("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), type.$$typeof){
|
|
case REACT_PORTAL_TYPE:
|
|
return "Portal";
|
|
case REACT_CONTEXT_TYPE:
|
|
return type.displayName || "Context";
|
|
case REACT_CONSUMER_TYPE:
|
|
return (type._context.displayName || "Context") + ".Consumer";
|
|
case REACT_FORWARD_REF_TYPE:
|
|
var innerType = type.render;
|
|
type = type.displayName;
|
|
type || (type = innerType.displayName || innerType.name || "", type = "" !== type ? "ForwardRef(" + type + ")" : "ForwardRef");
|
|
return type;
|
|
case REACT_MEMO_TYPE:
|
|
return innerType = type.displayName || null, null !== innerType ? innerType : getComponentNameFromType(type.type) || "Memo";
|
|
case REACT_LAZY_TYPE:
|
|
innerType = type._payload;
|
|
type = type._init;
|
|
try {
|
|
return getComponentNameFromType(type(innerType));
|
|
} catch (x) {}
|
|
}
|
|
return null;
|
|
}
|
|
function testStringCoercion(value) {
|
|
return "" + value;
|
|
}
|
|
function checkKeyStringCoercion(value) {
|
|
try {
|
|
testStringCoercion(value);
|
|
var JSCompiler_inline_result = !1;
|
|
} catch (e) {
|
|
JSCompiler_inline_result = !0;
|
|
}
|
|
if (JSCompiler_inline_result) {
|
|
JSCompiler_inline_result = console;
|
|
var JSCompiler_temp_const = JSCompiler_inline_result.error;
|
|
var JSCompiler_inline_result$jscomp$0 = "function" === typeof Symbol && Symbol.toStringTag && value[Symbol.toStringTag] || value.constructor.name || "Object";
|
|
JSCompiler_temp_const.call(JSCompiler_inline_result, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", JSCompiler_inline_result$jscomp$0);
|
|
return testStringCoercion(value);
|
|
}
|
|
}
|
|
function getTaskName(type) {
|
|
if (type === REACT_FRAGMENT_TYPE) return "<>";
|
|
if ("object" === typeof type && null !== type && type.$$typeof === REACT_LAZY_TYPE) return "<...>";
|
|
try {
|
|
var name = getComponentNameFromType(type);
|
|
return name ? "<" + name + ">" : "<...>";
|
|
} catch (x) {
|
|
return "<...>";
|
|
}
|
|
}
|
|
function getOwner() {
|
|
var dispatcher = ReactSharedInternals.A;
|
|
return null === dispatcher ? null : dispatcher.getOwner();
|
|
}
|
|
function UnknownOwner() {
|
|
return Error("react-stack-top-frame");
|
|
}
|
|
function hasValidKey(config) {
|
|
if (hasOwnProperty.call(config, "key")) {
|
|
var getter = Object.getOwnPropertyDescriptor(config, "key").get;
|
|
if (getter && getter.isReactWarning) return !1;
|
|
}
|
|
return void 0 !== config.key;
|
|
}
|
|
function defineKeyPropWarningGetter(props, displayName) {
|
|
function warnAboutAccessingKey() {
|
|
specialPropKeyWarningShown || (specialPropKeyWarningShown = !0, console.error("%s: `key` is not a prop. Trying to access it will result in `undefined` being returned. If you need to access the same value within the child component, you should pass it as a different prop. (https://react.dev/link/special-props)", displayName));
|
|
}
|
|
warnAboutAccessingKey.isReactWarning = !0;
|
|
Object.defineProperty(props, "key", {
|
|
get: warnAboutAccessingKey,
|
|
configurable: !0
|
|
});
|
|
}
|
|
function elementRefGetterWithDeprecationWarning() {
|
|
var componentName = getComponentNameFromType(this.type);
|
|
didWarnAboutElementRef[componentName] || (didWarnAboutElementRef[componentName] = !0, console.error("Accessing element.ref was removed in React 19. ref is now a regular prop. It will be removed from the JSX Element type in a future release."));
|
|
componentName = this.props.ref;
|
|
return void 0 !== componentName ? componentName : null;
|
|
}
|
|
function ReactElement(type, key, props, owner, debugStack, debugTask) {
|
|
var refProp = props.ref;
|
|
type = {
|
|
$$typeof: REACT_ELEMENT_TYPE,
|
|
type: type,
|
|
key: key,
|
|
props: props,
|
|
_owner: owner
|
|
};
|
|
null !== (void 0 !== refProp ? refProp : null) ? Object.defineProperty(type, "ref", {
|
|
enumerable: !1,
|
|
get: elementRefGetterWithDeprecationWarning
|
|
}) : Object.defineProperty(type, "ref", {
|
|
enumerable: !1,
|
|
value: null
|
|
});
|
|
type._store = {};
|
|
Object.defineProperty(type._store, "validated", {
|
|
configurable: !1,
|
|
enumerable: !1,
|
|
writable: !0,
|
|
value: 0
|
|
});
|
|
Object.defineProperty(type, "_debugInfo", {
|
|
configurable: !1,
|
|
enumerable: !1,
|
|
writable: !0,
|
|
value: null
|
|
});
|
|
Object.defineProperty(type, "_debugStack", {
|
|
configurable: !1,
|
|
enumerable: !1,
|
|
writable: !0,
|
|
value: debugStack
|
|
});
|
|
Object.defineProperty(type, "_debugTask", {
|
|
configurable: !1,
|
|
enumerable: !1,
|
|
writable: !0,
|
|
value: debugTask
|
|
});
|
|
Object.freeze && (Object.freeze(type.props), Object.freeze(type));
|
|
return type;
|
|
}
|
|
function jsxDEVImpl(type, config, maybeKey, isStaticChildren, debugStack, debugTask) {
|
|
var children = config.children;
|
|
if (void 0 !== children) if (isStaticChildren) if (isArrayImpl(children)) {
|
|
for(isStaticChildren = 0; isStaticChildren < children.length; isStaticChildren++)validateChildKeys(children[isStaticChildren]);
|
|
Object.freeze && Object.freeze(children);
|
|
} else console.error("React.jsx: Static children should always be an array. You are likely explicitly calling React.jsxs or React.jsxDEV. Use the Babel transform instead.");
|
|
else validateChildKeys(children);
|
|
if (hasOwnProperty.call(config, "key")) {
|
|
children = getComponentNameFromType(type);
|
|
var keys = Object.keys(config).filter(function(k) {
|
|
return "key" !== k;
|
|
});
|
|
isStaticChildren = 0 < keys.length ? "{key: someKey, " + keys.join(": ..., ") + ": ...}" : "{key: someKey}";
|
|
didWarnAboutKeySpread[children + isStaticChildren] || (keys = 0 < keys.length ? "{" + keys.join(": ..., ") + ": ...}" : "{}", console.error('A props object containing a "key" prop is being spread into JSX:\n let props = %s;\n <%s {...props} />\nReact keys must be passed directly to JSX without using spread:\n let props = %s;\n <%s key={someKey} {...props} />', isStaticChildren, children, keys, children), didWarnAboutKeySpread[children + isStaticChildren] = !0);
|
|
}
|
|
children = null;
|
|
void 0 !== maybeKey && (checkKeyStringCoercion(maybeKey), children = "" + maybeKey);
|
|
hasValidKey(config) && (checkKeyStringCoercion(config.key), children = "" + config.key);
|
|
if ("key" in config) {
|
|
maybeKey = {};
|
|
for(var propName in config)"key" !== propName && (maybeKey[propName] = config[propName]);
|
|
} else maybeKey = config;
|
|
children && defineKeyPropWarningGetter(maybeKey, "function" === typeof type ? type.displayName || type.name || "Unknown" : type);
|
|
return ReactElement(type, children, maybeKey, getOwner(), debugStack, debugTask);
|
|
}
|
|
function validateChildKeys(node) {
|
|
isValidElement(node) ? node._store && (node._store.validated = 1) : "object" === typeof node && null !== node && node.$$typeof === REACT_LAZY_TYPE && ("fulfilled" === node._payload.status ? isValidElement(node._payload.value) && node._payload.value._store && (node._payload.value._store.validated = 1) : node._store && (node._store.validated = 1));
|
|
}
|
|
function isValidElement(object) {
|
|
return "object" === typeof object && null !== object && object.$$typeof === REACT_ELEMENT_TYPE;
|
|
}
|
|
var React = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)"), REACT_ELEMENT_TYPE = Symbol.for("react.transitional.element"), REACT_PORTAL_TYPE = Symbol.for("react.portal"), REACT_FRAGMENT_TYPE = Symbol.for("react.fragment"), REACT_STRICT_MODE_TYPE = Symbol.for("react.strict_mode"), REACT_PROFILER_TYPE = Symbol.for("react.profiler"), REACT_CONSUMER_TYPE = Symbol.for("react.consumer"), REACT_CONTEXT_TYPE = Symbol.for("react.context"), REACT_FORWARD_REF_TYPE = Symbol.for("react.forward_ref"), REACT_SUSPENSE_TYPE = Symbol.for("react.suspense"), REACT_SUSPENSE_LIST_TYPE = Symbol.for("react.suspense_list"), REACT_MEMO_TYPE = Symbol.for("react.memo"), REACT_LAZY_TYPE = Symbol.for("react.lazy"), REACT_ACTIVITY_TYPE = Symbol.for("react.activity"), REACT_VIEW_TRANSITION_TYPE = Symbol.for("react.view_transition"), REACT_CLIENT_REFERENCE = Symbol.for("react.client.reference"), ReactSharedInternals = React.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, hasOwnProperty = Object.prototype.hasOwnProperty, isArrayImpl = Array.isArray, createTask = console.createTask ? console.createTask : function() {
|
|
return null;
|
|
};
|
|
React = {
|
|
react_stack_bottom_frame: function(callStackForError) {
|
|
return callStackForError();
|
|
}
|
|
};
|
|
var specialPropKeyWarningShown;
|
|
var didWarnAboutElementRef = {};
|
|
var unknownOwnerDebugStack = React.react_stack_bottom_frame.bind(React, UnknownOwner)();
|
|
var unknownOwnerDebugTask = createTask(getTaskName(UnknownOwner));
|
|
var didWarnAboutKeySpread = {};
|
|
exports.Fragment = REACT_FRAGMENT_TYPE;
|
|
exports.jsxDEV = function(type, config, maybeKey, isStaticChildren) {
|
|
var trackActualOwner = 1e4 > ReactSharedInternals.recentlyCreatedOwnerStacks++;
|
|
if (trackActualOwner) {
|
|
var previousStackTraceLimit = Error.stackTraceLimit;
|
|
Error.stackTraceLimit = 10;
|
|
var debugStackDEV = Error("react-stack-top-frame");
|
|
Error.stackTraceLimit = previousStackTraceLimit;
|
|
} else debugStackDEV = unknownOwnerDebugStack;
|
|
return jsxDEVImpl(type, config, maybeKey, isStaticChildren, debugStackDEV, trackActualOwner ? createTask(getTaskName(type)) : unknownOwnerDebugTask);
|
|
};
|
|
}();
|
|
}),
|
|
"[project]/node_modules/next/dist/compiled/react/jsx-dev-runtime.js [app-client] (ecmascript)", ((__turbopack_context__, module, exports) => {
|
|
"use strict";
|
|
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$build$2f$polyfills$2f$process$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = /*#__PURE__*/ __turbopack_context__.i("[project]/node_modules/next/dist/build/polyfills/process.js [app-client] (ecmascript)");
|
|
'use strict';
|
|
if ("TURBOPACK compile-time falsy", 0) //TURBOPACK unreachable
|
|
;
|
|
else {
|
|
module.exports = __turbopack_context__.r("[project]/node_modules/next/dist/compiled/react/cjs/react-jsx-dev-runtime.development.js [app-client] (ecmascript)");
|
|
}
|
|
}),
|
|
"[project]/node_modules/@radix-ui/primitive/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"canUseDOM",
|
|
()=>canUseDOM,
|
|
"composeEventHandlers",
|
|
()=>composeEventHandlers,
|
|
"getActiveElement",
|
|
()=>getActiveElement,
|
|
"getOwnerDocument",
|
|
()=>getOwnerDocument,
|
|
"getOwnerWindow",
|
|
()=>getOwnerWindow,
|
|
"isFrame",
|
|
()=>isFrame
|
|
]);
|
|
// src/primitive.tsx
|
|
var canUseDOM = !!(typeof window !== "undefined" && window.document && window.document.createElement);
|
|
function composeEventHandlers(originalEventHandler, ourEventHandler, { checkForDefaultPrevented = true } = {}) {
|
|
return function handleEvent(event) {
|
|
originalEventHandler?.(event);
|
|
if (checkForDefaultPrevented === false || !event.defaultPrevented) {
|
|
return ourEventHandler?.(event);
|
|
}
|
|
};
|
|
}
|
|
function getOwnerWindow(element) {
|
|
if (!canUseDOM) {
|
|
throw new Error("Cannot access window outside of the DOM");
|
|
}
|
|
return element?.ownerDocument?.defaultView ?? window;
|
|
}
|
|
function getOwnerDocument(element) {
|
|
if (!canUseDOM) {
|
|
throw new Error("Cannot access document outside of the DOM");
|
|
}
|
|
return element?.ownerDocument ?? document;
|
|
}
|
|
function getActiveElement(node, activeDescendant = false) {
|
|
const { activeElement } = getOwnerDocument(node);
|
|
if (!activeElement?.nodeName) {
|
|
return null;
|
|
}
|
|
if (isFrame(activeElement) && activeElement.contentDocument) {
|
|
return getActiveElement(activeElement.contentDocument.body, activeDescendant);
|
|
}
|
|
if (activeDescendant) {
|
|
const id = activeElement.getAttribute("aria-activedescendant");
|
|
if (id) {
|
|
const element = getOwnerDocument(activeElement).getElementById(id);
|
|
if (element) {
|
|
return element;
|
|
}
|
|
}
|
|
}
|
|
return activeElement;
|
|
}
|
|
function isFrame(element) {
|
|
return element.tagName === "IFRAME";
|
|
}
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-compose-refs/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"composeRefs",
|
|
()=>composeRefs,
|
|
"useComposedRefs",
|
|
()=>useComposedRefs
|
|
]);
|
|
// packages/react/compose-refs/src/compose-refs.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
;
|
|
function setRef(ref, value) {
|
|
if (typeof ref === "function") {
|
|
return ref(value);
|
|
} else if (ref !== null && ref !== void 0) {
|
|
ref.current = value;
|
|
}
|
|
}
|
|
function composeRefs(...refs) {
|
|
return (node)=>{
|
|
let hasCleanup = false;
|
|
const cleanups = refs.map((ref)=>{
|
|
const cleanup = setRef(ref, node);
|
|
if (!hasCleanup && typeof cleanup == "function") {
|
|
hasCleanup = true;
|
|
}
|
|
return cleanup;
|
|
});
|
|
if (hasCleanup) {
|
|
return ()=>{
|
|
for(let i = 0; i < cleanups.length; i++){
|
|
const cleanup = cleanups[i];
|
|
if (typeof cleanup == "function") {
|
|
cleanup();
|
|
} else {
|
|
setRef(refs[i], null);
|
|
}
|
|
}
|
|
};
|
|
}
|
|
};
|
|
}
|
|
function useComposedRefs(...refs) {
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"](composeRefs(...refs), refs);
|
|
}
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-context/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"createContext",
|
|
()=>createContext2,
|
|
"createContextScope",
|
|
()=>createContextScope
|
|
]);
|
|
// packages/react/context/src/create-context.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
|
|
;
|
|
;
|
|
function createContext2(rootComponentName, defaultContext) {
|
|
const Context = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContext"](defaultContext);
|
|
const Provider = (props)=>{
|
|
const { children, ...context } = props;
|
|
const value = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"]({
|
|
"createContext2.Provider.useMemo[value]": ()=>context
|
|
}["createContext2.Provider.useMemo[value]"], Object.values(context));
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(Context.Provider, {
|
|
value,
|
|
children
|
|
});
|
|
};
|
|
Provider.displayName = rootComponentName + "Provider";
|
|
function useContext2(consumerName) {
|
|
const context = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useContext"](Context);
|
|
if (context) return context;
|
|
if (defaultContext !== void 0) return defaultContext;
|
|
throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``);
|
|
}
|
|
return [
|
|
Provider,
|
|
useContext2
|
|
];
|
|
}
|
|
function createContextScope(scopeName, createContextScopeDeps = []) {
|
|
let defaultContexts = [];
|
|
function createContext3(rootComponentName, defaultContext) {
|
|
const BaseContext = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContext"](defaultContext);
|
|
const index = defaultContexts.length;
|
|
defaultContexts = [
|
|
...defaultContexts,
|
|
defaultContext
|
|
];
|
|
const Provider = (props)=>{
|
|
const { scope, children, ...context } = props;
|
|
const Context = scope?.[scopeName]?.[index] || BaseContext;
|
|
const value = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"]({
|
|
"createContextScope.createContext3.Provider.useMemo[value]": ()=>context
|
|
}["createContextScope.createContext3.Provider.useMemo[value]"], Object.values(context));
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(Context.Provider, {
|
|
value,
|
|
children
|
|
});
|
|
};
|
|
Provider.displayName = rootComponentName + "Provider";
|
|
function useContext2(consumerName, scope) {
|
|
const Context = scope?.[scopeName]?.[index] || BaseContext;
|
|
const context = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useContext"](Context);
|
|
if (context) return context;
|
|
if (defaultContext !== void 0) return defaultContext;
|
|
throw new Error(`\`${consumerName}\` must be used within \`${rootComponentName}\``);
|
|
}
|
|
return [
|
|
Provider,
|
|
useContext2
|
|
];
|
|
}
|
|
const createScope = ()=>{
|
|
const scopeContexts = defaultContexts.map((defaultContext)=>{
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContext"](defaultContext);
|
|
});
|
|
return function useScope(scope) {
|
|
const contexts = scope?.[scopeName] || scopeContexts;
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"]({
|
|
"createContextScope.createScope.useScope.useMemo": ()=>({
|
|
[`__scope${scopeName}`]: {
|
|
...scope,
|
|
[scopeName]: contexts
|
|
}
|
|
})
|
|
}["createContextScope.createScope.useScope.useMemo"], [
|
|
scope,
|
|
contexts
|
|
]);
|
|
};
|
|
};
|
|
createScope.scopeName = scopeName;
|
|
return [
|
|
createContext3,
|
|
composeContextScopes(createScope, ...createContextScopeDeps)
|
|
];
|
|
}
|
|
function composeContextScopes(...scopes) {
|
|
const baseScope = scopes[0];
|
|
if (scopes.length === 1) return baseScope;
|
|
const createScope = ()=>{
|
|
const scopeHooks = scopes.map((createScope2)=>({
|
|
useScope: createScope2(),
|
|
scopeName: createScope2.scopeName
|
|
}));
|
|
return function useComposedScopes(overrideScopes) {
|
|
const nextScopes = scopeHooks.reduce((nextScopes2, { useScope, scopeName })=>{
|
|
const scopeProps = useScope(overrideScopes);
|
|
const currentScope = scopeProps[`__scope${scopeName}`];
|
|
return {
|
|
...nextScopes2,
|
|
...currentScope
|
|
};
|
|
}, {});
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"]({
|
|
"composeContextScopes.createScope.useComposedScopes.useMemo": ()=>({
|
|
[`__scope${baseScope.scopeName}`]: nextScopes
|
|
})
|
|
}["composeContextScopes.createScope.useComposedScopes.useMemo"], [
|
|
nextScopes
|
|
]);
|
|
};
|
|
};
|
|
createScope.scopeName = baseScope.scopeName;
|
|
return createScope;
|
|
}
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Root",
|
|
()=>Slot,
|
|
"Slot",
|
|
()=>Slot,
|
|
"Slottable",
|
|
()=>Slottable,
|
|
"createSlot",
|
|
()=>createSlot,
|
|
"createSlottable",
|
|
()=>createSlottable
|
|
]);
|
|
// src/slot.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-compose-refs/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
|
|
;
|
|
;
|
|
;
|
|
// @__NO_SIDE_EFFECTS__
|
|
function createSlot(ownerName) {
|
|
const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
|
|
const Slot2 = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { children, ...slotProps } = props;
|
|
const childrenArray = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].toArray(children);
|
|
const slottable = childrenArray.find(isSlottable);
|
|
if (slottable) {
|
|
const newElement = slottable.props.children;
|
|
const newChildren = childrenArray.map((child)=>{
|
|
if (child === slottable) {
|
|
if (__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].count(newElement) > 1) return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].only(null);
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](newElement) ? newElement.props.children : null;
|
|
} else {
|
|
return child;
|
|
}
|
|
});
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(SlotClone, {
|
|
...slotProps,
|
|
ref: forwardedRef,
|
|
children: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](newElement) ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cloneElement"](newElement, void 0, newChildren) : null
|
|
});
|
|
}
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(SlotClone, {
|
|
...slotProps,
|
|
ref: forwardedRef,
|
|
children
|
|
});
|
|
});
|
|
Slot2.displayName = `${ownerName}.Slot`;
|
|
return Slot2;
|
|
}
|
|
var Slot = /* @__PURE__ */ createSlot("Slot");
|
|
// @__NO_SIDE_EFFECTS__
|
|
function createSlotClone(ownerName) {
|
|
const SlotClone = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { children, ...slotProps } = props;
|
|
if (__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](children)) {
|
|
const childrenRef = getElementRef(children);
|
|
const props2 = mergeProps(slotProps, children.props);
|
|
if (children.type !== __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"]) {
|
|
props2.ref = forwardedRef ? (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeRefs"])(forwardedRef, childrenRef) : childrenRef;
|
|
}
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cloneElement"](children, props2);
|
|
}
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].count(children) > 1 ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].only(null) : null;
|
|
});
|
|
SlotClone.displayName = `${ownerName}.SlotClone`;
|
|
return SlotClone;
|
|
}
|
|
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
|
|
// @__NO_SIDE_EFFECTS__
|
|
function createSlottable(ownerName) {
|
|
const Slottable2 = ({ children })=>{
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
|
|
children
|
|
});
|
|
};
|
|
Slottable2.displayName = `${ownerName}.Slottable`;
|
|
Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
|
|
return Slottable2;
|
|
}
|
|
var Slottable = /* @__PURE__ */ createSlottable("Slottable");
|
|
function isSlottable(child) {
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
|
|
}
|
|
function mergeProps(slotProps, childProps) {
|
|
const overrideProps = {
|
|
...childProps
|
|
};
|
|
for(const propName in childProps){
|
|
const slotPropValue = slotProps[propName];
|
|
const childPropValue = childProps[propName];
|
|
const isHandler = /^on[A-Z]/.test(propName);
|
|
if (isHandler) {
|
|
if (slotPropValue && childPropValue) {
|
|
overrideProps[propName] = (...args)=>{
|
|
const result = childPropValue(...args);
|
|
slotPropValue(...args);
|
|
return result;
|
|
};
|
|
} else if (slotPropValue) {
|
|
overrideProps[propName] = slotPropValue;
|
|
}
|
|
} else if (propName === "style") {
|
|
overrideProps[propName] = {
|
|
...slotPropValue,
|
|
...childPropValue
|
|
};
|
|
} else if (propName === "className") {
|
|
overrideProps[propName] = [
|
|
slotPropValue,
|
|
childPropValue
|
|
].filter(Boolean).join(" ");
|
|
}
|
|
}
|
|
return {
|
|
...slotProps,
|
|
...overrideProps
|
|
};
|
|
}
|
|
function getElementRef(element) {
|
|
let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
|
|
let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
if (mayWarn) {
|
|
return element.ref;
|
|
}
|
|
getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
|
|
mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
if (mayWarn) {
|
|
return element.props.ref;
|
|
}
|
|
return element.props.ref || element.ref;
|
|
}
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-collection/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"createCollection",
|
|
()=>createCollection,
|
|
"unstable_createCollection",
|
|
()=>createCollection2
|
|
]);
|
|
// src/collection-legacy.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$context$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-context/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-compose-refs/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$collection$2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-collection/node_modules/@radix-ui/react-slot/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
|
|
"use client";
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
function createCollection(name) {
|
|
const PROVIDER_NAME = name + "CollectionProvider";
|
|
const [createCollectionContext, createCollectionScope] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$context$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContextScope"])(PROVIDER_NAME);
|
|
const [CollectionProviderImpl, useCollectionContext] = createCollectionContext(PROVIDER_NAME, {
|
|
collectionRef: {
|
|
current: null
|
|
},
|
|
itemMap: /* @__PURE__ */ new Map()
|
|
});
|
|
const CollectionProvider = (props)=>{
|
|
const { scope, children } = props;
|
|
const ref = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useRef(null);
|
|
const itemMap = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useRef(/* @__PURE__ */ new Map()).current;
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(CollectionProviderImpl, {
|
|
scope,
|
|
itemMap,
|
|
collectionRef: ref,
|
|
children
|
|
});
|
|
};
|
|
CollectionProvider.displayName = PROVIDER_NAME;
|
|
const COLLECTION_SLOT_NAME = name + "CollectionSlot";
|
|
const CollectionSlotImpl = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$collection$2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createSlot"])(COLLECTION_SLOT_NAME);
|
|
const CollectionSlot = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].forwardRef((props, forwardedRef)=>{
|
|
const { scope, children } = props;
|
|
const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
|
|
const composedRefs = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useComposedRefs"])(forwardedRef, context.collectionRef);
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(CollectionSlotImpl, {
|
|
ref: composedRefs,
|
|
children
|
|
});
|
|
});
|
|
CollectionSlot.displayName = COLLECTION_SLOT_NAME;
|
|
const ITEM_SLOT_NAME = name + "CollectionItemSlot";
|
|
const ITEM_DATA_ATTR = "data-radix-collection-item";
|
|
const CollectionItemSlotImpl = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$collection$2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createSlot"])(ITEM_SLOT_NAME);
|
|
const CollectionItemSlot = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].forwardRef((props, forwardedRef)=>{
|
|
const { scope, children, ...itemData } = props;
|
|
const ref = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useRef(null);
|
|
const composedRefs = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useComposedRefs"])(forwardedRef, ref);
|
|
const context = useCollectionContext(ITEM_SLOT_NAME, scope);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useEffect({
|
|
"createCollection.CollectionItemSlot.useEffect": ()=>{
|
|
context.itemMap.set(ref, {
|
|
ref,
|
|
...itemData
|
|
});
|
|
return ({
|
|
"createCollection.CollectionItemSlot.useEffect": ()=>void context.itemMap.delete(ref)
|
|
})["createCollection.CollectionItemSlot.useEffect"];
|
|
}
|
|
}["createCollection.CollectionItemSlot.useEffect"]);
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(CollectionItemSlotImpl, {
|
|
...{
|
|
[ITEM_DATA_ATTR]: ""
|
|
},
|
|
ref: composedRefs,
|
|
children
|
|
});
|
|
});
|
|
CollectionItemSlot.displayName = ITEM_SLOT_NAME;
|
|
function useCollection(scope) {
|
|
const context = useCollectionContext(name + "CollectionConsumer", scope);
|
|
const getItems = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useCallback({
|
|
"createCollection.useCollection.useCallback[getItems]": ()=>{
|
|
const collectionNode = context.collectionRef.current;
|
|
if (!collectionNode) return [];
|
|
const orderedNodes = Array.from(collectionNode.querySelectorAll(`[${ITEM_DATA_ATTR}]`));
|
|
const items = Array.from(context.itemMap.values());
|
|
const orderedItems = items.sort({
|
|
"createCollection.useCollection.useCallback[getItems].orderedItems": (a, b)=>orderedNodes.indexOf(a.ref.current) - orderedNodes.indexOf(b.ref.current)
|
|
}["createCollection.useCollection.useCallback[getItems].orderedItems"]);
|
|
return orderedItems;
|
|
}
|
|
}["createCollection.useCollection.useCallback[getItems]"], [
|
|
context.collectionRef,
|
|
context.itemMap
|
|
]);
|
|
return getItems;
|
|
}
|
|
return [
|
|
{
|
|
Provider: CollectionProvider,
|
|
Slot: CollectionSlot,
|
|
ItemSlot: CollectionItemSlot
|
|
},
|
|
useCollection,
|
|
createCollectionScope
|
|
];
|
|
}
|
|
;
|
|
;
|
|
;
|
|
;
|
|
// src/ordered-dictionary.ts
|
|
var __instanciated = /* @__PURE__ */ new WeakMap();
|
|
var OrderedDict = class _OrderedDict extends Map {
|
|
#keys;
|
|
constructor(entries){
|
|
super(entries);
|
|
this.#keys = [
|
|
...super.keys()
|
|
];
|
|
__instanciated.set(this, true);
|
|
}
|
|
set(key, value) {
|
|
if (__instanciated.get(this)) {
|
|
if (this.has(key)) {
|
|
this.#keys[this.#keys.indexOf(key)] = key;
|
|
} else {
|
|
this.#keys.push(key);
|
|
}
|
|
}
|
|
super.set(key, value);
|
|
return this;
|
|
}
|
|
insert(index, key, value) {
|
|
const has = this.has(key);
|
|
const length = this.#keys.length;
|
|
const relativeIndex = toSafeInteger(index);
|
|
let actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;
|
|
const safeIndex = actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;
|
|
if (safeIndex === this.size || has && safeIndex === this.size - 1 || safeIndex === -1) {
|
|
this.set(key, value);
|
|
return this;
|
|
}
|
|
const size = this.size + (has ? 0 : 1);
|
|
if (relativeIndex < 0) {
|
|
actualIndex++;
|
|
}
|
|
const keys = [
|
|
...this.#keys
|
|
];
|
|
let nextValue;
|
|
let shouldSkip = false;
|
|
for(let i = actualIndex; i < size; i++){
|
|
if (actualIndex === i) {
|
|
let nextKey = keys[i];
|
|
if (keys[i] === key) {
|
|
nextKey = keys[i + 1];
|
|
}
|
|
if (has) {
|
|
this.delete(key);
|
|
}
|
|
nextValue = this.get(nextKey);
|
|
this.set(key, value);
|
|
} else {
|
|
if (!shouldSkip && keys[i - 1] === key) {
|
|
shouldSkip = true;
|
|
}
|
|
const currentKey = keys[shouldSkip ? i : i - 1];
|
|
const currentValue = nextValue;
|
|
nextValue = this.get(currentKey);
|
|
this.delete(currentKey);
|
|
this.set(currentKey, currentValue);
|
|
}
|
|
}
|
|
return this;
|
|
}
|
|
with(index, key, value) {
|
|
const copy = new _OrderedDict(this);
|
|
copy.insert(index, key, value);
|
|
return copy;
|
|
}
|
|
before(key) {
|
|
const index = this.#keys.indexOf(key) - 1;
|
|
if (index < 0) {
|
|
return void 0;
|
|
}
|
|
return this.entryAt(index);
|
|
}
|
|
/**
|
|
* Sets a new key-value pair at the position before the given key.
|
|
*/ setBefore(key, newKey, value) {
|
|
const index = this.#keys.indexOf(key);
|
|
if (index === -1) {
|
|
return this;
|
|
}
|
|
return this.insert(index, newKey, value);
|
|
}
|
|
after(key) {
|
|
let index = this.#keys.indexOf(key);
|
|
index = index === -1 || index === this.size - 1 ? -1 : index + 1;
|
|
if (index === -1) {
|
|
return void 0;
|
|
}
|
|
return this.entryAt(index);
|
|
}
|
|
/**
|
|
* Sets a new key-value pair at the position after the given key.
|
|
*/ setAfter(key, newKey, value) {
|
|
const index = this.#keys.indexOf(key);
|
|
if (index === -1) {
|
|
return this;
|
|
}
|
|
return this.insert(index + 1, newKey, value);
|
|
}
|
|
first() {
|
|
return this.entryAt(0);
|
|
}
|
|
last() {
|
|
return this.entryAt(-1);
|
|
}
|
|
clear() {
|
|
this.#keys = [];
|
|
return super.clear();
|
|
}
|
|
delete(key) {
|
|
const deleted = super.delete(key);
|
|
if (deleted) {
|
|
this.#keys.splice(this.#keys.indexOf(key), 1);
|
|
}
|
|
return deleted;
|
|
}
|
|
deleteAt(index) {
|
|
const key = this.keyAt(index);
|
|
if (key !== void 0) {
|
|
return this.delete(key);
|
|
}
|
|
return false;
|
|
}
|
|
at(index) {
|
|
const key = at(this.#keys, index);
|
|
if (key !== void 0) {
|
|
return this.get(key);
|
|
}
|
|
}
|
|
entryAt(index) {
|
|
const key = at(this.#keys, index);
|
|
if (key !== void 0) {
|
|
return [
|
|
key,
|
|
this.get(key)
|
|
];
|
|
}
|
|
}
|
|
indexOf(key) {
|
|
return this.#keys.indexOf(key);
|
|
}
|
|
keyAt(index) {
|
|
return at(this.#keys, index);
|
|
}
|
|
from(key, offset) {
|
|
const index = this.indexOf(key);
|
|
if (index === -1) {
|
|
return void 0;
|
|
}
|
|
let dest = index + offset;
|
|
if (dest < 0) dest = 0;
|
|
if (dest >= this.size) dest = this.size - 1;
|
|
return this.at(dest);
|
|
}
|
|
keyFrom(key, offset) {
|
|
const index = this.indexOf(key);
|
|
if (index === -1) {
|
|
return void 0;
|
|
}
|
|
let dest = index + offset;
|
|
if (dest < 0) dest = 0;
|
|
if (dest >= this.size) dest = this.size - 1;
|
|
return this.keyAt(dest);
|
|
}
|
|
find(predicate, thisArg) {
|
|
let index = 0;
|
|
for (const entry of this){
|
|
if (Reflect.apply(predicate, thisArg, [
|
|
entry,
|
|
index,
|
|
this
|
|
])) {
|
|
return entry;
|
|
}
|
|
index++;
|
|
}
|
|
return void 0;
|
|
}
|
|
findIndex(predicate, thisArg) {
|
|
let index = 0;
|
|
for (const entry of this){
|
|
if (Reflect.apply(predicate, thisArg, [
|
|
entry,
|
|
index,
|
|
this
|
|
])) {
|
|
return index;
|
|
}
|
|
index++;
|
|
}
|
|
return -1;
|
|
}
|
|
filter(predicate, thisArg) {
|
|
const entries = [];
|
|
let index = 0;
|
|
for (const entry of this){
|
|
if (Reflect.apply(predicate, thisArg, [
|
|
entry,
|
|
index,
|
|
this
|
|
])) {
|
|
entries.push(entry);
|
|
}
|
|
index++;
|
|
}
|
|
return new _OrderedDict(entries);
|
|
}
|
|
map(callbackfn, thisArg) {
|
|
const entries = [];
|
|
let index = 0;
|
|
for (const entry of this){
|
|
entries.push([
|
|
entry[0],
|
|
Reflect.apply(callbackfn, thisArg, [
|
|
entry,
|
|
index,
|
|
this
|
|
])
|
|
]);
|
|
index++;
|
|
}
|
|
return new _OrderedDict(entries);
|
|
}
|
|
reduce(...args) {
|
|
const [callbackfn, initialValue] = args;
|
|
let index = 0;
|
|
let accumulator = initialValue ?? this.at(0);
|
|
for (const entry of this){
|
|
if (index === 0 && args.length === 1) {
|
|
accumulator = entry;
|
|
} else {
|
|
accumulator = Reflect.apply(callbackfn, this, [
|
|
accumulator,
|
|
entry,
|
|
index,
|
|
this
|
|
]);
|
|
}
|
|
index++;
|
|
}
|
|
return accumulator;
|
|
}
|
|
reduceRight(...args) {
|
|
const [callbackfn, initialValue] = args;
|
|
let accumulator = initialValue ?? this.at(-1);
|
|
for(let index = this.size - 1; index >= 0; index--){
|
|
const entry = this.at(index);
|
|
if (index === this.size - 1 && args.length === 1) {
|
|
accumulator = entry;
|
|
} else {
|
|
accumulator = Reflect.apply(callbackfn, this, [
|
|
accumulator,
|
|
entry,
|
|
index,
|
|
this
|
|
]);
|
|
}
|
|
}
|
|
return accumulator;
|
|
}
|
|
toSorted(compareFn) {
|
|
const entries = [
|
|
...this.entries()
|
|
].sort(compareFn);
|
|
return new _OrderedDict(entries);
|
|
}
|
|
toReversed() {
|
|
const reversed = new _OrderedDict();
|
|
for(let index = this.size - 1; index >= 0; index--){
|
|
const key = this.keyAt(index);
|
|
const element = this.get(key);
|
|
reversed.set(key, element);
|
|
}
|
|
return reversed;
|
|
}
|
|
toSpliced(...args) {
|
|
const entries = [
|
|
...this.entries()
|
|
];
|
|
entries.splice(...args);
|
|
return new _OrderedDict(entries);
|
|
}
|
|
slice(start, end) {
|
|
const result = new _OrderedDict();
|
|
let stop = this.size - 1;
|
|
if (start === void 0) {
|
|
return result;
|
|
}
|
|
if (start < 0) {
|
|
start = start + this.size;
|
|
}
|
|
if (end !== void 0 && end > 0) {
|
|
stop = end - 1;
|
|
}
|
|
for(let index = start; index <= stop; index++){
|
|
const key = this.keyAt(index);
|
|
const element = this.get(key);
|
|
result.set(key, element);
|
|
}
|
|
return result;
|
|
}
|
|
every(predicate, thisArg) {
|
|
let index = 0;
|
|
for (const entry of this){
|
|
if (!Reflect.apply(predicate, thisArg, [
|
|
entry,
|
|
index,
|
|
this
|
|
])) {
|
|
return false;
|
|
}
|
|
index++;
|
|
}
|
|
return true;
|
|
}
|
|
some(predicate, thisArg) {
|
|
let index = 0;
|
|
for (const entry of this){
|
|
if (Reflect.apply(predicate, thisArg, [
|
|
entry,
|
|
index,
|
|
this
|
|
])) {
|
|
return true;
|
|
}
|
|
index++;
|
|
}
|
|
return false;
|
|
}
|
|
};
|
|
function at(array, index) {
|
|
if ("at" in Array.prototype) {
|
|
return Array.prototype.at.call(array, index);
|
|
}
|
|
const actualIndex = toSafeIndex(array, index);
|
|
return actualIndex === -1 ? void 0 : array[actualIndex];
|
|
}
|
|
function toSafeIndex(array, index) {
|
|
const length = array.length;
|
|
const relativeIndex = toSafeInteger(index);
|
|
const actualIndex = relativeIndex >= 0 ? relativeIndex : length + relativeIndex;
|
|
return actualIndex < 0 || actualIndex >= length ? -1 : actualIndex;
|
|
}
|
|
function toSafeInteger(number) {
|
|
return number !== number || number === 0 ? 0 : Math.trunc(number);
|
|
}
|
|
;
|
|
function createCollection2(name) {
|
|
const PROVIDER_NAME = name + "CollectionProvider";
|
|
const [createCollectionContext, createCollectionScope] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$context$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContextScope"])(PROVIDER_NAME);
|
|
const [CollectionContextProvider, useCollectionContext] = createCollectionContext(PROVIDER_NAME, {
|
|
collectionElement: null,
|
|
collectionRef: {
|
|
current: null
|
|
},
|
|
collectionRefObject: {
|
|
current: null
|
|
},
|
|
itemMap: new OrderedDict(),
|
|
setItemMap: ()=>void 0
|
|
});
|
|
const CollectionProvider = ({ state, ...props })=>{
|
|
return state ? /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(CollectionProviderImpl, {
|
|
...props,
|
|
state
|
|
}) : /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(CollectionInit, {
|
|
...props
|
|
});
|
|
};
|
|
CollectionProvider.displayName = PROVIDER_NAME;
|
|
const CollectionInit = (props)=>{
|
|
const state = useInitCollection();
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(CollectionProviderImpl, {
|
|
...props,
|
|
state
|
|
});
|
|
};
|
|
CollectionInit.displayName = PROVIDER_NAME + "Init";
|
|
const CollectionProviderImpl = (props)=>{
|
|
const { scope, children, state } = props;
|
|
const ref = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useRef(null);
|
|
const [collectionElement, setCollectionElement] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useState(null);
|
|
const composeRefs = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useComposedRefs"])(ref, setCollectionElement);
|
|
const [itemMap, setItemMap] = state;
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useEffect({
|
|
"createCollection2.CollectionProviderImpl.useEffect": ()=>{
|
|
if (!collectionElement) return;
|
|
const observer = getChildListObserver({
|
|
"createCollection2.CollectionProviderImpl.useEffect.observer": ()=>{}
|
|
}["createCollection2.CollectionProviderImpl.useEffect.observer"]);
|
|
observer.observe(collectionElement, {
|
|
childList: true,
|
|
subtree: true
|
|
});
|
|
return ({
|
|
"createCollection2.CollectionProviderImpl.useEffect": ()=>{
|
|
observer.disconnect();
|
|
}
|
|
})["createCollection2.CollectionProviderImpl.useEffect"];
|
|
}
|
|
}["createCollection2.CollectionProviderImpl.useEffect"], [
|
|
collectionElement
|
|
]);
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(CollectionContextProvider, {
|
|
scope,
|
|
itemMap,
|
|
setItemMap,
|
|
collectionRef: composeRefs,
|
|
collectionRefObject: ref,
|
|
collectionElement,
|
|
children
|
|
});
|
|
};
|
|
CollectionProviderImpl.displayName = PROVIDER_NAME + "Impl";
|
|
const COLLECTION_SLOT_NAME = name + "CollectionSlot";
|
|
const CollectionSlotImpl = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$collection$2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createSlot"])(COLLECTION_SLOT_NAME);
|
|
const CollectionSlot = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].forwardRef((props, forwardedRef)=>{
|
|
const { scope, children } = props;
|
|
const context = useCollectionContext(COLLECTION_SLOT_NAME, scope);
|
|
const composedRefs = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useComposedRefs"])(forwardedRef, context.collectionRef);
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(CollectionSlotImpl, {
|
|
ref: composedRefs,
|
|
children
|
|
});
|
|
});
|
|
CollectionSlot.displayName = COLLECTION_SLOT_NAME;
|
|
const ITEM_SLOT_NAME = name + "CollectionItemSlot";
|
|
const ITEM_DATA_ATTR = "data-radix-collection-item";
|
|
const CollectionItemSlotImpl = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$collection$2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createSlot"])(ITEM_SLOT_NAME);
|
|
const CollectionItemSlot = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].forwardRef((props, forwardedRef)=>{
|
|
const { scope, children, ...itemData } = props;
|
|
const ref = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useRef(null);
|
|
const [element, setElement] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useState(null);
|
|
const composedRefs = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useComposedRefs"])(forwardedRef, ref, setElement);
|
|
const context = useCollectionContext(ITEM_SLOT_NAME, scope);
|
|
const { setItemMap } = context;
|
|
const itemDataRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useRef(itemData);
|
|
if (!shallowEqual(itemDataRef.current, itemData)) {
|
|
itemDataRef.current = itemData;
|
|
}
|
|
const memoizedItemData = itemDataRef.current;
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useEffect({
|
|
"createCollection2.CollectionItemSlot.useEffect": ()=>{
|
|
const itemData2 = memoizedItemData;
|
|
setItemMap({
|
|
"createCollection2.CollectionItemSlot.useEffect": (map)=>{
|
|
if (!element) {
|
|
return map;
|
|
}
|
|
if (!map.has(element)) {
|
|
map.set(element, {
|
|
...itemData2,
|
|
element
|
|
});
|
|
return map.toSorted(sortByDocumentPosition);
|
|
}
|
|
return map.set(element, {
|
|
...itemData2,
|
|
element
|
|
}).toSorted(sortByDocumentPosition);
|
|
}
|
|
}["createCollection2.CollectionItemSlot.useEffect"]);
|
|
return ({
|
|
"createCollection2.CollectionItemSlot.useEffect": ()=>{
|
|
setItemMap({
|
|
"createCollection2.CollectionItemSlot.useEffect": (map)=>{
|
|
if (!element || !map.has(element)) {
|
|
return map;
|
|
}
|
|
map.delete(element);
|
|
return new OrderedDict(map);
|
|
}
|
|
}["createCollection2.CollectionItemSlot.useEffect"]);
|
|
}
|
|
})["createCollection2.CollectionItemSlot.useEffect"];
|
|
}
|
|
}["createCollection2.CollectionItemSlot.useEffect"], [
|
|
element,
|
|
memoizedItemData,
|
|
setItemMap
|
|
]);
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(CollectionItemSlotImpl, {
|
|
...{
|
|
[ITEM_DATA_ATTR]: ""
|
|
},
|
|
ref: composedRefs,
|
|
children
|
|
});
|
|
});
|
|
CollectionItemSlot.displayName = ITEM_SLOT_NAME;
|
|
function useInitCollection() {
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].useState(new OrderedDict());
|
|
}
|
|
function useCollection(scope) {
|
|
const { itemMap } = useCollectionContext(name + "CollectionConsumer", scope);
|
|
return itemMap;
|
|
}
|
|
const functions = {
|
|
createCollectionScope,
|
|
useCollection,
|
|
useInitCollection
|
|
};
|
|
return [
|
|
{
|
|
Provider: CollectionProvider,
|
|
Slot: CollectionSlot,
|
|
ItemSlot: CollectionItemSlot
|
|
},
|
|
functions
|
|
];
|
|
}
|
|
function shallowEqual(a, b) {
|
|
if (a === b) return true;
|
|
if (typeof a !== "object" || typeof b !== "object") return false;
|
|
if (a == null || b == null) return false;
|
|
const keysA = Object.keys(a);
|
|
const keysB = Object.keys(b);
|
|
if (keysA.length !== keysB.length) return false;
|
|
for (const key of keysA){
|
|
if (!Object.prototype.hasOwnProperty.call(b, key)) return false;
|
|
if (a[key] !== b[key]) return false;
|
|
}
|
|
return true;
|
|
}
|
|
function isElementPreceding(a, b) {
|
|
return !!(b.compareDocumentPosition(a) & Node.DOCUMENT_POSITION_PRECEDING);
|
|
}
|
|
function sortByDocumentPosition(a, b) {
|
|
return !a[1].element || !b[1].element ? 0 : isElementPreceding(a[1].element, b[1].element) ? -1 : 1;
|
|
}
|
|
function getChildListObserver(callback) {
|
|
const observer = new MutationObserver((mutationsList)=>{
|
|
for (const mutation of mutationsList){
|
|
if (mutation.type === "childList") {
|
|
callback();
|
|
return;
|
|
}
|
|
}
|
|
});
|
|
return observer;
|
|
}
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Root",
|
|
()=>Slot,
|
|
"Slot",
|
|
()=>Slot,
|
|
"Slottable",
|
|
()=>Slottable,
|
|
"createSlot",
|
|
()=>createSlot,
|
|
"createSlottable",
|
|
()=>createSlottable
|
|
]);
|
|
// src/slot.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-compose-refs/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
|
|
;
|
|
;
|
|
;
|
|
// @__NO_SIDE_EFFECTS__
|
|
function createSlot(ownerName) {
|
|
const SlotClone = /* @__PURE__ */ createSlotClone(ownerName);
|
|
const Slot2 = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { children, ...slotProps } = props;
|
|
const childrenArray = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].toArray(children);
|
|
const slottable = childrenArray.find(isSlottable);
|
|
if (slottable) {
|
|
const newElement = slottable.props.children;
|
|
const newChildren = childrenArray.map((child)=>{
|
|
if (child === slottable) {
|
|
if (__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].count(newElement) > 1) return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].only(null);
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](newElement) ? newElement.props.children : null;
|
|
} else {
|
|
return child;
|
|
}
|
|
});
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(SlotClone, {
|
|
...slotProps,
|
|
ref: forwardedRef,
|
|
children: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](newElement) ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cloneElement"](newElement, void 0, newChildren) : null
|
|
});
|
|
}
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(SlotClone, {
|
|
...slotProps,
|
|
ref: forwardedRef,
|
|
children
|
|
});
|
|
});
|
|
Slot2.displayName = `${ownerName}.Slot`;
|
|
return Slot2;
|
|
}
|
|
var Slot = /* @__PURE__ */ createSlot("Slot");
|
|
// @__NO_SIDE_EFFECTS__
|
|
function createSlotClone(ownerName) {
|
|
const SlotClone = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { children, ...slotProps } = props;
|
|
if (__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](children)) {
|
|
const childrenRef = getElementRef(children);
|
|
const props2 = mergeProps(slotProps, children.props);
|
|
if (children.type !== __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"]) {
|
|
props2.ref = forwardedRef ? (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeRefs"])(forwardedRef, childrenRef) : childrenRef;
|
|
}
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cloneElement"](children, props2);
|
|
}
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].count(children) > 1 ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].only(null) : null;
|
|
});
|
|
SlotClone.displayName = `${ownerName}.SlotClone`;
|
|
return SlotClone;
|
|
}
|
|
var SLOTTABLE_IDENTIFIER = Symbol("radix.slottable");
|
|
// @__NO_SIDE_EFFECTS__
|
|
function createSlottable(ownerName) {
|
|
const Slottable2 = ({ children })=>{
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
|
|
children
|
|
});
|
|
};
|
|
Slottable2.displayName = `${ownerName}.Slottable`;
|
|
Slottable2.__radixId = SLOTTABLE_IDENTIFIER;
|
|
return Slottable2;
|
|
}
|
|
var Slottable = /* @__PURE__ */ createSlottable("Slottable");
|
|
function isSlottable(child) {
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["isValidElement"](child) && typeof child.type === "function" && "__radixId" in child.type && child.type.__radixId === SLOTTABLE_IDENTIFIER;
|
|
}
|
|
function mergeProps(slotProps, childProps) {
|
|
const overrideProps = {
|
|
...childProps
|
|
};
|
|
for(const propName in childProps){
|
|
const slotPropValue = slotProps[propName];
|
|
const childPropValue = childProps[propName];
|
|
const isHandler = /^on[A-Z]/.test(propName);
|
|
if (isHandler) {
|
|
if (slotPropValue && childPropValue) {
|
|
overrideProps[propName] = (...args)=>{
|
|
const result = childPropValue(...args);
|
|
slotPropValue(...args);
|
|
return result;
|
|
};
|
|
} else if (slotPropValue) {
|
|
overrideProps[propName] = slotPropValue;
|
|
}
|
|
} else if (propName === "style") {
|
|
overrideProps[propName] = {
|
|
...slotPropValue,
|
|
...childPropValue
|
|
};
|
|
} else if (propName === "className") {
|
|
overrideProps[propName] = [
|
|
slotPropValue,
|
|
childPropValue
|
|
].filter(Boolean).join(" ");
|
|
}
|
|
}
|
|
return {
|
|
...slotProps,
|
|
...overrideProps
|
|
};
|
|
}
|
|
function getElementRef(element) {
|
|
let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
|
|
let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
if (mayWarn) {
|
|
return element.ref;
|
|
}
|
|
getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
|
|
mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
if (mayWarn) {
|
|
return element.props.ref;
|
|
}
|
|
return element.props.ref || element.ref;
|
|
}
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-primitive/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Primitive",
|
|
()=>Primitive,
|
|
"Root",
|
|
()=>Root,
|
|
"dispatchDiscreteCustomEvent",
|
|
()=>dispatchDiscreteCustomEvent
|
|
]);
|
|
// src/primitive.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2d$dom$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react-dom/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-primitive/node_modules/@radix-ui/react-slot/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
|
|
;
|
|
;
|
|
;
|
|
;
|
|
var NODES = [
|
|
"a",
|
|
"button",
|
|
"div",
|
|
"form",
|
|
"h2",
|
|
"h3",
|
|
"img",
|
|
"input",
|
|
"label",
|
|
"li",
|
|
"nav",
|
|
"ol",
|
|
"p",
|
|
"select",
|
|
"span",
|
|
"svg",
|
|
"ul"
|
|
];
|
|
var Primitive = NODES.reduce((primitive, node)=>{
|
|
const Slot = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$node_modules$2f40$radix$2d$ui$2f$react$2d$slot$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createSlot"])(`Primitive.${node}`);
|
|
const Node = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { asChild, ...primitiveProps } = props;
|
|
const Comp = asChild ? Slot : node;
|
|
if (typeof window !== "undefined") {
|
|
window[Symbol.for("radix-ui")] = true;
|
|
}
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(Comp, {
|
|
...primitiveProps,
|
|
ref: forwardedRef
|
|
});
|
|
});
|
|
Node.displayName = `Primitive.${node}`;
|
|
return {
|
|
...primitive,
|
|
[node]: Node
|
|
};
|
|
}, {});
|
|
function dispatchDiscreteCustomEvent(target, event) {
|
|
if (target) __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2d$dom$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["flushSync"](()=>target.dispatchEvent(event));
|
|
}
|
|
var Root = Primitive;
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"useCallbackRef",
|
|
()=>useCallbackRef
|
|
]);
|
|
// packages/react/use-callback-ref/src/use-callback-ref.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
;
|
|
function useCallbackRef(callback) {
|
|
const callbackRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](callback);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"useCallbackRef.useEffect": ()=>{
|
|
callbackRef.current = callback;
|
|
}
|
|
}["useCallbackRef.useEffect"]);
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"]({
|
|
"useCallbackRef.useMemo": ()=>({
|
|
"useCallbackRef.useMemo": (...args)=>callbackRef.current?.(...args)
|
|
})["useCallbackRef.useMemo"]
|
|
}["useCallbackRef.useMemo"], []);
|
|
}
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"useEscapeKeydown",
|
|
()=>useEscapeKeydown
|
|
]);
|
|
// packages/react/use-escape-keydown/src/use-escape-keydown.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$callback$2d$ref$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs [app-client] (ecmascript)");
|
|
;
|
|
;
|
|
function useEscapeKeydown(onEscapeKeyDownProp, ownerDocument = globalThis?.document) {
|
|
const onEscapeKeyDown = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$callback$2d$ref$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallbackRef"])(onEscapeKeyDownProp);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"useEscapeKeydown.useEffect": ()=>{
|
|
const handleKeyDown = {
|
|
"useEscapeKeydown.useEffect.handleKeyDown": (event)=>{
|
|
if (event.key === "Escape") {
|
|
onEscapeKeyDown(event);
|
|
}
|
|
}
|
|
}["useEscapeKeydown.useEffect.handleKeyDown"];
|
|
ownerDocument.addEventListener("keydown", handleKeyDown, {
|
|
capture: true
|
|
});
|
|
return ({
|
|
"useEscapeKeydown.useEffect": ()=>ownerDocument.removeEventListener("keydown", handleKeyDown, {
|
|
capture: true
|
|
})
|
|
})["useEscapeKeydown.useEffect"];
|
|
}
|
|
}["useEscapeKeydown.useEffect"], [
|
|
onEscapeKeyDown,
|
|
ownerDocument
|
|
]);
|
|
}
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Branch",
|
|
()=>Branch,
|
|
"DismissableLayer",
|
|
()=>DismissableLayer,
|
|
"DismissableLayerBranch",
|
|
()=>DismissableLayerBranch,
|
|
"Root",
|
|
()=>Root
|
|
]);
|
|
// src/dismissable-layer.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/primitive/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-primitive/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-compose-refs/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$callback$2d$ref$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$escape$2d$keydown$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-escape-keydown/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
|
|
"use client";
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
var DISMISSABLE_LAYER_NAME = "DismissableLayer";
|
|
var CONTEXT_UPDATE = "dismissableLayer.update";
|
|
var POINTER_DOWN_OUTSIDE = "dismissableLayer.pointerDownOutside";
|
|
var FOCUS_OUTSIDE = "dismissableLayer.focusOutside";
|
|
var originalBodyPointerEvents;
|
|
var DismissableLayerContext = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContext"]({
|
|
layers: /* @__PURE__ */ new Set(),
|
|
layersWithOutsidePointerEventsDisabled: /* @__PURE__ */ new Set(),
|
|
branches: /* @__PURE__ */ new Set()
|
|
});
|
|
var DismissableLayer = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { disableOutsidePointerEvents = false, onEscapeKeyDown, onPointerDownOutside, onFocusOutside, onInteractOutside, onDismiss, ...layerProps } = props;
|
|
const context = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useContext"](DismissableLayerContext);
|
|
const [node, setNode] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"](null);
|
|
const ownerDocument = node?.ownerDocument ?? globalThis?.document;
|
|
const [, force] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"]({});
|
|
const composedRefs = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useComposedRefs"])(forwardedRef, {
|
|
"DismissableLayer.useComposedRefs[composedRefs]": (node2)=>setNode(node2)
|
|
}["DismissableLayer.useComposedRefs[composedRefs]"]);
|
|
const layers = Array.from(context.layers);
|
|
const [highestLayerWithOutsidePointerEventsDisabled] = [
|
|
...context.layersWithOutsidePointerEventsDisabled
|
|
].slice(-1);
|
|
const highestLayerWithOutsidePointerEventsDisabledIndex = layers.indexOf(highestLayerWithOutsidePointerEventsDisabled);
|
|
const index = node ? layers.indexOf(node) : -1;
|
|
const isBodyPointerEventsDisabled = context.layersWithOutsidePointerEventsDisabled.size > 0;
|
|
const isPointerEventsEnabled = index >= highestLayerWithOutsidePointerEventsDisabledIndex;
|
|
const pointerDownOutside = usePointerDownOutside({
|
|
"DismissableLayer.usePointerDownOutside[pointerDownOutside]": (event)=>{
|
|
const target = event.target;
|
|
const isPointerDownOnBranch = [
|
|
...context.branches
|
|
].some({
|
|
"DismissableLayer.usePointerDownOutside[pointerDownOutside].isPointerDownOnBranch": (branch)=>branch.contains(target)
|
|
}["DismissableLayer.usePointerDownOutside[pointerDownOutside].isPointerDownOnBranch"]);
|
|
if (!isPointerEventsEnabled || isPointerDownOnBranch) return;
|
|
onPointerDownOutside?.(event);
|
|
onInteractOutside?.(event);
|
|
if (!event.defaultPrevented) onDismiss?.();
|
|
}
|
|
}["DismissableLayer.usePointerDownOutside[pointerDownOutside]"], ownerDocument);
|
|
const focusOutside = useFocusOutside({
|
|
"DismissableLayer.useFocusOutside[focusOutside]": (event)=>{
|
|
const target = event.target;
|
|
const isFocusInBranch = [
|
|
...context.branches
|
|
].some({
|
|
"DismissableLayer.useFocusOutside[focusOutside].isFocusInBranch": (branch)=>branch.contains(target)
|
|
}["DismissableLayer.useFocusOutside[focusOutside].isFocusInBranch"]);
|
|
if (isFocusInBranch) return;
|
|
onFocusOutside?.(event);
|
|
onInteractOutside?.(event);
|
|
if (!event.defaultPrevented) onDismiss?.();
|
|
}
|
|
}["DismissableLayer.useFocusOutside[focusOutside]"], ownerDocument);
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$escape$2d$keydown$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEscapeKeydown"])({
|
|
"DismissableLayer.useEscapeKeydown": (event)=>{
|
|
const isHighestLayer = index === context.layers.size - 1;
|
|
if (!isHighestLayer) return;
|
|
onEscapeKeyDown?.(event);
|
|
if (!event.defaultPrevented && onDismiss) {
|
|
event.preventDefault();
|
|
onDismiss();
|
|
}
|
|
}
|
|
}["DismissableLayer.useEscapeKeydown"], ownerDocument);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"DismissableLayer.useEffect": ()=>{
|
|
if (!node) return;
|
|
if (disableOutsidePointerEvents) {
|
|
if (context.layersWithOutsidePointerEventsDisabled.size === 0) {
|
|
originalBodyPointerEvents = ownerDocument.body.style.pointerEvents;
|
|
ownerDocument.body.style.pointerEvents = "none";
|
|
}
|
|
context.layersWithOutsidePointerEventsDisabled.add(node);
|
|
}
|
|
context.layers.add(node);
|
|
dispatchUpdate();
|
|
return ({
|
|
"DismissableLayer.useEffect": ()=>{
|
|
if (disableOutsidePointerEvents && context.layersWithOutsidePointerEventsDisabled.size === 1) {
|
|
ownerDocument.body.style.pointerEvents = originalBodyPointerEvents;
|
|
}
|
|
}
|
|
})["DismissableLayer.useEffect"];
|
|
}
|
|
}["DismissableLayer.useEffect"], [
|
|
node,
|
|
ownerDocument,
|
|
disableOutsidePointerEvents,
|
|
context
|
|
]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"DismissableLayer.useEffect": ()=>{
|
|
return ({
|
|
"DismissableLayer.useEffect": ()=>{
|
|
if (!node) return;
|
|
context.layers.delete(node);
|
|
context.layersWithOutsidePointerEventsDisabled.delete(node);
|
|
dispatchUpdate();
|
|
}
|
|
})["DismissableLayer.useEffect"];
|
|
}
|
|
}["DismissableLayer.useEffect"], [
|
|
node,
|
|
context
|
|
]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"DismissableLayer.useEffect": ()=>{
|
|
const handleUpdate = {
|
|
"DismissableLayer.useEffect.handleUpdate": ()=>force({})
|
|
}["DismissableLayer.useEffect.handleUpdate"];
|
|
document.addEventListener(CONTEXT_UPDATE, handleUpdate);
|
|
return ({
|
|
"DismissableLayer.useEffect": ()=>document.removeEventListener(CONTEXT_UPDATE, handleUpdate)
|
|
})["DismissableLayer.useEffect"];
|
|
}
|
|
}["DismissableLayer.useEffect"], []);
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Primitive"].div, {
|
|
...layerProps,
|
|
ref: composedRefs,
|
|
style: {
|
|
pointerEvents: isBodyPointerEventsDisabled ? isPointerEventsEnabled ? "auto" : "none" : void 0,
|
|
...props.style
|
|
},
|
|
onFocusCapture: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onFocusCapture, focusOutside.onFocusCapture),
|
|
onBlurCapture: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onBlurCapture, focusOutside.onBlurCapture),
|
|
onPointerDownCapture: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onPointerDownCapture, pointerDownOutside.onPointerDownCapture)
|
|
});
|
|
});
|
|
DismissableLayer.displayName = DISMISSABLE_LAYER_NAME;
|
|
var BRANCH_NAME = "DismissableLayerBranch";
|
|
var DismissableLayerBranch = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const context = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useContext"](DismissableLayerContext);
|
|
const ref = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](null);
|
|
const composedRefs = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useComposedRefs"])(forwardedRef, ref);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"DismissableLayerBranch.useEffect": ()=>{
|
|
const node = ref.current;
|
|
if (node) {
|
|
context.branches.add(node);
|
|
return ({
|
|
"DismissableLayerBranch.useEffect": ()=>{
|
|
context.branches.delete(node);
|
|
}
|
|
})["DismissableLayerBranch.useEffect"];
|
|
}
|
|
}
|
|
}["DismissableLayerBranch.useEffect"], [
|
|
context.branches
|
|
]);
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Primitive"].div, {
|
|
...props,
|
|
ref: composedRefs
|
|
});
|
|
});
|
|
DismissableLayerBranch.displayName = BRANCH_NAME;
|
|
function usePointerDownOutside(onPointerDownOutside, ownerDocument = globalThis?.document) {
|
|
const handlePointerDownOutside = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$callback$2d$ref$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallbackRef"])(onPointerDownOutside);
|
|
const isPointerInsideReactTreeRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](false);
|
|
const handleClickRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"]({
|
|
"usePointerDownOutside.useRef[handleClickRef]": ()=>{}
|
|
}["usePointerDownOutside.useRef[handleClickRef]"]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"usePointerDownOutside.useEffect": ()=>{
|
|
const handlePointerDown = {
|
|
"usePointerDownOutside.useEffect.handlePointerDown": (event)=>{
|
|
if (event.target && !isPointerInsideReactTreeRef.current) {
|
|
let handleAndDispatchPointerDownOutsideEvent2 = {
|
|
"usePointerDownOutside.useEffect.handlePointerDown.handleAndDispatchPointerDownOutsideEvent2": function() {
|
|
handleAndDispatchCustomEvent(POINTER_DOWN_OUTSIDE, handlePointerDownOutside, eventDetail, {
|
|
discrete: true
|
|
});
|
|
}
|
|
}["usePointerDownOutside.useEffect.handlePointerDown.handleAndDispatchPointerDownOutsideEvent2"];
|
|
var handleAndDispatchPointerDownOutsideEvent = handleAndDispatchPointerDownOutsideEvent2;
|
|
const eventDetail = {
|
|
originalEvent: event
|
|
};
|
|
if (event.pointerType === "touch") {
|
|
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
handleClickRef.current = handleAndDispatchPointerDownOutsideEvent2;
|
|
ownerDocument.addEventListener("click", handleClickRef.current, {
|
|
once: true
|
|
});
|
|
} else {
|
|
handleAndDispatchPointerDownOutsideEvent2();
|
|
}
|
|
} else {
|
|
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
}
|
|
isPointerInsideReactTreeRef.current = false;
|
|
}
|
|
}["usePointerDownOutside.useEffect.handlePointerDown"];
|
|
const timerId = window.setTimeout({
|
|
"usePointerDownOutside.useEffect.timerId": ()=>{
|
|
ownerDocument.addEventListener("pointerdown", handlePointerDown);
|
|
}
|
|
}["usePointerDownOutside.useEffect.timerId"], 0);
|
|
return ({
|
|
"usePointerDownOutside.useEffect": ()=>{
|
|
window.clearTimeout(timerId);
|
|
ownerDocument.removeEventListener("pointerdown", handlePointerDown);
|
|
ownerDocument.removeEventListener("click", handleClickRef.current);
|
|
}
|
|
})["usePointerDownOutside.useEffect"];
|
|
}
|
|
}["usePointerDownOutside.useEffect"], [
|
|
ownerDocument,
|
|
handlePointerDownOutside
|
|
]);
|
|
return {
|
|
// ensures we check React component tree (not just DOM tree)
|
|
onPointerDownCapture: ()=>isPointerInsideReactTreeRef.current = true
|
|
};
|
|
}
|
|
function useFocusOutside(onFocusOutside, ownerDocument = globalThis?.document) {
|
|
const handleFocusOutside = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$callback$2d$ref$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallbackRef"])(onFocusOutside);
|
|
const isFocusInsideReactTreeRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](false);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"useFocusOutside.useEffect": ()=>{
|
|
const handleFocus = {
|
|
"useFocusOutside.useEffect.handleFocus": (event)=>{
|
|
if (event.target && !isFocusInsideReactTreeRef.current) {
|
|
const eventDetail = {
|
|
originalEvent: event
|
|
};
|
|
handleAndDispatchCustomEvent(FOCUS_OUTSIDE, handleFocusOutside, eventDetail, {
|
|
discrete: false
|
|
});
|
|
}
|
|
}
|
|
}["useFocusOutside.useEffect.handleFocus"];
|
|
ownerDocument.addEventListener("focusin", handleFocus);
|
|
return ({
|
|
"useFocusOutside.useEffect": ()=>ownerDocument.removeEventListener("focusin", handleFocus)
|
|
})["useFocusOutside.useEffect"];
|
|
}
|
|
}["useFocusOutside.useEffect"], [
|
|
ownerDocument,
|
|
handleFocusOutside
|
|
]);
|
|
return {
|
|
onFocusCapture: ()=>isFocusInsideReactTreeRef.current = true,
|
|
onBlurCapture: ()=>isFocusInsideReactTreeRef.current = false
|
|
};
|
|
}
|
|
function dispatchUpdate() {
|
|
const event = new CustomEvent(CONTEXT_UPDATE);
|
|
document.dispatchEvent(event);
|
|
}
|
|
function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
|
|
const target = detail.originalEvent.target;
|
|
const event = new CustomEvent(name, {
|
|
bubbles: false,
|
|
cancelable: true,
|
|
detail
|
|
});
|
|
if (handler) target.addEventListener(name, handler, {
|
|
once: true
|
|
});
|
|
if (discrete) {
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["dispatchDiscreteCustomEvent"])(target, event);
|
|
} else {
|
|
target.dispatchEvent(event);
|
|
}
|
|
}
|
|
var Root = DismissableLayer;
|
|
var Branch = DismissableLayerBranch;
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"useLayoutEffect",
|
|
()=>useLayoutEffect2
|
|
]);
|
|
// packages/react/use-layout-effect/src/use-layout-effect.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
;
|
|
var useLayoutEffect2 = globalThis?.document ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLayoutEffect"] : ()=>{};
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-portal/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Portal",
|
|
()=>Portal,
|
|
"Root",
|
|
()=>Root
|
|
]);
|
|
// src/portal.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2d$dom$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react-dom/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-primitive/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
|
|
"use client";
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
var PORTAL_NAME = "Portal";
|
|
var Portal = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { container: containerProp, ...portalProps } = props;
|
|
const [mounted, setMounted] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"](false);
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLayoutEffect"])({
|
|
"Portal.useLayoutEffect": ()=>setMounted(true)
|
|
}["Portal.useLayoutEffect"], []);
|
|
const container = containerProp || mounted && globalThis?.document?.body;
|
|
return container ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2d$dom$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"].createPortal(/* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Primitive"].div, {
|
|
...portalProps,
|
|
ref: forwardedRef
|
|
}), container) : null;
|
|
});
|
|
Portal.displayName = PORTAL_NAME;
|
|
var Root = Portal;
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-presence/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Presence",
|
|
()=>Presence,
|
|
"Root",
|
|
()=>Root
|
|
]);
|
|
// src/presence.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-compose-refs/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs [app-client] (ecmascript)");
|
|
"use client";
|
|
;
|
|
;
|
|
;
|
|
;
|
|
function useStateMachine(initialState, machine) {
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useReducer"]({
|
|
"useStateMachine.useReducer": (state, event)=>{
|
|
const nextState = machine[state][event];
|
|
return nextState ?? state;
|
|
}
|
|
}["useStateMachine.useReducer"], initialState);
|
|
}
|
|
// src/presence.tsx
|
|
var Presence = (props)=>{
|
|
const { present, children } = props;
|
|
const presence = usePresence(present);
|
|
const child = typeof children === "function" ? children({
|
|
present: presence.isPresent
|
|
}) : __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Children"].only(children);
|
|
const ref = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useComposedRefs"])(presence.ref, getElementRef(child));
|
|
const forceMount = typeof children === "function";
|
|
return forceMount || presence.isPresent ? __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["cloneElement"](child, {
|
|
ref
|
|
}) : null;
|
|
};
|
|
Presence.displayName = "Presence";
|
|
function usePresence(present) {
|
|
const [node, setNode] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"]();
|
|
const stylesRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](null);
|
|
const prevPresentRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](present);
|
|
const prevAnimationNameRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"]("none");
|
|
const initialState = present ? "mounted" : "unmounted";
|
|
const [state, send] = useStateMachine(initialState, {
|
|
mounted: {
|
|
UNMOUNT: "unmounted",
|
|
ANIMATION_OUT: "unmountSuspended"
|
|
},
|
|
unmountSuspended: {
|
|
MOUNT: "mounted",
|
|
ANIMATION_END: "unmounted"
|
|
},
|
|
unmounted: {
|
|
MOUNT: "mounted"
|
|
}
|
|
});
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"usePresence.useEffect": ()=>{
|
|
const currentAnimationName = getAnimationName(stylesRef.current);
|
|
prevAnimationNameRef.current = state === "mounted" ? currentAnimationName : "none";
|
|
}
|
|
}["usePresence.useEffect"], [
|
|
state
|
|
]);
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLayoutEffect"])({
|
|
"usePresence.useLayoutEffect": ()=>{
|
|
const styles = stylesRef.current;
|
|
const wasPresent = prevPresentRef.current;
|
|
const hasPresentChanged = wasPresent !== present;
|
|
if (hasPresentChanged) {
|
|
const prevAnimationName = prevAnimationNameRef.current;
|
|
const currentAnimationName = getAnimationName(styles);
|
|
if (present) {
|
|
send("MOUNT");
|
|
} else if (currentAnimationName === "none" || styles?.display === "none") {
|
|
send("UNMOUNT");
|
|
} else {
|
|
const isAnimating = prevAnimationName !== currentAnimationName;
|
|
if (wasPresent && isAnimating) {
|
|
send("ANIMATION_OUT");
|
|
} else {
|
|
send("UNMOUNT");
|
|
}
|
|
}
|
|
prevPresentRef.current = present;
|
|
}
|
|
}
|
|
}["usePresence.useLayoutEffect"], [
|
|
present,
|
|
send
|
|
]);
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLayoutEffect"])({
|
|
"usePresence.useLayoutEffect": ()=>{
|
|
if (node) {
|
|
let timeoutId;
|
|
const ownerWindow = node.ownerDocument.defaultView ?? window;
|
|
const handleAnimationEnd = {
|
|
"usePresence.useLayoutEffect.handleAnimationEnd": (event)=>{
|
|
const currentAnimationName = getAnimationName(stylesRef.current);
|
|
const isCurrentAnimation = currentAnimationName.includes(CSS.escape(event.animationName));
|
|
if (event.target === node && isCurrentAnimation) {
|
|
send("ANIMATION_END");
|
|
if (!prevPresentRef.current) {
|
|
const currentFillMode = node.style.animationFillMode;
|
|
node.style.animationFillMode = "forwards";
|
|
timeoutId = ownerWindow.setTimeout({
|
|
"usePresence.useLayoutEffect.handleAnimationEnd": ()=>{
|
|
if (node.style.animationFillMode === "forwards") {
|
|
node.style.animationFillMode = currentFillMode;
|
|
}
|
|
}
|
|
}["usePresence.useLayoutEffect.handleAnimationEnd"]);
|
|
}
|
|
}
|
|
}
|
|
}["usePresence.useLayoutEffect.handleAnimationEnd"];
|
|
const handleAnimationStart = {
|
|
"usePresence.useLayoutEffect.handleAnimationStart": (event)=>{
|
|
if (event.target === node) {
|
|
prevAnimationNameRef.current = getAnimationName(stylesRef.current);
|
|
}
|
|
}
|
|
}["usePresence.useLayoutEffect.handleAnimationStart"];
|
|
node.addEventListener("animationstart", handleAnimationStart);
|
|
node.addEventListener("animationcancel", handleAnimationEnd);
|
|
node.addEventListener("animationend", handleAnimationEnd);
|
|
return ({
|
|
"usePresence.useLayoutEffect": ()=>{
|
|
ownerWindow.clearTimeout(timeoutId);
|
|
node.removeEventListener("animationstart", handleAnimationStart);
|
|
node.removeEventListener("animationcancel", handleAnimationEnd);
|
|
node.removeEventListener("animationend", handleAnimationEnd);
|
|
}
|
|
})["usePresence.useLayoutEffect"];
|
|
} else {
|
|
send("ANIMATION_END");
|
|
}
|
|
}
|
|
}["usePresence.useLayoutEffect"], [
|
|
node,
|
|
send
|
|
]);
|
|
return {
|
|
isPresent: [
|
|
"mounted",
|
|
"unmountSuspended"
|
|
].includes(state),
|
|
ref: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"]({
|
|
"usePresence.useCallback": (node2)=>{
|
|
stylesRef.current = node2 ? getComputedStyle(node2) : null;
|
|
setNode(node2);
|
|
}
|
|
}["usePresence.useCallback"], [])
|
|
};
|
|
}
|
|
function getAnimationName(styles) {
|
|
return styles?.animationName || "none";
|
|
}
|
|
function getElementRef(element) {
|
|
let getter = Object.getOwnPropertyDescriptor(element.props, "ref")?.get;
|
|
let mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
if (mayWarn) {
|
|
return element.ref;
|
|
}
|
|
getter = Object.getOwnPropertyDescriptor(element, "ref")?.get;
|
|
mayWarn = getter && "isReactWarning" in getter && getter.isReactWarning;
|
|
if (mayWarn) {
|
|
return element.props.ref;
|
|
}
|
|
return element.props.ref || element.ref;
|
|
}
|
|
var Root = Presence;
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-use-effect-event/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"useEffectEvent",
|
|
()=>useEffectEvent
|
|
]);
|
|
// src/use-effect-event.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
;
|
|
;
|
|
var useReactEffectEvent = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__[" useEffectEvent ".trim().toString()];
|
|
var useReactInsertionEffect = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__[" useInsertionEffect ".trim().toString()];
|
|
function useEffectEvent(callback) {
|
|
if (typeof useReactEffectEvent === "function") {
|
|
return useReactEffectEvent(callback);
|
|
}
|
|
const ref = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useRef({
|
|
"useEffectEvent.useRef[ref]": ()=>{
|
|
throw new Error("Cannot call an event handler while rendering.");
|
|
}
|
|
}["useEffectEvent.useRef[ref]"]);
|
|
if (typeof useReactInsertionEffect === "function") {
|
|
useReactInsertionEffect({
|
|
"useEffectEvent.useReactInsertionEffect": ()=>{
|
|
ref.current = callback;
|
|
}
|
|
}["useEffectEvent.useReactInsertionEffect"]);
|
|
} else {
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLayoutEffect"])({
|
|
"useEffectEvent.useLayoutEffect": ()=>{
|
|
ref.current = callback;
|
|
}
|
|
}["useEffectEvent.useLayoutEffect"]);
|
|
}
|
|
return __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useMemo({
|
|
"useEffectEvent.useMemo": ()=>({
|
|
"useEffectEvent.useMemo": (...args)=>ref.current?.(...args)
|
|
})["useEffectEvent.useMemo"]
|
|
}["useEffectEvent.useMemo"], []);
|
|
}
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"useControllableState",
|
|
()=>useControllableState,
|
|
"useControllableStateReducer",
|
|
()=>useControllableStateReducer
|
|
]);
|
|
// src/use-controllable-state.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$effect$2d$event$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-effect-event/dist/index.mjs [app-client] (ecmascript)");
|
|
;
|
|
;
|
|
var useInsertionEffect = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__[" useInsertionEffect ".trim().toString()] || __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLayoutEffect"];
|
|
function useControllableState({ prop, defaultProp, onChange = ()=>{}, caller }) {
|
|
const [uncontrolledProp, setUncontrolledProp, onChangeRef] = useUncontrolledState({
|
|
defaultProp,
|
|
onChange
|
|
});
|
|
const isControlled = prop !== void 0;
|
|
const value = isControlled ? prop : uncontrolledProp;
|
|
if ("TURBOPACK compile-time truthy", 1) {
|
|
const isControlledRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useRef(prop !== void 0);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useEffect({
|
|
"useControllableState.useEffect": ()=>{
|
|
const wasControlled = isControlledRef.current;
|
|
if (wasControlled !== isControlled) {
|
|
const from = wasControlled ? "controlled" : "uncontrolled";
|
|
const to = isControlled ? "controlled" : "uncontrolled";
|
|
console.warn(`${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`);
|
|
}
|
|
isControlledRef.current = isControlled;
|
|
}
|
|
}["useControllableState.useEffect"], [
|
|
isControlled,
|
|
caller
|
|
]);
|
|
}
|
|
const setValue = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useCallback({
|
|
"useControllableState.useCallback[setValue]": (nextValue)=>{
|
|
if (isControlled) {
|
|
const value2 = isFunction(nextValue) ? nextValue(prop) : nextValue;
|
|
if (value2 !== prop) {
|
|
onChangeRef.current?.(value2);
|
|
}
|
|
} else {
|
|
setUncontrolledProp(nextValue);
|
|
}
|
|
}
|
|
}["useControllableState.useCallback[setValue]"], [
|
|
isControlled,
|
|
prop,
|
|
setUncontrolledProp,
|
|
onChangeRef
|
|
]);
|
|
return [
|
|
value,
|
|
setValue
|
|
];
|
|
}
|
|
function useUncontrolledState({ defaultProp, onChange }) {
|
|
const [value, setValue] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useState(defaultProp);
|
|
const prevValueRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useRef(value);
|
|
const onChangeRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useRef(onChange);
|
|
useInsertionEffect({
|
|
"useUncontrolledState.useInsertionEffect": ()=>{
|
|
onChangeRef.current = onChange;
|
|
}
|
|
}["useUncontrolledState.useInsertionEffect"], [
|
|
onChange
|
|
]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useEffect({
|
|
"useUncontrolledState.useEffect": ()=>{
|
|
if (prevValueRef.current !== value) {
|
|
onChangeRef.current?.(value);
|
|
prevValueRef.current = value;
|
|
}
|
|
}
|
|
}["useUncontrolledState.useEffect"], [
|
|
value,
|
|
prevValueRef
|
|
]);
|
|
return [
|
|
value,
|
|
setValue,
|
|
onChangeRef
|
|
];
|
|
}
|
|
function isFunction(value) {
|
|
return typeof value === "function";
|
|
}
|
|
;
|
|
;
|
|
var SYNC_STATE = Symbol("RADIX:SYNC_STATE");
|
|
function useControllableStateReducer(reducer, userArgs, initialArg, init) {
|
|
const { prop: controlledState, defaultProp, onChange: onChangeProp, caller } = userArgs;
|
|
const isControlled = controlledState !== void 0;
|
|
const onChange = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$effect$2d$event$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffectEvent"])(onChangeProp);
|
|
if ("TURBOPACK compile-time truthy", 1) {
|
|
const isControlledRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useRef(controlledState !== void 0);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useEffect({
|
|
"useControllableStateReducer.useEffect": ()=>{
|
|
const wasControlled = isControlledRef.current;
|
|
if (wasControlled !== isControlled) {
|
|
const from = wasControlled ? "controlled" : "uncontrolled";
|
|
const to = isControlled ? "controlled" : "uncontrolled";
|
|
console.warn(`${caller} is changing from ${from} to ${to}. Components should not switch from controlled to uncontrolled (or vice versa). Decide between using a controlled or uncontrolled value for the lifetime of the component.`);
|
|
}
|
|
isControlledRef.current = isControlled;
|
|
}
|
|
}["useControllableStateReducer.useEffect"], [
|
|
isControlled,
|
|
caller
|
|
]);
|
|
}
|
|
const args = [
|
|
{
|
|
...initialArg,
|
|
state: defaultProp
|
|
}
|
|
];
|
|
if (init) {
|
|
args.push(init);
|
|
}
|
|
const [internalState, dispatch] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useReducer({
|
|
"useControllableStateReducer.useReducer": (state2, action)=>{
|
|
if (action.type === SYNC_STATE) {
|
|
return {
|
|
...state2,
|
|
state: action.state
|
|
};
|
|
}
|
|
const next = reducer(state2, action);
|
|
if (isControlled && !Object.is(next.state, state2.state)) {
|
|
onChange(next.state);
|
|
}
|
|
return next;
|
|
}
|
|
}["useControllableStateReducer.useReducer"], ...args);
|
|
const uncontrolledState = internalState.state;
|
|
const prevValueRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useRef(uncontrolledState);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useEffect({
|
|
"useControllableStateReducer.useEffect": ()=>{
|
|
if (prevValueRef.current !== uncontrolledState) {
|
|
prevValueRef.current = uncontrolledState;
|
|
if (!isControlled) {
|
|
onChange(uncontrolledState);
|
|
}
|
|
}
|
|
}
|
|
}["useControllableStateReducer.useEffect"], [
|
|
onChange,
|
|
uncontrolledState,
|
|
prevValueRef,
|
|
isControlled
|
|
]);
|
|
const state = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useMemo({
|
|
"useControllableStateReducer.useMemo[state]": ()=>{
|
|
const isControlled2 = controlledState !== void 0;
|
|
if (isControlled2) {
|
|
return {
|
|
...internalState,
|
|
state: controlledState
|
|
};
|
|
}
|
|
return internalState;
|
|
}
|
|
}["useControllableStateReducer.useMemo[state]"], [
|
|
internalState,
|
|
controlledState
|
|
]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__.useEffect({
|
|
"useControllableStateReducer.useEffect": ()=>{
|
|
if (isControlled && !Object.is(controlledState, internalState.state)) {
|
|
dispatch({
|
|
type: SYNC_STATE,
|
|
state: controlledState
|
|
});
|
|
}
|
|
}
|
|
}["useControllableStateReducer.useEffect"], [
|
|
controlledState,
|
|
internalState.state,
|
|
isControlled
|
|
]);
|
|
return [
|
|
state,
|
|
dispatch
|
|
];
|
|
}
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Root",
|
|
()=>Root,
|
|
"VISUALLY_HIDDEN_STYLES",
|
|
()=>VISUALLY_HIDDEN_STYLES,
|
|
"VisuallyHidden",
|
|
()=>VisuallyHidden
|
|
]);
|
|
// src/visually-hidden.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-primitive/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
|
|
;
|
|
;
|
|
;
|
|
var VISUALLY_HIDDEN_STYLES = Object.freeze({
|
|
// See: https://github.com/twbs/bootstrap/blob/main/scss/mixins/_visually-hidden.scss
|
|
position: "absolute",
|
|
border: 0,
|
|
width: 1,
|
|
height: 1,
|
|
padding: 0,
|
|
margin: -1,
|
|
overflow: "hidden",
|
|
clip: "rect(0, 0, 0, 0)",
|
|
whiteSpace: "nowrap",
|
|
wordWrap: "normal"
|
|
});
|
|
var NAME = "VisuallyHidden";
|
|
var VisuallyHidden = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Primitive"].span, {
|
|
...props,
|
|
ref: forwardedRef,
|
|
style: {
|
|
...VISUALLY_HIDDEN_STYLES,
|
|
...props.style
|
|
}
|
|
});
|
|
});
|
|
VisuallyHidden.displayName = NAME;
|
|
var Root = VisuallyHidden;
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/@radix-ui/react-toast/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"Action",
|
|
()=>Action,
|
|
"Close",
|
|
()=>Close,
|
|
"Description",
|
|
()=>Description,
|
|
"Provider",
|
|
()=>Provider,
|
|
"Root",
|
|
()=>Root2,
|
|
"Title",
|
|
()=>Title,
|
|
"Toast",
|
|
()=>Toast,
|
|
"ToastAction",
|
|
()=>ToastAction,
|
|
"ToastClose",
|
|
()=>ToastClose,
|
|
"ToastDescription",
|
|
()=>ToastDescription,
|
|
"ToastProvider",
|
|
()=>ToastProvider,
|
|
"ToastTitle",
|
|
()=>ToastTitle,
|
|
"ToastViewport",
|
|
()=>ToastViewport,
|
|
"Viewport",
|
|
()=>Viewport,
|
|
"createToastScope",
|
|
()=>createToastScope
|
|
]);
|
|
// src/toast.tsx
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2d$dom$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react-dom/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/primitive/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-compose-refs/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$collection$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-collection/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$context$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-context/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dismissable$2d$layer$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-dismissable-layer/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$portal$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-portal/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$presence$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-presence/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-primitive/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$callback$2d$ref$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-callback-ref/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$controllable$2d$state$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-controllable-state/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-use-layout-effect/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$visually$2d$hidden$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/@radix-ui/react-visually-hidden/dist/index.mjs [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/jsx-runtime.js [app-client] (ecmascript)");
|
|
"use client";
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
;
|
|
var PROVIDER_NAME = "ToastProvider";
|
|
var [Collection, useCollection, createCollectionScope] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$collection$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createCollection"])("Toast");
|
|
var [createToastContext, createToastScope] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$context$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createContextScope"])("Toast", [
|
|
createCollectionScope
|
|
]);
|
|
var [ToastProviderProvider, useToastProviderContext] = createToastContext(PROVIDER_NAME);
|
|
var ToastProvider = (props)=>{
|
|
const { __scopeToast, label = "Notification", duration = 5e3, swipeDirection = "right", swipeThreshold = 50, children } = props;
|
|
const [viewport, setViewport] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"](null);
|
|
const [toastCount, setToastCount] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"](0);
|
|
const isFocusedToastEscapeKeyDownRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](false);
|
|
const isClosePausedRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](false);
|
|
if (!label.trim()) {
|
|
console.error(`Invalid prop \`label\` supplied to \`${PROVIDER_NAME}\`. Expected non-empty \`string\`.`);
|
|
}
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(Collection.Provider, {
|
|
scope: __scopeToast,
|
|
children: /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(ToastProviderProvider, {
|
|
scope: __scopeToast,
|
|
label,
|
|
duration,
|
|
swipeDirection,
|
|
swipeThreshold,
|
|
toastCount,
|
|
viewport,
|
|
onViewportChange: setViewport,
|
|
onToastAdd: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"]({
|
|
"ToastProvider.useCallback": ()=>setToastCount({
|
|
"ToastProvider.useCallback": (prevCount)=>prevCount + 1
|
|
}["ToastProvider.useCallback"])
|
|
}["ToastProvider.useCallback"], []),
|
|
onToastRemove: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"]({
|
|
"ToastProvider.useCallback": ()=>setToastCount({
|
|
"ToastProvider.useCallback": (prevCount)=>prevCount - 1
|
|
}["ToastProvider.useCallback"])
|
|
}["ToastProvider.useCallback"], []),
|
|
isFocusedToastEscapeKeyDownRef,
|
|
isClosePausedRef,
|
|
children
|
|
})
|
|
});
|
|
};
|
|
ToastProvider.displayName = PROVIDER_NAME;
|
|
var VIEWPORT_NAME = "ToastViewport";
|
|
var VIEWPORT_DEFAULT_HOTKEY = [
|
|
"F8"
|
|
];
|
|
var VIEWPORT_PAUSE = "toast.viewportPause";
|
|
var VIEWPORT_RESUME = "toast.viewportResume";
|
|
var ToastViewport = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { __scopeToast, hotkey = VIEWPORT_DEFAULT_HOTKEY, label = "Notifications ({hotkey})", ...viewportProps } = props;
|
|
const context = useToastProviderContext(VIEWPORT_NAME, __scopeToast);
|
|
const getItems = useCollection(__scopeToast);
|
|
const wrapperRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](null);
|
|
const headFocusProxyRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](null);
|
|
const tailFocusProxyRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](null);
|
|
const ref = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](null);
|
|
const composedRefs = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useComposedRefs"])(forwardedRef, ref, context.onViewportChange);
|
|
const hotkeyLabel = hotkey.join("+").replace(/Key/g, "").replace(/Digit/g, "");
|
|
const hasToasts = context.toastCount > 0;
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"ToastViewport.useEffect": ()=>{
|
|
const handleKeyDown = {
|
|
"ToastViewport.useEffect.handleKeyDown": (event)=>{
|
|
const isHotkeyPressed = hotkey.length !== 0 && hotkey.every({
|
|
"ToastViewport.useEffect.handleKeyDown": (key)=>event[key] || event.code === key
|
|
}["ToastViewport.useEffect.handleKeyDown"]);
|
|
if (isHotkeyPressed) ref.current?.focus();
|
|
}
|
|
}["ToastViewport.useEffect.handleKeyDown"];
|
|
document.addEventListener("keydown", handleKeyDown);
|
|
return ({
|
|
"ToastViewport.useEffect": ()=>document.removeEventListener("keydown", handleKeyDown)
|
|
})["ToastViewport.useEffect"];
|
|
}
|
|
}["ToastViewport.useEffect"], [
|
|
hotkey
|
|
]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"ToastViewport.useEffect": ()=>{
|
|
const wrapper = wrapperRef.current;
|
|
const viewport = ref.current;
|
|
if (hasToasts && wrapper && viewport) {
|
|
const handlePause = {
|
|
"ToastViewport.useEffect.handlePause": ()=>{
|
|
if (!context.isClosePausedRef.current) {
|
|
const pauseEvent = new CustomEvent(VIEWPORT_PAUSE);
|
|
viewport.dispatchEvent(pauseEvent);
|
|
context.isClosePausedRef.current = true;
|
|
}
|
|
}
|
|
}["ToastViewport.useEffect.handlePause"];
|
|
const handleResume = {
|
|
"ToastViewport.useEffect.handleResume": ()=>{
|
|
if (context.isClosePausedRef.current) {
|
|
const resumeEvent = new CustomEvent(VIEWPORT_RESUME);
|
|
viewport.dispatchEvent(resumeEvent);
|
|
context.isClosePausedRef.current = false;
|
|
}
|
|
}
|
|
}["ToastViewport.useEffect.handleResume"];
|
|
const handleFocusOutResume = {
|
|
"ToastViewport.useEffect.handleFocusOutResume": (event)=>{
|
|
const isFocusMovingOutside = !wrapper.contains(event.relatedTarget);
|
|
if (isFocusMovingOutside) handleResume();
|
|
}
|
|
}["ToastViewport.useEffect.handleFocusOutResume"];
|
|
const handlePointerLeaveResume = {
|
|
"ToastViewport.useEffect.handlePointerLeaveResume": ()=>{
|
|
const isFocusInside = wrapper.contains(document.activeElement);
|
|
if (!isFocusInside) handleResume();
|
|
}
|
|
}["ToastViewport.useEffect.handlePointerLeaveResume"];
|
|
wrapper.addEventListener("focusin", handlePause);
|
|
wrapper.addEventListener("focusout", handleFocusOutResume);
|
|
wrapper.addEventListener("pointermove", handlePause);
|
|
wrapper.addEventListener("pointerleave", handlePointerLeaveResume);
|
|
window.addEventListener("blur", handlePause);
|
|
window.addEventListener("focus", handleResume);
|
|
return ({
|
|
"ToastViewport.useEffect": ()=>{
|
|
wrapper.removeEventListener("focusin", handlePause);
|
|
wrapper.removeEventListener("focusout", handleFocusOutResume);
|
|
wrapper.removeEventListener("pointermove", handlePause);
|
|
wrapper.removeEventListener("pointerleave", handlePointerLeaveResume);
|
|
window.removeEventListener("blur", handlePause);
|
|
window.removeEventListener("focus", handleResume);
|
|
}
|
|
})["ToastViewport.useEffect"];
|
|
}
|
|
}
|
|
}["ToastViewport.useEffect"], [
|
|
hasToasts,
|
|
context.isClosePausedRef
|
|
]);
|
|
const getSortedTabbableCandidates = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"]({
|
|
"ToastViewport.useCallback[getSortedTabbableCandidates]": ({ tabbingDirection })=>{
|
|
const toastItems = getItems();
|
|
const tabbableCandidates = toastItems.map({
|
|
"ToastViewport.useCallback[getSortedTabbableCandidates].tabbableCandidates": (toastItem)=>{
|
|
const toastNode = toastItem.ref.current;
|
|
const toastTabbableCandidates = [
|
|
toastNode,
|
|
...getTabbableCandidates(toastNode)
|
|
];
|
|
return tabbingDirection === "forwards" ? toastTabbableCandidates : toastTabbableCandidates.reverse();
|
|
}
|
|
}["ToastViewport.useCallback[getSortedTabbableCandidates].tabbableCandidates"]);
|
|
return (tabbingDirection === "forwards" ? tabbableCandidates.reverse() : tabbableCandidates).flat();
|
|
}
|
|
}["ToastViewport.useCallback[getSortedTabbableCandidates]"], [
|
|
getItems
|
|
]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"ToastViewport.useEffect": ()=>{
|
|
const viewport = ref.current;
|
|
if (viewport) {
|
|
const handleKeyDown = {
|
|
"ToastViewport.useEffect.handleKeyDown": (event)=>{
|
|
const isMetaKey = event.altKey || event.ctrlKey || event.metaKey;
|
|
const isTabKey = event.key === "Tab" && !isMetaKey;
|
|
if (isTabKey) {
|
|
const focusedElement = document.activeElement;
|
|
const isTabbingBackwards = event.shiftKey;
|
|
const targetIsViewport = event.target === viewport;
|
|
if (targetIsViewport && isTabbingBackwards) {
|
|
headFocusProxyRef.current?.focus();
|
|
return;
|
|
}
|
|
const tabbingDirection = isTabbingBackwards ? "backwards" : "forwards";
|
|
const sortedCandidates = getSortedTabbableCandidates({
|
|
tabbingDirection
|
|
});
|
|
const index = sortedCandidates.findIndex({
|
|
"ToastViewport.useEffect.handleKeyDown.index": (candidate)=>candidate === focusedElement
|
|
}["ToastViewport.useEffect.handleKeyDown.index"]);
|
|
if (focusFirst(sortedCandidates.slice(index + 1))) {
|
|
event.preventDefault();
|
|
} else {
|
|
isTabbingBackwards ? headFocusProxyRef.current?.focus() : tailFocusProxyRef.current?.focus();
|
|
}
|
|
}
|
|
}
|
|
}["ToastViewport.useEffect.handleKeyDown"];
|
|
viewport.addEventListener("keydown", handleKeyDown);
|
|
return ({
|
|
"ToastViewport.useEffect": ()=>viewport.removeEventListener("keydown", handleKeyDown)
|
|
})["ToastViewport.useEffect"];
|
|
}
|
|
}
|
|
}["ToastViewport.useEffect"], [
|
|
getItems,
|
|
getSortedTabbableCandidates
|
|
]);
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxs"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dismissable$2d$layer$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Branch"], {
|
|
ref: wrapperRef,
|
|
role: "region",
|
|
"aria-label": label.replace("{hotkey}", hotkeyLabel),
|
|
tabIndex: -1,
|
|
style: {
|
|
pointerEvents: hasToasts ? void 0 : "none"
|
|
},
|
|
children: [
|
|
hasToasts && /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(FocusProxy, {
|
|
ref: headFocusProxyRef,
|
|
onFocusFromOutsideViewport: ()=>{
|
|
const tabbableCandidates = getSortedTabbableCandidates({
|
|
tabbingDirection: "forwards"
|
|
});
|
|
focusFirst(tabbableCandidates);
|
|
}
|
|
}),
|
|
/* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(Collection.Slot, {
|
|
scope: __scopeToast,
|
|
children: /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Primitive"].ol, {
|
|
tabIndex: -1,
|
|
...viewportProps,
|
|
ref: composedRefs
|
|
})
|
|
}),
|
|
hasToasts && /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(FocusProxy, {
|
|
ref: tailFocusProxyRef,
|
|
onFocusFromOutsideViewport: ()=>{
|
|
const tabbableCandidates = getSortedTabbableCandidates({
|
|
tabbingDirection: "backwards"
|
|
});
|
|
focusFirst(tabbableCandidates);
|
|
}
|
|
})
|
|
]
|
|
});
|
|
});
|
|
ToastViewport.displayName = VIEWPORT_NAME;
|
|
var FOCUS_PROXY_NAME = "ToastFocusProxy";
|
|
var FocusProxy = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { __scopeToast, onFocusFromOutsideViewport, ...proxyProps } = props;
|
|
const context = useToastProviderContext(FOCUS_PROXY_NAME, __scopeToast);
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$visually$2d$hidden$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["VisuallyHidden"], {
|
|
tabIndex: 0,
|
|
...proxyProps,
|
|
ref: forwardedRef,
|
|
style: {
|
|
position: "fixed"
|
|
},
|
|
onFocus: (event)=>{
|
|
const prevFocusedElement = event.relatedTarget;
|
|
const isFocusFromOutsideViewport = !context.viewport?.contains(prevFocusedElement);
|
|
if (isFocusFromOutsideViewport) onFocusFromOutsideViewport();
|
|
}
|
|
});
|
|
});
|
|
FocusProxy.displayName = FOCUS_PROXY_NAME;
|
|
var TOAST_NAME = "Toast";
|
|
var TOAST_SWIPE_START = "toast.swipeStart";
|
|
var TOAST_SWIPE_MOVE = "toast.swipeMove";
|
|
var TOAST_SWIPE_CANCEL = "toast.swipeCancel";
|
|
var TOAST_SWIPE_END = "toast.swipeEnd";
|
|
var Toast = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { forceMount, open: openProp, defaultOpen, onOpenChange, ...toastProps } = props;
|
|
const [open, setOpen] = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$controllable$2d$state$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useControllableState"])({
|
|
prop: openProp,
|
|
defaultProp: defaultOpen ?? true,
|
|
onChange: onOpenChange,
|
|
caller: TOAST_NAME
|
|
});
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$presence$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Presence"], {
|
|
present: forceMount || open,
|
|
children: /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(ToastImpl, {
|
|
open,
|
|
...toastProps,
|
|
ref: forwardedRef,
|
|
onClose: ()=>setOpen(false),
|
|
onPause: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$callback$2d$ref$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallbackRef"])(props.onPause),
|
|
onResume: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$callback$2d$ref$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallbackRef"])(props.onResume),
|
|
onSwipeStart: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onSwipeStart, (event)=>{
|
|
event.currentTarget.setAttribute("data-swipe", "start");
|
|
}),
|
|
onSwipeMove: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onSwipeMove, (event)=>{
|
|
const { x, y } = event.detail.delta;
|
|
event.currentTarget.setAttribute("data-swipe", "move");
|
|
event.currentTarget.style.setProperty("--radix-toast-swipe-move-x", `${x}px`);
|
|
event.currentTarget.style.setProperty("--radix-toast-swipe-move-y", `${y}px`);
|
|
}),
|
|
onSwipeCancel: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onSwipeCancel, (event)=>{
|
|
event.currentTarget.setAttribute("data-swipe", "cancel");
|
|
event.currentTarget.style.removeProperty("--radix-toast-swipe-move-x");
|
|
event.currentTarget.style.removeProperty("--radix-toast-swipe-move-y");
|
|
event.currentTarget.style.removeProperty("--radix-toast-swipe-end-x");
|
|
event.currentTarget.style.removeProperty("--radix-toast-swipe-end-y");
|
|
}),
|
|
onSwipeEnd: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onSwipeEnd, (event)=>{
|
|
const { x, y } = event.detail.delta;
|
|
event.currentTarget.setAttribute("data-swipe", "end");
|
|
event.currentTarget.style.removeProperty("--radix-toast-swipe-move-x");
|
|
event.currentTarget.style.removeProperty("--radix-toast-swipe-move-y");
|
|
event.currentTarget.style.setProperty("--radix-toast-swipe-end-x", `${x}px`);
|
|
event.currentTarget.style.setProperty("--radix-toast-swipe-end-y", `${y}px`);
|
|
setOpen(false);
|
|
})
|
|
})
|
|
});
|
|
});
|
|
Toast.displayName = TOAST_NAME;
|
|
var [ToastInteractiveProvider, useToastInteractiveContext] = createToastContext(TOAST_NAME, {
|
|
onClose () {}
|
|
});
|
|
var ToastImpl = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { __scopeToast, type = "foreground", duration: durationProp, open, onClose, onEscapeKeyDown, onPause, onResume, onSwipeStart, onSwipeMove, onSwipeCancel, onSwipeEnd, ...toastProps } = props;
|
|
const context = useToastProviderContext(TOAST_NAME, __scopeToast);
|
|
const [node, setNode] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"](null);
|
|
const composedRefs = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$compose$2d$refs$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useComposedRefs"])(forwardedRef, {
|
|
"ToastImpl.useComposedRefs[composedRefs]": (node2)=>setNode(node2)
|
|
}["ToastImpl.useComposedRefs[composedRefs]"]);
|
|
const pointerStartRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](null);
|
|
const swipeDeltaRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](null);
|
|
const duration = durationProp || context.duration;
|
|
const closeTimerStartTimeRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](0);
|
|
const closeTimerRemainingTimeRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](duration);
|
|
const closeTimerRef = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useRef"](0);
|
|
const { onToastAdd, onToastRemove } = context;
|
|
const handleClose = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$callback$2d$ref$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallbackRef"])({
|
|
"ToastImpl.useCallbackRef[handleClose]": ()=>{
|
|
const isFocusInToast = node?.contains(document.activeElement);
|
|
if (isFocusInToast) context.viewport?.focus();
|
|
onClose();
|
|
}
|
|
}["ToastImpl.useCallbackRef[handleClose]"]);
|
|
const startTimer = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallback"]({
|
|
"ToastImpl.useCallback[startTimer]": (duration2)=>{
|
|
if (!duration2 || duration2 === Infinity) return;
|
|
window.clearTimeout(closeTimerRef.current);
|
|
closeTimerStartTimeRef.current = /* @__PURE__ */ new Date().getTime();
|
|
closeTimerRef.current = window.setTimeout(handleClose, duration2);
|
|
}
|
|
}["ToastImpl.useCallback[startTimer]"], [
|
|
handleClose
|
|
]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"ToastImpl.useEffect": ()=>{
|
|
const viewport = context.viewport;
|
|
if (viewport) {
|
|
const handleResume = {
|
|
"ToastImpl.useEffect.handleResume": ()=>{
|
|
startTimer(closeTimerRemainingTimeRef.current);
|
|
onResume?.();
|
|
}
|
|
}["ToastImpl.useEffect.handleResume"];
|
|
const handlePause = {
|
|
"ToastImpl.useEffect.handlePause": ()=>{
|
|
const elapsedTime = /* @__PURE__ */ new Date().getTime() - closeTimerStartTimeRef.current;
|
|
closeTimerRemainingTimeRef.current = closeTimerRemainingTimeRef.current - elapsedTime;
|
|
window.clearTimeout(closeTimerRef.current);
|
|
onPause?.();
|
|
}
|
|
}["ToastImpl.useEffect.handlePause"];
|
|
viewport.addEventListener(VIEWPORT_PAUSE, handlePause);
|
|
viewport.addEventListener(VIEWPORT_RESUME, handleResume);
|
|
return ({
|
|
"ToastImpl.useEffect": ()=>{
|
|
viewport.removeEventListener(VIEWPORT_PAUSE, handlePause);
|
|
viewport.removeEventListener(VIEWPORT_RESUME, handleResume);
|
|
}
|
|
})["ToastImpl.useEffect"];
|
|
}
|
|
}
|
|
}["ToastImpl.useEffect"], [
|
|
context.viewport,
|
|
duration,
|
|
onPause,
|
|
onResume,
|
|
startTimer
|
|
]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"ToastImpl.useEffect": ()=>{
|
|
if (open && !context.isClosePausedRef.current) startTimer(duration);
|
|
}
|
|
}["ToastImpl.useEffect"], [
|
|
open,
|
|
duration,
|
|
context.isClosePausedRef,
|
|
startTimer
|
|
]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"ToastImpl.useEffect": ()=>{
|
|
onToastAdd();
|
|
return ({
|
|
"ToastImpl.useEffect": ()=>onToastRemove()
|
|
})["ToastImpl.useEffect"];
|
|
}
|
|
}["ToastImpl.useEffect"], [
|
|
onToastAdd,
|
|
onToastRemove
|
|
]);
|
|
const announceTextContent = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useMemo"]({
|
|
"ToastImpl.useMemo[announceTextContent]": ()=>{
|
|
return node ? getAnnounceTextContent(node) : null;
|
|
}
|
|
}["ToastImpl.useMemo[announceTextContent]"], [
|
|
node
|
|
]);
|
|
if (!context.viewport) return null;
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxs"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
|
|
children: [
|
|
announceTextContent && /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(ToastAnnounce, {
|
|
__scopeToast,
|
|
role: "status",
|
|
"aria-live": type === "foreground" ? "assertive" : "polite",
|
|
children: announceTextContent
|
|
}),
|
|
/* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(ToastInteractiveProvider, {
|
|
scope: __scopeToast,
|
|
onClose: handleClose,
|
|
children: __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2d$dom$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createPortal"](/* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(Collection.ItemSlot, {
|
|
scope: __scopeToast,
|
|
children: /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$dismissable$2d$layer$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Root"], {
|
|
asChild: true,
|
|
onEscapeKeyDown: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(onEscapeKeyDown, ()=>{
|
|
if (!context.isFocusedToastEscapeKeyDownRef.current) handleClose();
|
|
context.isFocusedToastEscapeKeyDownRef.current = false;
|
|
}),
|
|
children: /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Primitive"].li, {
|
|
tabIndex: 0,
|
|
"data-state": open ? "open" : "closed",
|
|
"data-swipe-direction": context.swipeDirection,
|
|
...toastProps,
|
|
ref: composedRefs,
|
|
style: {
|
|
userSelect: "none",
|
|
touchAction: "none",
|
|
...props.style
|
|
},
|
|
onKeyDown: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onKeyDown, (event)=>{
|
|
if (event.key !== "Escape") return;
|
|
onEscapeKeyDown?.(event.nativeEvent);
|
|
if (!event.nativeEvent.defaultPrevented) {
|
|
context.isFocusedToastEscapeKeyDownRef.current = true;
|
|
handleClose();
|
|
}
|
|
}),
|
|
onPointerDown: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onPointerDown, (event)=>{
|
|
if (event.button !== 0) return;
|
|
pointerStartRef.current = {
|
|
x: event.clientX,
|
|
y: event.clientY
|
|
};
|
|
}),
|
|
onPointerMove: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onPointerMove, (event)=>{
|
|
if (!pointerStartRef.current) return;
|
|
const x = event.clientX - pointerStartRef.current.x;
|
|
const y = event.clientY - pointerStartRef.current.y;
|
|
const hasSwipeMoveStarted = Boolean(swipeDeltaRef.current);
|
|
const isHorizontalSwipe = [
|
|
"left",
|
|
"right"
|
|
].includes(context.swipeDirection);
|
|
const clamp = [
|
|
"left",
|
|
"up"
|
|
].includes(context.swipeDirection) ? Math.min : Math.max;
|
|
const clampedX = isHorizontalSwipe ? clamp(0, x) : 0;
|
|
const clampedY = !isHorizontalSwipe ? clamp(0, y) : 0;
|
|
const moveStartBuffer = event.pointerType === "touch" ? 10 : 2;
|
|
const delta = {
|
|
x: clampedX,
|
|
y: clampedY
|
|
};
|
|
const eventDetail = {
|
|
originalEvent: event,
|
|
delta
|
|
};
|
|
if (hasSwipeMoveStarted) {
|
|
swipeDeltaRef.current = delta;
|
|
handleAndDispatchCustomEvent(TOAST_SWIPE_MOVE, onSwipeMove, eventDetail, {
|
|
discrete: false
|
|
});
|
|
} else if (isDeltaInDirection(delta, context.swipeDirection, moveStartBuffer)) {
|
|
swipeDeltaRef.current = delta;
|
|
handleAndDispatchCustomEvent(TOAST_SWIPE_START, onSwipeStart, eventDetail, {
|
|
discrete: false
|
|
});
|
|
event.target.setPointerCapture(event.pointerId);
|
|
} else if (Math.abs(x) > moveStartBuffer || Math.abs(y) > moveStartBuffer) {
|
|
pointerStartRef.current = null;
|
|
}
|
|
}),
|
|
onPointerUp: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onPointerUp, (event)=>{
|
|
const delta = swipeDeltaRef.current;
|
|
const target = event.target;
|
|
if (target.hasPointerCapture(event.pointerId)) {
|
|
target.releasePointerCapture(event.pointerId);
|
|
}
|
|
swipeDeltaRef.current = null;
|
|
pointerStartRef.current = null;
|
|
if (delta) {
|
|
const toast = event.currentTarget;
|
|
const eventDetail = {
|
|
originalEvent: event,
|
|
delta
|
|
};
|
|
if (isDeltaInDirection(delta, context.swipeDirection, context.swipeThreshold)) {
|
|
handleAndDispatchCustomEvent(TOAST_SWIPE_END, onSwipeEnd, eventDetail, {
|
|
discrete: true
|
|
});
|
|
} else {
|
|
handleAndDispatchCustomEvent(TOAST_SWIPE_CANCEL, onSwipeCancel, eventDetail, {
|
|
discrete: true
|
|
});
|
|
}
|
|
toast.addEventListener("click", (event2)=>event2.preventDefault(), {
|
|
once: true
|
|
});
|
|
}
|
|
})
|
|
})
|
|
})
|
|
}), context.viewport)
|
|
})
|
|
]
|
|
});
|
|
});
|
|
var ToastAnnounce = (props)=>{
|
|
const { __scopeToast, children, ...announceProps } = props;
|
|
const context = useToastProviderContext(TOAST_NAME, __scopeToast);
|
|
const [renderAnnounceText, setRenderAnnounceText] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"](false);
|
|
const [isAnnounced, setIsAnnounced] = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useState"](false);
|
|
useNextFrame({
|
|
"ToastAnnounce.useNextFrame": ()=>setRenderAnnounceText(true)
|
|
}["ToastAnnounce.useNextFrame"]);
|
|
__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useEffect"]({
|
|
"ToastAnnounce.useEffect": ()=>{
|
|
const timer = window.setTimeout({
|
|
"ToastAnnounce.useEffect.timer": ()=>setIsAnnounced(true)
|
|
}["ToastAnnounce.useEffect.timer"], 1e3);
|
|
return ({
|
|
"ToastAnnounce.useEffect": ()=>window.clearTimeout(timer)
|
|
})["ToastAnnounce.useEffect"];
|
|
}
|
|
}["ToastAnnounce.useEffect"], []);
|
|
return isAnnounced ? null : /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$portal$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Portal"], {
|
|
asChild: true,
|
|
children: /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$visually$2d$hidden$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["VisuallyHidden"], {
|
|
...announceProps,
|
|
children: renderAnnounceText && /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsxs"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Fragment"], {
|
|
children: [
|
|
context.label,
|
|
" ",
|
|
children
|
|
]
|
|
})
|
|
})
|
|
});
|
|
};
|
|
var TITLE_NAME = "ToastTitle";
|
|
var ToastTitle = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { __scopeToast, ...titleProps } = props;
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Primitive"].div, {
|
|
...titleProps,
|
|
ref: forwardedRef
|
|
});
|
|
});
|
|
ToastTitle.displayName = TITLE_NAME;
|
|
var DESCRIPTION_NAME = "ToastDescription";
|
|
var ToastDescription = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { __scopeToast, ...descriptionProps } = props;
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Primitive"].div, {
|
|
...descriptionProps,
|
|
ref: forwardedRef
|
|
});
|
|
});
|
|
ToastDescription.displayName = DESCRIPTION_NAME;
|
|
var ACTION_NAME = "ToastAction";
|
|
var ToastAction = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { altText, ...actionProps } = props;
|
|
if (!altText.trim()) {
|
|
console.error(`Invalid prop \`altText\` supplied to \`${ACTION_NAME}\`. Expected non-empty \`string\`.`);
|
|
return null;
|
|
}
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(ToastAnnounceExclude, {
|
|
altText,
|
|
asChild: true,
|
|
children: /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(ToastClose, {
|
|
...actionProps,
|
|
ref: forwardedRef
|
|
})
|
|
});
|
|
});
|
|
ToastAction.displayName = ACTION_NAME;
|
|
var CLOSE_NAME = "ToastClose";
|
|
var ToastClose = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { __scopeToast, ...closeProps } = props;
|
|
const interactiveContext = useToastInteractiveContext(CLOSE_NAME, __scopeToast);
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(ToastAnnounceExclude, {
|
|
asChild: true,
|
|
children: /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Primitive"].button, {
|
|
type: "button",
|
|
...closeProps,
|
|
ref: forwardedRef,
|
|
onClick: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["composeEventHandlers"])(props.onClick, interactiveContext.onClose)
|
|
})
|
|
});
|
|
});
|
|
ToastClose.displayName = CLOSE_NAME;
|
|
var ToastAnnounceExclude = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"]((props, forwardedRef)=>{
|
|
const { __scopeToast, altText, ...announceExcludeProps } = props;
|
|
return /* @__PURE__ */ (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$jsx$2d$runtime$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["jsx"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["Primitive"].div, {
|
|
"data-radix-toast-announce-exclude": "",
|
|
"data-radix-toast-announce-alt": altText || void 0,
|
|
...announceExcludeProps,
|
|
ref: forwardedRef
|
|
});
|
|
});
|
|
function getAnnounceTextContent(container) {
|
|
const textContent = [];
|
|
const childNodes = Array.from(container.childNodes);
|
|
childNodes.forEach((node)=>{
|
|
if (node.nodeType === node.TEXT_NODE && node.textContent) textContent.push(node.textContent);
|
|
if (isHTMLElement(node)) {
|
|
const isHidden = node.ariaHidden || node.hidden || node.style.display === "none";
|
|
const isExcluded = node.dataset.radixToastAnnounceExclude === "";
|
|
if (!isHidden) {
|
|
if (isExcluded) {
|
|
const altText = node.dataset.radixToastAnnounceAlt;
|
|
if (altText) textContent.push(altText);
|
|
} else {
|
|
textContent.push(...getAnnounceTextContent(node));
|
|
}
|
|
}
|
|
}
|
|
});
|
|
return textContent;
|
|
}
|
|
function handleAndDispatchCustomEvent(name, handler, detail, { discrete }) {
|
|
const currentTarget = detail.originalEvent.currentTarget;
|
|
const event = new CustomEvent(name, {
|
|
bubbles: true,
|
|
cancelable: true,
|
|
detail
|
|
});
|
|
if (handler) currentTarget.addEventListener(name, handler, {
|
|
once: true
|
|
});
|
|
if (discrete) {
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$primitive$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["dispatchDiscreteCustomEvent"])(currentTarget, event);
|
|
} else {
|
|
currentTarget.dispatchEvent(event);
|
|
}
|
|
}
|
|
var isDeltaInDirection = (delta, direction, threshold = 0)=>{
|
|
const deltaX = Math.abs(delta.x);
|
|
const deltaY = Math.abs(delta.y);
|
|
const isDeltaX = deltaX > deltaY;
|
|
if (direction === "left" || direction === "right") {
|
|
return isDeltaX && deltaX > threshold;
|
|
} else {
|
|
return !isDeltaX && deltaY > threshold;
|
|
}
|
|
};
|
|
function useNextFrame(callback = ()=>{}) {
|
|
const fn = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$callback$2d$ref$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useCallbackRef"])(callback);
|
|
(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f40$radix$2d$ui$2f$react$2d$use$2d$layout$2d$effect$2f$dist$2f$index$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["useLayoutEffect"])({
|
|
"useNextFrame.useLayoutEffect": ()=>{
|
|
let raf1 = 0;
|
|
let raf2 = 0;
|
|
raf1 = window.requestAnimationFrame({
|
|
"useNextFrame.useLayoutEffect": ()=>raf2 = window.requestAnimationFrame(fn)
|
|
}["useNextFrame.useLayoutEffect"]);
|
|
return ({
|
|
"useNextFrame.useLayoutEffect": ()=>{
|
|
window.cancelAnimationFrame(raf1);
|
|
window.cancelAnimationFrame(raf2);
|
|
}
|
|
})["useNextFrame.useLayoutEffect"];
|
|
}
|
|
}["useNextFrame.useLayoutEffect"], [
|
|
fn
|
|
]);
|
|
}
|
|
function isHTMLElement(node) {
|
|
return node.nodeType === node.ELEMENT_NODE;
|
|
}
|
|
function getTabbableCandidates(container) {
|
|
const nodes = [];
|
|
const walker = document.createTreeWalker(container, NodeFilter.SHOW_ELEMENT, {
|
|
acceptNode: (node)=>{
|
|
const isHiddenInput = node.tagName === "INPUT" && node.type === "hidden";
|
|
if (node.disabled || node.hidden || isHiddenInput) return NodeFilter.FILTER_SKIP;
|
|
return node.tabIndex >= 0 ? NodeFilter.FILTER_ACCEPT : NodeFilter.FILTER_SKIP;
|
|
}
|
|
});
|
|
while(walker.nextNode())nodes.push(walker.currentNode);
|
|
return nodes;
|
|
}
|
|
function focusFirst(candidates) {
|
|
const previouslyFocusedElement = document.activeElement;
|
|
return candidates.some((candidate)=>{
|
|
if (candidate === previouslyFocusedElement) return true;
|
|
candidate.focus();
|
|
return document.activeElement !== previouslyFocusedElement;
|
|
});
|
|
}
|
|
var Provider = ToastProvider;
|
|
var Viewport = ToastViewport;
|
|
var Root2 = Toast;
|
|
var Title = ToastTitle;
|
|
var Description = ToastDescription;
|
|
var Action = ToastAction;
|
|
var Close = ToastClose;
|
|
;
|
|
//# sourceMappingURL=index.mjs.map
|
|
}),
|
|
"[project]/node_modules/clsx/dist/clsx.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"clsx",
|
|
()=>clsx,
|
|
"default",
|
|
()=>__TURBOPACK__default__export__
|
|
]);
|
|
function r(e) {
|
|
var t, f, n = "";
|
|
if ("string" == typeof e || "number" == typeof e) n += e;
|
|
else if ("object" == typeof e) if (Array.isArray(e)) {
|
|
var o = e.length;
|
|
for(t = 0; t < o; t++)e[t] && (f = r(e[t])) && (n && (n += " "), n += f);
|
|
} else for(f in e)e[f] && (n && (n += " "), n += f);
|
|
return n;
|
|
}
|
|
function clsx() {
|
|
for(var e, t, f = 0, n = "", o = arguments.length; f < o; f++)(e = arguments[f]) && (t = r(e)) && (n && (n += " "), n += t);
|
|
return n;
|
|
}
|
|
const __TURBOPACK__default__export__ = clsx;
|
|
}),
|
|
"[project]/node_modules/class-variance-authority/dist/index.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"cva",
|
|
()=>cva,
|
|
"cx",
|
|
()=>cx
|
|
]);
|
|
/**
|
|
* Copyright 2022 Joe Bell. All rights reserved.
|
|
*
|
|
* This file is licensed to you under the Apache License, Version 2.0
|
|
* (the "License"); you may not use this file except in compliance with the
|
|
* License. You may obtain a copy of the License at
|
|
*
|
|
* http://www.apache.org/licenses/LICENSE-2.0
|
|
*
|
|
* Unless required by applicable law or agreed to in writing, software
|
|
* distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
|
|
* WARRANTIES OR REPRESENTATIONS OF ANY KIND, either express or implied. See the
|
|
* License for the specific language governing permissions and limitations under
|
|
* the License.
|
|
*/ var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$clsx$2f$dist$2f$clsx$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/clsx/dist/clsx.mjs [app-client] (ecmascript)");
|
|
;
|
|
const falsyToString = (value)=>typeof value === "boolean" ? `${value}` : value === 0 ? "0" : value;
|
|
const cx = __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$clsx$2f$dist$2f$clsx$2e$mjs__$5b$app$2d$client$5d$__$28$ecmascript$29$__["clsx"];
|
|
const cva = (base, config)=>(props)=>{
|
|
var _config_compoundVariants;
|
|
if ((config === null || config === void 0 ? void 0 : config.variants) == null) return cx(base, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
|
|
const { variants, defaultVariants } = config;
|
|
const getVariantClassNames = Object.keys(variants).map((variant)=>{
|
|
const variantProp = props === null || props === void 0 ? void 0 : props[variant];
|
|
const defaultVariantProp = defaultVariants === null || defaultVariants === void 0 ? void 0 : defaultVariants[variant];
|
|
if (variantProp === null) return null;
|
|
const variantKey = falsyToString(variantProp) || falsyToString(defaultVariantProp);
|
|
return variants[variant][variantKey];
|
|
});
|
|
const propsWithoutUndefined = props && Object.entries(props).reduce((acc, param)=>{
|
|
let [key, value] = param;
|
|
if (value === undefined) {
|
|
return acc;
|
|
}
|
|
acc[key] = value;
|
|
return acc;
|
|
}, {});
|
|
const getCompoundVariantClassNames = config === null || config === void 0 ? void 0 : (_config_compoundVariants = config.compoundVariants) === null || _config_compoundVariants === void 0 ? void 0 : _config_compoundVariants.reduce((acc, param)=>{
|
|
let { class: cvClass, className: cvClassName, ...compoundVariantOptions } = param;
|
|
return Object.entries(compoundVariantOptions).every((param)=>{
|
|
let [key, value] = param;
|
|
return Array.isArray(value) ? value.includes({
|
|
...defaultVariants,
|
|
...propsWithoutUndefined
|
|
}[key]) : ({
|
|
...defaultVariants,
|
|
...propsWithoutUndefined
|
|
})[key] === value;
|
|
}) ? [
|
|
...acc,
|
|
cvClass,
|
|
cvClassName
|
|
] : acc;
|
|
}, []);
|
|
return cx(base, getVariantClassNames, getCompoundVariantClassNames, props === null || props === void 0 ? void 0 : props.class, props === null || props === void 0 ? void 0 : props.className);
|
|
};
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/shared/src/utils.js [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"hasA11yProp",
|
|
()=>hasA11yProp,
|
|
"mergeClasses",
|
|
()=>mergeClasses,
|
|
"toCamelCase",
|
|
()=>toCamelCase,
|
|
"toKebabCase",
|
|
()=>toKebabCase,
|
|
"toPascalCase",
|
|
()=>toPascalCase
|
|
]);
|
|
/**
|
|
* @license lucide-react v0.525.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ const toKebabCase = (string)=>string.replace(/([a-z0-9])([A-Z])/g, "$1-$2").toLowerCase();
|
|
const toCamelCase = (string)=>string.replace(/^([A-Z])|[\s-_]+(\w)/g, (match, p1, p2)=>p2 ? p2.toUpperCase() : p1.toLowerCase());
|
|
const toPascalCase = (string)=>{
|
|
const camelCase = toCamelCase(string);
|
|
return camelCase.charAt(0).toUpperCase() + camelCase.slice(1);
|
|
};
|
|
const mergeClasses = (...classes)=>classes.filter((className, index, array)=>{
|
|
return Boolean(className) && className.trim() !== "" && array.indexOf(className) === index;
|
|
}).join(" ").trim();
|
|
const hasA11yProp = (props)=>{
|
|
for(const prop in props){
|
|
if (prop.startsWith("aria-") || prop === "role" || prop === "title") {
|
|
return true;
|
|
}
|
|
}
|
|
};
|
|
;
|
|
//# sourceMappingURL=utils.js.map
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/defaultAttributes.js [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"default",
|
|
()=>defaultAttributes
|
|
]);
|
|
/**
|
|
* @license lucide-react v0.525.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ var defaultAttributes = {
|
|
xmlns: "http://www.w3.org/2000/svg",
|
|
width: 24,
|
|
height: 24,
|
|
viewBox: "0 0 24 24",
|
|
fill: "none",
|
|
stroke: "currentColor",
|
|
strokeWidth: 2,
|
|
strokeLinecap: "round",
|
|
strokeLinejoin: "round"
|
|
};
|
|
;
|
|
//# sourceMappingURL=defaultAttributes.js.map
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/Icon.js [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"default",
|
|
()=>Icon
|
|
]);
|
|
/**
|
|
* @license lucide-react v0.525.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$defaultAttributes$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/defaultAttributes.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/shared/src/utils.js [app-client] (ecmascript)");
|
|
;
|
|
;
|
|
;
|
|
const Icon = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"])(({ color = "currentColor", size = 24, strokeWidth = 2, absoluteStrokeWidth, className = "", children, iconNode, ...rest }, ref)=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createElement"])("svg", {
|
|
ref,
|
|
...__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$defaultAttributes$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"],
|
|
width: size,
|
|
height: size,
|
|
stroke: color,
|
|
strokeWidth: absoluteStrokeWidth ? Number(strokeWidth) * 24 / Number(size) : strokeWidth,
|
|
className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["mergeClasses"])("lucide", className),
|
|
...!children && !(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["hasA11yProp"])(rest) && {
|
|
"aria-hidden": "true"
|
|
},
|
|
...rest
|
|
}, [
|
|
...iconNode.map(([tag, attrs])=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createElement"])(tag, attrs)),
|
|
...Array.isArray(children) ? children : [
|
|
children
|
|
]
|
|
]));
|
|
;
|
|
//# sourceMappingURL=Icon.js.map
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"default",
|
|
()=>createLucideIcon
|
|
]);
|
|
/**
|
|
* @license lucide-react v0.525.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/next/dist/compiled/react/index.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/shared/src/utils.js [app-client] (ecmascript)");
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$Icon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/Icon.js [app-client] (ecmascript)");
|
|
;
|
|
;
|
|
;
|
|
const createLucideIcon = (iconName, iconNode)=>{
|
|
const Component = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["forwardRef"])(({ className, ...props }, ref)=>(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$next$2f$dist$2f$compiled$2f$react$2f$index$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["createElement"])(__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$Icon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"], {
|
|
ref,
|
|
iconNode,
|
|
className: (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["mergeClasses"])(`lucide-${(0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["toKebabCase"])((0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["toPascalCase"])(iconName))}`, `lucide-${iconName}`, className),
|
|
...props
|
|
}));
|
|
Component.displayName = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$shared$2f$src$2f$utils$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["toPascalCase"])(iconName);
|
|
return Component;
|
|
};
|
|
;
|
|
//# sourceMappingURL=createLucideIcon.js.map
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/icons/x.js [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"__iconNode",
|
|
()=>__iconNode,
|
|
"default",
|
|
()=>X
|
|
]);
|
|
/**
|
|
* @license lucide-react v0.525.0 - ISC
|
|
*
|
|
* This source code is licensed under the ISC license.
|
|
* See the LICENSE file in the root directory of this source tree.
|
|
*/ var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/createLucideIcon.js [app-client] (ecmascript)");
|
|
;
|
|
const __iconNode = [
|
|
[
|
|
"path",
|
|
{
|
|
d: "M18 6 6 18",
|
|
key: "1bl5f8"
|
|
}
|
|
],
|
|
[
|
|
"path",
|
|
{
|
|
d: "m6 6 12 12",
|
|
key: "d8bk6v"
|
|
}
|
|
]
|
|
];
|
|
const X = (0, __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$createLucideIcon$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"])("x", __iconNode);
|
|
;
|
|
//# sourceMappingURL=x.js.map
|
|
}),
|
|
"[project]/node_modules/lucide-react/dist/esm/icons/x.js [app-client] (ecmascript) <export default as X>", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"X",
|
|
()=>__TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__["default"]
|
|
]);
|
|
var __TURBOPACK__imported__module__$5b$project$5d2f$node_modules$2f$lucide$2d$react$2f$dist$2f$esm$2f$icons$2f$x$2e$js__$5b$app$2d$client$5d$__$28$ecmascript$29$__ = __turbopack_context__.i("[project]/node_modules/lucide-react/dist/esm/icons/x.js [app-client] (ecmascript)");
|
|
}),
|
|
"[project]/node_modules/tailwind-merge/dist/bundle-mjs.mjs [app-client] (ecmascript)", ((__turbopack_context__) => {
|
|
"use strict";
|
|
|
|
__turbopack_context__.s([
|
|
"createTailwindMerge",
|
|
()=>createTailwindMerge,
|
|
"extendTailwindMerge",
|
|
()=>extendTailwindMerge,
|
|
"fromTheme",
|
|
()=>fromTheme,
|
|
"getDefaultConfig",
|
|
()=>getDefaultConfig,
|
|
"mergeConfigs",
|
|
()=>mergeConfigs,
|
|
"twJoin",
|
|
()=>twJoin,
|
|
"twMerge",
|
|
()=>twMerge,
|
|
"validators",
|
|
()=>validators
|
|
]);
|
|
/**
|
|
* Concatenates two arrays faster than the array spread operator.
|
|
*/ const concatArrays = (array1, array2)=>{
|
|
// Pre-allocate for better V8 optimization
|
|
const combinedArray = new Array(array1.length + array2.length);
|
|
for(let i = 0; i < array1.length; i++){
|
|
combinedArray[i] = array1[i];
|
|
}
|
|
for(let i = 0; i < array2.length; i++){
|
|
combinedArray[array1.length + i] = array2[i];
|
|
}
|
|
return combinedArray;
|
|
};
|
|
// Factory function ensures consistent object shapes
|
|
const createClassValidatorObject = (classGroupId, validator)=>({
|
|
classGroupId,
|
|
validator
|
|
});
|
|
// Factory ensures consistent ClassPartObject shape
|
|
const createClassPartObject = (nextPart = new Map(), validators = null, classGroupId)=>({
|
|
nextPart,
|
|
validators,
|
|
classGroupId
|
|
});
|
|
const CLASS_PART_SEPARATOR = '-';
|
|
const EMPTY_CONFLICTS = [];
|
|
// I use two dots here because one dot is used as prefix for class groups in plugins
|
|
const ARBITRARY_PROPERTY_PREFIX = 'arbitrary..';
|
|
const createClassGroupUtils = (config)=>{
|
|
const classMap = createClassMap(config);
|
|
const { conflictingClassGroups, conflictingClassGroupModifiers } = config;
|
|
const getClassGroupId = (className)=>{
|
|
if (className.startsWith('[') && className.endsWith(']')) {
|
|
return getGroupIdForArbitraryProperty(className);
|
|
}
|
|
const classParts = className.split(CLASS_PART_SEPARATOR);
|
|
// Classes like `-inset-1` produce an empty string as first classPart. We assume that classes for negative values are used correctly and skip it.
|
|
const startIndex = classParts[0] === '' && classParts.length > 1 ? 1 : 0;
|
|
return getGroupRecursive(classParts, startIndex, classMap);
|
|
};
|
|
const getConflictingClassGroupIds = (classGroupId, hasPostfixModifier)=>{
|
|
if (hasPostfixModifier) {
|
|
const modifierConflicts = conflictingClassGroupModifiers[classGroupId];
|
|
const baseConflicts = conflictingClassGroups[classGroupId];
|
|
if (modifierConflicts) {
|
|
if (baseConflicts) {
|
|
// Merge base conflicts with modifier conflicts
|
|
return concatArrays(baseConflicts, modifierConflicts);
|
|
}
|
|
// Only modifier conflicts
|
|
return modifierConflicts;
|
|
}
|
|
// Fall back to without postfix if no modifier conflicts
|
|
return baseConflicts || EMPTY_CONFLICTS;
|
|
}
|
|
return conflictingClassGroups[classGroupId] || EMPTY_CONFLICTS;
|
|
};
|
|
return {
|
|
getClassGroupId,
|
|
getConflictingClassGroupIds
|
|
};
|
|
};
|
|
const getGroupRecursive = (classParts, startIndex, classPartObject)=>{
|
|
const classPathsLength = classParts.length - startIndex;
|
|
if (classPathsLength === 0) {
|
|
return classPartObject.classGroupId;
|
|
}
|
|
const currentClassPart = classParts[startIndex];
|
|
const nextClassPartObject = classPartObject.nextPart.get(currentClassPart);
|
|
if (nextClassPartObject) {
|
|
const result = getGroupRecursive(classParts, startIndex + 1, nextClassPartObject);
|
|
if (result) return result;
|
|
}
|
|
const validators = classPartObject.validators;
|
|
if (validators === null) {
|
|
return undefined;
|
|
}
|
|
// Build classRest string efficiently by joining from startIndex onwards
|
|
const classRest = startIndex === 0 ? classParts.join(CLASS_PART_SEPARATOR) : classParts.slice(startIndex).join(CLASS_PART_SEPARATOR);
|
|
const validatorsLength = validators.length;
|
|
for(let i = 0; i < validatorsLength; i++){
|
|
const validatorObj = validators[i];
|
|
if (validatorObj.validator(classRest)) {
|
|
return validatorObj.classGroupId;
|
|
}
|
|
}
|
|
return undefined;
|
|
};
|
|
/**
|
|
* Get the class group ID for an arbitrary property.
|
|
*
|
|
* @param className - The class name to get the group ID for. Is expected to be string starting with `[` and ending with `]`.
|
|
*/ const getGroupIdForArbitraryProperty = (className)=>className.slice(1, -1).indexOf(':') === -1 ? undefined : (()=>{
|
|
const content = className.slice(1, -1);
|
|
const colonIndex = content.indexOf(':');
|
|
const property = content.slice(0, colonIndex);
|
|
return property ? ARBITRARY_PROPERTY_PREFIX + property : undefined;
|
|
})();
|
|
/**
|
|
* Exported for testing only
|
|
*/ const createClassMap = (config)=>{
|
|
const { theme, classGroups } = config;
|
|
return processClassGroups(classGroups, theme);
|
|
};
|
|
// Split into separate functions to maintain monomorphic call sites
|
|
const processClassGroups = (classGroups, theme)=>{
|
|
const classMap = createClassPartObject();
|
|
for(const classGroupId in classGroups){
|
|
const group = classGroups[classGroupId];
|
|
processClassesRecursively(group, classMap, classGroupId, theme);
|
|
}
|
|
return classMap;
|
|
};
|
|
const processClassesRecursively = (classGroup, classPartObject, classGroupId, theme)=>{
|
|
const len = classGroup.length;
|
|
for(let i = 0; i < len; i++){
|
|
const classDefinition = classGroup[i];
|
|
processClassDefinition(classDefinition, classPartObject, classGroupId, theme);
|
|
}
|
|
};
|
|
// Split into separate functions for each type to maintain monomorphic call sites
|
|
const processClassDefinition = (classDefinition, classPartObject, classGroupId, theme)=>{
|
|
if (typeof classDefinition === 'string') {
|
|
processStringDefinition(classDefinition, classPartObject, classGroupId);
|
|
return;
|
|
}
|
|
if (typeof classDefinition === 'function') {
|
|
processFunctionDefinition(classDefinition, classPartObject, classGroupId, theme);
|
|
return;
|
|
}
|
|
processObjectDefinition(classDefinition, classPartObject, classGroupId, theme);
|
|
};
|
|
const processStringDefinition = (classDefinition, classPartObject, classGroupId)=>{
|
|
const classPartObjectToEdit = classDefinition === '' ? classPartObject : getPart(classPartObject, classDefinition);
|
|
classPartObjectToEdit.classGroupId = classGroupId;
|
|
};
|
|
const processFunctionDefinition = (classDefinition, classPartObject, classGroupId, theme)=>{
|
|
if (isThemeGetter(classDefinition)) {
|
|
processClassesRecursively(classDefinition(theme), classPartObject, classGroupId, theme);
|
|
return;
|
|
}
|
|
if (classPartObject.validators === null) {
|
|
classPartObject.validators = [];
|
|
}
|
|
classPartObject.validators.push(createClassValidatorObject(classGroupId, classDefinition));
|
|
};
|
|
const processObjectDefinition = (classDefinition, classPartObject, classGroupId, theme)=>{
|
|
const entries = Object.entries(classDefinition);
|
|
const len = entries.length;
|
|
for(let i = 0; i < len; i++){
|
|
const [key, value] = entries[i];
|
|
processClassesRecursively(value, getPart(classPartObject, key), classGroupId, theme);
|
|
}
|
|
};
|
|
const getPart = (classPartObject, path)=>{
|
|
let current = classPartObject;
|
|
const parts = path.split(CLASS_PART_SEPARATOR);
|
|
const len = parts.length;
|
|
for(let i = 0; i < len; i++){
|
|
const part = parts[i];
|
|
let next = current.nextPart.get(part);
|
|
if (!next) {
|
|
next = createClassPartObject();
|
|
current.nextPart.set(part, next);
|
|
}
|
|
current = next;
|
|
}
|
|
return current;
|
|
};
|
|
// Type guard maintains monomorphic check
|
|
const isThemeGetter = (func)=>'isThemeGetter' in func && func.isThemeGetter === true;
|
|
// LRU cache implementation using plain objects for simplicity
|
|
const createLruCache = (maxCacheSize)=>{
|
|
if (maxCacheSize < 1) {
|
|
return {
|
|
get: ()=>undefined,
|
|
set: ()=>{}
|
|
};
|
|
}
|
|
let cacheSize = 0;
|
|
let cache = Object.create(null);
|
|
let previousCache = Object.create(null);
|
|
const update = (key, value)=>{
|
|
cache[key] = value;
|
|
cacheSize++;
|
|
if (cacheSize > maxCacheSize) {
|
|
cacheSize = 0;
|
|
previousCache = cache;
|
|
cache = Object.create(null);
|
|
}
|
|
};
|
|
return {
|
|
get (key) {
|
|
let value = cache[key];
|
|
if (value !== undefined) {
|
|
return value;
|
|
}
|
|
if ((value = previousCache[key]) !== undefined) {
|
|
update(key, value);
|
|
return value;
|
|
}
|
|
},
|
|
set (key, value) {
|
|
if (key in cache) {
|
|
cache[key] = value;
|
|
} else {
|
|
update(key, value);
|
|
}
|
|
}
|
|
};
|
|
};
|
|
const IMPORTANT_MODIFIER = '!';
|
|
const MODIFIER_SEPARATOR = ':';
|
|
const EMPTY_MODIFIERS = [];
|
|
// Pre-allocated result object shape for consistency
|
|
const createResultObject = (modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition, isExternal)=>({
|
|
modifiers,
|
|
hasImportantModifier,
|
|
baseClassName,
|
|
maybePostfixModifierPosition,
|
|
isExternal
|
|
});
|
|
const createParseClassName = (config)=>{
|
|
const { prefix, experimentalParseClassName } = config;
|
|
/**
|
|
* Parse class name into parts.
|
|
*
|
|
* Inspired by `splitAtTopLevelOnly` used in Tailwind CSS
|
|
* @see https://github.com/tailwindlabs/tailwindcss/blob/v3.2.2/src/util/splitAtTopLevelOnly.js
|
|
*/ let parseClassName = (className)=>{
|
|
// Use simple array with push for better performance
|
|
const modifiers = [];
|
|
let bracketDepth = 0;
|
|
let parenDepth = 0;
|
|
let modifierStart = 0;
|
|
let postfixModifierPosition;
|
|
const len = className.length;
|
|
for(let index = 0; index < len; index++){
|
|
const currentCharacter = className[index];
|
|
if (bracketDepth === 0 && parenDepth === 0) {
|
|
if (currentCharacter === MODIFIER_SEPARATOR) {
|
|
modifiers.push(className.slice(modifierStart, index));
|
|
modifierStart = index + 1;
|
|
continue;
|
|
}
|
|
if (currentCharacter === '/') {
|
|
postfixModifierPosition = index;
|
|
continue;
|
|
}
|
|
}
|
|
if (currentCharacter === '[') bracketDepth++;
|
|
else if (currentCharacter === ']') bracketDepth--;
|
|
else if (currentCharacter === '(') parenDepth++;
|
|
else if (currentCharacter === ')') parenDepth--;
|
|
}
|
|
const baseClassNameWithImportantModifier = modifiers.length === 0 ? className : className.slice(modifierStart);
|
|
// Inline important modifier check
|
|
let baseClassName = baseClassNameWithImportantModifier;
|
|
let hasImportantModifier = false;
|
|
if (baseClassNameWithImportantModifier.endsWith(IMPORTANT_MODIFIER)) {
|
|
baseClassName = baseClassNameWithImportantModifier.slice(0, -1);
|
|
hasImportantModifier = true;
|
|
} else if (/**
|
|
* In Tailwind CSS v3 the important modifier was at the start of the base class name. This is still supported for legacy reasons.
|
|
* @see https://github.com/dcastil/tailwind-merge/issues/513#issuecomment-2614029864
|
|
*/ baseClassNameWithImportantModifier.startsWith(IMPORTANT_MODIFIER)) {
|
|
baseClassName = baseClassNameWithImportantModifier.slice(1);
|
|
hasImportantModifier = true;
|
|
}
|
|
const maybePostfixModifierPosition = postfixModifierPosition && postfixModifierPosition > modifierStart ? postfixModifierPosition - modifierStart : undefined;
|
|
return createResultObject(modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition);
|
|
};
|
|
if (prefix) {
|
|
const fullPrefix = prefix + MODIFIER_SEPARATOR;
|
|
const parseClassNameOriginal = parseClassName;
|
|
parseClassName = (className)=>className.startsWith(fullPrefix) ? parseClassNameOriginal(className.slice(fullPrefix.length)) : createResultObject(EMPTY_MODIFIERS, false, className, undefined, true);
|
|
}
|
|
if (experimentalParseClassName) {
|
|
const parseClassNameOriginal = parseClassName;
|
|
parseClassName = (className)=>experimentalParseClassName({
|
|
className,
|
|
parseClassName: parseClassNameOriginal
|
|
});
|
|
}
|
|
return parseClassName;
|
|
};
|
|
/**
|
|
* Sorts modifiers according to following schema:
|
|
* - Predefined modifiers are sorted alphabetically
|
|
* - When an arbitrary variant appears, it must be preserved which modifiers are before and after it
|
|
*/ const createSortModifiers = (config)=>{
|
|
// Pre-compute weights for all known modifiers for O(1) comparison
|
|
const modifierWeights = new Map();
|
|
// Assign weights to sensitive modifiers (highest priority, but preserve order)
|
|
config.orderSensitiveModifiers.forEach((mod, index)=>{
|
|
modifierWeights.set(mod, 1000000 + index); // High weights for sensitive mods
|
|
});
|
|
return (modifiers)=>{
|
|
const result = [];
|
|
let currentSegment = [];
|
|
// Process modifiers in one pass
|
|
for(let i = 0; i < modifiers.length; i++){
|
|
const modifier = modifiers[i];
|
|
// Check if modifier is sensitive (starts with '[' or in orderSensitiveModifiers)
|
|
const isArbitrary = modifier[0] === '[';
|
|
const isOrderSensitive = modifierWeights.has(modifier);
|
|
if (isArbitrary || isOrderSensitive) {
|
|
// Sort and flush current segment alphabetically
|
|
if (currentSegment.length > 0) {
|
|
currentSegment.sort();
|
|
result.push(...currentSegment);
|
|
currentSegment = [];
|
|
}
|
|
result.push(modifier);
|
|
} else {
|
|
// Regular modifier - add to current segment for batch sorting
|
|
currentSegment.push(modifier);
|
|
}
|
|
}
|
|
// Sort and add any remaining segment items
|
|
if (currentSegment.length > 0) {
|
|
currentSegment.sort();
|
|
result.push(...currentSegment);
|
|
}
|
|
return result;
|
|
};
|
|
};
|
|
const createConfigUtils = (config)=>({
|
|
cache: createLruCache(config.cacheSize),
|
|
parseClassName: createParseClassName(config),
|
|
sortModifiers: createSortModifiers(config),
|
|
...createClassGroupUtils(config)
|
|
});
|
|
const SPLIT_CLASSES_REGEX = /\s+/;
|
|
const mergeClassList = (classList, configUtils)=>{
|
|
const { parseClassName, getClassGroupId, getConflictingClassGroupIds, sortModifiers } = configUtils;
|
|
/**
|
|
* Set of classGroupIds in following format:
|
|
* `{importantModifier}{variantModifiers}{classGroupId}`
|
|
* @example 'float'
|
|
* @example 'hover:focus:bg-color'
|
|
* @example 'md:!pr'
|
|
*/ const classGroupsInConflict = [];
|
|
const classNames = classList.trim().split(SPLIT_CLASSES_REGEX);
|
|
let result = '';
|
|
for(let index = classNames.length - 1; index >= 0; index -= 1){
|
|
const originalClassName = classNames[index];
|
|
const { isExternal, modifiers, hasImportantModifier, baseClassName, maybePostfixModifierPosition } = parseClassName(originalClassName);
|
|
if (isExternal) {
|
|
result = originalClassName + (result.length > 0 ? ' ' + result : result);
|
|
continue;
|
|
}
|
|
let hasPostfixModifier = !!maybePostfixModifierPosition;
|
|
let classGroupId = getClassGroupId(hasPostfixModifier ? baseClassName.substring(0, maybePostfixModifierPosition) : baseClassName);
|
|
if (!classGroupId) {
|
|
if (!hasPostfixModifier) {
|
|
// Not a Tailwind class
|
|
result = originalClassName + (result.length > 0 ? ' ' + result : result);
|
|
continue;
|
|
}
|
|
classGroupId = getClassGroupId(baseClassName);
|
|
if (!classGroupId) {
|
|
// Not a Tailwind class
|
|
result = originalClassName + (result.length > 0 ? ' ' + result : result);
|
|
continue;
|
|
}
|
|
hasPostfixModifier = false;
|
|
}
|
|
// Fast path: skip sorting for empty or single modifier
|
|
const variantModifier = modifiers.length === 0 ? '' : modifiers.length === 1 ? modifiers[0] : sortModifiers(modifiers).join(':');
|
|
const modifierId = hasImportantModifier ? variantModifier + IMPORTANT_MODIFIER : variantModifier;
|
|
const classId = modifierId + classGroupId;
|
|
if (classGroupsInConflict.indexOf(classId) > -1) {
|
|
continue;
|
|
}
|
|
classGroupsInConflict.push(classId);
|
|
const conflictGroups = getConflictingClassGroupIds(classGroupId, hasPostfixModifier);
|
|
for(let i = 0; i < conflictGroups.length; ++i){
|
|
const group = conflictGroups[i];
|
|
classGroupsInConflict.push(modifierId + group);
|
|
}
|
|
// Tailwind class not in conflict
|
|
result = originalClassName + (result.length > 0 ? ' ' + result : result);
|
|
}
|
|
return result;
|
|
};
|
|
/**
|
|
* The code in this file is copied from https://github.com/lukeed/clsx and modified to suit the needs of tailwind-merge better.
|
|
*
|
|
* Specifically:
|
|
* - Runtime code from https://github.com/lukeed/clsx/blob/v1.2.1/src/index.js
|
|
* - TypeScript types from https://github.com/lukeed/clsx/blob/v1.2.1/clsx.d.ts
|
|
*
|
|
* Original code has MIT license: Copyright (c) Luke Edwards <luke.edwards05@gmail.com> (lukeed.com)
|
|
*/ const twJoin = (...classLists)=>{
|
|
let index = 0;
|
|
let argument;
|
|
let resolvedValue;
|
|
let string = '';
|
|
while(index < classLists.length){
|
|
if (argument = classLists[index++]) {
|
|
if (resolvedValue = toValue(argument)) {
|
|
string && (string += ' ');
|
|
string += resolvedValue;
|
|
}
|
|
}
|
|
}
|
|
return string;
|
|
};
|
|
const toValue = (mix)=>{
|
|
// Fast path for strings
|
|
if (typeof mix === 'string') {
|
|
return mix;
|
|
}
|
|
let resolvedValue;
|
|
let string = '';
|
|
for(let k = 0; k < mix.length; k++){
|
|
if (mix[k]) {
|
|
if (resolvedValue = toValue(mix[k])) {
|
|
string && (string += ' ');
|
|
string += resolvedValue;
|
|
}
|
|
}
|
|
}
|
|
return string;
|
|
};
|
|
const createTailwindMerge = (createConfigFirst, ...createConfigRest)=>{
|
|
let configUtils;
|
|
let cacheGet;
|
|
let cacheSet;
|
|
let functionToCall;
|
|
const initTailwindMerge = (classList)=>{
|
|
const config = createConfigRest.reduce((previousConfig, createConfigCurrent)=>createConfigCurrent(previousConfig), createConfigFirst());
|
|
configUtils = createConfigUtils(config);
|
|
cacheGet = configUtils.cache.get;
|
|
cacheSet = configUtils.cache.set;
|
|
functionToCall = tailwindMerge;
|
|
return tailwindMerge(classList);
|
|
};
|
|
const tailwindMerge = (classList)=>{
|
|
const cachedResult = cacheGet(classList);
|
|
if (cachedResult) {
|
|
return cachedResult;
|
|
}
|
|
const result = mergeClassList(classList, configUtils);
|
|
cacheSet(classList, result);
|
|
return result;
|
|
};
|
|
functionToCall = initTailwindMerge;
|
|
return (...args)=>functionToCall(twJoin(...args));
|
|
};
|
|
const fallbackThemeArr = [];
|
|
const fromTheme = (key)=>{
|
|
const themeGetter = (theme)=>theme[key] || fallbackThemeArr;
|
|
themeGetter.isThemeGetter = true;
|
|
return themeGetter;
|
|
};
|
|
const arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i;
|
|
const arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i;
|
|
const fractionRegex = /^\d+\/\d+$/;
|
|
const tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/;
|
|
const lengthUnitRegex = /\d+(%|px|r?em|[sdl]?v([hwib]|min|max)|pt|pc|in|cm|mm|cap|ch|ex|r?lh|cq(w|h|i|b|min|max))|\b(calc|min|max|clamp)\(.+\)|^0$/;
|
|
const colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch)|color-mix)\(.+\)$/;
|
|
// Shadow always begins with x and y offset separated by underscore optionally prepended by inset
|
|
const shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/;
|
|
const imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/;
|
|
const isFraction = (value)=>fractionRegex.test(value);
|
|
const isNumber = (value)=>!!value && !Number.isNaN(Number(value));
|
|
const isInteger = (value)=>!!value && Number.isInteger(Number(value));
|
|
const isPercent = (value)=>value.endsWith('%') && isNumber(value.slice(0, -1));
|
|
const isTshirtSize = (value)=>tshirtUnitRegex.test(value);
|
|
const isAny = ()=>true;
|
|
const isLengthOnly = (value)=>// `colorFunctionRegex` check is necessary because color functions can have percentages in them which which would be incorrectly classified as lengths.
|
|
// For example, `hsl(0 0% 0%)` would be classified as a length without this check.
|
|
// I could also use lookbehind assertion in `lengthUnitRegex` but that isn't supported widely enough.
|
|
lengthUnitRegex.test(value) && !colorFunctionRegex.test(value);
|
|
const isNever = ()=>false;
|
|
const isShadow = (value)=>shadowRegex.test(value);
|
|
const isImage = (value)=>imageRegex.test(value);
|
|
const isAnyNonArbitrary = (value)=>!isArbitraryValue(value) && !isArbitraryVariable(value);
|
|
const isArbitrarySize = (value)=>getIsArbitraryValue(value, isLabelSize, isNever);
|
|
const isArbitraryValue = (value)=>arbitraryValueRegex.test(value);
|
|
const isArbitraryLength = (value)=>getIsArbitraryValue(value, isLabelLength, isLengthOnly);
|
|
const isArbitraryNumber = (value)=>getIsArbitraryValue(value, isLabelNumber, isNumber);
|
|
const isArbitraryPosition = (value)=>getIsArbitraryValue(value, isLabelPosition, isNever);
|
|
const isArbitraryImage = (value)=>getIsArbitraryValue(value, isLabelImage, isImage);
|
|
const isArbitraryShadow = (value)=>getIsArbitraryValue(value, isLabelShadow, isShadow);
|
|
const isArbitraryVariable = (value)=>arbitraryVariableRegex.test(value);
|
|
const isArbitraryVariableLength = (value)=>getIsArbitraryVariable(value, isLabelLength);
|
|
const isArbitraryVariableFamilyName = (value)=>getIsArbitraryVariable(value, isLabelFamilyName);
|
|
const isArbitraryVariablePosition = (value)=>getIsArbitraryVariable(value, isLabelPosition);
|
|
const isArbitraryVariableSize = (value)=>getIsArbitraryVariable(value, isLabelSize);
|
|
const isArbitraryVariableImage = (value)=>getIsArbitraryVariable(value, isLabelImage);
|
|
const isArbitraryVariableShadow = (value)=>getIsArbitraryVariable(value, isLabelShadow, true);
|
|
// Helpers
|
|
const getIsArbitraryValue = (value, testLabel, testValue)=>{
|
|
const result = arbitraryValueRegex.exec(value);
|
|
if (result) {
|
|
if (result[1]) {
|
|
return testLabel(result[1]);
|
|
}
|
|
return testValue(result[2]);
|
|
}
|
|
return false;
|
|
};
|
|
const getIsArbitraryVariable = (value, testLabel, shouldMatchNoLabel = false)=>{
|
|
const result = arbitraryVariableRegex.exec(value);
|
|
if (result) {
|
|
if (result[1]) {
|
|
return testLabel(result[1]);
|
|
}
|
|
return shouldMatchNoLabel;
|
|
}
|
|
return false;
|
|
};
|
|
// Labels
|
|
const isLabelPosition = (label)=>label === 'position' || label === 'percentage';
|
|
const isLabelImage = (label)=>label === 'image' || label === 'url';
|
|
const isLabelSize = (label)=>label === 'length' || label === 'size' || label === 'bg-size';
|
|
const isLabelLength = (label)=>label === 'length';
|
|
const isLabelNumber = (label)=>label === 'number';
|
|
const isLabelFamilyName = (label)=>label === 'family-name';
|
|
const isLabelShadow = (label)=>label === 'shadow';
|
|
const validators = /*#__PURE__*/ Object.defineProperty({
|
|
__proto__: null,
|
|
isAny,
|
|
isAnyNonArbitrary,
|
|
isArbitraryImage,
|
|
isArbitraryLength,
|
|
isArbitraryNumber,
|
|
isArbitraryPosition,
|
|
isArbitraryShadow,
|
|
isArbitrarySize,
|
|
isArbitraryValue,
|
|
isArbitraryVariable,
|
|
isArbitraryVariableFamilyName,
|
|
isArbitraryVariableImage,
|
|
isArbitraryVariableLength,
|
|
isArbitraryVariablePosition,
|
|
isArbitraryVariableShadow,
|
|
isArbitraryVariableSize,
|
|
isFraction,
|
|
isInteger,
|
|
isNumber,
|
|
isPercent,
|
|
isTshirtSize
|
|
}, Symbol.toStringTag, {
|
|
value: 'Module'
|
|
});
|
|
const getDefaultConfig = ()=>{
|
|
/**
|
|
* Theme getters for theme variable namespaces
|
|
* @see https://tailwindcss.com/docs/theme#theme-variable-namespaces
|
|
*/ /***/ const themeColor = fromTheme('color');
|
|
const themeFont = fromTheme('font');
|
|
const themeText = fromTheme('text');
|
|
const themeFontWeight = fromTheme('font-weight');
|
|
const themeTracking = fromTheme('tracking');
|
|
const themeLeading = fromTheme('leading');
|
|
const themeBreakpoint = fromTheme('breakpoint');
|
|
const themeContainer = fromTheme('container');
|
|
const themeSpacing = fromTheme('spacing');
|
|
const themeRadius = fromTheme('radius');
|
|
const themeShadow = fromTheme('shadow');
|
|
const themeInsetShadow = fromTheme('inset-shadow');
|
|
const themeTextShadow = fromTheme('text-shadow');
|
|
const themeDropShadow = fromTheme('drop-shadow');
|
|
const themeBlur = fromTheme('blur');
|
|
const themePerspective = fromTheme('perspective');
|
|
const themeAspect = fromTheme('aspect');
|
|
const themeEase = fromTheme('ease');
|
|
const themeAnimate = fromTheme('animate');
|
|
/**
|
|
* Helpers to avoid repeating the same scales
|
|
*
|
|
* We use functions that create a new array every time they're called instead of static arrays.
|
|
* This ensures that users who modify any scale by mutating the array (e.g. with `array.push(element)`) don't accidentally mutate arrays in other parts of the config.
|
|
*/ /***/ const scaleBreak = ()=>[
|
|
'auto',
|
|
'avoid',
|
|
'all',
|
|
'avoid-page',
|
|
'page',
|
|
'left',
|
|
'right',
|
|
'column'
|
|
];
|
|
const scalePosition = ()=>[
|
|
'center',
|
|
'top',
|
|
'bottom',
|
|
'left',
|
|
'right',
|
|
'top-left',
|
|
// Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
|
|
'left-top',
|
|
'top-right',
|
|
// Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
|
|
'right-top',
|
|
'bottom-right',
|
|
// Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
|
|
'right-bottom',
|
|
'bottom-left',
|
|
// Deprecated since Tailwind CSS v4.1.0, see https://github.com/tailwindlabs/tailwindcss/pull/17378
|
|
'left-bottom'
|
|
];
|
|
const scalePositionWithArbitrary = ()=>[
|
|
...scalePosition(),
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleOverflow = ()=>[
|
|
'auto',
|
|
'hidden',
|
|
'clip',
|
|
'visible',
|
|
'scroll'
|
|
];
|
|
const scaleOverscroll = ()=>[
|
|
'auto',
|
|
'contain',
|
|
'none'
|
|
];
|
|
const scaleUnambiguousSpacing = ()=>[
|
|
isArbitraryVariable,
|
|
isArbitraryValue,
|
|
themeSpacing
|
|
];
|
|
const scaleInset = ()=>[
|
|
isFraction,
|
|
'full',
|
|
'auto',
|
|
...scaleUnambiguousSpacing()
|
|
];
|
|
const scaleGridTemplateColsRows = ()=>[
|
|
isInteger,
|
|
'none',
|
|
'subgrid',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleGridColRowStartAndEnd = ()=>[
|
|
'auto',
|
|
{
|
|
span: [
|
|
'full',
|
|
isInteger,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
},
|
|
isInteger,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleGridColRowStartOrEnd = ()=>[
|
|
isInteger,
|
|
'auto',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleGridAutoColsRows = ()=>[
|
|
'auto',
|
|
'min',
|
|
'max',
|
|
'fr',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleAlignPrimaryAxis = ()=>[
|
|
'start',
|
|
'end',
|
|
'center',
|
|
'between',
|
|
'around',
|
|
'evenly',
|
|
'stretch',
|
|
'baseline',
|
|
'center-safe',
|
|
'end-safe'
|
|
];
|
|
const scaleAlignSecondaryAxis = ()=>[
|
|
'start',
|
|
'end',
|
|
'center',
|
|
'stretch',
|
|
'center-safe',
|
|
'end-safe'
|
|
];
|
|
const scaleMargin = ()=>[
|
|
'auto',
|
|
...scaleUnambiguousSpacing()
|
|
];
|
|
const scaleSizing = ()=>[
|
|
isFraction,
|
|
'auto',
|
|
'full',
|
|
'dvw',
|
|
'dvh',
|
|
'lvw',
|
|
'lvh',
|
|
'svw',
|
|
'svh',
|
|
'min',
|
|
'max',
|
|
'fit',
|
|
...scaleUnambiguousSpacing()
|
|
];
|
|
const scaleColor = ()=>[
|
|
themeColor,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleBgPosition = ()=>[
|
|
...scalePosition(),
|
|
isArbitraryVariablePosition,
|
|
isArbitraryPosition,
|
|
{
|
|
position: [
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
];
|
|
const scaleBgRepeat = ()=>[
|
|
'no-repeat',
|
|
{
|
|
repeat: [
|
|
'',
|
|
'x',
|
|
'y',
|
|
'space',
|
|
'round'
|
|
]
|
|
}
|
|
];
|
|
const scaleBgSize = ()=>[
|
|
'auto',
|
|
'cover',
|
|
'contain',
|
|
isArbitraryVariableSize,
|
|
isArbitrarySize,
|
|
{
|
|
size: [
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
];
|
|
const scaleGradientStopPosition = ()=>[
|
|
isPercent,
|
|
isArbitraryVariableLength,
|
|
isArbitraryLength
|
|
];
|
|
const scaleRadius = ()=>[
|
|
// Deprecated since Tailwind CSS v4.0.0
|
|
'',
|
|
'none',
|
|
'full',
|
|
themeRadius,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleBorderWidth = ()=>[
|
|
'',
|
|
isNumber,
|
|
isArbitraryVariableLength,
|
|
isArbitraryLength
|
|
];
|
|
const scaleLineStyle = ()=>[
|
|
'solid',
|
|
'dashed',
|
|
'dotted',
|
|
'double'
|
|
];
|
|
const scaleBlendMode = ()=>[
|
|
'normal',
|
|
'multiply',
|
|
'screen',
|
|
'overlay',
|
|
'darken',
|
|
'lighten',
|
|
'color-dodge',
|
|
'color-burn',
|
|
'hard-light',
|
|
'soft-light',
|
|
'difference',
|
|
'exclusion',
|
|
'hue',
|
|
'saturation',
|
|
'color',
|
|
'luminosity'
|
|
];
|
|
const scaleMaskImagePosition = ()=>[
|
|
isNumber,
|
|
isPercent,
|
|
isArbitraryVariablePosition,
|
|
isArbitraryPosition
|
|
];
|
|
const scaleBlur = ()=>[
|
|
// Deprecated since Tailwind CSS v4.0.0
|
|
'',
|
|
'none',
|
|
themeBlur,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleRotate = ()=>[
|
|
'none',
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleScale = ()=>[
|
|
'none',
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleSkew = ()=>[
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
];
|
|
const scaleTranslate = ()=>[
|
|
isFraction,
|
|
'full',
|
|
...scaleUnambiguousSpacing()
|
|
];
|
|
return {
|
|
cacheSize: 500,
|
|
theme: {
|
|
animate: [
|
|
'spin',
|
|
'ping',
|
|
'pulse',
|
|
'bounce'
|
|
],
|
|
aspect: [
|
|
'video'
|
|
],
|
|
blur: [
|
|
isTshirtSize
|
|
],
|
|
breakpoint: [
|
|
isTshirtSize
|
|
],
|
|
color: [
|
|
isAny
|
|
],
|
|
container: [
|
|
isTshirtSize
|
|
],
|
|
'drop-shadow': [
|
|
isTshirtSize
|
|
],
|
|
ease: [
|
|
'in',
|
|
'out',
|
|
'in-out'
|
|
],
|
|
font: [
|
|
isAnyNonArbitrary
|
|
],
|
|
'font-weight': [
|
|
'thin',
|
|
'extralight',
|
|
'light',
|
|
'normal',
|
|
'medium',
|
|
'semibold',
|
|
'bold',
|
|
'extrabold',
|
|
'black'
|
|
],
|
|
'inset-shadow': [
|
|
isTshirtSize
|
|
],
|
|
leading: [
|
|
'none',
|
|
'tight',
|
|
'snug',
|
|
'normal',
|
|
'relaxed',
|
|
'loose'
|
|
],
|
|
perspective: [
|
|
'dramatic',
|
|
'near',
|
|
'normal',
|
|
'midrange',
|
|
'distant',
|
|
'none'
|
|
],
|
|
radius: [
|
|
isTshirtSize
|
|
],
|
|
shadow: [
|
|
isTshirtSize
|
|
],
|
|
spacing: [
|
|
'px',
|
|
isNumber
|
|
],
|
|
text: [
|
|
isTshirtSize
|
|
],
|
|
'text-shadow': [
|
|
isTshirtSize
|
|
],
|
|
tracking: [
|
|
'tighter',
|
|
'tight',
|
|
'normal',
|
|
'wide',
|
|
'wider',
|
|
'widest'
|
|
]
|
|
},
|
|
classGroups: {
|
|
// --------------
|
|
// --- Layout ---
|
|
// --------------
|
|
/**
|
|
* Aspect Ratio
|
|
* @see https://tailwindcss.com/docs/aspect-ratio
|
|
*/ aspect: [
|
|
{
|
|
aspect: [
|
|
'auto',
|
|
'square',
|
|
isFraction,
|
|
isArbitraryValue,
|
|
isArbitraryVariable,
|
|
themeAspect
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Container
|
|
* @see https://tailwindcss.com/docs/container
|
|
* @deprecated since Tailwind CSS v4.0.0
|
|
*/ container: [
|
|
'container'
|
|
],
|
|
/**
|
|
* Columns
|
|
* @see https://tailwindcss.com/docs/columns
|
|
*/ columns: [
|
|
{
|
|
columns: [
|
|
isNumber,
|
|
isArbitraryValue,
|
|
isArbitraryVariable,
|
|
themeContainer
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Break After
|
|
* @see https://tailwindcss.com/docs/break-after
|
|
*/ 'break-after': [
|
|
{
|
|
'break-after': scaleBreak()
|
|
}
|
|
],
|
|
/**
|
|
* Break Before
|
|
* @see https://tailwindcss.com/docs/break-before
|
|
*/ 'break-before': [
|
|
{
|
|
'break-before': scaleBreak()
|
|
}
|
|
],
|
|
/**
|
|
* Break Inside
|
|
* @see https://tailwindcss.com/docs/break-inside
|
|
*/ 'break-inside': [
|
|
{
|
|
'break-inside': [
|
|
'auto',
|
|
'avoid',
|
|
'avoid-page',
|
|
'avoid-column'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Box Decoration Break
|
|
* @see https://tailwindcss.com/docs/box-decoration-break
|
|
*/ 'box-decoration': [
|
|
{
|
|
'box-decoration': [
|
|
'slice',
|
|
'clone'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Box Sizing
|
|
* @see https://tailwindcss.com/docs/box-sizing
|
|
*/ box: [
|
|
{
|
|
box: [
|
|
'border',
|
|
'content'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Display
|
|
* @see https://tailwindcss.com/docs/display
|
|
*/ display: [
|
|
'block',
|
|
'inline-block',
|
|
'inline',
|
|
'flex',
|
|
'inline-flex',
|
|
'table',
|
|
'inline-table',
|
|
'table-caption',
|
|
'table-cell',
|
|
'table-column',
|
|
'table-column-group',
|
|
'table-footer-group',
|
|
'table-header-group',
|
|
'table-row-group',
|
|
'table-row',
|
|
'flow-root',
|
|
'grid',
|
|
'inline-grid',
|
|
'contents',
|
|
'list-item',
|
|
'hidden'
|
|
],
|
|
/**
|
|
* Screen Reader Only
|
|
* @see https://tailwindcss.com/docs/display#screen-reader-only
|
|
*/ sr: [
|
|
'sr-only',
|
|
'not-sr-only'
|
|
],
|
|
/**
|
|
* Floats
|
|
* @see https://tailwindcss.com/docs/float
|
|
*/ float: [
|
|
{
|
|
float: [
|
|
'right',
|
|
'left',
|
|
'none',
|
|
'start',
|
|
'end'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Clear
|
|
* @see https://tailwindcss.com/docs/clear
|
|
*/ clear: [
|
|
{
|
|
clear: [
|
|
'left',
|
|
'right',
|
|
'both',
|
|
'none',
|
|
'start',
|
|
'end'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Isolation
|
|
* @see https://tailwindcss.com/docs/isolation
|
|
*/ isolation: [
|
|
'isolate',
|
|
'isolation-auto'
|
|
],
|
|
/**
|
|
* Object Fit
|
|
* @see https://tailwindcss.com/docs/object-fit
|
|
*/ 'object-fit': [
|
|
{
|
|
object: [
|
|
'contain',
|
|
'cover',
|
|
'fill',
|
|
'none',
|
|
'scale-down'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Object Position
|
|
* @see https://tailwindcss.com/docs/object-position
|
|
*/ 'object-position': [
|
|
{
|
|
object: scalePositionWithArbitrary()
|
|
}
|
|
],
|
|
/**
|
|
* Overflow
|
|
* @see https://tailwindcss.com/docs/overflow
|
|
*/ overflow: [
|
|
{
|
|
overflow: scaleOverflow()
|
|
}
|
|
],
|
|
/**
|
|
* Overflow X
|
|
* @see https://tailwindcss.com/docs/overflow
|
|
*/ 'overflow-x': [
|
|
{
|
|
'overflow-x': scaleOverflow()
|
|
}
|
|
],
|
|
/**
|
|
* Overflow Y
|
|
* @see https://tailwindcss.com/docs/overflow
|
|
*/ 'overflow-y': [
|
|
{
|
|
'overflow-y': scaleOverflow()
|
|
}
|
|
],
|
|
/**
|
|
* Overscroll Behavior
|
|
* @see https://tailwindcss.com/docs/overscroll-behavior
|
|
*/ overscroll: [
|
|
{
|
|
overscroll: scaleOverscroll()
|
|
}
|
|
],
|
|
/**
|
|
* Overscroll Behavior X
|
|
* @see https://tailwindcss.com/docs/overscroll-behavior
|
|
*/ 'overscroll-x': [
|
|
{
|
|
'overscroll-x': scaleOverscroll()
|
|
}
|
|
],
|
|
/**
|
|
* Overscroll Behavior Y
|
|
* @see https://tailwindcss.com/docs/overscroll-behavior
|
|
*/ 'overscroll-y': [
|
|
{
|
|
'overscroll-y': scaleOverscroll()
|
|
}
|
|
],
|
|
/**
|
|
* Position
|
|
* @see https://tailwindcss.com/docs/position
|
|
*/ position: [
|
|
'static',
|
|
'fixed',
|
|
'absolute',
|
|
'relative',
|
|
'sticky'
|
|
],
|
|
/**
|
|
* Top / Right / Bottom / Left
|
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
*/ inset: [
|
|
{
|
|
inset: scaleInset()
|
|
}
|
|
],
|
|
/**
|
|
* Right / Left
|
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
*/ 'inset-x': [
|
|
{
|
|
'inset-x': scaleInset()
|
|
}
|
|
],
|
|
/**
|
|
* Top / Bottom
|
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
*/ 'inset-y': [
|
|
{
|
|
'inset-y': scaleInset()
|
|
}
|
|
],
|
|
/**
|
|
* Start
|
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
*/ start: [
|
|
{
|
|
start: scaleInset()
|
|
}
|
|
],
|
|
/**
|
|
* End
|
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
*/ end: [
|
|
{
|
|
end: scaleInset()
|
|
}
|
|
],
|
|
/**
|
|
* Top
|
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
*/ top: [
|
|
{
|
|
top: scaleInset()
|
|
}
|
|
],
|
|
/**
|
|
* Right
|
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
*/ right: [
|
|
{
|
|
right: scaleInset()
|
|
}
|
|
],
|
|
/**
|
|
* Bottom
|
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
*/ bottom: [
|
|
{
|
|
bottom: scaleInset()
|
|
}
|
|
],
|
|
/**
|
|
* Left
|
|
* @see https://tailwindcss.com/docs/top-right-bottom-left
|
|
*/ left: [
|
|
{
|
|
left: scaleInset()
|
|
}
|
|
],
|
|
/**
|
|
* Visibility
|
|
* @see https://tailwindcss.com/docs/visibility
|
|
*/ visibility: [
|
|
'visible',
|
|
'invisible',
|
|
'collapse'
|
|
],
|
|
/**
|
|
* Z-Index
|
|
* @see https://tailwindcss.com/docs/z-index
|
|
*/ z: [
|
|
{
|
|
z: [
|
|
isInteger,
|
|
'auto',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
// ------------------------
|
|
// --- Flexbox and Grid ---
|
|
// ------------------------
|
|
/**
|
|
* Flex Basis
|
|
* @see https://tailwindcss.com/docs/flex-basis
|
|
*/ basis: [
|
|
{
|
|
basis: [
|
|
isFraction,
|
|
'full',
|
|
'auto',
|
|
themeContainer,
|
|
...scaleUnambiguousSpacing()
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Flex Direction
|
|
* @see https://tailwindcss.com/docs/flex-direction
|
|
*/ 'flex-direction': [
|
|
{
|
|
flex: [
|
|
'row',
|
|
'row-reverse',
|
|
'col',
|
|
'col-reverse'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Flex Wrap
|
|
* @see https://tailwindcss.com/docs/flex-wrap
|
|
*/ 'flex-wrap': [
|
|
{
|
|
flex: [
|
|
'nowrap',
|
|
'wrap',
|
|
'wrap-reverse'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Flex
|
|
* @see https://tailwindcss.com/docs/flex
|
|
*/ flex: [
|
|
{
|
|
flex: [
|
|
isNumber,
|
|
isFraction,
|
|
'auto',
|
|
'initial',
|
|
'none',
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Flex Grow
|
|
* @see https://tailwindcss.com/docs/flex-grow
|
|
*/ grow: [
|
|
{
|
|
grow: [
|
|
'',
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Flex Shrink
|
|
* @see https://tailwindcss.com/docs/flex-shrink
|
|
*/ shrink: [
|
|
{
|
|
shrink: [
|
|
'',
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Order
|
|
* @see https://tailwindcss.com/docs/order
|
|
*/ order: [
|
|
{
|
|
order: [
|
|
isInteger,
|
|
'first',
|
|
'last',
|
|
'none',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Grid Template Columns
|
|
* @see https://tailwindcss.com/docs/grid-template-columns
|
|
*/ 'grid-cols': [
|
|
{
|
|
'grid-cols': scaleGridTemplateColsRows()
|
|
}
|
|
],
|
|
/**
|
|
* Grid Column Start / End
|
|
* @see https://tailwindcss.com/docs/grid-column
|
|
*/ 'col-start-end': [
|
|
{
|
|
col: scaleGridColRowStartAndEnd()
|
|
}
|
|
],
|
|
/**
|
|
* Grid Column Start
|
|
* @see https://tailwindcss.com/docs/grid-column
|
|
*/ 'col-start': [
|
|
{
|
|
'col-start': scaleGridColRowStartOrEnd()
|
|
}
|
|
],
|
|
/**
|
|
* Grid Column End
|
|
* @see https://tailwindcss.com/docs/grid-column
|
|
*/ 'col-end': [
|
|
{
|
|
'col-end': scaleGridColRowStartOrEnd()
|
|
}
|
|
],
|
|
/**
|
|
* Grid Template Rows
|
|
* @see https://tailwindcss.com/docs/grid-template-rows
|
|
*/ 'grid-rows': [
|
|
{
|
|
'grid-rows': scaleGridTemplateColsRows()
|
|
}
|
|
],
|
|
/**
|
|
* Grid Row Start / End
|
|
* @see https://tailwindcss.com/docs/grid-row
|
|
*/ 'row-start-end': [
|
|
{
|
|
row: scaleGridColRowStartAndEnd()
|
|
}
|
|
],
|
|
/**
|
|
* Grid Row Start
|
|
* @see https://tailwindcss.com/docs/grid-row
|
|
*/ 'row-start': [
|
|
{
|
|
'row-start': scaleGridColRowStartOrEnd()
|
|
}
|
|
],
|
|
/**
|
|
* Grid Row End
|
|
* @see https://tailwindcss.com/docs/grid-row
|
|
*/ 'row-end': [
|
|
{
|
|
'row-end': scaleGridColRowStartOrEnd()
|
|
}
|
|
],
|
|
/**
|
|
* Grid Auto Flow
|
|
* @see https://tailwindcss.com/docs/grid-auto-flow
|
|
*/ 'grid-flow': [
|
|
{
|
|
'grid-flow': [
|
|
'row',
|
|
'col',
|
|
'dense',
|
|
'row-dense',
|
|
'col-dense'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Grid Auto Columns
|
|
* @see https://tailwindcss.com/docs/grid-auto-columns
|
|
*/ 'auto-cols': [
|
|
{
|
|
'auto-cols': scaleGridAutoColsRows()
|
|
}
|
|
],
|
|
/**
|
|
* Grid Auto Rows
|
|
* @see https://tailwindcss.com/docs/grid-auto-rows
|
|
*/ 'auto-rows': [
|
|
{
|
|
'auto-rows': scaleGridAutoColsRows()
|
|
}
|
|
],
|
|
/**
|
|
* Gap
|
|
* @see https://tailwindcss.com/docs/gap
|
|
*/ gap: [
|
|
{
|
|
gap: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Gap X
|
|
* @see https://tailwindcss.com/docs/gap
|
|
*/ 'gap-x': [
|
|
{
|
|
'gap-x': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Gap Y
|
|
* @see https://tailwindcss.com/docs/gap
|
|
*/ 'gap-y': [
|
|
{
|
|
'gap-y': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Justify Content
|
|
* @see https://tailwindcss.com/docs/justify-content
|
|
*/ 'justify-content': [
|
|
{
|
|
justify: [
|
|
...scaleAlignPrimaryAxis(),
|
|
'normal'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Justify Items
|
|
* @see https://tailwindcss.com/docs/justify-items
|
|
*/ 'justify-items': [
|
|
{
|
|
'justify-items': [
|
|
...scaleAlignSecondaryAxis(),
|
|
'normal'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Justify Self
|
|
* @see https://tailwindcss.com/docs/justify-self
|
|
*/ 'justify-self': [
|
|
{
|
|
'justify-self': [
|
|
'auto',
|
|
...scaleAlignSecondaryAxis()
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Align Content
|
|
* @see https://tailwindcss.com/docs/align-content
|
|
*/ 'align-content': [
|
|
{
|
|
content: [
|
|
'normal',
|
|
...scaleAlignPrimaryAxis()
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Align Items
|
|
* @see https://tailwindcss.com/docs/align-items
|
|
*/ 'align-items': [
|
|
{
|
|
items: [
|
|
...scaleAlignSecondaryAxis(),
|
|
{
|
|
baseline: [
|
|
'',
|
|
'last'
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Align Self
|
|
* @see https://tailwindcss.com/docs/align-self
|
|
*/ 'align-self': [
|
|
{
|
|
self: [
|
|
'auto',
|
|
...scaleAlignSecondaryAxis(),
|
|
{
|
|
baseline: [
|
|
'',
|
|
'last'
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Place Content
|
|
* @see https://tailwindcss.com/docs/place-content
|
|
*/ 'place-content': [
|
|
{
|
|
'place-content': scaleAlignPrimaryAxis()
|
|
}
|
|
],
|
|
/**
|
|
* Place Items
|
|
* @see https://tailwindcss.com/docs/place-items
|
|
*/ 'place-items': [
|
|
{
|
|
'place-items': [
|
|
...scaleAlignSecondaryAxis(),
|
|
'baseline'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Place Self
|
|
* @see https://tailwindcss.com/docs/place-self
|
|
*/ 'place-self': [
|
|
{
|
|
'place-self': [
|
|
'auto',
|
|
...scaleAlignSecondaryAxis()
|
|
]
|
|
}
|
|
],
|
|
// Spacing
|
|
/**
|
|
* Padding
|
|
* @see https://tailwindcss.com/docs/padding
|
|
*/ p: [
|
|
{
|
|
p: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Padding X
|
|
* @see https://tailwindcss.com/docs/padding
|
|
*/ px: [
|
|
{
|
|
px: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Padding Y
|
|
* @see https://tailwindcss.com/docs/padding
|
|
*/ py: [
|
|
{
|
|
py: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Padding Start
|
|
* @see https://tailwindcss.com/docs/padding
|
|
*/ ps: [
|
|
{
|
|
ps: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Padding End
|
|
* @see https://tailwindcss.com/docs/padding
|
|
*/ pe: [
|
|
{
|
|
pe: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Padding Top
|
|
* @see https://tailwindcss.com/docs/padding
|
|
*/ pt: [
|
|
{
|
|
pt: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Padding Right
|
|
* @see https://tailwindcss.com/docs/padding
|
|
*/ pr: [
|
|
{
|
|
pr: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Padding Bottom
|
|
* @see https://tailwindcss.com/docs/padding
|
|
*/ pb: [
|
|
{
|
|
pb: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Padding Left
|
|
* @see https://tailwindcss.com/docs/padding
|
|
*/ pl: [
|
|
{
|
|
pl: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Margin
|
|
* @see https://tailwindcss.com/docs/margin
|
|
*/ m: [
|
|
{
|
|
m: scaleMargin()
|
|
}
|
|
],
|
|
/**
|
|
* Margin X
|
|
* @see https://tailwindcss.com/docs/margin
|
|
*/ mx: [
|
|
{
|
|
mx: scaleMargin()
|
|
}
|
|
],
|
|
/**
|
|
* Margin Y
|
|
* @see https://tailwindcss.com/docs/margin
|
|
*/ my: [
|
|
{
|
|
my: scaleMargin()
|
|
}
|
|
],
|
|
/**
|
|
* Margin Start
|
|
* @see https://tailwindcss.com/docs/margin
|
|
*/ ms: [
|
|
{
|
|
ms: scaleMargin()
|
|
}
|
|
],
|
|
/**
|
|
* Margin End
|
|
* @see https://tailwindcss.com/docs/margin
|
|
*/ me: [
|
|
{
|
|
me: scaleMargin()
|
|
}
|
|
],
|
|
/**
|
|
* Margin Top
|
|
* @see https://tailwindcss.com/docs/margin
|
|
*/ mt: [
|
|
{
|
|
mt: scaleMargin()
|
|
}
|
|
],
|
|
/**
|
|
* Margin Right
|
|
* @see https://tailwindcss.com/docs/margin
|
|
*/ mr: [
|
|
{
|
|
mr: scaleMargin()
|
|
}
|
|
],
|
|
/**
|
|
* Margin Bottom
|
|
* @see https://tailwindcss.com/docs/margin
|
|
*/ mb: [
|
|
{
|
|
mb: scaleMargin()
|
|
}
|
|
],
|
|
/**
|
|
* Margin Left
|
|
* @see https://tailwindcss.com/docs/margin
|
|
*/ ml: [
|
|
{
|
|
ml: scaleMargin()
|
|
}
|
|
],
|
|
/**
|
|
* Space Between X
|
|
* @see https://tailwindcss.com/docs/margin#adding-space-between-children
|
|
*/ 'space-x': [
|
|
{
|
|
'space-x': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Space Between X Reverse
|
|
* @see https://tailwindcss.com/docs/margin#adding-space-between-children
|
|
*/ 'space-x-reverse': [
|
|
'space-x-reverse'
|
|
],
|
|
/**
|
|
* Space Between Y
|
|
* @see https://tailwindcss.com/docs/margin#adding-space-between-children
|
|
*/ 'space-y': [
|
|
{
|
|
'space-y': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Space Between Y Reverse
|
|
* @see https://tailwindcss.com/docs/margin#adding-space-between-children
|
|
*/ 'space-y-reverse': [
|
|
'space-y-reverse'
|
|
],
|
|
// --------------
|
|
// --- Sizing ---
|
|
// --------------
|
|
/**
|
|
* Size
|
|
* @see https://tailwindcss.com/docs/width#setting-both-width-and-height
|
|
*/ size: [
|
|
{
|
|
size: scaleSizing()
|
|
}
|
|
],
|
|
/**
|
|
* Width
|
|
* @see https://tailwindcss.com/docs/width
|
|
*/ w: [
|
|
{
|
|
w: [
|
|
themeContainer,
|
|
'screen',
|
|
...scaleSizing()
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Min-Width
|
|
* @see https://tailwindcss.com/docs/min-width
|
|
*/ 'min-w': [
|
|
{
|
|
'min-w': [
|
|
themeContainer,
|
|
'screen',
|
|
/** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ 'none',
|
|
...scaleSizing()
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Max-Width
|
|
* @see https://tailwindcss.com/docs/max-width
|
|
*/ 'max-w': [
|
|
{
|
|
'max-w': [
|
|
themeContainer,
|
|
'screen',
|
|
'none',
|
|
/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ 'prose',
|
|
/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ {
|
|
screen: [
|
|
themeBreakpoint
|
|
]
|
|
},
|
|
...scaleSizing()
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Height
|
|
* @see https://tailwindcss.com/docs/height
|
|
*/ h: [
|
|
{
|
|
h: [
|
|
'screen',
|
|
'lh',
|
|
...scaleSizing()
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Min-Height
|
|
* @see https://tailwindcss.com/docs/min-height
|
|
*/ 'min-h': [
|
|
{
|
|
'min-h': [
|
|
'screen',
|
|
'lh',
|
|
'none',
|
|
...scaleSizing()
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Max-Height
|
|
* @see https://tailwindcss.com/docs/max-height
|
|
*/ 'max-h': [
|
|
{
|
|
'max-h': [
|
|
'screen',
|
|
'lh',
|
|
...scaleSizing()
|
|
]
|
|
}
|
|
],
|
|
// ------------------
|
|
// --- Typography ---
|
|
// ------------------
|
|
/**
|
|
* Font Size
|
|
* @see https://tailwindcss.com/docs/font-size
|
|
*/ 'font-size': [
|
|
{
|
|
text: [
|
|
'base',
|
|
themeText,
|
|
isArbitraryVariableLength,
|
|
isArbitraryLength
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Font Smoothing
|
|
* @see https://tailwindcss.com/docs/font-smoothing
|
|
*/ 'font-smoothing': [
|
|
'antialiased',
|
|
'subpixel-antialiased'
|
|
],
|
|
/**
|
|
* Font Style
|
|
* @see https://tailwindcss.com/docs/font-style
|
|
*/ 'font-style': [
|
|
'italic',
|
|
'not-italic'
|
|
],
|
|
/**
|
|
* Font Weight
|
|
* @see https://tailwindcss.com/docs/font-weight
|
|
*/ 'font-weight': [
|
|
{
|
|
font: [
|
|
themeFontWeight,
|
|
isArbitraryVariable,
|
|
isArbitraryNumber
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Font Stretch
|
|
* @see https://tailwindcss.com/docs/font-stretch
|
|
*/ 'font-stretch': [
|
|
{
|
|
'font-stretch': [
|
|
'ultra-condensed',
|
|
'extra-condensed',
|
|
'condensed',
|
|
'semi-condensed',
|
|
'normal',
|
|
'semi-expanded',
|
|
'expanded',
|
|
'extra-expanded',
|
|
'ultra-expanded',
|
|
isPercent,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Font Family
|
|
* @see https://tailwindcss.com/docs/font-family
|
|
*/ 'font-family': [
|
|
{
|
|
font: [
|
|
isArbitraryVariableFamilyName,
|
|
isArbitraryValue,
|
|
themeFont
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Font Variant Numeric
|
|
* @see https://tailwindcss.com/docs/font-variant-numeric
|
|
*/ 'fvn-normal': [
|
|
'normal-nums'
|
|
],
|
|
/**
|
|
* Font Variant Numeric
|
|
* @see https://tailwindcss.com/docs/font-variant-numeric
|
|
*/ 'fvn-ordinal': [
|
|
'ordinal'
|
|
],
|
|
/**
|
|
* Font Variant Numeric
|
|
* @see https://tailwindcss.com/docs/font-variant-numeric
|
|
*/ 'fvn-slashed-zero': [
|
|
'slashed-zero'
|
|
],
|
|
/**
|
|
* Font Variant Numeric
|
|
* @see https://tailwindcss.com/docs/font-variant-numeric
|
|
*/ 'fvn-figure': [
|
|
'lining-nums',
|
|
'oldstyle-nums'
|
|
],
|
|
/**
|
|
* Font Variant Numeric
|
|
* @see https://tailwindcss.com/docs/font-variant-numeric
|
|
*/ 'fvn-spacing': [
|
|
'proportional-nums',
|
|
'tabular-nums'
|
|
],
|
|
/**
|
|
* Font Variant Numeric
|
|
* @see https://tailwindcss.com/docs/font-variant-numeric
|
|
*/ 'fvn-fraction': [
|
|
'diagonal-fractions',
|
|
'stacked-fractions'
|
|
],
|
|
/**
|
|
* Letter Spacing
|
|
* @see https://tailwindcss.com/docs/letter-spacing
|
|
*/ tracking: [
|
|
{
|
|
tracking: [
|
|
themeTracking,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Line Clamp
|
|
* @see https://tailwindcss.com/docs/line-clamp
|
|
*/ 'line-clamp': [
|
|
{
|
|
'line-clamp': [
|
|
isNumber,
|
|
'none',
|
|
isArbitraryVariable,
|
|
isArbitraryNumber
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Line Height
|
|
* @see https://tailwindcss.com/docs/line-height
|
|
*/ leading: [
|
|
{
|
|
leading: [
|
|
/** Deprecated since Tailwind CSS v4.0.0. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */ themeLeading,
|
|
...scaleUnambiguousSpacing()
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* List Style Image
|
|
* @see https://tailwindcss.com/docs/list-style-image
|
|
*/ 'list-image': [
|
|
{
|
|
'list-image': [
|
|
'none',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* List Style Position
|
|
* @see https://tailwindcss.com/docs/list-style-position
|
|
*/ 'list-style-position': [
|
|
{
|
|
list: [
|
|
'inside',
|
|
'outside'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* List Style Type
|
|
* @see https://tailwindcss.com/docs/list-style-type
|
|
*/ 'list-style-type': [
|
|
{
|
|
list: [
|
|
'disc',
|
|
'decimal',
|
|
'none',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Text Alignment
|
|
* @see https://tailwindcss.com/docs/text-align
|
|
*/ 'text-alignment': [
|
|
{
|
|
text: [
|
|
'left',
|
|
'center',
|
|
'right',
|
|
'justify',
|
|
'start',
|
|
'end'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Placeholder Color
|
|
* @deprecated since Tailwind CSS v3.0.0
|
|
* @see https://v3.tailwindcss.com/docs/placeholder-color
|
|
*/ 'placeholder-color': [
|
|
{
|
|
placeholder: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Text Color
|
|
* @see https://tailwindcss.com/docs/text-color
|
|
*/ 'text-color': [
|
|
{
|
|
text: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Text Decoration
|
|
* @see https://tailwindcss.com/docs/text-decoration
|
|
*/ 'text-decoration': [
|
|
'underline',
|
|
'overline',
|
|
'line-through',
|
|
'no-underline'
|
|
],
|
|
/**
|
|
* Text Decoration Style
|
|
* @see https://tailwindcss.com/docs/text-decoration-style
|
|
*/ 'text-decoration-style': [
|
|
{
|
|
decoration: [
|
|
...scaleLineStyle(),
|
|
'wavy'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Text Decoration Thickness
|
|
* @see https://tailwindcss.com/docs/text-decoration-thickness
|
|
*/ 'text-decoration-thickness': [
|
|
{
|
|
decoration: [
|
|
isNumber,
|
|
'from-font',
|
|
'auto',
|
|
isArbitraryVariable,
|
|
isArbitraryLength
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Text Decoration Color
|
|
* @see https://tailwindcss.com/docs/text-decoration-color
|
|
*/ 'text-decoration-color': [
|
|
{
|
|
decoration: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Text Underline Offset
|
|
* @see https://tailwindcss.com/docs/text-underline-offset
|
|
*/ 'underline-offset': [
|
|
{
|
|
'underline-offset': [
|
|
isNumber,
|
|
'auto',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Text Transform
|
|
* @see https://tailwindcss.com/docs/text-transform
|
|
*/ 'text-transform': [
|
|
'uppercase',
|
|
'lowercase',
|
|
'capitalize',
|
|
'normal-case'
|
|
],
|
|
/**
|
|
* Text Overflow
|
|
* @see https://tailwindcss.com/docs/text-overflow
|
|
*/ 'text-overflow': [
|
|
'truncate',
|
|
'text-ellipsis',
|
|
'text-clip'
|
|
],
|
|
/**
|
|
* Text Wrap
|
|
* @see https://tailwindcss.com/docs/text-wrap
|
|
*/ 'text-wrap': [
|
|
{
|
|
text: [
|
|
'wrap',
|
|
'nowrap',
|
|
'balance',
|
|
'pretty'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Text Indent
|
|
* @see https://tailwindcss.com/docs/text-indent
|
|
*/ indent: [
|
|
{
|
|
indent: scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Vertical Alignment
|
|
* @see https://tailwindcss.com/docs/vertical-align
|
|
*/ 'vertical-align': [
|
|
{
|
|
align: [
|
|
'baseline',
|
|
'top',
|
|
'middle',
|
|
'bottom',
|
|
'text-top',
|
|
'text-bottom',
|
|
'sub',
|
|
'super',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Whitespace
|
|
* @see https://tailwindcss.com/docs/whitespace
|
|
*/ whitespace: [
|
|
{
|
|
whitespace: [
|
|
'normal',
|
|
'nowrap',
|
|
'pre',
|
|
'pre-line',
|
|
'pre-wrap',
|
|
'break-spaces'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Word Break
|
|
* @see https://tailwindcss.com/docs/word-break
|
|
*/ break: [
|
|
{
|
|
break: [
|
|
'normal',
|
|
'words',
|
|
'all',
|
|
'keep'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Overflow Wrap
|
|
* @see https://tailwindcss.com/docs/overflow-wrap
|
|
*/ wrap: [
|
|
{
|
|
wrap: [
|
|
'break-word',
|
|
'anywhere',
|
|
'normal'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Hyphens
|
|
* @see https://tailwindcss.com/docs/hyphens
|
|
*/ hyphens: [
|
|
{
|
|
hyphens: [
|
|
'none',
|
|
'manual',
|
|
'auto'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Content
|
|
* @see https://tailwindcss.com/docs/content
|
|
*/ content: [
|
|
{
|
|
content: [
|
|
'none',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
// -------------------
|
|
// --- Backgrounds ---
|
|
// -------------------
|
|
/**
|
|
* Background Attachment
|
|
* @see https://tailwindcss.com/docs/background-attachment
|
|
*/ 'bg-attachment': [
|
|
{
|
|
bg: [
|
|
'fixed',
|
|
'local',
|
|
'scroll'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Background Clip
|
|
* @see https://tailwindcss.com/docs/background-clip
|
|
*/ 'bg-clip': [
|
|
{
|
|
'bg-clip': [
|
|
'border',
|
|
'padding',
|
|
'content',
|
|
'text'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Background Origin
|
|
* @see https://tailwindcss.com/docs/background-origin
|
|
*/ 'bg-origin': [
|
|
{
|
|
'bg-origin': [
|
|
'border',
|
|
'padding',
|
|
'content'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Background Position
|
|
* @see https://tailwindcss.com/docs/background-position
|
|
*/ 'bg-position': [
|
|
{
|
|
bg: scaleBgPosition()
|
|
}
|
|
],
|
|
/**
|
|
* Background Repeat
|
|
* @see https://tailwindcss.com/docs/background-repeat
|
|
*/ 'bg-repeat': [
|
|
{
|
|
bg: scaleBgRepeat()
|
|
}
|
|
],
|
|
/**
|
|
* Background Size
|
|
* @see https://tailwindcss.com/docs/background-size
|
|
*/ 'bg-size': [
|
|
{
|
|
bg: scaleBgSize()
|
|
}
|
|
],
|
|
/**
|
|
* Background Image
|
|
* @see https://tailwindcss.com/docs/background-image
|
|
*/ 'bg-image': [
|
|
{
|
|
bg: [
|
|
'none',
|
|
{
|
|
linear: [
|
|
{
|
|
to: [
|
|
't',
|
|
'tr',
|
|
'r',
|
|
'br',
|
|
'b',
|
|
'bl',
|
|
'l',
|
|
'tl'
|
|
]
|
|
},
|
|
isInteger,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
],
|
|
radial: [
|
|
'',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
],
|
|
conic: [
|
|
isInteger,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
},
|
|
isArbitraryVariableImage,
|
|
isArbitraryImage
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Background Color
|
|
* @see https://tailwindcss.com/docs/background-color
|
|
*/ 'bg-color': [
|
|
{
|
|
bg: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Gradient Color Stops From Position
|
|
* @see https://tailwindcss.com/docs/gradient-color-stops
|
|
*/ 'gradient-from-pos': [
|
|
{
|
|
from: scaleGradientStopPosition()
|
|
}
|
|
],
|
|
/**
|
|
* Gradient Color Stops Via Position
|
|
* @see https://tailwindcss.com/docs/gradient-color-stops
|
|
*/ 'gradient-via-pos': [
|
|
{
|
|
via: scaleGradientStopPosition()
|
|
}
|
|
],
|
|
/**
|
|
* Gradient Color Stops To Position
|
|
* @see https://tailwindcss.com/docs/gradient-color-stops
|
|
*/ 'gradient-to-pos': [
|
|
{
|
|
to: scaleGradientStopPosition()
|
|
}
|
|
],
|
|
/**
|
|
* Gradient Color Stops From
|
|
* @see https://tailwindcss.com/docs/gradient-color-stops
|
|
*/ 'gradient-from': [
|
|
{
|
|
from: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Gradient Color Stops Via
|
|
* @see https://tailwindcss.com/docs/gradient-color-stops
|
|
*/ 'gradient-via': [
|
|
{
|
|
via: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Gradient Color Stops To
|
|
* @see https://tailwindcss.com/docs/gradient-color-stops
|
|
*/ 'gradient-to': [
|
|
{
|
|
to: scaleColor()
|
|
}
|
|
],
|
|
// ---------------
|
|
// --- Borders ---
|
|
// ---------------
|
|
/**
|
|
* Border Radius
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ rounded: [
|
|
{
|
|
rounded: scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Start
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-s': [
|
|
{
|
|
'rounded-s': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius End
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-e': [
|
|
{
|
|
'rounded-e': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Top
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-t': [
|
|
{
|
|
'rounded-t': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Right
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-r': [
|
|
{
|
|
'rounded-r': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Bottom
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-b': [
|
|
{
|
|
'rounded-b': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Left
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-l': [
|
|
{
|
|
'rounded-l': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Start Start
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-ss': [
|
|
{
|
|
'rounded-ss': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Start End
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-se': [
|
|
{
|
|
'rounded-se': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius End End
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-ee': [
|
|
{
|
|
'rounded-ee': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius End Start
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-es': [
|
|
{
|
|
'rounded-es': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Top Left
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-tl': [
|
|
{
|
|
'rounded-tl': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Top Right
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-tr': [
|
|
{
|
|
'rounded-tr': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Bottom Right
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-br': [
|
|
{
|
|
'rounded-br': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Radius Bottom Left
|
|
* @see https://tailwindcss.com/docs/border-radius
|
|
*/ 'rounded-bl': [
|
|
{
|
|
'rounded-bl': scaleRadius()
|
|
}
|
|
],
|
|
/**
|
|
* Border Width
|
|
* @see https://tailwindcss.com/docs/border-width
|
|
*/ 'border-w': [
|
|
{
|
|
border: scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Border Width X
|
|
* @see https://tailwindcss.com/docs/border-width
|
|
*/ 'border-w-x': [
|
|
{
|
|
'border-x': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Border Width Y
|
|
* @see https://tailwindcss.com/docs/border-width
|
|
*/ 'border-w-y': [
|
|
{
|
|
'border-y': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Border Width Start
|
|
* @see https://tailwindcss.com/docs/border-width
|
|
*/ 'border-w-s': [
|
|
{
|
|
'border-s': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Border Width End
|
|
* @see https://tailwindcss.com/docs/border-width
|
|
*/ 'border-w-e': [
|
|
{
|
|
'border-e': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Border Width Top
|
|
* @see https://tailwindcss.com/docs/border-width
|
|
*/ 'border-w-t': [
|
|
{
|
|
'border-t': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Border Width Right
|
|
* @see https://tailwindcss.com/docs/border-width
|
|
*/ 'border-w-r': [
|
|
{
|
|
'border-r': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Border Width Bottom
|
|
* @see https://tailwindcss.com/docs/border-width
|
|
*/ 'border-w-b': [
|
|
{
|
|
'border-b': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Border Width Left
|
|
* @see https://tailwindcss.com/docs/border-width
|
|
*/ 'border-w-l': [
|
|
{
|
|
'border-l': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Divide Width X
|
|
* @see https://tailwindcss.com/docs/border-width#between-children
|
|
*/ 'divide-x': [
|
|
{
|
|
'divide-x': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Divide Width X Reverse
|
|
* @see https://tailwindcss.com/docs/border-width#between-children
|
|
*/ 'divide-x-reverse': [
|
|
'divide-x-reverse'
|
|
],
|
|
/**
|
|
* Divide Width Y
|
|
* @see https://tailwindcss.com/docs/border-width#between-children
|
|
*/ 'divide-y': [
|
|
{
|
|
'divide-y': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Divide Width Y Reverse
|
|
* @see https://tailwindcss.com/docs/border-width#between-children
|
|
*/ 'divide-y-reverse': [
|
|
'divide-y-reverse'
|
|
],
|
|
/**
|
|
* Border Style
|
|
* @see https://tailwindcss.com/docs/border-style
|
|
*/ 'border-style': [
|
|
{
|
|
border: [
|
|
...scaleLineStyle(),
|
|
'hidden',
|
|
'none'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Divide Style
|
|
* @see https://tailwindcss.com/docs/border-style#setting-the-divider-style
|
|
*/ 'divide-style': [
|
|
{
|
|
divide: [
|
|
...scaleLineStyle(),
|
|
'hidden',
|
|
'none'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Border Color
|
|
* @see https://tailwindcss.com/docs/border-color
|
|
*/ 'border-color': [
|
|
{
|
|
border: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Border Color X
|
|
* @see https://tailwindcss.com/docs/border-color
|
|
*/ 'border-color-x': [
|
|
{
|
|
'border-x': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Border Color Y
|
|
* @see https://tailwindcss.com/docs/border-color
|
|
*/ 'border-color-y': [
|
|
{
|
|
'border-y': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Border Color S
|
|
* @see https://tailwindcss.com/docs/border-color
|
|
*/ 'border-color-s': [
|
|
{
|
|
'border-s': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Border Color E
|
|
* @see https://tailwindcss.com/docs/border-color
|
|
*/ 'border-color-e': [
|
|
{
|
|
'border-e': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Border Color Top
|
|
* @see https://tailwindcss.com/docs/border-color
|
|
*/ 'border-color-t': [
|
|
{
|
|
'border-t': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Border Color Right
|
|
* @see https://tailwindcss.com/docs/border-color
|
|
*/ 'border-color-r': [
|
|
{
|
|
'border-r': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Border Color Bottom
|
|
* @see https://tailwindcss.com/docs/border-color
|
|
*/ 'border-color-b': [
|
|
{
|
|
'border-b': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Border Color Left
|
|
* @see https://tailwindcss.com/docs/border-color
|
|
*/ 'border-color-l': [
|
|
{
|
|
'border-l': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Divide Color
|
|
* @see https://tailwindcss.com/docs/divide-color
|
|
*/ 'divide-color': [
|
|
{
|
|
divide: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Outline Style
|
|
* @see https://tailwindcss.com/docs/outline-style
|
|
*/ 'outline-style': [
|
|
{
|
|
outline: [
|
|
...scaleLineStyle(),
|
|
'none',
|
|
'hidden'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Outline Offset
|
|
* @see https://tailwindcss.com/docs/outline-offset
|
|
*/ 'outline-offset': [
|
|
{
|
|
'outline-offset': [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Outline Width
|
|
* @see https://tailwindcss.com/docs/outline-width
|
|
*/ 'outline-w': [
|
|
{
|
|
outline: [
|
|
'',
|
|
isNumber,
|
|
isArbitraryVariableLength,
|
|
isArbitraryLength
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Outline Color
|
|
* @see https://tailwindcss.com/docs/outline-color
|
|
*/ 'outline-color': [
|
|
{
|
|
outline: scaleColor()
|
|
}
|
|
],
|
|
// ---------------
|
|
// --- Effects ---
|
|
// ---------------
|
|
/**
|
|
* Box Shadow
|
|
* @see https://tailwindcss.com/docs/box-shadow
|
|
*/ shadow: [
|
|
{
|
|
shadow: [
|
|
// Deprecated since Tailwind CSS v4.0.0
|
|
'',
|
|
'none',
|
|
themeShadow,
|
|
isArbitraryVariableShadow,
|
|
isArbitraryShadow
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Box Shadow Color
|
|
* @see https://tailwindcss.com/docs/box-shadow#setting-the-shadow-color
|
|
*/ 'shadow-color': [
|
|
{
|
|
shadow: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Inset Box Shadow
|
|
* @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-shadow
|
|
*/ 'inset-shadow': [
|
|
{
|
|
'inset-shadow': [
|
|
'none',
|
|
themeInsetShadow,
|
|
isArbitraryVariableShadow,
|
|
isArbitraryShadow
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Inset Box Shadow Color
|
|
* @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-shadow-color
|
|
*/ 'inset-shadow-color': [
|
|
{
|
|
'inset-shadow': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Ring Width
|
|
* @see https://tailwindcss.com/docs/box-shadow#adding-a-ring
|
|
*/ 'ring-w': [
|
|
{
|
|
ring: scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Ring Width Inset
|
|
* @see https://v3.tailwindcss.com/docs/ring-width#inset-rings
|
|
* @deprecated since Tailwind CSS v4.0.0
|
|
* @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
|
|
*/ 'ring-w-inset': [
|
|
'ring-inset'
|
|
],
|
|
/**
|
|
* Ring Color
|
|
* @see https://tailwindcss.com/docs/box-shadow#setting-the-ring-color
|
|
*/ 'ring-color': [
|
|
{
|
|
ring: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Ring Offset Width
|
|
* @see https://v3.tailwindcss.com/docs/ring-offset-width
|
|
* @deprecated since Tailwind CSS v4.0.0
|
|
* @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
|
|
*/ 'ring-offset-w': [
|
|
{
|
|
'ring-offset': [
|
|
isNumber,
|
|
isArbitraryLength
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Ring Offset Color
|
|
* @see https://v3.tailwindcss.com/docs/ring-offset-color
|
|
* @deprecated since Tailwind CSS v4.0.0
|
|
* @see https://github.com/tailwindlabs/tailwindcss/blob/v4.0.0/packages/tailwindcss/src/utilities.ts#L4158
|
|
*/ 'ring-offset-color': [
|
|
{
|
|
'ring-offset': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Inset Ring Width
|
|
* @see https://tailwindcss.com/docs/box-shadow#adding-an-inset-ring
|
|
*/ 'inset-ring-w': [
|
|
{
|
|
'inset-ring': scaleBorderWidth()
|
|
}
|
|
],
|
|
/**
|
|
* Inset Ring Color
|
|
* @see https://tailwindcss.com/docs/box-shadow#setting-the-inset-ring-color
|
|
*/ 'inset-ring-color': [
|
|
{
|
|
'inset-ring': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Text Shadow
|
|
* @see https://tailwindcss.com/docs/text-shadow
|
|
*/ 'text-shadow': [
|
|
{
|
|
'text-shadow': [
|
|
'none',
|
|
themeTextShadow,
|
|
isArbitraryVariableShadow,
|
|
isArbitraryShadow
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Text Shadow Color
|
|
* @see https://tailwindcss.com/docs/text-shadow#setting-the-shadow-color
|
|
*/ 'text-shadow-color': [
|
|
{
|
|
'text-shadow': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Opacity
|
|
* @see https://tailwindcss.com/docs/opacity
|
|
*/ opacity: [
|
|
{
|
|
opacity: [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Mix Blend Mode
|
|
* @see https://tailwindcss.com/docs/mix-blend-mode
|
|
*/ 'mix-blend': [
|
|
{
|
|
'mix-blend': [
|
|
...scaleBlendMode(),
|
|
'plus-darker',
|
|
'plus-lighter'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Background Blend Mode
|
|
* @see https://tailwindcss.com/docs/background-blend-mode
|
|
*/ 'bg-blend': [
|
|
{
|
|
'bg-blend': scaleBlendMode()
|
|
}
|
|
],
|
|
/**
|
|
* Mask Clip
|
|
* @see https://tailwindcss.com/docs/mask-clip
|
|
*/ 'mask-clip': [
|
|
{
|
|
'mask-clip': [
|
|
'border',
|
|
'padding',
|
|
'content',
|
|
'fill',
|
|
'stroke',
|
|
'view'
|
|
]
|
|
},
|
|
'mask-no-clip'
|
|
],
|
|
/**
|
|
* Mask Composite
|
|
* @see https://tailwindcss.com/docs/mask-composite
|
|
*/ 'mask-composite': [
|
|
{
|
|
mask: [
|
|
'add',
|
|
'subtract',
|
|
'intersect',
|
|
'exclude'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Mask Image
|
|
* @see https://tailwindcss.com/docs/mask-image
|
|
*/ 'mask-image-linear-pos': [
|
|
{
|
|
'mask-linear': [
|
|
isNumber
|
|
]
|
|
}
|
|
],
|
|
'mask-image-linear-from-pos': [
|
|
{
|
|
'mask-linear-from': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-linear-to-pos': [
|
|
{
|
|
'mask-linear-to': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-linear-from-color': [
|
|
{
|
|
'mask-linear-from': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-linear-to-color': [
|
|
{
|
|
'mask-linear-to': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-t-from-pos': [
|
|
{
|
|
'mask-t-from': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-t-to-pos': [
|
|
{
|
|
'mask-t-to': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-t-from-color': [
|
|
{
|
|
'mask-t-from': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-t-to-color': [
|
|
{
|
|
'mask-t-to': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-r-from-pos': [
|
|
{
|
|
'mask-r-from': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-r-to-pos': [
|
|
{
|
|
'mask-r-to': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-r-from-color': [
|
|
{
|
|
'mask-r-from': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-r-to-color': [
|
|
{
|
|
'mask-r-to': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-b-from-pos': [
|
|
{
|
|
'mask-b-from': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-b-to-pos': [
|
|
{
|
|
'mask-b-to': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-b-from-color': [
|
|
{
|
|
'mask-b-from': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-b-to-color': [
|
|
{
|
|
'mask-b-to': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-l-from-pos': [
|
|
{
|
|
'mask-l-from': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-l-to-pos': [
|
|
{
|
|
'mask-l-to': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-l-from-color': [
|
|
{
|
|
'mask-l-from': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-l-to-color': [
|
|
{
|
|
'mask-l-to': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-x-from-pos': [
|
|
{
|
|
'mask-x-from': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-x-to-pos': [
|
|
{
|
|
'mask-x-to': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-x-from-color': [
|
|
{
|
|
'mask-x-from': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-x-to-color': [
|
|
{
|
|
'mask-x-to': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-y-from-pos': [
|
|
{
|
|
'mask-y-from': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-y-to-pos': [
|
|
{
|
|
'mask-y-to': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-y-from-color': [
|
|
{
|
|
'mask-y-from': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-y-to-color': [
|
|
{
|
|
'mask-y-to': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-radial': [
|
|
{
|
|
'mask-radial': [
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
'mask-image-radial-from-pos': [
|
|
{
|
|
'mask-radial-from': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-radial-to-pos': [
|
|
{
|
|
'mask-radial-to': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-radial-from-color': [
|
|
{
|
|
'mask-radial-from': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-radial-to-color': [
|
|
{
|
|
'mask-radial-to': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-radial-shape': [
|
|
{
|
|
'mask-radial': [
|
|
'circle',
|
|
'ellipse'
|
|
]
|
|
}
|
|
],
|
|
'mask-image-radial-size': [
|
|
{
|
|
'mask-radial': [
|
|
{
|
|
closest: [
|
|
'side',
|
|
'corner'
|
|
],
|
|
farthest: [
|
|
'side',
|
|
'corner'
|
|
]
|
|
}
|
|
]
|
|
}
|
|
],
|
|
'mask-image-radial-pos': [
|
|
{
|
|
'mask-radial-at': scalePosition()
|
|
}
|
|
],
|
|
'mask-image-conic-pos': [
|
|
{
|
|
'mask-conic': [
|
|
isNumber
|
|
]
|
|
}
|
|
],
|
|
'mask-image-conic-from-pos': [
|
|
{
|
|
'mask-conic-from': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-conic-to-pos': [
|
|
{
|
|
'mask-conic-to': scaleMaskImagePosition()
|
|
}
|
|
],
|
|
'mask-image-conic-from-color': [
|
|
{
|
|
'mask-conic-from': scaleColor()
|
|
}
|
|
],
|
|
'mask-image-conic-to-color': [
|
|
{
|
|
'mask-conic-to': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Mask Mode
|
|
* @see https://tailwindcss.com/docs/mask-mode
|
|
*/ 'mask-mode': [
|
|
{
|
|
mask: [
|
|
'alpha',
|
|
'luminance',
|
|
'match'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Mask Origin
|
|
* @see https://tailwindcss.com/docs/mask-origin
|
|
*/ 'mask-origin': [
|
|
{
|
|
'mask-origin': [
|
|
'border',
|
|
'padding',
|
|
'content',
|
|
'fill',
|
|
'stroke',
|
|
'view'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Mask Position
|
|
* @see https://tailwindcss.com/docs/mask-position
|
|
*/ 'mask-position': [
|
|
{
|
|
mask: scaleBgPosition()
|
|
}
|
|
],
|
|
/**
|
|
* Mask Repeat
|
|
* @see https://tailwindcss.com/docs/mask-repeat
|
|
*/ 'mask-repeat': [
|
|
{
|
|
mask: scaleBgRepeat()
|
|
}
|
|
],
|
|
/**
|
|
* Mask Size
|
|
* @see https://tailwindcss.com/docs/mask-size
|
|
*/ 'mask-size': [
|
|
{
|
|
mask: scaleBgSize()
|
|
}
|
|
],
|
|
/**
|
|
* Mask Type
|
|
* @see https://tailwindcss.com/docs/mask-type
|
|
*/ 'mask-type': [
|
|
{
|
|
'mask-type': [
|
|
'alpha',
|
|
'luminance'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Mask Image
|
|
* @see https://tailwindcss.com/docs/mask-image
|
|
*/ 'mask-image': [
|
|
{
|
|
mask: [
|
|
'none',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
// ---------------
|
|
// --- Filters ---
|
|
// ---------------
|
|
/**
|
|
* Filter
|
|
* @see https://tailwindcss.com/docs/filter
|
|
*/ filter: [
|
|
{
|
|
filter: [
|
|
// Deprecated since Tailwind CSS v3.0.0
|
|
'',
|
|
'none',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Blur
|
|
* @see https://tailwindcss.com/docs/blur
|
|
*/ blur: [
|
|
{
|
|
blur: scaleBlur()
|
|
}
|
|
],
|
|
/**
|
|
* Brightness
|
|
* @see https://tailwindcss.com/docs/brightness
|
|
*/ brightness: [
|
|
{
|
|
brightness: [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Contrast
|
|
* @see https://tailwindcss.com/docs/contrast
|
|
*/ contrast: [
|
|
{
|
|
contrast: [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Drop Shadow
|
|
* @see https://tailwindcss.com/docs/drop-shadow
|
|
*/ 'drop-shadow': [
|
|
{
|
|
'drop-shadow': [
|
|
// Deprecated since Tailwind CSS v4.0.0
|
|
'',
|
|
'none',
|
|
themeDropShadow,
|
|
isArbitraryVariableShadow,
|
|
isArbitraryShadow
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Drop Shadow Color
|
|
* @see https://tailwindcss.com/docs/filter-drop-shadow#setting-the-shadow-color
|
|
*/ 'drop-shadow-color': [
|
|
{
|
|
'drop-shadow': scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Grayscale
|
|
* @see https://tailwindcss.com/docs/grayscale
|
|
*/ grayscale: [
|
|
{
|
|
grayscale: [
|
|
'',
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Hue Rotate
|
|
* @see https://tailwindcss.com/docs/hue-rotate
|
|
*/ 'hue-rotate': [
|
|
{
|
|
'hue-rotate': [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Invert
|
|
* @see https://tailwindcss.com/docs/invert
|
|
*/ invert: [
|
|
{
|
|
invert: [
|
|
'',
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Saturate
|
|
* @see https://tailwindcss.com/docs/saturate
|
|
*/ saturate: [
|
|
{
|
|
saturate: [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Sepia
|
|
* @see https://tailwindcss.com/docs/sepia
|
|
*/ sepia: [
|
|
{
|
|
sepia: [
|
|
'',
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Backdrop Filter
|
|
* @see https://tailwindcss.com/docs/backdrop-filter
|
|
*/ 'backdrop-filter': [
|
|
{
|
|
'backdrop-filter': [
|
|
// Deprecated since Tailwind CSS v3.0.0
|
|
'',
|
|
'none',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Backdrop Blur
|
|
* @see https://tailwindcss.com/docs/backdrop-blur
|
|
*/ 'backdrop-blur': [
|
|
{
|
|
'backdrop-blur': scaleBlur()
|
|
}
|
|
],
|
|
/**
|
|
* Backdrop Brightness
|
|
* @see https://tailwindcss.com/docs/backdrop-brightness
|
|
*/ 'backdrop-brightness': [
|
|
{
|
|
'backdrop-brightness': [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Backdrop Contrast
|
|
* @see https://tailwindcss.com/docs/backdrop-contrast
|
|
*/ 'backdrop-contrast': [
|
|
{
|
|
'backdrop-contrast': [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Backdrop Grayscale
|
|
* @see https://tailwindcss.com/docs/backdrop-grayscale
|
|
*/ 'backdrop-grayscale': [
|
|
{
|
|
'backdrop-grayscale': [
|
|
'',
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Backdrop Hue Rotate
|
|
* @see https://tailwindcss.com/docs/backdrop-hue-rotate
|
|
*/ 'backdrop-hue-rotate': [
|
|
{
|
|
'backdrop-hue-rotate': [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Backdrop Invert
|
|
* @see https://tailwindcss.com/docs/backdrop-invert
|
|
*/ 'backdrop-invert': [
|
|
{
|
|
'backdrop-invert': [
|
|
'',
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Backdrop Opacity
|
|
* @see https://tailwindcss.com/docs/backdrop-opacity
|
|
*/ 'backdrop-opacity': [
|
|
{
|
|
'backdrop-opacity': [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Backdrop Saturate
|
|
* @see https://tailwindcss.com/docs/backdrop-saturate
|
|
*/ 'backdrop-saturate': [
|
|
{
|
|
'backdrop-saturate': [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Backdrop Sepia
|
|
* @see https://tailwindcss.com/docs/backdrop-sepia
|
|
*/ 'backdrop-sepia': [
|
|
{
|
|
'backdrop-sepia': [
|
|
'',
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
// --------------
|
|
// --- Tables ---
|
|
// --------------
|
|
/**
|
|
* Border Collapse
|
|
* @see https://tailwindcss.com/docs/border-collapse
|
|
*/ 'border-collapse': [
|
|
{
|
|
border: [
|
|
'collapse',
|
|
'separate'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Border Spacing
|
|
* @see https://tailwindcss.com/docs/border-spacing
|
|
*/ 'border-spacing': [
|
|
{
|
|
'border-spacing': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Border Spacing X
|
|
* @see https://tailwindcss.com/docs/border-spacing
|
|
*/ 'border-spacing-x': [
|
|
{
|
|
'border-spacing-x': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Border Spacing Y
|
|
* @see https://tailwindcss.com/docs/border-spacing
|
|
*/ 'border-spacing-y': [
|
|
{
|
|
'border-spacing-y': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Table Layout
|
|
* @see https://tailwindcss.com/docs/table-layout
|
|
*/ 'table-layout': [
|
|
{
|
|
table: [
|
|
'auto',
|
|
'fixed'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Caption Side
|
|
* @see https://tailwindcss.com/docs/caption-side
|
|
*/ caption: [
|
|
{
|
|
caption: [
|
|
'top',
|
|
'bottom'
|
|
]
|
|
}
|
|
],
|
|
// ---------------------------------
|
|
// --- Transitions and Animation ---
|
|
// ---------------------------------
|
|
/**
|
|
* Transition Property
|
|
* @see https://tailwindcss.com/docs/transition-property
|
|
*/ transition: [
|
|
{
|
|
transition: [
|
|
'',
|
|
'all',
|
|
'colors',
|
|
'opacity',
|
|
'shadow',
|
|
'transform',
|
|
'none',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Transition Behavior
|
|
* @see https://tailwindcss.com/docs/transition-behavior
|
|
*/ 'transition-behavior': [
|
|
{
|
|
transition: [
|
|
'normal',
|
|
'discrete'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Transition Duration
|
|
* @see https://tailwindcss.com/docs/transition-duration
|
|
*/ duration: [
|
|
{
|
|
duration: [
|
|
isNumber,
|
|
'initial',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Transition Timing Function
|
|
* @see https://tailwindcss.com/docs/transition-timing-function
|
|
*/ ease: [
|
|
{
|
|
ease: [
|
|
'linear',
|
|
'initial',
|
|
themeEase,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Transition Delay
|
|
* @see https://tailwindcss.com/docs/transition-delay
|
|
*/ delay: [
|
|
{
|
|
delay: [
|
|
isNumber,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Animation
|
|
* @see https://tailwindcss.com/docs/animation
|
|
*/ animate: [
|
|
{
|
|
animate: [
|
|
'none',
|
|
themeAnimate,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
// ------------------
|
|
// --- Transforms ---
|
|
// ------------------
|
|
/**
|
|
* Backface Visibility
|
|
* @see https://tailwindcss.com/docs/backface-visibility
|
|
*/ backface: [
|
|
{
|
|
backface: [
|
|
'hidden',
|
|
'visible'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Perspective
|
|
* @see https://tailwindcss.com/docs/perspective
|
|
*/ perspective: [
|
|
{
|
|
perspective: [
|
|
themePerspective,
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Perspective Origin
|
|
* @see https://tailwindcss.com/docs/perspective-origin
|
|
*/ 'perspective-origin': [
|
|
{
|
|
'perspective-origin': scalePositionWithArbitrary()
|
|
}
|
|
],
|
|
/**
|
|
* Rotate
|
|
* @see https://tailwindcss.com/docs/rotate
|
|
*/ rotate: [
|
|
{
|
|
rotate: scaleRotate()
|
|
}
|
|
],
|
|
/**
|
|
* Rotate X
|
|
* @see https://tailwindcss.com/docs/rotate
|
|
*/ 'rotate-x': [
|
|
{
|
|
'rotate-x': scaleRotate()
|
|
}
|
|
],
|
|
/**
|
|
* Rotate Y
|
|
* @see https://tailwindcss.com/docs/rotate
|
|
*/ 'rotate-y': [
|
|
{
|
|
'rotate-y': scaleRotate()
|
|
}
|
|
],
|
|
/**
|
|
* Rotate Z
|
|
* @see https://tailwindcss.com/docs/rotate
|
|
*/ 'rotate-z': [
|
|
{
|
|
'rotate-z': scaleRotate()
|
|
}
|
|
],
|
|
/**
|
|
* Scale
|
|
* @see https://tailwindcss.com/docs/scale
|
|
*/ scale: [
|
|
{
|
|
scale: scaleScale()
|
|
}
|
|
],
|
|
/**
|
|
* Scale X
|
|
* @see https://tailwindcss.com/docs/scale
|
|
*/ 'scale-x': [
|
|
{
|
|
'scale-x': scaleScale()
|
|
}
|
|
],
|
|
/**
|
|
* Scale Y
|
|
* @see https://tailwindcss.com/docs/scale
|
|
*/ 'scale-y': [
|
|
{
|
|
'scale-y': scaleScale()
|
|
}
|
|
],
|
|
/**
|
|
* Scale Z
|
|
* @see https://tailwindcss.com/docs/scale
|
|
*/ 'scale-z': [
|
|
{
|
|
'scale-z': scaleScale()
|
|
}
|
|
],
|
|
/**
|
|
* Scale 3D
|
|
* @see https://tailwindcss.com/docs/scale
|
|
*/ 'scale-3d': [
|
|
'scale-3d'
|
|
],
|
|
/**
|
|
* Skew
|
|
* @see https://tailwindcss.com/docs/skew
|
|
*/ skew: [
|
|
{
|
|
skew: scaleSkew()
|
|
}
|
|
],
|
|
/**
|
|
* Skew X
|
|
* @see https://tailwindcss.com/docs/skew
|
|
*/ 'skew-x': [
|
|
{
|
|
'skew-x': scaleSkew()
|
|
}
|
|
],
|
|
/**
|
|
* Skew Y
|
|
* @see https://tailwindcss.com/docs/skew
|
|
*/ 'skew-y': [
|
|
{
|
|
'skew-y': scaleSkew()
|
|
}
|
|
],
|
|
/**
|
|
* Transform
|
|
* @see https://tailwindcss.com/docs/transform
|
|
*/ transform: [
|
|
{
|
|
transform: [
|
|
isArbitraryVariable,
|
|
isArbitraryValue,
|
|
'',
|
|
'none',
|
|
'gpu',
|
|
'cpu'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Transform Origin
|
|
* @see https://tailwindcss.com/docs/transform-origin
|
|
*/ 'transform-origin': [
|
|
{
|
|
origin: scalePositionWithArbitrary()
|
|
}
|
|
],
|
|
/**
|
|
* Transform Style
|
|
* @see https://tailwindcss.com/docs/transform-style
|
|
*/ 'transform-style': [
|
|
{
|
|
transform: [
|
|
'3d',
|
|
'flat'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Translate
|
|
* @see https://tailwindcss.com/docs/translate
|
|
*/ translate: [
|
|
{
|
|
translate: scaleTranslate()
|
|
}
|
|
],
|
|
/**
|
|
* Translate X
|
|
* @see https://tailwindcss.com/docs/translate
|
|
*/ 'translate-x': [
|
|
{
|
|
'translate-x': scaleTranslate()
|
|
}
|
|
],
|
|
/**
|
|
* Translate Y
|
|
* @see https://tailwindcss.com/docs/translate
|
|
*/ 'translate-y': [
|
|
{
|
|
'translate-y': scaleTranslate()
|
|
}
|
|
],
|
|
/**
|
|
* Translate Z
|
|
* @see https://tailwindcss.com/docs/translate
|
|
*/ 'translate-z': [
|
|
{
|
|
'translate-z': scaleTranslate()
|
|
}
|
|
],
|
|
/**
|
|
* Translate None
|
|
* @see https://tailwindcss.com/docs/translate
|
|
*/ 'translate-none': [
|
|
'translate-none'
|
|
],
|
|
// ---------------------
|
|
// --- Interactivity ---
|
|
// ---------------------
|
|
/**
|
|
* Accent Color
|
|
* @see https://tailwindcss.com/docs/accent-color
|
|
*/ accent: [
|
|
{
|
|
accent: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Appearance
|
|
* @see https://tailwindcss.com/docs/appearance
|
|
*/ appearance: [
|
|
{
|
|
appearance: [
|
|
'none',
|
|
'auto'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Caret Color
|
|
* @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
|
|
*/ 'caret-color': [
|
|
{
|
|
caret: scaleColor()
|
|
}
|
|
],
|
|
/**
|
|
* Color Scheme
|
|
* @see https://tailwindcss.com/docs/color-scheme
|
|
*/ 'color-scheme': [
|
|
{
|
|
scheme: [
|
|
'normal',
|
|
'dark',
|
|
'light',
|
|
'light-dark',
|
|
'only-dark',
|
|
'only-light'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Cursor
|
|
* @see https://tailwindcss.com/docs/cursor
|
|
*/ cursor: [
|
|
{
|
|
cursor: [
|
|
'auto',
|
|
'default',
|
|
'pointer',
|
|
'wait',
|
|
'text',
|
|
'move',
|
|
'help',
|
|
'not-allowed',
|
|
'none',
|
|
'context-menu',
|
|
'progress',
|
|
'cell',
|
|
'crosshair',
|
|
'vertical-text',
|
|
'alias',
|
|
'copy',
|
|
'no-drop',
|
|
'grab',
|
|
'grabbing',
|
|
'all-scroll',
|
|
'col-resize',
|
|
'row-resize',
|
|
'n-resize',
|
|
'e-resize',
|
|
's-resize',
|
|
'w-resize',
|
|
'ne-resize',
|
|
'nw-resize',
|
|
'se-resize',
|
|
'sw-resize',
|
|
'ew-resize',
|
|
'ns-resize',
|
|
'nesw-resize',
|
|
'nwse-resize',
|
|
'zoom-in',
|
|
'zoom-out',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Field Sizing
|
|
* @see https://tailwindcss.com/docs/field-sizing
|
|
*/ 'field-sizing': [
|
|
{
|
|
'field-sizing': [
|
|
'fixed',
|
|
'content'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Pointer Events
|
|
* @see https://tailwindcss.com/docs/pointer-events
|
|
*/ 'pointer-events': [
|
|
{
|
|
'pointer-events': [
|
|
'auto',
|
|
'none'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Resize
|
|
* @see https://tailwindcss.com/docs/resize
|
|
*/ resize: [
|
|
{
|
|
resize: [
|
|
'none',
|
|
'',
|
|
'y',
|
|
'x'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Behavior
|
|
* @see https://tailwindcss.com/docs/scroll-behavior
|
|
*/ 'scroll-behavior': [
|
|
{
|
|
scroll: [
|
|
'auto',
|
|
'smooth'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Margin
|
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
*/ 'scroll-m': [
|
|
{
|
|
'scroll-m': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Margin X
|
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
*/ 'scroll-mx': [
|
|
{
|
|
'scroll-mx': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Margin Y
|
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
*/ 'scroll-my': [
|
|
{
|
|
'scroll-my': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Margin Start
|
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
*/ 'scroll-ms': [
|
|
{
|
|
'scroll-ms': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Margin End
|
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
*/ 'scroll-me': [
|
|
{
|
|
'scroll-me': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Margin Top
|
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
*/ 'scroll-mt': [
|
|
{
|
|
'scroll-mt': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Margin Right
|
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
*/ 'scroll-mr': [
|
|
{
|
|
'scroll-mr': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Margin Bottom
|
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
*/ 'scroll-mb': [
|
|
{
|
|
'scroll-mb': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Margin Left
|
|
* @see https://tailwindcss.com/docs/scroll-margin
|
|
*/ 'scroll-ml': [
|
|
{
|
|
'scroll-ml': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Padding
|
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
*/ 'scroll-p': [
|
|
{
|
|
'scroll-p': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Padding X
|
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
*/ 'scroll-px': [
|
|
{
|
|
'scroll-px': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Padding Y
|
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
*/ 'scroll-py': [
|
|
{
|
|
'scroll-py': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Padding Start
|
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
*/ 'scroll-ps': [
|
|
{
|
|
'scroll-ps': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Padding End
|
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
*/ 'scroll-pe': [
|
|
{
|
|
'scroll-pe': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Padding Top
|
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
*/ 'scroll-pt': [
|
|
{
|
|
'scroll-pt': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Padding Right
|
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
*/ 'scroll-pr': [
|
|
{
|
|
'scroll-pr': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Padding Bottom
|
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
*/ 'scroll-pb': [
|
|
{
|
|
'scroll-pb': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Padding Left
|
|
* @see https://tailwindcss.com/docs/scroll-padding
|
|
*/ 'scroll-pl': [
|
|
{
|
|
'scroll-pl': scaleUnambiguousSpacing()
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Snap Align
|
|
* @see https://tailwindcss.com/docs/scroll-snap-align
|
|
*/ 'snap-align': [
|
|
{
|
|
snap: [
|
|
'start',
|
|
'end',
|
|
'center',
|
|
'align-none'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Snap Stop
|
|
* @see https://tailwindcss.com/docs/scroll-snap-stop
|
|
*/ 'snap-stop': [
|
|
{
|
|
snap: [
|
|
'normal',
|
|
'always'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Snap Type
|
|
* @see https://tailwindcss.com/docs/scroll-snap-type
|
|
*/ 'snap-type': [
|
|
{
|
|
snap: [
|
|
'none',
|
|
'x',
|
|
'y',
|
|
'both'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Scroll Snap Type Strictness
|
|
* @see https://tailwindcss.com/docs/scroll-snap-type
|
|
*/ 'snap-strictness': [
|
|
{
|
|
snap: [
|
|
'mandatory',
|
|
'proximity'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Touch Action
|
|
* @see https://tailwindcss.com/docs/touch-action
|
|
*/ touch: [
|
|
{
|
|
touch: [
|
|
'auto',
|
|
'none',
|
|
'manipulation'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Touch Action X
|
|
* @see https://tailwindcss.com/docs/touch-action
|
|
*/ 'touch-x': [
|
|
{
|
|
'touch-pan': [
|
|
'x',
|
|
'left',
|
|
'right'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Touch Action Y
|
|
* @see https://tailwindcss.com/docs/touch-action
|
|
*/ 'touch-y': [
|
|
{
|
|
'touch-pan': [
|
|
'y',
|
|
'up',
|
|
'down'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Touch Action Pinch Zoom
|
|
* @see https://tailwindcss.com/docs/touch-action
|
|
*/ 'touch-pz': [
|
|
'touch-pinch-zoom'
|
|
],
|
|
/**
|
|
* User Select
|
|
* @see https://tailwindcss.com/docs/user-select
|
|
*/ select: [
|
|
{
|
|
select: [
|
|
'none',
|
|
'text',
|
|
'all',
|
|
'auto'
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Will Change
|
|
* @see https://tailwindcss.com/docs/will-change
|
|
*/ 'will-change': [
|
|
{
|
|
'will-change': [
|
|
'auto',
|
|
'scroll',
|
|
'contents',
|
|
'transform',
|
|
isArbitraryVariable,
|
|
isArbitraryValue
|
|
]
|
|
}
|
|
],
|
|
// -----------
|
|
// --- SVG ---
|
|
// -----------
|
|
/**
|
|
* Fill
|
|
* @see https://tailwindcss.com/docs/fill
|
|
*/ fill: [
|
|
{
|
|
fill: [
|
|
'none',
|
|
...scaleColor()
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Stroke Width
|
|
* @see https://tailwindcss.com/docs/stroke-width
|
|
*/ 'stroke-w': [
|
|
{
|
|
stroke: [
|
|
isNumber,
|
|
isArbitraryVariableLength,
|
|
isArbitraryLength,
|
|
isArbitraryNumber
|
|
]
|
|
}
|
|
],
|
|
/**
|
|
* Stroke
|
|
* @see https://tailwindcss.com/docs/stroke
|
|
*/ stroke: [
|
|
{
|
|
stroke: [
|
|
'none',
|
|
...scaleColor()
|
|
]
|
|
}
|
|
],
|
|
// ---------------------
|
|
// --- Accessibility ---
|
|
// ---------------------
|
|
/**
|
|
* Forced Color Adjust
|
|
* @see https://tailwindcss.com/docs/forced-color-adjust
|
|
*/ 'forced-color-adjust': [
|
|
{
|
|
'forced-color-adjust': [
|
|
'auto',
|
|
'none'
|
|
]
|
|
}
|
|
]
|
|
},
|
|
conflictingClassGroups: {
|
|
overflow: [
|
|
'overflow-x',
|
|
'overflow-y'
|
|
],
|
|
overscroll: [
|
|
'overscroll-x',
|
|
'overscroll-y'
|
|
],
|
|
inset: [
|
|
'inset-x',
|
|
'inset-y',
|
|
'start',
|
|
'end',
|
|
'top',
|
|
'right',
|
|
'bottom',
|
|
'left'
|
|
],
|
|
'inset-x': [
|
|
'right',
|
|
'left'
|
|
],
|
|
'inset-y': [
|
|
'top',
|
|
'bottom'
|
|
],
|
|
flex: [
|
|
'basis',
|
|
'grow',
|
|
'shrink'
|
|
],
|
|
gap: [
|
|
'gap-x',
|
|
'gap-y'
|
|
],
|
|
p: [
|
|
'px',
|
|
'py',
|
|
'ps',
|
|
'pe',
|
|
'pt',
|
|
'pr',
|
|
'pb',
|
|
'pl'
|
|
],
|
|
px: [
|
|
'pr',
|
|
'pl'
|
|
],
|
|
py: [
|
|
'pt',
|
|
'pb'
|
|
],
|
|
m: [
|
|
'mx',
|
|
'my',
|
|
'ms',
|
|
'me',
|
|
'mt',
|
|
'mr',
|
|
'mb',
|
|
'ml'
|
|
],
|
|
mx: [
|
|
'mr',
|
|
'ml'
|
|
],
|
|
my: [
|
|
'mt',
|
|
'mb'
|
|
],
|
|
size: [
|
|
'w',
|
|
'h'
|
|
],
|
|
'font-size': [
|
|
'leading'
|
|
],
|
|
'fvn-normal': [
|
|
'fvn-ordinal',
|
|
'fvn-slashed-zero',
|
|
'fvn-figure',
|
|
'fvn-spacing',
|
|
'fvn-fraction'
|
|
],
|
|
'fvn-ordinal': [
|
|
'fvn-normal'
|
|
],
|
|
'fvn-slashed-zero': [
|
|
'fvn-normal'
|
|
],
|
|
'fvn-figure': [
|
|
'fvn-normal'
|
|
],
|
|
'fvn-spacing': [
|
|
'fvn-normal'
|
|
],
|
|
'fvn-fraction': [
|
|
'fvn-normal'
|
|
],
|
|
'line-clamp': [
|
|
'display',
|
|
'overflow'
|
|
],
|
|
rounded: [
|
|
'rounded-s',
|
|
'rounded-e',
|
|
'rounded-t',
|
|
'rounded-r',
|
|
'rounded-b',
|
|
'rounded-l',
|
|
'rounded-ss',
|
|
'rounded-se',
|
|
'rounded-ee',
|
|
'rounded-es',
|
|
'rounded-tl',
|
|
'rounded-tr',
|
|
'rounded-br',
|
|
'rounded-bl'
|
|
],
|
|
'rounded-s': [
|
|
'rounded-ss',
|
|
'rounded-es'
|
|
],
|
|
'rounded-e': [
|
|
'rounded-se',
|
|
'rounded-ee'
|
|
],
|
|
'rounded-t': [
|
|
'rounded-tl',
|
|
'rounded-tr'
|
|
],
|
|
'rounded-r': [
|
|
'rounded-tr',
|
|
'rounded-br'
|
|
],
|
|
'rounded-b': [
|
|
'rounded-br',
|
|
'rounded-bl'
|
|
],
|
|
'rounded-l': [
|
|
'rounded-tl',
|
|
'rounded-bl'
|
|
],
|
|
'border-spacing': [
|
|
'border-spacing-x',
|
|
'border-spacing-y'
|
|
],
|
|
'border-w': [
|
|
'border-w-x',
|
|
'border-w-y',
|
|
'border-w-s',
|
|
'border-w-e',
|
|
'border-w-t',
|
|
'border-w-r',
|
|
'border-w-b',
|
|
'border-w-l'
|
|
],
|
|
'border-w-x': [
|
|
'border-w-r',
|
|
'border-w-l'
|
|
],
|
|
'border-w-y': [
|
|
'border-w-t',
|
|
'border-w-b'
|
|
],
|
|
'border-color': [
|
|
'border-color-x',
|
|
'border-color-y',
|
|
'border-color-s',
|
|
'border-color-e',
|
|
'border-color-t',
|
|
'border-color-r',
|
|
'border-color-b',
|
|
'border-color-l'
|
|
],
|
|
'border-color-x': [
|
|
'border-color-r',
|
|
'border-color-l'
|
|
],
|
|
'border-color-y': [
|
|
'border-color-t',
|
|
'border-color-b'
|
|
],
|
|
translate: [
|
|
'translate-x',
|
|
'translate-y',
|
|
'translate-none'
|
|
],
|
|
'translate-none': [
|
|
'translate',
|
|
'translate-x',
|
|
'translate-y',
|
|
'translate-z'
|
|
],
|
|
'scroll-m': [
|
|
'scroll-mx',
|
|
'scroll-my',
|
|
'scroll-ms',
|
|
'scroll-me',
|
|
'scroll-mt',
|
|
'scroll-mr',
|
|
'scroll-mb',
|
|
'scroll-ml'
|
|
],
|
|
'scroll-mx': [
|
|
'scroll-mr',
|
|
'scroll-ml'
|
|
],
|
|
'scroll-my': [
|
|
'scroll-mt',
|
|
'scroll-mb'
|
|
],
|
|
'scroll-p': [
|
|
'scroll-px',
|
|
'scroll-py',
|
|
'scroll-ps',
|
|
'scroll-pe',
|
|
'scroll-pt',
|
|
'scroll-pr',
|
|
'scroll-pb',
|
|
'scroll-pl'
|
|
],
|
|
'scroll-px': [
|
|
'scroll-pr',
|
|
'scroll-pl'
|
|
],
|
|
'scroll-py': [
|
|
'scroll-pt',
|
|
'scroll-pb'
|
|
],
|
|
touch: [
|
|
'touch-x',
|
|
'touch-y',
|
|
'touch-pz'
|
|
],
|
|
'touch-x': [
|
|
'touch'
|
|
],
|
|
'touch-y': [
|
|
'touch'
|
|
],
|
|
'touch-pz': [
|
|
'touch'
|
|
]
|
|
},
|
|
conflictingClassGroupModifiers: {
|
|
'font-size': [
|
|
'leading'
|
|
]
|
|
},
|
|
orderSensitiveModifiers: [
|
|
'*',
|
|
'**',
|
|
'after',
|
|
'backdrop',
|
|
'before',
|
|
'details-content',
|
|
'file',
|
|
'first-letter',
|
|
'first-line',
|
|
'marker',
|
|
'placeholder',
|
|
'selection'
|
|
]
|
|
};
|
|
};
|
|
/**
|
|
* @param baseConfig Config where other config will be merged into. This object will be mutated.
|
|
* @param configExtension Partial config to merge into the `baseConfig`.
|
|
*/ const mergeConfigs = (baseConfig, { cacheSize, prefix, experimentalParseClassName, extend = {}, override = {} })=>{
|
|
overrideProperty(baseConfig, 'cacheSize', cacheSize);
|
|
overrideProperty(baseConfig, 'prefix', prefix);
|
|
overrideProperty(baseConfig, 'experimentalParseClassName', experimentalParseClassName);
|
|
overrideConfigProperties(baseConfig.theme, override.theme);
|
|
overrideConfigProperties(baseConfig.classGroups, override.classGroups);
|
|
overrideConfigProperties(baseConfig.conflictingClassGroups, override.conflictingClassGroups);
|
|
overrideConfigProperties(baseConfig.conflictingClassGroupModifiers, override.conflictingClassGroupModifiers);
|
|
overrideProperty(baseConfig, 'orderSensitiveModifiers', override.orderSensitiveModifiers);
|
|
mergeConfigProperties(baseConfig.theme, extend.theme);
|
|
mergeConfigProperties(baseConfig.classGroups, extend.classGroups);
|
|
mergeConfigProperties(baseConfig.conflictingClassGroups, extend.conflictingClassGroups);
|
|
mergeConfigProperties(baseConfig.conflictingClassGroupModifiers, extend.conflictingClassGroupModifiers);
|
|
mergeArrayProperties(baseConfig, extend, 'orderSensitiveModifiers');
|
|
return baseConfig;
|
|
};
|
|
const overrideProperty = (baseObject, overrideKey, overrideValue)=>{
|
|
if (overrideValue !== undefined) {
|
|
baseObject[overrideKey] = overrideValue;
|
|
}
|
|
};
|
|
const overrideConfigProperties = (baseObject, overrideObject)=>{
|
|
if (overrideObject) {
|
|
for(const key in overrideObject){
|
|
overrideProperty(baseObject, key, overrideObject[key]);
|
|
}
|
|
}
|
|
};
|
|
const mergeConfigProperties = (baseObject, mergeObject)=>{
|
|
if (mergeObject) {
|
|
for(const key in mergeObject){
|
|
mergeArrayProperties(baseObject, mergeObject, key);
|
|
}
|
|
}
|
|
};
|
|
const mergeArrayProperties = (baseObject, mergeObject, key)=>{
|
|
const mergeValue = mergeObject[key];
|
|
if (mergeValue !== undefined) {
|
|
baseObject[key] = baseObject[key] ? baseObject[key].concat(mergeValue) : mergeValue;
|
|
}
|
|
};
|
|
const extendTailwindMerge = (configExtension, ...createConfig)=>typeof configExtension === 'function' ? createTailwindMerge(getDefaultConfig, configExtension, ...createConfig) : createTailwindMerge(()=>mergeConfigs(getDefaultConfig(), configExtension), ...createConfig);
|
|
const twMerge = /*#__PURE__*/ createTailwindMerge(getDefaultConfig);
|
|
;
|
|
//# sourceMappingURL=bundle-mjs.mjs.map
|
|
}),
|
|
]);
|
|
|
|
//# sourceMappingURL=node_modules_394613a2._.js.map
|