@lark-apaas/client-toolkit-lite 1.1.0 → 1.1.1-alpha.1

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/index.cjs CHANGED
@@ -37,6 +37,7 @@ __export(index_exports, {
37
37
  QueryProvider: () => QueryProvider_default,
38
38
  TrackKey: () => TrackKey,
39
39
  UniversalLink: () => UniversalLink,
40
+ Welcome: () => Welcome_default,
40
41
  avatarImages: () => avatar_exports,
41
42
  axiosForBackend: () => axiosForBackend,
42
43
  bannerImages: () => banner_exports,
@@ -530,6 +531,65 @@ function useLogout() {
530
531
  }
531
532
  __name(useLogout, "useLogout");
532
533
 
534
+ // src/locales/messages.ts
535
+ var messages = {
536
+ // ── Safety 组件 ──────────────────────────────────────────────
537
+ "safety.badge.label": {
538
+ zh: "\u5999\u642D",
539
+ en: "Spark"
540
+ },
541
+ "safety.badge.builtWith": {
542
+ zh: "\u7531\u5999\u642D\u642D\u5EFA",
543
+ en: "Built with Spark"
544
+ },
545
+ "safety.ai.disclaimer": {
546
+ zh: "\u5305\u542B AI \u751F\u6210\u5185\u5BB9\uFF0C\u8BF7\u6CE8\u610F\u7504\u522B",
547
+ en: "AI-generated content. Use with care."
548
+ },
549
+ "safety.tenant.operated": {
550
+ zh: "{name}\u8FD0\u8425",
551
+ en: "Operated by {name}"
552
+ },
553
+ "safety.button.dontShowAgain": {
554
+ zh: "\u4E0D\u518D\u5C55\u793A",
555
+ en: "Don't show again"
556
+ },
557
+ "safety.button.learnMore": {
558
+ zh: "\u4E86\u89E3\u66F4\u591A",
559
+ en: "Learn more"
560
+ },
561
+ "safety.cover.pc": {
562
+ zh: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover.png",
563
+ en: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover-weben.png"
564
+ },
565
+ "safety.cover.mobile": {
566
+ zh: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover-mobile.png",
567
+ en: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover-mobileen.png"
568
+ }
569
+ };
570
+ var messages_default = messages;
571
+
572
+ // src/utils/locale.ts
573
+ function getLocale() {
574
+ const lang = navigator.language || "zh";
575
+ return lang.startsWith("zh") ? "zh" : "en";
576
+ }
577
+ __name(getLocale, "getLocale");
578
+
579
+ // src/locales/index.ts
580
+ function t(key, params) {
581
+ const locale = getLocale();
582
+ const entry = messages_default[key];
583
+ let text = entry?.[locale] ?? entry?.zh ?? key;
584
+ if (params) {
585
+ for (const [k, v] of Object.entries(params)) {
586
+ text = text.replace(`{${k}}`, v);
587
+ }
588
+ }
589
+ return text;
590
+ }
591
+ __name(t, "t");
592
+
533
593
  // src/components/AppContainer/safety.tsx
534
594
  var resetBase = {
535
595
  boxSizing: "border-box",
@@ -552,8 +612,8 @@ var FONT_FAMILY = "'PingFang SC', -apple-system, BlinkMacSystemFont, 'Segoe UI',
552
612
  var Z_BADGE = 1e7;
553
613
  var Z_OVERLAY = 10000001;
554
614
  var LOGO_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodalogo.svg";
555
- var COVER_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover.png";
556
- var COVER_MOBILE_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/logo/miaodacover-mobile.png";
615
+ var getCoverUrl = /* @__PURE__ */ __name(() => t("safety.cover.pc"), "getCoverUrl");
616
+ var getCoverMobileUrl = /* @__PURE__ */ __name(() => t("safety.cover.mobile"), "getCoverMobileUrl");
557
617
  var ICON_COMPANY_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/icon/icon_company_outlined.svg";
558
618
  var ICON_AI_URL = "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/icon/icon_efficiency-ai_outlined.svg";
559
619
  var LANDING_URL = "https://miaoda.feishu.cn/landing";
@@ -839,7 +899,7 @@ var Safety = /* @__PURE__ */ __name(() => {
839
899
  const link = document.createElement("link");
840
900
  link.rel = "preload";
841
901
  link.as = "image";
842
- link.href = COVER_MOBILE_URL;
902
+ link.href = getCoverMobileUrl();
843
903
  document.head.appendChild(link);
844
904
  }
845
905
  }, [
@@ -866,7 +926,7 @@ var Safety = /* @__PURE__ */ __name(() => {
866
926
  ...badgeTextStyle,
867
927
  minWidth: 28
868
928
  }
869
- }, "\u5999\u642D"))), /* @__PURE__ */ import_react5.default.createElement(DialogPrimitive.Portal, null, /* @__PURE__ */ import_react5.default.createElement(DialogPrimitive.Overlay, {
929
+ }, t("safety.badge.label")))), /* @__PURE__ */ import_react5.default.createElement(DialogPrimitive.Portal, null, /* @__PURE__ */ import_react5.default.createElement(DialogPrimitive.Overlay, {
870
930
  style: overlayStyle
871
931
  }), /* @__PURE__ */ import_react5.default.createElement(DialogPrimitive.Content, {
872
932
  style: sheetContent,
@@ -876,13 +936,13 @@ var Safety = /* @__PURE__ */ __name(() => {
876
936
  position: "absolute",
877
937
  clip: "rect(0 0 0 0)"
878
938
  }
879
- }, "\u5999\u642D\u54C1\u724C\u4FE1\u606F"), /* @__PURE__ */ import_react5.default.createElement("div", {
939
+ }, t("safety.badge.builtWith")), /* @__PURE__ */ import_react5.default.createElement("div", {
880
940
  style: sheetInner
881
941
  }, /* @__PURE__ */ import_react5.default.createElement(XIcon, {
882
942
  style: sheetCloseBtn,
883
943
  onClick: /* @__PURE__ */ __name(() => setOpen(false), "onClick")
884
944
  }), /* @__PURE__ */ import_react5.default.createElement("img", {
885
- src: COVER_MOBILE_URL,
945
+ src: getCoverMobileUrl(),
886
946
  alt: "",
887
947
  style: sheetCover,
888
948
  onClick: /* @__PURE__ */ __name(() => window.open(LANDING_URL, "_blank"), "onClick")
@@ -902,14 +962,16 @@ var Safety = /* @__PURE__ */ __name(() => {
902
962
  style: infoIconMobile
903
963
  }), /* @__PURE__ */ import_react5.default.createElement("p", {
904
964
  style: sheetInfoText
905
- }, userinfo?.name, "\u8FD0\u8425")), /* @__PURE__ */ import_react5.default.createElement("div", {
965
+ }, t("safety.tenant.operated", {
966
+ name: userinfo?.name ?? ""
967
+ }))), /* @__PURE__ */ import_react5.default.createElement("div", {
906
968
  style: infoRow
907
969
  }, /* @__PURE__ */ import_react5.default.createElement("img", {
908
970
  src: ICON_AI_URL,
909
971
  style: infoIconMobile
910
972
  }), /* @__PURE__ */ import_react5.default.createElement("p", {
911
973
  style: sheetInfoText
912
- }, "\u5305\u542B AI \u751F\u6210\u5185\u5BB9\uFF0C\u8BF7\u6CE8\u610F\u7504\u522B"))), /* @__PURE__ */ import_react5.default.createElement("div", {
974
+ }, t("safety.ai.disclaimer")))), /* @__PURE__ */ import_react5.default.createElement("div", {
913
975
  style: mobileBtnRow
914
976
  }, /* @__PURE__ */ import_react5.default.createElement("div", {
915
977
  style: mobileBtnOutline,
@@ -920,10 +982,10 @@ var Safety = /* @__PURE__ */ __name(() => {
920
982
  setTimeout(() => setVisible(false), 200);
921
983
  window.localStorage?.setItem(HasClosedKey, "true");
922
984
  }, "onClick")
923
- }, "\u4E0D\u518D\u5C55\u793A"), /* @__PURE__ */ import_react5.default.createElement("div", {
985
+ }, t("safety.button.dontShowAgain")), /* @__PURE__ */ import_react5.default.createElement("div", {
924
986
  style: mobileBtnFilled,
925
987
  onClick: /* @__PURE__ */ __name(() => window.open(LANDING_URL, "_blank"), "onClick")
926
- }, "\u4E86\u89E3\u66F4\u591A")))))));
988
+ }, t("safety.button.learnMore"))))))));
927
989
  }
928
990
  return /* @__PURE__ */ import_react5.default.createElement(PopoverPrimitive.Root, {
929
991
  open,
@@ -947,7 +1009,7 @@ var Safety = /* @__PURE__ */ __name(() => {
947
1009
  ...badgeTextStyle,
948
1010
  minWidth: 60
949
1011
  }
950
- }, "\u7531\u5999\u642D\u642D\u5EFA"))), /* @__PURE__ */ import_react5.default.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ import_react5.default.createElement(PopoverPrimitive.Content, {
1012
+ }, t("safety.badge.builtWith")))), /* @__PURE__ */ import_react5.default.createElement(PopoverPrimitive.Portal, null, /* @__PURE__ */ import_react5.default.createElement(PopoverPrimitive.Content, {
951
1013
  style: popoverContent,
952
1014
  side: "top",
953
1015
  align: "end",
@@ -962,7 +1024,7 @@ var Safety = /* @__PURE__ */ __name(() => {
962
1024
  }, /* @__PURE__ */ import_react5.default.createElement("div", {
963
1025
  style: popoverInner
964
1026
  }, /* @__PURE__ */ import_react5.default.createElement("img", {
965
- src: COVER_URL,
1027
+ src: getCoverUrl(),
966
1028
  alt: "",
967
1029
  style: popoverCover,
968
1030
  onClick: /* @__PURE__ */ __name(() => window.open(LANDING_URL, "_blank"), "onClick")
@@ -982,14 +1044,16 @@ var Safety = /* @__PURE__ */ __name(() => {
982
1044
  style: infoIcon
983
1045
  }), /* @__PURE__ */ import_react5.default.createElement("p", {
984
1046
  style: infoText
985
- }, userinfo?.name, "\u8FD0\u8425")), /* @__PURE__ */ import_react5.default.createElement("div", {
1047
+ }, t("safety.tenant.operated", {
1048
+ name: userinfo?.name ?? ""
1049
+ }))), /* @__PURE__ */ import_react5.default.createElement("div", {
986
1050
  style: infoRow
987
1051
  }, /* @__PURE__ */ import_react5.default.createElement("img", {
988
1052
  src: ICON_AI_URL,
989
1053
  style: infoIcon
990
1054
  }), /* @__PURE__ */ import_react5.default.createElement("p", {
991
1055
  style: infoText
992
- }, "\u5305\u542B AI \u751F\u6210\u5185\u5BB9\uFF0C\u8BF7\u6CE8\u610F\u7504\u522B"))), /* @__PURE__ */ import_react5.default.createElement("div", {
1056
+ }, t("safety.ai.disclaimer")))), /* @__PURE__ */ import_react5.default.createElement("div", {
993
1057
  style: btnRow
994
1058
  }, /* @__PURE__ */ import_react5.default.createElement(HoverButton, {
995
1059
  style: btnBase,
@@ -1000,11 +1064,11 @@ var Safety = /* @__PURE__ */ __name(() => {
1000
1064
  setVisible(false);
1001
1065
  window.localStorage?.setItem(HasClosedKey, "true");
1002
1066
  }, "onClick")
1003
- }, "\u4E0D\u518D\u5C55\u793A"), /* @__PURE__ */ import_react5.default.createElement(HoverButton, {
1067
+ }, t("safety.button.dontShowAgain")), /* @__PURE__ */ import_react5.default.createElement(HoverButton, {
1004
1068
  style: btnBase,
1005
1069
  "data-custom-element": "safety-more",
1006
1070
  onClick: /* @__PURE__ */ __name(() => window.open(LANDING_URL, "_blank"), "onClick")
1007
- }, "\u4E86\u89E3\u66F4\u591A")))))));
1071
+ }, t("safety.button.learnMore"))))))));
1008
1072
  }, "Safety");
1009
1073
  var safety_default = Safety;
1010
1074
 
@@ -1172,13 +1236,32 @@ var AppContainer = /* @__PURE__ */ __name(({ children }) => {
1172
1236
  }, "AppContainer");
1173
1237
  var AppContainer_default = AppContainer;
1174
1238
 
1175
- // src/route-components/ActiveLink.tsx
1239
+ // src/components/Welcome/index.tsx
1176
1240
  var import_react8 = __toESM(require("react"), 1);
1241
+ var Welcome = /* @__PURE__ */ __name(({ title = "\u9875\u9762\u5F85\u5F00\u53D1", description = "\u9875\u9762\u6682\u672A\u5F00\u53D1\uFF0C\u8BF7\u8010\u5FC3\u7B49\u5F85..." }) => {
1242
+ return /* @__PURE__ */ import_react8.default.createElement("div", {
1243
+ className: "flex flex-col items-center justify-center px-6 w-full h-[calc(100vh-64px)] text-center"
1244
+ }, /* @__PURE__ */ import_react8.default.createElement("img", {
1245
+ className: "rounded-md mb-6",
1246
+ width: "320",
1247
+ height: "200",
1248
+ src: "https://lf3-static.bytednsdoc.com/obj/eden-cn/LMfspH/ljhwZthlaukjlkulzlp/miao/welcome.svg",
1249
+ alt: "Welcome"
1250
+ }), /* @__PURE__ */ import_react8.default.createElement("div", {
1251
+ className: "text-center text-foreground text-base font-medium mb-1 leading-6"
1252
+ }, title), /* @__PURE__ */ import_react8.default.createElement("div", {
1253
+ className: "text-center text-muted-foreground text-base leading-6 line-clamp-2 sm:max-w-[480px]"
1254
+ }, description));
1255
+ }, "Welcome");
1256
+ var Welcome_default = Welcome;
1257
+
1258
+ // src/route-components/ActiveLink.tsx
1259
+ var import_react9 = __toESM(require("react"), 1);
1177
1260
  var import_react_router_dom = require("react-router-dom");
1178
- var ActiveLink = /* @__PURE__ */ (0, import_react8.forwardRef)(({ to, onClick, className, style, children, ...rest }, ref) => {
1179
- const [currentHash, setCurrentHash] = (0, import_react8.useState)(() => typeof window !== "undefined" ? window.location.hash : "");
1261
+ var ActiveLink = /* @__PURE__ */ (0, import_react9.forwardRef)(({ to, onClick, className, style, children, ...rest }, ref) => {
1262
+ const [currentHash, setCurrentHash] = (0, import_react9.useState)(() => typeof window !== "undefined" ? window.location.hash : "");
1180
1263
  const isHashRoute = typeof to === "string" && to.startsWith("#");
1181
- (0, import_react8.useEffect)(() => {
1264
+ (0, import_react9.useEffect)(() => {
1182
1265
  if (!isHashRoute) return;
1183
1266
  const handleHashChange = /* @__PURE__ */ __name(() => {
1184
1267
  setCurrentHash(window.location.hash);
@@ -1190,7 +1273,7 @@ var ActiveLink = /* @__PURE__ */ (0, import_react8.forwardRef)(({ to, onClick, c
1190
1273
  ]);
1191
1274
  const isActive = isHashRoute && currentHash === to;
1192
1275
  if (!isHashRoute) {
1193
- return /* @__PURE__ */ import_react8.default.createElement(import_react_router_dom.NavLink, {
1276
+ return /* @__PURE__ */ import_react9.default.createElement(import_react_router_dom.NavLink, {
1194
1277
  ref,
1195
1278
  to,
1196
1279
  onClick,
@@ -1231,7 +1314,7 @@ var ActiveLink = /* @__PURE__ */ (0, import_react8.forwardRef)(({ to, onClick, c
1231
1314
  isPending: false,
1232
1315
  isTransitioning: false
1233
1316
  }) : children;
1234
- return /* @__PURE__ */ import_react8.default.createElement("a", {
1317
+ return /* @__PURE__ */ import_react9.default.createElement("a", {
1235
1318
  ref,
1236
1319
  href: to,
1237
1320
  onClick: handleHashClick,
@@ -1243,9 +1326,9 @@ var ActiveLink = /* @__PURE__ */ (0, import_react8.forwardRef)(({ to, onClick, c
1243
1326
  ActiveLink.displayName = "ActiveLink";
1244
1327
 
1245
1328
  // src/route-components/NavLink.tsx
1246
- var React6 = __toESM(require("react"), 1);
1329
+ var React7 = __toESM(require("react"), 1);
1247
1330
  var import_react_router_dom2 = require("react-router-dom");
1248
- var NavLink2 = /* @__PURE__ */ React6.forwardRef(({ to, children, className, style, ...props }, ref) => {
1331
+ var NavLink2 = /* @__PURE__ */ React7.forwardRef(({ to, children, className, style, ...props }, ref) => {
1249
1332
  const isHashLink = typeof to === "string" && to.startsWith("#");
1250
1333
  const location = (0, import_react_router_dom2.useLocation)();
1251
1334
  const navigate = (0, import_react_router_dom2.useNavigate)();
@@ -1269,7 +1352,7 @@ var NavLink2 = /* @__PURE__ */ React6.forwardRef(({ to, children, className, sty
1269
1352
  const resolvedClassName = typeof className === "function" ? className(renderProps) : className;
1270
1353
  const resolvedStyle = typeof style === "function" ? style(renderProps) : style;
1271
1354
  const { caseSensitive, end, replace, state, preventScrollReset, relative, viewTransition, ...restProps } = props;
1272
- return /* @__PURE__ */ React6.createElement("a", {
1355
+ return /* @__PURE__ */ React7.createElement("a", {
1273
1356
  href: to,
1274
1357
  onClick: handleClick,
1275
1358
  ref,
@@ -1278,7 +1361,7 @@ var NavLink2 = /* @__PURE__ */ React6.forwardRef(({ to, children, className, sty
1278
1361
  ...restProps
1279
1362
  }, typeof children === "function" ? children(renderProps) : children);
1280
1363
  }
1281
- return /* @__PURE__ */ React6.createElement(import_react_router_dom2.NavLink, {
1364
+ return /* @__PURE__ */ React7.createElement(import_react_router_dom2.NavLink, {
1282
1365
  to,
1283
1366
  ref,
1284
1367
  className,
@@ -1293,7 +1376,7 @@ var NavLink2 = /* @__PURE__ */ React6.forwardRef(({ to, children, className, sty
1293
1376
  NavLink2.displayName = "NavLink";
1294
1377
 
1295
1378
  // src/route-components/UniversalLink.tsx
1296
- var import_react9 = __toESM(require("react"), 1);
1379
+ var import_react10 = __toESM(require("react"), 1);
1297
1380
  var import_react_router_dom3 = require("react-router-dom");
1298
1381
  function isInternalRoute(to) {
1299
1382
  return !to.startsWith("#") && !to.startsWith("http://") && !to.startsWith("https://") && !to.startsWith("//");
@@ -1303,15 +1386,15 @@ function isExternalLink(to) {
1303
1386
  return to.startsWith("http://") || to.startsWith("https://") || to.startsWith("//");
1304
1387
  }
1305
1388
  __name(isExternalLink, "isExternalLink");
1306
- var UniversalLink = /* @__PURE__ */ import_react9.default.forwardRef(/* @__PURE__ */ __name(function UniversalLink2({ to, ...props }, ref) {
1389
+ var UniversalLink = /* @__PURE__ */ import_react10.default.forwardRef(/* @__PURE__ */ __name(function UniversalLink2({ to, ...props }, ref) {
1307
1390
  if (isInternalRoute(to)) {
1308
- return /* @__PURE__ */ import_react9.default.createElement(import_react_router_dom3.Link, {
1391
+ return /* @__PURE__ */ import_react10.default.createElement(import_react_router_dom3.Link, {
1309
1392
  to,
1310
1393
  ref,
1311
1394
  ...props
1312
1395
  });
1313
1396
  }
1314
- return /* @__PURE__ */ import_react9.default.createElement("a", {
1397
+ return /* @__PURE__ */ import_react10.default.createElement("a", {
1315
1398
  href: to,
1316
1399
  ref,
1317
1400
  ...props,
@@ -1739,6 +1822,7 @@ var abstractArt3dRenderingCoverImg6 = "https://lf3-static.bytednsdoc.com/obj/ede
1739
1822
  QueryProvider,
1740
1823
  TrackKey,
1741
1824
  UniversalLink,
1825
+ Welcome,
1742
1826
  avatarImages,
1743
1827
  axiosForBackend,
1744
1828
  bannerImages,