UNPKG

@fluster.io/dev

Version:

1,330 lines (1,329 loc) 2.81 MB
var ba = Object.defineProperty; var _a = (e, t, n) => t in e ? ba(e, t, { enumerable: !0, configurable: !0, writable: !0, value: n }) : e[t] = n; var te = (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, { createPortal } 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 dayjs_min$1 = { exports: {} }, dayjs_min = dayjs_min$1.exports, hasRequiredDayjs_min; function requireDayjs_min() { return hasRequiredDayjs_min || (hasRequiredDayjs_min = 1, function(e, t) { (function(n, o) { e.exports = o(); })(dayjs_min, function() { var n = 1e3, o = 6e4, l = 36e5, d = "millisecond", f = "second", h = "minute", g = "hour", y = "day", v = "week", x = "month", b = "quarter", _ = "year", C = "date", S = "Invalid Date", R = /^(\d{4})[-/]?(\d{1,2})?[-/]?(\d{0,2})[Tt\s]*(\d{1,2})?:?(\d{1,2})?:?(\d{1,2})?[.:]?(\d+)?$/, E = /\[([^\]]+)]|Y{1,4}|M{1,4}|D{1,2}|d{1,4}|H{1,2}|h{1,2}|a|A|m{1,2}|s{1,2}|Z{1,2}|SSS/g, O = { name: "en", weekdays: "Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"), months: "January_February_March_April_May_June_July_August_September_October_November_December".split("_"), ordinal: function(et) { var j = ["th", "st", "nd", "rd"], M = et % 100; return "[" + et + (j[(M - 20) % 10] || j[M] || j[0]) + "]"; } }, q = function(et, j, M) { var Ue = String(et); return !Ue || Ue.length >= j ? et : "" + Array(j + 1 - Ue.length).join(M) + et; }, ae = { s: q, z: function(et) { var j = -et.utcOffset(), M = Math.abs(j), Ue = Math.floor(M / 60), Ve = M % 60; return (j <= 0 ? "+" : "-") + q(Ue, 2, "0") + ":" + q(Ve, 2, "0"); }, m: function et(j, M) { if (j.date() < M.date()) return -et(M, j); var Ue = 12 * (M.year() - j.year()) + (M.month() - j.month()), Ve = j.clone().add(Ue, x), lt = M - Ve < 0, Fe = j.clone().add(Ue + (lt ? -1 : 1), x); return +(-(Ue + (M - Ve) / (lt ? Ve - Fe : Fe - Ve)) || 0); }, a: function(et) { return et < 0 ? Math.ceil(et) || 0 : Math.floor(et); }, p: function(et) { return { M: x, y: _, w: v, d: y, D: C, h: g, m: h, s: f, ms: d, Q: b }[et] || String(et || "").toLowerCase().replace(/s$/, ""); }, u: function(et) { return et === void 0; } }, ie = "en", Q = {}; Q[ie] = O; var se = "$isDayjsObject", je = function(et) { return et instanceof ut || !(!et || !et[se]); }, oe = function et(j, M, Ue) { var Ve; if (!j) return ie; if (typeof j == "string") { var lt = j.toLowerCase(); Q[lt] && (Ve = lt), M && (Q[lt] = M, Ve = lt); var Fe = j.split("-"); if (!Ve && Fe.length > 1) return et(Fe[0]); } else { var Xe = j.name; Q[Xe] = j, Ve = Xe; } return !Ue && Ve && (ie = Ve), Ve || !Ue && ie; }, Be = function(et, j) { if (je(et)) return et.clone(); var M = typeof j == "object" ? j : {}; return M.date = et, M.args = arguments, new ut(M); }, ze = ae; ze.l = oe, ze.i = je, ze.w = function(et, j) { return Be(et, { locale: j.$L, utc: j.$u, x: j.$x, $offset: j.$offset }); }; var ut = function() { function et(M) { this.$L = oe(M.locale, null, !0), this.parse(M), this.$x = this.$x || M.x || {}, this[se] = !0; } var j = et.prototype; return j.parse = function(M) { this.$d = function(Ue) { var Ve = Ue.date, lt = Ue.utc; if (Ve === null) return /* @__PURE__ */ new Date(NaN); if (ze.u(Ve)) return /* @__PURE__ */ new Date(); if (Ve instanceof Date) return new Date(Ve); if (typeof Ve == "string" && !/Z$/i.test(Ve)) { var Fe = Ve.match(R); if (Fe) { var Xe = Fe[2] - 1 || 0, Qe = (Fe[7] || "0").substring(0, 3); return lt ? new Date(Date.UTC(Fe[1], Xe, Fe[3] || 1, Fe[4] || 0, Fe[5] || 0, Fe[6] || 0, Qe)) : new Date(Fe[1], Xe, Fe[3] || 1, Fe[4] || 0, Fe[5] || 0, Fe[6] || 0, Qe); } } return new Date(Ve); }(M), this.init(); }, j.init = function() { var M = this.$d; this.$y = M.getFullYear(), this.$M = M.getMonth(), this.$D = M.getDate(), this.$W = M.getDay(), this.$H = M.getHours(), this.$m = M.getMinutes(), this.$s = M.getSeconds(), this.$ms = M.getMilliseconds(); }, j.$utils = function() { return ze; }, j.isValid = function() { return this.$d.toString() !== S; }, j.isSame = function(M, Ue) { var Ve = Be(M); return this.startOf(Ue) <= Ve && Ve <= this.endOf(Ue); }, j.isAfter = function(M, Ue) { return Be(M) < this.startOf(Ue); }, j.isBefore = function(M, Ue) { return this.endOf(Ue) < Be(M); }, j.$g = function(M, Ue, Ve) { return ze.u(M) ? this[Ue] : this.set(Ve, M); }, j.unix = function() { return Math.floor(this.valueOf() / 1e3); }, j.valueOf = function() { return this.$d.getTime(); }, j.startOf = function(M, Ue) { var Ve = this, lt = !!ze.u(Ue) || Ue, Fe = ze.p(M), Xe = function(gt, xt) { var Rt = ze.w(Ve.$u ? Date.UTC(Ve.$y, xt, gt) : new Date(Ve.$y, xt, gt), Ve); return lt ? Rt : Rt.endOf(y); }, Qe = function(gt, xt) { return ze.w(Ve.toDate()[gt].apply(Ve.toDate("s"), (lt ? [0, 0, 0, 0] : [23, 59, 59, 999]).slice(xt)), Ve); }, We = this.$W, rt = this.$M, it = this.$D, ht = "set" + (this.$u ? "UTC" : ""); switch (Fe) { case _: return lt ? Xe(1, 0) : Xe(31, 11); case x: return lt ? Xe(1, rt) : Xe(0, rt + 1); case v: var Ge = this.$locale().weekStart || 0, ft = (We < Ge ? We + 7 : We) - Ge; return Xe(lt ? it - ft : it + (6 - ft), rt); case y: case C: return Qe(ht + "Hours", 0); case g: return Qe(ht + "Minutes", 1); case h: return Qe(ht + "Seconds", 2); case f: return Qe(ht + "Milliseconds", 3); default: return this.clone(); } }, j.endOf = function(M) { return this.startOf(M, !1); }, j.$set = function(M, Ue) { var Ve, lt = ze.p(M), Fe = "set" + (this.$u ? "UTC" : ""), Xe = (Ve = {}, Ve[y] = Fe + "Date", Ve[C] = Fe + "Date", Ve[x] = Fe + "Month", Ve[_] = Fe + "FullYear", Ve[g] = Fe + "Hours", Ve[h] = Fe + "Minutes", Ve[f] = Fe + "Seconds", Ve[d] = Fe + "Milliseconds", Ve)[lt], Qe = lt === y ? this.$D + (Ue - this.$W) : Ue; if (lt === x || lt === _) { var We = this.clone().set(C, 1); We.$d[Xe](Qe), We.init(), this.$d = We.set(C, Math.min(this.$D, We.daysInMonth())).$d; } else Xe && this.$d[Xe](Qe); return this.init(), this; }, j.set = function(M, Ue) { return this.clone().$set(M, Ue); }, j.get = function(M) { return this[ze.p(M)](); }, j.add = function(M, Ue) { var Ve, lt = this; M = Number(M); var Fe = ze.p(Ue), Xe = function(rt) { var it = Be(lt); return ze.w(it.date(it.date() + Math.round(rt * M)), lt); }; if (Fe === x) return this.set(x, this.$M + M); if (Fe === _) return this.set(_, this.$y + M); if (Fe === y) return Xe(1); if (Fe === v) return Xe(7); var Qe = (Ve = {}, Ve[h] = o, Ve[g] = l, Ve[f] = n, Ve)[Fe] || 1, We = this.$d.getTime() + M * Qe; return ze.w(We, this); }, j.subtract = function(M, Ue) { return this.add(-1 * M, Ue); }, j.format = function(M) { var Ue = this, Ve = this.$locale(); if (!this.isValid()) return Ve.invalidDate || S; var lt = M || "YYYY-MM-DDTHH:mm:ssZ", Fe = ze.z(this), Xe = this.$H, Qe = this.$m, We = this.$M, rt = Ve.weekdays, it = Ve.months, ht = Ve.meridiem, Ge = function(xt, Rt, at, Pt) { return xt && (xt[Rt] || xt(Ue, lt)) || at[Rt].slice(0, Pt); }, ft = function(xt) { return ze.s(Xe % 12 || 12, xt, "0"); }, gt = ht || function(xt, Rt, at) { var Pt = xt < 12 ? "AM" : "PM"; return at ? Pt.toLowerCase() : Pt; }; return lt.replace(E, function(xt, Rt) { return Rt || function(at) { switch (at) { case "YY": return String(Ue.$y).slice(-2); case "YYYY": return ze.s(Ue.$y, 4, "0"); case "M": return We + 1; case "MM": return ze.s(We + 1, 2, "0"); case "MMM": return Ge(Ve.monthsShort, We, it, 3); case "MMMM": return Ge(it, We); case "D": return Ue.$D; case "DD": return ze.s(Ue.$D, 2, "0"); case "d": return String(Ue.$W); case "dd": return Ge(Ve.weekdaysMin, Ue.$W, rt, 2); case "ddd": return Ge(Ve.weekdaysShort, Ue.$W, rt, 3); case "dddd": return rt[Ue.$W]; case "H": return String(Xe); case "HH": return ze.s(Xe, 2, "0"); case "h": return ft(1); case "hh": return ft(2); case "a": return gt(Xe, Qe, !0); case "A": return gt(Xe, Qe, !1); case "m": return String(Qe); case "mm": return ze.s(Qe, 2, "0"); case "s": return String(Ue.$s); case "ss": return ze.s(Ue.$s, 2, "0"); case "SSS": return ze.s(Ue.$ms, 3, "0"); case "Z": return Fe; } return null; }(xt) || Fe.replace(":", ""); }); }, j.utcOffset = function() { return 15 * -Math.round(this.$d.getTimezoneOffset() / 15); }, j.diff = function(M, Ue, Ve) { var lt, Fe = this, Xe = ze.p(Ue), Qe = Be(M), We = (Qe.utcOffset() - this.utcOffset()) * o, rt = this - Qe, it = function() { return ze.m(Fe, Qe); }; switch (Xe) { case _: lt = it() / 12; break; case x: lt = it(); break; case b: lt = it() / 3; break; case v: lt = (rt - We) / 6048e5; break; case y: lt = (rt - We) / 864e5; break; case g: lt = rt / l; break; case h: lt = rt / o; break; case f: lt = rt / n; break; default: lt = rt; } return Ve ? lt : ze.a(lt); }, j.daysInMonth = function() { return this.endOf(x).$D; }, j.$locale = function() { return Q[this.$L]; }, j.locale = function(M, Ue) { if (!M) return this.$L; var Ve = this.clone(), lt = oe(M, Ue, !0); return lt && (Ve.$L = lt), Ve; }, j.clone = function() { return ze.w(this.$d, this); }, j.toDate = function() { return new Date(this.valueOf()); }, j.toJSON = function() { return this.isValid() ? this.toISOString() : null; }, j.toISOString = function() { return this.$d.toISOString(); }, j.toString = function() { return this.$d.toUTCString(); }, et; }(), Ye = ut.prototype; return Be.prototype = Ye, [["$ms", d], ["$s", f], ["$m", h], ["$H", g], ["$W", y], ["$M", x], ["$y", _], ["$D", C]].forEach(function(et) { Ye[et[1]] = function(j) { return this.$g(j, et[0], et[1]); }; }), Be.extend = function(et, j) { return et.$i || (et(j, ut, Be), et.$i = !0), Be; }, Be.locale = oe, Be.isDayjs = je, Be.unix = function(et) { return Be(1e3 * et); }, Be.en = Q[ie], Be.Ls = Q, Be.p = {}, Be; }); }(dayjs_min$1)), dayjs_min$1.exports; } var dayjs_minExports = requireDayjs_min(); const dayjs = /* @__PURE__ */ getDefaultExportFromCjs(dayjs_minExports), parseDate = (e) => typeof e == "number" ? dayjs.unix(e) : new RegExp("[a-zA-Z]", "gi").test(e) ? dayjs(e, { utc: !0 }) : dayjs(new Date(parseInt(e))), parseTaskDates = (e) => ({ ...e, due_at: e.due_at ? parseDate(e.due_at).toDate().valueOf().toString() : null, ctime: parseDate(e.ctime).toDate().valueOf().toString() }); 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(Fe) { if (Fe == null) return null; if (typeof Fe == "function") return Fe.$$typeof === Be ? null : Fe.displayName || Fe.name || null; if (typeof Fe == "string") return Fe; switch (Fe) { case S: return "Fragment"; case E: return "Profiler"; case R: return "StrictMode"; case ie: return "Suspense"; case Q: return "SuspenseList"; case oe: return "Activity"; } if (typeof Fe == "object") switch (typeof Fe.tag == "number" && console.error( "Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue." ), Fe.$$typeof) { case C: return "Portal"; case q: return (Fe.displayName || "Context") + ".Provider"; case O: return (Fe._context.displayName || "Context") + ".Consumer"; case ae: var Xe = Fe.render; return Fe = Fe.displayName, Fe || (Fe = Xe.displayName || Xe.name || "", Fe = Fe !== "" ? "ForwardRef(" + Fe + ")" : "ForwardRef"), Fe; case se: return Xe = Fe.displayName || null, Xe !== null ? Xe : e(Fe.type) || "Memo"; case je: Xe = Fe._payload, Fe = Fe._init; try { return e(Fe(Xe)); } catch { } } return null; } function t(Fe) { return "" + Fe; } function n(Fe) { try { t(Fe); var Xe = !1; } catch { Xe = !0; } if (Xe) { Xe = console; var Qe = Xe.error, We = typeof Symbol == "function" && Symbol.toStringTag && Fe[Symbol.toStringTag] || Fe.constructor.name || "Object"; return Qe.call( Xe, "The provided key is an unsupported type %s. This value must be coerced to a string before using it here.", We ), t(Fe); } } function o(Fe) { if (Fe === S) return "<>"; if (typeof Fe == "object" && Fe !== null && Fe.$$typeof === je) return "<...>"; try { var Xe = e(Fe); return Xe ? "<" + Xe + ">" : "<...>"; } catch { return "<...>"; } } function l() { var Fe = ze.A; return Fe === null ? null : Fe.getOwner(); } function d() { return Error("react-stack-top-frame"); } function f(Fe) { if (ut.call(Fe, "key")) { var Xe = Object.getOwnPropertyDescriptor(Fe, "key").get; if (Xe && Xe.isReactWarning) return !1; } return Fe.key !== void 0; } function h(Fe, Xe) { function Qe() { j || (j = !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)", Xe )); } Qe.isReactWarning = !0, Object.defineProperty(Fe, "key", { get: Qe, configurable: !0 }); } function g() { var Fe = e(this.type); return M[Fe] || (M[Fe] = !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." )), Fe = this.props.ref, Fe !== void 0 ? Fe : null; } function y(Fe, Xe, Qe, We, rt, it, ht, Ge) { return Qe = it.ref, Fe = { $$typeof: _, type: Fe, key: Xe, props: it, _owner: rt }, (Qe !== void 0 ? Qe : null) !== null ? Object.defineProperty(Fe, "ref", { enumerable: !1, get: g }) : Object.defineProperty(Fe, "ref", { enumerable: !1, value: null }), Fe._store = {}, Object.defineProperty(Fe._store, "validated", { configurable: !1, enumerable: !1, writable: !0, value: 0 }), Object.defineProperty(Fe, "_debugInfo", { configurable: !1, enumerable: !1, writable: !0, value: null }), Object.defineProperty(Fe, "_debugStack", { configurable: !1, enumerable: !1, writable: !0, value: ht }), Object.defineProperty(Fe, "_debugTask", { configurable: !1, enumerable: !1, writable: !0, value: Ge }), Object.freeze && (Object.freeze(Fe.props), Object.freeze(Fe)), Fe; } function v(Fe, Xe, Qe, We, rt, it, ht, Ge) { var ft = Xe.children; if (ft !== void 0) if (We) if (Ye(ft)) { for (We = 0; We < ft.length; We++) x(ft[We]); Object.freeze && Object.freeze(ft); } 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 x(ft); if (ut.call(Xe, "key")) { ft = e(Fe); var gt = Object.keys(Xe).filter(function(Rt) { return Rt !== "key"; }); We = 0 < gt.length ? "{key: someKey, " + gt.join(": ..., ") + ": ...}" : "{key: someKey}", lt[ft + We] || (gt = 0 < gt.length ? "{" + gt.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} />`, We, ft, gt, ft ), lt[ft + We] = !0); } if (ft = null, Qe !== void 0 && (n(Qe), ft = "" + Qe), f(Xe) && (n(Xe.key), ft = "" + Xe.key), "key" in Xe) { Qe = {}; for (var xt in Xe) xt !== "key" && (Qe[xt] = Xe[xt]); } else Qe = Xe; return ft && h( Qe, typeof Fe == "function" ? Fe.displayName || Fe.name || "Unknown" : Fe ), y( Fe, ft, it, rt, l(), Qe, ht, Ge ); } function x(Fe) { typeof Fe == "object" && Fe !== null && Fe.$$typeof === _ && Fe._store && (Fe._store.validated = 1); } var b = React__default, _ = Symbol.for("react.transitional.element"), C = Symbol.for("react.portal"), S = Symbol.for("react.fragment"), R = Symbol.for("react.strict_mode"), E = Symbol.for("react.profiler"), O = Symbol.for("react.consumer"), q = Symbol.for("react.context"), ae = Symbol.for("react.forward_ref"), ie = Symbol.for("react.suspense"), Q = Symbol.for("react.suspense_list"), se = Symbol.for("react.memo"), je = Symbol.for("react.lazy"), oe = Symbol.for("react.activity"), Be = Symbol.for("react.client.reference"), ze = b.__CLIENT_INTERNALS_DO_NOT_USE_OR_WARN_USERS_THEY_CANNOT_UPGRADE, ut = Object.prototype.hasOwnProperty, Ye = Array.isArray, et = console.createTask ? console.createTask : function() { return null; }; b = { "react-stack-bottom-frame": function(Fe) { return Fe(); } }; var j, M = {}, Ue = b["react-stack-bottom-frame"].bind( b, d )(), Ve = et(o(d)), lt = {}; reactJsxRuntime_development.Fragment = S, reactJsxRuntime_development.jsx = function(Fe, Xe, Qe, We, rt) { var it = 1e4 > ze.recentlyCreatedOwnerStacks++; return v( Fe, Xe, Qe, !1, We, rt, it ? Error("react-stack-top-frame") : Ue, it ? et(o(Fe)) : Ve ); }, reactJsxRuntime_development.jsxs = function(Fe, Xe, Qe, We, rt) { var it = 1e4 > ze.recentlyCreatedOwnerStacks++; return v( Fe, Xe, Qe, !0, We, rt, it ? Error("react-stack-top-frame") : Ue, it ? et(o(Fe)) : Ve ); }; }()), 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 S = l[C]; if (f === 0 && h === 0) { if (S === MODIFIER_SEPARATOR) { d.push(l.slice(g, C)), g = C + MODIFIER_SEPARATOR_LENGTH; continue; } if (S === "/") { y = C; continue; } } S === "[" ? f++ : S === "]" ? f-- : S === "(" ? h++ : S === ")" && h--; } const v = d.length === 0 ? l : l.substring(g), x = stripImportantModifier(v), b = x !== v, _ = y && y > g ? y - g : void 0; return { modifiers: d, hasImportantModifier: b, baseClassName: x, maybePostfixModifierPosition: _ }; }; 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: x, modifiers: b, hasImportantModifier: _, baseClassName: C, maybePostfixModifierPosition: S } = n(v); if (x) { g = v + (g.length > 0 ? " " + g : g); continue; } let R = !!S, E = o(R ? C.substring(0, S) : C); if (!E) { if (!R) { g = v + (g.length > 0 ? " " + g : g); continue; } if (E = o(C), !E) { g = v + (g.length > 0 ? " " + g : g); continue; } R = !1; } const O = d(b).join(":"), q = _ ? O + IMPORTANT_MODIFIER : O, ae = q + E; if (f.includes(ae)) continue; f.push(ae); const ie = l(E, R); for (let Q = 0; Q < ie.length; ++Q) { const se = ie[Q]; f.push(q + se); } 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, x) => x(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"), x = fromTheme("inset-shadow"), b = fromTheme("text-shadow"), _ = fromTheme("drop-shadow"), C = fromTheme("blur"), S = fromTheme("perspective"), R = fromTheme("aspect"), E = fromTheme("ease"), O = fromTheme("animate"), q = () => ["auto", "avoid", "all", "avoid-page", "page", "left", "right", "column"], ae = () => [ "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" ], ie = () => [...ae(), isArbitraryVariable, isArbitraryValue], Q = () => ["auto", "hidden", "clip", "visible", "scroll"], se = () => ["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], ut = () => [isInteger, "auto", isArbitraryVariable, isArbitraryValue], Ye = () => ["auto", "min", "max", "fr", isArbitraryVariable, isArbitraryValue], et = () => ["start", "end", "center", "between", "around", "evenly", "stretch", "baseline", "center-safe", "end-safe"], j = () => ["start", "end", "center", "stretch", "center-safe", "end-safe"], M = () => ["auto", ...je()], Ue = () => [isFraction, "auto", "full", "dvw", "dvh", "lvw", "lvh", "svw", "svh", "min", "max", "fit", ...je()], Ve = () => [e, isArbitraryVariable, isArbitraryValue], lt = () => [...ae(), isArbitraryVariablePosition, isArbitraryPosition, { position: [isArbitraryVariable, isArbitraryValue] }], Fe = () => ["no-repeat", { repeat: ["", "x", "y", "space", "round"] }], Xe = () => ["auto", "cover", "contain", isArbitraryVariableSize, isArbitrarySize, { size: [isArbitraryVariable, isArbitraryValue] }], Qe = () => [isPercent$1, isArbitraryVariableLength, isArbitraryLength], We = () => [ // Deprecated since Tailwind CSS v4.0.0 "", "none", "full", y, isArbitraryVariable, isArbitraryValue ], rt = () => ["", isNumber$4, isArbitraryVariableLength, isArbitraryLength], it = () => ["solid", "dashed", "dotted", "double"], ht = () => ["normal", "multiply", "screen", "overlay", "darken", "lighten", "color-dodge", "color-burn", "hard-light", "soft-light", "difference", "exclusion", "hue", "saturation", "color", "luminosity"], Ge = () => [isNumber$4, isPercent$1, isArbitraryVariablePosition, isArbitraryPosition], ft = () => [ // Deprecated since Tailwind CSS v4.0.0 "", "none", C, isArbitraryVariable, isArbitraryValue ], gt = () => ["none", isNumber$4, isArbitraryVariable, isArbitraryValue], xt = () => ["none", isNumber$4, isArbitraryVariable, isArbitraryValue], Rt = () => [isNumber$4, isArbitraryVariable, isArbitraryValue], at = () => [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, R] }], /** * 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: ie() }], /** * Overflow * @see https://tailwindcss.com/docs/overflow */ overflow: [{ overflow: Q() }], /** * Overflow X * @see https://tailwindcss.com/docs/overflow */ "overflow-x": [{ "overflow-x": Q() }], /** * Overflow Y * @see https://tailwindcss.com/docs/overflow */ "overflow-y": [{ "overflow-y": Q() }], /** * Overscroll Behavior * @see https://tailwindcss.com/docs/overscroll-behavior */ overscroll: [{ overscroll: se() }], /** * Overscroll Behavior X * @see https://tailwindcss.com/docs/overscroll-behavior */ "overscroll-x": [{ "overscroll-x": se() }], /** * Overscroll Behavior Y * @see https://tailwindcss.com/docs/overscroll-behavior */ "overscroll-y": [{ "overscroll-y": se() }], /** * 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": ut() }], /** * Grid Column End * @see https://tailwindcss.com/docs/grid-column */ "col-end": [{ "col-end": ut() }], /** * 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": ut() }], /** * Grid Row End * @see https://tailwindcss.com/docs/grid-row */ "row-end": [{ "row-end": ut() }], /** * 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": Ye() }], /** * Grid Auto Rows * @see https://tailwindcss.com/docs/grid-auto-rows */ "auto-rows": [{ "auto-rows": Ye() }], /** * 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: [...et(), "normal"] }], /** * Justify Items * @see https://tailwindcss.com/docs/justify-items */ "justify-items": [{ "justify-items": [...j(), "normal"] }], /** * Justify Self * @see https://tailwindcss.com/docs/justify-self */ "justify-self": [{ "justify-self": ["auto", ...j()] }], /** * Align Content * @see https://tailwindcss.com/docs/align-content */ "align-content": [{ content: ["normal", ...et()] }], /** * Align Items * @see https://tailwindcss.com/docs/align-items