@fluster.io/dev
Version:
1,538 lines (1,537 loc) • 2.62 MB
JavaScript
var xa = Object.defineProperty;
var _a = (e, t, n) => t in e ? xa(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n;
var V = (e, t, n) => _a(e, typeof t != "symbol" ? t + "" : t, n);
import * as React from "react";
import React__default, { useState, useEffect, useMemo, useLayoutEffect, useRef, forwardRef, createElement, createContext, useContext, useId as useId$3, useCallback, useInsertionEffect as useInsertionEffect$1, Fragment, Component, PureComponent, createRef, isValidElement, cloneElement, useReducer, useImperativeHandle } from "react";
import * as ReactDOM from "react-dom";
import ReactDOM__default from "react-dom";
var commonjsGlobal = typeof globalThis < "u" ? globalThis : typeof window < "u" ? window : typeof global < "u" ? global : typeof self < "u" ? self : {};
function getDefaultExportFromCjs(e) {
return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
var jsxRuntime = { exports: {} }, reactJsxRuntime_production = {};
/**
* @license React
* react-jsx-runtime.production.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var hasRequiredReactJsxRuntime_production;
function requireReactJsxRuntime_production() {
if (hasRequiredReactJsxRuntime_production) return reactJsxRuntime_production;
hasRequiredReactJsxRuntime_production = 1;
var e = Symbol.for("react.transitional.element"), t = Symbol.for("react.fragment");
function n(o, l, d) {
var f = null;
if (d !== void 0 && (f = "" + d), l.key !== void 0 && (f = "" + l.key), "key" in l) {
d = {};
for (var h in l)
h !== "key" && (d[h] = l[h]);
} else d = l;
return l = d.ref, {
$$typeof: e,
type: o,
key: f,
ref: l !== void 0 ? l : null,
props: d
};
}
return reactJsxRuntime_production.Fragment = t, reactJsxRuntime_production.jsx = n, reactJsxRuntime_production.jsxs = n, reactJsxRuntime_production;
}
var reactJsxRuntime_development = {};
/**
* @license React
* react-jsx-runtime.development.js
*
* Copyright (c) Meta Platforms, Inc. and affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
var hasRequiredReactJsxRuntime_development;
function requireReactJsxRuntime_development() {
return hasRequiredReactJsxRuntime_development || (hasRequiredReactJsxRuntime_development = 1, process.env.NODE_ENV !== "production" && function() {
function e(Ue) {
if (Ue == null) return null;
if (typeof Ue == "function")
return Ue.$$typeof === Be ? null : Ue.displayName || Ue.name || null;
if (typeof Ue == "string") return Ue;
switch (Ue) {
case R:
return "Fragment";
case j:
return "Profiler";
case E:
return "StrictMode";
case Oe:
return "Suspense";
case te:
return "SuspenseList";
case oe:
return "Activity";
}
if (typeof Ue == "object")
switch (typeof Ue.tag == "number" && console.error(
"Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."
), Ue.$$typeof) {
case C:
return "Portal";
case Q:
return (Ue.displayName || "Context") + ".Provider";
case q:
return (Ue._context.displayName || "Context") + ".Consumer";
case se:
var ut = Ue.render;
return Ue = Ue.displayName, Ue || (Ue = ut.displayName || ut.name || "", Ue = Ue !== "" ? "ForwardRef(" + Ue + ")" : "ForwardRef"), Ue;
case ge:
return ut = Ue.displayName || null, ut !== null ? ut : e(Ue.type) || "Memo";
case je:
ut = Ue._payload, Ue = Ue._init;
try {
return e(Ue(ut));
} catch {
}
}
return null;
}
function t(Ue) {
return "" + Ue;
}
function n(Ue) {
try {
t(Ue);
var ut = !1;
} catch {
ut = !0;
}
if (ut) {
ut = console;
var nt = ut.error, et = typeof Symbol == "function" && Symbol.toStringTag && Ue[Symbol.toStringTag] || Ue.constructor.name || "Object";
return nt.call(
ut,
"The provided key is an unsupported type %s. This value must be coerced to a string before using it here.",
et
), t(Ue);
}
}
function o(Ue) {
if (Ue === R) return "<>";
if (typeof Ue == "object" && Ue !== null && Ue.$$typeof === je)
return "<...>";
try {
var ut = e(Ue);
return ut ? "<" + ut + ">" : "<...>";
} catch {
return "<...>";
}
}
function l() {
var Ue = ze.A;
return Ue === null ? null : Ue.getOwner();
}
function d() {
return Error("react-stack-top-frame");
}
function f(Ue) {
if (lt.call(Ue, "key")) {
var ut = Object.getOwnPropertyDescriptor(Ue, "key").get;
if (ut && ut.isReactWarning) return !1;
}
return Ue.key !== void 0;
}
function h(Ue, ut) {
function nt() {
A || (A = !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)",
ut
));
}
nt.isReactWarning = !0, Object.defineProperty(Ue, "key", {
get: nt,
configurable: !0
});
}
function g() {
var Ue = e(this.type);
return I[Ue] || (I[Ue] = !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."
)), Ue = this.props.ref, Ue !== void 0 ? Ue : null;
}
function y(Ue, ut, nt, et, ct, pt, bt, Ye) {
return nt = pt.ref, Ue = {
$$typeof: w,
type: Ue,
key: ut,
props: pt,
_owner: ct
}, (nt !== void 0 ? nt : null) !== null ? Object.defineProperty(Ue, "ref", {
enumerable: !1,
get: g
}) : Object.defineProperty(Ue, "ref", { enumerable: !1, value: null }), Ue._store = {}, Object.defineProperty(Ue._store, "validated", {
configurable: !1,
enumerable: !1,
writable: !0,
value: 0
}), Object.defineProperty(Ue, "_debugInfo", {
configurable: !1,
enumerable: !1,
writable: !0,
value: null
}), Object.defineProperty(Ue, "_debugStack", {
configurable: !1,
enumerable: !1,
writable: !0,
value: bt
}), Object.defineProperty(Ue, "_debugTask", {
configurable: !1,
enumerable: !1,
writable: !0,
value: Ye
}), Object.freeze && (Object.freeze(Ue.props), Object.freeze(Ue)), Ue;
}
function v(Ue, ut, nt, et, ct, pt, bt, Ye) {
var gt = ut.children;
if (gt !== void 0)
if (et)
if (Ze(gt)) {
for (et = 0; et < gt.length; et++)
b(gt[et]);
Object.freeze && Object.freeze(gt);
} 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 b(gt);
if (lt.call(ut, "key")) {
gt = e(Ue);
var xt = Object.keys(ut).filter(function(Tt) {
return Tt !== "key";
});
et = 0 < xt.length ? "{key: someKey, " + xt.join(": ..., ") + ": ...}" : "{key: someKey}", at[gt + et] || (xt = 0 < xt.length ? "{" + xt.join(": ..., ") + ": ...}" : "{}", console.error(
`A props object containing a "key" prop is being spread into JSX:
let props = %s;
<%s {...props} />
React keys must be passed directly to JSX without using spread:
let props = %s;
<%s key={someKey} {...props} />`,
et,
gt,
xt,
gt
), at[gt + et] = !0);
}
if (gt = null, nt !== void 0 && (n(nt), gt = "" + nt), f(ut) && (n(ut.key), gt = "" + ut.key), "key" in ut) {
nt = {};
for (var Et in ut)
Et !== "key" && (nt[Et] = ut[Et]);
} else nt = ut;
return gt && h(
nt,
typeof Ue == "function" ? Ue.displayName || Ue.name || "Unknown" : Ue
), y(
Ue,
gt,
pt,
ct,
l(),
nt,
bt,
Ye
);
}
function b(Ue) {
typeof Ue == "object" && Ue !== null && Ue.$$typeof === w && Ue._store && (Ue._store.validated = 1);
}
var x = React__default, w = Symbol.for("react.transitional.element"), C = Symbol.for("react.portal"), R = Symbol.for("react.fragment"), E = Symbol.for("react.strict_mode"), j = Symbol.for("react.profiler"), q = Symbol.for("react.consumer"), Q = Symbol.for("react.context"), se = Symbol.for("react.forward_ref"), Oe = Symbol.for("react.suspense"), te = Symbol.for("react.suspense_list"), ge = Symbol.for("react.memo"), je = Symbol.for("react.lazy"), oe = Symbol.for("react.activity"), Be = Symbol.for("react.client.reference"), ze = x.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, lt = Object.prototype.hasOwnProperty, Ze = Array.isArray, Je = console.createTask ? console.createTask : function() {
return null;
};
x = {
"react-stack-bottom-frame": function(Ue) {
return Ue();
}
};
var A, I = {}, He = x["react-stack-bottom-frame"].bind(
x,
d
)(), Fe = Je(o(d)), at = {};
reactJsxRuntime_development.Fragment = R, reactJsxRuntime_development.jsx = function(Ue, ut, nt, et, ct) {
var pt = 1e4 > ze.recentlyCreatedOwnerStacks++;
return v(
Ue,
ut,
nt,
!1,
et,
ct,
pt ? Error("react-stack-top-frame") : He,
pt ? Je(o(Ue)) : Fe
);
}, reactJsxRuntime_development.jsxs = function(Ue, ut, nt, et, ct) {
var pt = 1e4 > ze.recentlyCreatedOwnerStacks++;
return v(
Ue,
ut,
nt,
!0,
et,
ct,
pt ? Error("react-stack-top-frame") : He,
pt ? Je(o(Ue)) : Fe
);
};
}()), reactJsxRuntime_development;
}
var hasRequiredJsxRuntime;
function requireJsxRuntime() {
return hasRequiredJsxRuntime || (hasRequiredJsxRuntime = 1, process.env.NODE_ENV === "production" ? jsxRuntime.exports = requireReactJsxRuntime_production() : jsxRuntime.exports = requireReactJsxRuntime_development()), jsxRuntime.exports;
}
var jsxRuntimeExports = requireJsxRuntime(), AppRoutes = /* @__PURE__ */ ((e) => (e.dashboard = "/", e.settings = "/settings", e.pdf = "/pdf", e.htmlFile = "/html_file", e.bibliography = "/bibliography", e.dictionary = "/dictionary", e.snippets = "/snippets", e.kanbanBoards = "/kanban-boards", e.equations = "/equations", e.viewMdxNote = "/mdx", e.splitViewEditMdx = "/mdx-split-view", e.embeddedDocs = "/embedded-docs", e.bookmarks = "/bookmarks", e.taskLists = "/taskLists", e.search = "/search", e.semanticSearch = "/semantic-search", e.onboarding = "/onboarding", e.aiMainChat = "/aiChat", e.notebookInteractive = "/notebook-interactive", e.constantsTable = "/docs-constants", e.full_screen_editor = "/editor-full", e))(AppRoutes || {});
const Tag = ({ value: e }) => {
const t = new URLSearchParams();
return t.set("by_tag", e), /* @__PURE__ */ jsxRuntimeExports.jsxs(
"a",
{
href: `${AppRoutes.search}?${t.toString()}`,
className: "bg-primary text-primary-foreground no-underline p-1 rounded cursor-pointer text-nowrap",
children: [
/* @__PURE__ */ jsxRuntimeExports.jsx("span", { children: "#" }),
e
]
}
);
};
Tag.displayName = "Tag";
function r(e) {
var t, n, o = "";
if (typeof e == "string" || typeof e == "number") o += e;
else if (typeof e == "object") if (Array.isArray(e)) {
var l = e.length;
for (t = 0; t < l; t++) e[t] && (n = r(e[t])) && (o && (o += " "), o += n);
} else for (n in e) e[n] && (o && (o += " "), o += n);
return o;
}
function clsx() {
for (var e, t, n = 0, o = "", l = arguments.length; n < l; n++) (e = arguments[n]) && (t = r(e)) && (o && (o += " "), o += t);
return o;
}
const CLASS_PART_SEPARATOR = "-", createClassGroupUtils = (e) => {
const t = createClassMap(e), {
conflictingClassGroups: n,
conflictingClassGroupModifiers: o
} = e;
return {
getClassGroupId: (f) => {
const h = f.split(CLASS_PART_SEPARATOR);
return h[0] === "" && h.length !== 1 && h.shift(), getGroupRecursive(h, t) || getGroupIdForArbitraryProperty(f);
},
getConflictingClassGroupIds: (f, h) => {
const g = n[f] || [];
return h && o[f] ? [...g, ...o[f]] : g;
}
};
}, getGroupRecursive = (e, t) => {
var f;
if (e.length === 0)
return t.classGroupId;
const n = e[0], o = t.nextPart.get(n), l = o ? getGroupRecursive(e.slice(1), o) : void 0;
if (l)
return l;
if (t.validators.length === 0)
return;
const d = e.join(CLASS_PART_SEPARATOR);
return (f = t.validators.find(({
validator: h
}) => h(d))) == null ? void 0 : f.classGroupId;
}, arbitraryPropertyRegex = /^\[(.+)\]$/, getGroupIdForArbitraryProperty = (e) => {
if (arbitraryPropertyRegex.test(e)) {
const t = arbitraryPropertyRegex.exec(e)[1], n = t == null ? void 0 : t.substring(0, t.indexOf(":"));
if (n)
return "arbitrary.." + n;
}
}, createClassMap = (e) => {
const {
theme: t,
classGroups: n
} = e, o = {
nextPart: /* @__PURE__ */ new Map(),
validators: []
};
for (const l in n)
processClassesRecursively(n[l], o, l, t);
return o;
}, processClassesRecursively = (e, t, n, o) => {
e.forEach((l) => {
if (typeof l == "string") {
const d = l === "" ? t : getPart(t, l);
d.classGroupId = n;
return;
}
if (typeof l == "function") {
if (isThemeGetter(l)) {
processClassesRecursively(l(o), t, n, o);
return;
}
t.validators.push({
validator: l,
classGroupId: n
});
return;
}
Object.entries(l).forEach(([d, f]) => {
processClassesRecursively(f, getPart(t, d), n, o);
});
});
}, getPart = (e, t) => {
let n = e;
return t.split(CLASS_PART_SEPARATOR).forEach((o) => {
n.nextPart.has(o) || n.nextPart.set(o, {
nextPart: /* @__PURE__ */ new Map(),
validators: []
}), n = n.nextPart.get(o);
}), n;
}, isThemeGetter = (e) => e.isThemeGetter, createLruCache = (e) => {
if (e < 1)
return {
get: () => {
},
set: () => {
}
};
let t = 0, n = /* @__PURE__ */ new Map(), o = /* @__PURE__ */ new Map();
const l = (d, f) => {
n.set(d, f), t++, t > e && (t = 0, o = n, n = /* @__PURE__ */ new Map());
};
return {
get(d) {
let f = n.get(d);
if (f !== void 0)
return f;
if ((f = o.get(d)) !== void 0)
return l(d, f), f;
},
set(d, f) {
n.has(d) ? n.set(d, f) : l(d, f);
}
};
}, IMPORTANT_MODIFIER = "!", MODIFIER_SEPARATOR = ":", MODIFIER_SEPARATOR_LENGTH = MODIFIER_SEPARATOR.length, createParseClassName = (e) => {
const {
prefix: t,
experimentalParseClassName: n
} = e;
let o = (l) => {
const d = [];
let f = 0, h = 0, g = 0, y;
for (let C = 0; C < l.length; C++) {
let R = l[C];
if (f === 0 && h === 0) {
if (R === MODIFIER_SEPARATOR) {
d.push(l.slice(g, C)), g = C + MODIFIER_SEPARATOR_LENGTH;
continue;
}
if (R === "/") {
y = C;
continue;
}
}
R === "[" ? f++ : R === "]" ? f-- : R === "(" ? h++ : R === ")" && h--;
}
const v = d.length === 0 ? l : l.substring(g), b = stripImportantModifier(v), x = b !== v, w = y && y > g ? y - g : void 0;
return {
modifiers: d,
hasImportantModifier: x,
baseClassName: b,
maybePostfixModifierPosition: w
};
};
if (t) {
const l = t + MODIFIER_SEPARATOR, d = o;
o = (f) => f.startsWith(l) ? d(f.substring(l.length)) : {
isExternal: !0,
modifiers: [],
hasImportantModifier: !1,
baseClassName: f,
maybePostfixModifierPosition: void 0
};
}
if (n) {
const l = o;
o = (d) => n({
className: d,
parseClassName: l
});
}
return o;
}, stripImportantModifier = (e) => e.endsWith(IMPORTANT_MODIFIER) ? e.substring(0, e.length - 1) : e.startsWith(IMPORTANT_MODIFIER) ? e.substring(1) : e, createSortModifiers = (e) => {
const t = Object.fromEntries(e.orderSensitiveModifiers.map((o) => [o, !0]));
return (o) => {
if (o.length <= 1)
return o;
const l = [];
let d = [];
return o.forEach((f) => {
f[0] === "[" || t[f] ? (l.push(...d.sort(), f), d = []) : d.push(f);
}), l.push(...d.sort()), l;
};
}, createConfigUtils = (e) => ({
cache: createLruCache(e.cacheSize),
parseClassName: createParseClassName(e),
sortModifiers: createSortModifiers(e),
...createClassGroupUtils(e)
}), SPLIT_CLASSES_REGEX = /\s+/, mergeClassList = (e, t) => {
const {
parseClassName: n,
getClassGroupId: o,
getConflictingClassGroupIds: l,
sortModifiers: d
} = t, f = [], h = e.trim().split(SPLIT_CLASSES_REGEX);
let g = "";
for (let y = h.length - 1; y >= 0; y -= 1) {
const v = h[y], {
isExternal: b,
modifiers: x,
hasImportantModifier: w,
baseClassName: C,
maybePostfixModifierPosition: R
} = n(v);
if (b) {
g = v + (g.length > 0 ? " " + g : g);
continue;
}
let E = !!R, j = o(E ? C.substring(0, R) : C);
if (!j) {
if (!E) {
g = v + (g.length > 0 ? " " + g : g);
continue;
}
if (j = o(C), !j) {
g = v + (g.length > 0 ? " " + g : g);
continue;
}
E = !1;
}
const q = d(x).join(":"), Q = w ? q + IMPORTANT_MODIFIER : q, se = Q + j;
if (f.includes(se))
continue;
f.push(se);
const Oe = l(j, E);
for (let te = 0; te < Oe.length; ++te) {
const ge = Oe[te];
f.push(Q + ge);
}
g = v + (g.length > 0 ? " " + g : g);
}
return g;
};
function twJoin() {
let e = 0, t, n, o = "";
for (; e < arguments.length; )
(t = arguments[e++]) && (n = toValue(t)) && (o && (o += " "), o += n);
return o;
}
const toValue = (e) => {
if (typeof e == "string")
return e;
let t, n = "";
for (let o = 0; o < e.length; o++)
e[o] && (t = toValue(e[o])) && (n && (n += " "), n += t);
return n;
};
function createTailwindMerge(e, ...t) {
let n, o, l, d = f;
function f(g) {
const y = t.reduce((v, b) => b(v), e());
return n = createConfigUtils(y), o = n.cache.get, l = n.cache.set, d = h, h(g);
}
function h(g) {
const y = o(g);
if (y)
return y;
const v = mergeClassList(g, n);
return l(g, v), v;
}
return function() {
return d(twJoin.apply(null, arguments));
};
}
const fromTheme = (e) => {
const t = (n) => n[e] || [];
return t.isThemeGetter = !0, t;
}, arbitraryValueRegex = /^\[(?:(\w[\w-]*):)?(.+)\]$/i, arbitraryVariableRegex = /^\((?:(\w[\w-]*):)?(.+)\)$/i, fractionRegex = /^\d+\/\d+$/, tshirtUnitRegex = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, 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$/, colorFunctionRegex = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/, shadowRegex = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, imageRegex = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, isFraction = (e) => fractionRegex.test(e), isNumber$4 = (e) => !!e && !Number.isNaN(Number(e)), isInteger = (e) => !!e && Number.isInteger(Number(e)), isPercent$1 = (e) => e.endsWith("%") && isNumber$4(e.slice(0, -1)), isTshirtSize = (e) => tshirtUnitRegex.test(e), isAny = () => !0, isLengthOnly = (e) => (
// `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(e) && !colorFunctionRegex.test(e)
), isNever = () => !1, isShadow = (e) => shadowRegex.test(e), isImage = (e) => imageRegex.test(e), isAnyNonArbitrary = (e) => !isArbitraryValue(e) && !isArbitraryVariable(e), isArbitrarySize = (e) => getIsArbitraryValue(e, isLabelSize, isNever), isArbitraryValue = (e) => arbitraryValueRegex.test(e), isArbitraryLength = (e) => getIsArbitraryValue(e, isLabelLength, isLengthOnly), isArbitraryNumber = (e) => getIsArbitraryValue(e, isLabelNumber, isNumber$4), isArbitraryPosition = (e) => getIsArbitraryValue(e, isLabelPosition, isNever), isArbitraryImage = (e) => getIsArbitraryValue(e, isLabelImage, isImage), isArbitraryShadow = (e) => getIsArbitraryValue(e, isLabelShadow, isShadow), isArbitraryVariable = (e) => arbitraryVariableRegex.test(e), isArbitraryVariableLength = (e) => getIsArbitraryVariable(e, isLabelLength), isArbitraryVariableFamilyName = (e) => getIsArbitraryVariable(e, isLabelFamilyName), isArbitraryVariablePosition = (e) => getIsArbitraryVariable(e, isLabelPosition), isArbitraryVariableSize = (e) => getIsArbitraryVariable(e, isLabelSize), isArbitraryVariableImage = (e) => getIsArbitraryVariable(e, isLabelImage), isArbitraryVariableShadow = (e) => getIsArbitraryVariable(e, isLabelShadow, !0), getIsArbitraryValue = (e, t, n) => {
const o = arbitraryValueRegex.exec(e);
return o ? o[1] ? t(o[1]) : n(o[2]) : !1;
}, getIsArbitraryVariable = (e, t, n = !1) => {
const o = arbitraryVariableRegex.exec(e);
return o ? o[1] ? t(o[1]) : n : !1;
}, isLabelPosition = (e) => e === "position" || e === "percentage", isLabelImage = (e) => e === "image" || e === "url", isLabelSize = (e) => e === "length" || e === "size" || e === "bg-size", isLabelLength = (e) => e === "length", isLabelNumber = (e) => e === "number", isLabelFamilyName = (e) => e === "family-name", isLabelShadow = (e) => e === "shadow", getDefaultConfig = () => {
const e = fromTheme("color"), t = fromTheme("font"), n = fromTheme("text"), o = fromTheme("font-weight"), l = fromTheme("tracking"), d = fromTheme("leading"), f = fromTheme("breakpoint"), h = fromTheme("container"), g = fromTheme("spacing"), y = fromTheme("radius"), v = fromTheme("shadow"), b = fromTheme("inset-shadow"), x = fromTheme("text-shadow"), w = fromTheme("drop-shadow"), C = fromTheme("blur"), R = fromTheme("perspective"), E = fromTheme("aspect"), j = fromTheme("ease"), q = fromTheme("animate"), Q = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"], se = () => [
"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"
], Oe = () => [...se(), isArbitraryVariable, isArbitraryValue], te = () => ["auto", "hidden", "clip", "visible", "scroll"], ge = () => ["auto", "contain", "none"], je = () => [isArbitraryVariable, isArbitraryValue, g], oe = () => [isFraction, "full", "auto", ...je()], Be = () => [isInteger, "none", "subgrid", isArbitraryVariable, isArbitraryValue], ze = () => ["auto", {
span: ["full", isInteger, isArbitraryVariable, isArbitraryValue]
}, isInteger, isArbitraryVariable, isArbitraryValue], lt = () => [isInteger, "auto", isArbitraryVariable, isArbitraryValue], Ze = () => ["auto", "min", "max", "fr", isArbitraryVariable, isArbitraryValue], Je = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"], A = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"], I = () => ["auto", ...je()], He = () => [isFraction, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...je()], Fe = () => [e, isArbitraryVariable, isArbitraryValue], at = () => [...se(), isArbitraryVariablePosition, isArbitraryPosition, {
position: [isArbitraryVariable, isArbitraryValue]
}], Ue = () => ["no-repeat", {
repeat: ["", "x", "y", "space", "round"]
}], ut = () => ["auto", "cover", "contain", isArbitraryVariableSize, isArbitrarySize, {
size: [isArbitraryVariable, isArbitraryValue]
}], nt = () => [isPercent$1, isArbitraryVariableLength, isArbitraryLength], et = () => [
// Deprecated since Tailwind CSS v4.0.0
"",
"none",
"full",
y,
isArbitraryVariable,
isArbitraryValue
], ct = () => ["", isNumber$4, isArbitraryVariableLength, isArbitraryLength], pt = () => ["solid", "dashed", "dotted", "double"], bt = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], Ye = () => [isNumber$4, isPercent$1, isArbitraryVariablePosition, isArbitraryPosition], gt = () => [
// Deprecated since Tailwind CSS v4.0.0
"",
"none",
C,
isArbitraryVariable,
isArbitraryValue
], xt = () => ["none", isNumber$4, isArbitraryVariable, isArbitraryValue], Et = () => ["none", isNumber$4, isArbitraryVariable, isArbitraryValue], Tt = () => [isNumber$4, isArbitraryVariable, isArbitraryValue], _t = () => [isFraction, "full", ...je()];
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$4],
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, E]
}],
/**
* 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$4, isArbitraryValue, isArbitraryVariable, h]
}],
/**
* Break After
* @see https://tailwindcss.com/docs/break-after
*/
"break-after": [{
"break-after": Q()
}],
/**
* Break Before
* @see https://tailwindcss.com/docs/break-before
*/
"break-before": [{
"break-before": Q()
}],
/**
* 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: Oe()
}],
/**
* Overflow
* @see https://tailwindcss.com/docs/overflow
*/
overflow: [{
overflow: te()
}],
/**
* Overflow X
* @see https://tailwindcss.com/docs/overflow
*/
"overflow-x": [{
"overflow-x": te()
}],
/**
* Overflow Y
* @see https://tailwindcss.com/docs/overflow
*/
"overflow-y": [{
"overflow-y": te()
}],
/**
* Overscroll Behavior
* @see https://tailwindcss.com/docs/overscroll-behavior
*/
overscroll: [{
overscroll: ge()
}],
/**
* Overscroll Behavior X
* @see https://tailwindcss.com/docs/overscroll-behavior
*/
"overscroll-x": [{
"overscroll-x": ge()
}],
/**
* Overscroll Behavior Y
* @see https://tailwindcss.com/docs/overscroll-behavior
*/
"overscroll-y": [{
"overscroll-y": ge()
}],
/**
* 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: oe()
}],
/**
* Right / Left
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
"inset-x": [{
"inset-x": oe()
}],
/**
* Top / Bottom
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
"inset-y": [{
"inset-y": oe()
}],
/**
* Start
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
start: [{
start: oe()
}],
/**
* End
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
end: [{
end: oe()
}],
/**
* Top
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
top: [{
top: oe()
}],
/**
* Right
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
right: [{
right: oe()
}],
/**
* Bottom
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
bottom: [{
bottom: oe()
}],
/**
* Left
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
left: [{
left: oe()
}],
/**
* 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", h, ...je()]
}],
/**
* 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$4, isFraction, "auto", "initial", "none", isArbitraryValue]
}],
/**
* Flex Grow
* @see https://tailwindcss.com/docs/flex-grow
*/
grow: [{
grow: ["", isNumber$4, isArbitraryVariable, isArbitraryValue]
}],
/**
* Flex Shrink
* @see https://tailwindcss.com/docs/flex-shrink
*/
shrink: [{
shrink: ["", isNumber$4, 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": Be()
}],
/**
* Grid Column Start / End
* @see https://tailwindcss.com/docs/grid-column
*/
"col-start-end": [{
col: ze()
}],
/**
* Grid Column Start
* @see https://tailwindcss.com/docs/grid-column
*/
"col-start": [{
"col-start": lt()
}],
/**
* Grid Column End
* @see https://tailwindcss.com/docs/grid-column
*/
"col-end": [{
"col-end": lt()
}],
/**
* Grid Template Rows
* @see https://tailwindcss.com/docs/grid-template-rows
*/
"grid-rows": [{
"grid-rows": Be()
}],
/**
* Grid Row Start / End
* @see https://tailwindcss.com/docs/grid-row
*/
"row-start-end": [{
row: ze()
}],
/**
* Grid Row Start
* @see https://tailwindcss.com/docs/grid-row
*/
"row-start": [{
"row-start": lt()
}],
/**
* Grid Row End
* @see https://tailwindcss.com/docs/grid-row
*/
"row-end": [{
"row-end": lt()
}],
/**
* 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": Ze()
}],
/**
* Grid Auto Rows
* @see https://tailwindcss.com/docs/grid-auto-rows
*/
"auto-rows": [{
"auto-rows": Ze()
}],
/**
* Gap
* @see https://tailwindcss.com/docs/gap
*/
gap: [{
gap: je()
}],
/**
* Gap X
* @see https://tailwindcss.com/docs/gap
*/
"gap-x": [{
"gap-x": je()
}],
/**
* Gap Y
* @see https://tailwindcss.com/docs/gap
*/
"gap-y": [{
"gap-y": je()
}],
/**
* Justify Content
* @see https://tailwindcss.com/docs/justify-content
*/
"justify-content": [{
justify: [...Je(), "normal"]
}],
/**
* Justify Items
* @see https://tailwindcss.com/docs/justify-items
*/
"justify-items": [{
"justify-items": [...A(), "normal"]
}],
/**
* Justify Self
* @see https://tailwindcss.com/docs/justify-self
*/
"justify-self": [{
"justify-self": ["auto", ...A()]
}],
/**
* Align Content
* @see https://tailwindcss.com/docs/align-content
*/
"align-content": [{
content: ["normal", ...Je()]
}],
/**
* Align Items
* @see https://tailwindcss.com/docs/align-items
*/
"align-items": [{
items: [...A(), {
baseline: ["", "last"]
}]
}],
/**
* Align Self
* @see https://tailwindcss.com/docs/align-self
*/
"align-self": [{
self: ["auto", ...A(), {
baseline: ["", "last"]
}]
}],
/**
* Place Content
* @see https://tailwindcss.com/docs/place-content
*/
"place-content": [{
"place-content": Je()
}],
/**
* Place Items
* @see https://tailwindcss.com/docs/place-items
*/
"place-items": [{
"place-items": [...A(), "baseline"]
}],
/**
* Place Self
* @see https://tailwindcss.com/docs/place-self
*/
"place-self": [{
"place-self": ["auto", ...A()]
}],
// Spacing
/**
* Padding
* @see https://tailwindcss.com/docs/padding
*/
p: [{
p: je()
}],
/**
* Padding X
* @see https://tailwindcss.com/docs/padding
*/
px: [{
px: je()
}],
/**
* Padding Y
* @see https://tailwindcss.com/docs/padding
*/
py: [{
py: je()
}],
/**
* Padding Start
* @see https://tailwindcss.com/docs/padding
*/
ps: [{
ps: je()
}],
/**
* Padding End
* @see https://tailwindcss.com/docs/padding
*/
pe: [{
pe: je()
}],
/**
* Padding Top
* @see https://tailwindcss.com/docs/padding
*/
pt: [{
pt: je()
}],
/**
* Padding Right
* @see https://tailwindcss.com/docs/padding
*/
pr: [{
pr: je()
}],
/**
* Padding Bottom
* @see https://tailwindcss.com/docs/padding
*/
pb: [{
pb: je()
}],
/**
* Padding Left
* @see https://tailwindcss.com/docs/padding
*/
pl: [{
pl: je()
}],
/**
* Margin
* @see https://tailwindcss.com/docs/margin
*/
m: [{
m: I()
}],
/**
* Margin X
* @see https://tailwindcss.com/docs/margin
*/
mx: [{
mx: I()
}],
/**
* Margin Y
* @see https://tailwindcss.com/docs/margin
*/
my: [{
my: I()
}],
/**
* Margin Start
* @see https://tailwindcss.com/docs/margin
*/
ms: [{
ms: I()
}],
/**
* Margin End
* @see https://tailwindcss.com/docs/margin
*/
me: [{
me: I()
}],
/**
* Margin Top
* @see https://tailwindcss.com/docs/margin
*/
mt: [{
mt: I()
}],
/**
* Margin Right
* @see https://tailwindcss.com/docs/margin
*/
mr: [{
mr: I()
}],
/**
* Margin Bottom
* @see https://tailwindcss.com/docs/margin
*/
mb: [{
mb: I()
}],
/**
* Margin Left
* @see https://tailwindcss.com/docs/margin
*/
ml: [{
ml: I()
}],
/**
* Space Between X
* @see https://tailwindcss.com/docs/margin#adding-space-between-children
*/
"space-x": [{
"space-x": je()
}],
/**
* 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": je()
}],
/**
* 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: He()
}],
/**
* Width
* @see https://tailwindcss.com/docs/width
*/
w: [{
w: [h, "screen", ...He()]
}],
/**
* Min-Width
* @see https://tailwindcss.com/docs/min-width
*/
"min-w": [{
"min-w": [
h,
"screen",
/** Deprecated. @see https://github.com/tailwindlabs/tailwindcss.com/issues/2027#issuecomment-2620152757 */
"none",
...He()
]
}],
/**
* Max-Width
* @see https://tailwindcss.com/docs/max-width
*/
"max-w": [{
"max-w": [
h,
"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: [f]
},
...He()
]
}],
/**
* Height
* @see https://tailwindcss.com/docs/height
*/
h: [{
h: ["screen", "lh", ...He()]
}],
/**
* Min-Height
* @see https://tailwindcss.com/docs/min-height
*/
"min-h": [{
"min-h": ["screen", "lh", "none", ...He()]
}],
/**
* Max-Height
* @see https://tailwindcss.com/docs/max-height
*/
"max-h": [{
"max-h": ["screen", "lh", ...He()]
}],
// ------------------
// --- Typography ---
// ------------------
/**
* Font Size
* @see https://tailwindcss.com/docs/font-size
*/
"font-size": [{
text: ["base", n, 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: [o, 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$1, isArbitraryValue]
}],
/**
* Font Family
* @see https://tailwindcss.com/docs/font-family
*/
"font-family": [{
font: [isArbitraryVariableFamilyName, isArbitraryValue, t]
}],
/**
* 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: [l, isArbitraryVariable, isArbitraryValue]
}],
/**
* Line Clamp
* @see https://tailwindcss.com/docs/line-clamp
*/
"line-clamp": [{
"line-clamp": [isNumber$4, "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 */
d,
...je()
]
}],
/**
* 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: Fe()
}],
/**
* Text Color
* @see https://tailwindcss.com/docs/text-color
*/
"text-color": [{
text: Fe()
}],
/**
* 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: [...pt(), "wavy"]
}],
/**
* Text Decoration Thickness
* @see https://tailwindcss.com/docs/text-decoration-thickness
*/
"text-decoration-thickness": [{
decoration: [isNumber$4, "from-font", "auto", isArbitraryVariable, isArbitraryLength]
}],
/**
* Text Decoration Color
* @see https://tailwindcss.com/docs/text-decoration-color
*/
"text-decoration-color": [{
decoration: Fe()
}],
/**
* Text Underline Offset
* @see https://tailwindcss.com/docs/text-underline-offset
*/
"underline-offset": [{
"underline-offset": [isNumber$4, "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: je()
}],
/**
* 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]
}],