UNPKG

watercolor-ui

Version:

A modern minimalist cross-framework component library

11,898 lines 365 kB
import { ref as A, computed as C, createElementBlock as y, openBlock as m, normalizeStyle as ce, normalizeClass as T, Fragment as ke, renderList as Ce, createElementVNode as _, toDisplayString as I, renderSlot as M, createTextVNode as he, createCommentVNode as j, createBlock as Se, withCtx as je, resolveDynamicComponent as ze, unref as ta, withModifiers as Ae, defineComponent as Fe, onMounted as Pe, onBeforeUnmount as Ze, watch as Re, onUnmounted as He, createVNode as Ge, Transition as Ke, resolveComponent as or, provide as it, inject as Le, nextTick as lt, defineAsyncComponent as jt, watchEffect as ir, mergeProps as ot, withKeys as We, Teleport as ct, getCurrentInstance as ut, withDirectives as Ea, vModelText as Ia } from "vue";
import dt, { useState as te, forwardRef as cr, useRef as Te, useEffect as ve, useImperativeHandle as ur, createContext as ft, useMemo as Oe, useContext as qe, lazy as yt, Suspense as aa, useId as Ba, useCallback as Ot } from "react";
import dr, { createPortal as Ra } from "react-dom";
const fr = ["default", "bordered", "filled"];
function pr(e = "default") {
  return fr.includes(e) ? e : "default";
}
function mr(e) {
  return e ? typeof e == "string" ? e : Array.isArray(e) ? e.filter(Boolean).join(" ") : typeof e == "object" ? Object.entries(e).filter(([, t]) => t).map(([t]) => t).join(" ") : "" : "";
}
function Pa(e = "default", t = "") {
  const a = pr(e), n = mr(t);
  return [
    "wc-accordion",
    a !== "default" ? `wc-accordion--${a}` : "",
    n
  ].filter(Boolean).join(" ");
}
function Da(e = [], t, a = !1) {
  return a ? e.includes(t) ? e.filter((n) => n !== t) : [...e, t] : e.includes(t) ? [] : [t];
}
const hr = ["onClick"], vr = { class: "wc-accordion-title" }, yr = { class: "wc-accordion-content-inner" }, mf = {
  __name: "Accordion",
  props: {
    items: {
      type: Array,
      required: !0,
      default: () => []
    },
    multiple: {
      type: Boolean,
      default: !1
    },
    variant: {
      type: String,
      default: "default",
      validator: (e) => ["default", "bordered", "filled"].includes(e)
    },
    class: {
      type: [String, Array, Object],
      default: ""
    },
    style: {
      type: [String, Object],
      default: () => ({})
    }
  },
  emits: ["toggle"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A([]), s = C(() => Pa(a.variant, a.class)), l = (o) => {
      r.value = Da(r.value, o, a.multiple), n("toggle", o, r.value.includes(o));
    };
    return (o, u) => (m(), y("div", {
      class: T(s.value),
      style: ce(e.style)
    }, [
      (m(!0), y(ke, null, Ce(e.items, (i, c) => (m(), y("div", {
        key: c,
        class: "wc-accordion-item"
      }, [
        _("button", {
          class: T(["wc-accordion-header", { "wc-accordion-header--active": r.value.includes(c) }]),
          type: "button",
          onClick: (d) => l(c)
        }, [
          _("span", vr, I(i.title), 1),
          _("span", {
            class: T(["wc-accordion-icon", { "wc-accordion-icon--rotated": r.value.includes(c) }])
          }, " ▼ ", 2)
        ], 10, hr),
        _("div", {
          class: T(["wc-accordion-content", { "wc-accordion-content--open": r.value.includes(c) }])
        }, [
          _("div", yr, [
            M(o.$slots, `content-${c}`, { item: i }, () => [
              he(I(i.content), 1)
            ])
          ])
        ], 2)
      ]))), 128))
    ], 6));
  }
};
function gr(e) {
  return e && e.__esModule && Object.prototype.hasOwnProperty.call(e, "default") ? e.default : e;
}
var mt = { exports: {} }, tt = {};
/**
 * @license React
 * react-jsx-runtime.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var na;
function br() {
  if (na) return tt;
  na = 1;
  var e = dt, t = Symbol.for("react.element"), a = Symbol.for("react.fragment"), n = Object.prototype.hasOwnProperty, r = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner, s = { key: !0, ref: !0, __self: !0, __source: !0 };
  function l(o, u, i) {
    var c, d = {}, p = null, h = null;
    i !== void 0 && (p = "" + i), u.key !== void 0 && (p = "" + u.key), u.ref !== void 0 && (h = u.ref);
    for (c in u) n.call(u, c) && !s.hasOwnProperty(c) && (d[c] = u[c]);
    if (o && o.defaultProps) for (c in u = o.defaultProps, u) d[c] === void 0 && (d[c] = u[c]);
    return { $$typeof: t, type: o, key: p, ref: h, props: d, _owner: r.current };
  }
  return tt.Fragment = a, tt.jsx = l, tt.jsxs = l, tt;
}
var at = {};
/**
 * @license React
 * react-jsx-runtime.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var ra;
function wr() {
  return ra || (ra = 1, process.env.NODE_ENV !== "production" && function() {
    var e = dt, t = Symbol.for("react.element"), a = Symbol.for("react.portal"), n = Symbol.for("react.fragment"), r = Symbol.for("react.strict_mode"), s = Symbol.for("react.profiler"), l = Symbol.for("react.provider"), o = Symbol.for("react.context"), u = Symbol.for("react.forward_ref"), i = Symbol.for("react.suspense"), c = Symbol.for("react.suspense_list"), d = Symbol.for("react.memo"), p = Symbol.for("react.lazy"), h = Symbol.for("react.offscreen"), v = Symbol.iterator, g = "@@iterator";
    function x(b) {
      if (b === null || typeof b != "object")
        return null;
      var D = v && b[v] || b[g];
      return typeof D == "function" ? D : null;
    }
    var $ = e.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED;
    function B(b) {
      {
        for (var D = arguments.length, F = new Array(D > 1 ? D - 1 : 0), X = 1; X < D; X++)
          F[X - 1] = arguments[X];
        S("error", b, F);
      }
    }
    function S(b, D, F) {
      {
        var X = $.ReactDebugCurrentFrame, de = X.getStackAddendum();
        de !== "" && (D += "%s", F = F.concat([de]));
        var ye = F.map(function(ue) {
          return String(ue);
        });
        ye.unshift("Warning: " + D), Function.prototype.apply.call(console[b], console, ye);
      }
    }
    var k = !1, w = !1, E = !1, W = !1, R = !1, Y;
    Y = Symbol.for("react.module.reference");
    function N(b) {
      return !!(typeof b == "string" || typeof b == "function" || b === n || b === s || R || b === r || b === i || b === c || W || b === h || k || w || E || typeof b == "object" && b !== null && (b.$$typeof === p || b.$$typeof === d || b.$$typeof === l || b.$$typeof === o || b.$$typeof === u || // This needs to include all possible module reference object
      // types supported by any Flight configuration anywhere since
      // we don't know which Flight build this will end up being used
      // with.
      b.$$typeof === Y || b.getModuleId !== void 0));
    }
    function O(b, D, F) {
      var X = b.displayName;
      if (X)
        return X;
      var de = D.displayName || D.name || "";
      return de !== "" ? F + "(" + de + ")" : F;
    }
    function H(b) {
      return b.displayName || "Context";
    }
    function Q(b) {
      if (b == null)
        return null;
      if (typeof b.tag == "number" && B("Received an unexpected object in getComponentNameFromType(). This is likely a bug in React. Please file an issue."), typeof b == "function")
        return b.displayName || b.name || null;
      if (typeof b == "string")
        return b;
      switch (b) {
        case n:
          return "Fragment";
        case a:
          return "Portal";
        case s:
          return "Profiler";
        case r:
          return "StrictMode";
        case i:
          return "Suspense";
        case c:
          return "SuspenseList";
      }
      if (typeof b == "object")
        switch (b.$$typeof) {
          case o:
            var D = b;
            return H(D) + ".Consumer";
          case l:
            var F = b;
            return H(F._context) + ".Provider";
          case u:
            return O(b, b.render, "ForwardRef");
          case d:
            var X = b.displayName || null;
            return X !== null ? X : Q(b.type) || "Memo";
          case p: {
            var de = b, ye = de._payload, ue = de._init;
            try {
              return Q(ue(ye));
            } catch {
              return null;
            }
          }
        }
      return null;
    }
    var q = Object.assign, ne = 0, V, K, ge, oe, P, z, Z;
    function U() {
    }
    U.__reactDisabledLog = !0;
    function J() {
      {
        if (ne === 0) {
          V = console.log, K = console.info, ge = console.warn, oe = console.error, P = console.group, z = console.groupCollapsed, Z = console.groupEnd;
          var b = {
            configurable: !0,
            enumerable: !0,
            value: U,
            writable: !0
          };
          Object.defineProperties(console, {
            info: b,
            log: b,
            warn: b,
            error: b,
            group: b,
            groupCollapsed: b,
            groupEnd: b
          });
        }
        ne++;
      }
    }
    function re() {
      {
        if (ne--, ne === 0) {
          var b = {
            configurable: !0,
            enumerable: !0,
            writable: !0
          };
          Object.defineProperties(console, {
            log: q({}, b, {
              value: V
            }),
            info: q({}, b, {
              value: K
            }),
            warn: q({}, b, {
              value: ge
            }),
            error: q({}, b, {
              value: oe
            }),
            group: q({}, b, {
              value: P
            }),
            groupCollapsed: q({}, b, {
              value: z
            }),
            groupEnd: q({}, b, {
              value: Z
            })
          });
        }
        ne < 0 && B("disabledDepth fell below zero. This is a bug in React. Please file an issue.");
      }
    }
    var ee = $.ReactCurrentDispatcher, ae;
    function se(b, D, F) {
      {
        if (ae === void 0)
          try {
            throw Error();
          } catch (de) {
            var X = de.stack.trim().match(/\n( *(at )?)/);
            ae = X && X[1] || "";
          }
        return `
` + ae + b;
      }
    }
    var G = !1, le;
    {
      var $e = typeof WeakMap == "function" ? WeakMap : Map;
      le = new $e();
    }
    function L(b, D) {
      if (!b || G)
        return "";
      {
        var F = le.get(b);
        if (F !== void 0)
          return F;
      }
      var X;
      G = !0;
      var de = Error.prepareStackTrace;
      Error.prepareStackTrace = void 0;
      var ye;
      ye = ee.current, ee.current = null, J();
      try {
        if (D) {
          var ue = function() {
            throw Error();
          };
          if (Object.defineProperty(ue.prototype, "props", {
            set: function() {
              throw Error();
            }
          }), typeof Reflect == "object" && Reflect.construct) {
            try {
              Reflect.construct(ue, []);
            } catch (Ee) {
              X = Ee;
            }
            Reflect.construct(b, [], ue);
          } else {
            try {
              ue.call();
            } catch (Ee) {
              X = Ee;
            }
            b.call(ue.prototype);
          }
        } else {
          try {
            throw Error();
          } catch (Ee) {
            X = Ee;
          }
          b();
        }
      } catch (Ee) {
        if (Ee && X && typeof Ee.stack == "string") {
          for (var ie = Ee.stack.split(`
`), Ne = X.stack.split(`
`), we = ie.length - 1, _e = Ne.length - 1; we >= 1 && _e >= 0 && ie[we] !== Ne[_e]; )
            _e--;
          for (; we >= 1 && _e >= 0; we--, _e--)
            if (ie[we] !== Ne[_e]) {
              if (we !== 1 || _e !== 1)
                do
                  if (we--, _e--, _e < 0 || ie[we] !== Ne[_e]) {
                    var Ve = `
` + ie[we].replace(" at new ", " at ");
                    return b.displayName && Ve.includes("<anonymous>") && (Ve = Ve.replace("<anonymous>", b.displayName)), typeof b == "function" && le.set(b, Ve), Ve;
                  }
                while (we >= 1 && _e >= 0);
              break;
            }
        }
      } finally {
        G = !1, ee.current = ye, re(), Error.prepareStackTrace = de;
      }
      var Qe = b ? b.displayName || b.name : "", Ye = Qe ? se(Qe) : "";
      return typeof b == "function" && le.set(b, Ye), Ye;
    }
    function De(b, D, F) {
      return L(b, !1);
    }
    function Je(b) {
      var D = b.prototype;
      return !!(D && D.isReactComponent);
    }
    function Ue(b, D, F) {
      if (b == null)
        return "";
      if (typeof b == "function")
        return L(b, Je(b));
      if (typeof b == "string")
        return se(b);
      switch (b) {
        case i:
          return se("Suspense");
        case c:
          return se("SuspenseList");
      }
      if (typeof b == "object")
        switch (b.$$typeof) {
          case u:
            return De(b.render);
          case d:
            return Ue(b.type, D, F);
          case p: {
            var X = b, de = X._payload, ye = X._init;
            try {
              return Ue(ye(de), D, F);
            } catch {
            }
          }
        }
      return "";
    }
    var et = Object.prototype.hasOwnProperty, zt = {}, Ft = $.ReactDebugCurrentFrame;
    function pt(b) {
      if (b) {
        var D = b._owner, F = Ue(b.type, b._source, D ? D.type : null);
        Ft.setExtraStackFrame(F);
      } else
        Ft.setExtraStackFrame(null);
    }
    function An(b, D, F, X, de) {
      {
        var ye = Function.call.bind(et);
        for (var ue in b)
          if (ye(b, ue)) {
            var ie = void 0;
            try {
              if (typeof b[ue] != "function") {
                var Ne = Error((X || "React class") + ": " + F + " type `" + ue + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof b[ue] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`.");
                throw Ne.name = "Invariant Violation", Ne;
              }
              ie = b[ue](D, ue, X, F, null, "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED");
            } catch (we) {
              ie = we;
            }
            ie && !(ie instanceof Error) && (pt(de), B("%s: type specification of %s `%s` is invalid; the type checker function must return `null` or an `Error` but returned a %s. You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument).", X || "React class", F, ue, typeof ie), pt(null)), ie instanceof Error && !(ie.message in zt) && (zt[ie.message] = !0, pt(de), B("Failed %s type: %s", F, ie.message), pt(null));
          }
      }
    }
    var Ln = Array.isArray;
    function kt(b) {
      return Ln(b);
    }
    function zn(b) {
      {
        var D = typeof Symbol == "function" && Symbol.toStringTag, F = D && b[Symbol.toStringTag] || b.constructor.name || "Object";
        return F;
      }
    }
    function Fn(b) {
      try {
        return qt(b), !1;
      } catch {
        return !0;
      }
    }
    function qt(b) {
      return "" + b;
    }
    function Wt(b) {
      if (Fn(b))
        return B("The provided key is an unsupported type %s. This value must be coerced to a string before before using it here.", zn(b)), qt(b);
    }
    var Ht = $.ReactCurrentOwner, qn = {
      key: !0,
      ref: !0,
      __self: !0,
      __source: !0
    }, Ut, Yt;
    function Wn(b) {
      if (et.call(b, "ref")) {
        var D = Object.getOwnPropertyDescriptor(b, "ref").get;
        if (D && D.isReactWarning)
          return !1;
      }
      return b.ref !== void 0;
    }
    function Hn(b) {
      if (et.call(b, "key")) {
        var D = Object.getOwnPropertyDescriptor(b, "key").get;
        if (D && D.isReactWarning)
          return !1;
      }
      return b.key !== void 0;
    }
    function Un(b, D) {
      typeof b.ref == "string" && Ht.current;
    }
    function Yn(b, D) {
      {
        var F = function() {
          Ut || (Ut = !0, B("%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://reactjs.org/link/special-props)", D));
        };
        F.isReactWarning = !0, Object.defineProperty(b, "key", {
          get: F,
          configurable: !0
        });
      }
    }
    function Gn(b, D) {
      {
        var F = function() {
          Yt || (Yt = !0, B("%s: `ref` 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://reactjs.org/link/special-props)", D));
        };
        F.isReactWarning = !0, Object.defineProperty(b, "ref", {
          get: F,
          configurable: !0
        });
      }
    }
    var Kn = function(b, D, F, X, de, ye, ue) {
      var ie = {
        // This tag allows us to uniquely identify this as a React Element
        $$typeof: t,
        // Built-in properties that belong on the element
        type: b,
        key: D,
        ref: F,
        props: ue,
        // Record the component responsible for creating this element.
        _owner: ye
      };
      return ie._store = {}, Object.defineProperty(ie._store, "validated", {
        configurable: !1,
        enumerable: !1,
        writable: !0,
        value: !1
      }), Object.defineProperty(ie, "_self", {
        configurable: !1,
        enumerable: !1,
        writable: !1,
        value: X
      }), Object.defineProperty(ie, "_source", {
        configurable: !1,
        enumerable: !1,
        writable: !1,
        value: de
      }), Object.freeze && (Object.freeze(ie.props), Object.freeze(ie)), ie;
    };
    function Jn(b, D, F, X, de) {
      {
        var ye, ue = {}, ie = null, Ne = null;
        F !== void 0 && (Wt(F), ie = "" + F), Hn(D) && (Wt(D.key), ie = "" + D.key), Wn(D) && (Ne = D.ref, Un(D, de));
        for (ye in D)
          et.call(D, ye) && !qn.hasOwnProperty(ye) && (ue[ye] = D[ye]);
        if (b && b.defaultProps) {
          var we = b.defaultProps;
          for (ye in we)
            ue[ye] === void 0 && (ue[ye] = we[ye]);
        }
        if (ie || Ne) {
          var _e = typeof b == "function" ? b.displayName || b.name || "Unknown" : b;
          ie && Yn(ue, _e), Ne && Gn(ue, _e);
        }
        return Kn(b, ie, Ne, de, X, Ht.current, ue);
      }
    }
    var _t = $.ReactCurrentOwner, Gt = $.ReactDebugCurrentFrame;
    function Xe(b) {
      if (b) {
        var D = b._owner, F = Ue(b.type, b._source, D ? D.type : null);
        Gt.setExtraStackFrame(F);
      } else
        Gt.setExtraStackFrame(null);
    }
    var Ct;
    Ct = !1;
    function St(b) {
      return typeof b == "object" && b !== null && b.$$typeof === t;
    }
    function Kt() {
      {
        if (_t.current) {
          var b = Q(_t.current.type);
          if (b)
            return `

Check the render method of \`` + b + "`.";
        }
        return "";
      }
    }
    function Xn(b) {
      return "";
    }
    var Jt = {};
    function Qn(b) {
      {
        var D = Kt();
        if (!D) {
          var F = typeof b == "string" ? b : b.displayName || b.name;
          F && (D = `

Check the top-level render call using <` + F + ">.");
        }
        return D;
      }
    }
    function Xt(b, D) {
      {
        if (!b._store || b._store.validated || b.key != null)
          return;
        b._store.validated = !0;
        var F = Qn(D);
        if (Jt[F])
          return;
        Jt[F] = !0;
        var X = "";
        b && b._owner && b._owner !== _t.current && (X = " It was passed a child from " + Q(b._owner.type) + "."), Xe(b), B('Each child in a list should have a unique "key" prop.%s%s See https://reactjs.org/link/warning-keys for more information.', F, X), Xe(null);
      }
    }
    function Qt(b, D) {
      {
        if (typeof b != "object")
          return;
        if (kt(b))
          for (var F = 0; F < b.length; F++) {
            var X = b[F];
            St(X) && Xt(X, D);
          }
        else if (St(b))
          b._store && (b._store.validated = !0);
        else if (b) {
          var de = x(b);
          if (typeof de == "function" && de !== b.entries)
            for (var ye = de.call(b), ue; !(ue = ye.next()).done; )
              St(ue.value) && Xt(ue.value, D);
        }
      }
    }
    function Zn(b) {
      {
        var D = b.type;
        if (D == null || typeof D == "string")
          return;
        var F;
        if (typeof D == "function")
          F = D.propTypes;
        else if (typeof D == "object" && (D.$$typeof === u || // Note: Memo only checks outer props here.
        // Inner props are checked in the reconciler.
        D.$$typeof === d))
          F = D.propTypes;
        else
          return;
        if (F) {
          var X = Q(D);
          An(F, b.props, "prop", X, b);
        } else if (D.PropTypes !== void 0 && !Ct) {
          Ct = !0;
          var de = Q(D);
          B("Component %s declared `PropTypes` instead of `propTypes`. Did you misspell the property assignment?", de || "Unknown");
        }
        typeof D.getDefaultProps == "function" && !D.getDefaultProps.isReactClassApproved && B("getDefaultProps is only used on classic React.createClass definitions. Use a static property named `defaultProps` instead.");
      }
    }
    function er(b) {
      {
        for (var D = Object.keys(b.props), F = 0; F < D.length; F++) {
          var X = D[F];
          if (X !== "children" && X !== "key") {
            Xe(b), B("Invalid prop `%s` supplied to `React.Fragment`. React.Fragment can only have `key` and `children` props.", X), Xe(null);
            break;
          }
        }
        b.ref !== null && (Xe(b), B("Invalid attribute `ref` supplied to `React.Fragment`."), Xe(null));
      }
    }
    var Zt = {};
    function ea(b, D, F, X, de, ye) {
      {
        var ue = N(b);
        if (!ue) {
          var ie = "";
          (b === void 0 || typeof b == "object" && b !== null && Object.keys(b).length === 0) && (ie += " You likely forgot to export your component from the file it's defined in, or you might have mixed up default and named imports.");
          var Ne = Xn();
          Ne ? ie += Ne : ie += Kt();
          var we;
          b === null ? we = "null" : kt(b) ? we = "array" : b !== void 0 && b.$$typeof === t ? (we = "<" + (Q(b.type) || "Unknown") + " />", ie = " Did you accidentally export a JSX literal instead of a component?") : we = typeof b, B("React.jsx: type is invalid -- expected a string (for built-in components) or a class/function (for composite components) but got: %s.%s", we, ie);
        }
        var _e = Jn(b, D, F, de, ye);
        if (_e == null)
          return _e;
        if (ue) {
          var Ve = D.children;
          if (Ve !== void 0)
            if (X)
              if (kt(Ve)) {
                for (var Qe = 0; Qe < Ve.length; Qe++)
                  Qt(Ve[Qe], b);
                Object.freeze && Object.freeze(Ve);
              } else
                B("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
              Qt(Ve, b);
        }
        if (et.call(D, "key")) {
          var Ye = Q(b), Ee = Object.keys(D).filter(function(lr) {
            return lr !== "key";
          }), $t = Ee.length > 0 ? "{key: someKey, " + Ee.join(": ..., ") + ": ...}" : "{key: someKey}";
          if (!Zt[Ye + $t]) {
            var sr = Ee.length > 0 ? "{" + Ee.join(": ..., ") + ": ...}" : "{}";
            B(`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} />`, $t, Ye, sr, Ye), Zt[Ye + $t] = !0;
          }
        }
        return b === n ? er(_e) : Zn(_e), _e;
      }
    }
    function tr(b, D, F) {
      return ea(b, D, F, !0);
    }
    function ar(b, D, F) {
      return ea(b, D, F, !1);
    }
    var nr = ar, rr = tr;
    at.Fragment = n, at.jsx = nr, at.jsxs = rr;
  }()), at;
}
var sa;
function xr() {
  return sa || (sa = 1, process.env.NODE_ENV === "production" ? mt.exports = br() : mt.exports = wr()), mt.exports;
}
var f = xr();
const kr = ({
  items: e = [],
  multiple: t = !1,
  variant: a = "default",
  onToggle: n,
  className: r = "",
  style: s = {},
  ...l
}) => {
  const [o, u] = te([]), i = Pa(a, r), c = (p) => {
    const h = Da(o, p, t);
    u(h), n == null || n(p, h.includes(p));
  }, d = (p) => o.includes(p);
  return /* @__PURE__ */ f.jsx("div", { className: i, style: s, ...l, children: e.map((p, h) => /* @__PURE__ */ f.jsxs("div", { className: "wc-accordion-item", children: [
    /* @__PURE__ */ f.jsxs(
      "button",
      {
        className: `wc-accordion-header ${d(h) ? "wc-accordion-header--active" : ""}`,
        onClick: () => c(h),
        type: "button",
        children: [
          /* @__PURE__ */ f.jsx("span", { className: "wc-accordion-title", children: p.title }),
          /* @__PURE__ */ f.jsx(
            "span",
            {
              className: `wc-accordion-icon ${d(h) ? "wc-accordion-icon--rotated" : ""}`,
              children: "▼"
            }
          )
        ]
      }
    ),
    /* @__PURE__ */ f.jsx(
      "div",
      {
        className: `wc-accordion-content ${d(h) ? "wc-accordion-content--open" : ""}`,
        children: /* @__PURE__ */ f.jsx("div", { className: "wc-accordion-content-inner", children: p.content })
      }
    )
  ] }, h)) });
};
kr.displayName = "Accordion";
const la = {
  success: "✓",
  info: "ⓘ",
  warning: "⚠",
  error: "✕"
};
function Va(e) {
  return la[e] || la.info;
}
function Ma(e, t) {
  return [
    "wc-alert",
    `wc-alert--${e}`,
    `wc-alert--${t}`
  ];
}
function _r(e) {
  return ["success", "info", "warning", "error"].includes(e);
}
function Cr(e) {
  return ["filled", "outlined", "standard"].includes(e);
}
const Sr = {
  key: 0,
  class: "wc-alert-icon"
}, $r = ["innerHTML"], jr = { class: "wc-alert-content" }, Nr = {
  key: 0,
  class: "wc-alert-title"
}, Tr = { class: "wc-alert-message" }, hf = {
  __name: "Alert",
  props: {
    type: {
      type: String,
      default: "info",
      validator: _r
    },
    title: {
      type: String,
      default: ""
    },
    message: {
      type: String,
      default: ""
    },
    closable: {
      type: Boolean,
      default: !1
    },
    showIcon: {
      type: Boolean,
      default: !0
    },
    variant: {
      type: String,
      default: "filled",
      validator: Cr
    }
  },
  emits: ["close"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(!0), s = C(() => Ma(a.type, a.variant)), l = C(() => Va(a.type)), o = () => {
      r.value = !1, n("close");
    };
    return (u, i) => r.value ? (m(), y("div", {
      key: 0,
      class: T(s.value),
      role: "alert"
    }, [
      e.showIcon ? (m(), y("div", Sr, [
        _("span", { innerHTML: l.value }, null, 8, $r)
      ])) : j("", !0),
      _("div", jr, [
        e.title ? (m(), y("div", Nr, I(e.title), 1)) : j("", !0),
        _("div", Tr, [
          M(u.$slots, "default", {}, () => [
            he(I(e.message), 1)
          ])
        ])
      ]),
      e.closable ? (m(), y("button", {
        key: 1,
        class: "wc-alert-close",
        type: "button",
        "aria-label": "关闭",
        onClick: o
      }, " × ")) : j("", !0)
    ], 2)) : j("", !0);
  }
};
function vf({
  type: e = "info",
  variant: t = "standard",
  title: a = "",
  closable: n = !1,
  showIcon: r = !0,
  className: s = "",
  children: l,
  onClose: o = () => {
  }
}) {
  const [u, i] = te(!0);
  if (!u) return null;
  const c = () => {
    i(!1), o();
  }, d = Ma(e, t), p = Va(e), h = [
    ...d,
    s
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsxs("div", { className: h, role: "alert", children: [
    r && /* @__PURE__ */ f.jsx("div", { className: "wc-alert-icon", children: /* @__PURE__ */ f.jsx("span", { children: p }) }),
    /* @__PURE__ */ f.jsxs("div", { className: "wc-alert-content", children: [
      a && /* @__PURE__ */ f.jsx("div", { className: "wc-alert-title", children: a }),
      /* @__PURE__ */ f.jsx("div", { className: "wc-alert-message", children: l })
    ] }),
    n && /* @__PURE__ */ f.jsx(
      "button",
      {
        type: "button",
        className: "wc-alert-close",
        "aria-label": "关闭",
        onClick: c,
        children: "×"
      }
    )
  ] });
}
const yf = {
  __name: "AppBar",
  props: {
    position: {
      type: String,
      default: "fixed",
      validator: (e) => ["fixed", "absolute", "sticky", "static", "relative"].includes(e)
    },
    color: {
      type: String,
      default: "primary",
      validator: (e) => ["primary", "secondary", "transparent", "inherit"].includes(e)
    },
    elevation: {
      type: Number,
      default: 4
    },
    variant: {
      type: String,
      default: "elevation",
      validator: (e) => ["elevation", "outlined"].includes(e)
    },
    class: {
      type: [String, Array, Object],
      default: ""
    },
    style: {
      type: [String, Object],
      default: () => ({})
    }
  },
  setup(e) {
    const t = e;
    return (a, n) => (m(), y("div", {
      class: T(["wc-appbar", `wc-appbar--${t.position}`, `wc-appbar--${t.color}`, `wc-appbar--elevation-${t.elevation}`, `wc-appbar--${t.variant}`]),
      style: ce(e.style)
    }, [
      M(a.$slots, "default")
    ], 6));
  }
}, gf = ({
  children: e,
  position: t = "fixed",
  color: a = "primary",
  elevation: n = 4,
  variant: r = "elevation",
  className: s = "",
  style: l = {},
  ...o
}) => {
  const u = `wc-appbar wc-appbar--${t} wc-appbar--${a} wc-appbar--elevation-${n} wc-appbar--${r} ${s}`;
  return /* @__PURE__ */ f.jsx("div", { className: u, style: l, ...o, children: e });
}, Er = ["xs", "sm", "md", "lg", "xl"], Ir = ["circular", "rounded", "square"], Br = ["default", "primary", "secondary", "success", "warning", "error"];
function Rr(e) {
  return typeof e == "number" ? e > 0 : Er.includes(e);
}
function Pr(e) {
  return Ir.includes(e);
}
function Dr(e) {
  return Br.includes(e);
}
function Vr({ size: e, variant: t, color: a, src: n, imgError: r }) {
  const s = ["wc-avatar"];
  return typeof e == "string" && s.push(`wc-avatar--${e}`), s.push(`wc-avatar--${t}`), (!n || r) && s.push(`wc-avatar--${a}`), s;
}
function Mr(e) {
  const t = {};
  return typeof e == "number" && (t.width = `${e}px`, t.height = `${e}px`, t.fontSize = `${e * 0.4}px`), t;
}
function Or(e) {
  if (!e) return "";
  const t = e.trim(), a = t.charAt(0);
  if (/[\u4e00-\u9fa5]/.test(a))
    return a;
  const r = t.split(/\s+/).filter(Boolean);
  return r.length === 1 ? r[0].charAt(0).toUpperCase() : (r[0].charAt(0) + r[1].charAt(0)).toUpperCase();
}
function Ar(e) {
  e(!0);
}
function Lr(e) {
  e(!1);
}
const zr = ["src", "alt"], Fr = {
  key: 1,
  class: "wc-avatar-text"
}, bf = {
  __name: "Avatar",
  props: {
    src: {
      type: String,
      default: ""
    },
    alt: {
      type: String,
      default: ""
    },
    size: {
      type: [String, Number],
      default: "md",
      validator: Rr
    },
    variant: {
      type: String,
      default: "circular",
      validator: Pr
    },
    color: {
      type: String,
      default: "default",
      validator: Dr
    },
    children: {
      type: String,
      default: ""
    }
  },
  setup(e) {
    const t = e, a = A(!1), n = C(
      () => Vr({
        size: t.size,
        variant: t.variant,
        color: t.color,
        src: t.src,
        imgError: a.value
      })
    ), r = C(() => Mr(t.size)), s = C(() => Or(t.children)), l = () => Ar((u) => {
      a.value = u;
    }), o = () => Lr((u) => {
      a.value = u;
    });
    return (u, i) => (m(), y("div", {
      class: T(n.value),
      style: ce(r.value)
    }, [
      e.src && !a.value ? (m(), y("img", {
        key: 0,
        src: e.src,
        alt: e.alt,
        onError: l,
        onLoad: o
      }, null, 40, zr)) : !e.src && e.children ? (m(), y("span", Fr, I(s.value), 1)) : M(u.$slots, "default", { key: 2 })
    ], 6));
  }
}, Oa = [
  "primary",
  "secondary",
  "success",
  "warning",
  "error",
  "purple",
  "orange",
  "cyan",
  "pink"
], qr = ["sm", "md", "lg"];
function Wr(e) {
  return Oa.includes(e);
}
function Hr(e) {
  return Wr(e) ? e : "primary";
}
function Aa({ variant: e, size: t, dot: a, className: n }) {
  const s = [
    "wc-badge",
    `wc-badge--${Hr(e)}`
  ];
  return a ? s.push(`wc-badge--dot-${t}`) : s.push(`wc-badge--${t}`), n && s.push(n), s.filter(Boolean).join(" ");
}
const wf = {
  __name: "Badge",
  props: {
    variant: {
      type: String,
      default: "primary",
      validator: (e) => Oa.includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => qr.includes(e)
    },
    dot: {
      type: Boolean,
      default: !1
    }
  },
  setup(e) {
    const t = e, a = C(
      () => Aa({
        variant: t.variant,
        size: t.size,
        dot: t.dot,
        className: ""
      })
    );
    return (n, r) => (m(), y("span", {
      class: T(a.value)
    }, [
      e.dot ? j("", !0) : M(n.$slots, "default", { key: 0 })
    ], 2));
  }
}, Ur = ({
  children: e,
  variant: t = "primary",
  size: a = "md",
  dot: n = !1,
  className: r = "",
  ...s
}) => {
  const l = Aa({ variant: t, size: a, dot: n, className: r });
  return /* @__PURE__ */ f.jsx("span", { className: l, ...s, children: !n && e });
};
Ur.displayName = "Badge";
const oa = {
  success: "✓",
  info: "📢",
  warning: "⚠",
  error: "✕"
}, Yr = ["success", "info", "warning", "error"], Gr = ["top", "bottom"];
function Kr(e) {
  return Yr.includes(e);
}
function Jr(e) {
  return Gr.includes(e);
}
function La(e, t, a) {
  const n = [
    "wc-banner",
    `wc-banner--${e}`,
    `wc-banner--${t}`
  ];
  return a && n.push("wc-banner--sticky"), n.join(" ");
}
function za(e) {
  return oa[e] || oa.info;
}
function Fa(e) {
  return { zIndex: e };
}
function qa(e, t) {
  e(!1), t && t();
}
function Wa(e) {
  e && e();
}
const Xr = { class: "wc-banner-content" }, Qr = {
  key: 0,
  class: "wc-banner-icon"
}, Zr = ["innerHTML"], es = { class: "wc-banner-text" }, ts = {
  key: 0,
  class: "wc-banner-title"
}, as = { class: "wc-banner-message" }, ns = {
  key: 1,
  class: "wc-banner-actions"
}, xf = {
  __name: "Banner",
  props: {
    type: {
      type: String,
      default: "info",
      validator: Kr
    },
    position: {
      type: String,
      default: "top",
      validator: Jr
    },
    title: {
      type: String,
      default: ""
    },
    message: {
      type: String,
      default: ""
    },
    closable: {
      type: Boolean,
      default: !0
    },
    showIcon: {
      type: Boolean,
      default: !0
    },
    showDefaultAction: {
      type: Boolean,
      default: !1
    },
    actionText: {
      type: String,
      default: "立即行动"
    },
    sticky: {
      type: Boolean,
      default: !0
    },
    zIndex: {
      type: Number,
      default: 1e3
    }
  },
  emits: ["close", "action"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(!0), s = C(() => La(a.type, a.position, a.sticky)), l = C(() => Fa(a.zIndex)), o = C(() => za(a.type)), u = () => {
      qa((c) => {
        r.value = c;
      }, () => n("close"));
    }, i = () => {
      Wa(() => n("action"));
    };
    return (c, d) => r.value ? (m(), y("div", {
      key: 0,
      class: T(s.value),
      style: ce(l.value)
    }, [
      _("div", Xr, [
        e.showIcon ? (m(), y("div", Qr, [
          _("span", { innerHTML: o.value }, null, 8, Zr)
        ])) : j("", !0),
        _("div", es, [
          e.title ? (m(), y("div", ts, I(e.title), 1)) : j("", !0),
          _("div", as, [
            M(c.$slots, "default", {}, () => [
              he(I(e.message), 1)
            ])
          ])
        ]),
        c.$slots.actions || e.showDefaultAction ? (m(), y("div", ns, [
          M(c.$slots, "actions", {}, () => [
            e.showDefaultAction ? (m(), y("button", {
              key: 0,
              class: "wc-banner-action-btn",
              type: "button",
              onClick: i
            }, I(e.actionText), 1)) : j("", !0)
          ])
        ])) : j("", !0),
        e.closable ? (m(), y("button", {
          key: 2,
          class: "wc-banner-close",
          type: "button",
          "aria-label": "关闭",
          onClick: u
        }, " × ")) : j("", !0)
      ])
    ], 6)) : j("", !0);
  }
};
function kf({
  type: e = "info",
  position: t = "top",
  title: a = "",
  message: n = "",
  closable: r = !0,
  showIcon: s = !0,
  showDefaultAction: l = !1,
  actionText: o = "立即行动",
  sticky: u = !0,
  zIndex: i = 1e3,
  onClose: c,
  onAction: d,
  children: p
}) {
  const [h, v] = te(!0);
  if (!h) return null;
  const g = La(e, t, u), x = Fa(i), $ = za(e), B = () => {
    qa(v, c);
  }, S = () => {
    Wa(d);
  }, k = p && dt.Children.count(p) > 0;
  return /* @__PURE__ */ f.jsx(
    "div",
    {
      className: g,
      style: x,
      children: /* @__PURE__ */ f.jsxs("div", { className: "wc-banner-content", children: [
        s && /* @__PURE__ */ f.jsx("div", { className: "wc-banner-icon", children: $ }),
        /* @__PURE__ */ f.jsxs("div", { className: "wc-banner-text", children: [
          a && /* @__PURE__ */ f.jsx("div", { className: "wc-banner-title", children: a }),
          /* @__PURE__ */ f.jsx("div", { className: "wc-banner-message", children: n })
        ] }),
        (k || l) && /* @__PURE__ */ f.jsx("div", { className: "wc-banner-actions", children: k ? p : /* @__PURE__ */ f.jsx(
          "button",
          {
            onClick: S,
            className: "wc-banner-action-btn",
            children: o
          }
        ) }),
        r && /* @__PURE__ */ f.jsx(
          "button",
          {
            onClick: B,
            className: "wc-banner-close",
            "aria-label": "关闭",
            children: "×"
          }
        )
      ] })
    }
  );
}
const rs = ["filled", "outlined", "minimal", "elevated"], ss = ["default", "primary", "success", "warning", "error", "info"], ls = ["small", "medium", "large"];
function Ha(e = "", t = "filled", a = "default", n = "medium", r = !0, s = !0) {
  const l = ["wc-card"];
  return t && t !== "filled" && l.push(`wc-card--${t}`), a && a !== "default" && l.push(`wc-card--${a}`), n && n !== "medium" && l.push(`wc-card--${n}`), r && l.push("wc-card--interactive"), s && l.push("wc-card--no-border"), e && l.push(e), l.filter(Boolean).join(" ");
}
const os = {
  key: 0,
  class: "wc-card-header"
}, is = {
  key: 0,
  class: "wc-card__title"
}, cs = { class: "wc-card-content" }, us = {
  key: 1,
  class: "wc-card-footer"
}, ds = {
  __name: "Card",
  props: {
    title: {
      type: String,
      default: ""
    },
    variant: {
      type: String,
      default: "filled",
      validator: (e) => rs.includes(e)
    },
    color: {
      type: String,
      default: "default",
      validator: (e) => ss.includes(e)
    },
    size: {
      type: String,
      default: "medium",
      validator: (e) => ls.includes(e)
    },
    interactive: {
      type: Boolean,
      default: !0
    },
    noBorder: {
      type: Boolean,
      default: !0
    },
    className: {
      type: String,
      default: ""
    }
  },
  setup(e) {
    const t = e, a = C(
      () => Ha(t.className, t.variant, t.color, t.size, t.interactive, t.noBorder)
    );
    return (n, r) => (m(), y("div", {
      class: T(a.value)
    }, [
      e.title || n.$slots.header ? (m(), y("div", os, [
        M(n.$slots, "header", {}, () => [
          e.title ? (m(), y("h3", is, I(e.title), 1)) : j("", !0)
        ])
      ])) : j("", !0),
      _("div", cs, [
        M(n.$slots, "default")
      ]),
      n.$slots.footer ? (m(), y("div", us, [
        M(n.$slots, "footer")
      ])) : j("", !0)
    ], 2));
  }
};
function Ua(e = "", t = "default", a = !0, n = !0, r = "medium", s = "default") {
  const l = ["wc-blockquote"];
  return t && t !== "default" && t !== "card" && l.push(`wc-blockquote--${t}`), a && l.push("wc-blockquote--no-border"), n && l.push("wc-blockquote--interactive"), r && r !== "medium" && l.push(`wc-blockquote--${r}`), s && s !== "default" && l.push(`wc-blockquote--${s}`), e && l.push(e), l.filter(Boolean).join(" ");
}
const fs = { class: "quote-text" }, ps = {
  key: 0,
  class: "quote-cite"
}, ms = { class: "quote-text" }, hs = {
  key: 0,
  class: "quote-cite"
}, _f = {
  __name: "Blockquote",
  props: {
    cite: {
      type: String,
      default: ""
    },
    className: {
      type: String,
      default: ""
    },
    variant: {
      type: String,
      default: "default",
      validator: (e) => ["default", "minimal", "card"].includes(e)
    },
    noBorder: {
      type: Boolean,
      default: !0
    },
    interactive: {
      type: Boolean,
      default: !0
    },
    size: {
      type: String,
      default: "medium",
      validator: (e) => ["small", "medium", "large"].includes(e)
    },
    color: {
      type: String,
      default: "default",
      validator: (e) => ["default", "primary", "success", "warning", "error", "info"].includes(e)
    }
  },
  setup(e) {
    const t = e, a = C(() => t.variant === "card"), n = C(
      () => a.value ? "wc-blockquote" : Ua(t.className, t.variant, t.noBorder, t.interactive, t.size, t.color)
    );
    return (r, s) => a.value ? (m(), Se(ds, {
      key: 0,
      variant: "filled",
      color: t.color,
      size: t.size,
      interactive: t.interactive,
      noBorder: t.noBorder,
      class: T(t.className)
    }, {
      default: je(() => [
        _("p", fs, [
          M(r.$slots, "default")
        ]),
        e.cite ? (m(), y("footer", ps, "— " + I(e.cite), 1)) : j("", !0)
      ]),
      _: 3
    }, 8, ["color", "size", "interactive", "noBorder", "class"])) : (m(), y("blockquote", {
      key: 1,
      class: T(n.value)
    }, [
      _("p", ms, [
        M(r.$slots, "default")
      ]),
      e.cite ? (m(), y("footer", hs, "— " + I(e.cite), 1)) : j("", !0)
    ], 2));
  }
}, Ya = ({
  children: e,
  title: t = "",
  variant: a = "filled",
  color: n = "default",
  size: r = "medium",
  interactive: s = !0,
  noBorder: l = !0,
  className: o = "",
  header: u = null,
  footer: i = null,
  style: c = {},
  onClick: d,
  onMouseEnter: p,
  onMouseLeave: h,
  ...v
}) => {
  const g = Ha(o, a, n, r, s, l), x = ($) => {
    s && d && d($);
  };
  return /* @__PURE__ */ f.jsxs(
    "div",
    {
      className: g,
      style: c,
      onClick: x,
      onMouseEnter: p,
      onMouseLeave: h,
      role: d ? "button" : void 0,
      tabIndex: d ? 0 : void 0,
      ...v,
      children: [
        u && /* @__PURE__ */ f.jsx("div", { className: "wc-card-header", children: u }),
        t && /* @__PURE__ */ f.jsx("div", { className: "wc-card-header", children: /* @__PURE__ */ f.jsx("h3", { className: "wc-card__title", children: t }) }),
        /* @__PURE__ */ f.jsx("div", { className: "wc-card-content", children: e }),
        i && /* @__PURE__ */ f.jsx("div", { className: "wc-card-footer", children: i })
      ]
    }
  );
};
Ya.displayName = "Card";
function Cf({
  cite: e = "",
  children: t,
  className: a = "",
  variant: n = "default",
  noBorder: r = !0,
  interactive: s = !0,
  size: l = "medium",
  color: o = "default",
  ...u
}) {
  if (n === "card")
    return /* @__PURE__ */ f.jsxs(
      Ya,
      {
        variant: "filled",
        color: o,
        size: l,
        interactive: s,
        noBorder: r,
        className: a,
        ...u,
        children: [
          /* @__PURE__ */ f.jsx("p", { className: "quote-text", children: t }),
          e && /* @__PURE__ */ f.jsxs("footer", { className: "quote-cite", children: [
            "— ",
            e
          ] })
        ]
      }
    );
  const i = Ua(a, n, r, s, l, o);
  return /* @__PURE__ */ f.jsxs("blockquote", { className: i, ...u, children: [
    /* @__PURE__ */ f.jsx("p", { className: "quote-text", children: t }),
    e && /* @__PURE__ */ f.jsxs("footer", { className: "quote-cite", children: [
      "— ",
      e
    ] })
  ] });
}
const Ie = {
  0: "0",
  1: "0.25rem",
  2: "0.5rem",
  3: "0.75rem",
  4: "1rem",
  5: "1.25rem",
  6: "1.5rem",
  8: "2rem",
  10: "2.5rem",
  12: "3rem",
  16: "4rem",
  20: "5rem",
  24: "6rem"
}, ia = {
  flex: "flex",
  block: "block",
  inline: "inline",
  "inline-block": "inline-block",
  none: "hidden",
  grid: "grid"
}, ca = {
  row: "flex-row",
  column: "flex-col",
  "row-reverse": "flex-row-reverse",
  "column-reverse": "flex-col-reverse"
}, ua = {
  "flex-start": "justify-start",
  center: "justify-center",
  "flex-end": "justify-end",
  "space-between": "justify-between",
  "space-around": "justify-around",
  "space-evenly": "justify-evenly"
}, da = {
  "flex-start": "items-start",
  center: "items-center",
  "flex-end": "items-end",
  stretch: "items-stretch",
  baseline: "items-baseline"
}, fa = {
  wrap: "flex-wrap",
  nowrap: "flex-nowrap",
  "wrap-reverse": "flex-wrap-reverse"
};
function xe(e) {
  return typeof e == "number" ? `${e}px` : e;
}
function Ga(e) {
  const t = [];
  if (e.display && ia[e.display] && t.push(ia[e.display]), e.flexDirection && ca[e.flexDirection] && t.push(ca[e.flexDirection]), e.justifyContent && ua[e.justifyContent] && t.push(ua[e.justifyContent]), e.alignItems && da[e.alignItems] && t.push(da[e.alignItems]), e.flexWrap && fa[e.flexWrap] && t.push(fa[e.flexWrap]), e.gap !== void 0) {
    const a = e.gap.toString();
    ["0", "1", "2", "3", "4", "5", "6", "8", "10", "12", "16", "20", "24"].includes(a) && t.push(`gap-${a}`);
  }
  return t;
}
function Ka(e) {
  const t = {};
  if (e.p !== void 0 && (t.padding = Ie[e.p] || xe(e.p)), e.pt !== void 0 && (t.paddingTop = Ie[e.pt] || xe(e.pt)), e.pr !== void 0 && (t.paddingRight = Ie[e.pr] || xe(e.pr)), e.pb !== void 0 && (t.paddingBottom = Ie[e.pb] || xe(e.pb)), e.pl !== void 0 && (t.paddingLeft = Ie[e.pl] || xe(e.pl)), e.px !== void 0) {
    const a = Ie[e.px] || xe(e.px);
    t.paddingLeft = a, t.paddingRight = a;
  }
  if (e.py !== void 0) {
    const a = Ie[e.py] || xe(e.py);
    t.paddingTop = a, t.paddingBottom = a;
  }
  if (e.m !== void 0 && (t.margin = Ie[e.m] || xe(e.m)), e.mt !== void 0 && (t.marginTop = Ie[e.mt] || xe(e.mt)), e.mr !== void 0 && (t.marginRight = Ie[e.mr] || xe(e.mr)), e.mb !== void 0 && (t.marginBottom = Ie[e.mb] || xe(e.mb)), e.ml !== void 0 && (t.marginLeft = Ie[e.ml] || xe(e.ml)), e.mx !== void 0) {
    const a = Ie[e.mx] || xe(e.mx);
    t.marginLeft = a, t.marginRight = a;
  }
  if (e.my !== void 0) {
    const a = Ie[e.my] || xe(e.my);
    t.marginTop = a, t.marginBottom = a;
  }
  return e.display && (t.display = e.display), e.flexDirection && (t.flexDirection = e.flexDirection), e.justifyContent && (t.justifyContent = e.justifyContent), e.alignItems && (t.alignItems = e.alignItems), e.flexWrap && (t.flexWrap = e.flexWrap), e.gap !== void 0 && (t.gap = xe(e.gap)), e.bgcolor && (t.backgroundColor = e.bgcolor), e.color && (t.color = e.color), e.border && (t.border = e.border), e.borderRadius !== void 0 && (t.borderRadius = typeof e.borderRadius == "number" ? `${e.borderRadius}px` : e.borderRadius), e.width !== void 0 && (t.width = xe(e.width)), e.height !== void 0 && (t.height = xe(e.height)), e.minWidth !== void 0 && (t.minWidth = xe(e.minWidth)), e.minHeight !== void 0 && (t.minHeight = xe(e.minHeight)), e.maxWidth !== void 0 && (t.maxWidth = xe(e.maxWidth)), e.maxHeight !== void 0 && (t.maxHeight = xe(e.maxHeight)), t;
}
const Sf = {
  __name: "Box",
  props: {
    component: {
      type: String,
      default: "div"
    },
    // Spacing props
    p: [String, Number],
    pt: [String, Number],
    pr: [String, Number],
    pb: [String, Number],
    pl: [String, Number],
    px: [String, Number],
    py: [String, Number],
    m: [String, Number],
    mt: [String, Number],
    mr: [String, Number],
    mb: [String, Number],
    ml: [String, Number],
    mx: [String, Number],
    my: [String, Number],
    // Display
    display: String,
    // Flexbox
    flexDirection: String,
    justifyContent: String,
    alignItems: String,
    flexWrap: String,
    gap: [String, Number],
    // Colors
    bgcolor: String,
    color: String,
    // Border
    border: [String, Number],
    borderRadius: [String, Number],
    // Width and Height
    width: [String, Number],
    height: [String, Number],
    minWidth: [String, Number],
    minHeight: [String, Number],
    maxWidth: [String, Number],
    maxHeight: [String, Number]
  },
  setup(e) {
    const t = e, a = C(() => Ga(t)), n = C(() => Ka(t));
    return (r, s) => (m(), Se(ze(e.component), {
      class: T(a.value),
      style: ce(n.value)
    }, {
      default: je(() => [
        M(r.$slots, "default")
      ]),
      _: 3
    }, 8, ["class", "style"]));
  }
};
function $f({
  component: e = "div",
  children: t,
  className: a = "",
  // Spacing
  p: n,
  pt: r,
  pr: s,
  pb: l,
  pl: o,
  px: u,
  py: i,
  m: c,
  mt: d,
  mr: p,
  mb: h,
  ml: v,
  mx: g,
  my: x,
  // Flex & layout
  display: $,
  flexDirection: B,
  justifyContent: S,
  alignItems: k,
  flexWrap: w,
  gap: E,
  // Colors & border
  bgcolor: W,
  color: R,
  border: Y,
  borderRadius: N,
  // Size
  width: O,
  height: H,
  minWidth: Q,
  minHeight: q,
  maxWidth: ne,
  maxHeight: V,
  style: K = {},
  ...ge
}) {
  const oe = Ga({
    display: $,
    flexDirection: B,
    justifyContent: S,
    alignItems: k,
    flexWrap: w,
    gap: E
  }).concat(a).filter(Boolean).join(" "), P = {
    ...Ka({
      p: n,
      pt: r,
      pr: s,
      pb: l,
      pl: o,
      px: u,
      py: i,
      m: c,
      mt: d,
      mr: p,
      mb: h,
      ml: v,
      mx: g,
      my: x,
      display: $,
      flexDirection: B,
      justifyContent: S,
      alignItems: k,
      flexWrap: w,
      gap: E,
      bgcolor: W,
      color: R,
      border: Y,
      borderRadius: N,
      width: O,
      height: H,
      minWidth: Q,
      minHeight: q,
      maxWidth: ne,
      maxHeight: V
    }),
    ...K
  };
  return /* @__PURE__ */ f.jsx(e, { className: oe, style: P, ...ge, children: t });
}
const vs = ["default"];
function ys(e) {
  return vs.includes(e);
}
function Ja(e, t, a, n) {
  let r = [...e];
  if (t && r.length && r[0].label !== "首页" && r.unshift({ label: "首页", icon: a, href: "/" }), n > 0 && r.length > n) {
    const s = Math.max(1, n - 2);
    r = [
      ...r.slice(0, s),
      { label: "...", disabled: !0, isEllipsis: !0 },
      ...r.slice(-1)
    ];
  }
  return r;
}
function Xa(e) {
  return `wc-breadcrumb wc-breadcrumb--${e}`;
}
function Qa(e, t) {
  const a = ["wc-breadcrumb-item"];
  return e === t - 1 && a.push("wc-breadcrumb-item--current"), a.join(" ");
}
function gt(e) {
  const t = ["wc-breadcrumb-link"];
  return e && t.push("wc-breadcrumb-link--disabled"), t.join(" ");
}
function Za(e, t, a, n, r) {
  return t.disabled || t.isEllipsis || a === n - 1 ? (e.preventDefault(), !1) : (r && r(e, t, a), !0);
}
function Vt(e, t, a, n) {
  return e !== t - 1 && !a && !n;
}
const gs = { class: "wc-breadcrumb-list" }, bs = ["innerHTML"], ws = {
  key: 0,
  class: "wc-breadcrumb-separator",
  "aria-hidden": "true"
}, jf = {
  __name: "Breadcrumb",
  props: {
    items: {
      type: Array,
      required: !0,
      default: () => []
    },
    separator: {
      type: String,
      default: "/"
    },
    maxItems: {
      type: Number,
      default: 0
    },
    showHome: {
      type: Boolean,
      default: !1
    },
    homeIcon: {
      type: String,
      default: "🏠"
    },
    variant: {
      type: String,
      default: "default",
      validator: ys
    }
  },
  emits: ["click"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = C(() => Xa(a.variant)), s = C(
      () => Ja(a.items, a.showHome, a.homeIcon, a.maxItems)
    ), l = (i, c) => Vt(c, s.value.length, i.disabled, i.isEllipsis) ? i.href ? "a" : i.to ? "router-link" : "button" : "span", o = (i, c) => {
      if (Vt(c, s.value.length, i.disabled, i.isEllipsis))
        return i.href;
    }, u = (i, c, d) => {
      Za(
        i,
        c,
        d,
        s.value.length,
        (h, v, g) => n("click", { event: h, item: v, index: g })
      );
    };
    return (i, c) => (m(), y("nav", {
      class: T(r.value),
      "aria-label": "面包屑导航",
      role: "navigation"
    }, [
      _("ol", gs, [
        (m(!0), y(ke, null, Ce(s.value, (d, p) => (m(), y("li", {
          key: p,
          class: T(ta(Qa)(p, s.value.length))
        }, [
          (m(), Se(ze(l(d, p)), {
            class: T(ta(gt)(d.disabled)),
            href: o(d, p),
            "aria-current": p === s.value.length - 1 ? "page" : void 0,
            onClick: (h) => u(h, d, p)
          }, {
            default: je(() => [
              d.icon ? (m(), y("span", {
                key: 0,
                class: "wc-breadcrumb-icon",
                innerHTML: d.icon
              }, null, 8, bs)) : j("", !0),
              he(" " + I(d.label), 1)
            ]),
            _: 2
          }, 1032, ["class", "href", "aria-current", "onClick"])),
          p < s.value.length - 1 ? (m(), y("span", ws, I(e.separator), 1)) : j("", !0)
        ], 2))), 128))
      ])
    ], 2));
  }
};
function Nf({
  items: e = [],
  separator: t = "/",
  variant: a = "default",
  showHome: n = !1,
  homeIcon: r = "🏠",
  maxItems: s = 0,
  onItemClick: l
}) {
  const o = dt.useMemo(
    () => Ja(e, n, r, s),
    [e, n, r, s]
  ), u = (c, d, p) => {
    Za(c, d, p, o.length, l);
  }, i = Xa(a);
  return /* @__PURE__ */ f.jsx("nav", { className: i, "aria-label": "面包屑导航", role: "navigation", children: /* @__PURE__ */ f.jsx("ol", { className: "wc-breadcrumb-list", children: o.map((c, d) => /* @__PURE__ */ f.jsxs("li", { className: Qa(d, o.length), children: [
    Vt(d, o.length, c.disabled, c.isEllipsis) ? c.href ? /* @__PURE__ */ f.jsxs(
      "a",
      {
        href: c.href,
        className: gt(c.disabled),
        onClick: (p) => u(p, c, d),
        children: [
          c.icon && /* @__PURE__ */ f.jsx("span", { className: "wc-breadcrumb-icon", dangerouslySetInnerHTML: { __html: c.icon } }),
          c.label
        ]
      }
    ) : /* @__PURE__ */ f.jsxs(
      "button",
      {
        type: "button",
        onClick: (p) => u(p, c, d),
        className: gt(c.disabled),
        children: [
          c.icon && /* @__PURE__ */ f.jsx("span", { className: "wc-breadcrumb-icon", dangerouslySetInnerHTML: { __html: c.icon } }),
          c.label
        ]
      }
    ) : /* @__PURE__ */ f.jsxs("span", { className: gt(!0), "aria-current": "page", children: [
      c.icon && /* @__PURE__ */ f.jsx("span", { className: "wc-breadcrumb-icon", dangerouslySetInnerHTML: { __html: c.icon } }),
      c.label
    ] }),
    d < o.length - 1 && /* @__PURE__ */ f.jsx("span", { className: "wc-breadcrumb-separator", children: t })
  ] }, d)) }) });
}
const xs = [
  "primary",
  "secondary",
  "filled",
  "outlined",
  "text",
  "success",
  "warning",
  "error",
  "info",
  "purple",
  "orange",
  "cyan",
  "pink"
], ks = ["default", "outlined", "filled"], _s = ["xs", "sm", "md", "lg", "xl"], Cs = ["button", "submit", "reset"], Ss = ["none", "sm", "md", "lg", "full"];
function en(e) {
  return xs.includes(e);
}
function $s(e) {
  return _s.includes(e);
}
function js(e) {
  return Cs.includes(e);
}
function Ns(e) {
  return typeof e == "boolean" || Ss.includes(e);
}
function Ts(e) {
  return ks.includes(e);
}
function Es(e) {
  return en(e) ? e : "primary";
}
function tn(e) {
  const { variant: t, size: a, disabled: n, loading: r, fullWidth: s, uppercase: l, rounded: o, buttonStyle: u = "filled" } = e, i = ["wc-btn"];
  return i.push(`wc-btn--style-${u}`), i.push(`wc-btn--${Es(t)}`), i.push(`wc-btn--${a}`), (n || r) && i.push("wc-btn--disabled"), r && i.push("wc-btn--loading"), s && i.push("wc-btn--full-width"), l && i.push("wc-btn--uppercase"), o === !1 || o === "none" ? i.push("wc-btn--rounded-none") : typeof o == "string" ? i.push(`wc-btn--rounded-${o}`) : i.push("wc-btn--rounded"), i;
}
function an({ event: e, disabled: t, loading: a, href: n, target: r, onClick: s }) {
  !t && !a && (n && window.open(n, r), s == null || s(e));
}
const Is = ["disabled", "type"], Bs = {
  key: 0,
  class: "wc-btn__loading"
}, Rs = {
  key: 1,
  class: "wc-btn__start-icon"
}, Ps = {
  key: 2,
  class: "wc-btn__end-icon"
}, Ds = {
  __name: "Button",
  props: {
    variant: {
      type: String,
      default: "primary",
      validator: en
    },
    buttonStyle: {
      type: String,
      default: "filled",
      validator: Ts
    },
    size: {
      type: String,
      default: "md",
      validator: $s
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    loading: {
      type: Boolean,
      default: !1
    },
    fullWidth: {
      type: Boolean,
      default: !1
    },
    type: {
      type: String,
      default: "button",
      validator: js
    },
    href: {
      type: String,
      default: null
    },
    target: {
      type: String,
      default: "_self"
    },
    startIcon: {
      type: String,
      default: null
    },
    endIcon: {
      type: String,
      default: null
    },
    rounded: {
      type: [Boolean, String],
      default: !0,
      validator: Ns
    },
    uppercase: {
      type: Boolean,
      default: !1
    },
    ripple: {
      type: Boolean,
      default: !0
    }
  },
  emits: ["click", "mouseover", "mouseout", "focus", "blur"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(!1), s = A(!1), l = C(() => tn(a)), o = C(() => ({})), u = (h) => {
      an({
        event: h,
        disabled: a.disabled,
        loading: a.loading,
        href: a.href,
        target: a.target,
        onClick: (v) => n("click", v)
      });
    }, i = (h) => {
      r.value = !0, n("mouseover", h);
    }, c = (h) => {
      r.value = !1, n("mouseout", h);
    }, d = (h) => {
      s.value = !0, n("focus", h);
    }, p = (h) => {
      s.value = !1, n("blur", h);
    };
    return (h, v) => (m(), y("button", {
      class: T(l.value),
      disabled: e.disabled || e.loading,
      type: e.type,
      style: ce(o.value),
      onClick: u,
      onMouseover: i,
      onMouseout: c,
      onFocus: d,
      onBlur: p
    }, [
      e.loading ? (m(), y("span", Bs, v[0] || (v[0] = [
        _("svg", {
          class: "animate-spin h-4 w-4",
          fill: "none",
          viewBox: "0 0 24 24"
        }, [
          _("circle", {
            class: "opacity-25",
            cx: "12",
            cy: "12",
            r: "10",
            stroke: "currentColor",
            "stroke-width": "4"
          }),
          _("path", {
            class: "opacity-75",
            fill: "currentColor",
            d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z"
          })
        ], -1)
      ]))) : j("", !0),
      e.startIcon && !e.loading ? (m(), y("span", Rs, [
        M(h.$slots, "startIcon", {}, () => [
          he(I(e.startIcon), 1)
        ])
      ])) : j("", !0),
      _("span", {
        class: T(["wc-btn__content", { "opacity-0": e.loading }])
      }, [
        M(h.$slots, "default")
      ], 2),
      e.endIcon && !e.loading ? (m(), y("span", Ps, [
        M(h.$slots, "endIcon", {}, () => [
          he(I(e.endIcon), 1)
        ])
      ])) : j("", !0)
    ], 46, Is));
  }
}, Vs = ({
  children: e,
  variant: t = "primary",
  buttonStyle: a = "filled",
  size: n = "md",
  disabled: r = !1,
  loading: s = !1,
  fullWidth: l = !1,
  type: o = "button",
  href: u = null,
  target: i = "_self",
  startIcon: c = null,
  endIcon: d = null,
  rounded: p = !0,
  uppercase: h = !1,
  ripple: v = !0,
  onClick: g,
  onMouseOver: x,
  onMouseOut: $,
  onFocus: B,
  onBlur: S,
  className: k = "",
  style: w = {},
  ...E
}) => {
  const [W, R] = te(!1), [Y, N] = te(!1), O = tn({
    variant: t,
    buttonStyle: a,
    size: n,
    disabled: r,
    loading: s,
    fullWidth: l,
    uppercase: h,
    rounded: p
  }).concat(k).filter(Boolean).join(" "), H = {
    ...w
  }, Q = (oe) => {
    an({
      event: oe,
      disabled: r,
      loading: s,
      href: u,
      target: i,
      onClick: g
    });
  }, q = (oe) => {
    R(!0), x == null || x(oe);
  }, ne = (oe) => {
    R(!1), $ == null || $(oe);
  }, V = (oe) => {
    N(!0), B == null || B(oe);
  }, K = (oe) => {
    N(!1), S == null || S(oe);
  }, ge = () => /* @__PURE__ */ f.jsx("span", { className: "wc-btn__loading", children: /* @__PURE__ */ f.jsxs("svg", { className: "animate-spin h-4 w-4", fill: "none", viewBox: "0 0 24 24", children: [
    /* @__PURE__ */ f.jsx("circle", { className: "opacity-25", cx: "12", cy: "12", r: "10", stroke: "currentColor", strokeWidth: "4" }),
    /* @__PURE__ */ f.jsx("path", { className: "opacity-75", fill: "currentColor", d: "M4 12a8 8 0 018-8V0C5.373 0 0 5.373 0 12h4zm2 5.291A7.962 7.962 0 014 12H0c0 3.042 1.135 5.824 3 7.938l3-2.647z" })
  ] }) });
  return /* @__PURE__ */ f.jsxs(
    "button",
    {
      className: O,
      disabled: r || s,
      type: o,
      style: H,
      onClick: Q,
      onMouseOver: q,
      onMouseOut: ne,
      onFocus: V,
      onBlur: K,
      ...E,
      children: [
        s && /* @__PURE__ */ f.jsx(ge, {}),
        c && !s && /* @__PURE__ */ f.jsx("span", { className: "wc-btn__start-icon", children: c }),
        /* @__PURE__ */ f.jsx("span", { className: `wc-btn__content ${s ? "opacity-0" : ""}`, children: e }),
        d && !s && /* @__PURE__ */ f.jsx("span", { className: "wc-btn__end-icon", children: d })
      ]
    }
  );
};
Vs.displayName = "Button";
const Tf = {
  __name: "CardActions",
  props: {
    disableSpacing: {
      type: Boolean,
      default: !1
    },
    disablePadding: {
      type: Boolean,
      default: !1
    },
    justifyContent: {
      type: String,
      default: "flex-start",
      validator: (e) => ["flex-start", "center", "flex-end", "space-between", "space-around"].includes(e)
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      const r = ["wc-card-actions wc-flex wc-items-center"];
      t.disablePadding || r.push("wc-padding-2"), t.disableSpacing || r.push("wc-gap-2");
      const s = {
        "flex-start": "wc-justify-start",
        center: "wc-justify-center",
        "flex-end": "wc-justify-end",
        "space-between": "wc-justify-between",
        "space-around": "wc-justify-around"
      };
      return r.push(s[t.justifyContent]), r;
    });
    return (n, r) => (m(), y("div", {
      class: T(a.value)
    }, [
      M(n.$slots, "default")
    ], 2));
  }
}, Ef = {
  __name: "CardContent",
  props: {
    disablePadding: {
      type: Boolean,
      default: !1
    },
    padding: {
      type: String,
      default: "normal",
      validator: (e) => ["none", "dense", "normal", "comfortable"].includes(e)
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      const r = ["wc-card-content"];
      if (!t.disablePadding) {
        const s = {
          none: "",
          dense: "wc-padding-dense",
          normal: "wc-padding-normal",
          comfortable: "wc-padding-comfortable"
        };
        r.push(s[t.padding]);
      }
      return r;
    });
    return (n, r) => (m(), y("div", {
      class: T(a.value)
    }, [
      M(n.$slots, "default")
    ], 2));
  }
}, Ms = ["checked", "disabled"], Os = {
  key: 0,
  class: "checkmark-icon",
  viewBox: "0 0 24 24",
  fill: "none",
  stroke: "currentColor",
  "stroke-width": "3"
}, As = {
  key: 1,
  class: "indeterminate-icon"
}, Ls = {
  key: 0,
  class: "checkbox-label"
}, If = {
  __name: "Checkbox",
  props: {
    modelValue: {
      type: [Boolean, Array],
      default: !1
    },
    value: {
      type: [String, Number, Boolean],
      default: !0
    },
    label: {
      type: String,
      default: ""
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    indeterminate: {
      type: Boolean,
      default: !1
    },
    color: {
      type: String,
      default: "primary",
      validator: (e) => ["primary", "secondary", "success", "error", "warning", "info"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    }
  },
  emits: ["update:modelValue", "change"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(!1), s = C(() => Array.isArray(a.modelValue) ? a.modelValue.includes(a.value) : !!a.modelValue), l = C(() => {
      const p = ["wc-checkbox"];
      return p.push(`wc-checkbox--${a.size}`), a.disabled && p.push("wc-checkbox--disabled"), r.value && p.push("wc-checkbox--focused"), p;
    }), o = C(() => ["wc-checkbox__input"]), u = C(() => {
      const p = ["wc-checkbox__checkmark"];
      return p.push(`wc-checkbox__checkmark--${a.color}`), p.push(`wc-checkbox__checkmark--${a.size}`), (s.value || a.indeterminate) && p.push("wc-checkbox__checkmark--checked"), a.indeterminate && p.push("wc-checkbox__checkmark--indeterminate"), p;
    }), i = (p) => {
      if (a.disabled) return;
      const h = p.target.checked;
      if (Array.isArray(a.modelValue)) {
        const v = [...a.modelValue];
        if (h)
          v.includes(a.value) || v.push(a.value);
        else {
          const g = v.indexOf(a.value);
          g > -1 && v.splice(g, 1);
        }
        n("update:modelValue", v);
      } else
        n("update:modelValue", h);
      n("change", h);
    }, c = () => {
      r.value = !0;
    }, d = () => {
      r.value = !1;
    };
    return (p, h) => (m(), y("label", {
      class: T(l.value)
    }, [
      _("input", {
        type: "checkbox",
        checked: s.value,
        disabled: e.disabled,
        class: T(o.value),
        onChange: i,
        onFocus: c,
        onBlur: d
      }, null, 42, Ms),
      _("span", {
        class: T(u.value)
      }, [
        s.value && !e.indeterminate ? (m(), y("svg", Os, h[0] || (h[0] = [
          _("polyline", { points: "20,6 9,17 4,12" }, null, -1)
        ]))) : e.indeterminate ? (m(), y("div", As)) : j("", !0)
      ], 2),
      p.$slots.default || e.label ? (m(), y("span", Ls, [
        M(p.$slots, "default", {}, () => [
          he(I(e.label), 1)
        ])
      ])) : j("", !0)
    ], 2));
  }
}, zs = ["sm", "md", "lg"], Fs = ["filled", "outlined"], qs = ["default", "primary", "secondary", "success", "warning", "error"];
function Ws(e) {
  return zs.includes(e);
}
function Hs(e) {
  return Fs.includes(e);
}
function Us(e) {
  return qs.includes(e);
}
function nn(e) {
  const {
    size: t = "md",
    variant: a = "filled",
    color: n = "default",
    clickable: r = !1,
    disabled: s = !1,
    className: l = ""
  } = e, o = ["wc-chip"];
  return o.push(`wc-chip--${t}`), o.push(`wc-chip--${a}`), o.push(`wc-chip--${n}`), r && !s && o.push("wc-chip--clickable"), s && o.push("wc-chip--disabled"), l && o.push(l), o.filter(Boolean).join(" ");
}
function rn(e, t, a, n) {
  t && !a && n && n(e);
}
function sn(e, t, a) {
  e.stopPropagation(), !t && a && a(e);
}
function Ys() {
  return "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z";
}
function Gs() {
  return /* @__PURE__ */ f.jsx(
    "svg",
    {
      width: "16",
      height: "16",
      viewBox: "0 0 20 20",
      fill: "currentColor",
      className: "w-4 h-4",
      children: /* @__PURE__ */ f.jsx(
        "path",
        {
          fillRule: "evenodd",
          d: Ys(),
          clipRule: "evenodd"
        }
      )
    }
  );
}
const Ks = {
  key: 0,
  class: "wc-chip-avatar"
}, Js = ["src"], Xs = { class: "wc-chip-label" }, Qs = ["aria-label"], Bf = {
  __name: "Chip",
  props: {
    label: {
      type: String,
      default: ""
    },
    avatar: {
      type: String,
      default: ""
    },
    deletable: {
      type: Boolean,
      default: !1
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    clickable: {
      type: Boolean,
      default: !1
    },
    variant: {
      type: String,
      default: "filled",
      validator: Hs
    },
    size: {
      type: String,
      default: "md",
      validator: Ws
    },
    color: {
      type: String,
      default: "default",
      validator: Us
    },
    deleteIcon: {
      type: String,
      default: ""
    }
  },
  emits: ["click", "delete"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = C(
      () => nn(a)
    ), s = (o) => {
      rn(o, a.clickable, a.disabled, (u) => n("click", u));
    }, l = (o) => {
      sn(o, a.disabled, (u) => n("delete", u));
    };
    return (o, u) => (m(), y("div", {
      class: T(r.value),
      onClick: s
    }, [
      o.$slots.avatar || e.avatar ? (m(), y("div", Ks, [
        M(o.$slots, "avatar", {}, () => [
          e.avatar ? (m(), y("img", {
            key: 0,
            src: e.avatar,
            alt: "",
            class: "w-full h-full object-cover rounded-full"
          }, null, 8, Js)) : j("", !0)
        ])
      ])) : j("", !0),
      _("span", Xs, [
        M(o.$slots, "default", {}, () => [
          he(I(e.label), 1)
        ])
      ]),
      e.deletable ? (m(), y("button", {
        key: 1,
        type: "button",
        class: "wc-chip-delete",
        "aria-label": e.deleteIcon || "删除",
        onClick: Ae(l, ["stop"])
      }, [
        M(o.$slots, "deleteIcon", {}, () => [
          u[0] || (u[0] = _("svg", {
            class: "w-4 h-4",
            fill: "currentColor",
            viewBox: "0 0 20 20"
          }, [
            _("path", {
              "fill-rule": "evenodd",
              d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
              "clip-rule": "evenodd"
            })
          ], -1))
        ])
      ], 8, Qs)) : j("", !0)
    ], 2));
  }
};
function Rf({
  label: e = "",
  avatar: t = "",
  deletable: a = !1,
  disabled: n = !1,
  clickable: r = !1,
  variant: s = "filled",
  size: l = "md",
  color: o = "default",
  deleteIcon: u = null,
  onClick: i,
  onDelete: c,
  children: d
}) {
  const p = nn({
    size: l,
    variant: s,
    color: o,
    clickable: r,
    disabled: n
  }), h = (g) => {
    rn(g, r, n, i);
  }, v = (g) => {
    sn(g, n, c);
  };
  return /* @__PURE__ */ f.jsxs(
    "div",
    {
      className: p,
      onClick: h,
      children: [
        d && d.avatar || t ? /* @__PURE__ */ f.jsx("div", { className: "wc-chip-avatar", children: d && d.avatar ? d.avatar : /* @__PURE__ */ f.jsx("img", { src: t, alt: "", className: "w-full h-full object-cover rounded-full" }) }) : null,
        /* @__PURE__ */ f.jsx("span", { className: "wc-chip-label", children: (d == null ? void 0 : d.label) || e }),
        a && /* @__PURE__ */ f.jsx(
          "button",
          {
            type: "button",
            onClick: v,
            className: "wc-chip-delete",
            "aria-label": "删除",
            children: u || Gs()
          }
        )
      ]
    }
  );
}
const Zs = ["aria-valuenow"], el = ["width", "height", "viewBox"], tl = ["cx", "cy", "r", "stroke-width"], al = ["cx", "cy", "r", "stroke-width", "stroke-dasharray", "stroke-dashoffset"], nl = {
  key: 0,
  class: "wc-circular-progress-value"
}, Pf = {
  __name: "CircularProgress",
  props: {
    value: {
      type: Number,
      default: 0,
      validator: (e) => e >= 0 && e <= 100
    },
    size: {
      type: [Number, String],
      default: 40
    },
    thickness: {
      type: Number,
      default: 3.6
    },
    variant: {
      type: String,
      default: "indeterminate",
      validator: (e) => ["determinate", "indeterminate"].includes(e)
    },
    color: {
      type: String,
      default: "primary",
      validator: (e) => ["primary", "secondary", "success", "warning", "error", "inherit"].includes(e)
    },
    showValue: {
      type: Boolean,
      default: !1
    }
  },
  setup(e) {
    const t = e, a = C(() => typeof t.size == "string" ? parseInt(t.size) : t.size), n = C(() => a.value / 2), r = C(() => (a.value - t.thickness) / 2), s = C(() => 2 * Math.PI * r.value), l = C(() => `0 0 ${a.value} ${a.value}`), o = C(() => t.variant === "determinate" ? s.value - t.value / 100 * s.value : 0), u = C(() => {
      const p = ["wc-circular-progress inline-flex relative items-center justify-center"];
      return p.push(`wc-circular-progress--${t.color}`), t.variant === "indeterminate" && p.push("wc-circular-progress--indeterminate"), p;
    }), i = C(() => t.variant === "indeterminate" ? ["wc-circular-progress-circle--indeterminate"] : []), c = C(() => t.variant === "determinate" ? t.value : void 0);
    return (d, p) => (m(), y("div", {
      class: T(u.value),
      role: "progressbar",
      "aria-valuenow": c.value,
      "aria-valuemin": 0,
      "aria-valuemax": 100
    }, [
      (m(), y("svg", {
        width: e.size,
        height: e.size,
        viewBox: l.value,
        class: "wc-circular-progress-svg"
      }, [
        _("circle", {
          cx: n.value,
          cy: n.value,
          r: r.value,
          "stroke-width": e.thickness,
          stroke: "currentColor",
          fill: "none",
          class: "wc-circular-progress-bg"
        }, null, 8, tl),
        _("circle", {
          cx: n.value,
          cy: n.value,
          r: r.value,
          "stroke-width": e.thickness,
          stroke: "currentColor",
          fill: "none",
          "stroke-dasharray": s.value,
          "stroke-dashoffset": o.value,
          class: T([i.value, "wc-circular-progress-circle"])
        }, null, 10, al)
      ], 8, el)),
      e.showValue ? (m(), y("div", nl, I(Math.round(e.value)) + "% ", 1)) : j("", !0)
    ], 10, Zs));
  }
};
function rl(e, t) {
  const a = typeof e == "string" ? parseInt(e, 10) : e, n = a / 2, r = (a - t) / 2, s = 2 * Math.PI * r;
  return {
    sizeNumber: a,
    center: n,
    radius: r,
    circumference: s
  };
}
function sl(e, t, a) {
  return e === "determinate" ? a - t / 100 * a : 0;
}
function ll(e) {
  const {
    color: t = "primary",
    variant: a = "indeterminate",
    className: n = ""
  } = e, r = [
    "wc-circular-progress",
    "inline-flex",
    "relative",
    "items-center",
    "justify-center"
  ];
  return r.push(`wc-circular-progress--${t}`), a === "indeterminate" && r.push("wc-circular-progress--indeterminate"), n && r.push(n), r.filter(Boolean);
}
function ol(e) {
  const t = ["wc-circular-progress-circle"];
  return e === "indeterminate" && t.push("wc-circular-progress-circle--indeterminate"), t.filter(Boolean);
}
function il(e) {
  return Math.round(e);
}
function cl(e) {
  const { value: t = 0, variant: a } = e, n = {
    role: "progressbar",
    "aria-valuemin": 0,
    "aria-valuemax": 100
  };
  return a === "determinate" && (n["aria-valuenow"] = t), n;
}
function Df({
  value: e = 0,
  size: t = 40,
  thickness: a = 3.6,
  variant: n = "indeterminate",
  // 'determinate' | 'indeterminate'
  color: r = "primary",
  showValue: s = !1,
  className: l = "",
  ...o
}) {
  const { sizeNumber: u, center: i, radius: c, circumference: d } = rl(t, a), p = sl(n, e, d), h = ll({
    color: r,
    variant: n,
    className: l
  }).join(" "), v = ol(n).join(" "), g = cl({ value: e, variant: n });
  return /* @__PURE__ */ f.jsxs(
    "div",
    {
      className: h,
      ...g,
      ...o,
      children: [
        /* @__PURE__ */ f.jsxs(
          "svg",
          {
            width: u,
            height: u,
            viewBox: `0 0 ${u} ${u}`,
            className: "wc-circular-progress-svg",
            children: [
              /* @__PURE__ */ f.jsx(
                "circle",
                {
                  cx: i,
                  cy: i,
                  r: c,
                  strokeWidth: a,
                  stroke: "currentColor",
                  fill: "none",
                  className: "wc-circular-progress-bg"
                }
              ),
              /* @__PURE__ */ f.jsx(
                "circle",
                {
                  cx: i,
                  cy: i,
                  r: c,
                  strokeWidth: a,
                  stroke: "currentColor",
                  fill: "none",
                  strokeDasharray: d,
                  strokeDashoffset: p,
                  className: v
                }
              )
            ]
          }
        ),
        s && /* @__PURE__ */ f.jsxs("div", { className: "wc-circular-progress-value", children: [
          il(e),
          "%"
        ] })
      ]
    }
  );
}
function ln(e) {
  const {
    size: t = "md",
    shape: a = "circle",
    disabled: n = !1,
    className: r = ""
  } = e, s = ["wc-color-picker"];
  return s.push(`wc-color-picker--${t}`), s.push(`wc-color-picker--${a}`), n && s.push("wc-color-picker--disabled"), r && s.push(r), s.filter(Boolean);
}
function ul(e, t, a) {
  !t && a && a(e.target.value);
}
function on(e) {
  return {
    backgroundColor: e
  };
}
const dl = ["value", "disabled"], Vf = /* @__PURE__ */ Fe({
  __name: "ColorPicker",
  props: {
    modelValue: { default: "#ffffff" },
    size: { default: "md" },
    shape: { default: "circle" },
    disabled: { type: Boolean, default: !1 },
    className: { default: "" }
  },
  emits: ["update:modelValue"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = C(() => ln({
      size: a.size,
      shape: a.shape,
      disabled: a.disabled,
      className: a.className
    }).join(" ")), s = C(() => on(a.modelValue));
    function l(o) {
      const u = o.target;
      a.disabled || n("update:modelValue", u.value);
    }
    return (o, u) => (m(), y("label", {
      class: T(r.value)
    }, [
      _("input", {
        class: "wc-color-picker__input",
        type: "color",
        value: o.modelValue,
        disabled: o.disabled,
        onInput: l
      }, null, 40, dl),
      _("span", {
        class: "wc-color-picker__preview",
        style: ce(s.value)
      }, null, 4)
    ], 2));
  }
});
function Mf({
  value: e = "#ffffff",
  onChange: t,
  size: a = "md",
  shape: n = "circle",
  disabled: r = !1,
  className: s = ""
}) {
  const l = ln({
    size: a,
    shape: n,
    disabled: r,
    className: s
  }).join(" "), o = on(e), u = (i) => {
    ul(i, r, t);
  };
  return /* @__PURE__ */ f.jsxs("label", { className: l, children: [
    /* @__PURE__ */ f.jsx(
      "input",
      {
        type: "color",
        value: e,
        onChange: u,
        disabled: r,
        className: "wc-color-picker__input"
      }
    ),
    /* @__PURE__ */ f.jsx(
      "span",
      {
        className: "wc-color-picker__preview",
        style: o
      }
    )
  ] });
}
const fl = ["xs", "sm", "md", "lg", "xl", "2xl"];
function cn(e) {
  return fl.includes(e);
}
const pa = {
  xs: "max-w-xs",
  sm: "max-w-sm",
  md: "max-w-md",
  lg: "max-w-4xl",
  xl: "max-w-6xl",
  "2xl": "max-w-7xl"
};
function pl(e) {
  const {
    maxWidth: t = "lg",
    fluid: a = !1,
    fixed: n = !1,
    className: r = ""
  } = e, s = ["wc-container"];
  return a ? s.push("wc-container--fluid") : n ? s.push("wc-container--fixed") : t && cn(t) && s.push(`wc-container--${t}`), r && s.push(r), s.filter(Boolean);
}
function ml(e) {
  const {
    maxWidth: t = "lg",
    fluid: a = !1,
    fixed: n = !1,
    className: r = ""
  } = e, l = ["mx-auto px-4 sm:px-6 lg:px-8"];
  return a || n ? l.push("w-full") : t && pa[t] && l.push(pa[t]), r && l.push(r), l.filter(Boolean);
}
const Of = {
  __name: "Container",
  props: {
    maxWidth: {
      type: String,
      default: "lg",
      validator: cn
    },
    fluid: {
      type: Boolean,
      default: !1
    },
    fixed: {
      type: Boolean,
      default: !1
    }
  },
  setup(e) {
    const t = e, a = C(
      () => pl(t).join(" ")
    );
    return (n, r) => (m(), y("div", {
      class: T(a.value)
    }, [
      M(n.$slots, "default")
    ], 2));
  }
};
function Af({
  maxWidth: e = "lg",
  fluid: t = !1,
  fixed: a = !1,
  className: n = "",
  children: r
}) {
  const s = ml({
    maxWidth: e,
    fluid: t,
    fixed: a,
    className: n
  }).join(" ");
  return /* @__PURE__ */ f.jsx("div", { className: s, children: r });
}
const hl = { class: "wc-copy-text" }, vl = { class: "wc-copy-action" }, yl = ["innerHTML"], gl = {
  key: 0,
  class: "wc-copy-label"
}, Lf = {
  __name: "Copy",
  props: {
    text: {
      type: String,
      required: !0
    },
    variant: {
      type: String,
      default: "default",
      validator: (e) => ["default", "outlined", "filled", "minimal"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    showLabel: {
      type: Boolean,
      default: !0
    },
    showTooltip: {
      type: Boolean,
      default: !0
    },
    copyLabel: {
      type: String,
      default: "复制"
    },
    copiedLabel: {
      type: String,
      default: "已复制"
    },
    tooltipSuccess: {
      type: String,
      default: "复制成功!"
    },
    tooltipError: {
      type: String,
      default: "复制失败"
    },
    resetDelay: {
      type: Number,
      default: 2e3
    }
  },
  emits: ["copy", "error"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(!1), s = A(!1), l = A(!1), o = C(() => [
      "wc-copy",
      `wc-copy--${a.variant}`,
      `wc-copy--${a.size}`,
      {
        "wc-copy--copied": r.value,
        "wc-copy--error": l.value
      }
    ]), u = C(() => l.value ? "❌" : r.value ? "✓" : "📋"), i = C(() => l.value ? "错误" : r.value ? a.copiedLabel : a.copyLabel), c = C(() => l.value ? a.tooltipError : r.value ? a.tooltipSuccess : ""), d = async () => {
      try {
        if (navigator.clipboard && navigator.clipboard.writeText)
          await navigator.clipboard.writeText(a.text);
        else {
          const p = document.createElement("textarea");
          p.value = a.text, p.style.position = "fixed", p.style.left = "-999999px", p.style.top = "-999999px", document.body.appendChild(p), p.focus(), p.select(), document.execCommand("copy"), document.body.removeChild(p);
        }
        r.value = !0, l.value = !1, n("copy", a.text), a.showTooltip && (s.value = !0, setTimeout(() => {
          s.value = !1;
        }, 1500)), setTimeout(() => {
          r.value = !1;
        }, a.resetDelay);
      } catch (p) {
        l.value = !0, r.value = !1, n("error", p), a.showTooltip && (s.value = !0, setTimeout(() => {
          s.value = !1;
        }, 1500)), setTimeout(() => {
          l.value = !1;
        }, a.resetDelay);
      }
    };
    return (p, h) => (m(), y("div", {
      class: T(o.value),
      onClick: d
    }, [
      M(p.$slots, "content", {}, () => [
        _("span", hl, I(e.text), 1)
      ]),
      _("div", vl, [
        M(p.$slots, "icon", {}, () => [
          _("span", {
            class: "wc-copy-icon",
            innerHTML: u.value
          }, null, 8, yl)
        ]),
        e.showLabel ? (m(), y("span", gl, I(i.value), 1)) : j("", !0)
      ]),
      e.showTooltip && s.value ? (m(), y("div", {
        key: 0,
        class: T(["wc-copy-tooltip", { "wc-copy-tooltip--success": r.value }])
      }, I(c.value), 3)) : j("", !0)
    ], 2));
  }
};
function bl(e) {
  const {
    variant: t = "default",
    size: a = "md",
    copied: n = !1,
    copyError: r = !1,
    className: s = ""
  } = e, l = ["wc-copy"];
  return l.push(`wc-copy--${t}`), l.push(`wc-copy--${a}`), n && l.push("wc-copy--copied"), r && l.push("wc-copy--error"), s && l.push(s), l.filter(Boolean);
}
function wl(e, t) {
  return t ? "❌" : e ? "✓" : "📋";
}
function xl(e, t, a, n) {
  return t ? "错误" : e ? n : a;
}
function kl(e, t, a, n) {
  return t ? n : e ? a : "";
}
async function _l(e) {
  var t;
  try {
    if ((t = navigator.clipboard) != null && t.writeText)
      return await navigator.clipboard.writeText(e), !0;
    {
      const a = document.createElement("textarea");
      a.value = e, a.style.position = "fixed", a.style.left = "-999999px", a.style.top = "-999999px", document.body.appendChild(a), a.focus(), a.select();
      const n = document.execCommand("copy");
      return document.body.removeChild(a), n;
    }
  } catch (a) {
    return console.warn("复制失败:", a), !1;
  }
}
async function Cl(e, t, a, n, r, s, l, o) {
  await _l(e) ? (n(!0), r(!1), t(e)) : (n(!1), r(!0), a(new Error("复制失败"))), l && s && (s(!0), setTimeout(() => s(!1), 1500)), setTimeout(() => {
    n(!1), r(!1);
  }, o);
}
function Sl(e, t) {
  let a = "wc-copy-tooltip";
  return e && (a += " wc-copy-tooltip--success"), t && (a += " wc-copy-tooltip--error"), a;
}
function zf({
  text: e,
  variant: t = "default",
  size: a = "md",
  showLabel: n = !0,
  showTooltip: r = !0,
  copyLabel: s = "复制",
  copiedLabel: l = "已复制",
  tooltipSuccess: o = "复制成功!",
  tooltipError: u = "复制失败",
  resetDelay: i = 2e3,
  onCopy: c = () => {
  },
  onError: d = () => {
  },
  className: p = "",
  children: h,
  icon: v
}) {
  const [g, x] = te(!1), [$, B] = te(!1), [S, k] = te(!1), w = bl({
    variant: t,
    size: a,
    copied: g,
    copyError: $,
    className: p
  }).join(" "), E = wl(g, $), W = xl(g, $, s, l), R = kl(g, $, o, u), Y = Sl(g, $), N = async () => {
    await Cl(
      e,
      c,
      d,
      x,
      B,
      k,
      r,
      i
    );
  };
  return /* @__PURE__ */ f.jsxs("div", { className: w, onClick: N, children: [
    h ?? /* @__PURE__ */ f.jsx("span", { className: "wc-copy-text", children: e }),
    /* @__PURE__ */ f.jsxs("div", { className: "wc-copy-action", children: [
      v ? /* @__PURE__ */ f.jsx(v, { className: "wc-copy-icon" }) : /* @__PURE__ */ f.jsx("span", { className: "wc-copy-icon", dangerouslySetInnerHTML: { __html: E } }),
      n && /* @__PURE__ */ f.jsx("span", { className: "wc-copy-label", children: W })
    ] }),
    r && S && /* @__PURE__ */ f.jsx("div", { className: Y, children: R })
  ] });
}
function nt(e) {
  return String(e).padStart(2, "0");
}
function un(e, t = !0) {
  const a = Math.floor(e / 3600), n = Math.floor(e % 3600 / 60), r = e % 60;
  return t && a > 0 ? `${nt(a)}:${nt(n)}:${nt(r)}` : `${nt(n)}:${nt(r)}`;
}
function dn(e) {
  const {
    size: t = "md",
    color: a = "default",
    format: n = "simple",
    finished: r = !1,
    warningTime: s = null,
    remaining: l = 0,
    className: o = ""
  } = e, u = ["wc-countdown"];
  return u.push(`wc-countdown--${t}`), a !== "default" && u.push(`wc-countdown--${a}`), n === "detailed" && u.push("wc-countdown--with-labels"), n === "card" && (u.push("wc-countdown--card"), n === "card" && u.push("wc-countdown--with-labels")), r || l === 0 ? u.push("wc-countdown--finished") : s && l <= s && u.push("wc-countdown--warning-time"), o && u.push(o), u.filter(Boolean);
}
function fn() {
  return document.documentElement.classList.contains("dark") || window.matchMedia("(prefers-color-scheme: dark)").matches ? "var(--wc-neutral-100)" : "var(--wc-neutral-900)";
}
function $l(e) {
  let t = null;
  return { start: () => {
    t || (t = setInterval(e, 1e3));
  }, stop: () => {
    t && (clearInterval(t), t = null);
  }, isRunning: () => !!t };
}
const Ff = /* @__PURE__ */ Fe({
  __name: "Countdown",
  props: {
    seconds: {},
    autoStart: { type: Boolean, default: !0 },
    size: { default: "md" },
    color: { default: "default" },
    customColor: { default: "" },
    fontSize: { default: "" },
    format: { default: "simple" },
    warningTime: { default: null },
    className: { default: "" }
  },
  emits: ["finish"],
  setup(e, { expose: t, emit: a }) {
    const n = e, r = a, s = A(n.seconds);
    let l = null;
    const o = () => {
      l || (l = window.setInterval(() => {
        s.value > 0 ? s.value -= 1 : (u(), r("finish"));
      }, 1e3));
    }, u = () => {
      l && (clearInterval(l), l = null);
    };
    Pe(() => {
      n.autoStart && o();
    }), Ze(() => {
      u();
    }), Re(() => n.seconds, (h) => {
      s.value = h, u(), n.autoStart && o();
    });
    const i = C(() => un(s.value)), c = C(() => n.customColor || (n.fontSize ? fn() : void 0)), d = C(() => {
      const h = {};
      return n.fontSize && (h.fontSize = n.fontSize), c.value && (h.color = c.value), h;
    }), p = C(
      () => dn({
        size: n.size,
        color: n.color,
        format: n.format,
        finished: s.value === 0,
        warningTime: n.warningTime,
        remaining: s.value,
        className: n.className
      }).join(" ")
    );
    return t({ start: o, clear: u }), (h, v) => (m(), y("span", {
      class: T(p.value),
      style: ce(d.value)
    }, I(i.value), 7));
  }
}), qf = cr(function({
  seconds: t,
  autoStart: a = !0,
  size: n = "md",
  color: r = "default",
  format: s = "simple",
  fontSize: l = "",
  customColor: o = "",
  warningTime: u = null,
  onFinish: i = () => {
  },
  className: c = ""
}, d) {
  const [p, h] = te(t);
  Te(null);
  const v = $l(() => {
    h((w) => w > 0 ? w - 1 : (v.stop(), i(), 0));
  }), g = () => {
    v.stop();
  }, x = () => {
    v.start();
  };
  ve(() => (h(t), g(), a && x(), () => g()), [t]), ve(() => {
    a && x();
  }, []), ur(d, () => ({ start: x, clear: g }));
  const $ = dn({
    size: n,
    color: r,
    format: s,
    finished: p === 0,
    warningTime: u,
    remaining: p,
    className: c
  }).join(" "), B = un(p), S = o || (l ? fn() : void 0), k = {};
  return l && (k.fontSize = l), S && (k.color = S), /* @__PURE__ */ f.jsx(
    "span",
    {
      className: $,
      style: k,
      children: B
    }
  );
}), jl = ["value", "placeholder", "disabled"], Nl = { class: "wc-datepicker-header" }, Tl = { class: "wc-datepicker-title" }, El = { class: "wc-datepicker-weekdays" }, Il = { class: "wc-datepicker-days" }, Bl = ["disabled", "onClick"], Rl = {
  key: 0,
  class: "wc-datepicker-footer"
}, Wf = {
  __name: "DatePicker",
  props: {
    modelValue: {
      type: [Date, String],
      default: null
    },
    placeholder: {
      type: String,
      default: "请选择日期"
    },
    format: {
      type: String,
      default: "YYYY-MM-DD"
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    showToday: {
      type: Boolean,
      default: !0
    },
    minDate: {
      type: [Date, String],
      default: null
    },
    maxDate: {
      type: [Date, String],
      default: null
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    variant: {
      type: String,
      default: "default",
      validator: (e) => ["default", "outlined", "filled"].includes(e)
    }
  },
  emits: ["update:modelValue", "change"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(null), s = A(null), l = A(!1), o = A(/* @__PURE__ */ new Date()), u = ["日", "一", "二", "三", "四", "五", "六"], i = C(() => [
      "wc-datepicker-wrapper",
      `wc-datepicker-wrapper--${a.variant}`,
      `wc-datepicker-wrapper--${a.size}`,
      {
        "wc-datepicker-wrapper--disabled": a.disabled,
        "wc-datepicker-wrapper--open": l.value
      }
    ]), c = C(() => ({
      zIndex: 1e3
    })), d = C(() => a.modelValue ? a.modelValue instanceof Date ? a.modelValue : new Date(a.modelValue) : null), p = C(() => d.value ? S(d.value, a.format) : ""), h = C(() => {
      const N = o.value.getFullYear(), O = o.value.getMonth() + 1;
      return `${N}年${O}月`;
    }), v = C(() => {
      const N = o.value.getFullYear(), O = o.value.getMonth(), H = new Date(N, O, 1), Q = new Date(N, O + 1, 0), q = H.getDay(), ne = Q.getDate(), V = [], K = new Date(N, O - 1, 0);
      for (let oe = q - 1; oe >= 0; oe--)
        V.push({
          day: K.getDate() - oe,
          month: "prev",
          date: new Date(N, O - 1, K.getDate() - oe)
        });
      for (let oe = 1; oe <= ne; oe++)
        V.push({
          day: oe,
          month: "current",
          date: new Date(N, O, oe)
        });
      const ge = 42 - V.length;
      for (let oe = 1; oe <= ge; oe++)
        V.push({
          day: oe,
          month: "next",
          date: new Date(N, O + 1, oe)
        });
      return V;
    }), g = (N) => [
      "wc-datepicker-day",
      {
        "wc-datepicker-day--prev": N.month === "prev",
        "wc-datepicker-day--next": N.month === "next",
        "wc-datepicker-day--current": N.month === "current",
        "wc-datepicker-day--selected": x(N.date),
        "wc-datepicker-day--today": $(N.date),
        "wc-datepicker-day--disabled": B(N)
      }
    ], x = (N) => d.value ? N.toDateString() === d.value.toDateString() : !1, $ = (N) => {
      const O = /* @__PURE__ */ new Date();
      return N.toDateString() === O.toDateString();
    }, B = (N) => {
      const { date: O } = N;
      if (a.minDate) {
        const H = a.minDate instanceof Date ? a.minDate : new Date(a.minDate);
        if (O < H) return !0;
      }
      if (a.maxDate) {
        const H = a.maxDate instanceof Date ? a.maxDate : new Date(a.maxDate);
        if (O > H) return !0;
      }
      return !1;
    }, S = (N, O) => {
      const H = N.getFullYear(), Q = String(N.getMonth() + 1).padStart(2, "0"), q = String(N.getDate()).padStart(2, "0");
      return O.replace("YYYY", H).replace("MM", Q).replace("DD", q);
    }, k = () => {
      a.disabled || (l.value = !l.value);
    }, w = (N) => {
      const O = new Date(o.value);
      O.setMonth(O.getMonth() + N), o.value = O;
    }, E = (N) => {
      if (B(N)) return;
      const O = new Date(N.date);
      n("update:modelValue", O), n("change", O), l.value = !1;
    }, W = () => {
      const N = /* @__PURE__ */ new Date();
      n("update:modelValue", N), n("change", N), l.value = !1;
    }, R = () => {
      n("update:modelValue", null), n("change", null), l.value = !1;
    }, Y = (N) => {
      r.value && !r.value.contains(N.target) && (l.value = !1);
    };
    return Re(() => a.modelValue, (N) => {
      if (N) {
        const O = N instanceof Date ? N : new Date(N);
        o.value = new Date(O.getFullYear(), O.getMonth(), 1);
      }
    }), Pe(() => {
      document.addEventListener("click", Y);
    }), He(() => {
      document.removeEventListener("click", Y);
    }), (N, O) => (m(), y("div", {
      ref_key: "datePickerRef",
      ref: r,
      class: "wc-datepicker"
    }, [
      _("div", {
        class: T(i.value),
        onClick: k
      }, [
        _("input", {
          ref_key: "inputRef",
          ref: s,
          type: "text",
          value: p.value,
          placeholder: e.placeholder,
          disabled: e.disabled,
          readonly: "",
          class: "wc-datepicker-input"
        }, null, 8, jl),
        O[2] || (O[2] = _("span", { class: "wc-datepicker-icon" }, "📅", -1))
      ], 2),
      l.value ? (m(), y("div", {
        key: 0,
        class: "wc-datepicker-dropdown",
        style: ce(c.value)
      }, [
        _("div", Nl, [
          _("button", {
            type: "button",
            class: "wc-datepicker-nav",
            onClick: O[0] || (O[0] = (H) => w(-1))
          }, " ‹ "),
          _("span", Tl, I(h.value), 1),
          _("button", {
            type: "button",
            class: "wc-datepicker-nav",
            onClick: O[1] || (O[1] = (H) => w(1))
          }, " › ")
        ]),
        _("div", El, [
          (m(), y(ke, null, Ce(u, (H) => _("div", {
            key: H,
            class: "wc-datepicker-weekday"
          }, I(H), 1)), 64))
        ]),
        _("div", Il, [
          (m(!0), y(ke, null, Ce(v.value, (H) => (m(), y("button", {
            key: `${H.month}-${H.day}`,
            type: "button",
            class: T(g(H)),
            disabled: B(H),
            onClick: (Q) => E(H)
          }, I(H.day), 11, Bl))), 128))
        ]),
        e.showToday ? (m(), y("div", Rl, [
          _("button", {
            type: "button",
            class: "wc-datepicker-today",
            onClick: W
          }, " 今天 "),
          _("button", {
            type: "button",
            class: "wc-datepicker-clear",
            onClick: R
          }, " 清除 ")
        ])) : j("", !0)
      ], 4)) : j("", !0)
    ], 512));
  }
};
function Pl(e, t = "YYYY-MM-DD") {
  if (!e || !(e instanceof Date)) return "";
  const a = e.getFullYear(), n = String(e.getMonth() + 1).padStart(2, "0"), r = String(e.getDate()).padStart(2, "0");
  return t.replace("YYYY", a).replace("MM", n).replace("DD", r);
}
function Dl(e) {
  if (!e) return !1;
  const t = /* @__PURE__ */ new Date();
  return e.toDateString() === t.toDateString();
}
function Vl(e, t) {
  return !e || !t ? !1 : e.toDateString() === t.toDateString();
}
function Ml(e) {
  const t = e.getFullYear(), a = e.getMonth(), n = new Date(t, a, 1), r = new Date(t, a + 1, 0), s = n.getDay(), l = r.getDate(), o = [], u = new Date(t, a - 1, 0);
  for (let c = s - 1; c >= 0; c--)
    o.push({
      day: u.getDate() - c,
      month: "prev",
      date: new Date(t, a - 1, u.getDate() - c)
    });
  for (let c = 1; c <= l; c++)
    o.push({
      day: c,
      month: "current",
      date: new Date(t, a, c)
    });
  const i = 42 - o.length;
  for (let c = 1; c <= i; c++)
    o.push({
      day: c,
      month: "next",
      date: new Date(t, a + 1, c)
    });
  return o;
}
function Ol(e = "md", t = "default", a = !1, n = !1, r = !1) {
  const s = [
    "wc-datepicker-wrapper",
    `wc-datepicker-wrapper--${e}`,
    `wc-datepicker-wrapper--${t}`
  ];
  return a && s.push("wc-datepicker-wrapper--disabled"), n && s.push("wc-datepicker-wrapper--focused"), r && s.push("wc-datepicker-wrapper--open"), s.join(" ");
}
function Al(e, t) {
  const a = ["wc-datepicker-day"];
  return e.month === "prev" && a.push("wc-datepicker-day--prev"), e.month === "next" && a.push("wc-datepicker-day--next"), e.month === "current" && a.push("wc-datepicker-day--current"), t && Vl(e.date, t) && a.push("wc-datepicker-day--selected"), Dl(e.date) && a.push("wc-datepicker-day--today"), a.join(" ");
}
function Hf({
  value: e = null,
  onChange: t = () => {
  },
  placeholder: a = "请选择日期",
  disabled: n = !1,
  size: r = "md",
  variant: s = "default",
  format: l = "YYYY-MM-DD",
  showToday: o = !0,
  minDate: u = null,
  maxDate: i = null,
  className: c = "",
  ...d
}) {
  const p = Te(null), [h, v] = te(!1), [g, x] = te(
    () => e ? new Date(e) : /* @__PURE__ */ new Date()
  ), [$, B] = te(e ? new Date(e) : null);
  ve(() => {
    B(e ? new Date(e) : null);
  }, [e]), ve(() => {
    const q = (ne) => {
      p.current && !p.current.contains(ne.target) && v(!1);
    };
    return document.addEventListener("click", q), () => document.removeEventListener("click", q);
  }, []);
  const S = $ ? Pl($, l) : "", k = () => {
    n || v((q) => !q);
  }, w = (q) => {
    x((ne) => {
      const V = new Date(ne);
      return V.setMonth(V.getMonth() + q), V;
    });
  }, E = (q) => {
    if (Y(q)) return;
    const ne = new Date(q.date);
    B(ne), t(ne), v(!1);
  }, W = () => {
    const q = /* @__PURE__ */ new Date();
    B(q), t(q), v(!1);
  }, R = () => {
    B(null), t(null), v(!1);
  }, Y = (q) => {
    const { date: ne } = q;
    if (u) {
      const V = u instanceof Date ? u : new Date(u);
      if (ne < V) return !0;
    }
    if (i) {
      const V = i instanceof Date ? i : new Date(i);
      if (ne > V) return !0;
    }
    return !1;
  }, N = Ml(g), O = ["日", "一", "二", "三", "四", "五", "六"], H = `${g.getFullYear()}年${g.getMonth() + 1}月`, Q = [
    Ol(r, s, n, !1, h),
    c
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsxs("div", { className: "wc-datepicker", ref: p, ...d, children: [
    /* @__PURE__ */ f.jsxs("div", { className: Q, onClick: k, children: [
      /* @__PURE__ */ f.jsx(
        "input",
        {
          type: "text",
          className: "wc-datepicker-input",
          value: S,
          placeholder: a,
          disabled: n,
          readOnly: !0
        }
      ),
      /* @__PURE__ */ f.jsx("span", { className: "wc-datepicker-icon", children: "📅" })
    ] }),
    h && /* @__PURE__ */ f.jsxs("div", { className: "wc-datepicker-dropdown", style: { zIndex: 1e3 }, children: [
      /* @__PURE__ */ f.jsxs("div", { className: "wc-datepicker-header", children: [
        /* @__PURE__ */ f.jsx(
          "button",
          {
            type: "button",
            className: "wc-datepicker-nav",
            onClick: () => w(-1),
            children: "‹"
          }
        ),
        /* @__PURE__ */ f.jsx("span", { className: "wc-datepicker-title", children: H }),
        /* @__PURE__ */ f.jsx(
          "button",
          {
            type: "button",
            className: "wc-datepicker-nav",
            onClick: () => w(1),
            children: "›"
          }
        )
      ] }),
      /* @__PURE__ */ f.jsx("div", { className: "wc-datepicker-weekdays", children: O.map((q) => /* @__PURE__ */ f.jsx("div", { className: "wc-datepicker-weekday", children: q }, q)) }),
      /* @__PURE__ */ f.jsx("div", { className: "wc-datepicker-days", children: N.map((q) => {
        const ne = Al(q, $), V = Y(q);
        return /* @__PURE__ */ f.jsx(
          "button",
          {
            type: "button",
            className: ne,
            disabled: V,
            onClick: () => E(q),
            children: q.day
          },
          `${q.month}-${q.day}`
        );
      }) }),
      o && /* @__PURE__ */ f.jsxs("div", { className: "wc-datepicker-footer", children: [
        /* @__PURE__ */ f.jsx(
          "button",
          {
            type: "button",
            className: "wc-datepicker-today",
            onClick: W,
            children: "今天"
          }
        ),
        /* @__PURE__ */ f.jsx(
          "button",
          {
            type: "button",
            className: "wc-datepicker-clear",
            onClick: R,
            children: "清除"
          }
        )
      ] })
    ] })
  ] });
}
const Ll = { class: "wc-dropdown__button" }, zl = {
  key: 0,
  class: "wc-dropdown__card"
}, Fl = { class: "wc-dropdown__card-illustration" }, ql = ["src", "alt"], Wl = {
  key: 1,
  class: "wc-dropdown__illustration-placeholder"
}, Hl = {
  key: 0,
  class: "wc-dropdown__card-info"
}, Ul = {
  key: 0,
  class: "wc-dropdown__card-title"
}, Yl = {
  key: 1,
  class: "wc-dropdown__card-description"
}, Gl = { class: "wc-dropdown__card-list" }, Kl = ["onClick"], Jl = {
  key: 0,
  class: "wc-dropdown__icon"
}, Xl = { class: "wc-dropdown__label" }, Ql = { key: 1 }, Zl = ["onClick"], eo = {
  key: 0,
  class: "wc-dropdown__icon"
}, to = { class: "wc-dropdown__label" }, Uf = {
  __name: "Dropdown",
  props: {
    items: {
      type: Array,
      default: () => []
    },
    triggerText: {
      type: String,
      default: "选择选项"
    },
    placement: {
      type: String,
      default: "bottom-start",
      validator: (e) => ["bottom-start", "bottom-end", "top-start", "top-end"].includes(e)
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    trigger: {
      type: String,
      default: "click",
      validator: (e) => ["click", "hover"].includes(e)
    },
    variant: {
      type: String,
      default: "default",
      validator: (e) => ["default", "card"].includes(e)
    },
    illustration: {
      type: String,
      default: ""
    },
    illustrationAlt: {
      type: String,
      default: "示意图"
    },
    cardTitle: {
      type: String,
      default: ""
    },
    cardDescription: {
      type: String,
      default: ""
    },
    isDarkMode: {
      type: Boolean,
      default: !1
    }
  },
  emits: ["select", "open", "close"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(!1), s = A(null), l = A(null), o = A(null), u = C(() => {
      const h = ["wc-dropdown__menu", `wc-dropdown__menu--${a.placement}`];
      return a.variant === "card" && h.push("wc-dropdown__menu--card"), h;
    }), i = C(() => a.variant === "card" ? {
      minWidth: "320px",
      maxWidth: "450px"
    } : {
      minWidth: "120px"
    }), c = () => {
      a.disabled || (r.value = !r.value, r.value ? n("open") : n("close"));
    }, d = (h, v) => {
      h.disabled || h.divider || (n("select", h, v), r.value = !1, n("close"));
    }, p = (h) => {
      s.value && !s.value.contains(h.target) && (r.value = !1, n("close"));
    };
    return Pe(() => {
      document.addEventListener("click", p);
    }), He(() => {
      document.removeEventListener("click", p);
    }), (h, v) => (m(), y("div", {
      ref_key: "dropdownRef",
      ref: s,
      class: T(["wc-dropdown", { dark: e.isDarkMode }]),
      style: { backgroundColor: "var(--wc-bg-surface)", color: "var(--wc-text-primary)" }
    }, [
      _("div", {
        ref_key: "triggerRef",
        ref: l,
        class: "wc-dropdown__trigger",
        onClick: c
      }, [
        M(h.$slots, "trigger", {}, () => [
          _("button", Ll, [
            he(I(e.triggerText) + " ", 1),
            _("span", {
              class: T(["wc-dropdown__arrow", { "wc-dropdown__arrow--open": r.value }])
            }, " ▼ ", 2)
          ])
        ])
      ], 512),
      Ge(Ke, { name: "dropdown" }, {
        default: je(() => [
          r.value ? (m(), y("div", {
            key: 0,
            ref_key: "menuRef",
            ref: o,
            class: T(u.value),
            style: ce(i.value)
          }, [
            M(h.$slots, "content", {}, () => [
              e.variant === "card" ? (m(), y("div", zl, [
                _("div", Fl, [
                  M(h.$slots, "illustration", {}, () => [
                    e.illustration ? (m(), y("img", {
                      key: 0,
                      src: e.illustration,
                      alt: e.illustrationAlt,
                      class: "wc-dropdown__illustration-image"
                    }, null, 8, ql)) : (m(), y("div", Wl, v[0] || (v[0] = [
                      _("span", null, "🎨", -1)
                    ])))
                  ]),
                  e.cardTitle || e.cardDescription ? (m(), y("div", Hl, [
                    e.cardTitle ? (m(), y("h4", Ul, I(e.cardTitle), 1)) : j("", !0),
                    e.cardDescription ? (m(), y("p", Yl, I(e.cardDescription), 1)) : j("", !0)
                  ])) : j("", !0)
                ]),
                _("div", Gl, [
                  (m(!0), y(ke, null, Ce(e.items, (g, x) => (m(), y("div", {
                    key: g.key || x,
                    class: T([
                      g.divider ? "wc-dropdown__divider" : "wc-dropdown__item",
                      {
                        "wc-dropdown__item--disabled": g.disabled && !g.divider
                      }
                    ]),
                    onClick: ($) => d(g, x)
                  }, [
                    g.icon ? (m(), y("span", Jl, I(g.icon), 1)) : j("", !0),
                    _("span", Xl, I(g.label), 1)
                  ], 10, Kl))), 128))
                ])
              ])) : (m(), y("div", Ql, [
                (m(!0), y(ke, null, Ce(e.items, (g, x) => (m(), y("div", {
                  key: g.key || x,
                  class: T([
                    g.divider ? "wc-dropdown__divider" : "wc-dropdown__item",
                    {
                      "wc-dropdown__item--disabled": g.disabled && !g.divider
                    }
                  ]),
                  onClick: ($) => d(g, x)
                }, [
                  g.icon ? (m(), y("span", eo, I(g.icon), 1)) : j("", !0),
                  _("span", to, I(g.label), 1)
                ], 10, Zl))), 128))
              ]))
            ])
          ], 6)) : j("", !0)
        ]),
        _: 3
      })
    ], 2));
  }
}, me = (e, t) => {
  const a = e.__vccOpts || e;
  for (const [n, r] of t)
    a[n] = r;
  return a;
}, ao = ["disabled"], no = {
  key: 0,
  class: "fab-icon"
}, ro = ["innerHTML"], so = {
  key: 1,
  class: "fab-label"
}, lo = {
  __name: "Fab",
  props: {
    variant: {
      type: String,
      default: "circular",
      validator: (e) => ["circular", "extended"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    color: {
      type: String,
      default: "primary",
      validator: (e) => ["primary", "secondary", "inherit"].includes(e)
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    label: {
      type: String,
      default: ""
    },
    icon: {
      type: String,
      default: ""
    }
  },
  emits: ["click"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(!1), s = C(() => {
      const i = ["wc-fab"];
      return i.push(`wc-fab--${a.variant}`), i.push(`wc-fab--${a.size}`), i.push(`wc-fab--${a.color}`), a.disabled && i.push("wc-fab--disabled"), r.value && i.push("wc-fab--focused"), i;
    }), l = (i) => {
      a.disabled || n("click", i);
    }, o = () => {
      r.value = !0;
    }, u = () => {
      r.value = !1;
    };
    return (i, c) => (m(), y("button", {
      class: T(s.value),
      disabled: e.disabled,
      onClick: l,
      onFocus: o,
      onBlur: u
    }, [
      i.$slots.icon || e.icon ? (m(), y("span", no, [
        M(i.$slots, "icon", {}, () => [
          e.icon ? (m(), y("span", {
            key: 0,
            innerHTML: e.icon
          }, null, 8, ro)) : j("", !0)
        ], !0)
      ])) : j("", !0),
      e.variant === "extended" && (i.$slots.default || e.label) ? (m(), y("span", so, [
        M(i.$slots, "default", {}, () => [
          he(I(e.label), 1)
        ], !0)
      ])) : j("", !0)
    ], 42, ao));
  }
}, Yf = /* @__PURE__ */ me(lo, [["__scopeId", "data-v-520d7cb2"]]), Mt = Fe({
  name: "FeedItem",
  components: {},
  // will be replaced later for recursion
  props: {
    item: { type: Object, required: !0 },
    showAvatar: { type: Boolean, default: !0 },
    variant: { type: String, default: "timeline" },
    color: { type: String, default: "var(--wc-primary-500)" },
    dotSize: { type: [String, Number], default: 12 },
    lineWidth: { type: [String, Number], default: 2 }
  },
  emits: ["item-click"],
  computed: {
    feedItemStyles() {
      const e = typeof this.dotSize == "number" ? `${this.dotSize}px` : this.dotSize, t = typeof this.lineWidth == "number" ? `${this.lineWidth}px` : this.lineWidth;
      return {
        "--feed-color": this.color,
        "--feed-dot-size": e,
        "--feed-line-width": t
      };
    }
  },
  methods: {
    handleClick() {
      this.$emit("item-click", this.item);
    }
  },
  template: `
    <li 
      class="wc-feed-item" 
      :class="[variant, (item.children && item.children.length) ? 'has-children' : '']" 
      :style="feedItemStyles"
      @click="handleClick"
    >
      <div v-if="showAvatar && item.avatar" class="wc-feed-avatar"><img :src="item.avatar" alt="avatar" /></div>
      <div class="wc-feed-content">
        <div class="wc-feed-header">
          <strong class="wc-feed-author">{{ item.author }}</strong>
          <span class="wc-feed-time">{{ item.time }}</span>
        </div>
        <p class="wc-feed-text">{{ item.text }}</p>
        <ul v-if="item.children && item.children.length" class="wc-feed-children">
          <FeedItem
            v-for="child in item.children"
            :key="child.id || child.time"
            :item="child"
            :variant="variant"
            :show-avatar="showAvatar"
            :color="color"
            :dot-size="dotSize"
            :line-width="lineWidth"
            @item-click="$emit('item-click', $event)"
          />
        </ul>
      </div>
    </li>
  `
});
Mt.components = { FeedItem: Mt };
const oo = {
  name: "Feed",
  components: { FeedItem: Mt },
  props: {
    items: { type: Array, default: () => [] },
    variant: { type: String, default: "timeline" },
    // timeline 默认
    showAvatar: { type: Boolean, default: !0 },
    color: { type: String, default: "var(--wc-primary-500)" },
    // 主题颜色
    dotSize: { type: [String, Number], default: 12 },
    // 圆点大小
    lineWidth: { type: [String, Number], default: 3 }
    // 线条粗细
  },
  emits: ["item-click"],
  setup(e) {
    return {
      feedListStyles: C(() => {
        const a = typeof e.lineWidth == "number" ? `${e.lineWidth}px` : e.lineWidth;
        return {
          "--feed-color": e.color,
          "--feed-line-width": a
        };
      })
    };
  }
};
function io(e, t, a, n, r, s) {
  const l = or("FeedItem");
  return m(), y("ul", {
    class: T(["wc-feed-list", a.variant]),
    style: ce(n.feedListStyles)
  }, [
    (m(!0), y(ke, null, Ce(a.items, (o) => (m(), Se(l, {
      key: o.id || o.time,
      item: o,
      "show-avatar": a.showAvatar,
      variant: a.variant,
      color: a.color,
      "dot-size": a.dotSize,
      "line-width": a.lineWidth,
      onItemClick: t[0] || (t[0] = (u) => e.$emit("item-click", u))
    }, null, 8, ["item", "show-avatar", "variant", "color", "dot-size", "line-width"]))), 128)),
    M(e.$slots, "default")
  ], 6);
}
const Gf = /* @__PURE__ */ me(oo, [["render", io]]), pn = ({
  item: e,
  showAvatar: t = !0,
  variant: a = "timeline",
  color: n = "var(--wc-primary-500)",
  dotSize: r = 12,
  lineWidth: s = 2,
  onItemClick: l
}) => {
  const o = Array.isArray(e.children) && e.children.length, u = typeof r == "number" ? `${r}px` : r, i = typeof s == "number" ? `${s}px` : s, c = {
    "--feed-color": n,
    "--feed-dot-size": u,
    "--feed-line-width": i,
    display: "flex",
    gap: 12,
    position: "relative"
  };
  return /* @__PURE__ */ f.jsxs(
    "li",
    {
      className: `wc-feed-item ${a} ${o ? "has-children" : ""}`,
      style: c,
      onClick: () => l && l(e),
      children: [
        t && e.avatar && /* @__PURE__ */ f.jsx("div", { className: "wc-feed-avatar", style: { flexShrink: 0 }, children: /* @__PURE__ */ f.jsx("img", { src: e.avatar, alt: "avatar", style: { width: 40, height: 40, borderRadius: "50%", objectFit: "cover" } }) }),
        /* @__PURE__ */ f.jsxs("div", { className: "wc-feed-content", style: { flex: 1 }, children: [
          /* @__PURE__ */ f.jsxs("div", { className: "wc-feed-header", style: { display: "flex", gap: 8, alignItems: "center" }, children: [
            /* @__PURE__ */ f.jsx("strong", { className: "wc-feed-author", style: { color: "var(--color-text,#111827)" }, children: e.author }),
            /* @__PURE__ */ f.jsx("span", { className: "wc-feed-time", style: { fontSize: "0.75rem", color: "var(--color-text-secondary,#6b7280)" }, children: e.time })
          ] }),
          /* @__PURE__ */ f.jsx("p", { className: "wc-feed-text", style: { margin: "4px 0 0", fontSize: "0.875rem", color: "var(--color-text,#374151)" }, children: e.text }),
          o && /* @__PURE__ */ f.jsx("ul", { className: "wc-feed-children", style: { listStyle: "none", margin: "12px 0 0 52px", padding: 0, display: "flex", flexDirection: "column", gap: 16 }, children: e.children.map((d) => /* @__PURE__ */ f.jsx(
            pn,
            {
              item: d,
              showAvatar: t,
              variant: a,
              color: n,
              dotSize: r,
              lineWidth: s,
              onItemClick: l
            },
            d.id || d.time
          )) })
        ] })
      ]
    }
  );
}, co = ({
  items: e = [],
  variant: t = "timeline",
  showAvatar: a = !0,
  color: n = "var(--wc-primary-500)",
  dotSize: r = 12,
  lineWidth: s = 2,
  onItemClick: l,
  className: o = ""
}) => {
  const u = typeof s == "number" ? `${s}px` : s, i = {
    "--feed-color": n,
    "--feed-line-width": u,
    listStyle: "none",
    padding: 0,
    margin: 0,
    display: "flex",
    flexDirection: "column",
    gap: 16
  };
  return /* @__PURE__ */ f.jsx("ul", { className: `wc-feed-list ${t} ${o}`, style: i, children: e.map((c) => /* @__PURE__ */ f.jsx(
    pn,
    {
      item: c,
      variant: t,
      showAvatar: a,
      color: n,
      dotSize: r,
      lineWidth: s,
      onItemClick: l
    },
    c.id || c.time
  )) });
};
co.displayName = "Feed";
const uo = {
  name: "Feature",
  props: {
    title: { type: String, default: "Awesome Feature" },
    description: { type: String, default: "Feature description goes here." },
    icon: { type: String, default: "" },
    // svg/html string
    iconSize: { type: [Number, String], default: 48 },
    align: { type: String, default: "left" },
    // left | center
    bgColor: { type: String, default: "" },
    reverse: { type: Boolean, default: !1 },
    ctaLabel: { type: String, default: "" },
    ctaHref: { type: String, default: "#" },
    variant: { type: String, default: "default", validator: (e) => ["default", "elevated", "minimal"].includes(e) },
    isDarkMode: { type: Boolean, default: !1 }
  },
  emits: ["click", "cta-click"],
  computed: {
    cardClasses() {
      const e = [
        "wc-feature-card",
        "wc-feature-card--clickable"
      ];
      return this.variant !== "default" && e.push(`wc-feature-card--${this.variant}`), this.align === "center" ? e.push("wc-feature-card--center") : e.push("wc-feature-card--left"), this.reverse && e.push("wc-feature-card--reverse"), e;
    },
    cardStyle() {
      return this.bgColor ? { background: this.bgColor } : void 0;
    },
    iconStyle() {
      const e = typeof this.iconSize == "number" ? `${this.iconSize}px` : this.iconSize;
      return { width: e, height: e, fontSize: `calc(${e} * 0.75)` };
    }
  }
}, fo = ["innerHTML"], po = { class: "wc-feature-content" }, mo = { class: "wc-feature-title" }, ho = { class: "wc-feature-description" }, vo = ["href"];
function yo(e, t, a, n, r, s) {
  return m(), y("div", {
    class: T([s.cardClasses, { dark: a.isDarkMode }]),
    style: ce(s.cardStyle),
    onClick: t[1] || (t[1] = (l) => e.$emit("click"))
  }, [
    a.icon ? (m(), y("div", {
      key: 0,
      class: "wc-feature-icon",
      style: ce(s.iconStyle),
      innerHTML: a.icon
    }, null, 12, fo)) : j("", !0),
    _("div", po, [
      _("h3", mo, I(a.title), 1),
      _("p", ho, [
        M(e.$slots, "default", {}, () => [
          he(I(a.description), 1)
        ])
      ]),
      a.ctaLabel ? (m(), y("a", {
        key: 0,
        href: a.ctaHref,
        class: "wc-feature-cta",
        onClick: t[0] || (t[0] = Ae((l) => e.$emit("cta-click"), ["stop"]))
      }, I(a.ctaLabel), 9, vo)) : j("", !0)
    ])
  ], 6);
}
const Kf = /* @__PURE__ */ me(uo, [["render", yo]]), go = ({ align: e, size: t, background: a, reverse: n, vertical: r, clickable: s, disabled: l, className: o, isDarkMode: u }) => [
  "wc-feature-card",
  s && "wc-feature-card--clickable",
  l,
  n && "wc-feature-card--reverse",
  r && "wc-feature-card--vertical",
  `wc-feature-card--${t}`,
  `wc-feature-card--${a}`,
  `wc-feature-card--${e}`,
  o,
  u && "dark"
].filter(Boolean);
function bo(e, t) {
  return [
    "wc-feature-icon",
    `wc-feature-icon--${e}`,
    t
  ].filter(Boolean);
}
function wo(e, t) {
  return [
    "wc-feature-content",
    `wc-feature-content--${e}`,
    t
  ].filter(Boolean);
}
function xo(e, t) {
  return [
    "wc-feature-title",
    `wc-feature-title--${e}`,
    t
  ].filter(Boolean);
}
const ko = (e, t) => [
  "wc-feature-description",
  `wc-feature-description--${e}`,
  t
].filter(Boolean);
function _o(e, t, a) {
  a && a(e);
}
function Co(e, t) {
  e.stopPropagation(), t && t(e);
}
function So(e) {
  return typeof e == "string" ? () => {
    const t = document.createElement("span");
    return t.innerHTML = e, t;
  } : e;
}
const $o = ({
  title: e = "Awesome Feature",
  description: t = "Feature description goes here.",
  icon: a = "",
  iconSize: n = 48,
  size: r = "md",
  align: s = "left",
  background: l = "default",
  bgColor: o = "",
  reverse: u = !1,
  vertical: i = !1,
  ctaLabel: c = "",
  ctaHref: d = "#",
  onClick: p,
  onCtaClick: h,
  children: v,
  className: g = "",
  style: x = {},
  isDarkMode: $ = !1
}) => {
  const B = go({
    align: s,
    size: r,
    background: l,
    reverse: u,
    vertical: i,
    clickable: !!p,
    disabled: !1,
    className: g
  }).join(" "), S = bo(n).join(" "), k = wo(s).join(" "), w = xo(r).join(" "), E = ko(r).join(" "), W = {
    ...o ? { background: o } : {},
    ...x
  };
  return /* @__PURE__ */ f.jsxs(
    "div",
    {
      className: `${B} ${$ ? "dark" : ""}`,
      style: W,
      onClick: (R) => _o(R, !1, p),
      children: [
        a && /* @__PURE__ */ f.jsx("div", { className: S, children: So(a) }),
        /* @__PURE__ */ f.jsxs("div", { className: k, children: [
          /* @__PURE__ */ f.jsx("h3", { className: w, children: e }),
          /* @__PURE__ */ f.jsx("p", { className: E, children: v || t }),
          c && /* @__PURE__ */ f.jsx(
            "a",
            {
              href: d,
              className: "wc-feature-cta",
              onClick: (R) => Co(R, h),
              children: c
            }
          )
        ] })
      ]
    }
  );
};
$o.displayName = "Feature";
const jo = {
  name: "FileInput",
  props: {
    multiple: { type: Boolean, default: !1 },
    variant: { type: String, default: "block" },
    // block | button | icon
    accept: { type: String, default: "" },
    label: { type: String, default: "选择文件" }
  },
  emits: ["change", "invalid"],
  computed: {
    wrapperClasses() {
      return [
        "wc-file-input-wrapper",
        `variant-${this.variant}`
      ];
    }
  },
  methods: {
    validateFiles(e) {
      if (!this.accept) return !0;
      const t = this.accept.split(",").map((n) => n.trim()), a = [...e].filter((n) => !t.some((r) => r.startsWith(".") ? n.name.endsWith(r) : n.type === r));
      return a.length ? (this.$emit("invalid", a), !1) : !0;
    },
    onChange(e) {
      const t = e.target.files;
      this.validateFiles(t) && this.$emit("change", t);
    },
    onDrop(e) {
      const t = e.dataTransfer.files;
      this.validateFiles(t) && this.$emit("change", t);
    }
  }
}, No = ["multiple", "accept"], To = {
  key: 0,
  class: "wc-file-input-content"
}, Eo = {
  key: 1,
  class: "wc-file-button"
}, Io = {
  key: 2,
  class: "wc-file-icon"
};
function Bo(e, t, a, n, r, s) {
  return m(), y("label", {
    class: T(s.wrapperClasses),
    onDragover: t[1] || (t[1] = Ae(() => {
    }, ["prevent"])),
    onDrop: t[2] || (t[2] = Ae((...l) => s.onDrop && s.onDrop(...l), ["prevent"]))
  }, [
    _("input", {
      type: "file",
      class: "wc-file-input",
      multiple: a.multiple,
      accept: a.accept,
      onChange: t[0] || (t[0] = (...l) => s.onChange && s.onChange(...l))
    }, null, 40, No),
    a.variant === "block" ? (m(), y("div", To, [
      M(e.$slots, "default", {}, () => [
        he(I(a.label), 1)
      ])
    ])) : a.variant === "button" ? (m(), y("span", Eo, I(a.label), 1)) : a.variant === "icon" ? (m(), y("span", Io, "⬆️")) : j("", !0)
  ], 34);
}
const Jf = /* @__PURE__ */ me(jo, [["render", Bo]]), Ro = ({
  multiple: e = !1,
  variant: t = "block",
  // block | button | icon
  accept: a = "",
  label: n = "选择文件",
  onChange: r,
  onInvalid: s,
  className: l = "",
  style: o = {}
}) => {
  const u = Te(null), i = (v) => {
    if (!a) return !0;
    const g = a.split(",").map(($) => $.trim()), x = [...v].filter(($) => !g.some((B) => B.startsWith(".") ? $.name.endsWith(B) : $.type === B));
    return x.length ? (s && s(x), !1) : !0;
  }, c = (v) => {
    const g = v.target.files;
    i(g) && r && r(g);
  }, d = (v) => {
    v.preventDefault();
    const g = v.dataTransfer.files;
    i(g) && r && r(g);
  }, p = () => {
    var v;
    (v = u.current) == null || v.click();
  }, h = () => {
    switch (t) {
      case "button":
        return /* @__PURE__ */ f.jsx("span", { className: "wc-file-button", children: n });
      case "icon":
        return /* @__PURE__ */ f.jsx("span", { className: "wc-file-icon", children: "⬆️" });
      default:
        return /* @__PURE__ */ f.jsx("strong", { className: "wc-file-input-content__title", children: n });
    }
  };
  return /* @__PURE__ */ f.jsxs(
    "label",
    {
      className: `wc-file-input-wrapper variant-${t} ${l}`,
      onDragOver: (v) => v.preventDefault(),
      onDrop: d,
      onClick: t !== "block" ? p : void 0,
      children: [
        /* @__PURE__ */ f.jsx(
          "input",
          {
            ref: u,
            type: "file",
            multiple: e,
            accept: a,
            style: { display: "none" },
            onChange: c
          }
        ),
        t === "block" ? /* @__PURE__ */ f.jsx("div", { className: "wc-file-input-content", children: h() }) : h()
      ]
    }
  );
};
Ro.displayName = "FileInput";
const Po = {
  __name: "FormControl",
  props: {
    disabled: {
      type: Boolean,
      default: !1
    },
    error: {
      type: Boolean,
      default: !1
    },
    required: {
      type: Boolean,
      default: !1
    },
    variant: {
      type: String,
      default: "outlined",
      validator: (e) => ["outlined", "filled", "standard"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    fullWidth: {
      type: Boolean,
      default: !1
    },
    margin: {
      type: String,
      default: "normal",
      validator: (e) => ["none", "dense", "normal"].includes(e)
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      const n = [];
      return t.fullWidth && n.push("form-control--full-width"), t.margin === "dense" ? n.push("form-control--margin-dense") : t.margin === "normal" && n.push("form-control--margin-normal"), t.disabled && n.push("form-control--disabled"), t.error && n.push("form-control--error"), n;
    });
    return it("formControlContext", {
      disabled: t.disabled,
      error: t.error,
      required: t.required,
      variant: t.variant,
      size: t.size
    }), (n, r) => (m(), y("div", {
      class: T(["form-control", a.value])
    }, [
      M(n.$slots, "default", {}, void 0, !0)
    ], 2));
  }
}, Xf = /* @__PURE__ */ me(Po, [["__scopeId", "data-v-7222714e"]]), mn = ft(null), Do = ({
  disabled: e = !1,
  error: t = !1,
  required: a = !1,
  variant: n = "outlined",
  // outlined | filled | standard
  size: r = "md",
  // sm | md | lg
  fullWidth: s = !1,
  margin: l = "normal",
  // none | dense | normal
  className: o = "",
  style: u = {},
  children: i,
  ...c
}) => {
  const d = Oe(() => ({
    disabled: e,
    error: t,
    required: a,
    variant: n,
    size: r
  }), [e, t, a, n, r]), p = [
    "form-control",
    s && "form-control--full-width",
    l === "dense" && "form-control--margin-dense",
    l === "normal" && "form-control--margin-normal",
    e && "form-control--disabled",
    t && "form-control--error",
    o
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsx(mn.Provider, { value: d, children: /* @__PURE__ */ f.jsx("div", { className: p, style: u, ...c, children: i }) });
};
Do.displayName = "FormControl";
const Vo = {
  key: 0,
  class: "form-control-label__required"
}, Mo = { class: "form-control-label__control" }, Oo = {
  key: 0,
  class: "form-control-label__required"
}, Ao = {
  __name: "FormControlLabel",
  props: {
    label: {
      type: String,
      required: !0
    },
    labelPlacement: {
      type: String,
      default: "end",
      validator: (e) => ["start", "end", "top", "bottom"].includes(e)
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    required: {
      type: Boolean,
      default: !1
    },
    checked: {
      type: Boolean,
      default: void 0
    },
    value: {
      type: [String, Number, Boolean],
      default: void 0
    }
  },
  emits: ["change"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = C(() => {
      const o = [];
      return a.labelPlacement === "start" ? o.push("form-control-label--placement-start") : a.labelPlacement === "end" ? o.push("form-control-label--placement-end") : a.labelPlacement === "top" ? o.push("form-control-label--placement-top") : a.labelPlacement === "bottom" && o.push("form-control-label--placement-bottom"), a.disabled && o.push("form-control-label--disabled"), o;
    }), s = C(() => {
      const o = [];
      return a.disabled && o.push("form-control-label__text--disabled"), o;
    }), l = (o) => {
      a.disabled || n("change", o);
    };
    return (o, u) => (m(), y("label", {
      class: T(["form-control-label", r.value]),
      onClick: l
    }, [
      e.labelPlacement === "start" ? (m(), y("span", {
        key: 0,
        class: T(["form-control-label__text", s.value])
      }, [
        he(I(e.label) + " ", 1),
        e.required ? (m(), y("span", Vo, "*")) : j("", !0)
      ], 2)) : j("", !0),
      _("span", Mo, [
        M(o.$slots, "default", {}, void 0, !0)
      ]),
      e.labelPlacement !== "start" ? (m(), y("span", {
        key: 1,
        class: T(["form-control-label__text", s.value])
      }, [
        he(I(e.label) + " ", 1),
        e.required ? (m(), y("span", Oo, "*")) : j("", !0)
      ], 2)) : j("", !0)
    ], 2));
  }
}, Qf = /* @__PURE__ */ me(Ao, [["__scopeId", "data-v-5c71fa97"]]), Lo = ({
  label: e,
  labelPlacement: t = "end",
  // start | end | top | bottom
  disabled: a = !1,
  required: n = !1,
  checked: r,
  value: s,
  className: l = "",
  style: o = {},
  onChange: u,
  children: i,
  ...c
}) => {
  const d = (v) => {
    a || u == null || u(v);
  }, p = [
    "form-control-label",
    t === "start" && "form-control-label--placement-start",
    t === "end" && "form-control-label--placement-end",
    t === "top" && "form-control-label--placement-top",
    t === "bottom" && "form-control-label--placement-bottom",
    a && "form-control-label--disabled",
    l
  ].filter(Boolean).join(" "), h = [
    "form-control-label__text",
    a && "form-control-label__text--disabled"
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsxs("label", { className: p, onClick: d, style: o, ...c, children: [
    t === "start" && /* @__PURE__ */ f.jsxs("span", { className: h, children: [
      e,
      n && /* @__PURE__ */ f.jsx("span", { className: "form-control-label__required", children: "*" })
    ] }),
    /* @__PURE__ */ f.jsx("span", { className: "form-control-label__control", children: i }),
    t !== "start" && /* @__PURE__ */ f.jsxs("span", { className: h, children: [
      e,
      n && /* @__PURE__ */ f.jsx("span", { className: "form-control-label__required", children: "*" })
    ] })
  ] });
};
Lo.displayName = "FormControlLabel";
const zo = {
  __name: "FormGroup",
  props: {
    row: {
      type: Boolean,
      default: !1
    },
    spacing: {
      type: String,
      default: "normal",
      validator: (e) => ["compact", "normal", "comfortable"].includes(e)
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      const n = [];
      return t.row && n.push("form-group--row"), t.spacing === "compact" ? n.push("form-group--spacing-compact") : t.spacing === "comfortable" && n.push("form-group--spacing-comfortable"), n;
    });
    return (n, r) => (m(), y("div", {
      class: T(["form-group", a.value])
    }, [
      M(n.$slots, "default", {}, void 0, !0)
    ], 2));
  }
}, Zf = /* @__PURE__ */ me(zo, [["__scopeId", "data-v-1f9a4f70"]]), Fo = ({
  row: e = !1,
  spacing: t = "normal",
  // compact | normal | comfortable
  className: a = "",
  style: n = {},
  children: r,
  ...s
}) => {
  const l = [
    "form-group",
    e && "form-group--row",
    t === "compact" && "form-group--spacing-compact",
    t === "comfortable" && "form-group--spacing-comfortable",
    a
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsx("div", { className: l, style: n, ...s, children: r });
};
Fo.displayName = "FormGroup";
const qo = ["id"], Wo = {
  __name: "FormHelperText",
  props: {
    disabled: {
      type: Boolean,
      default: !1
    },
    error: {
      type: Boolean,
      default: !1
    },
    filled: {
      type: Boolean,
      default: !1
    },
    focused: {
      type: Boolean,
      default: !1
    },
    margin: {
      type: String,
      default: "normal",
      validator: (e) => ["normal", "dense", "none"].includes(e)
    },
    required: {
      type: Boolean,
      default: !1
    },
    variant: {
      type: String,
      default: "outlined",
      validator: (e) => ["standard", "outlined", "filled"].includes(e)
    },
    id: {
      type: String,
      default: void 0
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    }
  },
  setup(e) {
    const t = e, a = Le("formControlContext", null), n = C(() => {
      const r = [];
      t.size === "sm" ? r.push("form-helper-text--size-sm") : t.size === "lg" && r.push("form-helper-text--size-lg"), t.margin === "dense" ? r.push("form-helper-text--margin-dense") : t.margin === "normal" && r.push("form-helper-text--margin-normal");
      const s = t.error || (a == null ? void 0 : a.error), l = t.disabled || (a == null ? void 0 : a.disabled);
      return s ? r.push("form-helper-text--error") : l && r.push("form-helper-text--disabled"), t.focused && r.push("form-helper-text--focused"), r;
    });
    return (r, s) => (m(), y("p", {
      id: e.id,
      class: T(["form-helper-text", n.value])
    }, [
      M(r.$slots, "default", {}, void 0, !0)
    ], 10, qo));
  }
}, ep = /* @__PURE__ */ me(Wo, [["__scopeId", "data-v-b80fac14"]]), Ho = ({
  disabled: e = !1,
  error: t = !1,
  filled: a = !1,
  focused: n = !1,
  margin: r = "normal",
  // normal | dense | none
  required: s = !1,
  variant: l = "outlined",
  // standard | outlined | filled
  id: o,
  size: u = "md",
  className: i = "",
  style: c = {},
  children: d,
  ...p
}) => {
  const h = qe(mn) || {}, v = t || h.error, g = e || h.disabled, x = [
    "form-helper-text",
    u === "sm" && "form-helper-text--size-sm",
    u === "lg" && "form-helper-text--size-lg",
    r === "dense" && "form-helper-text--margin-dense",
    r === "normal" && "form-helper-text--margin-normal",
    v && "form-helper-text--error",
    g && "form-helper-text--disabled",
    n && "form-helper-text--focused",
    i
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsx("p", { id: o, className: x, style: c, ...p, children: d });
};
Ho.displayName = "FormHelperText";
const tp = {
  __name: "Grid",
  props: {
    container: {
      type: Boolean,
      default: !1
    },
    item: {
      type: Boolean,
      default: !1
    },
    xs: [Number, String],
    sm: [Number, String],
    md: [Number, String],
    lg: [Number, String],
    xl: [Number, String],
    spacing: {
      type: [Number, String],
      default: 0
    },
    direction: {
      type: String,
      default: "row",
      validator: (e) => ["row", "column", "row-reverse", "column-reverse"].includes(e)
    },
    justifyContent: {
      type: String,
      default: "flex-start",
      validator: (e) => ["flex-start", "center", "flex-end", "space-between", "space-around", "space-evenly"].includes(e)
    },
    alignItems: {
      type: String,
      default: "stretch",
      validator: (e) => ["flex-start", "center", "flex-end", "stretch", "baseline"].includes(e)
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      const n = [];
      if (t.container) {
        n.push("flex", "flex-wrap");
        const r = {
          row: "flex-row",
          column: "flex-col",
          "row-reverse": "flex-row-reverse",
          "column-reverse": "flex-col-reverse"
        };
        n.push(r[t.direction]);
        const s = {
          "flex-start": "justify-start",
          center: "justify-center",
          "flex-end": "justify-end",
          "space-between": "justify-between",
          "space-around": "justify-around",
          "space-evenly": "justify-evenly"
        };
        n.push(s[t.justifyContent]);
        const l = {
          "flex-start": "items-start",
          center: "items-center",
          "flex-end": "items-end",
          stretch: "items-stretch",
          baseline: "items-baseline"
        };
        if (n.push(l[t.alignItems]), t.spacing > 0) {
          const o = t.spacing.toString();
          ["1", "2", "3", "4", "5", "6", "8", "10", "12"].includes(o) ? n.push(`gap-${o}`) : n.push(`gap-${Math.floor(t.spacing / 4)}`);
        }
      }
      return t.item && (n.push("flex-shrink-0"), Object.entries({ xs: "", sm: "sm:", md: "md:", lg: "lg:", xl: "xl:" }).forEach(([s, l]) => {
        const o = t[s];
        if (o !== void 0)
          if (o === "auto")
            n.push(`${l}flex-auto`);
          else if (o === !0)
            n.push(`${l}flex-1`);
          else {
            const u = Math.round(o / 12 * 100);
            n.push(`${l}w-${u === 100 ? "full" : u === 50 ? "1/2" : u === 25 ? "1/4" : u === 75 ? "3/4" : `[${u}%]`}`);
          }
      })), n;
    });
    return (n, r) => (m(), y("div", {
      class: T(a.value)
    }, [
      M(n.$slots, "default")
    ], 2));
  }
}, Uo = ({
  container: e = !1,
  item: t = !1,
  xs: a,
  sm: n,
  md: r,
  lg: s,
  xl: l,
  spacing: o = 0,
  direction: u = "row",
  justifyContent: i = "flex-start",
  alignItems: c = "stretch",
  className: d = "",
  style: p = {},
  children: h,
  ...v
}) => {
  const g = [];
  if (e) {
    g.push("flex", "flex-wrap");
    const x = {
      row: "flex-row",
      column: "flex-col",
      "row-reverse": "flex-row-reverse",
      "column-reverse": "flex-col-reverse"
    };
    g.push(x[u]);
    const $ = {
      "flex-start": "justify-start",
      center: "justify-center",
      "flex-end": "justify-end",
      "space-between": "justify-between",
      "space-around": "justify-around",
      "space-evenly": "justify-evenly"
    };
    g.push($[i]);
    const B = {
      "flex-start": "items-start",
      center: "items-center",
      "flex-end": "items-end",
      stretch: "items-stretch",
      baseline: "items-baseline"
    };
    if (g.push(B[c]), o > 0) {
      const S = o.toString();
      ["1", "2", "3", "4", "5", "6", "8", "10", "12"].includes(S) ? g.push(`gap-${S}`) : g.push(`gap-${Math.floor(o / 4)}`);
    }
  }
  return t && (g.push("flex-shrink-0"), Object.entries({ xs: "", sm: "sm:", md: "md:", lg: "lg:", xl: "xl:" }).forEach(([$, B]) => {
    const S = { xs: a, sm: n, md: r, lg: s, xl: l }[$];
    if (S !== void 0)
      if (S === "auto")
        g.push(`${B}flex-auto`);
      else if (S === !0)
        g.push(`${B}flex-1`);
      else {
        const k = Math.round(S / 12 * 100);
        g.push(`${B}w-${k === 100 ? "full" : k === 50 ? "1/2" : k === 25 ? "1/4" : k === 75 ? "3/4" : `[${k}%]`}`);
      }
  })), /* @__PURE__ */ f.jsx("div", { className: [...g, d].filter(Boolean).join(" "), style: p, ...v, children: h });
};
Uo.displayName = "Grid";
const Yo = {
  name: "HoverCard",
  props: {
    triggerText: {
      type: String,
      default: "Hover me"
    },
    cardData: {
      type: Object,
      default: () => ({
        title: "Card Title",
        description: "This is a preview card that appears on hover.",
        image: null,
        imageAlt: "",
        meta: [],
        actions: []
      })
    },
    variant: {
      type: String,
      default: "default",
      validator: (e) => ["default", "outlined", "filled", "minimal"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    cardSize: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg", "xl"].includes(e)
    },
    position: {
      type: String,
      default: "top",
      validator: (e) => ["top", "bottom", "left", "right"].includes(e)
    },
    delay: {
      type: Number,
      default: 300
    },
    hideDelay: {
      type: Number,
      default: 100
    },
    showArrow: {
      type: Boolean,
      default: !0
    },
    disabled: {
      type: Boolean,
      default: !1
    }
  },
  emits: ["show", "hide", "action"],
  setup(e, { emit: t }) {
    const a = A(!1), n = A(null), r = A(`hover-card-${Math.random().toString(36).substr(2, 9)}`), s = A(null), l = A(null), o = C(() => ({
      zIndex: 1e3
    })), u = () => {
      e.disabled || (clearTimeout(l.value), s.value = setTimeout(() => {
        a.value = !0, t("show");
      }, e.delay));
    }, i = () => {
      e.disabled || (clearTimeout(s.value), l.value = setTimeout(() => {
        a.value = !1, t("hide");
      }, e.hideDelay));
    }, c = (h) => {
      h.style.opacity = "0", h.style.transform = "scale(0.95)", lt(() => {
        h.style.transition = "opacity 0.2s ease, transform 0.2s ease", h.style.opacity = "1", h.style.transform = "scale(1)";
      });
    }, d = (h) => {
      h.style.transition = "opacity 0.15s ease, transform 0.15s ease", h.style.opacity = "0", h.style.transform = "scale(0.95)";
    }, p = (h) => {
      t("action", h), h.onClick && h.onClick();
    };
    return Ze(() => {
      clearTimeout(s.value), clearTimeout(l.value);
    }), {
      isVisible: a,
      cardRef: n,
      triggerId: r,
      cardStyle: o,
      showCard: u,
      hideCard: i,
      onEnter: c,
      onLeave: d,
      handleAction: p
    };
  }
}, Go = { class: "hover-card-trigger" }, Ko = ["aria-describedby"], Jo = { class: "hover-card-content" }, Xo = {
  key: 0,
  class: "hover-card-image"
}, Qo = ["src", "alt"], Zo = { class: "hover-card-body" }, ei = {
  key: 0,
  class: "hover-card-title"
}, ti = {
  key: 1,
  class: "hover-card-description"
}, ai = {
  key: 2,
  class: "hover-card-meta"
}, ni = {
  key: 3,
  class: "hover-card-actions"
}, ri = ["onClick"];
function si(e, t, a, n, r, s) {
  return m(), y("div", {
    class: T(["hover-card-container", [
      `hover-card-${a.variant}`,
      `hover-card-size-${a.size}`,
      a.disabled && "hover-card-disabled"
    ]]),
    onMouseenter: t[0] || (t[0] = (...l) => n.showCard && n.showCard(...l)),
    onMouseleave: t[1] || (t[1] = (...l) => n.hideCard && n.hideCard(...l)),
    onTouchstart: t[2] || (t[2] = (...l) => n.showCard && n.showCard(...l)),
    onTouchend: t[3] || (t[3] = (...l) => n.hideCard && n.hideCard(...l))
  }, [
    _("span", Go, [
      M(e.$slots, "default", {}, () => [
        he(I(a.triggerText), 1)
      ], !0)
    ]),
    Ge(Ke, {
      name: "hover-card-transition",
      onEnter: n.onEnter,
      onLeave: n.onLeave
    }, {
      default: je(() => [
        n.isVisible ? (m(), y("div", {
          key: 0,
          ref: "cardRef",
          class: T(["hover-card-popup", [
            `hover-card-position-${a.position}`,
            `hover-card-card-size-${a.cardSize}`
          ]]),
          style: ce(n.cardStyle),
          role: "tooltip",
          "aria-describedby": n.triggerId
        }, [
          a.showArrow ? (m(), y("div", {
            key: 0,
            class: T(["hover-card-arrow", `hover-card-arrow-${a.position}`])
          }, null, 2)) : j("", !0),
          _("div", Jo, [
            M(e.$slots, "card", { data: a.cardData }, () => [
              a.cardData.image ? (m(), y("div", Xo, [
                _("img", {
                  src: a.cardData.image,
                  alt: a.cardData.imageAlt || a.cardData.title
                }, null, 8, Qo)
              ])) : j("", !0),
              _("div", Zo, [
                a.cardData.title ? (m(), y("h3", ei, I(a.cardData.title), 1)) : j("", !0),
                a.cardData.description ? (m(), y("p", ti, I(a.cardData.description), 1)) : j("", !0),
                a.cardData.meta ? (m(), y("div", ai, [
                  (m(!0), y(ke, null, Ce(a.cardData.meta, (l, o) => (m(), y("span", {
                    key: o,
                    class: "hover-card-meta-item"
                  }, I(l), 1))), 128))
                ])) : j("", !0),
                a.cardData.actions ? (m(), y("div", ni, [
                  (m(!0), y(ke, null, Ce(a.cardData.actions, (l, o) => (m(), y("button", {
                    key: o,
                    class: "hover-card-action-btn",
                    onClick: (u) => n.handleAction(l)
                  }, I(l.label), 9, ri))), 128))
                ])) : j("", !0)
              ])
            ], !0)
          ])
        ], 14, Ko)) : j("", !0)
      ]),
      _: 3
    }, 8, ["onEnter", "onLeave"])
  ], 34);
}
const ap = /* @__PURE__ */ me(Yo, [["render", si], ["__scopeId", "data-v-1324702d"]]), li = ({
  triggerText: e = "Hover me",
  cardData: t = {},
  variant: a = "default",
  // default | outlined | filled | minimal
  size: n = "md",
  // sm | md | lg
  cardSize: r = "md",
  // sm | md | lg | xl
  position: s = "top",
  // top | bottom | left | right
  delay: l = 300,
  hideDelay: o = 100,
  showArrow: u = !0,
  disabled: i = !1,
  onShow: c,
  onHide: d,
  onAction: p,
  className: h = "",
  style: v = {},
  children: g,
  card: x,
  ...$
}) => {
  var q, ne;
  const [B, S] = te(!1), k = Te(null), w = Te(null), E = Te(null), W = Te(`hover-card-${Math.random().toString(36).substr(2, 9)}`), R = () => {
    clearTimeout(k.current), clearTimeout(w.current);
  }, Y = () => {
    i || (R(), k.current = setTimeout(() => {
      S(!0), c == null || c();
    }, l));
  }, N = () => {
    i || (R(), w.current = setTimeout(() => {
      S(!1), d == null || d();
    }, o));
  };
  ve(() => () => R(), []);
  const O = (V) => {
    var K;
    p == null || p(V), (K = V == null ? void 0 : V.onClick) == null || K.call(V);
  }, H = [
    "hover-card-container",
    `hover-card-${a}`,
    `hover-card-size-${n}`,
    i && "hover-card-disabled",
    h
  ].filter(Boolean).join(" "), Q = [
    "hover-card-popup",
    `hover-card-position-${s}`,
    `hover-card-card-size-${r}`
  ].join(" ");
  return /* @__PURE__ */ f.jsxs(
    "div",
    {
      className: H,
      onMouseEnter: Y,
      onMouseLeave: N,
      onTouchStart: Y,
      onTouchEnd: N,
      style: v,
      ...$,
      children: [
        /* @__PURE__ */ f.jsx("span", { className: "hover-card-trigger", children: g || e }),
        B && /* @__PURE__ */ f.jsxs(
          "div",
          {
            ref: E,
            className: Q,
            style: { zIndex: 1e3 },
            role: "tooltip",
            "aria-describedby": W.current,
            children: [
              u && /* @__PURE__ */ f.jsx("div", { className: `hover-card-arrow hover-card-arrow-${s}` }),
              /* @__PURE__ */ f.jsx("div", { className: "hover-card-content", children: x ? typeof x == "function" ? x(t) : x : /* @__PURE__ */ f.jsxs(f.Fragment, { children: [
                t.image && /* @__PURE__ */ f.jsx("div", { className: "hover-card-image", children: /* @__PURE__ */ f.jsx("img", { src: t.image, alt: t.imageAlt || t.title }) }),
                /* @__PURE__ */ f.jsxs("div", { className: "hover-card-body", children: [
                  t.title && /* @__PURE__ */ f.jsx("h3", { className: "hover-card-title", children: t.title }),
                  t.description && /* @__PURE__ */ f.jsx("p", { className: "hover-card-description", children: t.description }),
                  ((q = t.meta) == null ? void 0 : q.length) && /* @__PURE__ */ f.jsx("div", { className: "hover-card-meta", children: t.meta.map((V, K) => /* @__PURE__ */ f.jsx("span", { className: "hover-card-meta-item", children: V }, K)) }),
                  ((ne = t.actions) == null ? void 0 : ne.length) && /* @__PURE__ */ f.jsx("div", { className: "hover-card-actions", children: t.actions.map((V, K) => /* @__PURE__ */ f.jsx(
                    "button",
                    {
                      className: "hover-card-action-btn",
                      onClick: () => O(V),
                      children: V.label
                    },
                    K
                  )) })
                ] })
              ] }) })
            ]
          }
        )
      ]
    }
  );
};
li.displayName = "HoverCard";
const oi = ["innerHTML"], ii = ["innerHTML"], ci = {
  __name: "Icon",
  props: {
    // Icon库和名称
    library: {
      type: String,
      default: "lucide",
      validator: (e) => ["lucide", "heroicons", "tabler", "phosphor", "feather", "html"].includes(e)
    },
    name: {
      type: String,
      default: ""
    },
    // HTML图标(用于自定义SVG或字体图标)
    html: {
      type: String,
      default: ""
    },
    // 尺寸
    size: {
      type: [String, Number],
      default: 24
    },
    // 颜色
    color: {
      type: String,
      default: "currentColor"
    },
    // 描边宽度(适用于支持的图标库)
    strokeWidth: {
      type: [String, Number],
      default: 2
    },
    // 样式变体(适用于heroicons)
    variant: {
      type: String,
      default: "outline",
      validator: (e) => ["outline", "solid", "mini"].includes(e)
    },
    // 自定义CSS类
    className: {
      type: String,
      default: ""
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      if (!t.name) return null;
      try {
        switch (t.library) {
          case "lucide":
            return jt(
              () => import("lucide-vue-next").then((i) => {
                const c = t.name.charAt(0).toUpperCase() + t.name.slice(1);
                return i[c] || i.HelpCircle;
              })
            );
          case "heroicons":
            return console.warn("Heroicons support is currently disabled due to build constraints"), null;
          case "tabler":
            return jt(
              () => import("@tabler/icons-vue").then((i) => {
                const c = "Icon" + t.name.split("-").map(
                  (d) => d.charAt(0).toUpperCase() + d.slice(1)
                ).join("");
                return i[c] || i.IconHelp;
              })
            );
          case "phosphor":
            return jt(
              () => import("@phosphor-icons/vue").then((i) => {
                const c = "Ph" + t.name.split("-").map(
                  (d) => d.charAt(0).toUpperCase() + d.slice(1)
                ).join("");
                return i[c] || i.PhQuestion;
              })
            );
          default:
            return null;
        }
      } catch {
        return console.warn(`Icon "${t.name}" not found in library "${t.library}"`), null;
      }
    }), n = C(() => t.library === "html" && t.html ? t.html : ""), r = A("");
    ir(async () => {
      var i;
      if (t.library === "feather" && t.name)
        try {
          const c = await import("feather-icons"), d = c.default || c, p = l(t.size);
          r.value = ((i = d.icons[t.name]) == null ? void 0 : i.toSvg({
            width: p,
            height: p,
            "stroke-width": t.strokeWidth
          })) || "";
        } catch {
          console.warn(`Feather icon "${t.name}" not found`), r.value = "";
        }
      else
        r.value = "";
    });
    const s = C(() => {
      const i = ["wc-icon"];
      return t.className && i.push(t.className), i;
    }), l = (i) => typeof i == "number" ? i : {
      xs: 16,
      sm: 20,
      md: 24,
      lg: 32,
      xl: 48
    }[i] || parseInt(i) || 24, o = C(() => {
      const i = {};
      if (t.color && t.color !== "currentColor" && (i.color = t.color), t.size) {
        const c = l(t.size);
        i.width = `${c}px`, i.height = `${c}px`;
      }
      return i;
    }), u = C(() => {
      const c = {
        size: l(t.size),
        color: t.color
      };
      return t.library === "lucide" && (c.strokeWidth = t.strokeWidth), t.library === "tabler" && (c.stroke = t.strokeWidth), c;
    });
    return (i, c) => a.value ? (m(), Se(ze(a.value), ot({
      key: 0,
      class: s.value,
      style: o.value
    }, u.value), null, 16, ["class", "style"])) : r.value ? (m(), y("span", {
      key: 1,
      class: T(s.value),
      style: ce(o.value),
      innerHTML: r.value
    }, null, 14, oi)) : n.value ? (m(), y("span", {
      key: 2,
      class: T(s.value),
      style: ce(o.value),
      innerHTML: n.value
    }, null, 14, ii)) : (m(), y("span", {
      key: 3,
      class: T(s.value),
      style: ce(o.value)
    }, [
      M(i.$slots, "default", {}, void 0, !0)
    ], 6));
  }
}, np = /* @__PURE__ */ me(ci, [["__scopeId", "data-v-135f7b18"]]);
var ht = { exports: {} }, vt = { exports: {} }, fe = {};
/** @license React v16.13.1
 * react-is.production.min.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var ma;
function ui() {
  if (ma) return fe;
  ma = 1;
  var e = typeof Symbol == "function" && Symbol.for, t = e ? Symbol.for("react.element") : 60103, a = e ? Symbol.for("react.portal") : 60106, n = e ? Symbol.for("react.fragment") : 60107, r = e ? Symbol.for("react.strict_mode") : 60108, s = e ? Symbol.for("react.profiler") : 60114, l = e ? Symbol.for("react.provider") : 60109, o = e ? Symbol.for("react.context") : 60110, u = e ? Symbol.for("react.async_mode") : 60111, i = e ? Symbol.for("react.concurrent_mode") : 60111, c = e ? Symbol.for("react.forward_ref") : 60112, d = e ? Symbol.for("react.suspense") : 60113, p = e ? Symbol.for("react.suspense_list") : 60120, h = e ? Symbol.for("react.memo") : 60115, v = e ? Symbol.for("react.lazy") : 60116, g = e ? Symbol.for("react.block") : 60121, x = e ? Symbol.for("react.fundamental") : 60117, $ = e ? Symbol.for("react.responder") : 60118, B = e ? Symbol.for("react.scope") : 60119;
  function S(w) {
    if (typeof w == "object" && w !== null) {
      var E = w.$$typeof;
      switch (E) {
        case t:
          switch (w = w.type, w) {
            case u:
            case i:
            case n:
            case s:
            case r:
            case d:
              return w;
            default:
              switch (w = w && w.$$typeof, w) {
                case o:
                case c:
                case v:
                case h:
                case l:
                  return w;
                default:
                  return E;
              }
          }
        case a:
          return E;
      }
    }
  }
  function k(w) {
    return S(w) === i;
  }
  return fe.AsyncMode = u, fe.ConcurrentMode = i, fe.ContextConsumer = o, fe.ContextProvider = l, fe.Element = t, fe.ForwardRef = c, fe.Fragment = n, fe.Lazy = v, fe.Memo = h, fe.Portal = a, fe.Profiler = s, fe.StrictMode = r, fe.Suspense = d, fe.isAsyncMode = function(w) {
    return k(w) || S(w) === u;
  }, fe.isConcurrentMode = k, fe.isContextConsumer = function(w) {
    return S(w) === o;
  }, fe.isContextProvider = function(w) {
    return S(w) === l;
  }, fe.isElement = function(w) {
    return typeof w == "object" && w !== null && w.$$typeof === t;
  }, fe.isForwardRef = function(w) {
    return S(w) === c;
  }, fe.isFragment = function(w) {
    return S(w) === n;
  }, fe.isLazy = function(w) {
    return S(w) === v;
  }, fe.isMemo = function(w) {
    return S(w) === h;
  }, fe.isPortal = function(w) {
    return S(w) === a;
  }, fe.isProfiler = function(w) {
    return S(w) === s;
  }, fe.isStrictMode = function(w) {
    return S(w) === r;
  }, fe.isSuspense = function(w) {
    return S(w) === d;
  }, fe.isValidElementType = function(w) {
    return typeof w == "string" || typeof w == "function" || w === n || w === i || w === s || w === r || w === d || w === p || typeof w == "object" && w !== null && (w.$$typeof === v || w.$$typeof === h || w.$$typeof === l || w.$$typeof === o || w.$$typeof === c || w.$$typeof === x || w.$$typeof === $ || w.$$typeof === B || w.$$typeof === g);
  }, fe.typeOf = S, fe;
}
var pe = {};
/** @license React v16.13.1
 * react-is.development.js
 *
 * Copyright (c) Facebook, Inc. and its affiliates.
 *
 * This source code is licensed under the MIT license found in the
 * LICENSE file in the root directory of this source tree.
 */
var ha;
function di() {
  return ha || (ha = 1, process.env.NODE_ENV !== "production" && function() {
    var e = typeof Symbol == "function" && Symbol.for, t = e ? Symbol.for("react.element") : 60103, a = e ? Symbol.for("react.portal") : 60106, n = e ? Symbol.for("react.fragment") : 60107, r = e ? Symbol.for("react.strict_mode") : 60108, s = e ? Symbol.for("react.profiler") : 60114, l = e ? Symbol.for("react.provider") : 60109, o = e ? Symbol.for("react.context") : 60110, u = e ? Symbol.for("react.async_mode") : 60111, i = e ? Symbol.for("react.concurrent_mode") : 60111, c = e ? Symbol.for("react.forward_ref") : 60112, d = e ? Symbol.for("react.suspense") : 60113, p = e ? Symbol.for("react.suspense_list") : 60120, h = e ? Symbol.for("react.memo") : 60115, v = e ? Symbol.for("react.lazy") : 60116, g = e ? Symbol.for("react.block") : 60121, x = e ? Symbol.for("react.fundamental") : 60117, $ = e ? Symbol.for("react.responder") : 60118, B = e ? Symbol.for("react.scope") : 60119;
    function S(L) {
      return typeof L == "string" || typeof L == "function" || // Note: its typeof might be other than 'symbol' or 'number' if it's a polyfill.
      L === n || L === i || L === s || L === r || L === d || L === p || typeof L == "object" && L !== null && (L.$$typeof === v || L.$$typeof === h || L.$$typeof === l || L.$$typeof === o || L.$$typeof === c || L.$$typeof === x || L.$$typeof === $ || L.$$typeof === B || L.$$typeof === g);
    }
    function k(L) {
      if (typeof L == "object" && L !== null) {
        var De = L.$$typeof;
        switch (De) {
          case t:
            var Je = L.type;
            switch (Je) {
              case u:
              case i:
              case n:
              case s:
              case r:
              case d:
                return Je;
              default:
                var Ue = Je && Je.$$typeof;
                switch (Ue) {
                  case o:
                  case c:
                  case v:
                  case h:
                  case l:
                    return Ue;
                  default:
                    return De;
                }
            }
          case a:
            return De;
        }
      }
    }
    var w = u, E = i, W = o, R = l, Y = t, N = c, O = n, H = v, Q = h, q = a, ne = s, V = r, K = d, ge = !1;
    function oe(L) {
      return ge || (ge = !0, console.warn("The ReactIs.isAsyncMode() alias has been deprecated, and will be removed in React 17+. Update your code to use ReactIs.isConcurrentMode() instead. It has the exact same API.")), P(L) || k(L) === u;
    }
    function P(L) {
      return k(L) === i;
    }
    function z(L) {
      return k(L) === o;
    }
    function Z(L) {
      return k(L) === l;
    }
    function U(L) {
      return typeof L == "object" && L !== null && L.$$typeof === t;
    }
    function J(L) {
      return k(L) === c;
    }
    function re(L) {
      return k(L) === n;
    }
    function ee(L) {
      return k(L) === v;
    }
    function ae(L) {
      return k(L) === h;
    }
    function se(L) {
      return k(L) === a;
    }
    function G(L) {
      return k(L) === s;
    }
    function le(L) {
      return k(L) === r;
    }
    function $e(L) {
      return k(L) === d;
    }
    pe.AsyncMode = w, pe.ConcurrentMode = E, pe.ContextConsumer = W, pe.ContextProvider = R, pe.Element = Y, pe.ForwardRef = N, pe.Fragment = O, pe.Lazy = H, pe.Memo = Q, pe.Portal = q, pe.Profiler = ne, pe.StrictMode = V, pe.Suspense = K, pe.isAsyncMode = oe, pe.isConcurrentMode = P, pe.isContextConsumer = z, pe.isContextProvider = Z, pe.isElement = U, pe.isForwardRef = J, pe.isFragment = re, pe.isLazy = ee, pe.isMemo = ae, pe.isPortal = se, pe.isProfiler = G, pe.isStrictMode = le, pe.isSuspense = $e, pe.isValidElementType = S, pe.typeOf = k;
  }()), pe;
}
var va;
function hn() {
  return va || (va = 1, process.env.NODE_ENV === "production" ? vt.exports = ui() : vt.exports = di()), vt.exports;
}
/*
object-assign
(c) Sindre Sorhus
@license MIT
*/
var Nt, ya;
function fi() {
  if (ya) return Nt;
  ya = 1;
  var e = Object.getOwnPropertySymbols, t = Object.prototype.hasOwnProperty, a = Object.prototype.propertyIsEnumerable;
  function n(s) {
    if (s == null)
      throw new TypeError("Object.assign cannot be called with null or undefined");
    return Object(s);
  }
  function r() {
    try {
      if (!Object.assign)
        return !1;
      var s = new String("abc");
      if (s[5] = "de", Object.getOwnPropertyNames(s)[0] === "5")
        return !1;
      for (var l = {}, o = 0; o < 10; o++)
        l["_" + String.fromCharCode(o)] = o;
      var u = Object.getOwnPropertyNames(l).map(function(c) {
        return l[c];
      });
      if (u.join("") !== "0123456789")
        return !1;
      var i = {};
      return "abcdefghijklmnopqrst".split("").forEach(function(c) {
        i[c] = c;
      }), Object.keys(Object.assign({}, i)).join("") === "abcdefghijklmnopqrst";
    } catch {
      return !1;
    }
  }
  return Nt = r() ? Object.assign : function(s, l) {
    for (var o, u = n(s), i, c = 1; c < arguments.length; c++) {
      o = Object(arguments[c]);
      for (var d in o)
        t.call(o, d) && (u[d] = o[d]);
      if (e) {
        i = e(o);
        for (var p = 0; p < i.length; p++)
          a.call(o, i[p]) && (u[i[p]] = o[i[p]]);
      }
    }
    return u;
  }, Nt;
}
var Tt, ga;
function At() {
  if (ga) return Tt;
  ga = 1;
  var e = "SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED";
  return Tt = e, Tt;
}
var Et, ba;
function vn() {
  return ba || (ba = 1, Et = Function.call.bind(Object.prototype.hasOwnProperty)), Et;
}
var It, wa;
function pi() {
  if (wa) return It;
  wa = 1;
  var e = function() {
  };
  if (process.env.NODE_ENV !== "production") {
    var t = /* @__PURE__ */ At(), a = {}, n = /* @__PURE__ */ vn();
    e = function(s) {
      var l = "Warning: " + s;
      typeof console < "u" && console.error(l);
      try {
        throw new Error(l);
      } catch {
      }
    };
  }
  function r(s, l, o, u, i) {
    if (process.env.NODE_ENV !== "production") {
      for (var c in s)
        if (n(s, c)) {
          var d;
          try {
            if (typeof s[c] != "function") {
              var p = Error(
                (u || "React class") + ": " + o + " type `" + c + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + typeof s[c] + "`.This often happens because of typos such as `PropTypes.function` instead of `PropTypes.func`."
              );
              throw p.name = "Invariant Violation", p;
            }
            d = s[c](l, c, u, o, null, t);
          } catch (v) {
            d = v;
          }
          if (d && !(d instanceof Error) && e(
            (u || "React class") + ": type specification of " + o + " `" + c + "` is invalid; the type checker function must return `null` or an `Error` but returned a " + typeof d + ". You may have forgotten to pass an argument to the type checker creator (arrayOf, instanceOf, objectOf, oneOf, oneOfType, and shape all require an argument)."
          ), d instanceof Error && !(d.message in a)) {
            a[d.message] = !0;
            var h = i ? i() : "";
            e(
              "Failed " + o + " type: " + d.message + (h ?? "")
            );
          }
        }
    }
  }
  return r.resetWarningCache = function() {
    process.env.NODE_ENV !== "production" && (a = {});
  }, It = r, It;
}
var Bt, xa;
function mi() {
  if (xa) return Bt;
  xa = 1;
  var e = hn(), t = fi(), a = /* @__PURE__ */ At(), n = /* @__PURE__ */ vn(), r = /* @__PURE__ */ pi(), s = function() {
  };
  process.env.NODE_ENV !== "production" && (s = function(o) {
    var u = "Warning: " + o;
    typeof console < "u" && console.error(u);
    try {
      throw new Error(u);
    } catch {
    }
  });
  function l() {
    return null;
  }
  return Bt = function(o, u) {
    var i = typeof Symbol == "function" && Symbol.iterator, c = "@@iterator";
    function d(P) {
      var z = P && (i && P[i] || P[c]);
      if (typeof z == "function")
        return z;
    }
    var p = "<<anonymous>>", h = {
      array: $("array"),
      bigint: $("bigint"),
      bool: $("boolean"),
      func: $("function"),
      number: $("number"),
      object: $("object"),
      string: $("string"),
      symbol: $("symbol"),
      any: B(),
      arrayOf: S,
      element: k(),
      elementType: w(),
      instanceOf: E,
      node: N(),
      objectOf: R,
      oneOf: W,
      oneOfType: Y,
      shape: H,
      exact: Q
    };
    function v(P, z) {
      return P === z ? P !== 0 || 1 / P === 1 / z : P !== P && z !== z;
    }
    function g(P, z) {
      this.message = P, this.data = z && typeof z == "object" ? z : {}, this.stack = "";
    }
    g.prototype = Error.prototype;
    function x(P) {
      if (process.env.NODE_ENV !== "production")
        var z = {}, Z = 0;
      function U(re, ee, ae, se, G, le, $e) {
        if (se = se || p, le = le || ae, $e !== a) {
          if (u) {
            var L = new Error(
              "Calling PropTypes validators directly is not supported by the `prop-types` package. Use `PropTypes.checkPropTypes()` to call them. Read more at http://fb.me/use-check-prop-types"
            );
            throw L.name = "Invariant Violation", L;
          } else if (process.env.NODE_ENV !== "production" && typeof console < "u") {
            var De = se + ":" + ae;
            !z[De] && // Avoid spamming the console because they are often not actionable except for lib authors
            Z < 3 && (s(
              "You are manually calling a React.PropTypes validation function for the `" + le + "` prop on `" + se + "`. This is deprecated and will throw in the standalone `prop-types` package. You may be seeing this warning due to a third-party PropTypes library. See https://fb.me/react-warning-dont-call-proptypes for details."
            ), z[De] = !0, Z++);
          }
        }
        return ee[ae] == null ? re ? ee[ae] === null ? new g("The " + G + " `" + le + "` is marked as required " + ("in `" + se + "`, but its value is `null`.")) : new g("The " + G + " `" + le + "` is marked as required in " + ("`" + se + "`, but its value is `undefined`.")) : null : P(ee, ae, se, G, le);
      }
      var J = U.bind(null, !1);
      return J.isRequired = U.bind(null, !0), J;
    }
    function $(P) {
      function z(Z, U, J, re, ee, ae) {
        var se = Z[U], G = V(se);
        if (G !== P) {
          var le = K(se);
          return new g(
            "Invalid " + re + " `" + ee + "` of type " + ("`" + le + "` supplied to `" + J + "`, expected ") + ("`" + P + "`."),
            { expectedType: P }
          );
        }
        return null;
      }
      return x(z);
    }
    function B() {
      return x(l);
    }
    function S(P) {
      function z(Z, U, J, re, ee) {
        if (typeof P != "function")
          return new g("Property `" + ee + "` of component `" + J + "` has invalid PropType notation inside arrayOf.");
        var ae = Z[U];
        if (!Array.isArray(ae)) {
          var se = V(ae);
          return new g("Invalid " + re + " `" + ee + "` of type " + ("`" + se + "` supplied to `" + J + "`, expected an array."));
        }
        for (var G = 0; G < ae.length; G++) {
          var le = P(ae, G, J, re, ee + "[" + G + "]", a);
          if (le instanceof Error)
            return le;
        }
        return null;
      }
      return x(z);
    }
    function k() {
      function P(z, Z, U, J, re) {
        var ee = z[Z];
        if (!o(ee)) {
          var ae = V(ee);
          return new g("Invalid " + J + " `" + re + "` of type " + ("`" + ae + "` supplied to `" + U + "`, expected a single ReactElement."));
        }
        return null;
      }
      return x(P);
    }
    function w() {
      function P(z, Z, U, J, re) {
        var ee = z[Z];
        if (!e.isValidElementType(ee)) {
          var ae = V(ee);
          return new g("Invalid " + J + " `" + re + "` of type " + ("`" + ae + "` supplied to `" + U + "`, expected a single ReactElement type."));
        }
        return null;
      }
      return x(P);
    }
    function E(P) {
      function z(Z, U, J, re, ee) {
        if (!(Z[U] instanceof P)) {
          var ae = P.name || p, se = oe(Z[U]);
          return new g("Invalid " + re + " `" + ee + "` of type " + ("`" + se + "` supplied to `" + J + "`, expected ") + ("instance of `" + ae + "`."));
        }
        return null;
      }
      return x(z);
    }
    function W(P) {
      if (!Array.isArray(P))
        return process.env.NODE_ENV !== "production" && (arguments.length > 1 ? s(
          "Invalid arguments supplied to oneOf, expected an array, got " + arguments.length + " arguments. A common mistake is to write oneOf(x, y, z) instead of oneOf([x, y, z])."
        ) : s("Invalid argument supplied to oneOf, expected an array.")), l;
      function z(Z, U, J, re, ee) {
        for (var ae = Z[U], se = 0; se < P.length; se++)
          if (v(ae, P[se]))
            return null;
        var G = JSON.stringify(P, function($e, L) {
          var De = K(L);
          return De === "symbol" ? String(L) : L;
        });
        return new g("Invalid " + re + " `" + ee + "` of value `" + String(ae) + "` " + ("supplied to `" + J + "`, expected one of " + G + "."));
      }
      return x(z);
    }
    function R(P) {
      function z(Z, U, J, re, ee) {
        if (typeof P != "function")
          return new g("Property `" + ee + "` of component `" + J + "` has invalid PropType notation inside objectOf.");
        var ae = Z[U], se = V(ae);
        if (se !== "object")
          return new g("Invalid " + re + " `" + ee + "` of type " + ("`" + se + "` supplied to `" + J + "`, expected an object."));
        for (var G in ae)
          if (n(ae, G)) {
            var le = P(ae, G, J, re, ee + "." + G, a);
            if (le instanceof Error)
              return le;
          }
        return null;
      }
      return x(z);
    }
    function Y(P) {
      if (!Array.isArray(P))
        return process.env.NODE_ENV !== "production" && s("Invalid argument supplied to oneOfType, expected an instance of array."), l;
      for (var z = 0; z < P.length; z++) {
        var Z = P[z];
        if (typeof Z != "function")
          return s(
            "Invalid argument supplied to oneOfType. Expected an array of check functions, but received " + ge(Z) + " at index " + z + "."
          ), l;
      }
      function U(J, re, ee, ae, se) {
        for (var G = [], le = 0; le < P.length; le++) {
          var $e = P[le], L = $e(J, re, ee, ae, se, a);
          if (L == null)
            return null;
          L.data && n(L.data, "expectedType") && G.push(L.data.expectedType);
        }
        var De = G.length > 0 ? ", expected one of type [" + G.join(", ") + "]" : "";
        return new g("Invalid " + ae + " `" + se + "` supplied to " + ("`" + ee + "`" + De + "."));
      }
      return x(U);
    }
    function N() {
      function P(z, Z, U, J, re) {
        return q(z[Z]) ? null : new g("Invalid " + J + " `" + re + "` supplied to " + ("`" + U + "`, expected a ReactNode."));
      }
      return x(P);
    }
    function O(P, z, Z, U, J) {
      return new g(
        (P || "React class") + ": " + z + " type `" + Z + "." + U + "` is invalid; it must be a function, usually from the `prop-types` package, but received `" + J + "`."
      );
    }
    function H(P) {
      function z(Z, U, J, re, ee) {
        var ae = Z[U], se = V(ae);
        if (se !== "object")
          return new g("Invalid " + re + " `" + ee + "` of type `" + se + "` " + ("supplied to `" + J + "`, expected `object`."));
        for (var G in P) {
          var le = P[G];
          if (typeof le != "function")
            return O(J, re, ee, G, K(le));
          var $e = le(ae, G, J, re, ee + "." + G, a);
          if ($e)
            return $e;
        }
        return null;
      }
      return x(z);
    }
    function Q(P) {
      function z(Z, U, J, re, ee) {
        var ae = Z[U], se = V(ae);
        if (se !== "object")
          return new g("Invalid " + re + " `" + ee + "` of type `" + se + "` " + ("supplied to `" + J + "`, expected `object`."));
        var G = t({}, Z[U], P);
        for (var le in G) {
          var $e = P[le];
          if (n(P, le) && typeof $e != "function")
            return O(J, re, ee, le, K($e));
          if (!$e)
            return new g(
              "Invalid " + re + " `" + ee + "` key `" + le + "` supplied to `" + J + "`.\nBad object: " + JSON.stringify(Z[U], null, "  ") + `
Valid keys: ` + JSON.stringify(Object.keys(P), null, "  ")
            );
          var L = $e(ae, le, J, re, ee + "." + le, a);
          if (L)
            return L;
        }
        return null;
      }
      return x(z);
    }
    function q(P) {
      switch (typeof P) {
        case "number":
        case "string":
        case "undefined":
          return !0;
        case "boolean":
          return !P;
        case "object":
          if (Array.isArray(P))
            return P.every(q);
          if (P === null || o(P))
            return !0;
          var z = d(P);
          if (z) {
            var Z = z.call(P), U;
            if (z !== P.entries) {
              for (; !(U = Z.next()).done; )
                if (!q(U.value))
                  return !1;
            } else
              for (; !(U = Z.next()).done; ) {
                var J = U.value;
                if (J && !q(J[1]))
                  return !1;
              }
          } else
            return !1;
          return !0;
        default:
          return !1;
      }
    }
    function ne(P, z) {
      return P === "symbol" ? !0 : z ? z["@@toStringTag"] === "Symbol" || typeof Symbol == "function" && z instanceof Symbol : !1;
    }
    function V(P) {
      var z = typeof P;
      return Array.isArray(P) ? "array" : P instanceof RegExp ? "object" : ne(z, P) ? "symbol" : z;
    }
    function K(P) {
      if (typeof P > "u" || P === null)
        return "" + P;
      var z = V(P);
      if (z === "object") {
        if (P instanceof Date)
          return "date";
        if (P instanceof RegExp)
          return "regexp";
      }
      return z;
    }
    function ge(P) {
      var z = K(P);
      switch (z) {
        case "array":
        case "object":
          return "an " + z;
        case "boolean":
        case "date":
        case "regexp":
          return "a " + z;
        default:
          return z;
      }
    }
    function oe(P) {
      return !P.constructor || !P.constructor.name ? p : P.constructor.name;
    }
    return h.checkPropTypes = r, h.resetWarningCache = r.resetWarningCache, h.PropTypes = h, h;
  }, Bt;
}
var Rt, ka;
function hi() {
  if (ka) return Rt;
  ka = 1;
  var e = /* @__PURE__ */ At();
  function t() {
  }
  function a() {
  }
  return a.resetWarningCache = t, Rt = function() {
    function n(l, o, u, i, c, d) {
      if (d !== e) {
        var p = new Error(
          "Calling PropTypes validators directly is not supported by the `prop-types` package. Use PropTypes.checkPropTypes() to call them. Read more at http://fb.me/use-check-prop-types"
        );
        throw p.name = "Invariant Violation", p;
      }
    }
    n.isRequired = n;
    function r() {
      return n;
    }
    var s = {
      array: n,
      bigint: n,
      bool: n,
      func: n,
      number: n,
      object: n,
      string: n,
      symbol: n,
      any: n,
      arrayOf: r,
      element: n,
      elementType: n,
      instanceOf: r,
      node: n,
      objectOf: r,
      oneOf: r,
      oneOfType: r,
      shape: r,
      exact: r,
      checkPropTypes: a,
      resetWarningCache: t
    };
    return s.PropTypes = s, s;
  }, Rt;
}
var _a;
function vi() {
  if (_a) return ht.exports;
  if (_a = 1, process.env.NODE_ENV !== "production") {
    var e = hn(), t = !0;
    ht.exports = /* @__PURE__ */ mi()(e.isElement, t);
  } else
    ht.exports = /* @__PURE__ */ hi()();
  return ht.exports;
}
var yi = /* @__PURE__ */ vi();
const Be = /* @__PURE__ */ gr(yi), gi = (e, t, a) => {
  switch (e) {
    case "lucide":
      return yt(
        () => import("lucide-react").then((n) => {
          const r = t.charAt(0).toUpperCase() + t.slice(1);
          return { default: n[r] || n.HelpCircle };
        })
      );
    case "heroicons":
      return console.warn("Heroicons support is currently disabled due to build constraints"), null;
    case "tabler":
      return yt(
        () => import("@tabler/icons-react").then((n) => {
          const r = "Icon" + t.split("-").map(
            (s) => s.charAt(0).toUpperCase() + s.slice(1)
          ).join("");
          return { default: n[r] || n.IconHelp };
        })
      );
    case "phosphor":
      return yt(
        () => import("@phosphor-icons/react").then((n) => {
          const r = t.split("-").map(
            (s) => s.charAt(0).toUpperCase() + s.slice(1)
          ).join("");
          return { default: n[r] || n.Question };
        })
      );
    default:
      return null;
  }
}, Pt = (e) => typeof e == "number" ? e : {
  xs: 16,
  sm: 20,
  md: 24,
  lg: 32,
  xl: 48
}[e] || parseInt(e) || 24, bi = ({
  library: e = "lucide",
  name: t = "",
  html: a = "",
  size: n = 24,
  color: r = "currentColor",
  strokeWidth: s = 2,
  variant: l = "outline",
  className: o = "",
  children: u,
  ...i
}) => {
  const c = Oe(() => {
    if (!t) return null;
    try {
      return gi(e, t, l);
    } catch {
      return console.warn(`Icon "${t}" not found in library "${e}"`), null;
    }
  }, [e, t, l]), d = Oe(() => e === "feather" && t ? yt(async () => {
    var x;
    try {
      const $ = await import("feather-icons"), B = $.default || $, S = Pt(n), k = ((x = B.icons[t]) == null ? void 0 : x.toSvg({
        width: S,
        height: S,
        "stroke-width": s
      })) || "";
      return {
        default: ({ className: w, style: E }) => /* @__PURE__ */ f.jsx(
          "span",
          {
            className: w,
            style: E,
            dangerouslySetInnerHTML: { __html: k }
          }
        )
      };
    } catch {
      return console.warn(`Feather icon "${t}" not found`), { default: () => /* @__PURE__ */ f.jsx("span", {}) };
    }
  }) : null, [e, t, n, s]), p = Oe(() => e === "html" && a ? a : "", [e, a]), h = Oe(() => {
    const x = {};
    if (r && r !== "currentColor" && (x.color = r), n) {
      const $ = Pt(n);
      x.width = `${$}px`, x.height = `${$}px`;
    }
    return x;
  }, [r, n]), v = Oe(() => {
    const $ = {
      size: Pt(n),
      color: r,
      ...i
    };
    return e === "lucide" && ($.strokeWidth = s), e === "tabler" && ($.stroke = s), $;
  }, [e, n, r, s, i]), g = `wc-icon ${o}`.trim();
  return d ? /* @__PURE__ */ f.jsx(aa, { fallback: /* @__PURE__ */ f.jsx("span", { className: g, style: h }), children: /* @__PURE__ */ f.jsx(
    d,
    {
      className: g,
      style: h
    }
  ) }) : c ? /* @__PURE__ */ f.jsx(aa, { fallback: /* @__PURE__ */ f.jsx("span", { className: g, style: h }), children: /* @__PURE__ */ f.jsx(
    c,
    {
      className: g,
      style: h,
      ...v
    }
  ) }) : p ? /* @__PURE__ */ f.jsx(
    "span",
    {
      className: g,
      style: h,
      dangerouslySetInnerHTML: { __html: p }
    }
  ) : /* @__PURE__ */ f.jsx("span", { className: g, style: h, children: u });
};
bi.propTypes = {
  library: Be.oneOf(["lucide", "heroicons", "tabler", "phosphor", "feather", "html"]),
  name: Be.string,
  html: Be.string,
  size: Be.oneOfType([Be.string, Be.number]),
  color: Be.string,
  strokeWidth: Be.oneOfType([Be.string, Be.number]),
  variant: Be.oneOf(["outline", "solid", "mini"]),
  className: Be.string,
  children: Be.node
};
const wi = ["disabled"], xi = { class: "icon-button-icon" }, ki = ["innerHTML"], _i = {
  __name: "IconButton",
  props: {
    color: {
      type: String,
      default: "default",
      validator: (e) => ["default", "primary", "secondary", "error", "warning", "info", "success"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    edge: {
      type: String,
      default: !1,
      validator: (e) => [!1, "start", "end"].includes(e)
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    icon: {
      type: String,
      default: ""
    }
  },
  emits: ["click"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(!1), s = C(() => {
      const i = ["wc-icon-button"];
      return i.push(`wc-icon-button--${a.color}`), i.push(`wc-icon-button--${a.size}`), a.edge && i.push(`wc-icon-button--edge-${a.edge}`), a.disabled && i.push("wc-icon-button--disabled"), r.value && i.push("wc-icon-button--focused"), i;
    }), l = (i) => {
      a.disabled || n("click", i);
    }, o = () => {
      r.value = !0;
    }, u = () => {
      r.value = !1;
    };
    return (i, c) => (m(), y("button", {
      class: T(s.value),
      disabled: e.disabled,
      onClick: l,
      onFocus: o,
      onBlur: u
    }, [
      _("span", xi, [
        M(i.$slots, "default", {}, () => [
          e.icon ? (m(), y("span", {
            key: 0,
            innerHTML: e.icon
          }, null, 8, ki)) : j("", !0)
        ], !0)
      ])
    ], 42, wi));
  }
}, rp = /* @__PURE__ */ me(_i, [["__scopeId", "data-v-8a067fed"]]), Ci = {
  name: "ImageGallery",
  props: {
    images: {
      type: Array,
      default: () => []
    },
    title: {
      type: String,
      default: ""
    },
    layout: {
      type: String,
      default: "grid",
      validator: (e) => ["grid", "masonry", "carousel"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg", "xl"].includes(e)
    },
    columns: {
      type: Number,
      default: 3
    },
    gap: {
      type: Number,
      default: 16
    },
    showInfo: {
      type: Boolean,
      default: !0
    },
    showCount: {
      type: Boolean,
      default: !0
    },
    showDownload: {
      type: Boolean,
      default: !1
    },
    showPagination: {
      type: Boolean,
      default: !1
    },
    itemsPerPage: {
      type: Number,
      default: 12
    },
    lazyLoad: {
      type: Boolean,
      default: !0
    },
    loading: {
      type: Boolean,
      default: !1
    }
  },
  emits: ["select", "download", "lightbox-open", "lightbox-close"],
  setup(e, { emit: t }) {
    const a = A(-1), n = A(!1), r = A(0), s = A(1), l = A({}), o = C(() => ({
      gridTemplateColumns: `repeat(${e.columns}, 1fr)`,
      gap: `${e.gap}px`
    })), u = C(() => e.showPagination ? Math.ceil(e.images.length / e.itemsPerPage) : 1), i = C(() => {
      if (!e.showPagination) return e.images;
      const w = (s.value - 1) * e.itemsPerPage, E = w + e.itemsPerPage;
      return e.images.slice(w, E);
    }), c = C(() => e.images[r.value]), d = (w) => {
      a.value = w, t("select", { index: w, image: e.images[w] });
    }, p = (w) => {
      r.value = w, n.value = !0, t("lightbox-open", { index: w, image: e.images[w] }), document.body.style.overflow = "hidden";
    }, h = () => {
      n.value = !1, t("lightbox-close"), document.body.style.overflow = "";
    }, v = () => {
      r.value > 0 && r.value--;
    }, g = () => {
      r.value < e.images.length - 1 && r.value++;
    }, x = (w) => {
      t("download", w);
      const E = document.createElement("a");
      E.href = w.src, E.download = w.title || "image", document.body.appendChild(E), E.click(), document.body.removeChild(E);
    }, $ = (w) => {
      s.value = w;
    }, B = (w) => {
      l.value[w] = !0;
    }, S = (w) => {
      console.warn(`Failed to load image at index ${w}`);
    }, k = (w) => {
      if (n.value)
        switch (w.key) {
          case "ArrowLeft":
            v();
            break;
          case "ArrowRight":
            g();
            break;
          case "Escape":
            h();
            break;
        }
    };
    return Pe(() => {
      document.addEventListener("keydown", k);
    }), Ze(() => {
      document.removeEventListener("keydown", k), document.body.style.overflow = "";
    }), {
      selectedIndex: a,
      lightboxVisible: n,
      lightboxIndex: r,
      currentPage: s,
      loadedImages: l,
      gridStyle: o,
      totalPages: u,
      paginatedImages: i,
      currentLightboxImage: c,
      selectImage: d,
      openLightbox: p,
      closeLightbox: h,
      previousImage: v,
      nextImage: g,
      downloadImage: x,
      goToPage: $,
      onImageLoad: B,
      onImageError: S
    };
  }
}, Si = {
  key: 0,
  class: "gallery-header"
}, $i = { class: "gallery-title" }, ji = {
  key: 0,
  class: "gallery-count"
}, Ni = ["aria-label", "onClick", "onKeydown"], Ti = { class: "gallery-image-container" }, Ei = ["src", "alt", "loading", "onLoad", "onError"], Ii = {
  key: 0,
  class: "gallery-image-placeholder"
}, Bi = { class: "gallery-overlay" }, Ri = { class: "gallery-overlay-content" }, Pi = ["aria-label", "onClick"], Di = ["aria-label", "onClick"], Vi = {
  key: 1,
  class: "gallery-info"
}, Mi = {
  key: 0,
  class: "gallery-info-title"
}, Oi = {
  key: 1,
  class: "gallery-info-description"
}, Ai = {
  key: 1,
  class: "gallery-pagination"
}, Li = ["disabled"], zi = { class: "gallery-page-info" }, Fi = ["disabled"], qi = { class: "gallery-lightbox-image-container" }, Wi = ["src", "alt"], Hi = { class: "gallery-lightbox-info" }, Ui = {
  key: 0,
  class: "gallery-lightbox-title"
}, Yi = {
  key: 1,
  class: "gallery-lightbox-description"
}, Gi = { class: "gallery-lightbox-navigation" }, Ki = ["disabled"], Ji = { class: "gallery-lightbox-counter" }, Xi = ["disabled"];
function Qi(e, t, a, n, r, s) {
  var l, o, u, i;
  return m(), y("div", {
    class: T(["image-gallery", [
      `gallery-layout-${a.layout}`,
      `gallery-size-${a.size}`,
      a.loading && "gallery-loading"
    ]])
  }, [
    a.title || e.$slots.title ? (m(), y("div", Si, [
      M(e.$slots, "title", {}, () => [
        _("h2", $i, I(a.title), 1)
      ], !0),
      a.showCount ? (m(), y("div", ji, I(a.images.length) + " 张图片 ", 1)) : j("", !0)
    ])) : j("", !0),
    _("div", {
      class: "gallery-grid",
      style: ce(n.gridStyle)
    }, [
      (m(!0), y(ke, null, Ce(n.paginatedImages, (c, d) => (m(), y("div", {
        key: c.id || d,
        class: T(["gallery-item", { "gallery-item-selected": n.selectedIndex === d }]),
        tabindex: 0,
        role: "button",
        "aria-label": `查看图片 ${d + 1}: ${c.alt || c.title || "无描述"}`,
        onClick: (p) => n.selectImage(d),
        onKeydown: [
          We((p) => n.selectImage(d), ["enter"]),
          We(Ae((p) => n.selectImage(d), ["prevent"]), ["space"])
        ]
      }, [
        _("div", Ti, [
          _("img", {
            src: c.thumbnail || c.src,
            alt: c.alt || c.title,
            class: "gallery-image",
            loading: a.lazyLoad ? "lazy" : "eager",
            onLoad: (p) => n.onImageLoad(d),
            onError: (p) => n.onImageError(d)
          }, null, 40, Ei),
          !n.loadedImages[d] && a.loading ? (m(), y("div", Ii, t[8] || (t[8] = [
            _("div", { class: "gallery-loading-spinner" }, null, -1)
          ]))) : j("", !0),
          _("div", Bi, [
            _("div", Ri, [
              _("button", {
                class: "gallery-action-btn gallery-view-btn",
                "aria-label": `在灯箱中查看图片 ${d + 1}`,
                onClick: Ae((p) => n.openLightbox(d), ["stop"])
              }, " 👁️ ", 8, Pi),
              a.showDownload ? (m(), y("button", {
                key: 0,
                class: "gallery-action-btn gallery-download-btn",
                "aria-label": `下载图片 ${d + 1}`,
                onClick: Ae((p) => n.downloadImage(c), ["stop"])
              }, " 📥 ", 8, Di)) : j("", !0)
            ])
          ]),
          a.showInfo ? (m(), y("div", Vi, [
            c.title ? (m(), y("div", Mi, I(c.title), 1)) : j("", !0),
            c.description ? (m(), y("div", Oi, I(c.description), 1)) : j("", !0)
          ])) : j("", !0)
        ])
      ], 42, Ni))), 128))
    ], 4),
    a.showPagination && n.totalPages > 1 ? (m(), y("div", Ai, [
      _("button", {
        class: "gallery-page-btn",
        disabled: n.currentPage === 1,
        onClick: t[0] || (t[0] = (c) => n.goToPage(n.currentPage - 1))
      }, " 上一页 ", 8, Li),
      _("span", zi, " 第 " + I(n.currentPage) + " 页,共 " + I(n.totalPages) + " 页 ", 1),
      _("button", {
        class: "gallery-page-btn",
        disabled: n.currentPage === n.totalPages,
        onClick: t[1] || (t[1] = (c) => n.goToPage(n.currentPage + 1))
      }, " 下一页 ", 8, Fi)
    ])) : j("", !0),
    (m(), Se(ct, { to: "body" }, [
      n.lightboxVisible ? (m(), y("div", {
        key: 0,
        class: "gallery-lightbox",
        tabindex: "-1",
        onClick: t[6] || (t[6] = (...c) => n.closeLightbox && n.closeLightbox(...c)),
        onKeydown: t[7] || (t[7] = We((...c) => n.closeLightbox && n.closeLightbox(...c), ["esc"]))
      }, [
        _("div", {
          class: "gallery-lightbox-content",
          onClick: t[5] || (t[5] = Ae(() => {
          }, ["stop"]))
        }, [
          _("button", {
            class: "gallery-lightbox-close",
            "aria-label": "关闭灯箱",
            onClick: t[2] || (t[2] = (...c) => n.closeLightbox && n.closeLightbox(...c))
          }, " ✕ "),
          _("div", qi, [
            _("img", {
              src: (l = n.currentLightboxImage) == null ? void 0 : l.src,
              alt: (o = n.currentLightboxImage) == null ? void 0 : o.alt,
              class: "gallery-lightbox-image"
            }, null, 8, Wi)
          ]),
          _("div", Hi, [
            (u = n.currentLightboxImage) != null && u.title ? (m(), y("h3", Ui, I(n.currentLightboxImage.title), 1)) : j("", !0),
            (i = n.currentLightboxImage) != null && i.description ? (m(), y("p", Yi, I(n.currentLightboxImage.description), 1)) : j("", !0)
          ]),
          _("div", Gi, [
            _("button", {
              class: "gallery-lightbox-nav gallery-lightbox-prev",
              disabled: n.lightboxIndex === 0,
              "aria-label": "上一张图片",
              onClick: t[3] || (t[3] = (...c) => n.previousImage && n.previousImage(...c))
            }, " ‹ ", 8, Ki),
            _("span", Ji, I(n.lightboxIndex + 1) + " / " + I(a.images.length), 1),
            _("button", {
              class: "gallery-lightbox-nav gallery-lightbox-next",
              disabled: n.lightboxIndex === a.images.length - 1,
              "aria-label": "下一张图片",
              onClick: t[4] || (t[4] = (...c) => n.nextImage && n.nextImage(...c))
            }, " › ", 8, Xi)
          ])
        ])
      ], 32)) : j("", !0)
    ]))
  ], 2);
}
const sp = /* @__PURE__ */ me(Ci, [["render", Qi], ["__scopeId", "data-v-7a2ed0bf"]]), Zi = ({
  images: e = [],
  title: t = "",
  layout: a = "grid",
  // grid | masonry | carousel (only grid implemented)
  size: n = "md",
  // sm | md | lg | xl (affects aspect ratio)
  columns: r = 3,
  gap: s = 16,
  showInfo: l = !0,
  showCount: o = !0,
  showDownload: u = !1,
  showPagination: i = !1,
  itemsPerPage: c = 12,
  lazyLoad: d = !0,
  loading: p = !1,
  className: h = "",
  style: v = {},
  onSelect: g,
  onDownload: x,
  onLightboxOpen: $,
  onLightboxClose: B,
  ...S
}) => {
  const [k, w] = te(-1), [E, W] = te(1), R = i ? Math.ceil(e.length / c) : 1, Y = { sm: "75%", md: "66.67%", lg: "56.25%", xl: "50%" }, N = i ? e.slice((E - 1) * c, E * c) : e, O = (V) => {
    const K = i ? (E - 1) * c + V : V;
    w(K);
    const ge = e[K];
    g == null || g({ index: K, image: ge }), $ == null || $({ index: K, image: ge });
  }, H = (V) => {
    x == null || x(V);
    const K = document.createElement("a");
    K.href = V.src, K.download = V.title || "image", document.body.appendChild(K), K.click(), document.body.removeChild(K);
  }, Q = () => {
    w(-1), B == null || B();
  }, q = () => w((V) => V > 0 ? V - 1 : V), ne = () => w((V) => V < e.length - 1 ? V + 1 : V);
  return ve(() => {
    const V = (K) => {
      K.key === "Escape" && Q(), k !== -1 && (K.key === "ArrowLeft" && q(), K.key === "ArrowRight" && ne());
    };
    return window.addEventListener("keydown", V), () => window.removeEventListener("keydown", V);
  }, [k]), /* @__PURE__ */ f.jsxs("div", { className: [
    "image-gallery",
    `gallery-layout-${a}`,
    `gallery-size-${n}`,
    p && "gallery-loading",
    h
  ].filter(Boolean).join(" "), style: v, ...S, children: [
    (t || o) && /* @__PURE__ */ f.jsxs("div", { className: "gallery-header", children: [
      t && /* @__PURE__ */ f.jsx("h2", { className: "gallery-title", children: t }),
      o && /* @__PURE__ */ f.jsxs("div", { className: "gallery-count", children: [
        e.length,
        " 张图片"
      ] })
    ] }),
    /* @__PURE__ */ f.jsx(
      "div",
      {
        className: "gallery-grid",
        style: a === "grid" ? { gridTemplateColumns: `repeat(${r},1fr)`, gap: s } : a === "masonry" ? { columnCount: r, columnGap: s } : { gap: s },
        children: N.map((V, K) => /* @__PURE__ */ f.jsxs(
          "div",
          {
            className: "gallery-item",
            onClick: () => O(K),
            tabIndex: 0,
            role: "button",
            "aria-label": `查看图片 ${K + 1}`,
            children: [
              /* @__PURE__ */ f.jsxs("div", { className: "gallery-image-container", style: { paddingBottom: Y[n] }, children: [
                /* @__PURE__ */ f.jsx(
                  "img",
                  {
                    src: V.thumbnail || V.src,
                    alt: V.alt || V.title,
                    className: "gallery-image",
                    loading: d ? "lazy" : "eager"
                  }
                ),
                /* @__PURE__ */ f.jsx("div", { className: "gallery-overlay", children: /* @__PURE__ */ f.jsxs("div", { className: "gallery-overlay-content", children: [
                  /* @__PURE__ */ f.jsx(
                    "button",
                    {
                      className: "gallery-action-btn gallery-view-btn",
                      "aria-label": `在灯箱中查看图片 ${K + 1}`,
                      onClick: (ge) => {
                        ge.stopPropagation(), O(K);
                      },
                      children: "👁️"
                    }
                  ),
                  u && /* @__PURE__ */ f.jsx(
                    "button",
                    {
                      className: "gallery-action-btn gallery-download-btn",
                      "aria-label": `下载图片 ${K + 1}`,
                      onClick: (ge) => {
                        ge.stopPropagation(), H(V);
                      },
                      children: "📥"
                    }
                  )
                ] }) })
              ] }),
              l && (V.title || V.description) && /* @__PURE__ */ f.jsxs("div", { className: "gallery-info", children: [
                V.title && /* @__PURE__ */ f.jsx("div", { className: "gallery-info-title", children: V.title }),
                V.description && /* @__PURE__ */ f.jsx("div", { className: "gallery-info-description", children: V.description })
              ] })
            ]
          },
          V.id || K
        ))
      }
    ),
    i && R > 1 && /* @__PURE__ */ f.jsxs("div", { className: "gallery-pagination", children: [
      /* @__PURE__ */ f.jsx("button", { className: "gallery-page-btn", disabled: E === 1, onClick: () => W((V) => V - 1), children: "上一页" }),
      /* @__PURE__ */ f.jsxs("span", { className: "gallery-page-info", children: [
        "第 ",
        E,
        " 页,共 ",
        R,
        " 页"
      ] }),
      /* @__PURE__ */ f.jsx("button", { className: "gallery-page-btn", disabled: E === R, onClick: () => W((V) => V + 1), children: "下一页" })
    ] }),
    k !== -1 && /* @__PURE__ */ f.jsx(
      "div",
      {
        className: "gallery-lightbox",
        onClick: Q,
        role: "dialog",
        "aria-modal": "true",
        "aria-labelledby": "lightbox-title",
        children: /* @__PURE__ */ f.jsxs("div", { className: "gallery-lightbox-content", onClick: (V) => V.stopPropagation(), children: [
          /* @__PURE__ */ f.jsx("button", { className: "gallery-lightbox-close", onClick: Q, children: "✕" }),
          /* @__PURE__ */ f.jsx("div", { className: "gallery-lightbox-image-container", children: /* @__PURE__ */ f.jsx("img", { src: e[k].src, alt: e[k].alt, className: "gallery-lightbox-image" }) }),
          (e[k].title || e[k].description) && /* @__PURE__ */ f.jsxs("div", { className: "gallery-lightbox-info", children: [
            e[k].title && /* @__PURE__ */ f.jsx("h3", { id: "lightbox-title", className: "gallery-lightbox-title", children: e[k].title }),
            e[k].description && /* @__PURE__ */ f.jsx("p", { className: "gallery-lightbox-description", children: e[k].description })
          ] }),
          /* @__PURE__ */ f.jsxs("div", { className: "gallery-lightbox-navigation", children: [
            /* @__PURE__ */ f.jsx(
              "button",
              {
                className: "gallery-lightbox-nav gallery-lightbox-prev",
                disabled: k === 0,
                "aria-label": "上一张图片",
                onClick: q,
                children: "‹"
              }
            ),
            /* @__PURE__ */ f.jsxs("span", { className: "gallery-lightbox-counter", children: [
              k + 1,
              " / ",
              e.length
            ] }),
            /* @__PURE__ */ f.jsx(
              "button",
              {
                className: "gallery-lightbox-nav gallery-lightbox-next",
                disabled: k === e.length - 1,
                "aria-label": "下一张图片",
                onClick: ne,
                children: "›"
              }
            )
          ] }),
          u && /* @__PURE__ */ f.jsx("button", { className: "gallery-action-btn gallery-download-btn", onClick: () => H(e[k]), children: "下载" })
        ] })
      }
    )
  ] });
};
Zi.displayName = "ImageGallery";
const ec = ["for"], tc = {
  key: 0,
  class: "text-error-500 ml-1"
}, ac = { class: "wc-input-wrapper" }, nc = ["id", "type", "placeholder", "disabled", "readonly", "required", "value"], rc = {
  key: 0,
  class: "absolute inset-y-0 right-0 pr-3 flex items-center pointer-events-none"
}, sc = {
  key: 1,
  class: "mt-2 text-sm text-error-500"
}, lc = {
  key: 2,
  class: "mt-2 text-sm text-neutral-500 dark:text-neutral-400"
}, lp = {
  __name: "Input",
  props: {
    modelValue: {
      type: [String, Number],
      default: ""
    },
    type: {
      type: String,
      default: "text"
    },
    label: {
      type: String,
      default: ""
    },
    placeholder: {
      type: String,
      default: ""
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    readonly: {
      type: Boolean,
      default: !1
    },
    required: {
      type: Boolean,
      default: !1
    },
    error: {
      type: String,
      default: ""
    },
    helpText: {
      type: String,
      default: ""
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    }
  },
  emits: ["update:modelValue", "focus", "blur"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = ut(), s = A(`input-${(r == null ? void 0 : r.uid) || Math.random().toString(36).substr(2, 9)}`), l = C(() => {
      const d = ["wc-input-container"];
      return a.disabled && d.push("opacity-50", "cursor-not-allowed"), d;
    }), o = C(() => {
      const d = ["wc-input", `wc-input--${a.size}`, "wc-input--filled"], p = {
        sm: ["px-2", "py-1", "text-sm"],
        md: ["px-3", "py-2", "text-sm"],
        lg: ["px-4", "py-3", "text-base"]
      };
      return d.push(...p[a.size]), a.error && d.push("wc-input--error"), a.disabled && d.push("wc-input--disabled"), d;
    }), u = (d) => {
      n("update:modelValue", d.target.value);
    }, i = (d) => {
      n("focus", d);
    }, c = (d) => {
      n("blur", d);
    };
    return (d, p) => (m(), y("div", {
      class: T(l.value)
    }, [
      e.label ? (m(), y("label", {
        key: 0,
        for: s.value,
        class: "block text-sm font-medium text-neutral-700 dark:text-neutral-300 mb-2"
      }, [
        he(I(e.label) + " ", 1),
        e.required ? (m(), y("span", tc, "*")) : j("", !0)
      ], 8, ec)) : j("", !0),
      _("div", ac, [
        _("input", ot({
          id: s.value,
          class: o.value,
          type: e.type,
          placeholder: e.placeholder,
          disabled: e.disabled,
          readonly: e.readonly,
          required: e.required,
          value: e.modelValue
        }, d.$attrs, {
          onInput: u,
          onFocus: i,
          onBlur: c
        }), null, 16, nc),
        e.error ? (m(), y("div", rc, p[0] || (p[0] = [
          _("svg", {
            class: "h-5 w-5 text-error-500",
            fill: "currentColor",
            viewBox: "0 0 20 20"
          }, [
            _("path", {
              "fill-rule": "evenodd",
              d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z",
              "clip-rule": "evenodd"
            })
          ], -1)
        ]))) : j("", !0)
      ]),
      e.error ? (m(), y("p", sc, I(e.error), 1)) : e.helpText ? (m(), y("p", lc, I(e.helpText), 1)) : j("", !0)
    ], 2));
  }
}, oc = ({
  value: e = "",
  onChange: t,
  type: a = "text",
  placeholder: n = "",
  disabled: r = !1,
  readonly: s = !1,
  required: l = !1,
  autoFocus: o = !1,
  maxLength: u,
  minLength: i,
  size: c = "md",
  variant: d = "filled",
  color: p = "primary",
  error: h = !1,
  helperText: v = "",
  label: g = "",
  startAdornment: x = null,
  endAdornment: $ = null,
  fullWidth: B = !1,
  multiline: S = !1,
  rows: k = 4,
  autoComplete: w = "off",
  name: E = "",
  id: W = "",
  className: R = "",
  style: Y = {},
  onFocus: N,
  onBlur: O,
  onKeyDown: H,
  onKeyUp: Q,
  onKeyPress: q,
  ...ne
}) => {
  const [V, K] = te(!1), [ge, oe] = te(!!e), P = Te(null), z = Ba(), Z = W || z;
  ve(() => {
    oe(!!e);
  }, [e]), ve(() => {
    o && P.current && P.current.focus();
  }, [o]);
  const U = (G) => {
    const le = G.target.value;
    oe(!!le), t == null || t(G);
  }, J = (G) => {
    K(!0), N == null || N(G);
  }, re = (G) => {
    K(!1), O == null || O(G);
  }, ee = () => {
    const G = ["wc-input"];
    return G.push(`wc-input--${c}`), G.push(`wc-input--${d}`), h && G.push("wc-input--error"), r && G.push("wc-input--disabled"), s && G.push("wc-input--readonly"), V && G.push("wc-input--focused"), ge && G.push("wc-input--has-value"), B && G.push("wc-input--full-width"), x && G.push("wc-input--has-start-adornment"), $ && G.push("wc-input--has-end-adornment"), G.concat(R).filter(Boolean).join(" ");
  }, ae = () => ({ ...Y }), se = S ? "textarea" : "input";
  return /* @__PURE__ */ f.jsxs("div", { className: "wc-input-container", children: [
    g && /* @__PURE__ */ f.jsxs(
      "label",
      {
        htmlFor: Z,
        className: `wc-input-label ${V || ge ? "wc-input-label--active" : ""} ${h ? "wc-input-label--error" : ""}`,
        children: [
          g,
          l && /* @__PURE__ */ f.jsx("span", { className: "wc-input-label__required", children: "*" })
        ]
      }
    ),
    /* @__PURE__ */ f.jsxs("div", { className: "wc-input-wrapper", children: [
      x && /* @__PURE__ */ f.jsx("div", { className: "wc-input-adornment wc-input-adornment--start", children: x }),
      /* @__PURE__ */ f.jsx(
        se,
        {
          ref: P,
          className: ee(),
          style: ae(),
          type: S ? void 0 : a,
          value: e,
          onChange: U,
          onFocus: J,
          onBlur: re,
          onKeyDown: H,
          onKeyUp: Q,
          onKeyPress: q,
          placeholder: n,
          disabled: r,
          readOnly: s,
          required: l,
          maxLength: u,
          minLength: i,
          rows: S ? k : void 0,
          autoComplete: w,
          name: E,
          id: Z,
          ...ne
        }
      ),
      $ && /* @__PURE__ */ f.jsx("div", { className: "wc-input-adornment wc-input-adornment--end", children: $ })
    ] }),
    (v || h) && /* @__PURE__ */ f.jsx("div", { className: `wc-input-helper-text ${h ? "wc-input-helper-text--error" : ""}`, children: h || v })
  ] });
};
oc.displayName = "Input";
const ic = { class: "wc-list-subheader" }, op = /* @__PURE__ */ Object.assign({
  inheritAttrs: !1
}, {
  __name: "List",
  props: {
    dense: {
      type: Boolean,
      default: !1
    },
    disablePadding: {
      type: Boolean,
      default: !1
    },
    subheader: {
      type: String,
      default: ""
    },
    component: {
      type: String,
      default: "ul"
    },
    nav: {
      type: Boolean,
      default: !1
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      const n = ["wc-list", "w-full"];
      return t.dense && n.push("wc-list--dense"), t.disablePadding ? n.push("wc-list--no-padding") : n.push("py-2"), t.nav && n.push("wc-list--nav"), n;
    });
    return it("listContext", {
      dense: t.dense
    }), (n, r) => e.subheader ? (m(), y(ke, { key: 0 }, [
      _("div", ic, I(e.subheader), 1),
      (m(), Se(ze(e.component), {
        class: T(a.value),
        role: "list"
      }, {
        default: je(() => [
          M(n.$slots, "default")
        ]),
        _: 3
      }, 8, ["class"]))
    ], 64)) : (m(), Se(ze(e.component), ot({
      key: 1,
      class: a.value,
      role: "list"
    }, n.$attrs), {
      default: je(() => [
        M(n.$slots, "default")
      ]),
      _: 3
    }, 16, ["class"]));
  }
}), wt = ft({ dense: !1 }), ip = ({
  children: e,
  dense: t = !1,
  disablePadding: a = !1,
  subheader: n = "",
  className: r = "",
  ...s
}) => {
  const l = [
    "w-full",
    !a && "py-2",
    r
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsx(wt.Provider, { value: { dense: t }, children: /* @__PURE__ */ f.jsx("ul", { role: "list", className: l, ...s, children: e }) });
}, cc = ["tabindex", "disabled"], uc = {
  key: 0,
  class: "flex-shrink-0 mr-3"
}, dc = { class: "flex-1 min-w-0" }, fc = {
  key: 1,
  class: "flex-shrink-0 ml-3"
}, cp = {
  __name: "ListItem",
  props: {
    button: {
      type: Boolean,
      default: !1
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    divider: {
      type: Boolean,
      default: !1
    },
    dense: {
      type: Boolean,
      default: void 0
    },
    selected: {
      type: Boolean,
      default: !1
    },
    disableGutters: {
      type: Boolean,
      default: !1
    },
    alignItems: {
      type: String,
      default: "center",
      validator: (e) => ["flex-start", "center", "flex-end"].includes(e)
    }
  },
  emits: ["click"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = Le("listContext", { dense: !1 }), s = C(() => a.dense !== void 0 ? a.dense : r.dense), l = C(() => {
      const u = ["wc-list-item", "flex", "w-full", "transition-colors", "duration-150"];
      return a.alignItems === "flex-start" ? u.push("items-start", "wc-list-item--align-start") : a.alignItems === "flex-end" ? u.push("items-end", "wc-list-item--align-end") : u.push("items-center"), a.disableGutters || (s.value ? u.push("px-4", "py-1") : u.push("px-4", "py-2")), a.button && (u.push("wc-list-item--button", "cursor-pointer", "focus:outline-none"), a.disabled || (a.selected ? u.push("bg-primary-50", "dark:bg-primary-900/20", "text-primary-600", "dark:text-primary-400") : u.push("hover:bg-neutral-50", "dark:hover:bg-neutral-800", "focus:bg-neutral-100", "dark:focus:bg-neutral-700"))), a.selected && u.push("wc-list-item--selected"), s.value && u.push("wc-list-item--dense"), a.disabled && u.push("wc-list-item--disabled", "opacity-50", "cursor-not-allowed"), a.divider && u.push("wc-list-item--divider", "border-b", "border-neutral-200", "dark:border-neutral-700"), u;
    }), o = (u) => {
      a.button && !a.disabled && n("click", u);
    };
    return (u, i) => (m(), y("li", {
      class: T(l.value),
      role: "listitem",
      tabindex: e.button ? 0 : -1,
      disabled: e.disabled,
      onClick: o,
      onKeydown: [
        We(o, ["enter"]),
        We(o, ["space"])
      ]
    }, [
      u.$slots.icon ? (m(), y("div", uc, [
        M(u.$slots, "icon")
      ])) : j("", !0),
      _("div", dc, [
        M(u.$slots, "default")
      ]),
      u.$slots.action ? (m(), y("div", fc, [
        M(u.$slots, "action")
      ])) : j("", !0)
    ], 42, cc));
  }
}, up = ({
  children: e,
  button: t = !1,
  disabled: a = !1,
  divider: n = !1,
  dense: r,
  selected: s = !1,
  disableGutters: l = !1,
  className: o = "",
  onClick: u,
  ...i
}) => {
  const { dense: c } = qe(wt), p = [
    "flex items-center w-full transition-colors duration-150",
    !l && ((r !== void 0 ? r : c) ? "px-4 py-1" : "px-4 py-2"),
    t && !a && "cursor-pointer focus:outline-none",
    a && "opacity-50 cursor-not-allowed",
    n && "border-b border-neutral-200 dark:border-neutral-700",
    // 选中/悬浮状态
    s && t && !a && "bg-primary-50 dark:bg-primary-900/20 text-primary-600 dark:text-primary-400",
    !s && t && !a && "hover:bg-neutral-50 dark:hover:bg-neutral-800 focus:bg-neutral-100 dark:focus:bg-neutral-700",
    o
  ].filter(Boolean).join(" "), h = (v) => {
    t && !a && (u == null || u(v));
  };
  return /* @__PURE__ */ f.jsx(
    "li",
    {
      role: "listitem",
      tabIndex: t ? 0 : -1,
      className: p,
      onClick: h,
      onKeyDown: (v) => {
        (v.key === "Enter" || v.key === " ") && t && !a && h(v);
      },
      ...i,
      children: e
    }
  );
}, pc = {
  __name: "ListItemIcon",
  setup(e) {
    const t = Le("listContext", {
      dense: !1,
      disablePadding: !1
    }), a = C(() => {
      const r = ["wc-list-item-icon inline-flex items-center justify-center flex-shrink-0"];
      return t.dense ? r.push("w-4 h-4 mr-4 text-base") : r.push("w-5 h-5 mr-4 text-lg"), r.push("text-neutral-600"), r.push("dark:text-neutral-400"), r;
    });
    return (n, r) => (m(), y("div", {
      class: T(a.value)
    }, [
      M(n.$slots, "default", {}, void 0, !0)
    ], 2));
  }
}, dp = /* @__PURE__ */ me(pc, [["__scopeId", "data-v-9ea8b8e9"]]), fp = ({ children: e, className: t = "", ...a }) => {
  const { dense: n } = qe(wt), r = [
    "wc-list-item-icon inline-flex items-center justify-center flex-shrink-0",
    n ? "w-4 h-4 mr-4 text-base" : "w-5 h-5 mr-4 text-lg",
    "text-neutral-600 dark:text-neutral-400",
    t
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsx("div", { className: r, ...a, children: e });
}, mc = { class: "flex-1 min-w-0" }, pp = {
  __name: "ListItemText",
  props: {
    primary: {
      type: String,
      default: ""
    },
    secondary: {
      type: String,
      default: ""
    },
    inset: {
      type: Boolean,
      default: !1
    },
    disableTypography: {
      type: Boolean,
      default: !1
    }
  },
  setup(e) {
    const t = e, a = Le("listContext", { dense: !1 }), n = C(() => {
      const s = ["text-neutral-900 dark:text-neutral-100"];
      return t.disableTypography || (a.dense ? s.push("text-sm font-medium") : s.push("text-base font-medium")), t.inset && s.push("ml-14"), s;
    }), r = C(() => {
      const s = ["text-neutral-600 dark:text-neutral-400 mt-1"];
      return t.disableTypography || (a.dense ? s.push("text-xs") : s.push("text-sm")), t.inset && s.push("ml-14"), s;
    });
    return (s, l) => (m(), y("div", mc, [
      _("div", {
        class: T(n.value)
      }, [
        M(s.$slots, "default", {}, () => [
          he(I(e.primary), 1)
        ])
      ], 2),
      e.secondary || s.$slots.secondary ? (m(), y("div", {
        key: 0,
        class: T(r.value)
      }, [
        M(s.$slots, "secondary", {}, () => [
          he(I(e.secondary), 1)
        ])
      ], 2)) : j("", !0)
    ]));
  }
}, mp = ({
  primary: e = "",
  secondary: t = "",
  inset: a = !1,
  disableTypography: n = !1,
  children: r,
  className: s = "",
  ...l
}) => {
  const { dense: o } = qe(wt), u = [
    "text-neutral-900 dark:text-neutral-100",
    !n && (o ? "text-sm font-medium" : "text-base font-medium"),
    a && "ml-14",
    s
  ].filter(Boolean).join(" "), i = [
    "text-neutral-600 dark:text-neutral-400 mt-1",
    !n && (o ? "text-xs" : "text-sm"),
    a && "ml-14"
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsxs("div", { className: "flex-1 min-w-0", ...l, children: [
    /* @__PURE__ */ f.jsx("div", { className: u, children: r || e }),
    (t || null) && /* @__PURE__ */ f.jsx("div", { className: i, children: t })
  ] });
}, hc = {
  name: "Marquee",
  props: {
    text: {
      type: String,
      default: "This is a scrolling marquee text"
    },
    speed: {
      type: Number,
      default: 50,
      validator: (e) => e > 0 && e <= 200
    },
    direction: {
      type: String,
      default: "left",
      validator: (e) => ["left", "right", "up", "down"].includes(e)
    },
    variant: {
      type: String,
      default: "default",
      validator: (e) => ["default", "outlined", "filled", "gradient"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg", "xl"].includes(e)
    },
    pauseOnHover: {
      type: Boolean,
      default: !1
    },
    loop: {
      type: Boolean,
      default: !0
    },
    showGradient: {
      type: Boolean,
      default: !0
    },
    showControls: {
      type: Boolean,
      default: !1
    },
    allowReverse: {
      type: Boolean,
      default: !0
    },
    allowSpeedControl: {
      type: Boolean,
      default: !0
    },
    autoStart: {
      type: Boolean,
      default: !0
    },
    loading: {
      type: Boolean,
      default: !1
    },
    height: {
      type: [String, Number],
      default: "auto"
    },
    backgroundColor: {
      type: String,
      default: ""
    },
    textColor: {
      type: String,
      default: ""
    }
  },
  emits: ["start", "pause", "resume", "complete", "direction-change", "speed-change"],
  setup(e, { emit: t }) {
    const a = A(null), n = A(!e.autoStart), r = A(e.direction), s = A(e.speed), l = A(1), o = A(null), u = A(!1), i = [5, 25, 50], c = C(() => {
      const R = {};
      return e.height !== "auto" && (R.height = typeof e.height == "number" ? `${e.height}px` : e.height), e.backgroundColor && (R.backgroundColor = e.backgroundColor), e.textColor && (R.color = e.textColor), R;
    }), d = C(() => {
      const R = ["up", "down"].includes(r.value), Y = 100 / s.value;
      let N;
      switch (r.value) {
        case "left":
          N = "marquee-scroll-left";
          break;
        case "right":
          N = "marquee-scroll-right";
          break;
        case "up":
          N = "marquee-scroll-up";
          break;
        case "down":
          N = "marquee-scroll-down";
          break;
      }
      return {
        animationName: n.value || e.loading ? "none" : N,
        animationDuration: `${Y}s`,
        animationTimingFunction: "linear",
        animationIterationCount: e.loop ? "infinite" : "1",
        flexDirection: R ? "column" : "row"
      };
    }), p = C(() => {
      const R = e.pauseOnHover && !e.showControls && u.value;
      return n.value || R || e.loading;
    }), h = () => {
      u.value = !0;
    }, v = () => {
      u.value = !1;
    }, g = () => {
      n.value = !n.value, n.value ? t("pause") : t("resume");
    }, x = () => {
      const R = ["left", "right", "up", "down"], N = (R.indexOf(r.value) + 1) % R.length;
      r.value = R[N], t("direction-change", r.value);
    }, $ = () => {
      l.value = (l.value + 1) % i.length, s.value = i[l.value], t("speed-change", {
        speed: s.value,
        level: ["slow", "normal", "fast"][l.value]
      });
    }, B = () => {
      n.value = !1, t("start");
    }, S = () => {
      n.value = !0, t("pause");
    }, k = () => {
      n.value = !1, t("resume");
    }, w = (R) => {
      s.value = Math.max(1, Math.min(200, R));
    }, E = (R) => {
      ["left", "right", "up", "down"].includes(R) && (r.value = R);
    }, W = () => {
      e.loop || t("complete");
    };
    return Pe(() => {
      a.value && a.value.addEventListener("animationend", W), e.autoStart && t("start");
    }), Ze(() => {
      a.value && a.value.removeEventListener("animationend", W), o.value && cancelAnimationFrame(o.value);
    }), {
      marqueeRef: a,
      isPaused: n,
      currentDirection: r,
      currentSpeed: s,
      isHovered: u,
      containerStyle: c,
      contentStyle: d,
      paused: p,
      handleMouseEnter: h,
      handleMouseLeave: v,
      togglePause: g,
      toggleDirection: x,
      toggleSpeed: $,
      start: B,
      pause: S,
      resume: k,
      setSpeed: w,
      setDirection: E
    };
  }
}, vc = { class: "marquee-item" }, yc = {
  key: 0,
  class: "marquee-item marquee-clone"
}, gc = {
  key: 0,
  class: "marquee-gradient marquee-gradient-left"
}, bc = {
  key: 1,
  class: "marquee-gradient marquee-gradient-right"
}, wc = {
  key: 2,
  class: "marquee-controls"
}, xc = ["aria-label"], kc = {
  key: 3,
  class: "marquee-loading-overlay"
};
function _c(e, t, a, n, r, s) {
  return m(), y("div", {
    class: T(["marquee-container", [
      `marquee-${a.variant}`,
      `marquee-size-${a.size}`,
      `marquee-direction-${n.currentDirection}`,
      n.paused && "marquee-paused",
      a.loading && "marquee-loading"
    ]]),
    style: ce(n.containerStyle),
    onMouseenter: t[3] || (t[3] = (...l) => n.handleMouseEnter && n.handleMouseEnter(...l)),
    onMouseleave: t[4] || (t[4] = (...l) => n.handleMouseLeave && n.handleMouseLeave(...l))
  }, [
    _("div", {
      ref: "marqueeRef",
      class: "marquee-content",
      style: ce(n.contentStyle)
    }, [
      _("div", vc, [
        M(e.$slots, "default", {}, () => [
          he(I(a.text), 1)
        ])
      ]),
      a.loop ? (m(), y("div", yc, [
        M(e.$slots, "default", {}, () => [
          he(I(a.text), 1)
        ])
      ])) : j("", !0)
    ], 4),
    a.showGradient ? (m(), y("div", gc)) : j("", !0),
    a.showGradient ? (m(), y("div", bc)) : j("", !0),
    a.showControls ? (m(), y("div", wc, [
      _("button", {
        class: "marquee-control-btn",
        "aria-label": n.isPaused ? "播放" : "暂停",
        onClick: t[0] || (t[0] = (...l) => n.togglePause && n.togglePause(...l))
      }, I(n.isPaused ? "▶️" : "⏸️"), 9, xc),
      a.allowReverse ? (m(), y("button", {
        key: 0,
        class: "marquee-control-btn",
        "aria-label": "改变方向",
        onClick: t[1] || (t[1] = (...l) => n.toggleDirection && n.toggleDirection(...l))
      }, " 🔄 ")) : j("", !0),
      a.allowSpeedControl ? (m(), y("button", {
        key: 1,
        class: "marquee-control-btn",
        "aria-label": "改变速度",
        onClick: t[2] || (t[2] = (...l) => n.toggleSpeed && n.toggleSpeed(...l))
      }, " ⚡ ")) : j("", !0)
    ])) : j("", !0),
    a.loading ? (m(), y("div", kc, t[5] || (t[5] = [
      _("div", { class: "marquee-loading-spinner" }, null, -1),
      _("span", { class: "marquee-loading-text" }, "加载中...", -1)
    ]))) : j("", !0)
  ], 38);
}
const hp = /* @__PURE__ */ me(hc, [["render", _c]]), Cc = {
  slow: 25,
  normal: 50,
  fast: 100
}, Sc = {
  left: "marquee-scroll-left",
  right: "marquee-scroll-right",
  up: "marquee-scroll-up",
  down: "marquee-scroll-down"
}, $c = (e) => {
  const {
    variant: t = "default",
    size: a = "md",
    direction: n = "left",
    paused: r = !1,
    loading: s = !1,
    className: l = ""
  } = e, o = [
    "marquee-container",
    `marquee-${t}`,
    `marquee-size-${a}`,
    `marquee-direction-${n}`
  ];
  return r && o.push("marquee-paused"), s && o.push("marquee-loading"), l && o.push(l), o;
}, jc = (e) => {
  const { direction: t = "left", speed: a = 50, paused: n = !1, loading: r = !1 } = e, s = Tc(a), l = Sc[t];
  return {
    animationName: n || r ? "none" : l,
    animationDuration: `${s}s`,
    animationTimingFunction: "linear",
    animationIterationCount: "infinite",
    animationPlayState: n || r ? "paused" : "running"
  };
}, Nc = (e) => {
  var s;
  const { height: t = "auto", backgroundColor: a, textColor: n } = e, r = {};
  return t !== "auto" && (r.height = typeof t == "number" ? `${t}px` : t), a && (r.backgroundColor = a, (s = r.setProperty) == null || s.call(r, "--marquee-bg", a)), n && (r.color = n), r;
}, Tc = (e) => Math.max(1, 100 / Math.max(1, Math.min(200, e))), Ec = (e) => {
  const t = Object.values(Cc), a = t.findIndex((n) => n >= e);
  return a === -1 || a === t.length - 1 ? t[0] : t[a + 1];
}, vp = ({
  text: e = "This is a scrolling marquee text",
  speed: t = 50,
  direction: a = "left",
  variant: n = "default",
  size: r = "md",
  pauseOnHover: s = !1,
  loop: l = !0,
  showGradient: o = !0,
  showControls: u = !1,
  allowReverse: i = !0,
  allowSpeedControl: c = !0,
  autoStart: d = !0,
  loading: p = !1,
  height: h = "auto",
  backgroundColor: v = "",
  textColor: g = "",
  className: x = "",
  children: $,
  onStart: B,
  onPause: S,
  onResume: k,
  onComplete: w,
  onDirectionChange: E,
  onSpeedChange: W,
  ...R
}) => {
  const Y = Te(null), [N, O] = te(!d), [H, Q] = te(a), [q, ne] = te(t), V = (U, ...J) => typeof U == "function" && U(...J);
  ve(() => {
    d && V(B);
  }, []), ve(() => {
    const U = Y.current;
    if (!U || !s) return;
    const J = () => O(!0), re = () => O(!1);
    return U.addEventListener("mouseenter", J), U.addEventListener("mouseleave", re), () => {
      U.removeEventListener("mouseenter", J), U.removeEventListener("mouseleave", re);
    };
  }, [s]), ve(() => {
    V(N ? S : k);
  }, [N]);
  const K = $c({
    variant: n,
    size: r,
    direction: H,
    paused: N,
    loading: p,
    className: x
  }).join(" "), ge = {
    ...Nc({ height: h, backgroundColor: v, textColor: g })
  }, oe = jc({
    direction: H,
    speed: q,
    paused: N,
    loading: p
  }), P = () => O((U) => !U), z = () => {
    if (!i) return;
    const U = {
      left: "right",
      right: "left",
      up: "down",
      down: "up"
    }[H];
    Q(U), V(E, U);
  }, Z = () => {
    if (!c) return;
    const U = Ec(q);
    ne(U), V(W, U);
  };
  return /* @__PURE__ */ f.jsxs(
    "div",
    {
      ref: Y,
      className: K,
      style: ge,
      ...R,
      children: [
        /* @__PURE__ */ f.jsxs("div", { className: "marquee-content", style: oe, children: [
          /* @__PURE__ */ f.jsx("div", { className: "marquee-item", children: $ || e }),
          l && /* @__PURE__ */ f.jsx("div", { className: "marquee-item marquee-clone", children: $ || e })
        ] }),
        o && /* @__PURE__ */ f.jsx("div", { className: "marquee-gradient marquee-gradient-left" }),
        o && /* @__PURE__ */ f.jsx("div", { className: "marquee-gradient marquee-gradient-right" }),
        u && /* @__PURE__ */ f.jsxs("div", { className: "marquee-controls", children: [
          /* @__PURE__ */ f.jsx(
            "button",
            {
              className: "marquee-control-btn",
              "aria-label": N ? "播放" : "暂停",
              onClick: P,
              children: N ? "▶️" : "⏸️"
            }
          ),
          i && /* @__PURE__ */ f.jsx(
            "button",
            {
              className: "marquee-control-btn",
              "aria-label": "改变方向",
              onClick: z,
              children: "🔄"
            }
          ),
          c && /* @__PURE__ */ f.jsx(
            "button",
            {
              className: "marquee-control-btn",
              "aria-label": "改变速度",
              onClick: Z,
              children: "⚡"
            }
          )
        ] }),
        p && /* @__PURE__ */ f.jsxs("div", { className: "marquee-loading-overlay", children: [
          /* @__PURE__ */ f.jsx("div", { className: "marquee-loading-spinner" }),
          /* @__PURE__ */ f.jsx("span", { className: "marquee-loading-text", children: "加载中..." })
        ] })
      ]
    }
  );
}, Ic = {
  key: 0,
  class: "wc-modal__overlay"
}, Bc = ["aria-labelledby"], Rc = {
  key: 1,
  class: "wc-modal__header"
}, Pc = { class: "wc-modal__body" }, Dc = {
  key: 2,
  class: "wc-modal__footer"
}, Vc = {
  __name: "Modal",
  props: {
    // 基础属性
    visible: {
      type: Boolean,
      default: void 0
    },
    open: {
      type: Boolean,
      default: void 0
    },
    modelValue: {
      type: Boolean,
      default: void 0
    },
    title: {
      type: String,
      default: ""
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["xs", "sm", "md", "lg", "xl"].includes(e)
    },
    maxWidth: {
      type: String,
      default: null,
      validator: (e) => e === null || ["xs", "sm", "md", "lg", "xl"].includes(e)
    },
    // 显示控制
    closable: {
      type: Boolean,
      default: !0
    },
    showCloseButton: {
      type: Boolean,
      default: !0
    },
    maskClosable: {
      type: Boolean,
      default: !0
    },
    closeOnOverlay: {
      type: Boolean,
      default: !0
    },
    disableBackdropClick: {
      type: Boolean,
      default: !1
    },
    disableEscapeKeyDown: {
      type: Boolean,
      default: !1
    },
    // 布局
    centered: {
      type: Boolean,
      default: !0
    },
    fullWidth: {
      type: Boolean,
      default: !1
    },
    fullScreen: {
      type: Boolean,
      default: !1
    },
    position: {
      type: String,
      default: "center",
      validator: (e) => ["center", "top", "bottom"].includes(e)
    },
    // 滚动
    scroll: {
      type: String,
      default: "paper",
      validator: (e) => ["paper", "body"].includes(e)
    },
    lockScroll: {
      type: Boolean,
      default: !0
    },
    // 样式
    zIndex: {
      type: Number,
      default: 1e3
    },
    showOverlay: {
      type: Boolean,
      default: !0
    }
  },
  emits: ["close", "update:modelValue"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = ut(), s = `modal-title-${(r == null ? void 0 : r.uid) || Math.random().toString(36).substr(2, 9)}`, l = A(null), o = A(null), u = C({
      get() {
        return a.modelValue !== void 0 ? a.modelValue : a.visible !== void 0 ? a.visible : a.open !== void 0 ? a.open : !1;
      },
      set(R) {
        n("update:modelValue", R), n("close");
      }
    }), i = C(() => a.maxWidth || a.size), c = C(() => {
      const R = ["wc-modal-overlay"];
      return a.position === "center" && a.centered ? R.push("wc-modal-overlay--centered") : a.position && a.position !== "center" && R.push(`wc-modal-overlay--${a.position}`), R;
    }), d = C(() => {
      const R = ["wc-modal"];
      return i.value && !a.fullScreen && R.push(`wc-modal--${i.value}`), a.fullScreen && R.push("wc-modal--fullscreen"), a.fullWidth && !a.fullScreen && R.push("wc-modal--full-width"), a.scroll === "body" ? R.push("wc-modal--scroll-body") : R.push("wc-modal--scroll-paper"), R;
    }), p = C(() => ({
      zIndex: a.zIndex
    })), h = C(() => {
      const R = {};
      return a.fullScreen && (R.width = "100vw", R.height = "100vh", R.maxWidth = "none", R.maxHeight = "none"), R;
    }), v = C(() => a.closable && a.showCloseButton), g = () => {
      n("close"), n("update:modelValue", !1);
    }, x = () => {
      a.maskClosable && a.closeOnOverlay && !a.disableBackdropClick && g();
    }, $ = (R) => {
      R.key === "Escape" && a.closable && !a.disableEscapeKeyDown && g();
    }, B = (R) => {
      if (R) {
        const Y = R.querySelectorAll(
          'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
        );
        Y.length > 0 ? Y[0].focus() : R.focus();
      }
    }, S = (R) => {
      if (!R) return () => {
      };
      const Y = R.querySelectorAll(
        'button, [href], input, select, textarea, [tabindex]:not([tabindex="-1"])'
      ), N = Y[0], O = Y[Y.length - 1], H = (Q) => {
        Q.key === "Tab" && (Q.shiftKey ? document.activeElement === N && (Q.preventDefault(), O == null || O.focus()) : document.activeElement === O && (Q.preventDefault(), N == null || N.focus()));
      };
      return R.addEventListener("keydown", H), () => {
        R.removeEventListener("keydown", H);
      };
    };
    let k = "";
    const w = () => {
      a.lockScroll && (k = document.body.style.overflow, document.body.style.overflow = "hidden");
    }, E = () => {
      a.lockScroll && (document.body.style.overflow = k);
    };
    let W = null;
    return Re(u, async (R) => {
      R ? (o.value = document.activeElement, w(), await lt(), setTimeout(() => {
        l.value && (B(l.value), W = S(l.value));
      }, 100), document.addEventListener("keydown", $)) : (document.removeEventListener("keydown", $), W && (W(), W = null), o.value && o.value.focus && o.value.focus(), E());
    }, { immediate: !0 }), He(() => {
      document.removeEventListener("keydown", $), W && W(), E();
    }), (R, Y) => (m(), Se(ct, { to: "body" }, [
      Ge(Ke, {
        name: "modal",
        appear: ""
      }, {
        default: je(() => [
          u.value ? (m(), y("div", {
            key: 0,
            class: T(c.value),
            style: ce(p.value),
            onClick: x
          }, [
            e.showOverlay ? (m(), y("div", Ic)) : j("", !0),
            _("div", {
              ref_key: "modalRef",
              ref: l,
              class: T(d.value),
              style: ce(h.value),
              role: "dialog",
              "aria-modal": "true",
              "aria-labelledby": e.title ? s : void 0,
              tabindex: "-1",
              onClick: Y[0] || (Y[0] = Ae(() => {
              }, ["stop"]))
            }, [
              v.value ? (m(), Se(Ds, {
                key: 0,
                variant: "text",
                size: "sm",
                class: "wc-modal__close",
                "aria-label": "关闭",
                onClick: g
              }, {
                default: je(() => Y[1] || (Y[1] = [
                  he(" × ")
                ])),
                _: 1,
                __: [1]
              })) : j("", !0),
              e.title || R.$slots.header ? (m(), y("div", Rc, [
                M(R.$slots, "header", {}, () => [
                  e.title ? (m(), y("h3", {
                    key: 0,
                    id: s,
                    class: "wc-modal__title"
                  }, I(e.title), 1)) : j("", !0)
                ], !0)
              ])) : j("", !0),
              _("div", Pc, [
                M(R.$slots, "default", {}, void 0, !0)
              ]),
              R.$slots.footer ? (m(), y("div", Dc, [
                M(R.$slots, "footer", {}, void 0, !0)
              ])) : j("", !0)
            ], 14, Bc)
          ], 6)) : j("", !0)
        ]),
        _: 3
      })
    ]));
  }
}, yp = /* @__PURE__ */ me(Vc, [["__scopeId", "data-v-4ded9ee1"]]), Mc = {
  __name: "NumberAnimation",
  props: {
    value: {
      type: Number,
      required: !1,
      default: void 0
    },
    from: {
      type: Number,
      default: 0
    },
    duration: {
      type: Number,
      default: 2e3
    },
    decimals: {
      type: Number,
      default: 0
    },
    separator: {
      type: String,
      default: ""
    },
    prefix: {
      type: String,
      default: ""
    },
    suffix: {
      type: String,
      default: ""
    },
    formatter: {
      type: Function,
      default: null
    },
    easing: {
      type: String,
      default: "linear",
      validator: (e) => ["linear", "ease-in", "ease-out", "ease-in-out"].includes(e)
    },
    autoPlay: {
      type: Boolean,
      default: !0
    },
    active: {
      type: Boolean,
      default: void 0
      // 如果传入则覆盖 autoPlay
    },
    to: {
      type: Number,
      default: void 0
    },
    precision: {
      type: Number,
      default: void 0
    },
    showSeparator: {
      type: Boolean,
      default: !1
    },
    locale: {
      type: String,
      default: ""
    }
  },
  emits: ["complete"],
  setup(e, { expose: t, emit: a }) {
    const n = e, r = a, s = A(n.from), l = A(!1);
    let o = null;
    const u = C(() => n.active !== void 0 ? n.active : n.autoPlay), i = C(() => {
      const x = ["wc-number-animation"];
      return n.easing && x.push(`wc-number-animation--${n.easing}`), (l.value || u.value) && x.push("wc-number-animation--playing"), x;
    }), c = C(() => n.to !== void 0 ? n.to : n.value), d = C(() => n.precision !== void 0 ? n.precision : n.decimals), p = C(() => n.showSeparator ? n.separator || "," : n.separator), h = C(() => {
      let x = s.value;
      if (n.formatter)
        return n.formatter(x);
      if (d.value > 0 ? x = x.toFixed(d.value) : x = Math.round(x).toString(), p.value) {
        const $ = x.toString().split(".");
        $[0] = $[0].replace(/\B(?=(\d{3})+(?!\d))/g, p.value), x = $.join(".");
      }
      return `${n.prefix}${x}${n.suffix}`;
    }), v = () => {
      const x = Date.now(), $ = s.value, B = c.value, S = B - $;
      l.value = !0;
      const k = () => {
        const w = Date.now() - x, E = Math.min(w / n.duration, 1);
        let W = E;
        switch (n.easing) {
          case "ease-in":
            W = E * E;
            break;
          case "ease-out":
            W = 1 - (1 - E) * (1 - E);
            break;
          case "ease-in-out":
            W = E < 0.5 ? 2 * E * E : 1 - Math.pow(-2 * E + 2, 2) / 2;
            break;
          default:
            W = E;
        }
        s.value = $ + S * W, E < 1 ? typeof window < "u" && window.requestAnimationFrame && !window.vi ? o = requestAnimationFrame(k) : o = setTimeout(k, 16) : (s.value = B, l.value = !1, r("complete"));
      };
      k();
    }, g = () => {
      o && (typeof window < "u" && window.requestAnimationFrame && !window.vi ? cancelAnimationFrame(o) : clearTimeout(o), o = null), l.value = !1;
    };
    return Re(() => c.value, () => {
      g(), u.value ? v() : s.value = c.value;
    }), Pe(() => {
      u.value ? v() : s.value = c.value;
    }), He(() => {
      g();
    }), t({
      start: v,
      stop: g
    }), (x, $) => (m(), y("span", {
      class: T(i.value)
    }, I(h.value), 3));
  }
}, gp = /* @__PURE__ */ me(Mc, [["__scopeId", "data-v-d929cdcb"]]), bp = ({
  active: e = !0,
  duration: t = 3e3,
  from: a = 0,
  to: n,
  locale: r = "",
  precision: s = 0,
  showSeparator: l = !1,
  prefix: o = "",
  suffix: u = "",
  separator: i = "",
  formatter: c = null,
  easing: d = "linear",
  onFinish: p,
  className: h = "",
  style: v = {},
  ...g
}) => {
  const [x, $] = te(a), [B, S] = te(!1), k = Te(null), w = Te(null), E = (O) => {
    k.current === null && (k.current = O);
    const H = Math.min((O - k.current) / t, 1);
    $(a + (n - a) * H), H < 1 && e ? w.current = requestAnimationFrame(E) : ($(n), S(!1), p == null || p());
  }, W = () => {
    R(), k.current = null, e ? (S(!0), w.current = requestAnimationFrame(E)) : ($(n), S(!1));
  }, R = () => {
    w.current && (cancelAnimationFrame(w.current), w.current = null);
  };
  ve(() => (W(), R), [e, a, n, t]);
  const Y = (O) => {
    if (c)
      return c(O);
    const H = O.toFixed(s);
    let Q = H;
    if (l || i)
      if (i) {
        const q = H.split(".");
        q[0] = q[0].replace(/\B(?=(\d{3})+(?!\d))/g, i), Q = q.join(".");
      } else
        Q = Number(H).toLocaleString(r || void 0, {
          minimumFractionDigits: s,
          maximumFractionDigits: s
        });
    return `${o}${Q}${u}`;
  }, N = [
    "wc-number-animation",
    B ? "wc-number-animation--playing" : "",
    d && ["ease-in", "ease-out", "ease-in-out"].includes(d) ? `wc-number-animation--${d}` : "",
    h
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsx("span", { className: N, style: v, ...g, children: Y(x) });
}, Oc = {
  name: "Pagination",
  props: {
    modelValue: {
      type: Number,
      default: 1
    },
    currentPage: {
      type: Number,
      default: 1
    },
    total: {
      type: Number,
      required: !0
    },
    pageSize: {
      type: Number,
      default: 10
    },
    siblingCount: {
      type: Number,
      default: 1
    },
    boundaryCount: {
      type: Number,
      default: 1
    },
    showSizeChanger: {
      type: Boolean,
      default: !1
    },
    showQuickJumper: {
      type: Boolean,
      default: !1
    },
    pageSizeOptions: {
      type: Array,
      default: () => [10, 20, 50, 100]
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg", "xl"].includes(e)
    }
  },
  emits: ["update:modelValue", "change", "page-change", "size-change"],
  setup(e, { emit: t }) {
    const a = A(e.currentPage || e.modelValue);
    Re(() => e.modelValue, (c) => {
      a.value = c;
    }), Re(() => e.currentPage, (c) => {
      a.value = c;
    });
    const n = C(() => {
      const c = ["pagination", "wc-pagination"];
      return e.size !== "md" && c.push(`wc-pagination--${e.size}`), c;
    }), r = C(() => Math.max(1, Math.ceil(e.total / e.pageSize))), s = (c, d) => {
      const p = [];
      for (let h = c; h <= d; h++) p.push(h);
      return p;
    }, l = C(() => {
      const c = r.value, d = a.value, { siblingCount: p, boundaryCount: h } = e, v = p * 2 + 3 + h * 2;
      if (c <= v)
        return s(1, c).map((k) => ({ key: k, num: k }));
      const g = Math.max(d - p, h + 2), x = Math.min(d + p, c - h - 1), $ = g > h + 2, B = x < c - h - 1, S = [];
      for (let k = 1; k <= h; k++) S.push({ key: "b" + k, num: k });
      $ && S.push({ key: "l-ellipsis", ellipsis: !0 });
      for (let k = g; k <= x; k++) S.push({ key: "m" + k, num: k });
      B && S.push({ key: "r-ellipsis", ellipsis: !0 });
      for (let k = c - h + 1; k <= c; k++) S.push({ key: "e" + k, num: k });
      return S;
    }), o = (c) => {
      c < 1 || c > r.value || c === a.value || (a.value = c, t("update:modelValue", c), t("change", c), t("page-change", c));
    };
    return {
      currentPageInternal: a,
      pageCount: r,
      pageItems: l,
      select: o,
      paginationClasses: n,
      handleSizeChange: (c) => {
        const d = parseInt(c.target.value);
        t("size-change", d);
      },
      handleQuickJump: (c) => {
        const d = parseInt(c.target.value);
        d >= 1 && d <= r.value && (o(d), c.target.value = "");
      }
    };
  }
}, Ac = ["disabled"], Lc = ["onClick"], zc = {
  key: 1,
  class: "page-ellipsis wc-page-ellipsis"
}, Fc = ["disabled"], qc = {
  key: 0,
  class: "wc-pagination-size-selector"
}, Wc = ["value", "selected"], Hc = {
  key: 1,
  class: "wc-pagination-quick-jumper"
}, Uc = ["max"];
function Yc(e, t, a, n, r, s) {
  return n.pageCount > 1 ? (m(), y("nav", {
    key: 0,
    class: T(n.paginationClasses),
    "aria-label": "分页导航"
  }, [
    _("button", {
      class: "page-btn wc-page-btn wc-page-btn--prev wc-page-btn--nav",
      disabled: n.currentPageInternal === 1,
      "aria-label": "上一页",
      onClick: t[0] || (t[0] = (l) => n.select(n.currentPageInternal - 1))
    }, " ‹ ", 8, Ac),
    (m(!0), y(ke, null, Ce(n.pageItems, (l) => (m(), y(ke, {
      key: l.key
    }, [
      l.ellipsis ? (m(), y("span", zc, "…")) : (m(), y("button", {
        key: 0,
        class: T(["page-btn", "wc-page-btn", { active: l.num === n.currentPageInternal, "wc-page-btn--active": l.num === n.currentPageInternal }]),
        onClick: (o) => n.select(l.num)
      }, I(l.num), 11, Lc))
    ], 64))), 128)),
    _("button", {
      class: "page-btn wc-page-btn wc-page-btn--next wc-page-btn--nav",
      disabled: n.currentPageInternal === n.pageCount,
      "aria-label": "下一页",
      onClick: t[1] || (t[1] = (l) => n.select(n.currentPageInternal + 1))
    }, " › ", 8, Fc),
    a.showSizeChanger ? (m(), y("div", qc, [
      _("select", {
        onChange: t[2] || (t[2] = (...l) => n.handleSizeChange && n.handleSizeChange(...l))
      }, [
        (m(!0), y(ke, null, Ce(a.pageSizeOptions, (l) => (m(), y("option", {
          key: l,
          value: l,
          selected: l === a.pageSize
        }, I(l) + " / 页 ", 9, Wc))), 128))
      ], 32)
    ])) : j("", !0),
    a.showQuickJumper ? (m(), y("div", Hc, [
      t[4] || (t[4] = _("span", null, "跳转到", -1)),
      _("input", {
        type: "number",
        min: 1,
        max: n.pageCount,
        placeholder: "页码",
        onKeyup: t[3] || (t[3] = We((...l) => n.handleQuickJump && n.handleQuickJump(...l), ["enter"]))
      }, null, 40, Uc)
    ])) : j("", !0)
  ], 2)) : j("", !0);
}
const wp = /* @__PURE__ */ me(Oc, [["render", Yc]]);
function xp({
  value: e = 1,
  onChange: t,
  total: a,
  pageSize: n = 10,
  siblingCount: r = 1,
  boundaryCount: s = 1,
  size: l = "md",
  // sm | md | lg | xl
  className: o = "",
  ...u
}) {
  const [i, c] = te(e);
  ve(() => {
    c(e);
  }, [e]);
  const d = Oe(() => Math.max(1, Math.ceil(a / n)), [a, n]), p = (x, $) => {
    const B = [];
    for (let S = x; S <= $; S++) B.push(S);
    return B;
  }, h = Oe(() => {
    const x = r * 2 + 3 + s * 2;
    if (d <= x)
      return p(1, d).map((E) => ({ key: E, num: E }));
    const $ = Math.max(i - r, s + 2), B = Math.min(i + r, d - s - 1), S = $ > s + 2, k = B < d - s - 1, w = [];
    for (let E = 1; E <= s; E++) w.push({ key: "b" + E, num: E });
    S && w.push({ key: "l-ellipsis", ellipsis: !0 });
    for (let E = $; E <= B; E++) w.push({ key: "m" + E, num: E });
    k && w.push({ key: "r-ellipsis", ellipsis: !0 });
    for (let E = d - s + 1; E <= d; E++) w.push({ key: "e" + E, num: E });
    return w;
  }, [i, d, r, s]), v = Ot(
    (x) => {
      x < 1 || x > d || x === i || (c(x), t == null || t(x));
    },
    [i, d, t]
  );
  if (d <= 1) return null;
  const g = [
    "pagination",
    "wc-pagination",
    l !== "md" ? `wc-pagination--${l}` : "",
    o
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsxs("nav", { className: g, "aria-label": "分页导航", ...u, children: [
    /* @__PURE__ */ f.jsx(
      "button",
      {
        className: "page-btn wc-page-btn wc-page-btn--prev wc-page-btn--nav",
        disabled: i === 1,
        onClick: () => v(i - 1),
        "aria-label": "上一页",
        children: "‹"
      }
    ),
    h.map(
      (x) => x.ellipsis ? /* @__PURE__ */ f.jsx("span", { className: "page-ellipsis", children: "…" }, x.key) : /* @__PURE__ */ f.jsx(
        "button",
        {
          className: `page-btn wc-page-btn${x.num === i ? " active wc-page-btn--active" : ""}`,
          onClick: () => v(x.num),
          children: x.num
        },
        x.key
      )
    ),
    /* @__PURE__ */ f.jsx(
      "button",
      {
        className: "page-btn wc-page-btn wc-page-btn--next wc-page-btn--nav",
        disabled: i === d,
        onClick: () => v(i + 1),
        "aria-label": "下一页",
        children: "›"
      }
    )
  ] });
}
const kp = {
  __name: "Paper",
  props: {
    elevation: {
      type: Number,
      default: 1,
      validator: (e) => e >= 0 && e <= 24
    },
    variant: {
      type: String,
      default: "elevation",
      validator: (e) => ["elevation", "outlined"].includes(e)
    },
    square: {
      type: Boolean,
      default: !1
    },
    rounded: {
      type: Boolean,
      default: !1
    },
    component: {
      type: String,
      default: "div"
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      const r = ["wc-paper transition-all duration-250 bg-[var(--wc-neutral-0)] dark:bg-[var(--wc-neutral-800)]"];
      return t.variant === "outlined" ? (r.push("wc-paper--outlined"), r.push("border border-[var(--wc-neutral-200)] dark:border-[var(--wc-neutral-700)]")) : t.elevation > 0 && (r.push(`wc-paper--elevation-${t.elevation}`), r.push("border border-[var(--wc-neutral-200)] dark:border-[var(--wc-neutral-700)]")), t.rounded && r.push("wc-paper--rounded"), !t.square && !t.rounded && r.push("rounded-lg"), r;
    });
    return (n, r) => (m(), Se(ze(e.component), {
      class: T(a.value)
    }, {
      default: je(() => [
        M(n.$slots, "default")
      ]),
      _: 3
    }, 8, ["class"]));
  }
}, Ca = {
  ELEVATION: "elevation",
  OUTLINED: "outlined"
}, Gc = {
  SQUARE: "square",
  ROUNDED_SM: "rounded-sm",
  ROUNDED_LG: "rounded-lg",
  ROUNDED_XL: "rounded-xl",
  ROUNDED_2XL: "rounded-2xl",
  ROUNDED_FULL: "rounded-full"
}, Kc = {
  SM: "sm",
  MD: "md",
  LG: "lg",
  XL: "xl"
}, Dt = {
  DEFAULT: "default",
  PRIMARY: "primary",
  SUCCESS: "success",
  WARNING: "warning",
  ERROR: "error",
  INFO: "info"
};
function Jc(e = {}) {
  const {
    variant: t = Ca.ELEVATION,
    elevation: a = 1,
    square: n = !1,
    shape: r = null,
    size: s = null,
    color: l = Dt.DEFAULT,
    hoverable: o = !1,
    clickable: u = !1,
    gradient: i = !1,
    frosted: c = !1,
    textured: d = !1,
    className: p = ""
  } = e, h = ["wc-paper"];
  if (t === Ca.OUTLINED)
    h.push("wc-paper--outlined");
  else {
    h.push("wc-paper--elevation");
    const v = Math.max(0, Math.min(24, Math.floor(Number(a) || 0)));
    h.push(`wc-paper--elevation-${v}`);
  }
  return n ? h.push("wc-paper--square") : r && Gc[r.toUpperCase()] && h.push(`wc-paper--${r}`), s && Kc[s.toUpperCase()] && h.push(`wc-paper--${s}`), l !== Dt.DEFAULT && Dt[l.toUpperCase()] && h.push(`wc-paper--${l}`), o && h.push("wc-paper--hoverable"), u && h.push("wc-paper--clickable"), i && h.push("wc-paper--gradient"), c && h.push("wc-paper--frosted"), d && h.push("wc-paper--textured"), p && h.push(p), h.join(" ");
}
function _p({
  variant: e = "elevation",
  elevation: t = 1,
  square: a = !1,
  hoverable: n = !1,
  clickable: r = !1,
  color: s = "default",
  size: l = null,
  className: o = "",
  children: u,
  onClick: i,
  onMouseEnter: c,
  onMouseLeave: d,
  ...p
}) {
  const h = Math.max(0, Math.min(24, Math.floor(Number(t) || 0))), v = Jc({
    variant: e,
    elevation: h,
    square: a,
    hoverable: n,
    clickable: r,
    color: s,
    size: l,
    className: o
  }), g = (x) => {
    r && i && i(x);
  };
  return /* @__PURE__ */ f.jsx(
    "div",
    {
      className: v,
      onClick: g,
      onMouseEnter: c,
      onMouseLeave: d,
      style: {
        cursor: r ? "pointer" : "default",
        ...p.style
      },
      ...p,
      children: u
    }
  );
}
const Xc = ["title"], Cp = /* @__PURE__ */ Fe({
  __name: "Paradox",
  props: {
    /** 显示的悖论文本 */
    content: {
      type: String,
      default: "这句话是假。"
    },
    /** 鼠标悬停提示 */
    tooltip: {
      type: String,
      default: "若此句为真,则为假;若此句为假,则为真。"
    },
    /** 是否启用动画 */
    animated: {
      type: Boolean,
      default: !1
    },
    /** 变换类型 */
    transform: {
      type: String,
      default: "none",
      validator: (e) => ["none", "rotate", "scale", "skew"].includes(e)
    },
    /** 动画速度 */
    speed: {
      type: String,
      default: "normal",
      validator: (e) => ["slow", "normal", "fast"].includes(e)
    },
    /** 是否启用悬停效果 */
    hoverEffect: {
      type: Boolean,
      default: !1
    },
    /** 是否无限循环 */
    infinite: {
      type: Boolean,
      default: !1
    }
  },
  setup(e, { expose: t }) {
    const a = e, n = A(!1), r = A(!1), s = A(0);
    let l = null;
    const o = C(() => {
      const v = ["wc-paradox"];
      return a.animated && v.push("wc-paradox--animated"), a.transform !== "none" && v.push(`wc-paradox--${a.transform}`), a.speed !== "normal" && v.push(`wc-paradox--${a.speed}`), a.hoverEffect && n.value && v.push("wc-paradox--hover"), v;
    }), u = () => {
      a.hoverEffect && (n.value = !0);
    }, i = () => {
      a.hoverEffect && (n.value = !1);
    }, c = () => {
      if (a.animated && !r.value && a.infinite) {
        const v = () => {
          s.value = (s.value + 1) % 360, r.value || (l = requestAnimationFrame(v));
        };
        l = requestAnimationFrame(v);
      }
    };
    return t({
      pause: () => {
        r.value = !0, l && (cancelAnimationFrame(l), l = null);
      },
      resume: () => {
        r.value = !1, c();
      },
      reset: () => {
        s.value = 0, l && (cancelAnimationFrame(l), l = null);
      },
      isPaused: r,
      currentFrame: s,
      infinite: C(() => a.infinite)
    }), Pe(() => {
      a.animated && a.infinite && c();
    }), He(() => {
      l && cancelAnimationFrame(l);
    }), (v, g) => (m(), y("div", {
      class: T(o.value),
      title: e.tooltip,
      onMouseenter: u,
      onMouseleave: i
    }, [
      M(v.$slots, "default", {}, () => [
        he(I(e.content), 1)
      ])
    ], 42, Xc));
  }
});
function Sp({ content: e = "这句话是假。", tooltip: t = "若此句为真,则为假;若此句为假,则为真。", className: a = "" }) {
  return /* @__PURE__ */ f.jsx("blockquote", { className: `wc-paradox ${a}`.trim(), title: t, children: e });
}
const Qc = {
  name: "Popover",
  directives: {
    outside: {
      beforeMount(e, t) {
        e.__clickOutside__ = (a) => {
          e.contains(a.target) || t.value(a);
        }, document.addEventListener("mousedown", e.__clickOutside__);
      },
      unmounted(e) {
        document.removeEventListener("mousedown", e.__clickOutside__);
      }
    }
  },
  props: {
    modelValue: {
      type: Boolean,
      default: !1
    },
    triggerText: {
      type: String,
      default: "打开弹窗"
    },
    placement: {
      type: String,
      default: "bottom",
      validator: (e) => ["top", "bottom", "left", "right"].includes(e)
    },
    offset: {
      type: Number,
      default: 8
    }
  },
  emits: ["update:modelValue", "open", "close"],
  setup(e, { emit: t }) {
    const a = A(e.modelValue), n = A(null), r = A(null), s = () => {
      a.value || (a.value = !0, t("update:modelValue", !0), t("open"), lt(u));
    }, l = () => {
      a.value && (a.value = !1, t("update:modelValue", !1), t("close"));
    }, o = () => {
      a.value ? l() : s();
    }, u = () => {
      const i = n.value, c = r.value;
      if (!i || !c) return;
      const d = i.getBoundingClientRect(), p = c.getBoundingClientRect(), { placement: h, offset: v } = e;
      let g = 0, x = 0;
      switch (h) {
        case "top":
          g = d.top - p.height - v, x = d.left + (d.width - p.width) / 2;
          break;
        case "bottom":
          g = d.bottom + v, x = d.left + (d.width - p.width) / 2;
          break;
        case "left":
          g = d.top + (d.height - p.height) / 2, x = d.left - p.width - v;
          break;
        case "right":
          g = d.top + (d.height - p.height) / 2, x = d.right + v;
          break;
      }
      c.style.top = `${g + window.scrollY}px`, c.style.left = `${x + window.scrollX}px`;
    };
    return Pe(() => {
      a.value && lt(u), window.addEventListener("resize", u), window.addEventListener("scroll", u);
    }), Ze(() => {
      window.removeEventListener("resize", u), window.removeEventListener("scroll", u);
    }), { isOpen: a, open: s, close: l, toggle: o, triggerWrapper: n, popoverRef: r };
  }
}, Zc = {
  ref: "triggerWrapper",
  class: "popover-container"
}, eu = ["aria-expanded"];
function tu(e, t, a, n, r, s) {
  return m(), y("div", Zc, [
    M(e.$slots, "trigger", {
      open: n.open,
      close: n.close
    }, () => [
      _("button", {
        class: "popover-trigger",
        "aria-expanded": n.isOpen.toString(),
        onClick: t[0] || (t[0] = (...l) => n.toggle && n.toggle(...l))
      }, I(a.triggerText), 9, eu)
    ]),
    (m(), Se(ct, { to: "body" }, [
      Ge(Ke, { name: "popover-fade" }, {
        default: je(() => [
          n.isOpen ? (m(), y("div", {
            key: 0,
            ref: "popoverRef",
            class: T(["popover-content", [`popover-${a.placement}`]]),
            role: "dialog",
            onClick: t[1] || (t[1] = (...l) => n.close && n.close(...l))
          }, [
            M(e.$slots, "default", {}, () => [
              t[2] || (t[2] = he(" 这是默认的弹出内容。 "))
            ])
          ], 2)) : j("", !0)
        ]),
        _: 3
      })
    ]))
  ], 512);
}
const $p = /* @__PURE__ */ me(Qc, [["render", tu]]);
function jp({
  open: e,
  onOpenChange: t,
  triggerText: a = "打开弹窗",
  trigger: n,
  placement: r = "bottom",
  offset: s = 8,
  children: l,
  className: o = ""
}) {
  const [u, i] = te(e ?? !1), c = e !== void 0, d = Te(null), p = Te(null), h = c ? e : u, v = (k) => {
    c || i(k), t == null || t(k);
  }, g = () => v(!1), x = () => v(!h), $ = Ot(() => {
    const k = d.current, w = p.current;
    if (!k || !w) return;
    const E = k.getBoundingClientRect(), W = w.getBoundingClientRect();
    let R = 0, Y = 0;
    switch (r) {
      case "top":
        R = E.top - W.height - s, Y = E.left + (E.width - W.width) / 2;
        break;
      case "bottom":
        R = E.bottom + s, Y = E.left + (E.width - W.width) / 2;
        break;
      case "left":
        R = E.top + (E.height - W.height) / 2, Y = E.left - W.width - s;
        break;
      case "right":
        R = E.top + (E.height - W.height) / 2, Y = E.right + s;
        break;
    }
    w.style.top = `${R + window.scrollY}px`, w.style.left = `${Y + window.scrollX}px`;
  }, [r, s]);
  ve(() => (h && ($(), window.addEventListener("resize", $), window.addEventListener("scroll", $), document.addEventListener("mousedown", B)), () => {
    window.removeEventListener("resize", $), window.removeEventListener("scroll", $), document.removeEventListener("mousedown", B);
  }), [h, $]);
  const B = (k) => {
    p.current && !p.current.contains(k.target) && !d.current.contains(k.target) && g();
  }, S = n ? dt.cloneElement(n, {
    ref: d,
    onClick: x,
    "aria-expanded": h
  }) : /* @__PURE__ */ f.jsx("button", { ref: d, className: "popover-trigger", onClick: x, "aria-expanded": h, children: a });
  return /* @__PURE__ */ f.jsxs("div", { className: o, style: { display: "inline-block" }, children: [
    S,
    h && dr.createPortal(
      /* @__PURE__ */ f.jsx("div", { ref: p, className: `popover-content popover-${r}`.trim(), role: "dialog", children: l }),
      document.body
    )
  ] });
}
const au = {
  name: "PricingTable",
  props: {
    plans: { type: Array, default: () => [] },
    columns: { type: Number, default: 3 }
  },
  computed: {
    gridStyle() {
      return { gridTemplateColumns: `repeat(${this.columns}, minmax(0,1fr))` };
    }
  }
}, nu = { class: "plan-name" }, ru = { class: "plan-price" }, su = { class: "plan-features" }, lu = { class: "plan-btn" };
function ou(e, t, a, n, r, s) {
  return m(), y("div", {
    class: "pricing-grid",
    style: ce(s.gridStyle)
  }, [
    (m(!0), y(ke, null, Ce(a.plans, (l) => (m(), y("div", {
      key: l.name,
      class: T(["plan-card", { popular: l.popular }])
    }, [
      _("h3", nu, I(l.name), 1),
      _("p", ru, I(l.price), 1),
      _("ul", su, [
        (m(!0), y(ke, null, Ce(l.features, (o) => (m(), y("li", { key: o }, I(o), 1))), 128))
      ]),
      _("button", lu, I(l.button || "选择"), 1)
    ], 2))), 128))
  ], 4);
}
const Np = /* @__PURE__ */ me(au, [["render", ou]]);
function Tp({ plans: e = [], columns: t = 3, className: a = "" }) {
  const n = {
    gridTemplateColumns: `repeat(${t}, minmax(0,1fr))`
  };
  return /* @__PURE__ */ f.jsx("div", { className: `pricing-grid ${a}`.trim(), style: n, children: e.map((r) => {
    var s;
    return /* @__PURE__ */ f.jsxs("div", { className: `plan-card${r.popular ? " popular" : ""}`, children: [
      /* @__PURE__ */ f.jsx("h3", { className: "plan-name", children: r.name }),
      /* @__PURE__ */ f.jsx("p", { className: "plan-price", children: r.price }),
      /* @__PURE__ */ f.jsx("ul", { className: "plan-features", children: (s = r.features) == null ? void 0 : s.map((l) => /* @__PURE__ */ f.jsx("li", { children: l }, l)) }),
      /* @__PURE__ */ f.jsx("button", { className: "plan-btn", children: r.button || "选择" })
    ] }, r.name);
  }) });
}
const iu = { class: "wc-progress-wrapper" }, cu = {
  key: 0,
  class: "wc-progress-header"
}, uu = {
  key: 0,
  class: "wc-progress-label"
}, du = {
  key: 1,
  class: "wc-progress-percent"
}, fu = {
  __name: "Progress",
  props: {
    value: {
      type: Number,
      default: 0,
      validator: (e) => e >= 0 && e <= 100
    },
    label: {
      type: String,
      default: ""
    },
    showPercent: {
      type: Boolean,
      default: !1
    },
    color: {
      type: String,
      default: "primary",
      validator: (e) => ["primary", "success", "warning", "error", "purple", "orange", "cyan", "pink"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    animated: {
      type: Boolean,
      default: !1
    }
  },
  setup(e) {
    const t = e, a = C(() => ["wc-progress", `wc-progress--${t.size}`]), n = C(() => [
      "wc-progress__bar",
      `wc-progress__bar--${t.color}`,
      t.animated && "wc-progress__bar--animated"
    ].filter(Boolean)), r = C(() => ({
      width: `${Math.max(0, Math.min(100, t.value))}%`
    }));
    return (s, l) => (m(), y("div", iu, [
      e.label || e.showPercent ? (m(), y("div", cu, [
        e.label ? (m(), y("label", uu, I(e.label), 1)) : j("", !0),
        e.showPercent ? (m(), y("span", du, I(Math.round(e.value)) + "% ", 1)) : j("", !0)
      ])) : j("", !0),
      _("div", {
        class: T(a.value)
      }, [
        _("div", {
          class: T(n.value),
          style: ce(r.value)
        }, null, 6)
      ], 2)
    ]));
  }
}, Ep = /* @__PURE__ */ me(fu, [["__scopeId", "data-v-3a9eaee4"]]), pu = ({
  value: e = 0,
  label: t = "",
  showPercent: a = !1,
  color: n = "primary",
  size: r = "md",
  animated: s = !1,
  className: l = "",
  ...o
}) => {
  const i = ["primary", "success", "warning", "error", "purple", "orange", "cyan", "pink"].includes(n) ? n : "primary", c = Math.max(0, Math.min(100, e)), d = ["wc-progress", `wc-progress--${r}`], p = [
    "wc-progress__bar",
    `wc-progress__bar--${i}`,
    s && "wc-progress__bar--animated"
  ].filter(Boolean).join(" "), h = {
    width: `${c}%`
  };
  return /* @__PURE__ */ f.jsxs("div", { className: `wc-progress-wrapper ${l}`, ...o, children: [
    (t || a) && /* @__PURE__ */ f.jsxs("div", { className: "wc-progress-header", children: [
      t && /* @__PURE__ */ f.jsx("label", { className: "wc-progress-label", children: t }),
      a && /* @__PURE__ */ f.jsxs("span", { className: "wc-progress-percent", children: [
        Math.round(c),
        "%"
      ] })
    ] }),
    /* @__PURE__ */ f.jsx("div", { className: d.join(" "), children: /* @__PURE__ */ f.jsx(
      "div",
      {
        className: p,
        style: h
      }
    ) })
  ] });
};
pu.displayName = "Progress";
const mu = ["name", "value", "checked", "disabled"], hu = {
  key: 0,
  class: "radio-dot"
}, vu = {
  key: 0,
  class: "radio-label"
}, Ip = {
  __name: "Radio",
  props: {
    modelValue: {
      type: [String, Number, Boolean],
      default: null
    },
    value: {
      type: [String, Number, Boolean],
      required: !0
    },
    name: {
      type: String,
      default: ""
    },
    label: {
      type: String,
      default: ""
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    color: {
      type: String,
      default: "primary",
      validator: (e) => ["primary", "secondary", "success", "error", "warning", "info"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    }
  },
  emits: ["update:modelValue", "change"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = Le("radioGroup", null), s = A(!1), l = C(() => r ? r.modelValue.value === a.value : a.modelValue === a.value);
    C(() => r ? r.name.value : a.name);
    const o = C(() => r && r.disabled.value || a.disabled), u = C(() => {
      const v = ["wc-radio"];
      return v.push(`wc-radio--${a.size}`), o.value && v.push("wc-radio--disabled"), s.value && v.push("wc-radio--focused"), v;
    }), i = C(() => ["wc-radio__input"]), c = C(() => {
      const v = ["wc-radio__button"];
      return v.push(`wc-radio__button--${a.color}`), v.push(`wc-radio__button--${a.size}`), l.value && v.push("wc-radio__button--checked"), v;
    }), d = (v) => {
      if (o.value) return;
      const g = a.value;
      r ? r.updateValue(g) : n("update:modelValue", g), n("change", g);
    }, p = () => {
      s.value = !0;
    }, h = () => {
      s.value = !1;
    };
    return (v, g) => (m(), y("label", {
      class: T(u.value)
    }, [
      _("input", {
        type: "radio",
        name: e.name,
        value: e.value,
        checked: l.value,
        disabled: e.disabled,
        class: T(i.value),
        onChange: d,
        onFocus: p,
        onBlur: h
      }, null, 42, mu),
      _("span", {
        class: T(c.value)
      }, [
        l.value ? (m(), y("span", hu)) : j("", !0)
      ], 2),
      v.$slots.default || e.label ? (m(), y("span", vu, [
        M(v.$slots, "default", {}, () => [
          he(I(e.label), 1)
        ])
      ])) : j("", !0)
    ], 2));
  }
}, yn = ft(null);
function Bp({ value: e, onChange: t, name: a, disabled: n = !1, children: r, className: s = "" }) {
  const [l, o] = te(e), u = e !== void 0, i = u ? e : l, c = Ot(
    (d) => {
      n || (u || o(d), t == null || t(d));
    },
    [n, u, t]
  );
  return /* @__PURE__ */ f.jsx(yn.Provider, { value: { value: i, updateValue: c, name: a, disabled: n }, children: /* @__PURE__ */ f.jsx("div", { className: s, children: r }) });
}
function Rp({
  value: e,
  checked: t,
  onChange: a,
  label: n,
  name: r,
  disabled: s = !1,
  color: l = "primary",
  size: o = "md",
  className: u = "",
  children: i,
  ...c
}) {
  const d = qe(yn), p = d ? d.value === e : t !== void 0 ? t : void 0, h = d ? d.name : r, v = d && d.disabled || s, g = (x) => {
    v || (d ? d.updateValue(e) : a == null || a(e));
  };
  return /* @__PURE__ */ f.jsxs(
    "label",
    {
      className: `wc-radio wc-radio--${o}${v ? " wc-radio--disabled" : ""} ${u}`.trim(),
      children: [
        /* @__PURE__ */ f.jsx(
          "input",
          {
            type: "radio",
            className: "wc-radio__input",
            name: h,
            value: e,
            checked: p,
            disabled: v,
            onChange: g,
            ...c
          }
        ),
        /* @__PURE__ */ f.jsx("span", { className: `wc-radio__button wc-radio__button--${l} wc-radio__button--${o}${p ? " wc-radio__button--checked" : ""}` }),
        (i || n) && /* @__PURE__ */ f.jsx("span", { className: "radio-label", children: i || n })
      ]
    }
  );
}
const yu = { class: "wc-radio-group" }, gu = {
  key: 0,
  class: "wc-radio-group-label"
}, bu = {
  key: 0,
  class: "text-error-500"
}, wu = {
  key: 1,
  class: "mt-2"
}, xu = {
  key: 0,
  class: "text-sm text-error-500"
}, ku = {
  key: 1,
  class: "text-sm text-neutral-500"
}, Pp = {
  __name: "RadioGroup",
  props: {
    modelValue: {
      type: [String, Number, Boolean],
      default: ""
    },
    name: {
      type: String,
      required: !0
    },
    label: {
      type: String,
      default: ""
    },
    row: {
      type: Boolean,
      default: !1
    },
    required: {
      type: Boolean,
      default: !1
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    error: {
      type: String,
      default: ""
    },
    helperText: {
      type: String,
      default: ""
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    color: {
      type: String,
      default: "primary",
      validator: (e) => ["primary", "secondary", "success", "warning", "error"].includes(e)
    }
  },
  emits: ["update:modelValue", "change"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = C(() => {
      const l = ["wc-radio-group-content"];
      return a.row ? l.push("flex flex-wrap gap-4") : l.push("space-y-2"), l;
    });
    return it("radioGroupContext", {
      modelValue: a.modelValue,
      name: a.name,
      disabled: a.disabled,
      size: a.size,
      color: a.color,
      updateValue: (s) => {
        n("update:modelValue", s), n("change", s);
      }
    }), (s, l) => (m(), y("div", yu, [
      e.label ? (m(), y("label", gu, [
        he(I(e.label) + " ", 1),
        e.required ? (m(), y("span", bu, "*")) : j("", !0)
      ])) : j("", !0),
      _("div", {
        class: T(r.value)
      }, [
        M(s.$slots, "default")
      ], 2),
      e.error || e.helperText ? (m(), y("div", wu, [
        e.error ? (m(), y("p", xu, I(e.error), 1)) : e.helperText ? (m(), y("p", ku, I(e.helperText), 1)) : j("", !0)
      ])) : j("", !0)
    ]));
  }
}, _u = {
  name: "Rating",
  props: {
    modelValue: {
      type: Number,
      default: 0
    },
    max: {
      type: Number,
      default: 5
    },
    readonly: {
      type: Boolean,
      default: !1
    }
  },
  emits: ["update:modelValue", "change"],
  setup(e, { emit: t }) {
    const a = A(e.modelValue), n = A(0);
    return Re(() => e.modelValue, (l) => a.value = l), { internalValue: a, hovered: n, select: (l) => {
      if (e.readonly) return;
      const o = l === a.value ? 0 : l;
      a.value = o, t("update:modelValue", o), t("change", o);
    }, hover: (l) => {
      e.readonly || (n.value = l);
    } };
  }
}, Cu = {
  class: "rating",
  role: "radiogroup",
  "aria-label": "评分组件"
}, Su = ["aria-checked", "disabled", "onMouseenter", "onClick"];
function $u(e, t, a, n, r, s) {
  return m(), y("div", Cu, [
    (m(!0), y(ke, null, Ce(a.max, (l) => (m(), y("button", {
      key: l,
      class: T(["rating-item", l <= n.hovered || l <= n.internalValue ? "active" : ""]),
      "aria-checked": l === n.internalValue ? "true" : "false",
      role: "radio",
      disabled: a.readonly,
      onMouseenter: (o) => n.hover(l),
      onMouseleave: t[0] || (t[0] = (o) => n.hover(0)),
      onClick: (o) => n.select(l)
    }, " ★ ", 42, Su))), 128))
  ]);
}
const Dp = /* @__PURE__ */ me(_u, [["render", $u]]), Vp = ({ value: e = 0, max: t = 5, readOnly: a = !1, onChange: n = () => {
}, className: r = "", style: s = {}, ...l }) => {
  const [o, u] = te(0), [i, c] = te(e);
  ve(() => c(e), [e]), ve(() => {
    if (document.getElementById("wc-rating-style")) return;
    const v = document.createElement("style");
    v.id = "wc-rating-style", v.innerHTML = `
      .wc-rating{display:inline-flex;gap:4px;}
      .wc-rating-item{background:none;border:none;cursor:pointer;font-size:1.5rem;line-height:1;padding:0;color:var(--wc-neutral-300);transition:color 0.2s ease;}
      .wc-rating-item.active{color:var(--wc-warning-500);}
      .wc-rating-item:hover{transform:scale(1.1);}
      .wc-rating-item:disabled{cursor:default;}
      .dark .wc-rating-item{color:var(--wc-neutral-500);}
      .dark .wc-rating-item.active{color:var(--wc-warning-400);}
    `, document.head.appendChild(v);
  }, []);
  const d = (v) => {
    if (a) return;
    const g = v === i ? 0 : v;
    c(g), n(g);
  }, p = (v) => {
    a || u(v);
  }, h = [];
  for (let v = 1; v <= t; v++) {
    const g = v <= o || v <= i;
    h.push(
      /* @__PURE__ */ f.jsx(
        "button",
        {
          type: "button",
          className: `wc-rating-item ${g ? "active" : ""}`,
          onMouseEnter: () => p(v),
          onMouseLeave: () => p(0),
          onClick: () => d(v),
          disabled: a,
          "aria-checked": v === i,
          role: "radio",
          children: g ? "★" : "☆"
        },
        v
      )
    );
  }
  return /* @__PURE__ */ f.jsx("div", { className: `wc-rating ${r}`, role: "radiogroup", "aria-label": "评分组件", style: s, ...l, children: h });
}, ju = { class: "wc-select" }, Nu = ["for"], Tu = {
  key: 0,
  class: "wc-select__required"
}, Eu = { class: "wc-select__value" }, Iu = { key: 0 }, Bu = {
  key: 1,
  class: "wc-select__placeholder"
}, Ru = { class: "wc-select__indicators" }, Pu = {
  key: 1,
  class: "wc-select__dropdown"
}, Du = {
  key: 0,
  class: "wc-select__search"
}, Vu = { class: "wc-select__options" }, Mu = ["onClick"], Ou = { class: "wc-select__option-text" }, Au = {
  key: 0,
  class: "wc-select__option-check",
  viewBox: "0 0 24 24",
  fill: "none",
  stroke: "currentColor",
  "stroke-width": "2"
}, Lu = {
  key: 0,
  class: "wc-select__no-options"
}, zu = { key: 2 }, Fu = {
  key: 0,
  class: "wc-select__error"
}, qu = {
  key: 1,
  class: "wc-select__helper"
}, Mp = {
  __name: "Select",
  props: {
    modelValue: {
      type: [String, Number, Array],
      default: null
    },
    options: {
      type: Array,
      default: () => []
    },
    label: {
      type: String,
      default: ""
    },
    placeholder: {
      type: String,
      default: "请选择..."
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    required: {
      type: Boolean,
      default: !1
    },
    error: {
      type: String,
      default: ""
    },
    helperText: {
      type: String,
      default: ""
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    variant: {
      type: String,
      default: "outlined",
      validator: (e) => ["outlined", "filled", "standard"].includes(e)
    },
    multiple: {
      type: Boolean,
      default: !1
    },
    searchable: {
      type: Boolean,
      default: !1
    },
    valueKey: {
      type: String,
      default: "value"
    },
    labelKey: {
      type: String,
      default: "label"
    }
  },
  emits: ["update:modelValue", "change"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = ut(), s = A(`select-${(r == null ? void 0 : r.uid) || Math.random().toString(36).substr(2, 9)}`), l = A(!1), o = A(""), u = C(() => {
      const S = ["wc-select__label"];
      return S.push(`wc-select__label--${a.size}`), a.error && S.push("wc-select__label--error"), S;
    }), i = C(() => {
      const S = ["wc-select__container"];
      return S.push(`wc-select__container--${a.variant}`), S.push(`wc-select__container--${a.size}`), a.disabled && S.push("wc-select__container--disabled"), a.error && S.push("wc-select__container--error"), l.value && S.push("wc-select__container--open"), S;
    }), c = C(() => !a.searchable || !o.value ? a.options : a.options.filter((S) => h(S).toLowerCase().includes(o.value.toLowerCase()))), d = C(() => {
      if (a.multiple && Array.isArray(a.modelValue)) {
        if (a.modelValue.length === 0) return "";
        if (a.modelValue.length === 1) {
          const S = a.options.find((k) => p(k) === a.modelValue[0]);
          return S ? h(S) : "";
        }
        return `已选择 ${a.modelValue.length} 项`;
      } else {
        const S = a.options.find((k) => p(k) === a.modelValue);
        return S ? h(S) : "";
      }
    }), p = (S) => typeof S == "object" ? S[a.valueKey] : S, h = (S) => typeof S == "object" ? S[a.labelKey] : S, v = (S) => {
      const k = p(S);
      return a.multiple && Array.isArray(a.modelValue) ? a.modelValue.includes(k) : a.modelValue === k;
    }, g = (S) => {
      const k = ["wc-select__option"];
      return v(S) && k.push("wc-select__option--selected"), k;
    }, x = () => {
      a.disabled || (l.value = !l.value, l.value && (o.value = ""));
    }, $ = (S) => {
      const k = p(S);
      if (a.multiple) {
        const w = Array.isArray(a.modelValue) ? [...a.modelValue] : [], E = w.indexOf(k);
        E > -1 ? w.splice(E, 1) : w.push(k), n("update:modelValue", w), n("change", w);
      } else
        n("update:modelValue", k), n("change", k), l.value = !1;
    }, B = (S) => {
      S.target.closest(".wc-select") || (l.value = !1);
    };
    return Pe(() => {
      document.addEventListener("click", B);
    }), He(() => {
      document.removeEventListener("click", B);
    }), (S, k) => (m(), y("div", ju, [
      e.label ? (m(), y("label", {
        key: 0,
        for: s.value,
        class: T(u.value)
      }, [
        he(I(e.label) + " ", 1),
        e.required ? (m(), y("span", Tu, "*")) : j("", !0)
      ], 10, Nu)) : j("", !0),
      _("div", {
        class: T(i.value),
        onClick: x
      }, [
        _("div", Eu, [
          d.value ? (m(), y("span", Iu, I(d.value), 1)) : (m(), y("span", Bu, I(e.placeholder), 1))
        ]),
        _("div", Ru, [
          _("div", {
            class: T(["wc-select__arrow", { "wc-select__arrow--open": l.value }])
          }, k[2] || (k[2] = [
            _("svg", {
              viewBox: "0 0 24 24",
              fill: "none",
              stroke: "currentColor",
              "stroke-width": "2"
            }, [
              _("polyline", { points: "6,9 12,15 18,9" })
            ], -1)
          ]), 2)
        ])
      ], 2),
      l.value ? (m(), y("div", Pu, [
        e.searchable ? (m(), y("div", Du, [
          Ea(_("input", {
            "onUpdate:modelValue": k[0] || (k[0] = (w) => o.value = w),
            class: "wc-select__search-input",
            placeholder: "搜索...",
            onClick: k[1] || (k[1] = Ae(() => {
            }, ["stop"]))
          }, null, 512), [
            [Ia, o.value]
          ])
        ])) : j("", !0),
        _("div", Vu, [
          (m(!0), y(ke, null, Ce(c.value, (w) => (m(), y("div", {
            key: p(w),
            class: T(g(w)),
            onClick: (E) => $(w)
          }, [
            _("span", Ou, I(h(w)), 1),
            v(w) ? (m(), y("svg", Au, k[3] || (k[3] = [
              _("polyline", { points: "20,6 9,17 4,12" }, null, -1)
            ]))) : j("", !0)
          ], 10, Mu))), 128)),
          c.value.length === 0 ? (m(), y("div", Lu, " 没有找到选项 ")) : j("", !0)
        ])
      ])) : j("", !0),
      e.error || e.helperText ? (m(), y("div", zu, [
        e.error ? (m(), y("p", Fu, I(e.error), 1)) : e.helperText ? (m(), y("p", qu, I(e.helperText), 1)) : j("", !0)
      ])) : j("", !0)
    ]));
  }
}, Wu = /* @__PURE__ */ Fe({
  __name: "Skeleton",
  props: {
    /** 是否显示加载状态 */
    loading: {
      type: Boolean,
      default: !0
    },
    /** 动画效果。false 表示无动画,pulse 脉冲动画,wave 波浪动画 */
    animation: {
      type: [String, Boolean],
      default: "pulse",
      validator: (e) => [!1, "pulse", "wave"].includes(e)
    },
    /** 根元素类型 */
    component: {
      type: String,
      default: "div"
    },
    /** 组件高度,支持 number(px) 或 string */
    height: {
      type: [String, Number],
      default: void 0
    },
    /** 组件宽度,支持 number(px) 或 string */
    width: {
      type: [String, Number],
      default: void 0
    },
    /** 形状变体 */
    variant: {
      type: String,
      default: "text",
      validator: (e) => ["text", "rectangular", "rounded", "circular"].includes(e)
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      const r = ["wc-skeleton"];
      return r.push(`wc-skeleton--${t.variant}`), t.animation === "pulse" ? r.push("wc-skeleton--pulse") : t.animation === "wave" && r.push("wc-skeleton--wave"), r.join(" ");
    }), n = C(() => {
      const r = {};
      return t.width !== void 0 && (r.width = typeof t.width == "number" ? `${t.width}px` : t.width), t.height !== void 0 && (r.height = typeof t.height == "number" ? `${t.height}px` : t.height), !t.width && !t.height && (t.variant === "circular" ? (r.width = "40px", r.height = "40px") : t.variant === "text" ? (r.width = "100%", r.height = "16px") : (r.width = "100%", r.height = "128px")), r;
    });
    return (r, s) => e.loading ? (m(), Se(ze(e.component), {
      key: 0,
      class: T(a.value),
      style: ce(n.value),
      role: "status",
      "aria-live": "polite"
    }, null, 8, ["class", "style"])) : M(r.$slots, "default", { key: 1 }, void 0, !0);
  }
}), Op = /* @__PURE__ */ me(Wu, [["__scopeId", "data-v-d5fa7567"]]), Sa = {
  text: "wc-skeleton--text",
  rectangular: "wc-skeleton--rectangular",
  rounded: "wc-skeleton--rounded",
  circular: "wc-skeleton--circular"
}, Ap = ({ animation: e = "pulse", component: t = "div", height: a, width: n, variant: r = "text", style: s = {}, className: l = "", ...o }) => {
  const u = Oe(() => {
    const c = ["wc-skeleton", Sa[r] || Sa.text];
    return e === "pulse" && c.push("wc-skeleton--pulse"), e === "wave" && c.push("wc-skeleton--wave"), c.join(" ");
  }, [e, r]);
  ve(() => {
    if (!document.getElementById("wc-skeleton-style")) {
      const c = document.createElement("style");
      c.id = "wc-skeleton-style", c.innerHTML = `
      .wc-skeleton{background-color:var(--wc-neutral-200);display:block;position:relative;overflow:hidden;}
      .wc-skeleton--text{border-radius:4px;}
      .wc-skeleton--rectangular{border-radius:4px;}
      .wc-skeleton--rounded{border-radius:8px;}
      .wc-skeleton--circular{border-radius:50%;}
      .wc-skeleton--pulse{animation:wc-skeleton-pulse 1.5s ease-in-out infinite;}
      @keyframes wc-skeleton-pulse{0%,100%{opacity:1;}50%{opacity:0.4;}}
      .wc-skeleton--wave::after{content:'';position:absolute;top:0;right:0;bottom:0;left:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,0.4),transparent);animation:wc-skeleton-wave 1.6s linear infinite;}
      @keyframes wc-skeleton-wave{0%{transform:translateX(-100%);}50%{transform:translateX(100%);}100%{transform:translateX(100%);}}
      .dark .wc-skeleton{background-color:var(--wc-neutral-700);}
      `, document.head.appendChild(c);
    }
  }, []);
  const i = { ...s };
  return n !== void 0 && (i.width = typeof n == "number" ? `${n}px` : n), a !== void 0 && (i.height = typeof a == "number" ? `${a}px` : a), !n && !a && (r === "circular" ? (i.width = "40px", i.height = "40px") : r === "text" ? (i.width = "100%", i.height = "16px") : (i.width = "100%", i.height = "128px")), /* @__PURE__ */ f.jsx(t, { className: `${u} ${l}`, style: i, role: "status", "aria-live": "polite", ...o });
}, Hu = { class: "wc-slider" }, Uu = {
  key: 0,
  class: "wc-slider__label"
}, Yu = ["tabindex", "aria-valuemin", "aria-valuemax", "aria-valuenow"], Gu = {
  key: 1,
  class: "wc-slider__value"
}, Ku = {
  __name: "Slider",
  props: {
    modelValue: {
      type: Number,
      default: 0
    },
    min: {
      type: Number,
      default: 0
    },
    max: {
      type: Number,
      default: 100
    },
    step: {
      type: Number,
      default: 1
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    label: {
      type: String,
      default: ""
    },
    valueLabelDisplay: {
      type: String,
      default: "off"
    }
  },
  emits: ["update:modelValue", "change"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(null), s = A(!1), l = C(() => (a.modelValue - a.min) / (a.max - a.min) * 100), o = (v) => {
      if (a.disabled) return;
      const g = Math.round(v / a.step) * a.step, x = Math.min(Math.max(g, a.min), a.max);
      n("update:modelValue", x), n("change", x);
    }, u = (v) => {
      const g = r.value.getBoundingClientRect(), x = Math.max(0, Math.min(1, (v - g.left) / g.width));
      return a.min + x * (a.max - a.min);
    }, i = (v) => {
      if (a.disabled || s.value) return;
      const g = u(v.clientX);
      o(g);
    }, c = (v) => {
      a.disabled || (v.preventDefault(), v.stopPropagation(), s.value = !0, document.addEventListener("mousemove", d), document.addEventListener("mouseup", p), document.body.style.userSelect = "none");
    }, d = (v) => {
      if (!s.value || a.disabled) return;
      const g = u(v.clientX);
      o(g);
    }, p = () => {
      s.value = !1, document.removeEventListener("mousemove", d), document.removeEventListener("mouseup", p), document.body.style.userSelect = "";
    }, h = (v) => {
      if (a.disabled) return;
      let g = a.modelValue;
      switch (v.key) {
        case "ArrowRight":
        case "ArrowUp":
          g += a.step;
          break;
        case "ArrowLeft":
        case "ArrowDown":
          g -= a.step;
          break;
        case "Home":
          g = a.min;
          break;
        case "End":
          g = a.max;
          break;
        default:
          return;
      }
      v.preventDefault(), o(g);
    };
    return He(() => {
      document.removeEventListener("mousemove", d), document.removeEventListener("mouseup", p), document.body.style.userSelect = "";
    }), (v, g) => (m(), y("div", Hu, [
      e.label ? (m(), y("div", Uu, I(e.label), 1)) : j("", !0),
      _("div", {
        ref_key: "sliderTrack",
        ref: r,
        class: "wc-slider__track",
        onClick: i
      }, [
        g[1] || (g[1] = _("div", { class: "wc-slider__rail" }, null, -1)),
        _("div", {
          class: "wc-slider__track-active",
          style: ce({ width: l.value + "%" })
        }, null, 4),
        _("div", {
          class: "wc-slider__thumb",
          style: ce({ left: l.value + "%" }),
          tabindex: e.disabled ? -1 : 0,
          role: "slider",
          "aria-valuemin": e.min,
          "aria-valuemax": e.max,
          "aria-valuenow": e.modelValue,
          onKeydown: h,
          onMousedown: c
        }, g[0] || (g[0] = [
          _("div", { class: "wc-slider__thumb-inner" }, null, -1)
        ]), 44, Yu)
      ], 512),
      e.valueLabelDisplay !== "off" ? (m(), y("div", Gu, I(e.modelValue), 1)) : j("", !0)
    ]));
  }
}, Lp = /* @__PURE__ */ me(Ku, [["__scopeId", "data-v-950e7a9e"]]), zp = ({ value: e, defaultValue: t = 0, min: a = 0, max: n = 100, step: r = 1, disabled: s = !1, label: l = "", valueLabelDisplay: o = "off", onChange: u = () => {
}, className: i = "", style: c = {}, ...d }) => {
  const [p, h] = te(e !== void 0 ? e : t);
  ve(() => {
    e !== void 0 && h(e);
  }, [e]);
  const v = ($) => {
    const B = Number($.target.value);
    e === void 0 && h(B), u(B);
  };
  ve(() => {
    if (document.getElementById("wc-slider-style")) return;
    const $ = document.createElement("style");
    $.id = "wc-slider-style", $.innerHTML = `
      .wc-slider{display:flex;flex-direction:column;gap:8px;width:100%;}
      .wc-slider__label{font-size:0.875rem;font-weight:500;color:var(--wc-neutral-700);}
      .wc-slider__input{appearance:none;width:100%;height:4px;background:var(--wc-neutral-300);border-radius:2px;outline:none;cursor:pointer;}
      .wc-slider__input::-webkit-slider-thumb{appearance:none;width:20px;height:20px;border-radius:50%;background:var(--wc-primary-500);border:2px solid var(--wc-neutral-0);cursor:pointer;}
      .wc-slider__input::-moz-range-thumb{width:20px;height:20px;border-radius:50%;background:var(--wc-primary-500);border:2px solid var(--wc-neutral-0);cursor:pointer;}
      .wc-slider__value{font-size:0.875rem;text-align:center;color:var(--wc-neutral-700);} 
    `, document.head.appendChild($);
  }, []);
  const g = Oe(() => (p - a) / (n - a) * 100, [p, a, n]), x = {
    background: `linear-gradient(to right, var(--wc-primary-500) 0%, var(--wc-primary-500) ${g}%, var(--wc-neutral-300) ${g}%, var(--wc-neutral-300) 100%)`
  };
  return /* @__PURE__ */ f.jsxs("div", { className: `wc-slider ${i}`, style: c, ...d, children: [
    l && /* @__PURE__ */ f.jsx("div", { className: "wc-slider__label", children: l }),
    /* @__PURE__ */ f.jsx(
      "input",
      {
        type: "range",
        className: "wc-slider__input",
        min: a,
        max: n,
        step: r,
        value: p,
        onChange: v,
        disabled: s,
        style: x,
        "aria-valuemin": a,
        "aria-valuemax": n,
        "aria-valuenow": p,
        role: "slider"
      }
    ),
    o !== "off" && /* @__PURE__ */ f.jsx("div", { className: "wc-slider__value", children: p })
  ] });
}, Ju = {
  name: "SlideOver",
  props: {
    modelValue: {
      type: Boolean,
      default: !1
    },
    placement: {
      type: String,
      default: "right",
      validator: (e) => ["left", "right"].includes(e)
    },
    width: {
      type: [String, Number],
      default: "400px"
    }
  },
  emits: ["update:modelValue", "open", "close"],
  setup(e, { emit: t }) {
    const a = C({
      get: () => e.modelValue,
      set: (s) => t("update:modelValue", s)
    }), n = () => {
      a.value = !1, t("close");
    }, r = C(() => ({ width: typeof e.width == "number" ? e.width + "px" : e.width }));
    return { model: a, close: n, panelStyle: r };
  }
}, Xu = {
  key: 0,
  class: "slideover-header"
}, Qu = { class: "slideover-body" }, Zu = {
  key: 1,
  class: "slideover-footer"
};
function ed(e, t, a, n, r, s) {
  return m(), Se(ct, { to: "body" }, [
    Ge(Ke, { name: "slideover" }, {
      default: je(() => [
        n.model ? (m(), y("div", {
          key: 0,
          class: "slideover-wrapper",
          tabindex: "-1",
          onKeydown: t[2] || (t[2] = We((...l) => n.close && n.close(...l), ["esc"]))
        }, [
          _("div", {
            class: "slideover-overlay",
            onClick: t[0] || (t[0] = (...l) => n.close && n.close(...l))
          }),
          _("div", {
            class: T(["slideover-panel", [`slideover-${a.placement}`]]),
            style: ce(n.panelStyle)
          }, [
            e.$slots.header ? (m(), y("header", Xu, [
              M(e.$slots, "header", {}, void 0, !0)
            ])) : j("", !0),
            _("div", Qu, [
              M(e.$slots, "default", {}, void 0, !0)
            ]),
            e.$slots.footer ? (m(), y("footer", Zu, [
              M(e.$slots, "footer", {}, void 0, !0)
            ])) : j("", !0),
            _("button", {
              class: "slideover-close",
              "aria-label": "关闭",
              onClick: t[1] || (t[1] = (...l) => n.close && n.close(...l))
            }, " ✕ ")
          ], 6)
        ], 32)) : j("", !0)
      ]),
      _: 3
    })
  ]);
}
const Fp = /* @__PURE__ */ me(Ju, [["render", ed], ["__scopeId", "data-v-a1e76874"]]), qp = ({ open: e = !1, onClose: t = () => {
}, placement: a = "right", width: n = 400, children: r, header: s, footer: l }) => (ve(() => {
  if (!e) return;
  const o = (u) => {
    u.key === "Escape" && t();
  };
  return window.addEventListener("keydown", o), () => window.removeEventListener("keydown", o);
}, [e, t]), typeof document > "u" ? null : Ra(
  e ? /* @__PURE__ */ f.jsxs("div", { className: "slideover-wrapper", role: "dialog", "aria-modal": "true", children: [
    /* @__PURE__ */ f.jsx("div", { className: "slideover-overlay", onClick: t }),
    /* @__PURE__ */ f.jsxs(
      "div",
      {
        className: `slideover-panel slideover-${a}`,
        style: { width: typeof n == "number" ? `${n}px` : n },
        children: [
          s && /* @__PURE__ */ f.jsx("header", { className: "slideover-header", children: s }),
          /* @__PURE__ */ f.jsx("div", { className: "slideover-body", children: r }),
          l && /* @__PURE__ */ f.jsx("footer", { className: "slideover-footer", children: l }),
          /* @__PURE__ */ f.jsx("button", { className: "slideover-close", onClick: t, "aria-label": "关闭", children: "✕" })
        ]
      }
    ),
    /* @__PURE__ */ f.jsx("style", { children: `
          .slideover-wrapper{position:fixed;inset:0;z-index:3000;display:flex;}
          .slideover-overlay{flex:1 1 auto;background:rgba(0,0,0,0.4);backdrop-filter:blur(2px);} 
          .slideover-panel{position:relative;background:var(--wc-neutral-0);max-height:100vh;overflow-y:auto;display:flex;flex-direction:column;}
          .slideover-left{order:0;} .slideover-right{order:1;}
          .slideover-close{position:absolute;top:8px;right:8px;background:none;border:none;font-size:1.25rem;cursor:pointer;}
          .slideover-header,.slideover-footer{padding:16px;border-bottom:1px solid var(--wc-neutral-200);} 
          .slideover-footer{border-top:1px solid var(--wc-neutral-200);border-bottom:none;}
          .slideover-body{padding:16px;flex:1 1 auto;}
          .slideover-enter{opacity:0;transform:translateX(${a === "right" ? "100%" : "-100%"});}
        ` })
  ] }) : null,
  document.body
)), td = { class: "flex items-start gap-3 w-full" }, ad = { class: "flex-1 min-w-0" }, nd = {
  key: 0,
  class: "font-semibold text-sm mb-1 leading-tight"
}, rd = { class: "text-sm" }, sd = {
  key: 1,
  class: "flex-shrink-0"
}, ld = {
  key: 2,
  class: "flex-shrink-0"
}, od = {
  key: 0,
  class: "mt-3 w-full bg-gray-200 dark:bg-gray-700 rounded-full h-1"
}, Wp = {
  __name: "Snackbar",
  props: {
    open: {
      type: Boolean,
      default: !1
    },
    modelValue: {
      type: Boolean,
      default: void 0
    },
    message: {
      type: String,
      default: ""
    },
    title: {
      type: String,
      default: ""
    },
    autoHideDuration: {
      type: Number,
      default: 6e3
    },
    anchorOrigin: {
      type: Object,
      default: () => ({ vertical: "bottom", horizontal: "left" })
    },
    severity: {
      type: String,
      default: "info",
      validator: (e) => ["success", "info", "warning", "error"].includes(e)
    },
    variant: {
      type: String,
      default: "filled",
      validator: (e) => ["filled", "outlined", "standard"].includes(e)
    },
    action: {
      type: String,
      default: ""
    },
    closable: {
      type: Boolean,
      default: !0
    },
    showIcon: {
      type: Boolean,
      default: !0
    },
    showProgress: {
      type: Boolean,
      default: !1
    }
  },
  emits: ["close", "action", "update:modelValue"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = C(
      () => a.modelValue !== void 0 ? a.modelValue : a.open
    ), s = {
      success: "✓",
      info: "ℹ",
      warning: "⚠",
      error: "✕"
    };
    let l = null, o = null;
    const u = A(100), i = C(() => {
      const k = ["fixed z-50 w-full max-w-sm bg-white dark:bg-neutral-800 rounded-lg shadow-lg border border-neutral-200 dark:border-neutral-700 p-4 transition-all duration-300 ease-in-out"], { vertical: w, horizontal: E } = a.anchorOrigin;
      if (w === "top" ? k.push("top-4") : k.push("bottom-4"), E === "left" ? k.push("left-4") : E === "right" ? k.push("right-4") : k.push("left-1/2 transform -translate-x-1/2"), a.variant === "filled") {
        const W = {
          success: "bg-success-500 border-success-500",
          info: "bg-primary-500 border-primary-500",
          warning: "bg-warning-500 border-warning-500",
          error: "bg-error-500 border-error-500"
        };
        k.push(W[a.severity]);
      } else if (a.variant === "outlined") {
        const W = {
          success: "border-success-500 text-success-600 dark:text-success-400 border-l-4",
          info: "border-primary-500 text-primary-600 dark:text-primary-400 border-l-4",
          warning: "border-warning-500 text-warning-600 dark:text-warning-400 border-l-4",
          error: "border-error-500 text-error-600 dark:text-error-400 border-l-4"
        };
        k.push(W[a.severity]);
      } else
        k.push("text-neutral-900 dark:text-neutral-100");
      return k;
    }), c = C(() => {
      const k = ["text-sm font-medium px-3 py-1 rounded-md transition-colors duration-150 focus:outline-none focus:ring-2 focus:ring-offset-2"];
      if (a.variant === "filled")
        k.push("hover:bg-white hover:bg-opacity-20 focus:ring-white");
      else {
        const w = {
          success: "text-success-600 dark:text-success-400 hover:bg-success-50 dark:hover:bg-success-900/20 focus:ring-success-500",
          info: "text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-900/20 focus:ring-primary-500",
          warning: "text-warning-600 dark:text-warning-400 hover:bg-warning-50 dark:hover:bg-warning-900/20 focus:ring-warning-500",
          error: "text-error-600 dark:text-error-400 hover:bg-error-50 dark:hover:bg-error-900/20 focus:ring-error-500"
        };
        k.push(w[a.severity]);
      }
      return k;
    }), d = C(() => {
      const k = ["inline-flex rounded-md p-1 focus:outline-none focus:ring-2 focus:ring-offset-2 transition-colors duration-150"];
      if (a.variant === "filled")
        k.push("hover:bg-white hover:bg-opacity-20 focus:ring-white");
      else {
        const w = {
          success: "text-success-400 hover:text-success-500 focus:ring-success-500",
          info: "text-primary-400 hover:text-primary-500 focus:ring-primary-500",
          warning: "text-warning-400 hover:text-warning-500 focus:ring-warning-500",
          error: "text-error-400 hover:text-error-500 focus:ring-error-500"
        };
        k.push(w[a.severity] || "text-neutral-400 hover:text-neutral-500 focus:ring-neutral-500");
      }
      return k;
    }), p = C(() => a.variant === "filled" ? "text-gray" : {
      success: "text-success-500",
      info: "text-primary-500",
      warning: "text-warning-500",
      error: "text-error-500"
    }[a.severity]), h = C(() => a.variant === "filled" ? "bg-white bg-opacity-30" : {
      success: "bg-success-500",
      info: "bg-primary-500",
      warning: "bg-warning-500",
      error: "bg-error-500"
    }[a.severity]), v = C(() => s[a.severity] || s.info), g = () => {
      n("close"), a.modelValue !== void 0 && n("update:modelValue", !1);
    }, x = () => n("action"), $ = () => {
      if (a.autoHideDuration > 0) {
        u.value = 100;
        const S = Date.now();
        l = setTimeout(() => {
          g();
        }, a.autoHideDuration), a.showProgress && (o = setInterval(() => {
          const k = Date.now() - S, w = Math.max(0, 100 - k / a.autoHideDuration * 100);
          u.value = w, w <= 0 && clearInterval(o);
        }, 50));
      }
    }, B = () => {
      l && (clearTimeout(l), l = null), o && (clearInterval(o), o = null);
    };
    return Re(r, (S) => {
      S ? $() : B();
    }), Pe(() => {
      r.value && $();
    }), He(() => B()), (S, k) => (m(), Se(ct, { to: "body" }, [
      Ge(Ke, {
        name: "snackbar",
        "enter-active-class": "transition ease-out duration-300",
        "enter-from-class": "opacity-0 translate-y-2",
        "enter-to-class": "opacity-100 translate-y-0",
        "leave-active-class": "transition ease-in duration-200",
        "leave-from-class": "opacity-100 translate-y-0",
        "leave-to-class": "opacity-0 translate-y-2"
      }, {
        default: je(() => [
          r.value ? (m(), y("div", {
            key: 0,
            class: T(i.value),
            role: "alert",
            "aria-live": "assertive",
            "aria-atomic": "true"
          }, [
            _("div", td, [
              e.showIcon ? (m(), y("div", {
                key: 0,
                class: T([p.value, "flex-shrink-0 w-5 h-5 flex items-center justify-center font-bold text-lg"])
              }, I(v.value), 3)) : j("", !0),
              _("div", ad, [
                e.title ? (m(), y("div", nd, I(e.title), 1)) : j("", !0),
                M(S.$slots, "default", {}, () => [
                  _("div", rd, I(e.message), 1)
                ])
              ]),
              S.$slots.action || e.action ? (m(), y("div", sd, [
                M(S.$slots, "action", {}, () => [
                  e.action ? (m(), y("button", {
                    key: 0,
                    type: "button",
                    class: T(c.value),
                    onClick: x
                  }, I(e.action), 3)) : j("", !0)
                ])
              ])) : j("", !0),
              e.closable ? (m(), y("div", ld, [
                _("button", {
                  type: "button",
                  class: T(d.value),
                  "aria-label": "关闭",
                  onClick: g
                }, k[0] || (k[0] = [
                  _("svg", {
                    class: "w-4 h-4",
                    fill: "currentColor",
                    viewBox: "0 0 20 20"
                  }, [
                    _("path", {
                      "fill-rule": "evenodd",
                      d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z",
                      "clip-rule": "evenodd"
                    })
                  ], -1)
                ]), 2)
              ])) : j("", !0)
            ]),
            e.showProgress && e.autoHideDuration > 0 ? (m(), y("div", od, [
              _("div", {
                class: T([h.value, "h-1 rounded-full transition-all duration-100"]),
                style: ce({ width: `${u.value}%` })
              }, null, 6)
            ])) : j("", !0)
          ], 2)) : j("", !0)
        ]),
        _: 3
      })
    ]));
  }
}, id = {
  success: "✓",
  info: "ℹ",
  warning: "⚠",
  error: "✕"
};
function Hp({
  open: e = !1,
  message: t = "",
  title: a = "",
  severity: n = "info",
  variant: r = "filled",
  autoHideDuration: s = 6e3,
  anchorOrigin: l = { vertical: "bottom", horizontal: "left" },
  action: o = "",
  closable: u = !0,
  showIcon: i = !0,
  showProgress: c = !1,
  onClose: d = () => {
  },
  onAction: p = () => {
  },
  children: h
}) {
  const [v, g] = te(e), [x, $] = te(100);
  ve(() => {
    g(e), e && $(100);
  }, [e]), ve(() => {
    if (!v || s <= 0) return;
    const H = Date.now(), Q = setTimeout(() => {
      B();
    }, s);
    if (c) {
      const q = setInterval(() => {
        const ne = Date.now() - H, V = Math.max(0, 100 - ne / s * 100);
        $(V), V <= 0 && clearInterval(q);
      }, 50);
      return () => {
        clearTimeout(Q), clearInterval(q);
      };
    }
    return () => clearTimeout(Q);
  }, [v, s, c]);
  const B = () => {
    g(!1), d();
  }, S = () => {
    p();
  };
  if (!v) return null;
  const w = ["fixed z-50 w-full max-w-sm bg-white dark:bg-neutral-800 rounded-lg shadow-lg border border-neutral-200 dark:border-neutral-700 p-4 transition-all duration-300 ease-in-out"], { vertical: E, horizontal: W } = l;
  if (w.push(E === "top" ? "top-4" : "bottom-4"), W === "left" ? w.push("left-4") : W === "right" ? w.push("right-4") : w.push("left-1/2 transform -translate-x-1/2"), r === "filled") {
    const H = {
      success: "bg-success-500 border-success-500",
      info: "bg-primary-500 border-primary-500",
      warning: "bg-warning-500 border-warning-500",
      error: "bg-error-500 border-error-500"
    };
    w.push(H[n]);
  } else if (r === "outlined") {
    const H = {
      success: "border-success-500 text-success-600 dark:text-success-400 border-l-4",
      info: "border-primary-500 text-primary-600 dark:text-primary-400 border-l-4",
      warning: "border-warning-500 text-warning-600 dark:text-warning-400 border-l-4",
      error: "border-error-500 text-error-600 dark:text-error-400 border-l-4"
    };
    w.push(H[n]);
  } else
    w.push("text-neutral-900 dark:text-neutral-100");
  const R = r === "filled" ? "hover:bg-white hover:bg-opacity-20 focus:ring-white text-sm font-medium px-3 py-1 rounded-md transition-colors" : {
    success: "text-success-600 dark:text-success-400 hover:bg-success-50 dark:hover:bg-success-900/20",
    info: "text-primary-600 dark:text-primary-400 hover:bg-primary-50 dark:hover:bg-primary-900/20",
    warning: "text-warning-600 dark:text-warning-400 hover:bg-warning-50 dark:hover:bg-warning-900/20",
    error: "text-error-600 dark:text-error-400 hover:bg-error-50 dark:hover:bg-error-900/20"
  }[n] + " text-sm font-medium px-3 py-1 rounded-md transition-colors", Y = r === "filled" ? "inline-flex rounded-md p-1 hover:bg-white hover:bg-opacity-20 transition-colors" : "inline-flex rounded-md p-1 text-neutral-400 hover:text-neutral-500 transition-colors", N = r === "filled" ? "text-gray" : {
    success: "text-success-500",
    info: "text-primary-500",
    warning: "text-warning-500",
    error: "text-error-500"
  }[n], O = /* @__PURE__ */ f.jsxs("div", { className: w.join(" "), role: "alert", "aria-live": "assertive", "aria-atomic": "true", children: [
    /* @__PURE__ */ f.jsxs("div", { className: "flex items-start gap-3 w-full", children: [
      i && /* @__PURE__ */ f.jsx("div", { className: `flex-shrink-0 w-5 h-5 flex items-center justify-center font-bold text-lg ${N}`, children: id[n] }),
      /* @__PURE__ */ f.jsxs("div", { className: "flex-1 min-w-0", children: [
        a && /* @__PURE__ */ f.jsx("div", { className: "font-semibold text-sm mb-1 leading-tight", children: a }),
        h || /* @__PURE__ */ f.jsx("div", { className: "text-sm", children: t })
      ] }),
      (o || (h == null ? void 0 : h.action)) && /* @__PURE__ */ f.jsx("div", { className: "flex-shrink-0", children: (h == null ? void 0 : h.action) || /* @__PURE__ */ f.jsx("button", { className: R, onClick: S, type: "button", children: o }) }),
      u && /* @__PURE__ */ f.jsx("div", { className: "flex-shrink-0", children: /* @__PURE__ */ f.jsx("button", { className: Y, onClick: B, "aria-label": "关闭", type: "button", children: /* @__PURE__ */ f.jsx("svg", { className: "w-4 h-4", fill: "currentColor", viewBox: "0 0 20 20", children: /* @__PURE__ */ f.jsx("path", { fillRule: "evenodd", d: "M4.293 4.293a1 1 0 011.414 0L10 8.586l4.293-4.293a1 1 0 111.414 1.414L11.414 10l4.293 4.293a1 1 0 01-1.414 1.414L10 11.414l-4.293 4.293a1 1 0 01-1.414-1.414L8.586 10 4.293 5.707a1 1 0 010-1.414z", clipRule: "evenodd" }) }) }) })
    ] }),
    c && s > 0 && /* @__PURE__ */ f.jsx("div", { className: "mt-3 w-full bg-gray-200 dark:bg-gray-700 rounded-full h-1", children: /* @__PURE__ */ f.jsx(
      "div",
      {
        className: `h-1 rounded-full transition-all duration-100 ${r === "filled" ? "bg-white bg-opacity-30" : {
          success: "bg-success-500",
          info: "bg-primary-500",
          warning: "bg-warning-500",
          error: "bg-error-500"
        }[n]}`,
        style: { width: `${x}%` }
      }
    ) })
  ] });
  return Ra(O, document.body);
}
const cd = {
  key: 0,
  class: "wc-spinner__text"
}, ud = {
  __name: "Spinner",
  props: {
    size: {
      type: Number,
      default: 40
    },
    color: {
      type: String,
      default: "var(--wc-primary-500)"
    },
    thickness: {
      type: Number,
      default: 4
    },
    variant: {
      type: String,
      default: "default",
      validator: (e) => ["default", "dots", "pulse"].includes(e)
    },
    text: {
      type: String,
      default: ""
    },
    speed: {
      type: String,
      default: "1s"
    },
    overlay: {
      type: Boolean,
      default: !1
    },
    centered: {
      type: Boolean,
      default: !1
    },
    inline: {
      type: Boolean,
      default: !1
    },
    visible: {
      type: Boolean,
      default: !0
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      const r = ["wc-spinner"];
      return t.variant !== "default" && r.push(`wc-spinner--${t.variant}`), t.overlay && r.push("wc-spinner--overlay"), t.centered && r.push("wc-spinner--centered"), t.inline && r.push("wc-spinner--inline"), r;
    }), n = C(() => {
      const r = {
        width: t.size + "px",
        height: t.size + "px",
        borderWidth: t.thickness + "px",
        borderTopColor: t.color
      };
      return t.speed !== "1s" && (r["--spinner-speed"] = t.speed), r;
    });
    return (r, s) => e.visible ? (m(), y("div", {
      key: 0,
      class: T(a.value),
      style: ce(n.value)
    }, [
      e.text || r.$slots.default ? (m(), y("div", cd, [
        M(r.$slots, "default", {}, () => [
          he(I(e.text), 1)
        ], !0)
      ])) : j("", !0)
    ], 6)) : j("", !0);
  }
}, Up = /* @__PURE__ */ me(ud, [["__scopeId", "data-v-9b0facd8"]]), Yp = ({ size: e = 40, thickness: t = 4, color: a = "var(--wc-primary-500)", style: n = {}, className: r = "", ...s }) => {
  ve(() => {
    if (!document.getElementById("wc-spinner-keyframes")) {
      const o = document.createElement("style");
      o.id = "wc-spinner-keyframes", o.innerHTML = "@keyframes wc-spin { to { transform: rotate(360deg); } }", document.head.appendChild(o);
    }
  }, []);
  const l = {
    width: e,
    height: e,
    borderWidth: t,
    borderStyle: "solid",
    borderColor: "var(--wc-neutral-200)",
    borderTopColor: a,
    borderRadius: "50%",
    animation: "wc-spin 1s linear infinite",
    ...n
  };
  return /* @__PURE__ */ f.jsx("div", { className: `wc-spinner ${r}`, style: l, ...s });
}, dd = { class: "switch-wrapper" }, fd = {
  key: 0,
  class: "switch-label"
}, pd = {
  key: 0,
  class: "switch-required"
}, md = { class: "switch-container" }, hd = ["disabled", "aria-checked"], vd = {
  key: 0,
  class: "switch-description"
}, yd = {
  __name: "Switch",
  props: {
    modelValue: {
      type: Boolean,
      default: !1
    },
    label: {
      type: String,
      default: ""
    },
    description: {
      type: String,
      default: ""
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    required: {
      type: Boolean,
      default: !1
    },
    color: {
      type: String,
      default: "primary",
      validator: (e) => ["primary", "success", "warning", "error", "purple", "orange", "cyan", "pink"].includes(e)
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    }
  },
  emits: ["update:modelValue", "change"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = ut(), s = `switch-label-${(r == null ? void 0 : r.uid) || Math.random().toString(36).substr(2, 9)}`, l = C(() => {
      const i = [];
      return a.size === "sm" ? i.push("switch--size-sm") : a.size === "lg" && i.push("switch--size-lg"), a.modelValue && (i.push("switch--checked"), i.push(`switch--color-${a.color}`)), a.disabled && i.push("switch--disabled"), i;
    }), o = C(() => {
      const i = [];
      return a.modelValue && i.push("switch__thumb--checked"), a.size === "sm" ? i.push("switch__thumb--size-sm") : a.size === "lg" && i.push("switch__thumb--size-lg"), i;
    }), u = () => {
      if (a.disabled) return;
      const i = !a.modelValue;
      n("update:modelValue", i), n("change", i);
    };
    return (i, c) => (m(), y("div", dd, [
      e.label ? (m(), y("label", fd, [
        he(I(e.label) + " ", 1),
        e.required ? (m(), y("span", pd, "*")) : j("", !0)
      ])) : j("", !0),
      _("div", md, [
        _("button", {
          class: T(["switch", l.value]),
          disabled: e.disabled,
          type: "button",
          role: "switch",
          "aria-checked": e.modelValue,
          "aria-labelledby": s,
          onClick: u
        }, [
          c[0] || (c[0] = _("span", { class: "switch__track" }, null, -1)),
          _("span", {
            class: T(["switch__thumb", o.value])
          }, null, 2)
        ], 10, hd),
        e.description ? (m(), y("span", vd, I(e.description), 1)) : j("", !0)
      ])
    ]));
  }
}, Gp = /* @__PURE__ */ me(yd, [["__scopeId", "data-v-f5e06078"]]), gd = ({
  checked: e = !1,
  onChange: t,
  label: a = "",
  description: n = "",
  disabled: r = !1,
  required: s = !1,
  color: l = "primary",
  size: o = "md",
  className: u = "",
  ...i
}) => {
  const c = Ba(), p = ["primary", "success", "warning", "error", "purple", "orange", "cyan", "pink"].includes(l) ? l : "primary", v = ["sm", "md", "lg"].includes(o) ? o : "md", g = [
    "wc-switch",
    `wc-switch--${p}`,
    v !== "md" && `wc-switch--${v}`,
    r && "wc-switch--disabled",
    u
  ].filter(Boolean).join(" "), x = ($) => {
    r || !t || t($.target.checked);
  };
  return /* @__PURE__ */ f.jsxs("div", { className: "wc-switch-wrapper", children: [
    a && /* @__PURE__ */ f.jsxs(
      "label",
      {
        id: c,
        className: "block text-sm font-medium text-neutral-700 dark:text-neutral-300 mb-2",
        children: [
          a,
          s && /* @__PURE__ */ f.jsx("span", { className: "text-error-500 ml-1", children: "*" })
        ]
      }
    ),
    /* @__PURE__ */ f.jsxs("div", { className: "flex items-center gap-3", children: [
      /* @__PURE__ */ f.jsxs("label", { className: g, "aria-disabled": r, children: [
        /* @__PURE__ */ f.jsx(
          "input",
          {
            type: "checkbox",
            className: "wc-switch__input",
            checked: e,
            disabled: r,
            "aria-labelledby": c,
            role: "switch",
            onChange: x,
            ...i
          }
        ),
        /* @__PURE__ */ f.jsx("span", { className: "wc-switch__track", children: /* @__PURE__ */ f.jsx("span", { className: "wc-switch__thumb" }) })
      ] }),
      n && /* @__PURE__ */ f.jsx("span", { className: "text-sm text-neutral-500 dark:text-neutral-400", children: n })
    ] })
  ] });
};
gd.displayName = "Switch";
const Kp = {
  __name: "Table",
  props: {
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    stickyHeader: {
      type: Boolean,
      default: !1
    },
    dense: {
      type: Boolean,
      default: !1
    },
    hover: {
      type: Boolean,
      default: !1
    },
    striped: {
      type: Boolean,
      default: !1
    }
  },
  setup(e) {
    const t = e, a = C(() => {
      const r = ["wc-table-container"];
      return t.stickyHeader && r.push("wc-table-container--sticky"), r;
    }), n = C(() => {
      const r = ["wc-table"];
      return r.push(`wc-table--${t.size}`), t.hover && r.push("wc-table--hover"), t.striped && r.push("wc-table--striped"), t.dense && r.push("wc-table--dense"), r;
    });
    return it("tableContext", {
      size: t.size,
      dense: t.dense,
      hover: t.hover,
      striped: t.striped,
      stickyHeader: t.stickyHeader
    }), (r, s) => (m(), y("div", {
      class: T(a.value)
    }, [
      _("table", {
        class: T(n.value)
      }, [
        M(r.$slots, "default")
      ], 2)
    ], 2));
  }
}, xt = ft({ size: "md", dense: !1, hover: !1, striped: !1 }), gn = ({
  size: e = "md",
  stickyHeader: t = !1,
  dense: a = !1,
  hover: n = !1,
  striped: r = !1,
  children: s,
  className: l = "",
  ...o
}) => /* @__PURE__ */ f.jsx(
  "div",
  {
    className: `wc-table-container${t ? " wc-table-container--sticky" : ""} ${l}`,
    ...o,
    children: /* @__PURE__ */ f.jsx(
      "table",
      {
        className: `wc-table wc-table--${e}${n ? " wc-table--hover" : ""}${r ? " wc-table--striped" : ""}${a ? " wc-table--dense" : ""}`,
        children: /* @__PURE__ */ f.jsx(xt.Provider, { value: { size: e, dense: a, hover: n, striped: r, stickyHeader: t }, children: s })
      }
    )
  }
);
gn.displayName = "Table";
const bn = ({ children: e, className: t = "", ...a }) => {
  const { stickyHeader: n } = qe(xt);
  return /* @__PURE__ */ f.jsx("thead", { className: `wc-table-head${n ? " wc-table-head--sticky" : ""} ${t}`, ...a, children: e });
};
bn.displayName = "TableHead";
const wn = ({ children: e, className: t = "", ...a }) => /* @__PURE__ */ f.jsx("tbody", { className: `wc-table-body ${t}`, ...a, children: e });
wn.displayName = "TableBody";
const xn = ({
  hover: e,
  selected: t = !1,
  clickable: a = !1,
  children: n,
  className: r = "",
  onClick: s,
  ...l
}) => {
  const o = qe(xt), i = [
    "wc-table-row",
    (e !== void 0 ? e : o.hover) || a ? "wc-table-row--hover" : "",
    t ? "wc-table-row--selected" : "",
    a ? "wc-table-row--clickable" : "",
    r
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsx(
    "tr",
    {
      className: i,
      onClick: a ? s : void 0,
      ...l,
      children: n
    }
  );
};
xn.displayName = "TableRow";
const kn = ({
  component: e = "td",
  align: t = "inherit",
  padding: a = "normal",
  size: n,
  sortDirection: r = !1,
  variant: s = "body",
  scope: l,
  children: o,
  className: u = "",
  ...i
}) => {
  const c = qe(xt), d = n || (c.dense ? "small" : "medium"), p = [
    "wc-table-cell",
    `wc-table-cell--${s}`,
    `wc-table-cell--${d}`,
    `wc-table-cell--padding-${a}`,
    t !== "inherit" ? `wc-table-cell--align-${t}` : "",
    r ? "wc-table-cell--sortable" : "",
    r ? `wc-table-cell--sort-${r}` : "",
    u
  ].filter(Boolean).join(" ");
  return /* @__PURE__ */ f.jsx(e, { className: p, scope: e === "th" || s === "head" ? l : void 0, ...i, children: o });
};
kn.displayName = "TableCell";
const Jp = Object.assign(gn, { Head: bn, Body: wn, Row: xn, Cell: kn }), Xp = {
  __name: "TableBody",
  setup(e) {
    Le("tableContext", {
      size: "md",
      dense: !1,
      hover: !1,
      striped: !1
    });
    const t = C(() => ["wc-table-body"]);
    return (a, n) => (m(), y("tbody", {
      class: T(t.value)
    }, [
      M(a.$slots, "default")
    ], 2));
  }
}, Qp = {
  __name: "TableCell",
  props: {
    component: {
      type: String,
      default: "td"
    },
    align: {
      type: String,
      default: "inherit",
      validator: (e) => ["inherit", "left", "center", "right", "justify"].includes(e)
    },
    padding: {
      type: String,
      default: "normal",
      validator: (e) => ["normal", "checkbox", "none"].includes(e)
    },
    size: {
      type: String,
      default: void 0,
      validator: (e) => !e || ["small", "medium"].includes(e)
    },
    sortDirection: {
      type: [String, Boolean],
      default: !1,
      validator: (e) => [!1, "asc", "desc"].includes(e)
    },
    variant: {
      type: String,
      default: "body",
      validator: (e) => ["head", "body", "footer"].includes(e)
    },
    scope: {
      type: String,
      default: void 0
    }
  },
  setup(e) {
    const t = e, a = Le("tableContext", {
      size: "md",
      dense: !1
    }), n = C(() => t.component === "th" || t.variant === "head"), r = C(() => {
      const l = ["wc-table-cell"];
      l.push(`wc-table-cell--${t.variant}`);
      const o = t.size || (a.dense ? "small" : "medium");
      return l.push(`wc-table-cell--${o}`), l.push(`wc-table-cell--padding-${t.padding}`), t.align !== "inherit" && l.push(`wc-table-cell--align-${t.align}`), t.sortDirection && (l.push("wc-table-cell--sortable"), l.push(`wc-table-cell--sort-${t.sortDirection}`)), l;
    }), s = C(() => ({}));
    return (l, o) => (m(), Se(ze(e.component), {
      class: T(r.value),
      style: ce(s.value),
      scope: n.value ? e.scope : void 0
    }, {
      default: je(() => [
        M(l.$slots, "default")
      ]),
      _: 3
    }, 8, ["class", "style", "scope"]));
  }
}, Zp = {
  __name: "TableHead",
  setup(e) {
    const t = Le("tableContext", {
      size: "md",
      dense: !1,
      hover: !1,
      striped: !1,
      stickyHeader: !1
    }), a = C(() => {
      const n = ["wc-table-head"];
      return t.stickyHeader && n.push("wc-table-head--sticky"), n;
    });
    return (n, r) => (m(), y("thead", {
      class: T(a.value)
    }, [
      M(n.$slots, "default")
    ], 2));
  }
}, em = {
  __name: "TableRow",
  props: {
    hover: {
      type: Boolean,
      default: void 0
    },
    selected: {
      type: Boolean,
      default: !1
    },
    clickable: {
      type: Boolean,
      default: !1
    }
  },
  emits: ["click"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = Le("tableContext", {
      size: "md",
      dense: !1,
      hover: !1,
      striped: !1
    }), s = C(() => {
      const o = ["wc-table-row"];
      return ((a.hover !== void 0 ? a.hover : r.hover) || a.clickable) && o.push("wc-table-row--hover"), a.selected && o.push("wc-table-row--selected"), a.clickable && o.push("wc-table-row--clickable"), o;
    }), l = (o) => {
      a.clickable && n("click", o);
    };
    return (o, u) => (m(), y("tr", {
      class: T(s.value),
      onClick: l
    }, [
      M(o.$slots, "default")
    ], 2));
  }
}, bd = { class: "wc-tabs-wrapper" }, wd = ["disabled", "onClick"], xd = { class: "wc-tab-content mt-6" }, tm = {
  __name: "Tabs",
  props: {
    tabs: {
      type: Array,
      required: !0,
      validator: (e) => e.every((t) => t.title)
    },
    modelValue: {
      type: Number,
      default: 0
    },
    variant: {
      type: String,
      default: "default",
      validator: (e) => ["default", "pills", "underline"].includes(e)
    }
  },
  emits: ["update:modelValue", "change"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(a.modelValue), s = C(() => a.tabs[r.value]), l = C(() => {
      const i = ["wc-tabs"];
      switch (a.variant) {
        case "pills":
          i.push("wc-tabs--pills");
          break;
        case "underline":
          i.push("wc-tabs--underline");
          break;
        default:
          i.push("wc-tabs--default");
      }
      return i;
    }), o = (i) => {
      var v;
      const c = "wc-tab", d = r.value === i ? "wc-tab--active" : "", p = (v = a.tabs[i]) != null && v.disabled ? "opacity-50 cursor-not-allowed" : "";
      let h = "";
      return a.variant === "underline" && (h = "border-b-2 border-transparent rounded-none px-4 py-2 -mb-px", r.value === i && (h += " border-primary-500 bg-transparent text-primary-600 dark:text-primary-400")), [c, d, p, h];
    }, u = (i) => {
      var c;
      (c = a.tabs[i]) != null && c.disabled || (r.value = i, n("update:modelValue", i), n("change", i, a.tabs[i]));
    };
    return Re(
      () => a.modelValue,
      (i) => {
        r.value = i;
      }
    ), (i, c) => (m(), y("div", bd, [
      _("div", {
        class: T(l.value)
      }, [
        (m(!0), y(ke, null, Ce(e.tabs, (d, p) => (m(), y("button", {
          key: d.key || p,
          class: T(o(p)),
          disabled: d.disabled,
          type: "button",
          onClick: (h) => u(p)
        }, I(d.title), 11, wd))), 128))
      ], 2),
      _("div", xd, [
        M(i.$slots, "default", {
          activeTab: s.value,
          activeIndex: r.value
        })
      ])
    ]));
  }
}, kd = ({
  tabs: e = [],
  activeIndex: t,
  onChange: a,
  variant: n = "default",
  children: r,
  className: s = "",
  ...l
}) => {
  const [o, u] = te(t || 0), i = t !== void 0, c = i ? t : o;
  ve(() => {
    i && u(t);
  }, [t, i]);
  const d = [
    "wc-tabs",
    n === "pills" && "wc-tabs--pills",
    n === "underline" && "wc-tabs--underline",
    (n === "default" || !["pills", "underline"].includes(n)) && "wc-tabs--default",
    s
  ].filter(Boolean).join(" "), p = (g, x) => {
    const $ = ["wc-tab"];
    return c === g && $.push("wc-tab--active"), x && $.push("opacity-50 cursor-not-allowed"), $.join(" ");
  }, h = (g, x) => {
    x.disabled || (i || u(g), a && a(g, x));
  }, v = e[c];
  return /* @__PURE__ */ f.jsxs("div", { className: "wc-tabs-wrapper", ...l, children: [
    /* @__PURE__ */ f.jsx("div", { className: d, children: e.map((g, x) => /* @__PURE__ */ f.jsx(
      "button",
      {
        className: p(x, g.disabled),
        onClick: () => h(x, g),
        disabled: g.disabled,
        type: "button",
        children: g.title
      },
      g.key || x
    )) }),
    /* @__PURE__ */ f.jsx("div", { className: "wc-tab-content mt-6", children: typeof r == "function" ? r({ activeTab: v, activeIndex: c }) : r })
  ] });
};
kd.displayName = "Tabs";
const _d = ["for"], Cd = {
  key: 0,
  class: "wc-textfield__required required-indicator"
}, Sd = {
  key: 0,
  class: "wc-textfield__adornment wc-textfield__adornment--start adornment start-adornment"
}, $d = ["id", "type", "placeholder", "disabled", "readonly", "required", "value", "autocomplete"], jd = ["id", "placeholder", "disabled", "readonly", "required", "rows", "value"], Nd = {
  key: 3,
  class: "wc-textfield__adornment wc-textfield__adornment--end adornment end-adornment"
}, Td = {
  key: 0,
  class: "wc-textfield__error-icon",
  fill: "currentColor",
  viewBox: "0 0 20 20"
}, Ed = { key: 0 }, Id = {
  __name: "TextField",
  props: {
    modelValue: {
      type: [String, Number],
      default: ""
    },
    label: {
      type: String,
      default: ""
    },
    type: {
      type: String,
      default: "text"
    },
    placeholder: {
      type: String,
      default: ""
    },
    disabled: {
      type: Boolean,
      default: !1
    },
    readonly: {
      type: Boolean,
      default: !1
    },
    required: {
      type: Boolean,
      default: !1
    },
    error: {
      type: String,
      default: ""
    },
    helperText: {
      type: String,
      default: ""
    },
    size: {
      type: String,
      default: "md",
      validator: (e) => ["sm", "md", "lg"].includes(e)
    },
    variant: {
      type: String,
      default: "outlined",
      validator: (e) => ["outlined", "filled", "standard"].includes(e)
    },
    fullWidth: {
      type: Boolean,
      default: !1
    },
    multiline: {
      type: Boolean,
      default: !1
    },
    rows: {
      type: Number,
      default: 4
    },
    startAdornment: String,
    endAdornment: String,
    autocomplete: String
  },
  emits: ["update:modelValue", "focus", "blur", "keydown"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = ut(), s = A(`textfield-${(r == null ? void 0 : r.uid) || Math.random().toString(36).substr(2, 9)}`), l = A(!1), o = C(() => {
      const v = ["wc-textfield__label"];
      return v.push(`wc-textfield__label--${a.size}`), a.error && v.push("wc-textfield__label--error"), v;
    }), u = C(() => {
      const v = ["wc-textfield__container"];
      return v.push(`wc-textfield__container--${a.variant}`), v.push(`wc-textfield__container--${a.size}`), a.fullWidth && v.push("wc-textfield__container--full-width"), a.disabled && v.push("wc-textfield__container--disabled"), a.error && v.push("wc-textfield__container--error"), l.value && v.push("wc-textfield__container--focused"), v;
    }), i = C(() => {
      const v = ["wc-textfield__input"];
      return v.push(`wc-textfield__input--${a.size}`), a.multiline && v.push("wc-textfield__textarea"), v;
    }), c = (v) => {
      n("update:modelValue", v.target.value);
    }, d = (v) => {
      l.value = !0, n("focus", v);
    }, p = (v) => {
      l.value = !1, n("blur", v);
    }, h = (v) => {
      n("keydown", v);
    };
    return (v, g) => (m(), y("div", {
      class: T(["wc-textfield", { "wc-textfield--full-width": e.fullWidth, "wc-textfield--multiline": e.multiline }])
    }, [
      e.label ? (m(), y("label", {
        key: 0,
        for: s.value,
        class: T(o.value)
      }, [
        he(I(e.label) + " ", 1),
        e.required ? (m(), y("span", Cd, "*")) : j("", !0)
      ], 10, _d)) : j("", !0),
      _("div", {
        class: T(u.value)
      }, [
        v.$slots.startAdornment || e.startAdornment ? (m(), y("div", Sd, [
          M(v.$slots, "startAdornment", {}, () => [
            _("span", null, I(e.startAdornment), 1)
          ], !0)
        ])) : j("", !0),
        e.multiline ? (m(), y("textarea", ot({
          key: 2,
          id: s.value,
          class: i.value,
          placeholder: e.placeholder,
          disabled: e.disabled,
          readonly: e.readonly,
          required: e.required,
          rows: e.rows,
          value: e.modelValue
        }, v.$attrs, {
          onInput: c,
          onFocus: d,
          onBlur: p
        }), null, 16, jd)) : (m(), y("input", ot({
          key: 1,
          id: s.value,
          class: i.value,
          type: e.type,
          placeholder: e.placeholder,
          disabled: e.disabled,
          readonly: e.readonly,
          required: e.required,
          value: e.modelValue,
          autocomplete: e.autocomplete
        }, v.$attrs, {
          onInput: c,
          onFocus: d,
          onBlur: p,
          onKeydown: h
        }), null, 16, $d)),
        v.$slots.endAdornment || e.endAdornment || e.error ? (m(), y("div", Nd, [
          e.error ? (m(), y("svg", Td, g[0] || (g[0] = [
            _("path", {
              "fill-rule": "evenodd",
              d: "M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7 4a1 1 0 11-2 0 1 1 0 012 0zm-1-9a1 1 0 00-1 1v4a1 1 0 102 0V6a1 1 0 00-1-1z",
              "clip-rule": "evenodd"
            }, null, -1)
          ]))) : j("", !0),
          M(v.$slots, "endAdornment", {}, () => [
            e.endAdornment ? (m(), y("span", Ed, I(e.endAdornment), 1)) : j("", !0)
          ], !0)
        ])) : j("", !0)
      ], 2),
      e.error || e.helperText ? (m(), y("div", {
        key: 1,
        class: T(["wc-textfield__helper-text helper-text helper-text-content", { "wc-textfield__helper-text--error error-text": e.error }])
      }, I(e.error || e.helperText), 3)) : j("", !0)
    ], 2));
  }
}, am = /* @__PURE__ */ me(Id, [["__scopeId", "data-v-59d034dc"]]), _n = (e, t, a = "") => {
  const r = ["flex items-center w-full"];
  return e === "dense" ? r.push("min-h-12 py-2") : r.push("min-h-16 py-3"), t || r.push("px-4 sm:px-6 lg:px-8"), a && r.push(a), r.join(" ");
}, nm = {
  __name: "Toolbar",
  props: {
    variant: {
      type: String,
      default: "regular",
      validator: (e) => ["regular", "dense"].includes(e)
    },
    disableGutters: {
      type: Boolean,
      default: !1
    },
    class: {
      type: [String, Array, Object],
      default: ""
    },
    style: {
      type: [String, Object],
      default: () => ({})
    }
  },
  setup(e) {
    const t = e;
    function a(r) {
      return r ? typeof r == "string" ? r : Array.isArray(r) ? r.filter(Boolean).join(" ") : typeof r == "object" ? Object.entries(r).filter(([, s]) => s).map(([s]) => s).join(" ") : "" : "";
    }
    const n = C(() => {
      const r = a(t.class);
      return _n(t.variant, t.disableGutters, r);
    });
    return (r, s) => (m(), y("div", {
      class: T(n.value),
      style: ce(e.style)
    }, [
      M(r.$slots, "default")
    ], 6));
  }
}, rm = ({
  children: e,
  variant: t = "regular",
  disableGutters: a = !1,
  className: n = "",
  style: r = {},
  ...s
}) => {
  const l = _n(t, a, n);
  return /* @__PURE__ */ f.jsx("div", { className: l, style: r, ...s, children: e });
}, $a = {
  top: "wc-tooltip--top",
  bottom: "wc-tooltip--bottom",
  left: "wc-tooltip--left",
  right: "wc-tooltip--right"
}, Bd = ["top", "bottom", "left", "right"];
function Cn(e) {
  return Bd.includes(e);
}
function Sn(e) {
  return $a[e] || $a.top;
}
const sm = /* @__PURE__ */ Fe({
  __name: "Tooltip",
  props: {
    text: {},
    placement: { default: "top" },
    className: { default: "" }
  },
  setup(e) {
    const t = e;
    Cn(t.placement) || console.warn(`Invalid tooltip placement: ${t.placement}. Using 'top' as default.`);
    const a = A(!1), n = C(() => Sn(t.placement));
    return (r, s) => (m(), y("span", {
      class: T(["wc-tooltip-wrapper relative inline-block", r.className]),
      onMouseenter: s[0] || (s[0] = (l) => a.value = !0),
      onMouseleave: s[1] || (s[1] = (l) => a.value = !1)
    }, [
      M(r.$slots, "default"),
      Ge(Ke, { name: "tooltip-fade" }, {
        default: je(() => [
          a.value ? (m(), y("div", {
            key: 0,
            class: T(["wc-tooltip absolute z-50 px-2 py-1 rounded text-xs whitespace-nowrap", n.value])
          }, I(r.text), 3)) : j("", !0)
        ]),
        _: 1
      })
    ], 34));
  }
});
function lm({
  text: e,
  placement: t = "top",
  // 'top' | 'bottom' | 'left' | 'right'
  children: a,
  className: n = ""
}) {
  Cn(t) || console.warn(`Invalid tooltip placement: ${t}. Using 'top' as default.`);
  const [r, s] = te(!1), [l, o] = te(!1), u = Sn(t), i = () => {
    s(!0), o(!0);
  }, c = () => {
    s(!1), setTimeout(() => o(!1), 150);
  };
  return /* @__PURE__ */ f.jsxs(
    "span",
    {
      className: `wc-tooltip-wrapper relative inline-block ${n}`,
      onMouseEnter: i,
      onMouseLeave: c,
      children: [
        a,
        (r || l) && /* @__PURE__ */ f.jsx(
          "div",
          {
            className: `wc-tooltip absolute z-50 px-2 py-1 rounded text-xs whitespace-nowrap ${u} ${r ? "tooltip-fade-enter-to" : "tooltip-fade-leave-to"}`,
            children: e
          }
        )
      ]
    }
  );
}
const Rd = {
  h1: "h1",
  h2: "h2",
  h3: "h3",
  h4: "h4",
  h5: "h5",
  h6: "h6",
  subtitle1: "h6",
  subtitle2: "h6",
  body1: "p",
  body2: "p",
  caption: "span",
  overline: "span",
  button: "span"
}, Pd = {
  h1: "text-6xl font-light tracking-tight",
  h2: "text-5xl font-light tracking-tight",
  h3: "text-4xl font-normal",
  h4: "text-3xl font-normal",
  h5: "text-2xl font-normal",
  h6: "text-xl font-medium",
  subtitle1: "text-base font-normal",
  subtitle2: "text-sm font-medium",
  body1: "text-base font-normal",
  body2: "text-sm font-normal",
  caption: "text-xs font-normal",
  overline: "text-xs font-medium uppercase tracking-wide",
  button: "text-sm font-medium uppercase tracking-wide"
}, Dd = {
  inherit: "text-inherit",
  primary: "text-primary-600 dark:text-primary-400",
  secondary: "text-neutral-600 dark:text-neutral-400",
  success: "text-success-600 dark:text-success-400",
  warning: "text-warning-600 dark:text-warning-400",
  error: "text-error-600 dark:text-error-400",
  textPrimary: "text-neutral-900 dark:text-neutral-100",
  textSecondary: "text-neutral-600 dark:text-neutral-400",
  textDisabled: "text-neutral-400 dark:text-neutral-600"
}, Vd = {
  left: "text-left",
  center: "text-center",
  right: "text-right",
  justify: "text-justify"
}, $n = {
  h1: "1.2",
  h2: "1.2",
  h3: "1.3",
  h4: "1.3",
  h5: "1.4",
  h6: "1.4",
  subtitle1: "1.5",
  subtitle2: "1.5",
  body1: "1.6",
  body2: "1.6",
  caption: "1.4",
  overline: "1.4",
  button: "1.4"
};
function jn(e, t) {
  return t || Rd[e] || "p";
}
function Nn(e, t, a, n, r, s = "") {
  return [
    Pd[e],
    Dd[t],
    a !== "inherit" ? Vd[a] : null,
    n ? "mb-4" : null,
    r ? "truncate" : null,
    s
  ].filter(Boolean).join(" ");
}
const om = {
  __name: "Typography",
  props: {
    variant: {
      type: String,
      default: "body1",
      validator: (e) => [
        "h1",
        "h2",
        "h3",
        "h4",
        "h5",
        "h6",
        "subtitle1",
        "subtitle2",
        "body1",
        "body2",
        "caption",
        "overline",
        "button"
      ].includes(e)
    },
    component: {
      type: String,
      default: ""
    },
    color: {
      type: String,
      default: "inherit",
      validator: (e) => [
        "inherit",
        "primary",
        "secondary",
        "success",
        "warning",
        "error",
        "textPrimary",
        "textSecondary",
        "textDisabled"
      ].includes(e)
    },
    align: {
      type: String,
      default: "inherit",
      validator: (e) => ["inherit", "left", "center", "right", "justify"].includes(e)
    },
    gutterBottom: {
      type: Boolean,
      default: !1
    },
    noWrap: {
      type: Boolean,
      default: !1
    }
  },
  setup(e) {
    const t = e, a = C(() => jn(t.variant, t.component)), n = C(
      () => Nn(
        t.variant,
        t.color,
        t.align,
        t.gutterBottom,
        t.noWrap
      )
    ), r = C(() => ({
      lineHeight: $n[t.variant]
    }));
    return (s, l) => (m(), Se(ze(a.value), {
      class: T(n.value),
      style: ce(r.value)
    }, {
      default: je(() => [
        M(s.$slots, "default")
      ]),
      _: 3
    }, 8, ["class", "style"]));
  }
}, Md = ({
  variant: e = "body1",
  component: t,
  color: a = "inherit",
  align: n = "inherit",
  gutterBottom: r = !1,
  noWrap: s = !1,
  children: l,
  className: o = "",
  style: u = {},
  ...i
}) => {
  const c = jn(e, t), d = Nn(e, a, n, r, s, o), p = {
    lineHeight: $n[e],
    ...u
  };
  return /* @__PURE__ */ f.jsx(c, { className: d, style: p, ...i, children: l });
};
Md.displayName = "Typography";
class Tn {
  constructor(t, a = {}) {
    this.text = t, this.speed = a.speed || 100, this.pause = a.pause || 1500, this.loop = a.loop || !1, this.erase = a.erase || !1, this.index = 0, this.direction = 1, this.timer = null, this.onUpdate = a.onUpdate || (() => {
    });
  }
  step() {
    this.direction === 1 ? this.index < this.text.length ? (this.index += 1, this.onUpdate(this.text.slice(0, this.index))) : this.loop ? this.erase ? this.direction = -1 : (this.stop(), setTimeout(() => {
      this.index = 0, this.onUpdate(""), this.start();
    }, this.pause)) : this.stop() : this.index > 0 ? (this.index -= 1, this.onUpdate(this.text.slice(0, this.index))) : this.direction = 1;
  }
  start() {
    this.stop(), this.timer = setInterval(() => this.step(), this.speed);
  }
  stop() {
    this.timer && (clearInterval(this.timer), this.timer = null);
  }
  reset() {
    this.stop(), this.index = 0, this.direction = 1, this.onUpdate("");
  }
  updateText(t) {
    this.text = t, this.reset(), this.start();
  }
}
const Od = {
  name: "TypingText",
  props: {
    text: { type: String, default: "Hello, Watercolor UI!" },
    speed: { type: Number, default: 100 },
    // ms per char
    pause: { type: Number, default: 1500 },
    // pause before delete/retype
    loop: { type: Boolean, default: !1 },
    erase: { type: Boolean, default: !1 },
    // if true, erase then loop
    showCursor: { type: Boolean, default: !0 }
  },
  setup(e) {
    const t = A("");
    let a = null;
    const n = () => {
      a && a.stop(), a = new Tn(e.text, {
        speed: e.speed,
        pause: e.pause,
        loop: e.loop,
        erase: e.erase,
        onUpdate: (r) => {
          t.value = r;
        }
      }), a.start();
    };
    return Pe(n), Ze(() => {
      a && a.stop();
    }), Re(() => [e.text, e.speed, e.pause, e.loop, e.erase], n), { displayText: t };
  }
}, Ad = { class: "typing-wrapper" }, Ld = { class: "typing-text" }, zd = {
  key: 0,
  class: "typing-cursor"
};
function Fd(e, t, a, n, r, s) {
  return m(), y("span", Ad, [
    _("span", Ld, I(n.displayText), 1),
    a.showCursor ? (m(), y("span", zd)) : j("", !0)
  ]);
}
const im = /* @__PURE__ */ me(Od, [["render", Fd], ["__scopeId", "data-v-e1549f69"]]), qd = ({
  text: e = "Hello, Watercolor UI!",
  speed: t = 100,
  pause: a = 1500,
  loop: n = !1,
  erase: r = !1,
  showCursor: s = !0,
  className: l = "",
  style: o = {},
  ...u
}) => {
  const [i, c] = te(""), d = Te(null);
  return ve(() => (d.current = new Tn(e, {
    speed: t,
    pause: a,
    loop: n,
    erase: r,
    onUpdate: c
  }), d.current.start(), () => {
    d.current && d.current.stop();
  }), [e, t, a, n, r]), /* @__PURE__ */ f.jsxs("span", { className: `typing-wrapper ${l}`, style: o, ...u, children: [
    /* @__PURE__ */ f.jsx("span", { className: "typing-text", children: i }),
    s && /* @__PURE__ */ f.jsx("span", { className: "typing-cursor" })
  ] });
};
qd.displayName = "TypingText";
const Wd = ["id", "name", "onInput", "onKeydown"], cm = /* @__PURE__ */ Fe({
  __name: "VerificationCodeInput",
  props: {
    length: {
      type: Number,
      default: 6
    },
    modelValue: {
      type: String,
      default: ""
    },
    autoFocus: {
      type: Boolean,
      default: !1
    }
  },
  emits: ["update:modelValue", "complete"],
  setup(e, { emit: t }) {
    const a = e, n = t, r = A(Array.from({ length: a.length })), s = A([]);
    Re(
      () => a.modelValue,
      (d) => {
        d.length === a.length && n("complete", d), r.value.forEach((p, h) => {
          s.value[h] && (s.value[h].value = d[h] || "");
        });
      },
      { immediate: !0 }
    );
    function l(d) {
      lt(() => {
        const p = s.value[d];
        p && p.focus();
      });
    }
    function o(d, p) {
      const h = p.target, v = h.value.replace(/[^0-9a-zA-Z]/g, "");
      h.value = v.toUpperCase();
      const g = s.value.map((x) => x.value).join("");
      n("update:modelValue", g), v && d < a.length - 1 && l(d + 1), g.length === a.length && n("complete", g);
    }
    function u(d, p) {
      !p.target.value && d > 0 && l(d - 1);
    }
    function i(d) {
      d.target.select();
    }
    function c(d) {
      var h;
      const p = (((h = d.clipboardData) == null ? void 0 : h.getData("text")) || "").trim().slice(0, a.length);
      p && (p.split("").forEach((v, g) => {
        s.value[g] && (s.value[g].value = v);
      }), n("update:modelValue", p), p.length === a.length && n("complete", p));
    }
    return Pe(() => {
      a.autoFocus && l(0);
    }), (d, p) => (m(), y("div", {
      class: "wc-input-code",
      onPaste: Ae(c, ["prevent"])
    }, [
      (m(!0), y(ke, null, Ce(r.value, (h, v) => (m(), y("input", {
        key: v,
        ref_for: !0,
        ref_key: "inputs",
        ref: s,
        id: `wc-input-code-${v}`,
        name: `wc-input-code-${v}`,
        class: "wc-input-code__box",
        type: "text",
        maxlength: "1",
        autocomplete: "one-time-code",
        inputmode: "numeric",
        onInput: (g) => o(v, g),
        onKeydown: We(Ae((g) => u(v, g), ["prevent"]), ["backspace"]),
        onFocus: p[0] || (p[0] = (g) => i(g))
      }, null, 40, Wd))), 128))
    ], 32));
  }
});
function bt(e) {
  const t = Math.floor(e / 60), a = Math.floor(e % 60).toString().padStart(2, "0");
  return `${t}:${a}`;
}
function En(e, t) {
  const a = e.currentTarget.getBoundingClientRect();
  return (e.clientX - a.left) / a.width * t;
}
function In(e) {
  var t, a;
  e && (document.fullscreenElement ? (a = document.exitFullscreen) == null || a.call(document) : (t = e.requestFullscreen) == null || t.call(e));
}
const Hd = {
  name: "VideoPlayer",
  props: {
    src: { type: String, required: !0 },
    autoplay: { type: Boolean, default: !1 },
    loop: { type: Boolean, default: !1 }
  },
  setup(e) {
    const t = A(null), a = A(!1), n = A(0), r = A(0.7), s = A(!1), l = A(0), o = A(0), u = C(() => bt(o.value)), i = C(() => bt(l.value)), c = () => {
      t.value && (t.value.paused ? t.value.play() : t.value.pause());
    }, d = () => {
      t.value && (l.value = t.value.duration || 0, o.value = t.value.currentTime, n.value = l.value ? o.value / l.value * 100 : 0, a.value = !t.value.paused);
    }, p = (x) => {
      t.value && (t.value.currentTime = En(x, l.value));
    }, h = () => {
      s.value = !s.value, t.value && (t.value.muted = s.value);
    }, v = () => {
      var x;
      In((x = t.value) == null ? void 0 : x.parentElement);
    };
    Re(r, (x) => {
      t.value && (t.value.volume = x);
    });
    const g = () => {
      a.value = !1;
    };
    return Pe(() => {
      t.value && (t.value.volume = r.value, t.value.muted = s.value, t.value.loop = e.loop, e.autoplay && t.value.play());
    }), {
      video: t,
      playing: a,
      progress: n,
      togglePlay: c,
      updateProgress: d,
      seek: p,
      volume: r,
      muted: s,
      toggleMute: h,
      handleFullscreen: v,
      formattedCurrent: u,
      formattedDuration: i,
      onEnded: g
    };
  }
}, Ud = { class: "video-wrapper" }, Yd = ["src"], Gd = { class: "controls" }, Kd = { class: "time" };
function Jd(e, t, a, n, r, s) {
  return m(), y("div", Ud, [
    _("video", {
      ref: "video",
      class: "video-el",
      src: a.src,
      onTimeupdate: t[0] || (t[0] = (...l) => n.updateProgress && n.updateProgress(...l)),
      onEnded: t[1] || (t[1] = (...l) => n.onEnded && n.onEnded(...l))
    }, null, 40, Yd),
    _("div", Gd, [
      _("button", {
        class: "ctrl-btn",
        onClick: t[2] || (t[2] = (...l) => n.togglePlay && n.togglePlay(...l))
      }, I(n.playing ? "❚❚" : "▶️"), 1),
      _("div", {
        class: "progress",
        onClick: t[3] || (t[3] = (l) => n.seek(l))
      }, [
        _("div", {
          class: "progress-bar",
          style: ce({ width: n.progress + "%" })
        }, null, 4)
      ]),
      _("span", Kd, I(n.formattedCurrent) + " / " + I(n.formattedDuration), 1),
      _("button", {
        class: "ctrl-btn",
        onClick: t[4] || (t[4] = (...l) => n.toggleMute && n.toggleMute(...l))
      }, I(n.muted ? "🔇" : "🔊"), 1),
      Ea(_("input", {
        "onUpdate:modelValue": t[5] || (t[5] = (l) => n.volume = l),
        class: "volume",
        type: "range",
        min: "0",
        max: "1",
        step: "0.05"
      }, null, 512), [
        [
          Ia,
          n.volume,
          void 0,
          { number: !0 }
        ]
      ]),
      _("button", {
        class: "ctrl-btn",
        onClick: t[6] || (t[6] = (...l) => n.handleFullscreen && n.handleFullscreen(...l))
      }, " ⛶ ")
    ])
  ]);
}
const um = /* @__PURE__ */ me(Hd, [["render", Jd], ["__scopeId", "data-v-f494d003"]]), Xd = ({
  src: e,
  autoplay: t = !1,
  loop: a = !1,
  className: n = "",
  style: r = {},
  ...s
}) => {
  const l = Te(null), [o, u] = te(!1), [i, c] = te(0), [d, p] = te(0.7), [h, v] = te(!1), [g, x] = te(0), [$, B] = te(0), S = bt($), k = bt(g), w = () => {
    const N = l.current;
    N && (N.paused ? N.play() : N.pause());
  }, E = () => {
    const N = l.current;
    N && (x(N.duration || 0), B(N.currentTime), c(N.duration ? N.currentTime / N.duration * 100 : 0), u(!N.paused));
  }, W = (N) => {
    const O = l.current;
    O && (O.currentTime = En(N, g));
  }, R = () => {
    v((N) => {
      const O = !N;
      return l.current && (l.current.muted = O), O;
    });
  }, Y = () => {
    var N;
    In((N = l.current) == null ? void 0 : N.parentElement);
  };
  return ve(() => {
    l.current && (l.current.volume = d);
  }, [d]), ve(() => {
    const N = l.current;
    N && (N.muted = h, N.loop = a, t && N.play());
  }, [t, a, h]), /* @__PURE__ */ f.jsxs("div", { className: `video-wrapper ${n}`, style: r, ...s, children: [
    /* @__PURE__ */ f.jsx(
      "video",
      {
        ref: l,
        className: "video-el",
        src: e,
        onTimeUpdate: E,
        onEnded: () => u(!1)
      }
    ),
    /* @__PURE__ */ f.jsxs("div", { className: "controls", children: [
      /* @__PURE__ */ f.jsx("button", { className: "ctrl-btn", onClick: w, children: o ? "❚❚" : "▶️" }),
      /* @__PURE__ */ f.jsx("div", { className: "progress", onClick: W, children: /* @__PURE__ */ f.jsx("div", { className: "progress-bar", style: { width: `${i}%` } }) }),
      /* @__PURE__ */ f.jsxs("span", { className: "time", children: [
        S,
        " / ",
        k
      ] }),
      /* @__PURE__ */ f.jsx("button", { className: "ctrl-btn", onClick: R, children: h ? "🔇" : "🔊" }),
      /* @__PURE__ */ f.jsx("input", { className: "volume", type: "range", min: "0", max: "1", step: "0.05", value: d, onChange: (N) => p(Number(N.target.value)) }),
      /* @__PURE__ */ f.jsx("button", { className: "ctrl-btn", onClick: Y, children: "⛶" })
    ] })
  ] });
};
Xd.displayName = "VideoPlayer";
const be = {
  content: "",
  cross: !1,
  debug: !1,
  fontSize: 14,
  fontFamily: "sans-serif",
  fontStyle: "normal",
  fontVariant: "",
  fontWeight: 400,
  fontColor: "var(--wc-neutral-500, rgba(128,128,128,.3))",
  fullscreen: !1,
  globalRotate: 0,
  lineHeight: 14,
  height: 64,
  width: 200,
  image: void 0,
  imageHeight: void 0,
  imageWidth: void 0,
  imageOpacity: 1,
  rotate: 0,
  selectable: !0,
  textAlign: "center",
  xGap: 48,
  yGap: 48,
  xOffset: 0,
  yOffset: 0,
  zIndex: 10
};
function Qd(e) {
  if (typeof e == "string" && e.startsWith("var(")) {
    const t = e.match(/--[^, )]+/);
    if (t)
      return getComputedStyle(document.documentElement).getPropertyValue(t[0]).trim() || e;
  }
  return e;
}
function Bn(e) {
  const t = document.createElement("canvas"), a = t.getContext("2d");
  let n = e.width, r = e.height;
  if (!e.image && e.content) {
    a.font = `${e.fontStyle} ${e.fontVariant} ${e.fontWeight} ${e.fontSize}px ${e.fontFamily}`;
    const u = e.content.split(/\n/), i = Math.max(...u.map((d) => a.measureText(d).width)), c = e.lineHeight * u.length;
    n = Math.max(n, Math.ceil(i)), r = Math.max(r, Math.ceil(c));
  }
  if (n += e.xGap, r += e.yGap, t.width = n, t.height = r, e.image)
    return new Promise((u) => {
      const i = new Image();
      i.crossOrigin = "anonymous", i.onload = () => {
        t.width = (e.imageWidth || i.width) + e.xGap, t.height = (e.imageHeight || i.height) + e.yGap, a.clearRect(0, 0, t.width, t.height), a.globalAlpha = e.imageOpacity, a.translate(t.width / 2, t.height / 2), a.rotate(e.rotate * Math.PI / 180);
        const c = e.imageWidth || i.width, d = e.imageHeight || i.height;
        a.drawImage(i, -c / 2, -d / 2, c, d), u(t.toDataURL());
      }, i.src = e.image;
    });
  const s = (e.content || "").split(/\n/);
  a.textAlign = e.textAlign || "center", a.textBaseline = "middle";
  const l = e.fontColor.startsWith("var(") ? Qd(e.fontColor) : e.fontColor;
  a.fillStyle = l, a.font = `${e.fontStyle} ${e.fontVariant} ${e.fontWeight} ${e.fontSize}px ${e.fontFamily}`, a.translate(n / 2, r / 2), a.rotate(e.rotate * Math.PI / 180);
  const o = -(s.length - 1) * e.lineHeight / 2;
  return s.forEach((u, i) => {
    const c = o + i * e.lineHeight;
    a.fillText(u, 0, c);
  }), Promise.resolve(t.toDataURL());
}
function Rn(e, t) {
  const a = {
    position: e.fullscreen ? "fixed" : "absolute",
    top: 0,
    left: 0,
    width: e.fullscreen ? "100vw" : "100%",
    height: e.fullscreen ? "100vh" : "100%",
    pointerEvents: e.selectable ? "none" : "auto",
    backgroundImage: `url(${t})`,
    backgroundRepeat: "repeat",
    backgroundPosition: `${e.xOffset}px ${e.yOffset}px`,
    zIndex: e.zIndex,
    transform: `rotate(${e.globalRotate}deg)`,
    mixBlendMode: "multiply"
  };
  return e.debug && (a.outline = "1px dashed red"), e.cross || (a.overflow = "hidden"), a;
}
const Zd = /* @__PURE__ */ Fe({
  __name: "Watermark",
  props: {
    content: String,
    cross: { type: Boolean, default: be.cross },
    debug: { type: Boolean, default: be.debug },
    fontSize: { type: Number, default: be.fontSize },
    fontFamily: { type: String, default: be.fontFamily },
    fontStyle: { type: String, default: be.fontStyle },
    fontVariant: { type: String, default: be.fontVariant },
    fontWeight: { type: Number, default: be.fontWeight },
    fontColor: { type: String, default: "var(--wc-neutral-500, rgba(128,128,128,.3))" },
    fullscreen: { type: Boolean, default: be.fullscreen },
    globalRotate: { type: Number, default: be.globalRotate },
    lineHeight: { type: Number, default: be.lineHeight },
    height: { type: Number, default: be.height },
    width: { type: Number, default: be.width },
    image: String,
    imageHeight: Number,
    imageWidth: Number,
    imageOpacity: { type: Number, default: be.imageOpacity },
    rotate: { type: Number, default: be.rotate },
    selectable: { type: Boolean, default: be.selectable },
    textAlign: { type: String, default: be.textAlign },
    xGap: { type: Number, default: be.xGap },
    yGap: { type: Number, default: be.yGap },
    xOffset: { type: Number, default: be.xOffset },
    yOffset: { type: Number, default: be.yOffset },
    zIndex: { type: Number, default: be.zIndex }
  },
  setup(e) {
    const t = e, a = A(""), n = C(() => !!t.content || !!t.image);
    async function r() {
      n.value && (a.value = await Bn(t));
    }
    Re(() => ({ ...t }), r, { immediate: !0, deep: !0 });
    const s = C(() => Rn(t, a.value));
    return (l, o) => (m(), y(ke, null, [
      n.value ? (m(), y("div", {
        key: 0,
        class: "wc-watermark",
        style: ce(s.value)
      }, null, 4)) : j("", !0),
      M(l.$slots, "default", {}, void 0, !0)
    ], 64));
  }
}), dm = /* @__PURE__ */ me(Zd, [["__scopeId", "data-v-91ae1756"]]), ef = (e) => {
  const t = { ...be, ...e }, [a, n] = te(""), r = !!t.content || !!t.image, s = Oe(() => {
    const {
      children: o,
      // eslint-disable-line @typescript-eslint/no-unused-vars
      ...u
    } = t;
    return JSON.stringify(u);
  }, [t]);
  ve(() => {
    if (!r) return;
    let o = !0;
    return Bn(t).then((u) => {
      o && n(u);
    }), () => {
      o = !1;
    };
  }, [s, r]);
  const l = Oe(() => r ? Rn(t, a) : {}, [a, r, t]);
  return r ? /* @__PURE__ */ f.jsxs(f.Fragment, { children: [
    /* @__PURE__ */ f.jsx("div", { className: "wc-watermark", style: l }),
    t.children
  ] }) : t.children || null;
};
ef.displayName = "Watermark";
function Pn(e) {
  const t = document.documentElement;
  e.primary && Object.entries(e.primary).forEach(([a, n]) => {
    t.style.setProperty(`--wc-primary-${a}`, n);
  }), e.secondary && Object.entries(e.secondary).forEach(([a, n]) => {
    t.style.setProperty(`--wc-secondary-${a}`, n);
  }), e.neutral && Object.entries(e.neutral).forEach(([a, n]) => {
    t.style.setProperty(`--wc-neutral-${a}`, n);
  }), e.success && Object.entries(e.success).forEach(([a, n]) => {
    t.style.setProperty(`--wc-success-${a}`, n);
  }), e.warning && Object.entries(e.warning).forEach(([a, n]) => {
    t.style.setProperty(`--wc-warning-${a}`, n);
  }), e.error && Object.entries(e.error).forEach(([a, n]) => {
    t.style.setProperty(`--wc-error-${a}`, n);
  }), e.info && Object.entries(e.info).forEach(([a, n]) => {
    t.style.setProperty(`--wc-info-${a}`, n);
  }), e.danger && Object.entries(e.danger).forEach(([a, n]) => {
    t.style.setProperty(`--wc-danger-${a}`, n);
  }), e.purple && Object.entries(e.purple).forEach(([a, n]) => {
    t.style.setProperty(`--wc-purple-${a}`, n);
  }), e.pink && Object.entries(e.pink).forEach(([a, n]) => {
    t.style.setProperty(`--wc-pink-${a}`, n);
  }), e.teal && Object.entries(e.teal).forEach(([a, n]) => {
    t.style.setProperty(`--wc-teal-${a}`, n);
  }), e.indigo && Object.entries(e.indigo).forEach(([a, n]) => {
    t.style.setProperty(`--wc-indigo-${a}`, n);
  }), e.fonts && Lt(e.fonts), e.radius && Object.entries(e.radius).forEach(([a, n]) => {
    const r = `--wc-radius-${a}`;
    t.style.setProperty(r, n);
  });
}
function fm(e) {
  console.warn("applyCSSTheme is deprecated. Use loadThemeConfig() for file-based themes.");
}
function Lt(e) {
  const t = document.documentElement, a = [];
  e.chinese && a.push(`"${e.chinese}"`), e.english && a.push(`"${e.english}"`);
  const n = e.fallback || '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, "Noto Sans", sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji"';
  a.push(n);
  const r = a.join(", ");
  t.style.setProperty("--wc-font-family", r), t.style.setProperty("--wc-font-chinese", e.chinese || ""), t.style.setProperty("--wc-font-english", e.english || ""), document.body.style.fontFamily = r;
}
function ja(e) {
  const t = document.documentElement;
  e ? t.classList.add("dark") : t.classList.remove("dark");
}
function pm() {
  return document.documentElement.classList.contains("dark");
}
const tf = {
  // 保留默认主题作为fallback
  default: {
    primary: {
      50: "#eff6ff",
      100: "#dbeafe",
      200: "#bfdbfe",
      300: "#93c5fd",
      400: "#60a5fa",
      500: "#3b82f6",
      600: "#2563eb",
      700: "#1d4ed8",
      800: "#1e40af",
      900: "#1e3a8a"
    },
    secondary: {
      50: "#f3f4ff",
      100: "#e5e7ff",
      200: "#c7d2fe",
      300: "#a5b4fc",
      400: "#818cf8",
      500: "#6366f1",
      600: "#4f46e5",
      700: "#4338ca",
      800: "#3730a3",
      900: "#312e81"
    }
  }
};
function Na(e) {
  if (console.warn("applyTheme is deprecated. Use loadThemeConfig() for file-based themes."), e === "default") {
    const t = tf[e];
    Pn({
      primary: t.primary,
      secondary: t.secondary
    });
  } else
    console.warn(`Theme "${e}" is no longer supported. Please use theme.config.json file.`);
}
const af = {
  // System default fonts
  system: {
    english: "system-ui",
    chinese: "system-ui",
    fallback: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif'
  },
  // Chinese-friendly font combination
  chinese: {
    chinese: "PingFang SC",
    english: "SF Pro Display",
    fallback: '"PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", "WenQuanYi Micro Hei", sans-serif'
  },
  // Modern English fonts
  modern: {
    english: "Inter",
    chinese: "Noto Sans SC",
    fallback: '"Inter", "Noto Sans SC", sans-serif'
  },
  // Elegant font combination
  elegant: {
    english: "Poppins",
    chinese: "Source Han Sans",
    fallback: '"Poppins", "Source Han Sans", "Noto Sans CJK SC", sans-serif'
  },
  // Readability first
  readable: {
    english: "IBM Plex Sans",
    chinese: "IBM Plex Sans SC",
    fallback: '"IBM Plex Sans", "IBM Plex Sans SC", sans-serif'
  },
  // Apple style
  apple: {
    english: "SF Pro Display",
    chinese: "PingFang SC",
    fallback: '"SF Pro Display", "PingFang SC", -apple-system, BlinkMacSystemFont, sans-serif'
  },
  // Google fonts
  google: {
    english: "Roboto",
    chinese: "Noto Sans SC",
    fallback: '"Roboto", "Noto Sans SC", sans-serif'
  }
};
function mm(e) {
  Lt(af[e]);
}
function hm() {
  const e = document.documentElement;
  return {
    chinese: e.style.getPropertyValue("--wc-font-chinese") || void 0,
    english: e.style.getPropertyValue("--wc-font-english") || void 0,
    fallback: e.style.getPropertyValue("--wc-font-family") || void 0
  };
}
async function nf(e = "/theme.config.json") {
  if (!(typeof window > "u" || typeof fetch > "u"))
    try {
      const t = await fetch(e, { cache: "no-store" });
      if (!t.ok) {
        console.info("[Watercolor UI] theme.config.json not found, using default theme");
        return;
      }
      const a = await t.json();
      Pn(a), a.fonts && Lt(a.fonts), console.info("[Watercolor UI] Theme loaded from theme.config.json");
    } catch (t) {
      console.warn("[Watercolor UI] 无法加载自定义 theme.config.json:", t), console.info("[Watercolor UI] Using default theme");
    }
}
typeof window < "u" && nf();
const Dn = {
  // 基础图标
  heart: "heart",
  star: "star",
  user: "user",
  home: "home",
  search: "search",
  menu: "menu",
  close: "x",
  check: "check",
  plus: "plus",
  minus: "minus",
  // 箭头图标
  arrowUp: "arrow-up",
  arrowDown: "arrow-down",
  arrowLeft: "arrow-left",
  arrowRight: "arrow-right",
  chevronUp: "chevron-up",
  chevronDown: "chevron-down",
  chevronLeft: "chevron-left",
  chevronRight: "chevron-right",
  // 状态图标
  info: "info",
  warning: "alert-triangle",
  error: "alert-circle",
  success: "check-circle",
  help: "help-circle",
  // 操作图标
  edit: "edit",
  delete: "trash-2",
  copy: "copy",
  download: "download",
  upload: "upload",
  share: "share",
  save: "save",
  print: "printer",
  // 媒体图标
  play: "play",
  pause: "pause",
  stop: "square",
  volume: "volume-2",
  volumeOff: "volume-x",
  // 通信图标
  mail: "mail",
  phone: "phone",
  message: "message-circle",
  // 设置图标
  settings: "settings",
  gear: "cog",
  lock: "lock",
  unlock: "unlock",
  // 文件图标
  file: "file",
  folder: "folder",
  image: "image",
  video: "video",
  // 社交图标
  github: "github",
  twitter: "twitter",
  facebook: "facebook",
  linkedin: "linkedin",
  // 加载图标
  loader: "loader",
  refresh: "refresh-cw",
  // 导航图标
  external: "external-link",
  link: "link",
  bookmark: "bookmark",
  // 购物图标
  cart: "shopping-cart",
  bag: "shopping-bag",
  credit: "credit-card",
  // 时间图标
  clock: "clock",
  calendar: "calendar",
  // 位置图标
  map: "map",
  location: "map-pin",
  // 天气图标
  sun: "sun",
  moon: "moon",
  cloud: "cloud",
  // 工具图标
  tool: "wrench",
  filter: "filter",
  sort: "arrow-up-down"
}, rf = {
  // 基础图标
  heart: "heart",
  star: "star",
  user: "user-circle",
  home: "home",
  search: "magnifying-glass",
  menu: "bars-3",
  close: "x-mark",
  check: "check",
  plus: "plus",
  minus: "minus",
  // 箭头图标
  arrowUp: "arrow-up",
  arrowDown: "arrow-down",
  arrowLeft: "arrow-left",
  arrowRight: "arrow-right",
  chevronUp: "chevron-up",
  chevronDown: "chevron-down",
  chevronLeft: "chevron-left",
  chevronRight: "chevron-right",
  // 状态图标
  info: "information-circle",
  warning: "exclamation-triangle",
  error: "x-circle",
  success: "check-circle",
  // 操作图标
  edit: "pencil",
  delete: "trash",
  copy: "document-duplicate",
  download: "arrow-down-tray",
  upload: "arrow-up-tray",
  share: "share",
  // 设置图标
  settings: "cog-6-tooth",
  lock: "lock-closed",
  unlock: "lock-open"
}, sf = {
  // 基础图标
  heart: "heart",
  star: "star",
  user: "user",
  home: "home",
  search: "search",
  menu: "menu",
  close: "x",
  check: "check",
  plus: "plus",
  minus: "minus",
  // 箭头图标
  arrowUp: "arrow-up",
  arrowDown: "arrow-down",
  arrowLeft: "arrow-left",
  arrowRight: "arrow-right",
  chevronUp: "chevron-up",
  chevronDown: "chevron-down",
  chevronLeft: "chevron-left",
  chevronRight: "chevron-right",
  // 状态图标
  info: "info",
  warning: "alert-triangle",
  error: "alert-circle",
  success: "check-circle",
  help: "help-circle",
  // 操作图标
  edit: "edit",
  delete: "trash-2",
  copy: "copy",
  download: "download",
  upload: "upload",
  share: "share",
  save: "save",
  print: "printer",
  // 媒体图标
  play: "play",
  pause: "pause",
  stop: "square",
  volume: "volume-2",
  volumeOff: "volume-x",
  // 通信图标
  mail: "mail",
  phone: "phone",
  message: "message-circle",
  // 设置图标
  settings: "settings",
  lock: "lock",
  // 文件图标
  file: "file",
  folder: "folder",
  image: "image",
  video: "video",
  // 社交图标
  github: "github",
  twitter: "twitter",
  facebook: "facebook",
  // 加载图标
  loader: "loader",
  refresh: "refresh-cw",
  // 导航图标
  external: "external-link",
  link: "link",
  bookmark: "bookmark",
  // 购物图标
  cart: "shopping-cart",
  bag: "shopping-bag",
  // 时间图标
  clock: "clock",
  calendar: "calendar",
  // 位置图标
  map: "map",
  location: "map-pin",
  // 天气图标
  sun: "sun",
  moon: "moon",
  cloud: "cloud"
};
function lf(e) {
  return {
    library: "lucide",
    variant: "outline",
    size: "md",
    color: "currentColor",
    strokeWidth: 2,
    ...e
  };
}
function vm(e, t = "lucide") {
  switch (t) {
    case "lucide":
      return Dn[e] || e;
    case "heroicons":
      return rf[e] || e;
    case "feather":
      return sf[e] || e;
    default:
      return e;
  }
}
const Ta = {
  xs: 16,
  sm: 20,
  md: 24,
  lg: 32,
  xl: 48
};
function ym(e) {
  return typeof e == "string" && e in Ta ? Ta[e] : e;
}
function Me(e, t = {}) {
  return lf({
    name: Dn[e],
    ...t
  });
}
const gm = {
  // 状态图标
  loading: Me("loader", { className: "wc-icon--spinning" }),
  success: Me("success", { color: "var(--wc-success-500)" }),
  warning: Me("warning", { color: "var(--wc-warning-500)" }),
  error: Me("error", { color: "var(--wc-error-500)" }),
  info: Me("info", { color: "var(--wc-info-500)" }),
  // 操作图标
  close: Me("close", { className: "wc-icon--clickable" }),
  menu: Me("menu", { className: "wc-icon--clickable" }),
  search: Me("search", { className: "wc-icon--clickable" }),
  // 导航图标
  back: Me("arrowLeft", { className: "wc-icon--clickable" }),
  forward: Me("arrowRight", { className: "wc-icon--clickable" }),
  up: Me("chevronUp", { className: "wc-icon--clickable" }),
  down: Me("chevronDown", { className: "wc-icon--clickable" })
}, of = {
  light: {
    primary: "#3b82f6",
    secondary: "#6b7280",
    success: "#10b981",
    warning: "#f59e0b",
    error: "#ef4444",
    info: "#06b6d4",
    muted: "#9ca3af"
  },
  dark: {
    primary: "#60a5fa",
    secondary: "#9ca3af",
    success: "#34d399",
    warning: "#fbbf24",
    error: "#f87171",
    info: "#22d3ee",
    muted: "#6b7280"
  }
};
function bm(e, t = "light") {
  return of[t][e] || e;
}
function Vn(e = "default", t = !1) {
  const a = localStorage.getItem("wc-color"), n = localStorage.getItem("wc-scheme");
  let r = a || e, s = n ? n === "dark" : t;
  return Na(r), ja(s), {
    get color() {
      return r;
    },
    get dark() {
      return s;
    },
    setColor: (u) => {
      u !== r && (r = u, Na(u), localStorage.setItem("wc-color", u));
    },
    toggleDark: () => {
      s = !s, ja(s), localStorage.setItem("wc-scheme", s ? "dark" : "light");
    }
  };
}
const Mn = Symbol("Water_ColorTheme"), rt = Vn();
function cf() {
  const e = A(rt.color), t = A(rt.dark);
  return { color: e, dark: t, setColor: (r) => {
    rt.setColor(r), e.value = r;
  }, toggleDark: () => {
    rt.toggleDark(), t.value = rt.dark;
  } };
}
function uf() {
  const e = cf();
  it(Mn, e);
}
function wm() {
  const e = Le(Mn);
  if (!e)
    throw new Error("No theme store provided. Call provideTheme() in root component.");
  return e;
}
Fe({
  name: "ThemeProvider",
  setup(e, { slots: t }) {
    return uf(), () => t.default ? t.default() : null;
  }
});
const On = ft(void 0), st = Vn(), xm = ({ children: e }) => {
  const [t, a] = te(st.color), [n, r] = te(st.dark), s = (o) => {
    st.setColor(o), a(o);
  }, l = () => {
    st.toggleDark(), r(st.dark);
  };
  return /* @__PURE__ */ f.jsx(On.Provider, { value: { color: t, setColor: s, dark: n, toggleDark: l }, children: e });
};
function km() {
  const e = qe(On);
  if (!e) throw new Error("useTheme must be used within ThemeProvider");
  return e;
}
export {
  kr as AccordionReact,
  mf as AccordionVue,
  vf as AlertReact,
  hf as AlertVue,
  gf as AppBarReact,
  yf as AppBarVue,
  bf as AvatarVue,
  Ur as BadgeReact,
  wf as BadgeVue,
  kf as BannerReact,
  xf as BannerVue,
  _f as Blockquote,
  Cf as BlockquoteReact,
  $f as BoxReact,
  Sf as BoxVue,
  Nf as BreadcrumbReact,
  jf as BreadcrumbVue,
  Vs as ButtonReact,
  Ds as ButtonVue,
  Tf as CardActionsVue,
  Ef as CardContentVue,
  Ya as CardReact,
  ds as CardVue,
  If as CheckboxVue,
  Rf as ChipReact,
  Bf as ChipVue,
  Df as CircularProgressReact,
  Pf as CircularProgressVue,
  Vf as ColorPicker,
  Mf as ColorPickerReact,
  Af as ContainerReact,
  Of as ContainerVue,
  zf as CopyReact,
  Lf as CopyVue,
  Ff as Countdown,
  qf as CountdownReact,
  Hf as DatePickerReact,
  Wf as DatePickerVue,
  Uf as DropdownVue,
  sf as FEATHER_ICONS,
  Yf as FabVue,
  Kf as Feature,
  $o as FeatureReact,
  Gf as Feed,
  co as FeedReact,
  Jf as FileInput,
  Ro as FileInputReact,
  Lo as FormControlLabelReact,
  Qf as FormControlLabelVue,
  Do as FormControlReact,
  Xf as FormControlVue,
  Fo as FormGroupReact,
  Zf as FormGroupVue,
  Ho as FormHelperTextReact,
  ep as FormHelperTextVue,
  Uo as GridReact,
  tp as GridVue,
  rf as HEROICONS,
  ap as HoverCard,
  li as HoverCardReact,
  gm as ICON_PRESETS,
  Ta as ICON_SIZES,
  of as ICON_THEMES,
  rp as IconButtonVue,
  bi as IconReact,
  np as IconVue,
  sp as ImageGallery,
  Zi as ImageGalleryReact,
  oc as InputReact,
  lp as InputVue,
  Dn as LUCIDE_ICONS,
  fp as ListItemIconReact,
  dp as ListItemIconVue,
  up as ListItemReact,
  mp as ListItemTextReact,
  pp as ListItemTextVue,
  cp as ListItemVue,
  ip as ListReact,
  op as ListVue,
  hp as Marquee,
  vp as MarqueeReact,
  yp as ModalVue,
  gp as NumberAnimation,
  bp as NumberAnimationReact,
  wp as Pagination,
  xp as PaginationReact,
  _p as PaperReact,
  kp as PaperVue,
  Cp as Paradox,
  Sp as ParadoxReact,
  $p as Popover,
  jp as PopoverReact,
  Np as PricingTable,
  Tp as PricingTableReact,
  pu as ProgressReact,
  Ep as ProgressVue,
  Bp as RadioGroupReact,
  Pp as RadioGroupVue,
  Rp as RadioReact,
  Ip as RadioVue,
  Dp as Rating,
  Vp as RatingReact,
  Mp as SelectVue,
  Ap as SkeletonReact,
  Op as SkeletonVue,
  Fp as SlideOver,
  qp as SlideOverReact,
  zp as SliderReact,
  Lp as SliderVue,
  Hp as SnackbarReact,
  Wp as SnackbarVue,
  Up as Spinner,
  Yp as SpinnerReact,
  gd as SwitchReact,
  Gp as SwitchVue,
  Xp as TableBodyVue,
  Qp as TableCellVue,
  Zp as TableHeadVue,
  Jp as TableReact,
  em as TableRowVue,
  Kp as TableVue,
  kd as TabsReact,
  tm as TabsVue,
  am as TextFieldVue,
  xm as ThemeProvider,
  rm as ToolbarReact,
  nm as ToolbarVue,
  lm as TooltipReact,
  sm as TooltipVue,
  im as TypingText,
  qd as TypingTextReact,
  Md as TypographyReact,
  om as TypographyVue,
  cm as VerificationCodeInput,
  um as VideoPlayer,
  Xd as VideoPlayerReact,
  dm as Watermark,
  ef as WatermarkReact,
  fm as applyCSSTheme,
  mm as applyFontTheme,
  Na as applyTheme,
  lf as createIconConfig,
  Me as createPresetIcon,
  af as fontThemes,
  hm as getCurrentFonts,
  vm as getIconName,
  ym as getIconSize,
  bm as getThemeColor,
  pm as isDarkMode,
  nf as loadThemeConfig,
  uf as provideTheme,
  Lt as setFonts,
  Pn as setTheme,
  tf as themes,
  ja as toggleDarkMode,
  km as useReactTheme,
  wm as useVueTheme
};