import React, { useState, useEffect, useCallback, useMemo, useRef } from 'react';
import { clsx } from 'clsx';

var __require = /* @__PURE__ */ ((x) => typeof require !== "undefined" ? require : typeof Proxy !== "undefined" ? new Proxy(x, {
  get: (a, b) => (typeof require !== "undefined" ? require : a)[b]
}) : x)(function(x) {
  if (typeof require !== "undefined") return require.apply(this, arguments);
  throw Error('Dynamic require of "' + x + '" is not supported');
});

// src/i18n/i18n.ts
function defaultInterpolate(template, data) {
  return template.replace(/\{\{(\w+)\}\}/g, (match, key) => {
    return data[key]?.toString() ?? match;
  });
}
function getNestedValue(obj, path) {
  const keys = path.split(".");
  let result = obj;
  for (const key of keys) {
    if (result && typeof result === "object" && key in result) {
      result = result[key];
    } else {
      return void 0;
    }
  }
  return result;
}
function createI18n(config) {
  let currentLocale = config.locale;
  const fallbackLocale = config.fallbackLocale || "zh-CN";
  const resources = config.resources || {};
  const interpolate = config.interpolate || defaultInterpolate;
  function t2(key, options = {}) {
    const { defaultValue, count, context = {} } = options;
    let translation = getNestedValue(resources[currentLocale], key);
    if (translation === void 0 && currentLocale !== fallbackLocale) {
      translation = getNestedValue(resources[fallbackLocale], key);
    }
    if (translation === void 0) {
      return defaultValue || key;
    }
    if (typeof translation !== "string") {
      return JSON.stringify(translation);
    }
    if (count !== void 0) {
      const pluralKey = count === 1 ? key + "_one" : key + "_other";
      const pluralTranslation = getNestedValue(resources[currentLocale], pluralKey);
      if (pluralTranslation && typeof pluralTranslation === "string") {
        translation = pluralTranslation;
      }
    }
    const data = { ...context, count };
    return interpolate(translation, data);
  }
  function setLocale(locale) {
    currentLocale = locale;
  }
  function addResources(locale, newResources) {
    if (!resources[locale]) {
      resources[locale] = {};
    }
    resources[locale] = {
      ...resources[locale],
      ...newResources
    };
  }
  function getLocale() {
    return currentLocale;
  }
  return {
    locale: currentLocale,
    t: t2,
    setLocale,
    addResources,
    getLocale
  };
}
var globalI18n = null;
function initI18n(config) {
  globalI18n = createI18n(config);
  return globalI18n;
}
function getI18n() {
  if (!globalI18n) {
    throw new Error("i18n not initialized. Call initI18n() first.");
  }
  return globalI18n;
}
function t(key, options) {
  return getI18n().t(key, options);
}
function useTranslation() {
  const [locale, setLocaleState] = useState("zh-CN");
  const [i18nInstance, setI18nInstance] = useState(null);
  useEffect(() => {
    if (typeof window !== "undefined") {
      try {
        const i18n = getI18n();
        setI18nInstance(i18n);
        setLocaleState(i18n.getLocale());
      } catch {
        console.warn("i18n not initialized. Some translations may not work.");
      }
    }
  }, []);
  const t2 = useCallback(
    (key, options) => {
      if (i18nInstance) {
        return i18nInstance.t(key, options);
      }
      return key;
    },
    [i18nInstance]
  );
  const setLocale = useCallback(
    (newLocale) => {
      if (i18nInstance) {
        i18nInstance.setLocale(newLocale);
        setLocaleState(newLocale);
      } else {
        console.warn("i18n not initialized. Cannot change locale.");
      }
    },
    [i18nInstance]
  );
  return useMemo(
    () => ({
      t: t2,
      locale,
      setLocale
    }),
    [t2, locale, setLocale]
  );
}
function useLocale() {
  const i18n = getI18n();
  const [locale, setLocaleState] = useState(i18n.getLocale());
  const setLocale = useCallback((newLocale) => {
    i18n.setLocale(newLocale);
    setLocaleState(newLocale);
  }, []);
  return {
    locale,
    setLocale
  };
}

// src/i18n/locales/zh-CN.ts
var zh_CN_default = {
  // ==================== 应用信息 ====================
  app: {
    name: "LyricNote",
    fullName: "LyricNote - \u6B4C\u8BCD\u7B14\u8BB0",
    icon: "\u{1F3B5}",
    description: "\u4E00\u4E2A\u5F3A\u5927\u7684\u6B4C\u8BCD\u548C\u7B14\u8BB0\u7BA1\u7406\u5E94\u7528",
    author: "LyricNote Team",
    copyright: "\xA9 " + (/* @__PURE__ */ new Date()).getFullYear() + " LyricNote",
    version: "1.0.0"
  },
  // ==================== 应用标题 ====================
  titles: {
    main: "\u{1F3B5} LyricNote",
    admin: "LyricNote \u7BA1\u7406\u540E\u53F0",
    withVersion: "LyricNote v1.0.0",
    welcome: "\u6B22\u8FCE\u4F7F\u7528 LyricNote",
    about: "\u5173\u4E8E LyricNote"
  },
  // ==================== 通用文案 ====================
  common: {
    hello: "\u4F60\u597D",
    welcome: "\u6B22\u8FCE",
    confirm: "\u786E\u8BA4",
    cancel: "\u53D6\u6D88",
    save: "\u4FDD\u5B58",
    delete: "\u5220\u9664",
    edit: "\u7F16\u8F91",
    back: "\u8FD4\u56DE",
    next: "\u4E0B\u4E00\u6B65",
    submit: "\u63D0\u4EA4",
    finish: "\u5B8C\u6210",
    loading: "\u52A0\u8F7D\u4E2D...",
    success: "\u64CD\u4F5C\u6210\u529F",
    error: "\u64CD\u4F5C\u5931\u8D25",
    retry: "\u91CD\u8BD5",
    empty: "\u6682\u65E0\u6570\u636E"
  },
  // ==================== 导航菜单 ====================
  nav: {
    home: "\u9996\u9875",
    lyrics: "\u6B4C\u8BCD",
    create: "\u521B\u4F5C",
    collection: "\u6536\u85CF",
    profile: "\u6211\u7684",
    settings: "\u8BBE\u7F6E",
    history: "\u5386\u53F2",
    logout: "\u9000\u51FA\u767B\u5F55"
  },
  // ==================== 用户相关 ====================
  user: {
    login: "\u767B\u5F55",
    register: "\u6CE8\u518C",
    username: "\u7528\u6237\u540D",
    password: "\u5BC6\u7801",
    email: "\u90AE\u7BB1",
    phone: "\u624B\u673A\u53F7",
    nickname: "\u6635\u79F0"
  },
  // ==================== 页面标题和描述 ====================
  pages: {
    home: {
      title: "\u9996\u9875",
      description: "\u4E00\u4E2A\u5F3A\u5927\u7684\u6B4C\u8BCD\u548C\u7B14\u8BB0\u7BA1\u7406\u5E94\u7528"
    },
    profile: {
      title: "\u4E2A\u4EBA\u4E2D\u5FC3",
      description: "\u7BA1\u7406\u60A8\u7684\u4E2A\u4EBA\u4FE1\u606F\u548C\u504F\u597D\u8BBE\u7F6E"
    },
    admin: {
      title: "LyricNote \u7BA1\u7406\u540E\u53F0",
      description: "\u7CFB\u7EDF\u7BA1\u7406\u548C\u6570\u636E\u7EDF\u8BA1"
    },
    login: {
      title: "\u767B\u5F55",
      description: "\u767B\u5F55\u5230 LyricNote"
    }
  },
  // ==================== 表单验证 ====================
  validation: {
    required: "{{field}}\u4E0D\u80FD\u4E3A\u7A7A",
    invalid_email: "\u90AE\u7BB1\u683C\u5F0F\u4E0D\u6B63\u786E",
    password_too_short: "\u5BC6\u7801\u81F3\u5C11\u9700\u8981{{count}}\u4E2A\u5B57\u7B26",
    password_weak: "\u5BC6\u7801\u5F3A\u5EA6\u4E0D\u591F",
    passwords_not_match: "\u4E24\u6B21\u5BC6\u7801\u4E0D\u4E00\u81F4"
  },
  // ==================== 状态提示 ====================
  status: {
    loading: "\u52A0\u8F7D\u4E2D...",
    success: "\u64CD\u4F5C\u6210\u529F",
    error: "\u64CD\u4F5C\u5931\u8D25",
    empty: "\u6682\u65E0\u6570\u636E",
    network_error: "\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5"
  },
  // ==================== 错误消息 ====================
  errors: {
    network: "\u7F51\u7EDC\u9519\u8BEF\uFF0C\u8BF7\u7A0D\u540E\u91CD\u8BD5",
    server: "\u670D\u52A1\u5668\u9519\u8BEF",
    unauthorized: "\u672A\u6388\u6743\uFF0C\u8BF7\u5148\u767B\u5F55",
    not_found: "\u672A\u627E\u5230\u76F8\u5173\u5185\u5BB9",
    unknown: "\u672A\u77E5\u9519\u8BEF"
  },
  // ==================== 成功消息 ====================
  success: {
    saved: "\u4FDD\u5B58\u6210\u529F",
    deleted: "\u5220\u9664\u6210\u529F",
    updated: "\u66F4\u65B0\u6210\u529F",
    created: "\u521B\u5EFA\u6210\u529F"
  },
  // ==================== 语言设置 ====================
  language: {
    label: "\u8BED\u8A00",
    zh_cn: "\u7B80\u4F53\u4E2D\u6587",
    zh_tw: "\u7E41\u9AD4\u4E2D\u6587",
    en_us: "English",
    ja_jp: "\u65E5\u672C\u8A9E"
  }
};

// src/i18n/locales/en-US.ts
var en_US_default = {
  // ==================== App Information ====================
  app: {
    name: "LyricNote",
    fullName: "LyricNote - Lyrics & Notes",
    icon: "\u{1F3B5}",
    description: "A powerful lyrics and notes management app",
    author: "LyricNote Team",
    copyright: "\xA9 " + (/* @__PURE__ */ new Date()).getFullYear() + " LyricNote",
    version: "1.0.0"
  },
  // ==================== App Titles ====================
  titles: {
    main: "\u{1F3B5} LyricNote",
    admin: "LyricNote Admin",
    withVersion: "LyricNote v1.0.0",
    welcome: "Welcome to LyricNote",
    about: "About LyricNote"
  },
  // ==================== Common ====================
  common: {
    hello: "Hello",
    welcome: "Welcome",
    confirm: "Confirm",
    cancel: "Cancel",
    save: "Save",
    delete: "Delete",
    edit: "Edit",
    back: "Back",
    next: "Next",
    submit: "Submit",
    finish: "Finish",
    loading: "Loading...",
    success: "Success",
    error: "Error",
    retry: "Retry",
    empty: "No data"
  },
  // ==================== Navigation ====================
  nav: {
    home: "Home",
    lyrics: "Lyrics",
    create: "Create",
    collection: "Collection",
    profile: "Profile",
    settings: "Settings",
    history: "History",
    logout: "Logout"
  },
  // ==================== User ====================
  user: {
    login: "Login",
    register: "Register",
    username: "Username",
    password: "Password",
    email: "Email",
    phone: "Phone",
    nickname: "Nickname"
  },
  // ==================== Pages ====================
  pages: {
    home: {
      title: "Home",
      description: "A powerful lyrics and notes management app"
    },
    profile: {
      title: "Profile",
      description: "Manage your personal information and preferences"
    },
    admin: {
      title: "LyricNote Admin",
      description: "System management and data statistics"
    },
    login: {
      title: "Login",
      description: "Login to LyricNote"
    }
  },
  // ==================== Form Validation ====================
  validation: {
    required: "{{field}} is required",
    invalid_email: "Invalid email format",
    password_too_short: "Password must be at least {{count}} characters",
    password_weak: "Password is too weak",
    passwords_not_match: "Passwords do not match"
  },
  // ==================== Status Messages ====================
  status: {
    loading: "Loading...",
    success: "Success",
    error: "Error",
    empty: "No data",
    network_error: "Network error, please try again later"
  },
  // ==================== Error Messages ====================
  errors: {
    network: "Network error, please try again later",
    server: "Server error",
    unauthorized: "Unauthorized, please login first",
    not_found: "Not found",
    unknown: "Unknown error"
  },
  // ==================== Success Messages ====================
  success: {
    saved: "Saved successfully",
    deleted: "Deleted successfully",
    updated: "Updated successfully",
    created: "Created successfully"
  },
  // ==================== Language Settings ====================
  language: {
    label: "Language",
    zh_cn: "\u7B80\u4F53\u4E2D\u6587",
    zh_tw: "\u7E41\u9AD4\u4E2D\u6587",
    en_us: "English",
    ja_jp: "\u65E5\u672C\u8A9E"
  }
};

// src/i18n/adapters/web.ts
var WebI18nAdapter = class {
  constructor() {
    this.storageKey = "app_locale";
  }
  getSystemLocale() {
    if (typeof navigator === "undefined") return "zh-CN";
    const browserLocale = navigator.language;
    return this.normalizeLocale(browserLocale);
  }
  async saveLocale(locale) {
    if (typeof localStorage === "undefined") return;
    localStorage.setItem(this.storageKey, locale);
  }
  async loadLocale() {
    if (typeof localStorage === "undefined") return null;
    const stored = localStorage.getItem(this.storageKey);
    return stored;
  }
  normalizeLocale(locale) {
    const map = {
      "zh-CN": "zh-CN",
      "zh-TW": "zh-TW",
      "zh-HK": "zh-TW",
      zh: "zh-CN",
      "en-US": "en-US",
      "en-GB": "en-US",
      en: "en-US",
      "ja-JP": "ja-JP",
      ja: "ja-JP"
    };
    return map[locale] || "zh-CN";
  }
};

// src/i18n/adapters/mobile.ts
var ReactNativeI18nAdapter = class {
  constructor() {
    this.storageKey = "@app_locale";
  }
  getSystemLocale() {
    try {
      const { Platform, NativeModules } = __require("react-native");
      const locale = Platform.OS === "ios" ? NativeModules.SettingsManager.settings.AppleLocale || NativeModules.SettingsManager.settings.AppleLanguages[0] : NativeModules.I18nManager.localeIdentifier;
      return this.normalizeLocale(locale);
    } catch {
      return "zh-CN";
    }
  }
  async saveLocale(locale) {
    try {
      const AsyncStorage = __require("@react-native-async-storage/async-storage").default;
      await AsyncStorage.setItem(this.storageKey, locale);
    } catch (error) {
      console.error("Failed to save locale:", error);
    }
  }
  async loadLocale() {
    try {
      const AsyncStorage = __require("@react-native-async-storage/async-storage").default;
      const stored = await AsyncStorage.getItem(this.storageKey);
      return stored;
    } catch (error) {
      console.error("Failed to load locale:", error);
      return null;
    }
  }
  normalizeLocale(locale) {
    const map = {
      "zh-CN": "zh-CN",
      zh_CN: "zh-CN",
      "zh-Hans": "zh-CN",
      zh_Hans_CN: "zh-CN",
      "zh-TW": "zh-TW",
      zh_TW: "zh-TW",
      "zh-Hant": "zh-TW",
      zh_Hant_TW: "zh-TW",
      "en-US": "en-US",
      en_US: "en-US",
      en: "en-US",
      "ja-JP": "ja-JP",
      ja_JP: "ja-JP",
      ja: "ja-JP"
    };
    return map[locale] || "zh-CN";
  }
};

// src/i18n/adapters/miniapp.ts
var TaroI18nAdapter = class {
  constructor() {
    this.storageKey = "app_locale";
  }
  getSystemLocale() {
    try {
      const Taro = __require("@tarojs/taro").default;
      const systemInfo = Taro.getSystemInfoSync();
      return this.normalizeLocale(systemInfo.language);
    } catch {
      return "zh-CN";
    }
  }
  async saveLocale(locale) {
    try {
      const Taro = __require("@tarojs/taro").default;
      await Taro.setStorage({
        key: this.storageKey,
        data: locale
      });
    } catch (error) {
      console.error("Failed to save locale:", error);
    }
  }
  async loadLocale() {
    try {
      const Taro = __require("@tarojs/taro").default;
      const res = await Taro.getStorage({
        key: this.storageKey
      });
      return res.data;
    } catch (error) {
      return null;
    }
  }
  normalizeLocale(locale) {
    const map = {
      zh_CN: "zh-CN",
      "zh-CN": "zh-CN",
      zh_TW: "zh-TW",
      "zh-TW": "zh-TW",
      en: "en-US",
      "en-US": "en-US",
      ja: "ja-JP",
      "ja-JP": "ja-JP"
    };
    return map[locale] || "zh-CN";
  }
};

// src/i18n/adapters/desktop.ts
var ElectronI18nAdapter = class {
  constructor() {
    this.storageKey = "app_locale";
  }
  getSystemLocale() {
    if (typeof navigator === "undefined") return "zh-CN";
    const browserLocale = navigator.language;
    return this.normalizeLocale(browserLocale);
  }
  async saveLocale(locale) {
    if (typeof localStorage === "undefined") return;
    localStorage.setItem(this.storageKey, locale);
  }
  async loadLocale() {
    if (typeof localStorage === "undefined") return null;
    const stored = localStorage.getItem(this.storageKey);
    return stored;
  }
  normalizeLocale(locale) {
    const map = {
      "zh-CN": "zh-CN",
      "zh-TW": "zh-TW",
      "zh-HK": "zh-TW",
      zh: "zh-CN",
      "en-US": "en-US",
      "en-GB": "en-US",
      en: "en-US",
      "ja-JP": "ja-JP",
      ja: "ja-JP"
    };
    return map[locale] || "zh-CN";
  }
};
var LANGUAGE_OPTIONS = [
  { locale: "zh-CN", label: "\u7B80\u4F53\u4E2D\u6587", flag: "\u{1F1E8}\u{1F1F3}" },
  { locale: "zh-TW", label: "\u7E41\u9AD4\u4E2D\u6587", flag: "\u{1F1F9}\u{1F1FC}" },
  { locale: "en-US", label: "English", flag: "\u{1F1FA}\u{1F1F8}" },
  { locale: "ja-JP", label: "\u65E5\u672C\u8A9E", flag: "\u{1F1EF}\u{1F1F5}" }
];
function LanguageSwitcherButtons({
  className = "",
  onLanguageChange
}) {
  const { locale, setLocale } = useTranslation();
  const handleChange = (newLocale) => {
    setLocale(newLocale);
    onLanguageChange?.(newLocale);
  };
  return /* @__PURE__ */ React.createElement(
    "div",
    {
      className: clsx("inline-flex items-center gap-1 p-1 bg-gray-100 dark:bg-gray-800 rounded-lg", className)
    },
    LANGUAGE_OPTIONS.map((option) => /* @__PURE__ */ React.createElement(
      "button",
      {
        key: option.locale,
        onClick: () => handleChange(option.locale),
        className: clsx(
          "inline-flex items-center gap-2 px-3 py-1.5 rounded-md text-sm font-medium transition-all duration-200",
          locale === option.locale ? "bg-white dark:bg-gray-700 text-blue-600 dark:text-blue-400 shadow-sm" : "text-gray-600 dark:text-gray-400 hover:text-gray-900 dark:hover:text-gray-200 hover:bg-gray-50 dark:hover:bg-gray-700/50"
        ),
        "aria-label": option.label
      },
      /* @__PURE__ */ React.createElement("span", { className: "text-base leading-none" }, option.flag),
      /* @__PURE__ */ React.createElement("span", { className: "hidden sm:inline" }, option.label)
    ))
  );
}
function LanguageSwitcherDropdown({
  className = "",
  onLanguageChange
}) {
  const { locale, setLocale, t: t2 } = useTranslation();
  const handleChange = (e) => {
    const newLocale = e.target.value;
    setLocale(newLocale);
    onLanguageChange?.(newLocale);
  };
  return /* @__PURE__ */ React.createElement("div", { className: clsx("inline-flex flex-col gap-2", className) }, /* @__PURE__ */ React.createElement(
    "label",
    {
      htmlFor: "language-select",
      className: "text-sm font-medium text-gray-700 dark:text-gray-300"
    },
    t2("language.label")
  ), /* @__PURE__ */ React.createElement(
    "select",
    {
      id: "language-select",
      value: locale,
      onChange: handleChange,
      className: "\n          min-w-[160px] px-3 py-2 pr-8\n          bg-white dark:bg-gray-800\n          border border-gray-300 dark:border-gray-600\n          rounded-lg text-sm\n          text-gray-900 dark:text-gray-100\n          focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\n          cursor-pointer\n          appearance-none\n          bg-[url('data:image/svg+xml;charset=UTF-8,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 viewBox=%270 0 24 24%27 fill=%27none%27 stroke=%27currentColor%27 stroke-width=%272%27 stroke-linecap=%27round%27 stroke-linejoin=%27round%27%3e%3cpolyline points=%276 9 12 15 18 9%27%3e%3c/polyline%3e%3c/svg%3e')]\n          bg-[length:1rem] bg-[right_0.5rem_center] bg-no-repeat\n        ",
      "aria-label": t2("language.label")
    },
    LANGUAGE_OPTIONS.map((option) => /* @__PURE__ */ React.createElement("option", { key: option.locale, value: option.locale }, option.flag, " ", option.label))
  ));
}
function LanguageSwitcherIcon({ className = "", onLanguageChange }) {
  const { locale, setLocale } = useTranslation();
  const [isOpen, setIsOpen] = useState(false);
  const dropdownRef = useRef(null);
  const currentOption = LANGUAGE_OPTIONS.find((opt) => opt.locale === locale);
  const handleSelect = (newLocale) => {
    setLocale(newLocale);
    setIsOpen(false);
    onLanguageChange?.(newLocale);
  };
  useEffect(() => {
    if (!isOpen) return;
    function handleClickOutside(event) {
      if (dropdownRef.current && !dropdownRef.current.contains(event.target)) {
        setIsOpen(false);
      }
    }
    document.addEventListener("mousedown", handleClickOutside);
    return () => document.removeEventListener("mousedown", handleClickOutside);
  }, [isOpen]);
  return /* @__PURE__ */ React.createElement("div", { className: clsx("relative", className), ref: dropdownRef }, /* @__PURE__ */ React.createElement(
    "button",
    {
      onClick: () => setIsOpen(!isOpen),
      className: "\n          inline-flex items-center gap-1.5 px-3 py-2\n          bg-white dark:bg-gray-800\n          border border-gray-300 dark:border-gray-600\n          rounded-lg\n          hover:bg-gray-50 dark:hover:bg-gray-700\n          focus:outline-none focus:ring-2 focus:ring-blue-500 focus:border-transparent\n          transition-all duration-200\n        ",
      "aria-label": "Switch Language"
    },
    /* @__PURE__ */ React.createElement("span", { className: "text-lg leading-none" }, currentOption?.flag),
    /* @__PURE__ */ React.createElement(
      "svg",
      {
        className: clsx("w-4 h-4 text-gray-600 dark:text-gray-400 transition-transform duration-200", isOpen ? "rotate-180" : ""),
        fill: "none",
        stroke: "currentColor",
        viewBox: "0 0 24 24"
      },
      /* @__PURE__ */ React.createElement("path", { strokeLinecap: "round", strokeLinejoin: "round", strokeWidth: 2, d: "M19 9l-7 7-7-7" })
    )
  ), isOpen && /* @__PURE__ */ React.createElement(
    "div",
    {
      className: "\n            absolute top-full right-0 mt-2 min-w-[180px]\n            bg-white dark:bg-gray-800\n            border border-gray-200 dark:border-gray-700\n            rounded-lg shadow-lg\n            py-1\n            z-50\n          animate-in fade-in slide-in-from-top-2 duration-200\n          "
    },
    LANGUAGE_OPTIONS.map((option) => /* @__PURE__ */ React.createElement(
      "button",
      {
        key: option.locale,
        onClick: () => handleSelect(option.locale),
        className: clsx(
          "w-full flex items-center gap-3 px-4 py-2.5 text-sm transition-colors duration-150",
          locale === option.locale ? "bg-blue-50 dark:bg-blue-900/20 text-blue-600 dark:text-blue-400" : "text-gray-700 dark:text-gray-300 hover:bg-gray-50 dark:hover:bg-gray-700/50"
        )
      },
      /* @__PURE__ */ React.createElement("span", { className: "text-lg leading-none" }, option.flag),
      /* @__PURE__ */ React.createElement("span", { className: "flex-1 text-left" }, option.label),
      locale === option.locale && /* @__PURE__ */ React.createElement(
        "svg",
        {
          className: "w-4 h-4 text-blue-600 dark:text-blue-400",
          fill: "currentColor",
          viewBox: "0 0 20 20"
        },
        /* @__PURE__ */ React.createElement(
          "path",
          {
            fillRule: "evenodd",
            d: "M16.707 5.293a1 1 0 010 1.414l-8 8a1 1 0 01-1.414 0l-4-4a1 1 0 011.414-1.414L8 12.586l7.293-7.293a1 1 0 011.414 0z",
            clipRule: "evenodd"
          }
        )
      )
    ))
  ));
}
function LanguageSwitcher({
  variant = "icon",
  className,
  onLanguageChange
}) {
  switch (variant) {
    case "buttons":
      return /* @__PURE__ */ React.createElement(LanguageSwitcherButtons, { className, onLanguageChange });
    case "dropdown":
      return /* @__PURE__ */ React.createElement(LanguageSwitcherDropdown, { className, onLanguageChange });
    case "icon":
    default:
      return /* @__PURE__ */ React.createElement(LanguageSwitcherIcon, { className, onLanguageChange });
  }
}

export { ElectronI18nAdapter, LanguageSwitcher, LanguageSwitcherButtons, LanguageSwitcherDropdown, LanguageSwitcherIcon, ReactNativeI18nAdapter, TaroI18nAdapter, WebI18nAdapter, createI18n, en_US_default as enUS, getI18n, initI18n, t, useLocale, useTranslation, zh_CN_default as zhCN };
//# sourceMappingURL=index.mjs.map
//# sourceMappingURL=index.mjs.map