@arcblock/ux 3.1.31 → 3.1.33

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.
@@ -2,12 +2,12 @@ import { jsxs as m, jsx as s } from "react/jsx-runtime";
2
2
  import { useMemo as r } from "react";
3
3
  import { styled as C, Button as F, Box as M } from "@mui/material";
4
4
  import { useMemoizedFn as u } from "ahooks";
5
- import { joinURL as N } from "ufo";
5
+ import { joinURL as z } from "ufo";
6
6
  import w from "lodash/noop";
7
- import { Icon as U } from "@iconify/react";
8
- import k from "@mui/icons-material/Notifications";
9
- import v from "@mui/icons-material/NotificationsOff";
10
- import z from "../use-follow.js";
7
+ import { Icon as N } from "@iconify/react";
8
+ import U from "@mui/icons-material/Notifications";
9
+ import k from "@mui/icons-material/NotificationsOff";
10
+ import v from "../use-follow.js";
11
11
  import { useLocaleContext as h } from "../../Locale/context.js";
12
12
  import { translate as g } from "../../Locale/util.js";
13
13
  import { isSupportFollow as L } from "../../Util/index.js";
@@ -43,17 +43,18 @@ function j({
43
43
  });
44
44
  return;
45
45
  }
46
- window.open(N(l, `/chat/dm/${o?.did}`), "_blank");
46
+ window.open(z(l, `/chat/dm/${o?.did}`), "_blank");
47
47
  });
48
48
  return r(() => (typeof t == "boolean" ? !!t : t?.chat) && !!l, [t, l]) ? /* @__PURE__ */ m(
49
49
  x,
50
50
  {
51
51
  className: "user-card__social-actions-chat",
52
52
  variant: "outlined",
53
- color: "inherit",
53
+ color: "primary",
54
+ size: "small",
54
55
  onClick: c,
55
56
  children: [
56
- /* @__PURE__ */ s(U, { icon: "tabler:message-dots", style: { marginRight: 4 } }),
57
+ /* @__PURE__ */ s(N, { icon: "tabler:message-dots", style: { marginRight: 4 } }),
57
58
  e("chat")
58
59
  ]
59
60
  }
@@ -64,7 +65,7 @@ function B({
64
65
  showSocialActions: t,
65
66
  session: n
66
67
  }) {
67
- const { locale: i } = h() || { locale: "en" }, e = u((b, y = {}) => g(_, b, i, "en", y)), d = r(() => !!n?.user?.did, [n?.user?.did]), l = r(() => typeof t == "boolean" ? !!t : t?.follow, [t]), { followed: c, followUser: p, unfollowUser: a } = z({
68
+ const { locale: i } = h() || { locale: "en" }, e = u((y, b = {}) => g(_, y, i, "en", b)), d = r(() => !!n?.user?.did, [n?.user?.did]), l = r(() => typeof t == "boolean" ? !!t : t?.follow, [t]), { followed: c, followUser: p, unfollowUser: a } = v({
68
69
  user: o,
69
70
  t: e,
70
71
  isMySelf: !1,
@@ -84,10 +85,11 @@ function B({
84
85
  {
85
86
  className: "user-card__social-actions-follow",
86
87
  variant: "outlined",
87
- color: "inherit",
88
+ color: "primary",
89
+ size: "small",
88
90
  onClick: f,
89
91
  children: [
90
- c ? /* @__PURE__ */ s(v, { sx: { fontSize: 14, mr: 0.5 } }) : /* @__PURE__ */ s(k, { sx: { fontSize: 14, mr: 0.5 } }),
92
+ c ? /* @__PURE__ */ s(k, { sx: { fontSize: 14, mr: 0.5 } }) : /* @__PURE__ */ s(U, { sx: { fontSize: 14, mr: 0.5 } }),
91
93
  e(c ? "unfollow" : "follow")
92
94
  ]
93
95
  }
@@ -1,28 +1,28 @@
1
- import { jsxs as o, jsx as t } from "react/jsx-runtime";
2
- import { memo as u } from "react";
3
- import { Box as r, Typography as g } from "@mui/material";
4
- import { DID as y } from "../../DID/index.js";
5
- import C from "./tooltip-avatar.js";
6
- import { renderTopRight as b } from "../components.js";
7
- import S from "./shorten-label.js";
8
- import v from "../Cards/social-actions.js";
9
- function w({ ...a }) {
1
+ import { jsxs as i, jsx as t } from "react/jsx-runtime";
2
+ import { memo as g } from "react";
3
+ import { useMediaQuery as y, Box as o, Typography as w, Divider as C } from "@mui/material";
4
+ import { DID as S } from "../../DID/index.js";
5
+ import b from "./tooltip-avatar.js";
6
+ import { renderTopRight as v } from "../components.js";
7
+ import W from "./shorten-label.js";
8
+ import j from "../Cards/social-actions.js";
9
+ function D({ ...s }) {
10
10
  const {
11
11
  user: e,
12
- showDid: s,
13
- didProps: l,
14
- avatarSize: d,
15
- shouldShowHoverCard: m,
16
- renderCardContent: c,
17
- renderTopRightContent: p,
18
- topRightMaxWidth: f,
19
- avatarProps: h,
20
- shortenLabelProps: x,
21
- renderName: n,
22
- ...i
23
- } = a;
24
- return /* @__PURE__ */ o(
25
- r,
12
+ showDid: d,
13
+ didProps: m,
14
+ avatarSize: c,
15
+ shouldShowHoverCard: p,
16
+ renderCardContent: f,
17
+ renderTopRightContent: a,
18
+ topRightMaxWidth: h,
19
+ avatarProps: x,
20
+ shortenLabelProps: u,
21
+ renderName: l,
22
+ ...n
23
+ } = s, r = y("(max-width:500px)");
24
+ return /* @__PURE__ */ i(
25
+ o,
26
26
  {
27
27
  className: "user-card__avatar-content",
28
28
  sx: {
@@ -31,33 +31,35 @@ function w({ ...a }) {
31
31
  alignItems: "center"
32
32
  },
33
33
  children: [
34
- /* @__PURE__ */ o(
35
- r,
34
+ /* @__PURE__ */ i(
35
+ o,
36
36
  {
37
37
  sx: {
38
38
  display: "flex",
39
39
  justifyContent: "space-between",
40
- alignItems: "center",
41
- gap: 1,
40
+ flexDirection: r ? "column" : "row",
41
+ alignItems: r ? "flex-start" : "center",
42
+ gap: r ? 2 : 1,
42
43
  flex: 1,
43
- minWidth: 0
44
+ minWidth: 0,
45
+ flexWrap: "wrap"
44
46
  },
45
47
  children: [
46
- /* @__PURE__ */ o(r, { sx: { display: "flex", justifyContent: "flex-start", alignItems: "center", gap: 1, flex: 1 }, children: [
48
+ /* @__PURE__ */ i(o, { sx: { display: "flex", justifyContent: "flex-start", alignItems: "center", gap: 1, flex: 1 }, children: [
47
49
  /* @__PURE__ */ t(
48
- C,
50
+ b,
49
51
  {
50
52
  user: e,
51
- avatarSize: d,
52
- shouldShowHoverCard: m,
53
- renderCardContent: c,
54
- avatarProps: h,
55
- ...i
53
+ avatarSize: c,
54
+ shouldShowHoverCard: p,
55
+ renderCardContent: f,
56
+ avatarProps: x,
57
+ ...n
56
58
  }
57
59
  ),
58
- /* @__PURE__ */ o(r, { children: [
60
+ /* @__PURE__ */ i(o, { children: [
59
61
  /* @__PURE__ */ t(
60
- g,
62
+ w,
61
63
  {
62
64
  variant: "subtitle1",
63
65
  className: "user-card__full-name-label",
@@ -68,11 +70,11 @@ function w({ ...a }) {
68
70
  fontSize: 18,
69
71
  lineHeight: 1.1
70
72
  },
71
- children: n ? n(e) : /* @__PURE__ */ t(S, { sx: { fontWeight: 500 }, ...x, children: e.fullName || e.email || e.did })
73
+ children: l ? l(e) : /* @__PURE__ */ t(W, { sx: { fontWeight: 500 }, ...u, children: e.fullName || e.email || e.did })
72
74
  }
73
75
  ),
74
- s && e.did ? /* @__PURE__ */ t(
75
- y,
76
+ d && e.did ? /* @__PURE__ */ t(
77
+ S,
76
78
  {
77
79
  did: e.did,
78
80
  size: 14,
@@ -80,21 +82,22 @@ function w({ ...a }) {
80
82
  compact: !0,
81
83
  locale: "en",
82
84
  sx: { lineHeight: 1.5 },
83
- ...l ?? {}
85
+ ...m ?? {}
84
86
  }
85
87
  ) : null
86
88
  ] })
87
89
  ] }),
88
- /* @__PURE__ */ t(v, { showSocialActions: i.showSocialActions, user: e, session: i.session })
90
+ r ? /* @__PURE__ */ t(C, { sx: { width: "100%" } }) : null,
91
+ a ? null : /* @__PURE__ */ t(j, { showSocialActions: n.showSocialActions, user: e, session: n.session })
89
92
  ]
90
93
  }
91
94
  ),
92
- b(p, f)
95
+ v(a, h)
93
96
  ]
94
97
  }
95
98
  );
96
99
  }
97
- const D = u(w);
100
+ const P = g(D);
98
101
  export {
99
- D as default
102
+ P as default
100
103
  };
package/lib/Util/index.js CHANGED
@@ -1,16 +1,16 @@
1
1
  import { lazy as j } from "react";
2
- import u from "lodash/padStart";
2
+ import l from "lodash/padStart";
3
3
  import { colors as w, getDIDMotifInfo as x } from "@arcblock/did-motif";
4
4
  import { mergeAllThemeOptions as Ke } from "@blocklet/theme";
5
5
  import I from "lodash/isNil";
6
6
  import E from "lodash/omitBy";
7
- import U from "p-retry";
7
+ import v from "p-retry";
8
8
  import m from "js-cookie";
9
- import v from "color-convert";
9
+ import O from "color-convert";
10
10
  import a from "dayjs";
11
11
  import "dayjs/locale/zh-cn";
12
- import F from "dayjs/plugin/utc";
13
- import O from "dayjs/plugin/timezone";
12
+ import U from "dayjs/plugin/utc";
13
+ import F from "dayjs/plugin/timezone";
14
14
  import A from "dayjs/plugin/relativeTime";
15
15
  import P from "dayjs/plugin/updateLocale";
16
16
  import R from "dayjs/plugin/localizedFormat";
@@ -18,15 +18,15 @@ import W from "semver";
18
18
  import { DID_PREFIX as L, BLOCKLET_SERVICE_PATH_PREFIX as C } from "./constant.js";
19
19
  import b from "../package.json.js";
20
20
  import { getFederatedEnabled as M } from "./federated.js";
21
- let l = null;
22
- const _ = /^(\d{1,3}\.){3}\d{1,3}(:\d+)?$/, z = /* @__PURE__ */ new Set(["co", "com", "net", "org", "gov", "edu", "ac"]), B = /* @__PURE__ */ new Set(["uk", "au", "cn", "nz", "za", "in", "br", "mx", "fr", "it", "ca"]);
23
- function N(e) {
21
+ let u = null;
22
+ const _ = /^(\d{1,3}\.){3}\d{1,3}(:\d+)?$/, z = /* @__PURE__ */ new Set(["co", "com", "net", "org", "gov", "edu", "ac"]), N = /* @__PURE__ */ new Set(["uk", "au", "cn", "nz", "za", "in", "br", "mx", "fr", "it", "ca"]);
23
+ function B(e) {
24
24
  if (!e)
25
25
  return !1;
26
26
  const t = e.split(".");
27
27
  if (t.length < 2) return !1;
28
28
  const o = t[t.length - 2], n = t[t.length - 1];
29
- return z.has(o) && B.has(n);
29
+ return z.has(o) && N.has(n);
30
30
  }
31
31
  function ye() {
32
32
  const { host: e } = window.location;
@@ -37,7 +37,7 @@ function ye() {
37
37
  return "";
38
38
  if (o.length > 2) {
39
39
  const n = o.slice(-2).join(".");
40
- if (N(n))
40
+ if (B(n))
41
41
  return `.${o.slice(-3).join(".")}`;
42
42
  }
43
43
  return `.${o.slice(-2).join(".")}`;
@@ -51,7 +51,7 @@ function Ie(e) {
51
51
  function be(e = {}) {
52
52
  return new URLSearchParams(e).toString();
53
53
  }
54
- function Se(e = 1) {
54
+ function De(e = 1) {
55
55
  let t = e;
56
56
  typeof t == "number" && (t = { expireInDays: t }), t.path === void 0 && (t.path = "/"), t.expireInDays || (t.expireInDays = 1);
57
57
  const o = {
@@ -64,7 +64,7 @@ function Se(e = 1) {
64
64
  };
65
65
  return (typeof window > "u" || t.domain || t.returnDomain === !1) && t.returnDomain === !1 && delete o.domain, o;
66
66
  }
67
- const De = (e) => e.color ? e.color : e.dark ? e.theme.palette.common.white : e.theme.palette.text.primary, ke = (e) => e.background ? e.background : e.dark ? e.theme.palette.common.black : e.theme.palette.common.white;
67
+ const Se = (e) => e.color ? e.color : e.dark ? e.theme.palette.common.white : e.theme.palette.text.primary, ke = (e) => e.background ? e.background : e.dark ? e.theme.palette.common.black : e.theme.palette.common.white;
68
68
  function Ve(e, t, o = []) {
69
69
  const n = Object.assign({}, e), i = t.defaultProps || {};
70
70
  return Object.keys(i).forEach((r) => {
@@ -95,16 +95,16 @@ const Te = () => typeof Intl == "object" && typeof Intl.DateTimeFormat == "funct
95
95
  return o;
96
96
  }, xe = (e) => {
97
97
  const t = Math.round(e / 1e3), o = Math.floor(t / 3600), n = Math.floor((t - o * 3600) / 60), i = t % 60;
98
- return `${u(o, 2, "0")}:${u(n, 2, "0")}:${u(i, 2, "0")}`;
98
+ return `${l(o, 2, "0")}:${l(n, 2, "0")}:${l(i, 2, "0")}`;
99
99
  };
100
100
  function X(e) {
101
- l = e;
101
+ u = e;
102
102
  }
103
103
  function Ee() {
104
- return l;
104
+ return u;
105
105
  }
106
- const S = (e) => (t, { locale: o, tz: n, isUtc: i } = {}) => {
107
- if (l === null && (a.extend(R), a.extend(F), a.extend(O), a.extend(P), a.extend(A), a.updateLocale("zh-cn", {
106
+ const D = (e) => (t, { locale: o, tz: n, isUtc: i } = {}) => {
107
+ if (u === null && (a.extend(R), a.extend(U), a.extend(F), a.extend(P), a.extend(A), a.updateLocale("zh-cn", {
108
108
  // copy with https://github.com/iamkun/dayjs/blob/dev/src/locale/zh-cn.js
109
109
  relativeTime: {
110
110
  future: "%s后",
@@ -123,25 +123,25 @@ const S = (e) => (t, { locale: o, tz: n, isUtc: i } = {}) => {
123
123
  }
124
124
  }), X(a)), I(t) || t === "")
125
125
  return "-";
126
- let r = l(t);
126
+ let r = u(t);
127
127
  return n && (r = r.tz(n)), i && (r = r.utc()), typeof o < "u" && (r = r.locale(o)), r.format(e);
128
128
  };
129
- function Ue(e, { locale: t = "en", tz: o } = {}) {
130
- return S("ll")(e, { locale: t, tz: o });
129
+ function ve(e, { locale: t = "en", tz: o } = {}) {
130
+ return D("ll")(e, { locale: t, tz: o });
131
131
  }
132
- function ve(e, {
132
+ function Oe(e, {
133
133
  locale: t = "en",
134
134
  tz: o,
135
135
  isUtc: n = !1,
136
136
  format: i = "lll"
137
137
  } = {}) {
138
- return S(i)(e, { locale: t, tz: o, isUtc: n });
138
+ return D(i)(e, { locale: t, tz: o, isUtc: n });
139
139
  }
140
140
  function K() {
141
141
  const e = window?.ABT_DEV || window.ABT;
142
142
  return e && typeof e.open == "function" ? e : null;
143
143
  }
144
- function Fe({
144
+ function Ue({
145
145
  webWalletUrl: e,
146
146
  action: t = "login",
147
147
  locale: o = "en",
@@ -163,7 +163,7 @@ function Fe({
163
163
  ...f
164
164
  }
165
165
  }), { type: "extension" };
166
- const D = {
166
+ const S = {
167
167
  toolbar: "no",
168
168
  location: "no",
169
169
  status: "no",
@@ -173,7 +173,7 @@ function Fe({
173
173
  // iphone 8plus size
174
174
  width: 414,
175
175
  height: 736
176
- }, k = `${e}?action=${t}&locale=${o}&url=${encodeURIComponent(n)}`, c = Object.assign({}, D, i), V = (s) => s.innerWidth || s.document.documentElement.clientWidth || s.document.body.clientWidth;
176
+ }, k = `${e}?action=${t}&locale=${o}&url=${encodeURIComponent(n)}`, c = Object.assign({}, S, i), V = (s) => s.innerWidth || s.document.documentElement.clientWidth || s.document.body.clientWidth;
177
177
  if (!("left" in c)) {
178
178
  const s = V(window.top || window), T = window.screenLeft || window.screenX;
179
179
  c.left = s + T - c.width;
@@ -185,7 +185,7 @@ function Fe({
185
185
  const $ = Object.keys(c).map((s) => `${s}=${c[s]}`).join(",");
186
186
  return window.open(k, "targetWindow", $), { type: "web" };
187
187
  }
188
- const Oe = (e) => e && Number(e) >= 12 ? `${Number(e)}px` : "inherit", J = (e) => {
188
+ const Fe = (e) => e && Number(e) >= 12 ? `${Number(e)}px` : "inherit", J = (e) => {
189
189
  const t = e.replace(L, "");
190
190
  return !!/^(0x)?[0-9a-f]{40}$/i.test(t);
191
191
  }, Q = (e, t) => {
@@ -263,7 +263,7 @@ const Oe = (e) => e && Number(e) >= 12 ? `${Number(e)}px` : "inherit", J = (e) =
263
263
  let r;
264
264
  return t && (r = e[t]), (!r || typeof r != "string") && (r = e[n]), (!r || typeof r != "string") && (r = i), r;
265
265
  }, Me = (e) => j(
266
- () => U(
266
+ () => v(
267
267
  async () => {
268
268
  try {
269
269
  return await e();
@@ -276,7 +276,7 @@ const Oe = (e) => e && Number(e) >= 12 ? `${Number(e)}px` : "inherit", J = (e) =
276
276
  )
277
277
  ), _e = (e) => E(e, I);
278
278
  function ze(e, t = 1) {
279
- const [o, n, i] = v.hex.rgb(e);
279
+ const [o, n, i] = O.hex.rgb(e);
280
280
  return `rgba(${o}, ${n}, ${i}, ${t})`;
281
281
  }
282
282
  const G = () => window.blocklet?.serverVersion || "", H = () => b.version, Z = () => (b.dependencies?.["@blocklet/js-sdk"]).replace(/^[\^~>=<]+/, ""), d = (e, t) => {
@@ -285,7 +285,9 @@ const G = () => window.blocklet?.serverVersion || "", H = () => b.version, Z = (
285
285
  return f ? f[1] : r;
286
286
  }, n = o(e), i = o(t);
287
287
  return n === i && e !== t ? !1 : W.gte(n, i);
288
- }, Be = () => {
288
+ }, Ne = () => {
289
+ if (process.env.NODE_ENV === "development")
290
+ return !0;
289
291
  const e = G(), t = H(), o = Z();
290
292
  if (!e || !t || !o)
291
293
  return !1;
@@ -299,16 +301,16 @@ export {
299
301
  Ke as deepmergeAll,
300
302
  K as detectWalletExtension,
301
303
  We as ensureVisitorId,
302
- Ue as formatToDate,
303
- ve as formatToDatetime,
304
+ ve as formatToDate,
305
+ Oe as formatToDatetime,
304
306
  xe as formatUptime,
305
307
  ke as getBackground,
306
- De as getColor,
307
- Se as getCookieOptions,
308
+ Se as getColor,
309
+ De as getCookieOptions,
308
310
  $e as getCopyright,
309
311
  Le as getDIDColor,
310
312
  Ee as getDateTool,
311
- Oe as getFontSize,
313
+ Fe as getFontSize,
312
314
  Z as getJsSdkVersion,
313
315
  G as getServerVersion,
314
316
  Te as getTimezone,
@@ -318,12 +320,12 @@ export {
318
320
  Y as getVisitorId,
319
321
  ze as hexToRgba,
320
322
  J as isEthereumDid,
321
- Be as isSupportFollow,
322
- N as isTwoSegmentTLD,
323
+ Ne as isSupportFollow,
324
+ B as isTwoSegmentTLD,
323
325
  Re as isUrl,
324
326
  Me as lazyRetry,
325
327
  Ve as mergeProps,
326
- Fe as openWebWallet,
328
+ Ue as openWebWallet,
327
329
  Ie as parseQuery,
328
330
  ye as resolveRootDomain,
329
331
  X as setDateTool,
@@ -1,4 +1,4 @@
1
- const e = "3.1.31", s = { "@blocklet/js-sdk": "^1.16.49-beta-20250823-082650-626c1473" }, t = {
1
+ const e = "3.1.33", s = { "@blocklet/js-sdk": "^1.16.49-beta-20250823-082650-626c1473" }, t = {
2
2
  version: e,
3
3
  dependencies: s
4
4
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@arcblock/ux",
3
- "version": "3.1.31",
3
+ "version": "3.1.33",
4
4
  "description": "Common used react components for arcblock products",
5
5
  "keywords": [
6
6
  "react",
@@ -68,16 +68,16 @@
68
68
  "react": "^19.0.0",
69
69
  "react-router-dom": "^6.22.3"
70
70
  },
71
- "gitHead": "a904bcfb38156f7cdff5b2134c126b19d528f4b2",
71
+ "gitHead": "14bd43c4a02eb7617981ef48276f2fc493058240",
72
72
  "dependencies": {
73
- "@arcblock/bridge": "3.1.31",
73
+ "@arcblock/bridge": "3.1.33",
74
74
  "@arcblock/did": "^1.21.3",
75
75
  "@arcblock/did-motif": "^1.1.14",
76
- "@arcblock/icons": "3.1.31",
77
- "@arcblock/nft-display": "3.1.31",
78
- "@arcblock/react-hooks": "3.1.31",
76
+ "@arcblock/icons": "3.1.33",
77
+ "@arcblock/nft-display": "3.1.33",
78
+ "@arcblock/react-hooks": "3.1.33",
79
79
  "@blocklet/js-sdk": "^1.16.49-beta-20250823-082650-626c1473",
80
- "@blocklet/theme": "3.1.31",
80
+ "@blocklet/theme": "3.1.33",
81
81
  "@fontsource/roboto": "~5.1.1",
82
82
  "@fontsource/ubuntu-mono": "^5.2.6",
83
83
  "@iconify-icons/logos": "^1.2.36",
@@ -222,6 +222,198 @@ const translations = {
222
222
  },
223
223
  },
224
224
  },
225
+ 'zh-TW': {
226
+ groups: {
227
+ applications: '應用',
228
+ components: '組件',
229
+ computeStorage: '計算/儲存',
230
+ identity: '身份',
231
+ frameworkTools: '框架與工具',
232
+ modelsAdapters: '模型適配器',
233
+ },
234
+ products: {
235
+ nftStudio: {
236
+ description: '鑄造和管理 NFT',
237
+ },
238
+ creatorStudio: {
239
+ description: '一體化創作工具',
240
+ },
241
+ aigne: {
242
+ description: 'AI 應用的代理生態系統',
243
+ },
244
+ arcsphere: {
245
+ description: 'AI 原生瀏覽器',
246
+ },
247
+ aistro: {
248
+ description: 'AI 占星術',
249
+ },
250
+ blockletLauncher: {
251
+ description: '一鍵啟動應用程式',
252
+ },
253
+ aiKit: {
254
+ description: 'AI 賦能應用',
255
+ },
256
+ paymentKit: {
257
+ description: '便捷的加密貨幣和銀行卡支付',
258
+ },
259
+ blockletStore: {
260
+ description: '發現和部署應用程式',
261
+ },
262
+ web3Kit: {
263
+ description: 'Web3 開發工具包',
264
+ },
265
+ blockletFramework: {
266
+ description: '構建並運行 Blocklet',
267
+ },
268
+ didSpaces: {
269
+ description: '安全的個人儲存',
270
+ },
271
+ abtNetwork: {
272
+ description: '快速區塊鏈網路',
273
+ },
274
+ blockletServer: {
275
+ description: '輕鬆託管應用程式',
276
+ },
277
+ ocap: {
278
+ description: '多鏈連接器',
279
+ },
280
+ did: {
281
+ description: '自主身份',
282
+ },
283
+ didWallet: {
284
+ description: '智能數位錢包',
285
+ },
286
+ didNameService: {
287
+ description: 'Web3 域名',
288
+ },
289
+ vc: {
290
+ description: '可驗證憑證',
291
+ },
292
+ didConnect: {
293
+ description: '無密碼登入',
294
+ },
295
+ aigneCodeSmith: {
296
+ description: '使用 AI 審查並優化你的程式碼',
297
+ },
298
+ aigneDocSmith: {
299
+ description: '用 AI 生成和更新專案文件',
300
+ },
301
+ aigneWebSmith: {
302
+ description: '構建並部署 AI 驅動的 Web 應用',
303
+ },
304
+ aigneCLI: {
305
+ description: '透過命令列開發 Agent',
306
+ },
307
+ aigneObservability: {
308
+ description: '理解並分析 Agent 的行為',
309
+ },
310
+ aigneStudio: {
311
+ description: '零程式碼構建 Agent',
312
+ },
313
+ aigneFramework: {
314
+ description: 'Agent AI 的功能核心框架',
315
+ },
316
+ aigneHub: {
317
+ description: '一套 API,連接所有模型',
318
+ },
319
+ },
320
+ },
321
+ ja: {
322
+ groups: {
323
+ applications: 'アプリケーション',
324
+ components: 'コンポーネント',
325
+ computeStorage: 'コンピューティング/ストレージ',
326
+ identity: 'アイデンティティ',
327
+ frameworkTools: 'フレームワークとツール',
328
+ modelsAdapters: 'モデルアダプター',
329
+ },
330
+ products: {
331
+ nftStudio: {
332
+ description: 'NFTの作成と管理',
333
+ },
334
+ creatorStudio: {
335
+ description: 'オールインワンクリエイターツール',
336
+ },
337
+ aigne: {
338
+ description: 'AIアプリのためのエージェントエコシステム',
339
+ },
340
+ arcsphere: {
341
+ description: 'AIネイティブブラウザ',
342
+ },
343
+ aistro: {
344
+ description: 'AI駆動占星術',
345
+ },
346
+ blockletLauncher: {
347
+ description: 'ワンクリックアプリ起動',
348
+ },
349
+ aiKit: {
350
+ description: 'AIでアプリを強化',
351
+ },
352
+ paymentKit: {
353
+ description: '簡単な暗号通貨とカード決済',
354
+ },
355
+ blockletStore: {
356
+ description: 'アプリの発見とデプロイ',
357
+ },
358
+ web3Kit: {
359
+ description: 'Web3開発ツールキット',
360
+ },
361
+ blockletFramework: {
362
+ description: 'Blockletの構築と実行',
363
+ },
364
+ didSpaces: {
365
+ description: '安全な個人ストレージ',
366
+ },
367
+ abtNetwork: {
368
+ description: '高速ブロックチェーンネットワーク',
369
+ },
370
+ blockletServer: {
371
+ description: 'アプリの簡単なホスティング',
372
+ },
373
+ ocap: {
374
+ description: 'マルチチェーンコネクター',
375
+ },
376
+ did: {
377
+ description: '自己主権ID',
378
+ },
379
+ didWallet: {
380
+ description: 'スマートデジタルウォレット',
381
+ },
382
+ didNameService: {
383
+ description: 'Web3ドメイン名',
384
+ },
385
+ vc: {
386
+ description: '検証可能な認証情報',
387
+ },
388
+ didConnect: {
389
+ description: 'パスワード不要ログイン',
390
+ },
391
+ aigneCodeSmith: {
392
+ description: 'AIでコードをレビューし改善',
393
+ },
394
+ aigneDocSmith: {
395
+ description: 'AIでドキュメントを生成・更新',
396
+ },
397
+ aigneWebSmith: {
398
+ description: 'AI駆動Webアプリの構築とデプロイ',
399
+ },
400
+ aigneCLI: {
401
+ description: 'コマンドラインからエージェントを開発',
402
+ },
403
+ aigneObservability: {
404
+ description: 'エージェントの動作を理解・分析',
405
+ },
406
+ aigneStudio: {
407
+ description: 'コード不要でエージェントを視覚的に作成',
408
+ },
409
+ aigneFramework: {
410
+ description: 'エージェントAIの機能コアフレームワーク',
411
+ },
412
+ aigneHub: {
413
+ description: '1つのAPIで全てのモデルに接続',
414
+ },
415
+ },
416
+ },
225
417
  };
226
418
 
227
419
  const Wrapper = styled(Box)`