@windrun-huaiin/base-ui 5.2.0 → 5.3.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/components/index.js +204 -89
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +211 -87
- package/dist/components/index.mjs.map +1 -1
- package/dist/components/server.d.cts +13 -1
- package/dist/components/server.d.ts +13 -1
- package/dist/components/server.js +132 -13
- package/dist/components/server.js.map +1 -1
- package/dist/components/server.mjs +142 -14
- package/dist/components/server.mjs.map +1 -1
- package/dist/ui/index.js +178 -59
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +188 -60
- package/dist/ui/index.mjs.map +1 -1
- package/package.json +3 -3
- package/src/assets/faq.tsx +22 -0
- package/src/assets/faqb.tsx +23 -0
- package/src/assets/faqs.tsx +23 -0
- package/src/assets/index.ts +6 -0
- package/src/components/index.ts +0 -1
- package/src/components/go-to-top.tsx +0 -43
@@ -1051,6 +1051,113 @@ var SchemeIcon = React28.forwardRef(
|
|
1051
1051
|
SchemeIcon.displayName = "Scheme";
|
1052
1052
|
var scheme_default = SchemeIcon;
|
1053
1053
|
|
1054
|
+
// src/assets/faq.tsx
|
1055
|
+
import React29 from "react";
|
1056
|
+
import { jsx as jsx29, jsxs as jsxs7 } from "react/jsx-runtime";
|
1057
|
+
var FAQIcon = React29.forwardRef(
|
1058
|
+
(_a, ref) => {
|
1059
|
+
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
1060
|
+
return /* @__PURE__ */ jsxs7(
|
1061
|
+
"svg",
|
1062
|
+
__spreadProps(__spreadValues({
|
1063
|
+
ref,
|
1064
|
+
role: "img",
|
1065
|
+
className,
|
1066
|
+
stroke: "currentColor",
|
1067
|
+
strokeWidth: "2",
|
1068
|
+
strokeLinecap: "round",
|
1069
|
+
strokeLinejoin: "round"
|
1070
|
+
}, props), {
|
1071
|
+
viewBox: "0 0 24 24",
|
1072
|
+
xmlns: "http://www.w3.org/2000/svg",
|
1073
|
+
children: [
|
1074
|
+
/* @__PURE__ */ jsx29("circle", { cx: "12", cy: "12", r: "10", fill: "none", stroke: themeSvgIconColor }),
|
1075
|
+
/* @__PURE__ */ jsx29("path", { d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3", fill: "none", stroke: themeSvgIconColor }),
|
1076
|
+
/* @__PURE__ */ jsx29("path", { d: "M12 17h.01", fill: "none", stroke: themeSvgIconColor })
|
1077
|
+
]
|
1078
|
+
})
|
1079
|
+
);
|
1080
|
+
}
|
1081
|
+
);
|
1082
|
+
FAQIcon.displayName = "FAQ";
|
1083
|
+
var faq_default = FAQIcon;
|
1084
|
+
|
1085
|
+
// src/assets/faqb.tsx
|
1086
|
+
import React30 from "react";
|
1087
|
+
import { jsx as jsx30, jsxs as jsxs8 } from "react/jsx-runtime";
|
1088
|
+
var FAQBIcon = React30.forwardRef(
|
1089
|
+
(_a, ref) => {
|
1090
|
+
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
1091
|
+
return /* @__PURE__ */ jsxs8(
|
1092
|
+
"svg",
|
1093
|
+
__spreadProps(__spreadValues({
|
1094
|
+
ref,
|
1095
|
+
role: "img",
|
1096
|
+
className,
|
1097
|
+
stroke: "currentColor",
|
1098
|
+
strokeWidth: "2",
|
1099
|
+
strokeLinecap: "round",
|
1100
|
+
strokeLinejoin: "round"
|
1101
|
+
}, props), {
|
1102
|
+
viewBox: "0 0 24 24",
|
1103
|
+
xmlns: "http://www.w3.org/2000/svg",
|
1104
|
+
children: [
|
1105
|
+
/* @__PURE__ */ jsx30(
|
1106
|
+
"path",
|
1107
|
+
{
|
1108
|
+
fill: "none",
|
1109
|
+
stroke: themeSvgIconColor,
|
1110
|
+
d: "M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z"
|
1111
|
+
}
|
1112
|
+
),
|
1113
|
+
/* @__PURE__ */ jsx30("path", { fill: "none", stroke: themeSvgIconColor, d: "M9.09 9a3 3 0 0 1 5.83 1c0 2-3 3-3 3" }),
|
1114
|
+
/* @__PURE__ */ jsx30("line", { fill: "none", stroke: themeSvgIconColor, x1: "12", x2: "12.01", y1: "17", y2: "17" })
|
1115
|
+
]
|
1116
|
+
})
|
1117
|
+
);
|
1118
|
+
}
|
1119
|
+
);
|
1120
|
+
FAQBIcon.displayName = "FAQB";
|
1121
|
+
var faqb_default = FAQBIcon;
|
1122
|
+
|
1123
|
+
// src/assets/faqs.tsx
|
1124
|
+
import React31 from "react";
|
1125
|
+
import { jsx as jsx31, jsxs as jsxs9 } from "react/jsx-runtime";
|
1126
|
+
var FAQSIcon = React31.forwardRef(
|
1127
|
+
(_a, ref) => {
|
1128
|
+
var _b = _a, { color = "currentColor", className } = _b, props = __objRest(_b, ["color", "className"]);
|
1129
|
+
return /* @__PURE__ */ jsxs9(
|
1130
|
+
"svg",
|
1131
|
+
__spreadProps(__spreadValues({
|
1132
|
+
ref,
|
1133
|
+
role: "img",
|
1134
|
+
className,
|
1135
|
+
stroke: "currentColor",
|
1136
|
+
strokeWidth: "2",
|
1137
|
+
strokeLinecap: "round",
|
1138
|
+
strokeLinejoin: "round"
|
1139
|
+
}, props), {
|
1140
|
+
viewBox: "0 0 24 24",
|
1141
|
+
xmlns: "http://www.w3.org/2000/svg",
|
1142
|
+
children: [
|
1143
|
+
/* @__PURE__ */ jsx31(
|
1144
|
+
"path",
|
1145
|
+
{
|
1146
|
+
fill: "none",
|
1147
|
+
stroke: themeSvgIconColor,
|
1148
|
+
d: "M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z"
|
1149
|
+
}
|
1150
|
+
),
|
1151
|
+
/* @__PURE__ */ jsx31("path", { fill: "none", stroke: themeSvgIconColor, d: "M9.1 9a3 3 0 0 1 5.82 1c0 2-3 3-3 3" }),
|
1152
|
+
/* @__PURE__ */ jsx31("path", { fill: "none", stroke: themeSvgIconColor, d: "M12 17h.01" })
|
1153
|
+
]
|
1154
|
+
})
|
1155
|
+
);
|
1156
|
+
}
|
1157
|
+
);
|
1158
|
+
FAQSIcon.displayName = "FAQS";
|
1159
|
+
var faqs_default = FAQSIcon;
|
1160
|
+
|
1054
1161
|
// src/assets/index.ts
|
1055
1162
|
var BUILTIN_ICON_COMPONENTS = {
|
1056
1163
|
GitHub: github_default,
|
@@ -1080,7 +1187,10 @@ var BUILTIN_ICON_COMPONENTS = {
|
|
1080
1187
|
SubP: subp_default,
|
1081
1188
|
T3P: t3p_default,
|
1082
1189
|
Http: http_default,
|
1083
|
-
Scheme: scheme_default
|
1190
|
+
Scheme: scheme_default,
|
1191
|
+
FAQ: faq_default,
|
1192
|
+
FAQB: faqb_default,
|
1193
|
+
FAQS: faqs_default
|
1084
1194
|
};
|
1085
1195
|
|
1086
1196
|
// ../lib/src/limited-lucide-icons.ts
|
@@ -1107,6 +1217,7 @@ __export(limited_lucide_icons_exports, {
|
|
1107
1217
|
Circle: () => Circle,
|
1108
1218
|
CircleAlert: () => CircleAlert,
|
1109
1219
|
CircleSmall: () => CircleSmall,
|
1220
|
+
CircleStop: () => CircleStop,
|
1110
1221
|
ComponentIcon: () => ComponentIcon,
|
1111
1222
|
Copy: () => Copy,
|
1112
1223
|
Cpu: () => Cpu,
|
@@ -1128,6 +1239,7 @@ __export(limited_lucide_icons_exports, {
|
|
1128
1239
|
GitPullRequestArrow: () => GitPullRequestArrow,
|
1129
1240
|
Globe: () => Globe,
|
1130
1241
|
GlobeLock: () => GlobeLock,
|
1242
|
+
Grip: () => Grip,
|
1131
1243
|
GripVertical: () => GripVertical,
|
1132
1244
|
HandHeart: () => HandHeart,
|
1133
1245
|
Handshake: () => Handshake,
|
@@ -1136,6 +1248,7 @@ __export(limited_lucide_icons_exports, {
|
|
1136
1248
|
ImageDown: () => ImageDown,
|
1137
1249
|
ImageOff: () => ImageOff,
|
1138
1250
|
ImageUp: () => ImageUp,
|
1251
|
+
Infinity: () => Infinity,
|
1139
1252
|
Info: () => Info,
|
1140
1253
|
Keyboard: () => Keyboard,
|
1141
1254
|
LandPlot: () => LandPlot,
|
@@ -1153,28 +1266,34 @@ __export(limited_lucide_icons_exports, {
|
|
1153
1266
|
Palette: () => Palette,
|
1154
1267
|
PanelLeft: () => PanelLeft,
|
1155
1268
|
PanelsTopLeft: () => PanelsTopLeft,
|
1269
|
+
PawPrint: () => PawPrint,
|
1156
1270
|
Pencil: () => Pencil,
|
1157
1271
|
Pi: () => Pi,
|
1272
|
+
QrCode: () => QrCode,
|
1158
1273
|
ReceiptText: () => ReceiptText,
|
1159
1274
|
RefreshCcw: () => RefreshCcw,
|
1160
1275
|
Regex: () => Regex,
|
1161
1276
|
Replace: () => Replace,
|
1277
|
+
Rocket: () => Rocket,
|
1162
1278
|
Rss: () => Rss,
|
1163
1279
|
Scale: () => Scale,
|
1164
1280
|
Search: () => Search,
|
1165
1281
|
SendHorizontal: () => SendHorizontal,
|
1166
1282
|
Server: () => Server,
|
1167
1283
|
Share: () => Share,
|
1284
|
+
Shield: () => Shield,
|
1168
1285
|
ShieldUser: () => ShieldUser,
|
1169
1286
|
Sigma: () => Sigma,
|
1170
1287
|
Sparkles: () => Sparkles,
|
1171
1288
|
SplinePointer: () => SplinePointer,
|
1289
|
+
Sprout: () => Sprout,
|
1172
1290
|
SquareDashedBottomCode: () => SquareDashedBottomCode,
|
1173
1291
|
SquareTerminal: () => SquareTerminal,
|
1174
1292
|
Star: () => Star,
|
1175
1293
|
Tablets: () => Tablets,
|
1176
1294
|
Terminal: () => Terminal,
|
1177
1295
|
Twitter: () => Twitter,
|
1296
|
+
Workflow: () => Workflow,
|
1178
1297
|
X: () => X,
|
1179
1298
|
Zap: () => Zap
|
1180
1299
|
});
|
@@ -1194,6 +1313,7 @@ import {
|
|
1194
1313
|
Circle,
|
1195
1314
|
CircleAlert,
|
1196
1315
|
CircleSmall,
|
1316
|
+
CircleStop,
|
1197
1317
|
Check,
|
1198
1318
|
CheckCheck,
|
1199
1319
|
ChevronDown,
|
@@ -1209,6 +1329,7 @@ import {
|
|
1209
1329
|
Eye,
|
1210
1330
|
ExternalLink,
|
1211
1331
|
Facebook,
|
1332
|
+
Shield,
|
1212
1333
|
File,
|
1213
1334
|
FileDown,
|
1214
1335
|
FileInput,
|
@@ -1221,11 +1342,13 @@ import {
|
|
1221
1342
|
GitPullRequestArrow,
|
1222
1343
|
Globe,
|
1223
1344
|
GlobeLock,
|
1345
|
+
Grip,
|
1224
1346
|
GripVertical,
|
1225
1347
|
HandHeart,
|
1226
1348
|
Handshake,
|
1227
1349
|
Highlighter,
|
1228
1350
|
HousePlus,
|
1351
|
+
Infinity,
|
1229
1352
|
Info,
|
1230
1353
|
ImageDown,
|
1231
1354
|
ImageOff,
|
@@ -1243,15 +1366,18 @@ import {
|
|
1243
1366
|
Mail,
|
1244
1367
|
MoreHorizontal,
|
1245
1368
|
MousePointerClick,
|
1369
|
+
Palette,
|
1246
1370
|
PanelLeft,
|
1247
1371
|
PanelsTopLeft,
|
1372
|
+
PawPrint,
|
1248
1373
|
Pencil,
|
1249
1374
|
Pi,
|
1250
|
-
|
1375
|
+
QrCode,
|
1251
1376
|
ReceiptText,
|
1252
1377
|
RefreshCcw,
|
1253
1378
|
Regex,
|
1254
1379
|
Replace,
|
1380
|
+
Rocket,
|
1255
1381
|
Rss,
|
1256
1382
|
Scale,
|
1257
1383
|
Search,
|
@@ -1259,6 +1385,7 @@ import {
|
|
1259
1385
|
Share,
|
1260
1386
|
Sigma,
|
1261
1387
|
ShieldUser,
|
1388
|
+
Sprout,
|
1262
1389
|
SquareDashedBottomCode,
|
1263
1390
|
SquareTerminal,
|
1264
1391
|
Server,
|
@@ -1268,13 +1395,14 @@ import {
|
|
1268
1395
|
Tablets,
|
1269
1396
|
Terminal,
|
1270
1397
|
Twitter,
|
1398
|
+
Workflow,
|
1271
1399
|
X,
|
1272
1400
|
Zap
|
1273
1401
|
} from "lucide-react";
|
1274
1402
|
|
1275
1403
|
// src/components/global-icon.tsx
|
1276
|
-
import
|
1277
|
-
import { jsx as
|
1404
|
+
import React32 from "react";
|
1405
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
1278
1406
|
var tempStyledLimitedIcons = {};
|
1279
1407
|
for (const iconNameKey in limited_lucide_icons_exports) {
|
1280
1408
|
if (Object.prototype.hasOwnProperty.call(limited_lucide_icons_exports, iconNameKey)) {
|
@@ -1294,7 +1422,7 @@ for (const iconNameKey in limited_lucide_icons_exports) {
|
|
1294
1422
|
height: props.size || themeSvgIconSize
|
1295
1423
|
}, props.style)
|
1296
1424
|
});
|
1297
|
-
return /* @__PURE__ */
|
1425
|
+
return /* @__PURE__ */ jsx32(ComponentToRender, __spreadValues({}, finalProps));
|
1298
1426
|
};
|
1299
1427
|
StyledIcon.displayName = `Styled(${iconName})`;
|
1300
1428
|
tempStyledLimitedIcons[iconName] = StyledIcon;
|
@@ -1318,18 +1446,18 @@ for (const [iconName, IconComponent] of Object.entries(BUILTIN_ICON_COMPONENTS))
|
|
1318
1446
|
height: props.size || themeSvgIconSize
|
1319
1447
|
}, props.style)
|
1320
1448
|
});
|
1321
|
-
return /* @__PURE__ */
|
1449
|
+
return /* @__PURE__ */ jsx32(IconComponent, __spreadValues({}, finalProps));
|
1322
1450
|
};
|
1323
1451
|
WrappedIcon.displayName = `Wrapped(${iconName})`;
|
1324
1452
|
tempWrappedBuiltinIcons[iconName] = WrappedIcon;
|
1325
1453
|
}
|
1326
1454
|
var wrappedBuiltinIconsPart = tempWrappedBuiltinIcons;
|
1327
1455
|
var globalLucideIcons = __spreadValues(__spreadValues({}, styledLimitedIconsPart), wrappedBuiltinIconsPart);
|
1328
|
-
var NotFoundIcon = () => /* @__PURE__ */
|
1456
|
+
var NotFoundIcon = () => /* @__PURE__ */ jsx32(globalLucideIcons.SquareTerminal, { className: `h-8 w-8 rounded-full p-1 shadow-lg ring-0.5 border border-purple-500 ring-purple-500/20 ${themeIconColor}` });
|
1329
1457
|
|
1330
1458
|
// src/components/404-page.tsx
|
1331
1459
|
import { useEffect, useState } from "react";
|
1332
|
-
import { jsx as
|
1460
|
+
import { jsx as jsx33, jsxs as jsxs10 } from "react/jsx-runtime";
|
1333
1461
|
function NotFoundPage({ siteIcon }) {
|
1334
1462
|
const [glitchText, setGlitchText] = useState("404");
|
1335
1463
|
useEffect(() => {
|
@@ -1347,10 +1475,10 @@ function NotFoundPage({ siteIcon }) {
|
|
1347
1475
|
}, 600);
|
1348
1476
|
return () => clearInterval(interval);
|
1349
1477
|
}, []);
|
1350
|
-
return /* @__PURE__ */
|
1351
|
-
/* @__PURE__ */
|
1352
|
-
/* @__PURE__ */
|
1353
|
-
/* @__PURE__ */
|
1478
|
+
return /* @__PURE__ */ jsxs10("div", { className: "flex flex-col items-center justify-center min-h-[75vh] w-full px-4 py-8", children: [
|
1479
|
+
/* @__PURE__ */ jsxs10("div", { className: "text-center space-y-8 max-w-2xl", children: [
|
1480
|
+
/* @__PURE__ */ jsxs10("div", { className: "relative flex justify-center", children: [
|
1481
|
+
/* @__PURE__ */ jsx33(
|
1354
1482
|
"h1",
|
1355
1483
|
{
|
1356
1484
|
className: "text-8xl md:text-9xl font-bold bg-gradient-to-r from-purple-600 via-pink-500 to-purple-700 bg-clip-text text-transparent select-none",
|
@@ -1362,26 +1490,26 @@ function NotFoundPage({ siteIcon }) {
|
|
1362
1490
|
children: glitchText
|
1363
1491
|
}
|
1364
1492
|
),
|
1365
|
-
/* @__PURE__ */
|
1493
|
+
/* @__PURE__ */ jsx33("div", { className: "absolute inset-0 pointer-events-none", children: /* @__PURE__ */ jsx33("div", { className: "h-full w-full bg-gradient-to-b from-transparent via-purple-500/10 to-transparent animate-pulse" }) })
|
1366
1494
|
] }),
|
1367
|
-
/* @__PURE__ */
|
1368
|
-
/* @__PURE__ */
|
1369
|
-
/* @__PURE__ */
|
1495
|
+
/* @__PURE__ */ jsxs10("div", { className: "space-y-4", children: [
|
1496
|
+
/* @__PURE__ */ jsx33("h2", { className: "text-2xl md:text-3xl font-semibold text-foreground", children: "Page Not Found" }),
|
1497
|
+
/* @__PURE__ */ jsx33("p", { className: "text-lg text-muted-foreground max-w-md mx-auto leading-relaxed", children: "The page you're looking for doesn't exist" })
|
1370
1498
|
] }),
|
1371
|
-
/* @__PURE__ */
|
1372
|
-
/* @__PURE__ */
|
1499
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex justify-center items-center gap-8 pt-8 opacity-60", children: [
|
1500
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
|
1373
1501
|
siteIcon,
|
1374
|
-
/* @__PURE__ */
|
1502
|
+
/* @__PURE__ */ jsx33("span", { children: "Woops!" })
|
1375
1503
|
] }),
|
1376
|
-
/* @__PURE__ */
|
1377
|
-
/* @__PURE__ */
|
1378
|
-
/* @__PURE__ */
|
1379
|
-
/* @__PURE__ */
|
1504
|
+
/* @__PURE__ */ jsx33("div", { className: "w-1 h-1 bg-purple-500 rounded-full animate-ping" }),
|
1505
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
|
1506
|
+
/* @__PURE__ */ jsx33(NotFoundIcon, {}),
|
1507
|
+
/* @__PURE__ */ jsx33("span", { children: "Error Code: 404" })
|
1380
1508
|
] })
|
1381
1509
|
] })
|
1382
1510
|
] }),
|
1383
|
-
/* @__PURE__ */
|
1384
|
-
/* @__PURE__ */
|
1511
|
+
/* @__PURE__ */ jsxs10("div", { className: "fixed inset-0 pointer-events-none overflow-hidden -z-10", children: [
|
1512
|
+
/* @__PURE__ */ jsx33(
|
1385
1513
|
"div",
|
1386
1514
|
{
|
1387
1515
|
className: "absolute inset-0 opacity-[0.02] dark:opacity-[0.05]",
|
@@ -1394,7 +1522,7 @@ function NotFoundPage({ siteIcon }) {
|
|
1394
1522
|
}
|
1395
1523
|
}
|
1396
1524
|
),
|
1397
|
-
Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */
|
1525
|
+
Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsx33(
|
1398
1526
|
"div",
|
1399
1527
|
{
|
1400
1528
|
className: "absolute w-2 h-2 bg-purple-500/20 rounded-full animate-bounce",
|
@@ -1411,23 +1539,19 @@ function NotFoundPage({ siteIcon }) {
|
|
1411
1539
|
] });
|
1412
1540
|
}
|
1413
1541
|
|
1414
|
-
// src/components/go-to-top.tsx
|
1415
|
-
import { useState as useState2, useEffect as useEffect2 } from "react";
|
1416
|
-
import { Fragment, jsx as jsx31 } from "react/jsx-runtime";
|
1417
|
-
|
1418
1542
|
// src/components/language-detector.tsx
|
1419
1543
|
import { useLocale, useTranslations } from "next-intl";
|
1420
1544
|
import { useRouter } from "next/navigation";
|
1421
|
-
import { useEffect as
|
1422
|
-
import { jsx as
|
1545
|
+
import { useEffect as useEffect2, useState as useState2 } from "react";
|
1546
|
+
import { jsx as jsx34, jsxs as jsxs11 } from "react/jsx-runtime";
|
1423
1547
|
function LanguageDetector({ i18nConfig }) {
|
1424
|
-
const [show, setShow] =
|
1425
|
-
const [detectedLocale, setDetectedLocale] =
|
1548
|
+
const [show, setShow] = useState2(false);
|
1549
|
+
const [detectedLocale, setDetectedLocale] = useState2(null);
|
1426
1550
|
const currentLocale = useLocale();
|
1427
1551
|
const router = useRouter();
|
1428
1552
|
const t = useTranslations("languageDetection");
|
1429
1553
|
const LANGUAGE_PREFERENCE_KEY = `${i18nConfig.detector.storagePrefix}-${i18nConfig.detector.storageKey}`;
|
1430
|
-
|
1554
|
+
useEffect2(() => {
|
1431
1555
|
const browserLang = navigator.language.split("-")[0];
|
1432
1556
|
const savedPreference = localStorage.getItem(LANGUAGE_PREFERENCE_KEY);
|
1433
1557
|
const preference = savedPreference ? JSON.parse(savedPreference) : null;
|
@@ -1475,31 +1599,31 @@ function LanguageDetector({ i18nConfig }) {
|
|
1475
1599
|
setShow(false);
|
1476
1600
|
};
|
1477
1601
|
if (!detectedLocale || !show) return null;
|
1478
|
-
return /* @__PURE__ */
|
1602
|
+
return /* @__PURE__ */ jsx34("div", { className: "fixed top-16 right-4 z-40 w-[420px]", children: /* @__PURE__ */ jsx34("div", { className: `shadow-lg rounded-lg transition-all duration-300 ${show ? "translate-x-0 opacity-100" : "translate-x-full opacity-0"}
|
1479
1603
|
bg-linear-to-r from-purple-100/95 via-white/95 to-purple-100/95 backdrop-blur-xs
|
1480
|
-
animate-gradient-x`, children: /* @__PURE__ */
|
1481
|
-
/* @__PURE__ */
|
1482
|
-
/* @__PURE__ */
|
1483
|
-
/* @__PURE__ */
|
1484
|
-
/* @__PURE__ */
|
1485
|
-
/* @__PURE__ */
|
1604
|
+
animate-gradient-x`, children: /* @__PURE__ */ jsxs11("div", { className: "relative px-6 py-4 overflow-hidden", children: [
|
1605
|
+
/* @__PURE__ */ jsxs11("div", { className: "relative z-10 flex flex-col gap-3", children: [
|
1606
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex items-start justify-between gap-4", children: [
|
1607
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex flex-col gap-1.5", children: [
|
1608
|
+
/* @__PURE__ */ jsx34("h3", { className: "text-lg font-semibold text-gray-900", children: t("title") }),
|
1609
|
+
/* @__PURE__ */ jsxs11("p", { className: "text-base text-gray-600", children: [
|
1486
1610
|
t("description"),
|
1487
1611
|
" ",
|
1488
|
-
/* @__PURE__ */
|
1612
|
+
/* @__PURE__ */ jsx34("span", { className: "text-purple-500 font-semibold", children: detectedLocale === "zh" ? "\u4E2D\u6587" : "English" }),
|
1489
1613
|
"?"
|
1490
1614
|
] })
|
1491
1615
|
] }),
|
1492
|
-
/* @__PURE__ */
|
1616
|
+
/* @__PURE__ */ jsx34(
|
1493
1617
|
"button",
|
1494
1618
|
{
|
1495
1619
|
onClick: handleClose,
|
1496
1620
|
className: "text-gray-500 hover:text-gray-700",
|
1497
|
-
children: /* @__PURE__ */
|
1621
|
+
children: /* @__PURE__ */ jsx34(globalLucideIcons.X, { className: "h-5 w-5" })
|
1498
1622
|
}
|
1499
1623
|
)
|
1500
1624
|
] }),
|
1501
|
-
/* @__PURE__ */
|
1502
|
-
/* @__PURE__ */
|
1625
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-3", children: [
|
1626
|
+
/* @__PURE__ */ jsx34(
|
1503
1627
|
"button",
|
1504
1628
|
{
|
1505
1629
|
onClick: handleClose,
|
@@ -1507,7 +1631,7 @@ function LanguageDetector({ i18nConfig }) {
|
|
1507
1631
|
children: t("close")
|
1508
1632
|
}
|
1509
1633
|
),
|
1510
|
-
/* @__PURE__ */
|
1634
|
+
/* @__PURE__ */ jsx34(
|
1511
1635
|
"button",
|
1512
1636
|
{
|
1513
1637
|
onClick: handleLanguageChange,
|
@@ -1517,7 +1641,7 @@ function LanguageDetector({ i18nConfig }) {
|
|
1517
1641
|
)
|
1518
1642
|
] })
|
1519
1643
|
] }),
|
1520
|
-
/* @__PURE__ */
|
1644
|
+
/* @__PURE__ */ jsx34("div", { className: "absolute inset-0 bg-linear-to-r from-transparent via-purple-200/30 to-transparent animate-shimmer" })
|
1521
1645
|
] }) }) });
|
1522
1646
|
}
|
1523
1647
|
|
@@ -1526,7 +1650,7 @@ import { usePathname, useRouter as useRouter2 } from "next/navigation";
|
|
1526
1650
|
import { useLocale as useLocale2 } from "next-intl";
|
1527
1651
|
|
1528
1652
|
// src/ui/dropdown-menu.tsx
|
1529
|
-
import * as
|
1653
|
+
import * as React33 from "react";
|
1530
1654
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
1531
1655
|
|
1532
1656
|
// ../lib/src/utils.ts
|
@@ -1537,12 +1661,12 @@ function cn(...inputs) {
|
|
1537
1661
|
}
|
1538
1662
|
|
1539
1663
|
// src/ui/dropdown-menu.tsx
|
1540
|
-
import { jsx as
|
1664
|
+
import { jsx as jsx35, jsxs as jsxs12 } from "react/jsx-runtime";
|
1541
1665
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
1542
1666
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
1543
|
-
var DropdownMenuSubTrigger =
|
1667
|
+
var DropdownMenuSubTrigger = React33.forwardRef((_a, ref) => {
|
1544
1668
|
var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
|
1545
|
-
return /* @__PURE__ */
|
1669
|
+
return /* @__PURE__ */ jsxs12(
|
1546
1670
|
DropdownMenuPrimitive.SubTrigger,
|
1547
1671
|
__spreadProps(__spreadValues({
|
1548
1672
|
ref,
|
@@ -1554,15 +1678,15 @@ var DropdownMenuSubTrigger = React30.forwardRef((_a, ref) => {
|
|
1554
1678
|
}, props), {
|
1555
1679
|
children: [
|
1556
1680
|
children,
|
1557
|
-
/* @__PURE__ */
|
1681
|
+
/* @__PURE__ */ jsx35(globalLucideIcons.ChevronRight, { className: "ml-auto" })
|
1558
1682
|
]
|
1559
1683
|
})
|
1560
1684
|
);
|
1561
1685
|
});
|
1562
1686
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
1563
|
-
var DropdownMenuSubContent =
|
1687
|
+
var DropdownMenuSubContent = React33.forwardRef((_a, ref) => {
|
1564
1688
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
1565
|
-
return /* @__PURE__ */
|
1689
|
+
return /* @__PURE__ */ jsx35(
|
1566
1690
|
DropdownMenuPrimitive.SubContent,
|
1567
1691
|
__spreadValues({
|
1568
1692
|
ref,
|
@@ -1574,9 +1698,9 @@ var DropdownMenuSubContent = React30.forwardRef((_a, ref) => {
|
|
1574
1698
|
);
|
1575
1699
|
});
|
1576
1700
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
1577
|
-
var DropdownMenuContent =
|
1701
|
+
var DropdownMenuContent = React33.forwardRef((_a, ref) => {
|
1578
1702
|
var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
|
1579
|
-
return /* @__PURE__ */
|
1703
|
+
return /* @__PURE__ */ jsx35(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx35(
|
1580
1704
|
DropdownMenuPrimitive.Content,
|
1581
1705
|
__spreadValues({
|
1582
1706
|
ref,
|
@@ -1589,9 +1713,9 @@ var DropdownMenuContent = React30.forwardRef((_a, ref) => {
|
|
1589
1713
|
) });
|
1590
1714
|
});
|
1591
1715
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
1592
|
-
var DropdownMenuItem =
|
1716
|
+
var DropdownMenuItem = React33.forwardRef((_a, ref) => {
|
1593
1717
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
1594
|
-
return /* @__PURE__ */
|
1718
|
+
return /* @__PURE__ */ jsx35(
|
1595
1719
|
DropdownMenuPrimitive.Item,
|
1596
1720
|
__spreadValues({
|
1597
1721
|
ref,
|
@@ -1604,9 +1728,9 @@ var DropdownMenuItem = React30.forwardRef((_a, ref) => {
|
|
1604
1728
|
);
|
1605
1729
|
});
|
1606
1730
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
1607
|
-
var DropdownMenuCheckboxItem =
|
1731
|
+
var DropdownMenuCheckboxItem = React33.forwardRef((_a, ref) => {
|
1608
1732
|
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
|
1609
|
-
return /* @__PURE__ */
|
1733
|
+
return /* @__PURE__ */ jsxs12(
|
1610
1734
|
DropdownMenuPrimitive.CheckboxItem,
|
1611
1735
|
__spreadProps(__spreadValues({
|
1612
1736
|
ref,
|
@@ -1617,16 +1741,16 @@ var DropdownMenuCheckboxItem = React30.forwardRef((_a, ref) => {
|
|
1617
1741
|
checked
|
1618
1742
|
}, props), {
|
1619
1743
|
children: [
|
1620
|
-
/* @__PURE__ */
|
1744
|
+
/* @__PURE__ */ jsx35("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx35(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx35(globalLucideIcons.Check, { className: "h-4 w-4" }) }) }),
|
1621
1745
|
children
|
1622
1746
|
]
|
1623
1747
|
})
|
1624
1748
|
);
|
1625
1749
|
});
|
1626
1750
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
1627
|
-
var DropdownMenuRadioItem =
|
1751
|
+
var DropdownMenuRadioItem = React33.forwardRef((_a, ref) => {
|
1628
1752
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
1629
|
-
return /* @__PURE__ */
|
1753
|
+
return /* @__PURE__ */ jsxs12(
|
1630
1754
|
DropdownMenuPrimitive.RadioItem,
|
1631
1755
|
__spreadProps(__spreadValues({
|
1632
1756
|
ref,
|
@@ -1636,16 +1760,16 @@ var DropdownMenuRadioItem = React30.forwardRef((_a, ref) => {
|
|
1636
1760
|
)
|
1637
1761
|
}, props), {
|
1638
1762
|
children: [
|
1639
|
-
/* @__PURE__ */
|
1763
|
+
/* @__PURE__ */ jsx35("span", { className: "absolute left-2 flex h-3.5 w-3.5 items-center justify-center", children: /* @__PURE__ */ jsx35(DropdownMenuPrimitive.ItemIndicator, { children: /* @__PURE__ */ jsx35(globalLucideIcons.Circle, { className: "h-2 w-2 fill-current" }) }) }),
|
1640
1764
|
children
|
1641
1765
|
]
|
1642
1766
|
})
|
1643
1767
|
);
|
1644
1768
|
});
|
1645
1769
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
1646
|
-
var DropdownMenuLabel =
|
1770
|
+
var DropdownMenuLabel = React33.forwardRef((_a, ref) => {
|
1647
1771
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
1648
|
-
return /* @__PURE__ */
|
1772
|
+
return /* @__PURE__ */ jsx35(
|
1649
1773
|
DropdownMenuPrimitive.Label,
|
1650
1774
|
__spreadValues({
|
1651
1775
|
ref,
|
@@ -1658,9 +1782,9 @@ var DropdownMenuLabel = React30.forwardRef((_a, ref) => {
|
|
1658
1782
|
);
|
1659
1783
|
});
|
1660
1784
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
1661
|
-
var DropdownMenuSeparator =
|
1785
|
+
var DropdownMenuSeparator = React33.forwardRef((_a, ref) => {
|
1662
1786
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
1663
|
-
return /* @__PURE__ */
|
1787
|
+
return /* @__PURE__ */ jsx35(
|
1664
1788
|
DropdownMenuPrimitive.Separator,
|
1665
1789
|
__spreadValues({
|
1666
1790
|
ref,
|
@@ -1675,7 +1799,7 @@ var DropdownMenuShortcut = (_a) => {
|
|
1675
1799
|
} = _b, props = __objRest(_b, [
|
1676
1800
|
"className"
|
1677
1801
|
]);
|
1678
|
-
return /* @__PURE__ */
|
1802
|
+
return /* @__PURE__ */ jsx35(
|
1679
1803
|
"span",
|
1680
1804
|
__spreadValues({
|
1681
1805
|
className: cn("ml-auto text-xs tracking-widest opacity-60", className)
|
@@ -1685,12 +1809,12 @@ var DropdownMenuShortcut = (_a) => {
|
|
1685
1809
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
1686
1810
|
|
1687
1811
|
// src/ui/language-button.tsx
|
1688
|
-
import * as
|
1689
|
-
import { jsx as
|
1690
|
-
var LanguageButton =
|
1812
|
+
import * as React34 from "react";
|
1813
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
1814
|
+
var LanguageButton = React34.forwardRef(
|
1691
1815
|
(_a, ref) => {
|
1692
1816
|
var _b = _a, { className, variant = "default", size = "default" } = _b, props = __objRest(_b, ["className", "variant", "size"]);
|
1693
|
-
return /* @__PURE__ */
|
1817
|
+
return /* @__PURE__ */ jsx36(
|
1694
1818
|
"button",
|
1695
1819
|
__spreadValues({
|
1696
1820
|
className: cn(
|
@@ -1713,7 +1837,7 @@ var LanguageButton = React31.forwardRef(
|
|
1713
1837
|
LanguageButton.displayName = "Button";
|
1714
1838
|
|
1715
1839
|
// src/components/language-switcher.tsx
|
1716
|
-
import { jsx as
|
1840
|
+
import { jsx as jsx37, jsxs as jsxs13 } from "react/jsx-runtime";
|
1717
1841
|
function LanguageSwitcher({ locales, localeLabels }) {
|
1718
1842
|
const locale = useLocale2();
|
1719
1843
|
const router = useRouter2();
|
@@ -1722,23 +1846,23 @@ function LanguageSwitcher({ locales, localeLabels }) {
|
|
1722
1846
|
const newPathname = pathname.replace(`/${locale}`, `/${newLocale}`);
|
1723
1847
|
router.push(newPathname);
|
1724
1848
|
};
|
1725
|
-
return /* @__PURE__ */
|
1726
|
-
/* @__PURE__ */
|
1849
|
+
return /* @__PURE__ */ jsxs13(DropdownMenu, { children: [
|
1850
|
+
/* @__PURE__ */ jsx37(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx37(
|
1727
1851
|
LanguageButton,
|
1728
1852
|
{
|
1729
1853
|
variant: "ghost",
|
1730
1854
|
size: "icon",
|
1731
1855
|
className: "bg-linear-to-r from-purple-400 to-pink-600 hover:from-purple-500 hover:to-pink-700 text-white transform hover:scale-110 transition-all duration-300",
|
1732
|
-
children: /* @__PURE__ */
|
1856
|
+
children: /* @__PURE__ */ jsx37(globalLucideIcons.Globe, { className: "h-5 w-5" })
|
1733
1857
|
}
|
1734
1858
|
) }),
|
1735
|
-
/* @__PURE__ */
|
1859
|
+
/* @__PURE__ */ jsx37(
|
1736
1860
|
DropdownMenuContent,
|
1737
1861
|
{
|
1738
1862
|
align: "end",
|
1739
1863
|
sideOffset: 5,
|
1740
1864
|
className: "bg-white/90 dark:bg-gray-800/90 border-purple-100 dark:border-purple-800 w-[200px] p-2 backdrop-blur-xs translate-x-[50px]",
|
1741
|
-
children: /* @__PURE__ */
|
1865
|
+
children: /* @__PURE__ */ jsx37("div", { className: "grid grid-cols-2 gap-1", children: locales.map((loc) => /* @__PURE__ */ jsx37(
|
1742
1866
|
DropdownMenuItem,
|
1743
1867
|
{
|
1744
1868
|
className: `
|
@@ -1760,21 +1884,21 @@ function LanguageSwitcher({ locales, localeLabels }) {
|
|
1760
1884
|
|
1761
1885
|
// src/components/script/google-analytics-script.tsx
|
1762
1886
|
import Script from "next/script";
|
1763
|
-
import { Fragment
|
1887
|
+
import { Fragment, jsx as jsx38, jsxs as jsxs14 } from "react/jsx-runtime";
|
1764
1888
|
var googleAnalyticsId = process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS_ID;
|
1765
1889
|
function GoogleAnalyticsScript() {
|
1766
1890
|
if (process.env.NODE_ENV !== "production") {
|
1767
1891
|
return null;
|
1768
1892
|
}
|
1769
|
-
return /* @__PURE__ */
|
1770
|
-
/* @__PURE__ */
|
1893
|
+
return /* @__PURE__ */ jsxs14(Fragment, { children: [
|
1894
|
+
/* @__PURE__ */ jsx38(
|
1771
1895
|
Script,
|
1772
1896
|
{
|
1773
1897
|
strategy: "afterInteractive",
|
1774
1898
|
src: `https://www.googletagmanager.com/gtag/js?id=${googleAnalyticsId}`
|
1775
1899
|
}
|
1776
1900
|
),
|
1777
|
-
/* @__PURE__ */
|
1901
|
+
/* @__PURE__ */ jsx38(
|
1778
1902
|
Script,
|
1779
1903
|
{
|
1780
1904
|
id: "google-analytics",
|
@@ -1805,13 +1929,13 @@ function useGoogleAnalytics() {
|
|
1805
1929
|
|
1806
1930
|
// src/components/script/microsoft-clarity-script.tsx
|
1807
1931
|
import Script2 from "next/script";
|
1808
|
-
import { jsx as
|
1932
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
1809
1933
|
var microsoftClarityId = process.env.NEXT_PUBLIC_MICROSOFT_CLARITY_ID;
|
1810
1934
|
function MicrosoftClarityScript() {
|
1811
1935
|
if (process.env.NODE_ENV !== "production") {
|
1812
1936
|
return null;
|
1813
1937
|
}
|
1814
|
-
return /* @__PURE__ */
|
1938
|
+
return /* @__PURE__ */ jsx39(Script2, { id: "microsoft-clarity", strategy: "afterInteractive", children: `
|
1815
1939
|
(function(c,l,a,r,i,t,y){
|
1816
1940
|
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
|
1817
1941
|
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
|