@0xchain/header 1.1.0-beta.2 → 1.1.0-beta.21

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/lib/Nav.js CHANGED
@@ -1,102 +1,212 @@
1
1
  'use client';
2
- import { jsx as r, jsxs as d, Fragment as L } from "react/jsx-runtime";
3
- import _ from "@0xchain/link";
4
- import v from "./User/index.js";
5
- import N from "./Setting/index.js";
6
- import u from "@0xchain/translation";
7
- import { twMerge as a } from "tailwind-merge";
8
- import S from "@0xchain/better-link";
9
- import { useLocale as k } from "next-intl";
10
- import P from "./User/Logout.js";
11
- import { useState as m, useCallback as B, useEffect as T } from "react";
12
- import I from "./User/SignIn.js";
13
- import { fetchUserProfile as j } from "@0xchain/auth";
14
- import { onUserEvent as A, cleanUserEvent as R, USER_EVENTS as f } from "./events.js";
15
- import { usePathname as C } from "next/navigation";
16
- import D from "./Explorer.js";
17
- function ee({ onClick: o = () => {
18
- }, hideNews: p = !1, hideLogin: c = !1, user: h }) {
19
- const { gotoAISQL: x, gotoChat: g } = S(), t = k(), l = C(), [U, w] = m(""), [s, E] = m(h), [X, b] = m(!1), y = [
2
+ import { jsx, jsxs, Fragment } from "react/jsx-runtime";
3
+ import LinkBar from "@0xchain/link";
4
+ import UserControl from "./User/index.js";
5
+ import Setting from "./Setting/index.js";
6
+ import Translation from "@0xchain/translation";
7
+ import { twMerge } from "tailwind-merge";
8
+ import BetterLink from "@0xchain/better-link";
9
+ import { useLocale } from "next-intl";
10
+ import Logout from "./User/Logout.js";
11
+ import { useState, useCallback, useEffect } from "react";
12
+ import SignIn from "./User/SignIn.js";
13
+ import { fetchUserProfile } from "@0xchain/auth";
14
+ import { onUserEvent, USER_EVENTS, cleanUserEvent } from "./events.js";
15
+ import { usePathname } from "next/navigation";
16
+ import Explorer from "./Explorer.js";
17
+ import { useIsChaindigg } from "./context.js";
18
+ function Nav({ onClick = () => void 0, hideNews = false, hideLogin = false, user }) {
19
+ const isChaindigg = useIsChaindigg();
20
+ const { gotoAISQL, gotoChat } = BetterLink();
21
+ const locale = useLocale();
22
+ const pathname = usePathname();
23
+ const [userKey, setUserKey] = useState("");
24
+ const [userInfo, setUserInfo] = useState(user);
25
+ const [explorerExpanded, setExplorerExpanded] = useState(false);
26
+ const ichaingoNavList = [
20
27
  {
21
28
  baseUrl: process.env.NEXT_PUBLIC_CHAT_URL,
22
- href: g({ locale: t }),
23
- key: `/${t}`,
24
- label: /* @__PURE__ */ r("span", { children: "iSearch" }),
25
- show: (e) => e === `/${t}` || e.includes(`/${t}/conversation`)
29
+ href: gotoChat({ locale }),
30
+ key: `/${locale}`,
31
+ label: /* @__PURE__ */ jsx("span", { children: "iSearch" }),
32
+ show: (pathname2) => {
33
+ return pathname2 === `/${locale}` || pathname2.includes(`/${locale}/conversation`);
34
+ }
26
35
  },
27
36
  {
28
37
  baseUrl: process.env.NEXT_PUBLIC_BASE_URL,
29
- href: x({ locale: t }),
38
+ href: gotoAISQL({ locale }),
30
39
  key: "/sql",
31
40
  label: "iSQL",
32
- show: (e) => e.includes(`/${t}/sql`)
41
+ show: (pathname2) => {
42
+ return pathname2.includes(`/${locale}/sql`);
43
+ }
33
44
  },
34
45
  {
35
46
  baseUrl: process.env.NEXT_PUBLIC_BASE_URL,
36
- href: "/explorer",
47
+ href: `/explorer`,
37
48
  key: "/explorer",
38
- label: /* @__PURE__ */ r(D, { onClick: o, onExpandChange: b }),
39
- show: (e) => e.includes("/explorer")
49
+ label: /* @__PURE__ */ jsx(Explorer, { onClick, onExpandChange: setExplorerExpanded }),
50
+ show: (pathname2) => {
51
+ return pathname2.includes(`/explorer`);
52
+ }
40
53
  },
41
- // {
42
- // baseUrl: process.env.NEXT_PUBLIC_BASE_URL,
43
- // href: `/etf/btc-us`,
44
- // key: '/etf',
45
- // label: <Translation value="etf" parentKey="menu" />,
46
- // show: (pathname: string) => {
47
- // return pathname.includes(`/etf`)
48
- // }
49
- // },
50
54
  {
51
55
  baseUrl: process.env.NEXT_PUBLIC_BASE_URL,
52
- href: "/news",
56
+ href: `/news`,
53
57
  key: "/news",
54
- label: /* @__PURE__ */ r(u, { value: "news", parentKey: "menu" }),
55
- show: (e) => e.includes("/news")
58
+ label: /* @__PURE__ */ jsx(Translation, { value: "news", parentKey: "menu" }),
59
+ show: (pathname2) => {
60
+ return pathname2.includes(`/news`);
61
+ }
56
62
  },
57
63
  {
58
64
  baseUrl: process.env.NEXT_PUBLIC_BASE_URL,
59
- href: "/ranking/token",
65
+ href: `/ranking`,
60
66
  key: "/ranking",
61
- label: /* @__PURE__ */ r(u, { value: "ranking", parentKey: "menu" }),
62
- show: (e) => e.includes("/ranking")
67
+ label: /* @__PURE__ */ jsx(Translation, { value: "ranking", parentKey: "menu" }),
68
+ show: (pathname2) => {
69
+ return pathname2.includes(`/ranking`);
70
+ }
63
71
  }
64
- ].filter((e) => p ? !["/explorer", "/chat", "/sql"].includes(e.key) : !0), i = B(() => new Promise((e) => {
65
- j().then((n) => {
66
- E(n), w((/* @__PURE__ */ new Date()).getTime().toString()), e(n);
72
+ ]?.filter((item) => {
73
+ if (hideNews) {
74
+ return !["/explorer", "/chat", "/sql"].includes(item.key);
75
+ }
76
+ return true;
77
+ });
78
+ const chaindiggNavList = [
79
+ {
80
+ baseUrl: process.env.NEXT_PUBLIC_BASE_URL,
81
+ href: `/explorer`,
82
+ key: "/explorer",
83
+ label: /* @__PURE__ */ jsx(Explorer, {}),
84
+ show: (pathname2) => {
85
+ return pathname2.includes(`/explorer`);
86
+ }
87
+ }
88
+ ];
89
+ const NavList = isChaindigg ? chaindiggNavList : ichaingoNavList;
90
+ const updateUserInfo = useCallback(() => {
91
+ return new Promise((resolve) => {
92
+ fetchUserProfile().then((res) => {
93
+ setUserInfo(res);
94
+ setUserKey((/* @__PURE__ */ new Date()).getTime().toString());
95
+ resolve(res);
96
+ });
67
97
  });
68
- }), []);
69
- return T(() => (A(f.PROFILE_UPDATED, i), () => {
70
- R(f.PROFILE_UPDATED, i);
71
- }), []), /* @__PURE__ */ d(
98
+ }, []);
99
+ useEffect(() => {
100
+ if (isChaindigg) return;
101
+ onUserEvent(USER_EVENTS.PROFILE_UPDATED, updateUserInfo);
102
+ return () => {
103
+ cleanUserEvent(USER_EVENTS.PROFILE_UPDATED, updateUserInfo);
104
+ };
105
+ }, [isChaindigg]);
106
+ if (isChaindigg) {
107
+ return /* @__PURE__ */ jsxs(
108
+ "nav",
109
+ {
110
+ className: twMerge(
111
+ "flex flex-col justify-start items-start md:px-3",
112
+ "md:flex-row md:justify-end md:items-start md:px-0",
113
+ "md:gap-6"
114
+ ),
115
+ children: [
116
+ /* @__PURE__ */ jsx(
117
+ "ul",
118
+ {
119
+ className: twMerge(
120
+ "flex flex-col justify-start items-start w-full h-full text-sm leading-[44px] z-1001 text-foreground",
121
+ "md:flex-row md:items-center md:w-auto md:h-[34px] md:leading-[34px] md:gap-6",
122
+ "order-2 md:order-0"
123
+ ),
124
+ children: NavList.map((item, index) => /* @__PURE__ */ jsx(
125
+ "li",
126
+ {
127
+ className: twMerge(
128
+ "w-full md:w-auto h-11 md:h-auto cursor-pointer hover:text-primary",
129
+ item.show(pathname) && "border-b-2 border-primary text-primary"
130
+ ),
131
+ children: item.href === pathname ? item.label : /* @__PURE__ */ jsx(
132
+ LinkBar,
133
+ {
134
+ href: item.href,
135
+ onClick,
136
+ className: "h-full flex items-center justify-start",
137
+ baseUrl: item.baseUrl,
138
+ suppressHydrationWarning: true,
139
+ children: item.label
140
+ }
141
+ )
142
+ },
143
+ index
144
+ ))
145
+ }
146
+ ),
147
+ /* @__PURE__ */ jsx(Setting, { onClick })
148
+ ]
149
+ }
150
+ );
151
+ }
152
+ return /* @__PURE__ */ jsxs(
72
153
  "nav",
73
154
  {
74
- className: a(
155
+ className: twMerge(
75
156
  "flex flex-col justify-start items-start md:px-3",
76
- "md:flex-row md:justify-end md:items-center md:px-0",
157
+ "md:flex-row md:justify-end md:items-center md:px-0",
77
158
  "md:gap-4"
78
159
  ),
79
160
  children: [
80
- /* @__PURE__ */ r(
161
+ /* @__PURE__ */ jsx(
81
162
  "ul",
82
163
  {
83
- className: a(
84
- "flex flex-col justify-start items-start w-full h-full text-sm z-1001 text-foreground",
85
- "md:flex-row md:items-center md:w-auto md:h-[34px] md:gap-6",
164
+ className: twMerge(
165
+ "flex flex-col justify-start items-start w-full h-full text-sm z-1001 text-foreground",
166
+ "md:flex-row md:items-center md:w-auto md:h-[34px] md:gap-6",
86
167
  "order-2 md:order-0"
87
168
  ),
88
- children: y.map((e, n) => /* @__PURE__ */ r("li", { className: a("w-full md:px-4 md:py-1 md:h-auto font-bold md:w-auto cursor-pointer md:rounded-full", e.key === "/explorer" ? "h-auto" : "h-11", e.show(l) ? "md:text-primary md:bg-primary/20" : "md:hover:bg-border"), children: e.href === l ? e.label : /* @__PURE__ */ r(_, { href: e.href, onClick: o, className: "h-full flex items-center justify-start", baseUrl: e.baseUrl, suppressHydrationWarning: !0, children: e.label }) }, n))
169
+ children: NavList.map((item, index) => {
170
+ return /* @__PURE__ */ jsx(
171
+ "li",
172
+ {
173
+ className: twMerge(
174
+ "w-full md:px-4 md:py-1 md:h-auto font-bold md:w-auto cursor-pointer md:rounded-full",
175
+ item.key === "/explorer" ? "h-auto" : "h-11",
176
+ item.show(pathname) ? "md:text-primary md:bg-primary/20" : "md:hover:bg-border"
177
+ ),
178
+ children: item.href === pathname ? item.label : /* @__PURE__ */ jsx(
179
+ LinkBar,
180
+ {
181
+ href: item.href,
182
+ onClick,
183
+ className: "h-full flex items-center justify-start",
184
+ baseUrl: item.baseUrl,
185
+ suppressHydrationWarning: true,
186
+ children: item.label
187
+ }
188
+ )
189
+ },
190
+ index
191
+ );
192
+ })
89
193
  }
90
194
  ),
91
- /* @__PURE__ */ r(N, { onClick: o }),
92
- !l.includes("/login") && !c ? /* @__PURE__ */ d(L, { children: [
93
- /* @__PURE__ */ r(v, { onClick: o, userInfo: s }, U),
94
- s != null && s.id ? /* @__PURE__ */ r("div", { className: "flex md:hidden h-11 md:h-auto cursor-pointer whitespace-nowrap order-3 bg-background rounded-lg p-2 mt-3 w-full items-center justify-center text-muted-foreground", children: /* @__PURE__ */ r(P, {}) }) : /* @__PURE__ */ r(I, { onClick: o, className: "flex md:hidden h-11 cursor-pointer whitespace-nowrap order-3 bg-primary text-white rounded-lg p-2 mt-3 w-full items-center justify-center" })
195
+ /* @__PURE__ */ jsx(Setting, { onClick }),
196
+ !pathname.includes("/login") && !hideLogin ? /* @__PURE__ */ jsxs(Fragment, { children: [
197
+ /* @__PURE__ */ jsx(UserControl, { onClick, userInfo }, userKey),
198
+ userInfo?.id ? /* @__PURE__ */ jsx("div", { className: "flex md:hidden h-11 md:h-auto cursor-pointer whitespace-nowrap order-3 bg-background rounded-lg p-2 mt-3 w-full items-center justify-center text-muted-foreground", children: /* @__PURE__ */ jsx(Logout, {}) }) : /* @__PURE__ */ jsx(
199
+ SignIn,
200
+ {
201
+ onClick,
202
+ className: "flex md:hidden h-11 cursor-pointer whitespace-nowrap order-3 bg-primary text-white rounded-lg p-2 mt-3 w-full items-center justify-center"
203
+ }
204
+ )
95
205
  ] }) : null
96
206
  ]
97
207
  }
98
208
  );
99
209
  }
100
210
  export {
101
- ee as default
211
+ Nav as default
102
212
  };
package/dist/lib/Right.js CHANGED
@@ -1,21 +1,26 @@
1
- import { jsxs as f, jsx as r } from "react/jsx-runtime";
2
- import i from "./Nav.js";
3
- import l from "./Drawer.js";
4
- import { twMerge as o } from "tailwind-merge";
5
- var d = /* @__PURE__ */ ((t) => (t.EXPLORER = "explorer", t.CHAT = "chat", t.DEFAULT = "default", t))(d || {});
6
- function x({
7
- hideNews: t,
8
- hideLogin: m,
9
- user: a,
10
- source: e = "default"
1
+ import { jsxs, jsx } from "react/jsx-runtime";
2
+ import Nav from "./Nav.js";
3
+ import Drawer from "./Drawer.js";
4
+ import { twMerge } from "tailwind-merge";
5
+ var HeaderSource = /* @__PURE__ */ ((HeaderSource2) => {
6
+ HeaderSource2["EXPLORER"] = "explorer";
7
+ HeaderSource2["CHAT"] = "chat";
8
+ HeaderSource2["DEFAULT"] = "default";
9
+ return HeaderSource2;
10
+ })(HeaderSource || {});
11
+ function Right({
12
+ hideNews = false,
13
+ hideLogin = false,
14
+ user,
15
+ source = "default"
11
16
  /* DEFAULT */
12
17
  }) {
13
- return /* @__PURE__ */ f("div", { className: o(e === "chat" ? "" : "flex justify-end items-center md:gap-10 z-1001"), children: [
14
- /* @__PURE__ */ r(l, { hideLogin: m, hideNews: t, user: a }),
15
- /* @__PURE__ */ r("div", { className: "hidden md:block", children: /* @__PURE__ */ r(i, { hideNews: t, hideLogin: m, user: a }) })
18
+ return /* @__PURE__ */ jsxs("div", { className: twMerge(source === "chat" ? "" : "flex justify-end items-center md:gap-10 z-1001"), children: [
19
+ /* @__PURE__ */ jsx(Drawer, { hideLogin, hideNews, user }),
20
+ /* @__PURE__ */ jsx("div", { className: "hidden md:block", children: /* @__PURE__ */ jsx(Nav, { hideNews, hideLogin, user }) })
16
21
  ] });
17
22
  }
18
23
  export {
19
- d as HeaderSource,
20
- x as default
24
+ HeaderSource,
25
+ Right as default
21
26
  };
@@ -1,56 +1,64 @@
1
1
  'use client';
2
- import { jsxs as r, jsx as e } from "react/jsx-runtime";
3
- import { useLocale as h, useTranslations as d } from "next-intl";
4
- import { useSearchParams as p, usePathname as x } from "next/navigation";
5
- import { Accordion as b, AccordionItem as w, AccordionTrigger as y, AccordionContent as N } from "@0xchain/ui/accordion";
6
- import { twMerge as j } from "tailwind-merge";
7
- import { useCallback as v } from "react";
8
- import k from "@0xchain/link";
9
- import $ from "@0xchain/theme-toggle";
10
- function U({ onClick: f = () => {
11
- } }) {
12
- var i;
13
- const a = h(), l = p(), t = d("lang"), s = d("setting"), o = [
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import { useLocale, useTranslations } from "next-intl";
4
+ import { useSearchParams, usePathname } from "next/navigation";
5
+ import { Accordion, AccordionItem, AccordionTrigger, AccordionContent } from "@0xchain/ui/accordion";
6
+ import { twMerge } from "tailwind-merge";
7
+ import { useCallback } from "react";
8
+ import LinkBar from "@0xchain/link";
9
+ import ThemeToggle from "@0xchain/theme-toggle";
10
+ function SettingBody({ onClick = () => void 0 }) {
11
+ const locale = useLocale();
12
+ const params = useSearchParams();
13
+ const t = useTranslations("lang");
14
+ const tSetting = useTranslations("setting");
15
+ const supportedLanguages = [
14
16
  { name: t("en"), lang: "en" },
15
17
  { name: t("ja"), lang: "ja" },
16
18
  { name: t("ko"), lang: "ko" },
17
19
  { name: t("zh-hant"), lang: "zh-hant" },
18
20
  { name: t("zh-hans"), lang: "zh-hans" }
19
- ], c = x(), u = v(
20
- (n) => {
21
- const m = c.replace(new RegExp(`/${a}(/|$)`), `/${n}$1`), g = l.toString();
22
- return g ? `${m}?${g}` : m;
21
+ ];
22
+ const pathname = usePathname();
23
+ const generateLanguageUrl = useCallback(
24
+ (newLang) => {
25
+ const newUrl = pathname.replace(new RegExp(`/${locale}(/|$)`), `/${newLang}$1`);
26
+ const search = params.toString();
27
+ if (search) {
28
+ return `${newUrl}?${search}`;
29
+ }
30
+ return newUrl;
23
31
  },
24
- [c, a, l]
32
+ [pathname, locale, params]
25
33
  );
26
- return /* @__PURE__ */ r("div", { className: "text-sm gap-2 flex flex-col justify-start items-start md:py-2", children: [
27
- /* @__PURE__ */ e("div", { className: "flex w-full justify-between items-center", children: /* @__PURE__ */ e(b, { type: "single", className: "flex-1", collapsible: !0, children: /* @__PURE__ */ r(w, { value: a, className: "border-0", children: [
28
- /* @__PURE__ */ e(y, { className: "p-2 bg-background rounded-lg h-11 md:h-auto text-gray-500 w-full flex py-2 justify-between items-center hover:no-underline focus-visible:ring-0 focus-visible:ring-offset-0", children: /* @__PURE__ */ r("div", { className: "flex w-full justify-between items-center", children: [
29
- /* @__PURE__ */ e("span", { className: "text-foreground", children: s("language") }),
30
- /* @__PURE__ */ e("span", { className: "text-foreground", children: (i = o.find((n) => n.lang === a)) == null ? void 0 : i.name })
34
+ return /* @__PURE__ */ jsxs("div", { className: "text-sm gap-2 flex flex-col justify-start items-start md:py-2", children: [
35
+ /* @__PURE__ */ jsx("div", { className: "flex w-full justify-between items-center", children: /* @__PURE__ */ jsx(Accordion, { type: "single", className: "flex-1", collapsible: true, children: /* @__PURE__ */ jsxs(AccordionItem, { value: locale, className: "border-0", children: [
36
+ /* @__PURE__ */ jsx(AccordionTrigger, { className: "p-2 bg-background rounded-lg h-11 md:h-auto text-gray-500 w-full flex py-2 justify-between items-center hover:no-underline focus-visible:ring-0 focus-visible:ring-offset-0", children: /* @__PURE__ */ jsxs("div", { className: "flex w-full justify-between items-center", children: [
37
+ /* @__PURE__ */ jsx("span", { className: "text-foreground", children: tSetting("language") }),
38
+ /* @__PURE__ */ jsx("span", { className: "text-foreground", children: supportedLanguages.find((item) => item.lang === locale)?.name })
31
39
  ] }) }),
32
- /* @__PURE__ */ e(N, { className: "bg-background mt-3 rounded-lg flex flex-col gap-2", children: o.map((n) => /* @__PURE__ */ e(
33
- k,
40
+ /* @__PURE__ */ jsx(AccordionContent, { className: "bg-background mt-3 rounded-lg flex flex-col gap-2", children: supportedLanguages.map((item) => /* @__PURE__ */ jsx(
41
+ LinkBar,
34
42
  {
35
- prefetch: !1,
36
- withLocale: !1,
37
- className: j(
43
+ prefetch: false,
44
+ withLocale: false,
45
+ className: twMerge(
38
46
  "p-2 rounded-lg flex w-full justify-between items-center",
39
- a === n.lang ? "text-primary" : ""
47
+ locale === item.lang ? "text-primary" : ""
40
48
  ),
41
- href: u(n.lang),
42
- onClick: f,
43
- children: n.name
49
+ href: generateLanguageUrl(item.lang),
50
+ onClick,
51
+ children: item.name
44
52
  },
45
- n.lang
53
+ item.lang
46
54
  )) })
47
55
  ] }) }) }),
48
- /* @__PURE__ */ r("div", { className: "bg-background p-2 rounded-lg h-11 md:h-auto flex w-full justify-between items-center", children: [
49
- /* @__PURE__ */ e("div", { children: s("theme") }),
50
- /* @__PURE__ */ e($, {})
56
+ /* @__PURE__ */ jsxs("div", { className: "bg-background p-2 rounded-lg h-11 md:h-auto flex w-full justify-between items-center", children: [
57
+ /* @__PURE__ */ jsx("div", { children: tSetting("theme") }),
58
+ /* @__PURE__ */ jsx(ThemeToggle, {})
51
59
  ] })
52
60
  ] });
53
61
  }
54
62
  export {
55
- U as default
63
+ SettingBody as default
56
64
  };
@@ -1,18 +1,49 @@
1
- import { jsxs as n, jsx as e } from "react/jsx-runtime";
2
- import i from "@0xchain/iconfont";
3
- import a from "@0xchain/tooltip";
4
- import r from "./SettingBody.js";
5
- function g({ onClick: o = () => {
6
- } }) {
7
- return /* @__PURE__ */ n("div", { className: "w-full md:w-auto order-3 md:order-0", children: [
8
- /* @__PURE__ */ e("div", { className: "hidden md:flex items-center bg-card hover:bg-border rounded-lg p-1.5 cursor-pointer", children: /* @__PURE__ */ e(a, { side: "bottom", onChange: (t) => {
9
- document.querySelectorAll("iframe").forEach((d) => {
10
- d.style.pointerEvents = t ? "none" : "auto";
11
- });
12
- }, needClick: !0, contentClassName: "bg-card w-70 rounded-lg bg-card text-foreground border border-border", trigger: /* @__PURE__ */ e(i, { type: "icon-centersetup", className: "text-2xl" }), arrowClassName: "fill-card", children: /* @__PURE__ */ e(r, { onClick: o }) }) }),
13
- /* @__PURE__ */ e("div", { className: "md:hidden", children: /* @__PURE__ */ e(r, {}) })
1
+ 'use client';
2
+ import { jsxs, jsx } from "react/jsx-runtime";
3
+ import IconFont from "@0xchain/iconfont";
4
+ import Tooltip from "@0xchain/tooltip";
5
+ import SettingBody from "./SettingBody.js";
6
+ import { useIsChaindigg } from "../context.js";
7
+ function Setting({ onClick = () => void 0 }) {
8
+ const isChaindigg = useIsChaindigg();
9
+ const onChange = (open) => {
10
+ const iframes = document.querySelectorAll("iframe");
11
+ iframes.forEach((iframe) => {
12
+ iframe.style.pointerEvents = open ? "none" : "auto";
13
+ });
14
+ };
15
+ if (isChaindigg) {
16
+ return /* @__PURE__ */ jsxs("div", { className: "w-full md:w-auto order-3 md:order-0", children: [
17
+ /* @__PURE__ */ jsx("div", { className: "hidden md:flex items-center bg-card rounded-lg p-1.5 cursor-pointer", children: /* @__PURE__ */ jsx(
18
+ Tooltip,
19
+ {
20
+ side: "bottom",
21
+ needClick: true,
22
+ contentClassName: "w-70 rounded-lg bg-card shadow-lg text-foreground border-transparent outline-none",
23
+ trigger: /* @__PURE__ */ jsx(IconFont, { type: "icon-setting", className: "text-2xl border border-transparent hover:border-border" }),
24
+ arrowClassName: "fill-module",
25
+ children: /* @__PURE__ */ jsx(SettingBody, { onClick })
26
+ }
27
+ ) }),
28
+ /* @__PURE__ */ jsx("div", { className: "md:hidden", children: /* @__PURE__ */ jsx(SettingBody, {}) })
29
+ ] });
30
+ }
31
+ return /* @__PURE__ */ jsxs("div", { className: "w-full md:w-auto order-3 md:order-0", children: [
32
+ /* @__PURE__ */ jsx("div", { className: "hidden md:flex items-center bg-card hover:bg-border rounded-lg p-1.5 cursor-pointer", children: /* @__PURE__ */ jsx(
33
+ Tooltip,
34
+ {
35
+ side: "bottom",
36
+ onChange,
37
+ needClick: true,
38
+ contentClassName: "bg-card w-70 rounded-lg bg-card text-foreground border border-border",
39
+ trigger: /* @__PURE__ */ jsx(IconFont, { type: "icon-centersetup", className: "text-2xl" }),
40
+ arrowClassName: "fill-card",
41
+ children: /* @__PURE__ */ jsx(SettingBody, { onClick })
42
+ }
43
+ ) }),
44
+ /* @__PURE__ */ jsx("div", { className: "md:hidden", children: /* @__PURE__ */ jsx(SettingBody, {}) })
14
45
  ] });
15
46
  }
16
47
  export {
17
- g as default
48
+ Setting as default
18
49
  };
@@ -1,22 +1,22 @@
1
1
  'use client';
2
- import { jsx as o } from "react/jsx-runtime";
3
- import { logout as a } from "@0xchain/auth";
4
- import { useCallback as e } from "react";
5
- import { twMerge as n } from "tailwind-merge";
6
- import l from "@0xchain/translation";
7
- function p({ className: t }) {
8
- const r = e(async () => {
9
- await a();
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { logout } from "@0xchain/auth";
4
+ import { useCallback } from "react";
5
+ import { twMerge } from "tailwind-merge";
6
+ import Translation from "@0xchain/translation";
7
+ function Logout({ className }) {
8
+ const logoutHandler = useCallback(async () => {
9
+ await logout();
10
10
  }, []);
11
- return /* @__PURE__ */ o(
11
+ return /* @__PURE__ */ jsx(
12
12
  "button",
13
13
  {
14
- onClick: r,
15
- className: n("cursor-pointer relative", t),
16
- children: /* @__PURE__ */ o(l, { value: "logout", parentKey: "account" })
14
+ onClick: logoutHandler,
15
+ className: twMerge("cursor-pointer relative", className),
16
+ children: /* @__PURE__ */ jsx(Translation, { value: "logout", parentKey: "account" })
17
17
  }
18
18
  );
19
19
  }
20
20
  export {
21
- p as default
21
+ Logout as default
22
22
  };
@@ -1,34 +1,43 @@
1
1
  'use client';
2
- import { jsx as t } from "react/jsx-runtime";
3
- import { useState as m, useMemo as c, useEffect as p } from "react";
4
- import s from "@0xchain/link";
5
- import l from "@0xchain/translation";
6
- import u from "@0xchain/better-link";
7
- import { useLocale as f } from "next-intl";
8
- import g from "@0xchain/avatar";
9
- function v({
10
- userInfo: r
2
+ import { jsx } from "react/jsx-runtime";
3
+ import { useState, useMemo, useEffect } from "react";
4
+ import LinkBar from "@0xchain/link";
5
+ import Translation from "@0xchain/translation";
6
+ import BetterLink from "@0xchain/better-link";
7
+ import { useLocale } from "next-intl";
8
+ import Avatar from "@0xchain/avatar";
9
+ function MainTrigger({
10
+ userInfo
11
11
  }) {
12
- const { gotoLogin: e } = u(), [i, n] = m(""), o = f(), a = c(() => r == null ? void 0 : r.id, [r]);
13
- return p(() => {
14
- n(e({
15
- locale: o,
12
+ const { gotoLogin } = BetterLink();
13
+ const [link, setLink] = useState("");
14
+ const locale = useLocale();
15
+ const isLogin = useMemo(() => {
16
+ return userInfo?.id;
17
+ }, [userInfo]);
18
+ useEffect(() => {
19
+ setLink(gotoLogin({
20
+ locale,
16
21
  redirect: window.location.href
17
22
  }));
18
- }, [o, e]), a ? (
19
- // userInfo?.profileUrl
20
- // https://images.ichatgo.ai/user-profile/100000201.png
21
- /* @__PURE__ */ t(g, { userInfo: r, className: "w-8 h-8 cursor-pointer" })
22
- ) : /* @__PURE__ */ t(
23
- s,
23
+ }, [locale, gotoLogin]);
24
+ if (isLogin) {
25
+ return (
26
+ // userInfo?.profileUrl
27
+ // https://images.ichatgo.ai/user-profile/100000201.png
28
+ /* @__PURE__ */ jsx(Avatar, { userInfo, className: "w-8 h-8 cursor-pointer" })
29
+ );
30
+ }
31
+ return /* @__PURE__ */ jsx(
32
+ LinkBar,
24
33
  {
25
- href: i,
34
+ href: link,
26
35
  className: "cursor-pointer text-sm text-white bg-primary py-2 px-3 rounded-lg",
27
- replace: !0,
28
- children: /* @__PURE__ */ t(l, { value: "signIn", parentKey: "account" })
36
+ replace: true,
37
+ children: /* @__PURE__ */ jsx(Translation, { value: "signIn", parentKey: "account" })
29
38
  }
30
39
  );
31
40
  }
32
41
  export {
33
- v as default
42
+ MainTrigger as default
34
43
  };