@windrun-huaiin/base-ui 5.1.2 → 5.3.0
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 +216 -89
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +235 -87
- package/dist/components/index.mjs.map +1 -1
- package/dist/components/server.d.cts +25 -1
- package/dist/components/server.d.ts +25 -1
- package/dist/components/server.js +144 -13
- package/dist/components/server.js.map +1 -1
- package/dist/components/server.mjs +166 -14
- package/dist/components/server.mjs.map +1 -1
- package/dist/ui/index.js +190 -59
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +212 -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
|
@@ -1099,6 +1209,7 @@ __export(limited_lucide_icons_exports, {
|
|
1099
1209
|
Building2: () => Building2,
|
1100
1210
|
Car: () => Car,
|
1101
1211
|
Check: () => Check,
|
1212
|
+
CheckCheck: () => CheckCheck,
|
1102
1213
|
ChevronDown: () => ChevronDown,
|
1103
1214
|
ChevronLeft: () => ChevronLeft,
|
1104
1215
|
ChevronRight: () => ChevronRight,
|
@@ -1107,6 +1218,7 @@ __export(limited_lucide_icons_exports, {
|
|
1107
1218
|
CircleAlert: () => CircleAlert,
|
1108
1219
|
CircleSmall: () => CircleSmall,
|
1109
1220
|
ComponentIcon: () => ComponentIcon,
|
1221
|
+
Copy: () => Copy,
|
1110
1222
|
Cpu: () => Cpu,
|
1111
1223
|
DatabaseZap: () => DatabaseZap,
|
1112
1224
|
Dot: () => Dot,
|
@@ -1114,12 +1226,19 @@ __export(limited_lucide_icons_exports, {
|
|
1114
1226
|
ExternalLink: () => ExternalLink,
|
1115
1227
|
Eye: () => Eye,
|
1116
1228
|
Facebook: () => Facebook,
|
1229
|
+
File: () => File,
|
1230
|
+
FileDown: () => FileDown,
|
1231
|
+
FileInput: () => FileInput,
|
1117
1232
|
FileLock2: () => FileLock2,
|
1233
|
+
FileUp: () => FileUp,
|
1118
1234
|
Fingerprint: () => Fingerprint,
|
1235
|
+
Folder: () => Folder,
|
1236
|
+
FolderOpen: () => FolderOpen,
|
1119
1237
|
Gift: () => Gift,
|
1120
1238
|
GitPullRequestArrow: () => GitPullRequestArrow,
|
1121
1239
|
Globe: () => Globe,
|
1122
1240
|
GlobeLock: () => GlobeLock,
|
1241
|
+
Grip: () => Grip,
|
1123
1242
|
GripVertical: () => GripVertical,
|
1124
1243
|
HandHeart: () => HandHeart,
|
1125
1244
|
Handshake: () => Handshake,
|
@@ -1128,6 +1247,7 @@ __export(limited_lucide_icons_exports, {
|
|
1128
1247
|
ImageDown: () => ImageDown,
|
1129
1248
|
ImageOff: () => ImageOff,
|
1130
1249
|
ImageUp: () => ImageUp,
|
1250
|
+
Infinity: () => Infinity,
|
1131
1251
|
Info: () => Info,
|
1132
1252
|
Keyboard: () => Keyboard,
|
1133
1253
|
LandPlot: () => LandPlot,
|
@@ -1135,33 +1255,44 @@ __export(limited_lucide_icons_exports, {
|
|
1135
1255
|
LayoutTemplate: () => LayoutTemplate,
|
1136
1256
|
LibraryIcon: () => LibraryIcon,
|
1137
1257
|
Link: () => Link,
|
1258
|
+
ListTodo: () => ListTodo,
|
1138
1259
|
Loader2: () => Loader2,
|
1139
1260
|
LogIn: () => LogIn,
|
1140
1261
|
LogOut: () => LogOut,
|
1262
|
+
Mail: () => Mail,
|
1141
1263
|
MoreHorizontal: () => MoreHorizontal,
|
1142
1264
|
MousePointerClick: () => MousePointerClick,
|
1143
1265
|
Palette: () => Palette,
|
1144
1266
|
PanelLeft: () => PanelLeft,
|
1145
1267
|
PanelsTopLeft: () => PanelsTopLeft,
|
1268
|
+
PawPrint: () => PawPrint,
|
1146
1269
|
Pencil: () => Pencil,
|
1147
1270
|
Pi: () => Pi,
|
1271
|
+
QrCode: () => QrCode,
|
1148
1272
|
ReceiptText: () => ReceiptText,
|
1273
|
+
RefreshCcw: () => RefreshCcw,
|
1149
1274
|
Regex: () => Regex,
|
1150
1275
|
Replace: () => Replace,
|
1276
|
+
Rocket: () => Rocket,
|
1151
1277
|
Rss: () => Rss,
|
1152
1278
|
Scale: () => Scale,
|
1153
1279
|
Search: () => Search,
|
1280
|
+
SendHorizontal: () => SendHorizontal,
|
1154
1281
|
Server: () => Server,
|
1155
1282
|
Share: () => Share,
|
1283
|
+
Shield: () => Shield,
|
1156
1284
|
ShieldUser: () => ShieldUser,
|
1285
|
+
Sigma: () => Sigma,
|
1157
1286
|
Sparkles: () => Sparkles,
|
1158
1287
|
SplinePointer: () => SplinePointer,
|
1288
|
+
Sprout: () => Sprout,
|
1159
1289
|
SquareDashedBottomCode: () => SquareDashedBottomCode,
|
1160
1290
|
SquareTerminal: () => SquareTerminal,
|
1161
1291
|
Star: () => Star,
|
1162
1292
|
Tablets: () => Tablets,
|
1163
1293
|
Terminal: () => Terminal,
|
1164
1294
|
Twitter: () => Twitter,
|
1295
|
+
Workflow: () => Workflow,
|
1165
1296
|
X: () => X,
|
1166
1297
|
Zap: () => Zap
|
1167
1298
|
});
|
@@ -1182,11 +1313,13 @@ import {
|
|
1182
1313
|
CircleAlert,
|
1183
1314
|
CircleSmall,
|
1184
1315
|
Check,
|
1316
|
+
CheckCheck,
|
1185
1317
|
ChevronDown,
|
1186
1318
|
ChevronLeft,
|
1187
1319
|
ChevronRight,
|
1188
1320
|
ChevronUp,
|
1189
1321
|
Cpu,
|
1322
|
+
Copy,
|
1190
1323
|
ComponentIcon,
|
1191
1324
|
DatabaseZap,
|
1192
1325
|
Dot,
|
@@ -1194,17 +1327,26 @@ import {
|
|
1194
1327
|
Eye,
|
1195
1328
|
ExternalLink,
|
1196
1329
|
Facebook,
|
1330
|
+
Shield,
|
1331
|
+
File,
|
1332
|
+
FileDown,
|
1333
|
+
FileInput,
|
1197
1334
|
FileLock2,
|
1335
|
+
FileUp,
|
1198
1336
|
Fingerprint,
|
1337
|
+
Folder,
|
1338
|
+
FolderOpen,
|
1199
1339
|
Gift,
|
1200
1340
|
GitPullRequestArrow,
|
1201
1341
|
Globe,
|
1202
1342
|
GlobeLock,
|
1343
|
+
Grip,
|
1203
1344
|
GripVertical,
|
1204
1345
|
HandHeart,
|
1205
1346
|
Handshake,
|
1206
1347
|
Highlighter,
|
1207
1348
|
HousePlus,
|
1349
|
+
Infinity,
|
1208
1350
|
Info,
|
1209
1351
|
ImageDown,
|
1210
1352
|
ImageOff,
|
@@ -1215,24 +1357,33 @@ import {
|
|
1215
1357
|
LayoutTemplate,
|
1216
1358
|
LibraryIcon,
|
1217
1359
|
Link,
|
1360
|
+
ListTodo,
|
1218
1361
|
Loader2,
|
1219
1362
|
LogIn,
|
1220
1363
|
LogOut,
|
1364
|
+
Mail,
|
1221
1365
|
MoreHorizontal,
|
1222
1366
|
MousePointerClick,
|
1367
|
+
Palette,
|
1223
1368
|
PanelLeft,
|
1224
1369
|
PanelsTopLeft,
|
1370
|
+
PawPrint,
|
1225
1371
|
Pencil,
|
1226
1372
|
Pi,
|
1227
|
-
|
1373
|
+
QrCode,
|
1228
1374
|
ReceiptText,
|
1375
|
+
RefreshCcw,
|
1229
1376
|
Regex,
|
1230
1377
|
Replace,
|
1378
|
+
Rocket,
|
1231
1379
|
Rss,
|
1232
1380
|
Scale,
|
1233
1381
|
Search,
|
1382
|
+
SendHorizontal,
|
1234
1383
|
Share,
|
1384
|
+
Sigma,
|
1235
1385
|
ShieldUser,
|
1386
|
+
Sprout,
|
1236
1387
|
SquareDashedBottomCode,
|
1237
1388
|
SquareTerminal,
|
1238
1389
|
Server,
|
@@ -1242,13 +1393,14 @@ import {
|
|
1242
1393
|
Tablets,
|
1243
1394
|
Terminal,
|
1244
1395
|
Twitter,
|
1396
|
+
Workflow,
|
1245
1397
|
X,
|
1246
1398
|
Zap
|
1247
1399
|
} from "lucide-react";
|
1248
1400
|
|
1249
1401
|
// src/components/global-icon.tsx
|
1250
|
-
import
|
1251
|
-
import { jsx as
|
1402
|
+
import React32 from "react";
|
1403
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
1252
1404
|
var tempStyledLimitedIcons = {};
|
1253
1405
|
for (const iconNameKey in limited_lucide_icons_exports) {
|
1254
1406
|
if (Object.prototype.hasOwnProperty.call(limited_lucide_icons_exports, iconNameKey)) {
|
@@ -1268,7 +1420,7 @@ for (const iconNameKey in limited_lucide_icons_exports) {
|
|
1268
1420
|
height: props.size || themeSvgIconSize
|
1269
1421
|
}, props.style)
|
1270
1422
|
});
|
1271
|
-
return /* @__PURE__ */
|
1423
|
+
return /* @__PURE__ */ jsx32(ComponentToRender, __spreadValues({}, finalProps));
|
1272
1424
|
};
|
1273
1425
|
StyledIcon.displayName = `Styled(${iconName})`;
|
1274
1426
|
tempStyledLimitedIcons[iconName] = StyledIcon;
|
@@ -1292,18 +1444,18 @@ for (const [iconName, IconComponent] of Object.entries(BUILTIN_ICON_COMPONENTS))
|
|
1292
1444
|
height: props.size || themeSvgIconSize
|
1293
1445
|
}, props.style)
|
1294
1446
|
});
|
1295
|
-
return /* @__PURE__ */
|
1447
|
+
return /* @__PURE__ */ jsx32(IconComponent, __spreadValues({}, finalProps));
|
1296
1448
|
};
|
1297
1449
|
WrappedIcon.displayName = `Wrapped(${iconName})`;
|
1298
1450
|
tempWrappedBuiltinIcons[iconName] = WrappedIcon;
|
1299
1451
|
}
|
1300
1452
|
var wrappedBuiltinIconsPart = tempWrappedBuiltinIcons;
|
1301
1453
|
var globalLucideIcons = __spreadValues(__spreadValues({}, styledLimitedIconsPart), wrappedBuiltinIconsPart);
|
1302
|
-
var NotFoundIcon = () => /* @__PURE__ */
|
1454
|
+
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}` });
|
1303
1455
|
|
1304
1456
|
// src/components/404-page.tsx
|
1305
1457
|
import { useEffect, useState } from "react";
|
1306
|
-
import { jsx as
|
1458
|
+
import { jsx as jsx33, jsxs as jsxs10 } from "react/jsx-runtime";
|
1307
1459
|
function NotFoundPage({ siteIcon }) {
|
1308
1460
|
const [glitchText, setGlitchText] = useState("404");
|
1309
1461
|
useEffect(() => {
|
@@ -1321,10 +1473,10 @@ function NotFoundPage({ siteIcon }) {
|
|
1321
1473
|
}, 600);
|
1322
1474
|
return () => clearInterval(interval);
|
1323
1475
|
}, []);
|
1324
|
-
return /* @__PURE__ */
|
1325
|
-
/* @__PURE__ */
|
1326
|
-
/* @__PURE__ */
|
1327
|
-
/* @__PURE__ */
|
1476
|
+
return /* @__PURE__ */ jsxs10("div", { className: "flex flex-col items-center justify-center min-h-[75vh] w-full px-4 py-8", children: [
|
1477
|
+
/* @__PURE__ */ jsxs10("div", { className: "text-center space-y-8 max-w-2xl", children: [
|
1478
|
+
/* @__PURE__ */ jsxs10("div", { className: "relative flex justify-center", children: [
|
1479
|
+
/* @__PURE__ */ jsx33(
|
1328
1480
|
"h1",
|
1329
1481
|
{
|
1330
1482
|
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",
|
@@ -1336,26 +1488,26 @@ function NotFoundPage({ siteIcon }) {
|
|
1336
1488
|
children: glitchText
|
1337
1489
|
}
|
1338
1490
|
),
|
1339
|
-
/* @__PURE__ */
|
1491
|
+
/* @__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" }) })
|
1340
1492
|
] }),
|
1341
|
-
/* @__PURE__ */
|
1342
|
-
/* @__PURE__ */
|
1343
|
-
/* @__PURE__ */
|
1493
|
+
/* @__PURE__ */ jsxs10("div", { className: "space-y-4", children: [
|
1494
|
+
/* @__PURE__ */ jsx33("h2", { className: "text-2xl md:text-3xl font-semibold text-foreground", children: "Page Not Found" }),
|
1495
|
+
/* @__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" })
|
1344
1496
|
] }),
|
1345
|
-
/* @__PURE__ */
|
1346
|
-
/* @__PURE__ */
|
1497
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex justify-center items-center gap-8 pt-8 opacity-60", children: [
|
1498
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
|
1347
1499
|
siteIcon,
|
1348
|
-
/* @__PURE__ */
|
1500
|
+
/* @__PURE__ */ jsx33("span", { children: "Woops!" })
|
1349
1501
|
] }),
|
1350
|
-
/* @__PURE__ */
|
1351
|
-
/* @__PURE__ */
|
1352
|
-
/* @__PURE__ */
|
1353
|
-
/* @__PURE__ */
|
1502
|
+
/* @__PURE__ */ jsx33("div", { className: "w-1 h-1 bg-purple-500 rounded-full animate-ping" }),
|
1503
|
+
/* @__PURE__ */ jsxs10("div", { className: "flex items-center gap-2 text-sm text-muted-foreground", children: [
|
1504
|
+
/* @__PURE__ */ jsx33(NotFoundIcon, {}),
|
1505
|
+
/* @__PURE__ */ jsx33("span", { children: "Error Code: 404" })
|
1354
1506
|
] })
|
1355
1507
|
] })
|
1356
1508
|
] }),
|
1357
|
-
/* @__PURE__ */
|
1358
|
-
/* @__PURE__ */
|
1509
|
+
/* @__PURE__ */ jsxs10("div", { className: "fixed inset-0 pointer-events-none overflow-hidden -z-10", children: [
|
1510
|
+
/* @__PURE__ */ jsx33(
|
1359
1511
|
"div",
|
1360
1512
|
{
|
1361
1513
|
className: "absolute inset-0 opacity-[0.02] dark:opacity-[0.05]",
|
@@ -1368,7 +1520,7 @@ function NotFoundPage({ siteIcon }) {
|
|
1368
1520
|
}
|
1369
1521
|
}
|
1370
1522
|
),
|
1371
|
-
Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */
|
1523
|
+
Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsx33(
|
1372
1524
|
"div",
|
1373
1525
|
{
|
1374
1526
|
className: "absolute w-2 h-2 bg-purple-500/20 rounded-full animate-bounce",
|
@@ -1385,23 +1537,19 @@ function NotFoundPage({ siteIcon }) {
|
|
1385
1537
|
] });
|
1386
1538
|
}
|
1387
1539
|
|
1388
|
-
// src/components/go-to-top.tsx
|
1389
|
-
import { useState as useState2, useEffect as useEffect2 } from "react";
|
1390
|
-
import { Fragment, jsx as jsx31 } from "react/jsx-runtime";
|
1391
|
-
|
1392
1540
|
// src/components/language-detector.tsx
|
1393
1541
|
import { useLocale, useTranslations } from "next-intl";
|
1394
1542
|
import { useRouter } from "next/navigation";
|
1395
|
-
import { useEffect as
|
1396
|
-
import { jsx as
|
1543
|
+
import { useEffect as useEffect2, useState as useState2 } from "react";
|
1544
|
+
import { jsx as jsx34, jsxs as jsxs11 } from "react/jsx-runtime";
|
1397
1545
|
function LanguageDetector({ i18nConfig }) {
|
1398
|
-
const [show, setShow] =
|
1399
|
-
const [detectedLocale, setDetectedLocale] =
|
1546
|
+
const [show, setShow] = useState2(false);
|
1547
|
+
const [detectedLocale, setDetectedLocale] = useState2(null);
|
1400
1548
|
const currentLocale = useLocale();
|
1401
1549
|
const router = useRouter();
|
1402
1550
|
const t = useTranslations("languageDetection");
|
1403
1551
|
const LANGUAGE_PREFERENCE_KEY = `${i18nConfig.detector.storagePrefix}-${i18nConfig.detector.storageKey}`;
|
1404
|
-
|
1552
|
+
useEffect2(() => {
|
1405
1553
|
const browserLang = navigator.language.split("-")[0];
|
1406
1554
|
const savedPreference = localStorage.getItem(LANGUAGE_PREFERENCE_KEY);
|
1407
1555
|
const preference = savedPreference ? JSON.parse(savedPreference) : null;
|
@@ -1449,31 +1597,31 @@ function LanguageDetector({ i18nConfig }) {
|
|
1449
1597
|
setShow(false);
|
1450
1598
|
};
|
1451
1599
|
if (!detectedLocale || !show) return null;
|
1452
|
-
return /* @__PURE__ */
|
1600
|
+
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"}
|
1453
1601
|
bg-linear-to-r from-purple-100/95 via-white/95 to-purple-100/95 backdrop-blur-xs
|
1454
|
-
animate-gradient-x`, children: /* @__PURE__ */
|
1455
|
-
/* @__PURE__ */
|
1456
|
-
/* @__PURE__ */
|
1457
|
-
/* @__PURE__ */
|
1458
|
-
/* @__PURE__ */
|
1459
|
-
/* @__PURE__ */
|
1602
|
+
animate-gradient-x`, children: /* @__PURE__ */ jsxs11("div", { className: "relative px-6 py-4 overflow-hidden", children: [
|
1603
|
+
/* @__PURE__ */ jsxs11("div", { className: "relative z-10 flex flex-col gap-3", children: [
|
1604
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex items-start justify-between gap-4", children: [
|
1605
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex flex-col gap-1.5", children: [
|
1606
|
+
/* @__PURE__ */ jsx34("h3", { className: "text-lg font-semibold text-gray-900", children: t("title") }),
|
1607
|
+
/* @__PURE__ */ jsxs11("p", { className: "text-base text-gray-600", children: [
|
1460
1608
|
t("description"),
|
1461
1609
|
" ",
|
1462
|
-
/* @__PURE__ */
|
1610
|
+
/* @__PURE__ */ jsx34("span", { className: "text-purple-500 font-semibold", children: detectedLocale === "zh" ? "\u4E2D\u6587" : "English" }),
|
1463
1611
|
"?"
|
1464
1612
|
] })
|
1465
1613
|
] }),
|
1466
|
-
/* @__PURE__ */
|
1614
|
+
/* @__PURE__ */ jsx34(
|
1467
1615
|
"button",
|
1468
1616
|
{
|
1469
1617
|
onClick: handleClose,
|
1470
1618
|
className: "text-gray-500 hover:text-gray-700",
|
1471
|
-
children: /* @__PURE__ */
|
1619
|
+
children: /* @__PURE__ */ jsx34(globalLucideIcons.X, { className: "h-5 w-5" })
|
1472
1620
|
}
|
1473
1621
|
)
|
1474
1622
|
] }),
|
1475
|
-
/* @__PURE__ */
|
1476
|
-
/* @__PURE__ */
|
1623
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-3", children: [
|
1624
|
+
/* @__PURE__ */ jsx34(
|
1477
1625
|
"button",
|
1478
1626
|
{
|
1479
1627
|
onClick: handleClose,
|
@@ -1481,7 +1629,7 @@ function LanguageDetector({ i18nConfig }) {
|
|
1481
1629
|
children: t("close")
|
1482
1630
|
}
|
1483
1631
|
),
|
1484
|
-
/* @__PURE__ */
|
1632
|
+
/* @__PURE__ */ jsx34(
|
1485
1633
|
"button",
|
1486
1634
|
{
|
1487
1635
|
onClick: handleLanguageChange,
|
@@ -1491,7 +1639,7 @@ function LanguageDetector({ i18nConfig }) {
|
|
1491
1639
|
)
|
1492
1640
|
] })
|
1493
1641
|
] }),
|
1494
|
-
/* @__PURE__ */
|
1642
|
+
/* @__PURE__ */ jsx34("div", { className: "absolute inset-0 bg-linear-to-r from-transparent via-purple-200/30 to-transparent animate-shimmer" })
|
1495
1643
|
] }) }) });
|
1496
1644
|
}
|
1497
1645
|
|
@@ -1500,7 +1648,7 @@ import { usePathname, useRouter as useRouter2 } from "next/navigation";
|
|
1500
1648
|
import { useLocale as useLocale2 } from "next-intl";
|
1501
1649
|
|
1502
1650
|
// src/ui/dropdown-menu.tsx
|
1503
|
-
import * as
|
1651
|
+
import * as React33 from "react";
|
1504
1652
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
1505
1653
|
|
1506
1654
|
// ../lib/src/utils.ts
|
@@ -1511,12 +1659,12 @@ function cn(...inputs) {
|
|
1511
1659
|
}
|
1512
1660
|
|
1513
1661
|
// src/ui/dropdown-menu.tsx
|
1514
|
-
import { jsx as
|
1662
|
+
import { jsx as jsx35, jsxs as jsxs12 } from "react/jsx-runtime";
|
1515
1663
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
1516
1664
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
1517
|
-
var DropdownMenuSubTrigger =
|
1665
|
+
var DropdownMenuSubTrigger = React33.forwardRef((_a, ref) => {
|
1518
1666
|
var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
|
1519
|
-
return /* @__PURE__ */
|
1667
|
+
return /* @__PURE__ */ jsxs12(
|
1520
1668
|
DropdownMenuPrimitive.SubTrigger,
|
1521
1669
|
__spreadProps(__spreadValues({
|
1522
1670
|
ref,
|
@@ -1528,15 +1676,15 @@ var DropdownMenuSubTrigger = React30.forwardRef((_a, ref) => {
|
|
1528
1676
|
}, props), {
|
1529
1677
|
children: [
|
1530
1678
|
children,
|
1531
|
-
/* @__PURE__ */
|
1679
|
+
/* @__PURE__ */ jsx35(globalLucideIcons.ChevronRight, { className: "ml-auto" })
|
1532
1680
|
]
|
1533
1681
|
})
|
1534
1682
|
);
|
1535
1683
|
});
|
1536
1684
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
1537
|
-
var DropdownMenuSubContent =
|
1685
|
+
var DropdownMenuSubContent = React33.forwardRef((_a, ref) => {
|
1538
1686
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
1539
|
-
return /* @__PURE__ */
|
1687
|
+
return /* @__PURE__ */ jsx35(
|
1540
1688
|
DropdownMenuPrimitive.SubContent,
|
1541
1689
|
__spreadValues({
|
1542
1690
|
ref,
|
@@ -1548,9 +1696,9 @@ var DropdownMenuSubContent = React30.forwardRef((_a, ref) => {
|
|
1548
1696
|
);
|
1549
1697
|
});
|
1550
1698
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
1551
|
-
var DropdownMenuContent =
|
1699
|
+
var DropdownMenuContent = React33.forwardRef((_a, ref) => {
|
1552
1700
|
var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
|
1553
|
-
return /* @__PURE__ */
|
1701
|
+
return /* @__PURE__ */ jsx35(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx35(
|
1554
1702
|
DropdownMenuPrimitive.Content,
|
1555
1703
|
__spreadValues({
|
1556
1704
|
ref,
|
@@ -1563,9 +1711,9 @@ var DropdownMenuContent = React30.forwardRef((_a, ref) => {
|
|
1563
1711
|
) });
|
1564
1712
|
});
|
1565
1713
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
1566
|
-
var DropdownMenuItem =
|
1714
|
+
var DropdownMenuItem = React33.forwardRef((_a, ref) => {
|
1567
1715
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
1568
|
-
return /* @__PURE__ */
|
1716
|
+
return /* @__PURE__ */ jsx35(
|
1569
1717
|
DropdownMenuPrimitive.Item,
|
1570
1718
|
__spreadValues({
|
1571
1719
|
ref,
|
@@ -1578,9 +1726,9 @@ var DropdownMenuItem = React30.forwardRef((_a, ref) => {
|
|
1578
1726
|
);
|
1579
1727
|
});
|
1580
1728
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
1581
|
-
var DropdownMenuCheckboxItem =
|
1729
|
+
var DropdownMenuCheckboxItem = React33.forwardRef((_a, ref) => {
|
1582
1730
|
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
|
1583
|
-
return /* @__PURE__ */
|
1731
|
+
return /* @__PURE__ */ jsxs12(
|
1584
1732
|
DropdownMenuPrimitive.CheckboxItem,
|
1585
1733
|
__spreadProps(__spreadValues({
|
1586
1734
|
ref,
|
@@ -1591,16 +1739,16 @@ var DropdownMenuCheckboxItem = React30.forwardRef((_a, ref) => {
|
|
1591
1739
|
checked
|
1592
1740
|
}, props), {
|
1593
1741
|
children: [
|
1594
|
-
/* @__PURE__ */
|
1742
|
+
/* @__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" }) }) }),
|
1595
1743
|
children
|
1596
1744
|
]
|
1597
1745
|
})
|
1598
1746
|
);
|
1599
1747
|
});
|
1600
1748
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
1601
|
-
var DropdownMenuRadioItem =
|
1749
|
+
var DropdownMenuRadioItem = React33.forwardRef((_a, ref) => {
|
1602
1750
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
1603
|
-
return /* @__PURE__ */
|
1751
|
+
return /* @__PURE__ */ jsxs12(
|
1604
1752
|
DropdownMenuPrimitive.RadioItem,
|
1605
1753
|
__spreadProps(__spreadValues({
|
1606
1754
|
ref,
|
@@ -1610,16 +1758,16 @@ var DropdownMenuRadioItem = React30.forwardRef((_a, ref) => {
|
|
1610
1758
|
)
|
1611
1759
|
}, props), {
|
1612
1760
|
children: [
|
1613
|
-
/* @__PURE__ */
|
1761
|
+
/* @__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" }) }) }),
|
1614
1762
|
children
|
1615
1763
|
]
|
1616
1764
|
})
|
1617
1765
|
);
|
1618
1766
|
});
|
1619
1767
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
1620
|
-
var DropdownMenuLabel =
|
1768
|
+
var DropdownMenuLabel = React33.forwardRef((_a, ref) => {
|
1621
1769
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
1622
|
-
return /* @__PURE__ */
|
1770
|
+
return /* @__PURE__ */ jsx35(
|
1623
1771
|
DropdownMenuPrimitive.Label,
|
1624
1772
|
__spreadValues({
|
1625
1773
|
ref,
|
@@ -1632,9 +1780,9 @@ var DropdownMenuLabel = React30.forwardRef((_a, ref) => {
|
|
1632
1780
|
);
|
1633
1781
|
});
|
1634
1782
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
1635
|
-
var DropdownMenuSeparator =
|
1783
|
+
var DropdownMenuSeparator = React33.forwardRef((_a, ref) => {
|
1636
1784
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
1637
|
-
return /* @__PURE__ */
|
1785
|
+
return /* @__PURE__ */ jsx35(
|
1638
1786
|
DropdownMenuPrimitive.Separator,
|
1639
1787
|
__spreadValues({
|
1640
1788
|
ref,
|
@@ -1649,7 +1797,7 @@ var DropdownMenuShortcut = (_a) => {
|
|
1649
1797
|
} = _b, props = __objRest(_b, [
|
1650
1798
|
"className"
|
1651
1799
|
]);
|
1652
|
-
return /* @__PURE__ */
|
1800
|
+
return /* @__PURE__ */ jsx35(
|
1653
1801
|
"span",
|
1654
1802
|
__spreadValues({
|
1655
1803
|
className: cn("ml-auto text-xs tracking-widest opacity-60", className)
|
@@ -1659,12 +1807,12 @@ var DropdownMenuShortcut = (_a) => {
|
|
1659
1807
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
1660
1808
|
|
1661
1809
|
// src/ui/language-button.tsx
|
1662
|
-
import * as
|
1663
|
-
import { jsx as
|
1664
|
-
var LanguageButton =
|
1810
|
+
import * as React34 from "react";
|
1811
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
1812
|
+
var LanguageButton = React34.forwardRef(
|
1665
1813
|
(_a, ref) => {
|
1666
1814
|
var _b = _a, { className, variant = "default", size = "default" } = _b, props = __objRest(_b, ["className", "variant", "size"]);
|
1667
|
-
return /* @__PURE__ */
|
1815
|
+
return /* @__PURE__ */ jsx36(
|
1668
1816
|
"button",
|
1669
1817
|
__spreadValues({
|
1670
1818
|
className: cn(
|
@@ -1687,7 +1835,7 @@ var LanguageButton = React31.forwardRef(
|
|
1687
1835
|
LanguageButton.displayName = "Button";
|
1688
1836
|
|
1689
1837
|
// src/components/language-switcher.tsx
|
1690
|
-
import { jsx as
|
1838
|
+
import { jsx as jsx37, jsxs as jsxs13 } from "react/jsx-runtime";
|
1691
1839
|
function LanguageSwitcher({ locales, localeLabels }) {
|
1692
1840
|
const locale = useLocale2();
|
1693
1841
|
const router = useRouter2();
|
@@ -1696,23 +1844,23 @@ function LanguageSwitcher({ locales, localeLabels }) {
|
|
1696
1844
|
const newPathname = pathname.replace(`/${locale}`, `/${newLocale}`);
|
1697
1845
|
router.push(newPathname);
|
1698
1846
|
};
|
1699
|
-
return /* @__PURE__ */
|
1700
|
-
/* @__PURE__ */
|
1847
|
+
return /* @__PURE__ */ jsxs13(DropdownMenu, { children: [
|
1848
|
+
/* @__PURE__ */ jsx37(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx37(
|
1701
1849
|
LanguageButton,
|
1702
1850
|
{
|
1703
1851
|
variant: "ghost",
|
1704
1852
|
size: "icon",
|
1705
1853
|
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",
|
1706
|
-
children: /* @__PURE__ */
|
1854
|
+
children: /* @__PURE__ */ jsx37(globalLucideIcons.Globe, { className: "h-5 w-5" })
|
1707
1855
|
}
|
1708
1856
|
) }),
|
1709
|
-
/* @__PURE__ */
|
1857
|
+
/* @__PURE__ */ jsx37(
|
1710
1858
|
DropdownMenuContent,
|
1711
1859
|
{
|
1712
1860
|
align: "end",
|
1713
1861
|
sideOffset: 5,
|
1714
1862
|
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]",
|
1715
|
-
children: /* @__PURE__ */
|
1863
|
+
children: /* @__PURE__ */ jsx37("div", { className: "grid grid-cols-2 gap-1", children: locales.map((loc) => /* @__PURE__ */ jsx37(
|
1716
1864
|
DropdownMenuItem,
|
1717
1865
|
{
|
1718
1866
|
className: `
|
@@ -1734,21 +1882,21 @@ function LanguageSwitcher({ locales, localeLabels }) {
|
|
1734
1882
|
|
1735
1883
|
// src/components/script/google-analytics-script.tsx
|
1736
1884
|
import Script from "next/script";
|
1737
|
-
import { Fragment
|
1885
|
+
import { Fragment, jsx as jsx38, jsxs as jsxs14 } from "react/jsx-runtime";
|
1738
1886
|
var googleAnalyticsId = process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS_ID;
|
1739
1887
|
function GoogleAnalyticsScript() {
|
1740
1888
|
if (process.env.NODE_ENV !== "production") {
|
1741
1889
|
return null;
|
1742
1890
|
}
|
1743
|
-
return /* @__PURE__ */
|
1744
|
-
/* @__PURE__ */
|
1891
|
+
return /* @__PURE__ */ jsxs14(Fragment, { children: [
|
1892
|
+
/* @__PURE__ */ jsx38(
|
1745
1893
|
Script,
|
1746
1894
|
{
|
1747
1895
|
strategy: "afterInteractive",
|
1748
1896
|
src: `https://www.googletagmanager.com/gtag/js?id=${googleAnalyticsId}`
|
1749
1897
|
}
|
1750
1898
|
),
|
1751
|
-
/* @__PURE__ */
|
1899
|
+
/* @__PURE__ */ jsx38(
|
1752
1900
|
Script,
|
1753
1901
|
{
|
1754
1902
|
id: "google-analytics",
|
@@ -1779,13 +1927,13 @@ function useGoogleAnalytics() {
|
|
1779
1927
|
|
1780
1928
|
// src/components/script/microsoft-clarity-script.tsx
|
1781
1929
|
import Script2 from "next/script";
|
1782
|
-
import { jsx as
|
1930
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
1783
1931
|
var microsoftClarityId = process.env.NEXT_PUBLIC_MICROSOFT_CLARITY_ID;
|
1784
1932
|
function MicrosoftClarityScript() {
|
1785
1933
|
if (process.env.NODE_ENV !== "production") {
|
1786
1934
|
return null;
|
1787
1935
|
}
|
1788
|
-
return /* @__PURE__ */
|
1936
|
+
return /* @__PURE__ */ jsx39(Script2, { id: "microsoft-clarity", strategy: "afterInteractive", children: `
|
1789
1937
|
(function(c,l,a,r,i,t,y){
|
1790
1938
|
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
|
1791
1939
|
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
|