Files
Brandon Thomas 0daf83dba9 mirror repo (WIP)
Need to remove secrets before entire repo can be made public.
2025-09-18 22:45:56 -04:00

2807 lines
79 KiB
JavaScript

import { jsxs as je, jsx as ce } from "react/jsx-runtime";
import * as ie from "react";
import P, { useState as N, useEffect as Q, useLayoutEffect as nt, useRef as S, forwardRef as ot, useCallback as _, Fragment as X, isValidElement as st, cloneElement as lt, createElement as it, useContext as pe, createContext as Ee, useMemo as Me } from "react";
var at = Object.defineProperty, ct = (e, t, r) => t in e ? at(e, t, { enumerable: !0, configurable: !0, writable: !0, value: r }) : e[t] = r, ye = (e, t, r) => (ct(e, typeof t != "symbol" ? t + "" : t, r), r);
let dt = class {
constructor() {
ye(this, "current", this.detect()), ye(this, "handoffState", "pending"), ye(this, "currentId", 0);
}
set(t) {
this.current !== t && (this.handoffState = "pending", this.currentId = 0, this.current = t);
}
reset() {
this.set(this.detect());
}
nextId() {
return ++this.currentId;
}
get isServer() {
return this.current === "server";
}
get isClient() {
return this.current === "client";
}
detect() {
return typeof window > "u" || typeof document > "u" ? "server" : "client";
}
handoff() {
this.handoffState === "pending" && (this.handoffState = "complete");
}
get isHandoffComplete() {
return this.handoffState === "complete";
}
}, ue = new dt();
function ut(e) {
typeof queueMicrotask == "function" ? queueMicrotask(e) : Promise.resolve().then(e).catch((t) => setTimeout(() => {
throw t;
}));
}
function fe() {
let e = [], t = { addEventListener(r, n, o, s) {
return r.addEventListener(n, o, s), t.add(() => r.removeEventListener(n, o, s));
}, requestAnimationFrame(...r) {
let n = requestAnimationFrame(...r);
return t.add(() => cancelAnimationFrame(n));
}, nextFrame(...r) {
return t.requestAnimationFrame(() => t.requestAnimationFrame(...r));
}, setTimeout(...r) {
let n = setTimeout(...r);
return t.add(() => clearTimeout(n));
}, microTask(...r) {
let n = { current: !0 };
return ut(() => {
n.current && r[0]();
}), t.add(() => {
n.current = !1;
});
}, style(r, n, o) {
let s = r.style.getPropertyValue(n);
return Object.assign(r.style, { [n]: o }), this.add(() => {
Object.assign(r.style, { [n]: s });
});
}, group(r) {
let n = fe();
return r(n), this.add(() => n.dispose());
}, add(r) {
return e.includes(r) || e.push(r), () => {
let n = e.indexOf(r);
if (n >= 0) for (let o of e.splice(n, 1)) o();
};
}, dispose() {
for (let r of e.splice(0)) r();
} };
return t;
}
function Oe() {
let [e] = N(fe);
return Q(() => () => e.dispose(), [e]), e;
}
let H = (e, t) => {
ue.isServer ? Q(e, t) : nt(e, t);
};
function Ie(e) {
let t = S(e);
return H(() => {
t.current = e;
}, [e]), t;
}
let O = function(e) {
let t = Ie(e);
return P.useCallback((...r) => t.current(...r), [t]);
};
function Ce(...e) {
return Array.from(new Set(e.flatMap((t) => typeof t == "string" ? t.split(" ") : []))).filter(Boolean).join(" ");
}
function ge(e, t, ...r) {
if (e in t) {
let o = t[e];
return typeof o == "function" ? o(...r) : o;
}
let n = new Error(`Tried to handle "${e}" but there is no handler defined. Only defined handlers are: ${Object.keys(t).map((o) => `"${o}"`).join(", ")}.`);
throw Error.captureStackTrace && Error.captureStackTrace(n, ge), n;
}
var Le = ((e) => (e[e.None = 0] = "None", e[e.RenderStrategy = 1] = "RenderStrategy", e[e.Static = 2] = "Static", e))(Le || {}), G = ((e) => (e[e.Unmount = 0] = "Unmount", e[e.Hidden = 1] = "Hidden", e))(G || {});
function Ge() {
let e = ft();
return _((t) => pt({ mergeRefs: e, ...t }), [e]);
}
function pt({ ourProps: e, theirProps: t, slot: r, defaultTag: n, features: o, visible: s = !0, name: a, mergeRefs: l }) {
l = l ?? gt;
let i = He(t, e);
if (s) return de(i, r, n, a, l);
let u = o ?? 0;
if (u & 2) {
let { static: c = !1, ...f } = i;
if (c) return de(f, r, n, a, l);
}
if (u & 1) {
let { unmount: c = !0, ...f } = i;
return ge(c ? 0 : 1, { 0() {
return null;
}, 1() {
return de({ ...f, hidden: !0, style: { display: "none" } }, r, n, a, l);
} });
}
return de(i, r, n, a, l);
}
function de(e, t = {}, r, n, o) {
let { as: s = r, children: a, refName: l = "ref", ...i } = we(e, ["unmount", "static"]), u = e.ref !== void 0 ? { [l]: e.ref } : {}, c = typeof a == "function" ? a(t) : a;
"className" in i && i.className && typeof i.className == "function" && (i.className = i.className(t)), i["aria-labelledby"] && i["aria-labelledby"] === i.id && (i["aria-labelledby"] = void 0);
let f = {};
if (t) {
let h = !1, m = [];
for (let [p, g] of Object.entries(t)) typeof g == "boolean" && (h = !0), g === !0 && m.push(p.replace(/([A-Z])/g, (d) => `-${d.toLowerCase()}`));
if (h) {
f["data-headlessui-state"] = m.join(" ");
for (let p of m) f[`data-${p}`] = "";
}
}
if (s === X && (Object.keys(q(i)).length > 0 || Object.keys(q(f)).length > 0)) if (!st(c) || Array.isArray(c) && c.length > 1) {
if (Object.keys(q(i)).length > 0) throw new Error(['Passing props on "Fragment"!', "", `The current component <${n} /> is rendering a "Fragment".`, "However we need to passthrough the following props:", Object.keys(q(i)).concat(Object.keys(q(f))).map((h) => ` - ${h}`).join(`
`), "", "You can apply a few solutions:", ['Add an `as="..."` prop, to ensure that we render an actual element instead of a "Fragment".', "Render a single element as the child so that we can forward the props onto that element."].map((h) => ` - ${h}`).join(`
`)].join(`
`));
} else {
let h = c.props, m = h == null ? void 0 : h.className, p = typeof m == "function" ? (...v) => Ce(m(...v), i.className) : Ce(m, i.className), g = p ? { className: p } : {}, d = He(c.props, q(we(i, ["ref"])));
for (let v in f) v in d && delete f[v];
return lt(c, Object.assign({}, d, f, u, { ref: o(mt(c), u.ref) }, g));
}
return it(s, Object.assign({}, we(i, ["ref"]), s !== X && u, s !== X && f), c);
}
function ft() {
let e = S([]), t = _((r) => {
for (let n of e.current) n != null && (typeof n == "function" ? n(r) : n.current = r);
}, []);
return (...r) => {
if (!r.every((n) => n == null)) return e.current = r, t;
};
}
function gt(...e) {
return e.every((t) => t == null) ? void 0 : (t) => {
for (let r of e) r != null && (typeof r == "function" ? r(t) : r.current = t);
};
}
function He(...e) {
if (e.length === 0) return {};
if (e.length === 1) return e[0];
let t = {}, r = {};
for (let n of e) for (let o in n) o.startsWith("on") && typeof n[o] == "function" ? (r[o] != null || (r[o] = []), r[o].push(n[o])) : t[o] = n[o];
if (t.disabled || t["aria-disabled"]) for (let n in r) /^(on(?:Click|Pointer|Mouse|Key)(?:Down|Up|Press)?)$/.test(n) && (r[n] = [(o) => {
var s;
return (s = o == null ? void 0 : o.preventDefault) == null ? void 0 : s.call(o);
}]);
for (let n in r) Object.assign(t, { [n](o, ...s) {
let a = r[n];
for (let l of a) {
if ((o instanceof Event || (o == null ? void 0 : o.nativeEvent) instanceof Event) && o.defaultPrevented) return;
l(o, ...s);
}
} });
return t;
}
function Ae(e) {
var t;
return Object.assign(ot(e), { displayName: (t = e.displayName) != null ? t : e.name });
}
function q(e) {
let t = Object.assign({}, e);
for (let r in t) t[r] === void 0 && delete t[r];
return t;
}
function we(e, t = []) {
let r = Object.assign({}, e);
for (let n of t) n in r && delete r[n];
return r;
}
function mt(e) {
return P.version.split(".")[0] >= "19" ? e.props.ref : e.ref;
}
let bt = Symbol();
function Ue(...e) {
let t = S(e);
Q(() => {
t.current = e;
}, [e]);
let r = O((n) => {
for (let o of t.current) o != null && (typeof o == "function" ? o(n) : o.current = n);
});
return e.every((n) => n == null || (n == null ? void 0 : n[bt])) ? void 0 : r;
}
function ht(e = 0) {
let [t, r] = N(e), n = _((i) => r(i), [t]), o = _((i) => r((u) => u | i), [t]), s = _((i) => (t & i) === i, [t]), a = _((i) => r((u) => u & ~i), [r]), l = _((i) => r((u) => u ^ i), [r]);
return { flags: t, setFlag: n, addFlag: o, hasFlag: s, removeFlag: a, toggleFlag: l };
}
var ze, $e;
typeof process < "u" && typeof globalThis < "u" && typeof Element < "u" && ((ze = process == null ? void 0 : process.env) == null ? void 0 : ze.NODE_ENV) === "test" && typeof (($e = Element == null ? void 0 : Element.prototype) == null ? void 0 : $e.getAnimations) > "u" && (Element.prototype.getAnimations = function() {
return console.warn(["Headless UI has polyfilled `Element.prototype.getAnimations` for your tests.", "Please install a proper polyfill e.g. `jsdom-testing-mocks`, to silence these warnings.", "", "Example usage:", "```js", "import { mockAnimationsApi } from 'jsdom-testing-mocks'", "mockAnimationsApi()", "```"].join(`
`)), [];
});
var vt = ((e) => (e[e.None = 0] = "None", e[e.Closed = 1] = "Closed", e[e.Enter = 2] = "Enter", e[e.Leave = 4] = "Leave", e))(vt || {});
function yt(e) {
let t = {};
for (let r in e) e[r] === !0 && (t[`data-${r}`] = "");
return t;
}
function wt(e, t, r, n) {
let [o, s] = N(r), { hasFlag: a, addFlag: l, removeFlag: i } = ht(e && o ? 3 : 0), u = S(!1), c = S(!1), f = Oe();
return H(() => {
var h;
if (e) {
if (r && s(!0), !t) {
r && l(3);
return;
}
return (h = n == null ? void 0 : n.start) == null || h.call(n, r), xt(t, { inFlight: u, prepare() {
c.current ? c.current = !1 : c.current = u.current, u.current = !0, !c.current && (r ? (l(3), i(4)) : (l(4), i(2)));
}, run() {
c.current ? r ? (i(3), l(4)) : (i(4), l(3)) : r ? i(1) : l(1);
}, done() {
var m;
c.current && typeof t.getAnimations == "function" && t.getAnimations().length > 0 || (u.current = !1, i(7), r || s(!1), (m = n == null ? void 0 : n.end) == null || m.call(n, r));
} });
}
}, [e, r, t, f]), e ? [o, { closed: a(1), enter: a(2), leave: a(4), transition: a(2) || a(4) }] : [r, { closed: void 0, enter: void 0, leave: void 0, transition: void 0 }];
}
function xt(e, { prepare: t, run: r, done: n, inFlight: o }) {
let s = fe();
return kt(e, { prepare: t, inFlight: o }), s.nextFrame(() => {
r(), s.requestAnimationFrame(() => {
s.add(Ct(e, n));
});
}), s.dispose;
}
function Ct(e, t) {
var r, n;
let o = fe();
if (!e) return o.dispose;
let s = !1;
o.add(() => {
s = !0;
});
let a = (n = (r = e.getAnimations) == null ? void 0 : r.call(e).filter((l) => l instanceof CSSTransition)) != null ? n : [];
return a.length === 0 ? (t(), o.dispose) : (Promise.allSettled(a.map((l) => l.finished)).then(() => {
s || t();
}), o.dispose);
}
function kt(e, { inFlight: t, prepare: r }) {
if (t != null && t.current) {
r();
return;
}
let n = e.style.transition;
e.style.transition = "none", r(), e.offsetHeight, e.style.transition = n;
}
let Te = Ee(null);
Te.displayName = "OpenClosedContext";
var B = ((e) => (e[e.Open = 1] = "Open", e[e.Closed = 2] = "Closed", e[e.Closing = 4] = "Closing", e[e.Opening = 8] = "Opening", e))(B || {});
function Ve() {
return pe(Te);
}
function St({ value: e, children: t }) {
return P.createElement(Te.Provider, { value: e }, t);
}
function Et() {
let e = typeof document > "u";
return "useSyncExternalStore" in ie ? ((t) => t.useSyncExternalStore)(ie)(() => () => {
}, () => !1, () => !e) : !1;
}
function We() {
let e = Et(), [t, r] = ie.useState(ue.isHandoffComplete);
return t && ue.isHandoffComplete === !1 && r(!1), ie.useEffect(() => {
t !== !0 && r(!0);
}, [t]), ie.useEffect(() => ue.handoff(), []), e ? !1 : t;
}
function At() {
let e = S(!1);
return H(() => (e.current = !0, () => {
e.current = !1;
}), []), e;
}
function qe(e) {
var t;
return !!(e.enter || e.enterFrom || e.enterTo || e.leave || e.leaveFrom || e.leaveTo) || ((t = e.as) != null ? t : Be) !== X || P.Children.count(e.children) === 1;
}
let me = Ee(null);
me.displayName = "TransitionContext";
var Tt = ((e) => (e.Visible = "visible", e.Hidden = "hidden", e))(Tt || {});
function Pt() {
let e = pe(me);
if (e === null) throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");
return e;
}
function jt() {
let e = pe(be);
if (e === null) throw new Error("A <Transition.Child /> is used but it is missing a parent <Transition /> or <Transition.Root />.");
return e;
}
let be = Ee(null);
be.displayName = "NestingContext";
function he(e) {
return "children" in e ? he(e.children) : e.current.filter(({ el: t }) => t.current !== null).filter(({ state: t }) => t === "visible").length > 0;
}
function _e(e, t) {
let r = Ie(e), n = S([]), o = At(), s = Oe(), a = O((m, p = G.Hidden) => {
let g = n.current.findIndex(({ el: d }) => d === m);
g !== -1 && (ge(p, { [G.Unmount]() {
n.current.splice(g, 1);
}, [G.Hidden]() {
n.current[g].state = "hidden";
} }), s.microTask(() => {
var d;
!he(n) && o.current && ((d = r.current) == null || d.call(r));
}));
}), l = O((m) => {
let p = n.current.find(({ el: g }) => g === m);
return p ? p.state !== "visible" && (p.state = "visible") : n.current.push({ el: m, state: "visible" }), () => a(m, G.Unmount);
}), i = S([]), u = S(Promise.resolve()), c = S({ enter: [], leave: [] }), f = O((m, p, g) => {
i.current.splice(0), t && (t.chains.current[p] = t.chains.current[p].filter(([d]) => d !== m)), t == null || t.chains.current[p].push([m, new Promise((d) => {
i.current.push(d);
})]), t == null || t.chains.current[p].push([m, new Promise((d) => {
Promise.all(c.current[p].map(([v, k]) => k)).then(() => d());
})]), p === "enter" ? u.current = u.current.then(() => t == null ? void 0 : t.wait.current).then(() => g(p)) : g(p);
}), h = O((m, p, g) => {
Promise.all(c.current[p].splice(0).map(([d, v]) => v)).then(() => {
var d;
(d = i.current.shift()) == null || d();
}).then(() => g(p));
});
return Me(() => ({ children: n, register: l, unregister: a, onStart: f, onStop: h, wait: u, chains: c }), [l, a, n, f, h, c, u]);
}
let Be = X, Xe = Le.RenderStrategy;
function zt(e, t) {
var r, n;
let { transition: o = !0, beforeEnter: s, afterEnter: a, beforeLeave: l, afterLeave: i, enter: u, enterFrom: c, enterTo: f, entered: h, leave: m, leaveFrom: p, leaveTo: g, ...d } = e, [v, k] = N(null), C = S(null), y = qe(e), A = Ue(...y ? [C, t, k] : t === null ? [] : [t]), R = (r = d.unmount) == null || r ? G.Unmount : G.Hidden, { show: E, appear: ee, initial: Y } = Pt(), [T, U] = N(E ? "visible" : "hidden"), w = jt(), { register: V, unregister: F } = w;
H(() => V(C), [V, C]), H(() => {
if (R === G.Hidden && C.current) {
if (E && T !== "visible") {
U("visible");
return;
}
return ge(T, { hidden: () => F(C), visible: () => V(C) });
}
}, [T, C, V, F, E, R]);
let K = We();
H(() => {
if (y && K && T === "visible" && C.current === null) throw new Error("Did you forget to passthrough the `ref` to the actual DOM node?");
}, [C, T, K, y]);
let Z = Y && !ee, te = ee && E && Y, W = S(!1), $ = _e(() => {
W.current || (U("hidden"), F(C));
}, w), re = O((ve) => {
W.current = !0;
let ae = ve ? "enter" : "leave";
$.onStart(C, ae, (oe) => {
oe === "enter" ? s == null || s() : oe === "leave" && (l == null || l());
});
}), j = O((ve) => {
let ae = ve ? "enter" : "leave";
W.current = !1, $.onStop(C, ae, (oe) => {
oe === "enter" ? a == null || a() : oe === "leave" && (i == null || i());
}), ae === "leave" && !he($) && (U("hidden"), F(C));
});
Q(() => {
y && o || (re(E), j(E));
}, [E, y, o]);
let et = !(!o || !y || !K || Z), [, z] = wt(et, v, E, { start: re, end: j }), tt = q({ ref: A, className: ((n = Ce(d.className, te && u, te && c, z.enter && u, z.enter && z.closed && c, z.enter && !z.closed && f, z.leave && m, z.leave && !z.closed && p, z.leave && z.closed && g, !z.transition && E && h)) == null ? void 0 : n.trim()) || void 0, ...yt(z) }), ne = 0;
T === "visible" && (ne |= B.Open), T === "hidden" && (ne |= B.Closed), E && T === "hidden" && (ne |= B.Opening), !E && T === "visible" && (ne |= B.Closing);
let rt = Ge();
return P.createElement(be.Provider, { value: $ }, P.createElement(St, { value: ne }, rt({ ourProps: tt, theirProps: d, defaultTag: Be, features: Xe, visible: T === "visible", name: "Transition.Child" })));
}
function $t(e, t) {
let { show: r, appear: n = !1, unmount: o = !0, ...s } = e, a = S(null), l = qe(e), i = Ue(...l ? [a, t] : t === null ? [] : [t]);
We();
let u = Ve();
if (r === void 0 && u !== null && (r = (u & B.Open) === B.Open), r === void 0) throw new Error("A <Transition /> is used but it is missing a `show={true | false}` prop.");
let [c, f] = N(r ? "visible" : "hidden"), h = _e(() => {
r || f("hidden");
}), [m, p] = N(!0), g = S([r]);
H(() => {
m !== !1 && g.current[g.current.length - 1] !== r && (g.current.push(r), p(!1));
}, [g, r]);
let d = Me(() => ({ show: r, appear: n, initial: m }), [r, n, m]);
H(() => {
r ? f("visible") : !he(h) && a.current !== null && f("hidden");
}, [r, h]);
let v = { unmount: o }, k = O(() => {
var A;
m && p(!1), (A = e.beforeEnter) == null || A.call(e);
}), C = O(() => {
var A;
m && p(!1), (A = e.beforeLeave) == null || A.call(e);
}), y = Ge();
return P.createElement(be.Provider, { value: h }, P.createElement(me.Provider, { value: d }, y({ ourProps: { ...v, as: X, children: P.createElement(Ye, { ref: i, ...v, ...s, beforeEnter: k, beforeLeave: C }) }, theirProps: {}, defaultTag: X, features: Xe, visible: c === "visible", name: "Transition" })));
}
function Nt(e, t) {
let r = pe(me) !== null, n = Ve() !== null;
return P.createElement(P.Fragment, null, !r && n ? P.createElement(ke, { ref: t, ...e }) : P.createElement(Ye, { ref: t, ...e }));
}
let ke = Ae($t), Ye = Ae(zt), Rt = Ae(Nt), Ft = Object.assign(ke, { Child: Rt, Root: ke });
const Pe = "-", Mt = (e) => {
const t = It(e), {
conflictingClassGroups: r,
conflictingClassGroupModifiers: n
} = e;
return {
getClassGroupId: (a) => {
const l = a.split(Pe);
return l[0] === "" && l.length !== 1 && l.shift(), Ke(l, t) || Ot(a);
},
getConflictingClassGroupIds: (a, l) => {
const i = r[a] || [];
return l && n[a] ? [...i, ...n[a]] : i;
}
};
}, Ke = (e, t) => {
var a;
if (e.length === 0)
return t.classGroupId;
const r = e[0], n = t.nextPart.get(r), o = n ? Ke(e.slice(1), n) : void 0;
if (o)
return o;
if (t.validators.length === 0)
return;
const s = e.join(Pe);
return (a = t.validators.find(({
validator: l
}) => l(s))) == null ? void 0 : a.classGroupId;
}, Ne = /^\[(.+)\]$/, Ot = (e) => {
if (Ne.test(e)) {
const t = Ne.exec(e)[1], r = t == null ? void 0 : t.substring(0, t.indexOf(":"));
if (r)
return "arbitrary.." + r;
}
}, It = (e) => {
const {
theme: t,
prefix: r
} = e, n = {
nextPart: /* @__PURE__ */ new Map(),
validators: []
};
return Gt(Object.entries(e.classGroups), r).forEach(([s, a]) => {
Se(a, n, s, t);
}), n;
}, Se = (e, t, r, n) => {
e.forEach((o) => {
if (typeof o == "string") {
const s = o === "" ? t : Re(t, o);
s.classGroupId = r;
return;
}
if (typeof o == "function") {
if (Lt(o)) {
Se(o(n), t, r, n);
return;
}
t.validators.push({
validator: o,
classGroupId: r
});
return;
}
Object.entries(o).forEach(([s, a]) => {
Se(a, Re(t, s), r, n);
});
});
}, Re = (e, t) => {
let r = e;
return t.split(Pe).forEach((n) => {
r.nextPart.has(n) || r.nextPart.set(n, {
nextPart: /* @__PURE__ */ new Map(),
validators: []
}), r = r.nextPart.get(n);
}), r;
}, Lt = (e) => e.isThemeGetter, Gt = (e, t) => t ? e.map(([r, n]) => {
const o = n.map((s) => typeof s == "string" ? t + s : typeof s == "object" ? Object.fromEntries(Object.entries(s).map(([a, l]) => [t + a, l])) : s);
return [r, o];
}) : e, Ht = (e) => {
if (e < 1)
return {
get: () => {
},
set: () => {
}
};
let t = 0, r = /* @__PURE__ */ new Map(), n = /* @__PURE__ */ new Map();
const o = (s, a) => {
r.set(s, a), t++, t > e && (t = 0, n = r, r = /* @__PURE__ */ new Map());
};
return {
get(s) {
let a = r.get(s);
if (a !== void 0)
return a;
if ((a = n.get(s)) !== void 0)
return o(s, a), a;
},
set(s, a) {
r.has(s) ? r.set(s, a) : o(s, a);
}
};
}, Ze = "!", Ut = (e) => {
const {
separator: t,
experimentalParseClassName: r
} = e, n = t.length === 1, o = t[0], s = t.length, a = (l) => {
const i = [];
let u = 0, c = 0, f;
for (let d = 0; d < l.length; d++) {
let v = l[d];
if (u === 0) {
if (v === o && (n || l.slice(d, d + s) === t)) {
i.push(l.slice(c, d)), c = d + s;
continue;
}
if (v === "/") {
f = d;
continue;
}
}
v === "[" ? u++ : v === "]" && u--;
}
const h = i.length === 0 ? l : l.substring(c), m = h.startsWith(Ze), p = m ? h.substring(1) : h, g = f && f > c ? f - c : void 0;
return {
modifiers: i,
hasImportantModifier: m,
baseClassName: p,
maybePostfixModifierPosition: g
};
};
return r ? (l) => r({
className: l,
parseClassName: a
}) : a;
}, Vt = (e) => {
if (e.length <= 1)
return e;
const t = [];
let r = [];
return e.forEach((n) => {
n[0] === "[" ? (t.push(...r.sort(), n), r = []) : r.push(n);
}), t.push(...r.sort()), t;
}, Wt = (e) => ({
cache: Ht(e.cacheSize),
parseClassName: Ut(e),
...Mt(e)
}), qt = /\s+/, _t = (e, t) => {
const {
parseClassName: r,
getClassGroupId: n,
getConflictingClassGroupIds: o
} = t, s = [], a = e.trim().split(qt);
let l = "";
for (let i = a.length - 1; i >= 0; i -= 1) {
const u = a[i], {
modifiers: c,
hasImportantModifier: f,
baseClassName: h,
maybePostfixModifierPosition: m
} = r(u);
let p = !!m, g = n(p ? h.substring(0, m) : h);
if (!g) {
if (!p) {
l = u + (l.length > 0 ? " " + l : l);
continue;
}
if (g = n(h), !g) {
l = u + (l.length > 0 ? " " + l : l);
continue;
}
p = !1;
}
const d = Vt(c).join(":"), v = f ? d + Ze : d, k = v + g;
if (s.includes(k))
continue;
s.push(k);
const C = o(g, p);
for (let y = 0; y < C.length; ++y) {
const A = C[y];
s.push(v + A);
}
l = u + (l.length > 0 ? " " + l : l);
}
return l;
};
function Bt() {
let e = 0, t, r, n = "";
for (; e < arguments.length; )
(t = arguments[e++]) && (r = Je(t)) && (n && (n += " "), n += r);
return n;
}
const Je = (e) => {
if (typeof e == "string")
return e;
let t, r = "";
for (let n = 0; n < e.length; n++)
e[n] && (t = Je(e[n])) && (r && (r += " "), r += t);
return r;
};
function Xt(e, ...t) {
let r, n, o, s = a;
function a(i) {
const u = t.reduce((c, f) => f(c), e());
return r = Wt(u), n = r.cache.get, o = r.cache.set, s = l, l(i);
}
function l(i) {
const u = n(i);
if (u)
return u;
const c = _t(i, r);
return o(i, c), c;
}
return function() {
return s(Bt.apply(null, arguments));
};
}
const x = (e) => {
const t = (r) => r[e] || [];
return t.isThemeGetter = !0, t;
}, Qe = /^\[(?:([a-z-]+):)?(.+)\]$/i, Yt = /^\d+\/\d+$/, Kt = /* @__PURE__ */ new Set(["px", "full", "screen"]), Zt = /^(\d+(\.\d+)?)?(xs|sm|md|lg|xl)$/, Jt = /\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$/, Qt = /^(rgba?|hsla?|hwb|(ok)?(lab|lch))\(.+\)$/, Dt = /^(inset_)?-?((\d+)?\.?(\d+)[a-z]+|0)_-?((\d+)?\.?(\d+)[a-z]+|0)/, er = /^(url|image|image-set|cross-fade|element|(repeating-)?(linear|radial|conic)-gradient)\(.+\)$/, M = (e) => J(e) || Kt.has(e) || Yt.test(e), I = (e) => D(e, "length", ar), J = (e) => !!e && !Number.isNaN(Number(e)), xe = (e) => D(e, "number", J), se = (e) => !!e && Number.isInteger(Number(e)), tr = (e) => e.endsWith("%") && J(e.slice(0, -1)), b = (e) => Qe.test(e), L = (e) => Zt.test(e), rr = /* @__PURE__ */ new Set(["length", "size", "percentage"]), nr = (e) => D(e, rr, De), or = (e) => D(e, "position", De), sr = /* @__PURE__ */ new Set(["image", "url"]), lr = (e) => D(e, sr, dr), ir = (e) => D(e, "", cr), le = () => !0, D = (e, t, r) => {
const n = Qe.exec(e);
return n ? n[1] ? typeof t == "string" ? n[1] === t : t.has(n[1]) : r(n[2]) : !1;
}, ar = (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.
Jt.test(e) && !Qt.test(e)
), De = () => !1, cr = (e) => Dt.test(e), dr = (e) => er.test(e), ur = () => {
const e = x("colors"), t = x("spacing"), r = x("blur"), n = x("brightness"), o = x("borderColor"), s = x("borderRadius"), a = x("borderSpacing"), l = x("borderWidth"), i = x("contrast"), u = x("grayscale"), c = x("hueRotate"), f = x("invert"), h = x("gap"), m = x("gradientColorStops"), p = x("gradientColorStopPositions"), g = x("inset"), d = x("margin"), v = x("opacity"), k = x("padding"), C = x("saturate"), y = x("scale"), A = x("sepia"), R = x("skew"), E = x("space"), ee = x("translate"), Y = () => ["auto", "contain", "none"], T = () => ["auto", "hidden", "clip", "visible", "scroll"], U = () => ["auto", b, t], w = () => [b, t], V = () => ["", M, I], F = () => ["auto", J, b], K = () => ["bottom", "center", "left", "left-bottom", "left-top", "right", "right-bottom", "right-top", "top"], Z = () => ["solid", "dashed", "dotted", "double", "none"], te = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], W = () => ["start", "end", "center", "between", "around", "evenly", "stretch"], $ = () => ["", "0", b], re = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"], j = () => [J, b];
return {
cacheSize: 500,
separator: ":",
theme: {
colors: [le],
spacing: [M, I],
blur: ["none", "", L, b],
brightness: j(),
borderColor: [e],
borderRadius: ["none", "", "full", L, b],
borderSpacing: w(),
borderWidth: V(),
contrast: j(),
grayscale: $(),
hueRotate: j(),
invert: $(),
gap: w(),
gradientColorStops: [e],
gradientColorStopPositions: [tr, I],
inset: U(),
margin: U(),
opacity: j(),
padding: w(),
saturate: j(),
scale: j(),
sepia: $(),
skew: j(),
space: w(),
translate: w()
},
classGroups: {
// Layout
/**
* Aspect Ratio
* @see https://tailwindcss.com/docs/aspect-ratio
*/
aspect: [{
aspect: ["auto", "square", "video", b]
}],
/**
* Container
* @see https://tailwindcss.com/docs/container
*/
container: ["container"],
/**
* Columns
* @see https://tailwindcss.com/docs/columns
*/
columns: [{
columns: [L]
}],
/**
* Break After
* @see https://tailwindcss.com/docs/break-after
*/
"break-after": [{
"break-after": re()
}],
/**
* Break Before
* @see https://tailwindcss.com/docs/break-before
*/
"break-before": [{
"break-before": re()
}],
/**
* 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"],
/**
* 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: [...K(), b]
}],
/**
* Overflow
* @see https://tailwindcss.com/docs/overflow
*/
overflow: [{
overflow: T()
}],
/**
* Overflow X
* @see https://tailwindcss.com/docs/overflow
*/
"overflow-x": [{
"overflow-x": T()
}],
/**
* Overflow Y
* @see https://tailwindcss.com/docs/overflow
*/
"overflow-y": [{
"overflow-y": T()
}],
/**
* Overscroll Behavior
* @see https://tailwindcss.com/docs/overscroll-behavior
*/
overscroll: [{
overscroll: Y()
}],
/**
* Overscroll Behavior X
* @see https://tailwindcss.com/docs/overscroll-behavior
*/
"overscroll-x": [{
"overscroll-x": Y()
}],
/**
* Overscroll Behavior Y
* @see https://tailwindcss.com/docs/overscroll-behavior
*/
"overscroll-y": [{
"overscroll-y": Y()
}],
/**
* 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: [g]
}],
/**
* Right / Left
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
"inset-x": [{
"inset-x": [g]
}],
/**
* Top / Bottom
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
"inset-y": [{
"inset-y": [g]
}],
/**
* Start
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
start: [{
start: [g]
}],
/**
* End
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
end: [{
end: [g]
}],
/**
* Top
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
top: [{
top: [g]
}],
/**
* Right
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
right: [{
right: [g]
}],
/**
* Bottom
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
bottom: [{
bottom: [g]
}],
/**
* Left
* @see https://tailwindcss.com/docs/top-right-bottom-left
*/
left: [{
left: [g]
}],
/**
* Visibility
* @see https://tailwindcss.com/docs/visibility
*/
visibility: ["visible", "invisible", "collapse"],
/**
* Z-Index
* @see https://tailwindcss.com/docs/z-index
*/
z: [{
z: ["auto", se, b]
}],
// Flexbox and Grid
/**
* Flex Basis
* @see https://tailwindcss.com/docs/flex-basis
*/
basis: [{
basis: U()
}],
/**
* 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: ["wrap", "wrap-reverse", "nowrap"]
}],
/**
* Flex
* @see https://tailwindcss.com/docs/flex
*/
flex: [{
flex: ["1", "auto", "initial", "none", b]
}],
/**
* Flex Grow
* @see https://tailwindcss.com/docs/flex-grow
*/
grow: [{
grow: $()
}],
/**
* Flex Shrink
* @see https://tailwindcss.com/docs/flex-shrink
*/
shrink: [{
shrink: $()
}],
/**
* Order
* @see https://tailwindcss.com/docs/order
*/
order: [{
order: ["first", "last", "none", se, b]
}],
/**
* Grid Template Columns
* @see https://tailwindcss.com/docs/grid-template-columns
*/
"grid-cols": [{
"grid-cols": [le]
}],
/**
* Grid Column Start / End
* @see https://tailwindcss.com/docs/grid-column
*/
"col-start-end": [{
col: ["auto", {
span: ["full", se, b]
}, b]
}],
/**
* Grid Column Start
* @see https://tailwindcss.com/docs/grid-column
*/
"col-start": [{
"col-start": F()
}],
/**
* Grid Column End
* @see https://tailwindcss.com/docs/grid-column
*/
"col-end": [{
"col-end": F()
}],
/**
* Grid Template Rows
* @see https://tailwindcss.com/docs/grid-template-rows
*/
"grid-rows": [{
"grid-rows": [le]
}],
/**
* Grid Row Start / End
* @see https://tailwindcss.com/docs/grid-row
*/
"row-start-end": [{
row: ["auto", {
span: [se, b]
}, b]
}],
/**
* Grid Row Start
* @see https://tailwindcss.com/docs/grid-row
*/
"row-start": [{
"row-start": F()
}],
/**
* Grid Row End
* @see https://tailwindcss.com/docs/grid-row
*/
"row-end": [{
"row-end": F()
}],
/**
* 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": ["auto", "min", "max", "fr", b]
}],
/**
* Grid Auto Rows
* @see https://tailwindcss.com/docs/grid-auto-rows
*/
"auto-rows": [{
"auto-rows": ["auto", "min", "max", "fr", b]
}],
/**
* Gap
* @see https://tailwindcss.com/docs/gap
*/
gap: [{
gap: [h]
}],
/**
* Gap X
* @see https://tailwindcss.com/docs/gap
*/
"gap-x": [{
"gap-x": [h]
}],
/**
* Gap Y
* @see https://tailwindcss.com/docs/gap
*/
"gap-y": [{
"gap-y": [h]
}],
/**
* Justify Content
* @see https://tailwindcss.com/docs/justify-content
*/
"justify-content": [{
justify: ["normal", ...W()]
}],
/**
* Justify Items
* @see https://tailwindcss.com/docs/justify-items
*/
"justify-items": [{
"justify-items": ["start", "end", "center", "stretch"]
}],
/**
* Justify Self
* @see https://tailwindcss.com/docs/justify-self
*/
"justify-self": [{
"justify-self": ["auto", "start", "end", "center", "stretch"]
}],
/**
* Align Content
* @see https://tailwindcss.com/docs/align-content
*/
"align-content": [{
content: ["normal", ...W(), "baseline"]
}],
/**
* Align Items
* @see https://tailwindcss.com/docs/align-items
*/
"align-items": [{
items: ["start", "end", "center", "baseline", "stretch"]
}],
/**
* Align Self
* @see https://tailwindcss.com/docs/align-self
*/
"align-self": [{
self: ["auto", "start", "end", "center", "stretch", "baseline"]
}],
/**
* Place Content
* @see https://tailwindcss.com/docs/place-content
*/
"place-content": [{
"place-content": [...W(), "baseline"]
}],
/**
* Place Items
* @see https://tailwindcss.com/docs/place-items
*/
"place-items": [{
"place-items": ["start", "end", "center", "baseline", "stretch"]
}],
/**
* Place Self
* @see https://tailwindcss.com/docs/place-self
*/
"place-self": [{
"place-self": ["auto", "start", "end", "center", "stretch"]
}],
// Spacing
/**
* Padding
* @see https://tailwindcss.com/docs/padding
*/
p: [{
p: [k]
}],
/**
* Padding X
* @see https://tailwindcss.com/docs/padding
*/
px: [{
px: [k]
}],
/**
* Padding Y
* @see https://tailwindcss.com/docs/padding
*/
py: [{
py: [k]
}],
/**
* Padding Start
* @see https://tailwindcss.com/docs/padding
*/
ps: [{
ps: [k]
}],
/**
* Padding End
* @see https://tailwindcss.com/docs/padding
*/
pe: [{
pe: [k]
}],
/**
* Padding Top
* @see https://tailwindcss.com/docs/padding
*/
pt: [{
pt: [k]
}],
/**
* Padding Right
* @see https://tailwindcss.com/docs/padding
*/
pr: [{
pr: [k]
}],
/**
* Padding Bottom
* @see https://tailwindcss.com/docs/padding
*/
pb: [{
pb: [k]
}],
/**
* Padding Left
* @see https://tailwindcss.com/docs/padding
*/
pl: [{
pl: [k]
}],
/**
* Margin
* @see https://tailwindcss.com/docs/margin
*/
m: [{
m: [d]
}],
/**
* Margin X
* @see https://tailwindcss.com/docs/margin
*/
mx: [{
mx: [d]
}],
/**
* Margin Y
* @see https://tailwindcss.com/docs/margin
*/
my: [{
my: [d]
}],
/**
* Margin Start
* @see https://tailwindcss.com/docs/margin
*/
ms: [{
ms: [d]
}],
/**
* Margin End
* @see https://tailwindcss.com/docs/margin
*/
me: [{
me: [d]
}],
/**
* Margin Top
* @see https://tailwindcss.com/docs/margin
*/
mt: [{
mt: [d]
}],
/**
* Margin Right
* @see https://tailwindcss.com/docs/margin
*/
mr: [{
mr: [d]
}],
/**
* Margin Bottom
* @see https://tailwindcss.com/docs/margin
*/
mb: [{
mb: [d]
}],
/**
* Margin Left
* @see https://tailwindcss.com/docs/margin
*/
ml: [{
ml: [d]
}],
/**
* Space Between X
* @see https://tailwindcss.com/docs/space
*/
"space-x": [{
"space-x": [E]
}],
/**
* Space Between X Reverse
* @see https://tailwindcss.com/docs/space
*/
"space-x-reverse": ["space-x-reverse"],
/**
* Space Between Y
* @see https://tailwindcss.com/docs/space
*/
"space-y": [{
"space-y": [E]
}],
/**
* Space Between Y Reverse
* @see https://tailwindcss.com/docs/space
*/
"space-y-reverse": ["space-y-reverse"],
// Sizing
/**
* Width
* @see https://tailwindcss.com/docs/width
*/
w: [{
w: ["auto", "min", "max", "fit", "svw", "lvw", "dvw", b, t]
}],
/**
* Min-Width
* @see https://tailwindcss.com/docs/min-width
*/
"min-w": [{
"min-w": [b, t, "min", "max", "fit"]
}],
/**
* Max-Width
* @see https://tailwindcss.com/docs/max-width
*/
"max-w": [{
"max-w": [b, t, "none", "full", "min", "max", "fit", "prose", {
screen: [L]
}, L]
}],
/**
* Height
* @see https://tailwindcss.com/docs/height
*/
h: [{
h: [b, t, "auto", "min", "max", "fit", "svh", "lvh", "dvh"]
}],
/**
* Min-Height
* @see https://tailwindcss.com/docs/min-height
*/
"min-h": [{
"min-h": [b, t, "min", "max", "fit", "svh", "lvh", "dvh"]
}],
/**
* Max-Height
* @see https://tailwindcss.com/docs/max-height
*/
"max-h": [{
"max-h": [b, t, "min", "max", "fit", "svh", "lvh", "dvh"]
}],
/**
* Size
* @see https://tailwindcss.com/docs/size
*/
size: [{
size: [b, t, "auto", "min", "max", "fit"]
}],
// Typography
/**
* Font Size
* @see https://tailwindcss.com/docs/font-size
*/
"font-size": [{
text: ["base", L, I]
}],
/**
* 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: ["thin", "extralight", "light", "normal", "medium", "semibold", "bold", "extrabold", "black", xe]
}],
/**
* Font Family
* @see https://tailwindcss.com/docs/font-family
*/
"font-family": [{
font: [le]
}],
/**
* 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: ["tighter", "tight", "normal", "wide", "wider", "widest", b]
}],
/**
* Line Clamp
* @see https://tailwindcss.com/docs/line-clamp
*/
"line-clamp": [{
"line-clamp": ["none", J, xe]
}],
/**
* Line Height
* @see https://tailwindcss.com/docs/line-height
*/
leading: [{
leading: ["none", "tight", "snug", "normal", "relaxed", "loose", M, b]
}],
/**
* List Style Image
* @see https://tailwindcss.com/docs/list-style-image
*/
"list-image": [{
"list-image": ["none", b]
}],
/**
* List Style Type
* @see https://tailwindcss.com/docs/list-style-type
*/
"list-style-type": [{
list: ["none", "disc", "decimal", b]
}],
/**
* List Style Position
* @see https://tailwindcss.com/docs/list-style-position
*/
"list-style-position": [{
list: ["inside", "outside"]
}],
/**
* Placeholder Color
* @deprecated since Tailwind CSS v3.0.0
* @see https://tailwindcss.com/docs/placeholder-color
*/
"placeholder-color": [{
placeholder: [e]
}],
/**
* Placeholder Opacity
* @see https://tailwindcss.com/docs/placeholder-opacity
*/
"placeholder-opacity": [{
"placeholder-opacity": [v]
}],
/**
* Text Alignment
* @see https://tailwindcss.com/docs/text-align
*/
"text-alignment": [{
text: ["left", "center", "right", "justify", "start", "end"]
}],
/**
* Text Color
* @see https://tailwindcss.com/docs/text-color
*/
"text-color": [{
text: [e]
}],
/**
* Text Opacity
* @see https://tailwindcss.com/docs/text-opacity
*/
"text-opacity": [{
"text-opacity": [v]
}],
/**
* 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: [...Z(), "wavy"]
}],
/**
* Text Decoration Thickness
* @see https://tailwindcss.com/docs/text-decoration-thickness
*/
"text-decoration-thickness": [{
decoration: ["auto", "from-font", M, I]
}],
/**
* Text Underline Offset
* @see https://tailwindcss.com/docs/text-underline-offset
*/
"underline-offset": [{
"underline-offset": ["auto", M, b]
}],
/**
* Text Decoration Color
* @see https://tailwindcss.com/docs/text-decoration-color
*/
"text-decoration-color": [{
decoration: [e]
}],
/**
* 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: w()
}],
/**
* Vertical Alignment
* @see https://tailwindcss.com/docs/vertical-align
*/
"vertical-align": [{
align: ["baseline", "top", "middle", "bottom", "text-top", "text-bottom", "sub", "super", b]
}],
/**
* 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"]
}],
/**
* Hyphens
* @see https://tailwindcss.com/docs/hyphens
*/
hyphens: [{
hyphens: ["none", "manual", "auto"]
}],
/**
* Content
* @see https://tailwindcss.com/docs/content
*/
content: [{
content: ["none", b]
}],
// 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 Opacity
* @deprecated since Tailwind CSS v3.0.0
* @see https://tailwindcss.com/docs/background-opacity
*/
"bg-opacity": [{
"bg-opacity": [v]
}],
/**
* 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: [...K(), or]
}],
/**
* Background Repeat
* @see https://tailwindcss.com/docs/background-repeat
*/
"bg-repeat": [{
bg: ["no-repeat", {
repeat: ["", "x", "y", "round", "space"]
}]
}],
/**
* Background Size
* @see https://tailwindcss.com/docs/background-size
*/
"bg-size": [{
bg: ["auto", "cover", "contain", nr]
}],
/**
* Background Image
* @see https://tailwindcss.com/docs/background-image
*/
"bg-image": [{
bg: ["none", {
"gradient-to": ["t", "tr", "r", "br", "b", "bl", "l", "tl"]
}, lr]
}],
/**
* Background Color
* @see https://tailwindcss.com/docs/background-color
*/
"bg-color": [{
bg: [e]
}],
/**
* Gradient Color Stops From Position
* @see https://tailwindcss.com/docs/gradient-color-stops
*/
"gradient-from-pos": [{
from: [p]
}],
/**
* Gradient Color Stops Via Position
* @see https://tailwindcss.com/docs/gradient-color-stops
*/
"gradient-via-pos": [{
via: [p]
}],
/**
* Gradient Color Stops To Position
* @see https://tailwindcss.com/docs/gradient-color-stops
*/
"gradient-to-pos": [{
to: [p]
}],
/**
* Gradient Color Stops From
* @see https://tailwindcss.com/docs/gradient-color-stops
*/
"gradient-from": [{
from: [m]
}],
/**
* Gradient Color Stops Via
* @see https://tailwindcss.com/docs/gradient-color-stops
*/
"gradient-via": [{
via: [m]
}],
/**
* Gradient Color Stops To
* @see https://tailwindcss.com/docs/gradient-color-stops
*/
"gradient-to": [{
to: [m]
}],
// Borders
/**
* Border Radius
* @see https://tailwindcss.com/docs/border-radius
*/
rounded: [{
rounded: [s]
}],
/**
* Border Radius Start
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-s": [{
"rounded-s": [s]
}],
/**
* Border Radius End
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-e": [{
"rounded-e": [s]
}],
/**
* Border Radius Top
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-t": [{
"rounded-t": [s]
}],
/**
* Border Radius Right
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-r": [{
"rounded-r": [s]
}],
/**
* Border Radius Bottom
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-b": [{
"rounded-b": [s]
}],
/**
* Border Radius Left
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-l": [{
"rounded-l": [s]
}],
/**
* Border Radius Start Start
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-ss": [{
"rounded-ss": [s]
}],
/**
* Border Radius Start End
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-se": [{
"rounded-se": [s]
}],
/**
* Border Radius End End
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-ee": [{
"rounded-ee": [s]
}],
/**
* Border Radius End Start
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-es": [{
"rounded-es": [s]
}],
/**
* Border Radius Top Left
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-tl": [{
"rounded-tl": [s]
}],
/**
* Border Radius Top Right
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-tr": [{
"rounded-tr": [s]
}],
/**
* Border Radius Bottom Right
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-br": [{
"rounded-br": [s]
}],
/**
* Border Radius Bottom Left
* @see https://tailwindcss.com/docs/border-radius
*/
"rounded-bl": [{
"rounded-bl": [s]
}],
/**
* Border Width
* @see https://tailwindcss.com/docs/border-width
*/
"border-w": [{
border: [l]
}],
/**
* Border Width X
* @see https://tailwindcss.com/docs/border-width
*/
"border-w-x": [{
"border-x": [l]
}],
/**
* Border Width Y
* @see https://tailwindcss.com/docs/border-width
*/
"border-w-y": [{
"border-y": [l]
}],
/**
* Border Width Start
* @see https://tailwindcss.com/docs/border-width
*/
"border-w-s": [{
"border-s": [l]
}],
/**
* Border Width End
* @see https://tailwindcss.com/docs/border-width
*/
"border-w-e": [{
"border-e": [l]
}],
/**
* Border Width Top
* @see https://tailwindcss.com/docs/border-width
*/
"border-w-t": [{
"border-t": [l]
}],
/**
* Border Width Right
* @see https://tailwindcss.com/docs/border-width
*/
"border-w-r": [{
"border-r": [l]
}],
/**
* Border Width Bottom
* @see https://tailwindcss.com/docs/border-width
*/
"border-w-b": [{
"border-b": [l]
}],
/**
* Border Width Left
* @see https://tailwindcss.com/docs/border-width
*/
"border-w-l": [{
"border-l": [l]
}],
/**
* Border Opacity
* @see https://tailwindcss.com/docs/border-opacity
*/
"border-opacity": [{
"border-opacity": [v]
}],
/**
* Border Style
* @see https://tailwindcss.com/docs/border-style
*/
"border-style": [{
border: [...Z(), "hidden"]
}],
/**
* Divide Width X
* @see https://tailwindcss.com/docs/divide-width
*/
"divide-x": [{
"divide-x": [l]
}],
/**
* Divide Width X Reverse
* @see https://tailwindcss.com/docs/divide-width
*/
"divide-x-reverse": ["divide-x-reverse"],
/**
* Divide Width Y
* @see https://tailwindcss.com/docs/divide-width
*/
"divide-y": [{
"divide-y": [l]
}],
/**
* Divide Width Y Reverse
* @see https://tailwindcss.com/docs/divide-width
*/
"divide-y-reverse": ["divide-y-reverse"],
/**
* Divide Opacity
* @see https://tailwindcss.com/docs/divide-opacity
*/
"divide-opacity": [{
"divide-opacity": [v]
}],
/**
* Divide Style
* @see https://tailwindcss.com/docs/divide-style
*/
"divide-style": [{
divide: Z()
}],
/**
* Border Color
* @see https://tailwindcss.com/docs/border-color
*/
"border-color": [{
border: [o]
}],
/**
* Border Color X
* @see https://tailwindcss.com/docs/border-color
*/
"border-color-x": [{
"border-x": [o]
}],
/**
* Border Color Y
* @see https://tailwindcss.com/docs/border-color
*/
"border-color-y": [{
"border-y": [o]
}],
/**
* Border Color S
* @see https://tailwindcss.com/docs/border-color
*/
"border-color-s": [{
"border-s": [o]
}],
/**
* Border Color E
* @see https://tailwindcss.com/docs/border-color
*/
"border-color-e": [{
"border-e": [o]
}],
/**
* Border Color Top
* @see https://tailwindcss.com/docs/border-color
*/
"border-color-t": [{
"border-t": [o]
}],
/**
* Border Color Right
* @see https://tailwindcss.com/docs/border-color
*/
"border-color-r": [{
"border-r": [o]
}],
/**
* Border Color Bottom
* @see https://tailwindcss.com/docs/border-color
*/
"border-color-b": [{
"border-b": [o]
}],
/**
* Border Color Left
* @see https://tailwindcss.com/docs/border-color
*/
"border-color-l": [{
"border-l": [o]
}],
/**
* Divide Color
* @see https://tailwindcss.com/docs/divide-color
*/
"divide-color": [{
divide: [o]
}],
/**
* Outline Style
* @see https://tailwindcss.com/docs/outline-style
*/
"outline-style": [{
outline: ["", ...Z()]
}],
/**
* Outline Offset
* @see https://tailwindcss.com/docs/outline-offset
*/
"outline-offset": [{
"outline-offset": [M, b]
}],
/**
* Outline Width
* @see https://tailwindcss.com/docs/outline-width
*/
"outline-w": [{
outline: [M, I]
}],
/**
* Outline Color
* @see https://tailwindcss.com/docs/outline-color
*/
"outline-color": [{
outline: [e]
}],
/**
* Ring Width
* @see https://tailwindcss.com/docs/ring-width
*/
"ring-w": [{
ring: V()
}],
/**
* Ring Width Inset
* @see https://tailwindcss.com/docs/ring-width
*/
"ring-w-inset": ["ring-inset"],
/**
* Ring Color
* @see https://tailwindcss.com/docs/ring-color
*/
"ring-color": [{
ring: [e]
}],
/**
* Ring Opacity
* @see https://tailwindcss.com/docs/ring-opacity
*/
"ring-opacity": [{
"ring-opacity": [v]
}],
/**
* Ring Offset Width
* @see https://tailwindcss.com/docs/ring-offset-width
*/
"ring-offset-w": [{
"ring-offset": [M, I]
}],
/**
* Ring Offset Color
* @see https://tailwindcss.com/docs/ring-offset-color
*/
"ring-offset-color": [{
"ring-offset": [e]
}],
// Effects
/**
* Box Shadow
* @see https://tailwindcss.com/docs/box-shadow
*/
shadow: [{
shadow: ["", "inner", "none", L, ir]
}],
/**
* Box Shadow Color
* @see https://tailwindcss.com/docs/box-shadow-color
*/
"shadow-color": [{
shadow: [le]
}],
/**
* Opacity
* @see https://tailwindcss.com/docs/opacity
*/
opacity: [{
opacity: [v]
}],
/**
* Mix Blend Mode
* @see https://tailwindcss.com/docs/mix-blend-mode
*/
"mix-blend": [{
"mix-blend": [...te(), "plus-lighter", "plus-darker"]
}],
/**
* Background Blend Mode
* @see https://tailwindcss.com/docs/background-blend-mode
*/
"bg-blend": [{
"bg-blend": te()
}],
// Filters
/**
* Filter
* @deprecated since Tailwind CSS v3.0.0
* @see https://tailwindcss.com/docs/filter
*/
filter: [{
filter: ["", "none"]
}],
/**
* Blur
* @see https://tailwindcss.com/docs/blur
*/
blur: [{
blur: [r]
}],
/**
* Brightness
* @see https://tailwindcss.com/docs/brightness
*/
brightness: [{
brightness: [n]
}],
/**
* Contrast
* @see https://tailwindcss.com/docs/contrast
*/
contrast: [{
contrast: [i]
}],
/**
* Drop Shadow
* @see https://tailwindcss.com/docs/drop-shadow
*/
"drop-shadow": [{
"drop-shadow": ["", "none", L, b]
}],
/**
* Grayscale
* @see https://tailwindcss.com/docs/grayscale
*/
grayscale: [{
grayscale: [u]
}],
/**
* Hue Rotate
* @see https://tailwindcss.com/docs/hue-rotate
*/
"hue-rotate": [{
"hue-rotate": [c]
}],
/**
* Invert
* @see https://tailwindcss.com/docs/invert
*/
invert: [{
invert: [f]
}],
/**
* Saturate
* @see https://tailwindcss.com/docs/saturate
*/
saturate: [{
saturate: [C]
}],
/**
* Sepia
* @see https://tailwindcss.com/docs/sepia
*/
sepia: [{
sepia: [A]
}],
/**
* Backdrop Filter
* @deprecated since Tailwind CSS v3.0.0
* @see https://tailwindcss.com/docs/backdrop-filter
*/
"backdrop-filter": [{
"backdrop-filter": ["", "none"]
}],
/**
* Backdrop Blur
* @see https://tailwindcss.com/docs/backdrop-blur
*/
"backdrop-blur": [{
"backdrop-blur": [r]
}],
/**
* Backdrop Brightness
* @see https://tailwindcss.com/docs/backdrop-brightness
*/
"backdrop-brightness": [{
"backdrop-brightness": [n]
}],
/**
* Backdrop Contrast
* @see https://tailwindcss.com/docs/backdrop-contrast
*/
"backdrop-contrast": [{
"backdrop-contrast": [i]
}],
/**
* Backdrop Grayscale
* @see https://tailwindcss.com/docs/backdrop-grayscale
*/
"backdrop-grayscale": [{
"backdrop-grayscale": [u]
}],
/**
* Backdrop Hue Rotate
* @see https://tailwindcss.com/docs/backdrop-hue-rotate
*/
"backdrop-hue-rotate": [{
"backdrop-hue-rotate": [c]
}],
/**
* Backdrop Invert
* @see https://tailwindcss.com/docs/backdrop-invert
*/
"backdrop-invert": [{
"backdrop-invert": [f]
}],
/**
* Backdrop Opacity
* @see https://tailwindcss.com/docs/backdrop-opacity
*/
"backdrop-opacity": [{
"backdrop-opacity": [v]
}],
/**
* Backdrop Saturate
* @see https://tailwindcss.com/docs/backdrop-saturate
*/
"backdrop-saturate": [{
"backdrop-saturate": [C]
}],
/**
* Backdrop Sepia
* @see https://tailwindcss.com/docs/backdrop-sepia
*/
"backdrop-sepia": [{
"backdrop-sepia": [A]
}],
// 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": [a]
}],
/**
* Border Spacing X
* @see https://tailwindcss.com/docs/border-spacing
*/
"border-spacing-x": [{
"border-spacing-x": [a]
}],
/**
* Border Spacing Y
* @see https://tailwindcss.com/docs/border-spacing
*/
"border-spacing-y": [{
"border-spacing-y": [a]
}],
/**
* 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
/**
* Tranisition Property
* @see https://tailwindcss.com/docs/transition-property
*/
transition: [{
transition: ["none", "all", "", "colors", "opacity", "shadow", "transform", b]
}],
/**
* Transition Duration
* @see https://tailwindcss.com/docs/transition-duration
*/
duration: [{
duration: j()
}],
/**
* Transition Timing Function
* @see https://tailwindcss.com/docs/transition-timing-function
*/
ease: [{
ease: ["linear", "in", "out", "in-out", b]
}],
/**
* Transition Delay
* @see https://tailwindcss.com/docs/transition-delay
*/
delay: [{
delay: j()
}],
/**
* Animation
* @see https://tailwindcss.com/docs/animation
*/
animate: [{
animate: ["none", "spin", "ping", "pulse", "bounce", b]
}],
// Transforms
/**
* Transform
* @see https://tailwindcss.com/docs/transform
*/
transform: [{
transform: ["", "gpu", "none"]
}],
/**
* Scale
* @see https://tailwindcss.com/docs/scale
*/
scale: [{
scale: [y]
}],
/**
* Scale X
* @see https://tailwindcss.com/docs/scale
*/
"scale-x": [{
"scale-x": [y]
}],
/**
* Scale Y
* @see https://tailwindcss.com/docs/scale
*/
"scale-y": [{
"scale-y": [y]
}],
/**
* Rotate
* @see https://tailwindcss.com/docs/rotate
*/
rotate: [{
rotate: [se, b]
}],
/**
* Translate X
* @see https://tailwindcss.com/docs/translate
*/
"translate-x": [{
"translate-x": [ee]
}],
/**
* Translate Y
* @see https://tailwindcss.com/docs/translate
*/
"translate-y": [{
"translate-y": [ee]
}],
/**
* Skew X
* @see https://tailwindcss.com/docs/skew
*/
"skew-x": [{
"skew-x": [R]
}],
/**
* Skew Y
* @see https://tailwindcss.com/docs/skew
*/
"skew-y": [{
"skew-y": [R]
}],
/**
* Transform Origin
* @see https://tailwindcss.com/docs/transform-origin
*/
"transform-origin": [{
origin: ["center", "top", "top-right", "right", "bottom-right", "bottom", "bottom-left", "left", "top-left", b]
}],
// Interactivity
/**
* Accent Color
* @see https://tailwindcss.com/docs/accent-color
*/
accent: [{
accent: ["auto", e]
}],
/**
* Appearance
* @see https://tailwindcss.com/docs/appearance
*/
appearance: [{
appearance: ["none", "auto"]
}],
/**
* 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", b]
}],
/**
* Caret Color
* @see https://tailwindcss.com/docs/just-in-time-mode#caret-color-utilities
*/
"caret-color": [{
caret: [e]
}],
/**
* Pointer Events
* @see https://tailwindcss.com/docs/pointer-events
*/
"pointer-events": [{
"pointer-events": ["none", "auto"]
}],
/**
* 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": w()
}],
/**
* Scroll Margin X
* @see https://tailwindcss.com/docs/scroll-margin
*/
"scroll-mx": [{
"scroll-mx": w()
}],
/**
* Scroll Margin Y
* @see https://tailwindcss.com/docs/scroll-margin
*/
"scroll-my": [{
"scroll-my": w()
}],
/**
* Scroll Margin Start
* @see https://tailwindcss.com/docs/scroll-margin
*/
"scroll-ms": [{
"scroll-ms": w()
}],
/**
* Scroll Margin End
* @see https://tailwindcss.com/docs/scroll-margin
*/
"scroll-me": [{
"scroll-me": w()
}],
/**
* Scroll Margin Top
* @see https://tailwindcss.com/docs/scroll-margin
*/
"scroll-mt": [{
"scroll-mt": w()
}],
/**
* Scroll Margin Right
* @see https://tailwindcss.com/docs/scroll-margin
*/
"scroll-mr": [{
"scroll-mr": w()
}],
/**
* Scroll Margin Bottom
* @see https://tailwindcss.com/docs/scroll-margin
*/
"scroll-mb": [{
"scroll-mb": w()
}],
/**
* Scroll Margin Left
* @see https://tailwindcss.com/docs/scroll-margin
*/
"scroll-ml": [{
"scroll-ml": w()
}],
/**
* Scroll Padding
* @see https://tailwindcss.com/docs/scroll-padding
*/
"scroll-p": [{
"scroll-p": w()
}],
/**
* Scroll Padding X
* @see https://tailwindcss.com/docs/scroll-padding
*/
"scroll-px": [{
"scroll-px": w()
}],
/**
* Scroll Padding Y
* @see https://tailwindcss.com/docs/scroll-padding
*/
"scroll-py": [{
"scroll-py": w()
}],
/**
* Scroll Padding Start
* @see https://tailwindcss.com/docs/scroll-padding
*/
"scroll-ps": [{
"scroll-ps": w()
}],
/**
* Scroll Padding End
* @see https://tailwindcss.com/docs/scroll-padding
*/
"scroll-pe": [{
"scroll-pe": w()
}],
/**
* Scroll Padding Top
* @see https://tailwindcss.com/docs/scroll-padding
*/
"scroll-pt": [{
"scroll-pt": w()
}],
/**
* Scroll Padding Right
* @see https://tailwindcss.com/docs/scroll-padding
*/
"scroll-pr": [{
"scroll-pr": w()
}],
/**
* Scroll Padding Bottom
* @see https://tailwindcss.com/docs/scroll-padding
*/
"scroll-pb": [{
"scroll-pb": w()
}],
/**
* Scroll Padding Left
* @see https://tailwindcss.com/docs/scroll-padding
*/
"scroll-pl": [{
"scroll-pl": w()
}],
/**
* 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", b]
}],
// SVG
/**
* Fill
* @see https://tailwindcss.com/docs/fill
*/
fill: [{
fill: [e, "none"]
}],
/**
* Stroke Width
* @see https://tailwindcss.com/docs/stroke-width
*/
"stroke-w": [{
stroke: [M, I, xe]
}],
/**
* Stroke
* @see https://tailwindcss.com/docs/stroke
*/
stroke: [{
stroke: [e, "none"]
}],
// Accessibility
/**
* Screen Readers
* @see https://tailwindcss.com/docs/screen-readers
*/
sr: ["sr-only", "not-sr-only"],
/**
* 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-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-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"],
"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"]
}
};
}, Fe = /* @__PURE__ */ Xt(ur), mr = ({
children: e,
content: t,
position: r,
className: n,
delay: o = 300,
closeOnClick: s = !1,
imageSrc: a,
description: l,
interactive: i = !1
}) => {
const [u, c] = N(!1), f = S(null), h = S(null), [m, p] = N(!1), [g, d] = N(!1), v = () => f.current ? f.current.querySelectorAll('[data-headlessui-state="open"]').length > 0 : !1;
Q(() => {
const y = new MutationObserver((A) => {
A.forEach((R) => {
R.type === "attributes" && R.attributeName === "data-headlessui-state" && R.target.getAttribute("data-headlessui-state") === "open" && c(!1);
});
});
return f.current && y.observe(f.current, {
attributes: !0,
subtree: !0,
attributeFilter: ["data-headlessui-state"]
}), () => {
y.disconnect();
};
}, []);
const k = () => {
if (f.current) {
const y = f.current.getBoundingClientRect();
switch (r) {
case "top":
return {
bottom: y.height + 10,
left: "50%",
transform: "translateX(-50%)"
};
case "bottom":
return {
top: y.height + 10,
left: "50%",
transform: "translateX(-50%)"
};
case "left":
return {
right: y.width + 10,
top: "50%",
transform: "translateY(-50%)"
};
case "right":
return {
left: y.width + 10,
top: "50%",
transform: "translateY(-50%)"
};
default:
return {};
}
}
return {};
}, C = (y) => {
s && (c(!1), y.stopPropagation());
};
return Q(() => {
v() || c(m || i && g);
}, [m, g, i]), /* @__PURE__ */ je(
"div",
{
ref: f,
onMouseEnter: () => {
p(!0), v() || c(!0);
},
onMouseLeave: () => {
p(!1), i || c(!1);
},
onClick: C,
className: "relative",
children: [
e,
/* @__PURE__ */ ce(
Ft,
{
show: u,
enter: Fe(
"transition ease-out duration-200",
o ? `delay-[${o}ms]` : "delay-[300ms]"
),
enterFrom: "opacity-0",
enterTo: "opacity-100",
leave: "transition ease-in duration-150",
leaveFrom: "opacity-100",
leaveTo: "opacity-0",
children: /* @__PURE__ */ ce(
"div",
{
ref: h,
onMouseEnter: () => i && d(!0),
onMouseLeave: () => i && d(!1),
style: {
...k(),
transitionDelay: `${o}ms`,
transitionProperty: "opacity",
transitionDuration: "200ms",
transitionTimingFunction: "ease-out"
},
className: Fe(
"absolute z-10 w-max rounded-lg bg-ui-controls px-2.5 py-1.5 text-[13px] font-medium text-base-fg shadow-xl border border-ui-panel-border",
i ? "pointer-events-auto" : "pointer-events-none",
n || ""
),
children: /* @__PURE__ */ je("div", { className: "flex flex-col gap-1", children: [
t,
a && /* @__PURE__ */ ce(
"img",
{
src: a,
alt: "tooltip",
className: "mb-1 aspect-square w-56 rounded-md"
}
),
l && /* @__PURE__ */ ce("p", { className: "text-sm text-base-fg font-normal", children: l })
] })
}
)
}
)
]
}
);
};
export {
mr as Tooltip
};