@windrun-huaiin/base-ui 5.2.0 → 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 +203 -89
- package/dist/components/index.js.map +1 -1
- package/dist/components/index.mjs +209 -87
- package/dist/components/index.mjs.map +1 -1
- package/dist/components/server.d.cts +12 -1
- package/dist/components/server.d.ts +12 -1
- package/dist/components/server.js +131 -13
- package/dist/components/server.js.map +1 -1
- package/dist/components/server.mjs +140 -14
- package/dist/components/server.mjs.map +1 -1
- package/dist/ui/index.js +177 -59
- package/dist/ui/index.js.map +1 -1
- package/dist/ui/index.mjs +186 -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
|
@@ -1128,6 +1238,7 @@ __export(limited_lucide_icons_exports, {
|
|
1128
1238
|
GitPullRequestArrow: () => GitPullRequestArrow,
|
1129
1239
|
Globe: () => Globe,
|
1130
1240
|
GlobeLock: () => GlobeLock,
|
1241
|
+
Grip: () => Grip,
|
1131
1242
|
GripVertical: () => GripVertical,
|
1132
1243
|
HandHeart: () => HandHeart,
|
1133
1244
|
Handshake: () => Handshake,
|
@@ -1136,6 +1247,7 @@ __export(limited_lucide_icons_exports, {
|
|
1136
1247
|
ImageDown: () => ImageDown,
|
1137
1248
|
ImageOff: () => ImageOff,
|
1138
1249
|
ImageUp: () => ImageUp,
|
1250
|
+
Infinity: () => Infinity,
|
1139
1251
|
Info: () => Info,
|
1140
1252
|
Keyboard: () => Keyboard,
|
1141
1253
|
LandPlot: () => LandPlot,
|
@@ -1153,28 +1265,34 @@ __export(limited_lucide_icons_exports, {
|
|
1153
1265
|
Palette: () => Palette,
|
1154
1266
|
PanelLeft: () => PanelLeft,
|
1155
1267
|
PanelsTopLeft: () => PanelsTopLeft,
|
1268
|
+
PawPrint: () => PawPrint,
|
1156
1269
|
Pencil: () => Pencil,
|
1157
1270
|
Pi: () => Pi,
|
1271
|
+
QrCode: () => QrCode,
|
1158
1272
|
ReceiptText: () => ReceiptText,
|
1159
1273
|
RefreshCcw: () => RefreshCcw,
|
1160
1274
|
Regex: () => Regex,
|
1161
1275
|
Replace: () => Replace,
|
1276
|
+
Rocket: () => Rocket,
|
1162
1277
|
Rss: () => Rss,
|
1163
1278
|
Scale: () => Scale,
|
1164
1279
|
Search: () => Search,
|
1165
1280
|
SendHorizontal: () => SendHorizontal,
|
1166
1281
|
Server: () => Server,
|
1167
1282
|
Share: () => Share,
|
1283
|
+
Shield: () => Shield,
|
1168
1284
|
ShieldUser: () => ShieldUser,
|
1169
1285
|
Sigma: () => Sigma,
|
1170
1286
|
Sparkles: () => Sparkles,
|
1171
1287
|
SplinePointer: () => SplinePointer,
|
1288
|
+
Sprout: () => Sprout,
|
1172
1289
|
SquareDashedBottomCode: () => SquareDashedBottomCode,
|
1173
1290
|
SquareTerminal: () => SquareTerminal,
|
1174
1291
|
Star: () => Star,
|
1175
1292
|
Tablets: () => Tablets,
|
1176
1293
|
Terminal: () => Terminal,
|
1177
1294
|
Twitter: () => Twitter,
|
1295
|
+
Workflow: () => Workflow,
|
1178
1296
|
X: () => X,
|
1179
1297
|
Zap: () => Zap
|
1180
1298
|
});
|
@@ -1209,6 +1327,7 @@ import {
|
|
1209
1327
|
Eye,
|
1210
1328
|
ExternalLink,
|
1211
1329
|
Facebook,
|
1330
|
+
Shield,
|
1212
1331
|
File,
|
1213
1332
|
FileDown,
|
1214
1333
|
FileInput,
|
@@ -1221,11 +1340,13 @@ import {
|
|
1221
1340
|
GitPullRequestArrow,
|
1222
1341
|
Globe,
|
1223
1342
|
GlobeLock,
|
1343
|
+
Grip,
|
1224
1344
|
GripVertical,
|
1225
1345
|
HandHeart,
|
1226
1346
|
Handshake,
|
1227
1347
|
Highlighter,
|
1228
1348
|
HousePlus,
|
1349
|
+
Infinity,
|
1229
1350
|
Info,
|
1230
1351
|
ImageDown,
|
1231
1352
|
ImageOff,
|
@@ -1243,15 +1364,18 @@ import {
|
|
1243
1364
|
Mail,
|
1244
1365
|
MoreHorizontal,
|
1245
1366
|
MousePointerClick,
|
1367
|
+
Palette,
|
1246
1368
|
PanelLeft,
|
1247
1369
|
PanelsTopLeft,
|
1370
|
+
PawPrint,
|
1248
1371
|
Pencil,
|
1249
1372
|
Pi,
|
1250
|
-
|
1373
|
+
QrCode,
|
1251
1374
|
ReceiptText,
|
1252
1375
|
RefreshCcw,
|
1253
1376
|
Regex,
|
1254
1377
|
Replace,
|
1378
|
+
Rocket,
|
1255
1379
|
Rss,
|
1256
1380
|
Scale,
|
1257
1381
|
Search,
|
@@ -1259,6 +1383,7 @@ import {
|
|
1259
1383
|
Share,
|
1260
1384
|
Sigma,
|
1261
1385
|
ShieldUser,
|
1386
|
+
Sprout,
|
1262
1387
|
SquareDashedBottomCode,
|
1263
1388
|
SquareTerminal,
|
1264
1389
|
Server,
|
@@ -1268,13 +1393,14 @@ import {
|
|
1268
1393
|
Tablets,
|
1269
1394
|
Terminal,
|
1270
1395
|
Twitter,
|
1396
|
+
Workflow,
|
1271
1397
|
X,
|
1272
1398
|
Zap
|
1273
1399
|
} from "lucide-react";
|
1274
1400
|
|
1275
1401
|
// src/components/global-icon.tsx
|
1276
|
-
import
|
1277
|
-
import { jsx as
|
1402
|
+
import React32 from "react";
|
1403
|
+
import { jsx as jsx32 } from "react/jsx-runtime";
|
1278
1404
|
var tempStyledLimitedIcons = {};
|
1279
1405
|
for (const iconNameKey in limited_lucide_icons_exports) {
|
1280
1406
|
if (Object.prototype.hasOwnProperty.call(limited_lucide_icons_exports, iconNameKey)) {
|
@@ -1294,7 +1420,7 @@ for (const iconNameKey in limited_lucide_icons_exports) {
|
|
1294
1420
|
height: props.size || themeSvgIconSize
|
1295
1421
|
}, props.style)
|
1296
1422
|
});
|
1297
|
-
return /* @__PURE__ */
|
1423
|
+
return /* @__PURE__ */ jsx32(ComponentToRender, __spreadValues({}, finalProps));
|
1298
1424
|
};
|
1299
1425
|
StyledIcon.displayName = `Styled(${iconName})`;
|
1300
1426
|
tempStyledLimitedIcons[iconName] = StyledIcon;
|
@@ -1318,18 +1444,18 @@ for (const [iconName, IconComponent] of Object.entries(BUILTIN_ICON_COMPONENTS))
|
|
1318
1444
|
height: props.size || themeSvgIconSize
|
1319
1445
|
}, props.style)
|
1320
1446
|
});
|
1321
|
-
return /* @__PURE__ */
|
1447
|
+
return /* @__PURE__ */ jsx32(IconComponent, __spreadValues({}, finalProps));
|
1322
1448
|
};
|
1323
1449
|
WrappedIcon.displayName = `Wrapped(${iconName})`;
|
1324
1450
|
tempWrappedBuiltinIcons[iconName] = WrappedIcon;
|
1325
1451
|
}
|
1326
1452
|
var wrappedBuiltinIconsPart = tempWrappedBuiltinIcons;
|
1327
1453
|
var globalLucideIcons = __spreadValues(__spreadValues({}, styledLimitedIconsPart), wrappedBuiltinIconsPart);
|
1328
|
-
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}` });
|
1329
1455
|
|
1330
1456
|
// src/components/404-page.tsx
|
1331
1457
|
import { useEffect, useState } from "react";
|
1332
|
-
import { jsx as
|
1458
|
+
import { jsx as jsx33, jsxs as jsxs10 } from "react/jsx-runtime";
|
1333
1459
|
function NotFoundPage({ siteIcon }) {
|
1334
1460
|
const [glitchText, setGlitchText] = useState("404");
|
1335
1461
|
useEffect(() => {
|
@@ -1347,10 +1473,10 @@ function NotFoundPage({ siteIcon }) {
|
|
1347
1473
|
}, 600);
|
1348
1474
|
return () => clearInterval(interval);
|
1349
1475
|
}, []);
|
1350
|
-
return /* @__PURE__ */
|
1351
|
-
/* @__PURE__ */
|
1352
|
-
/* @__PURE__ */
|
1353
|
-
/* @__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(
|
1354
1480
|
"h1",
|
1355
1481
|
{
|
1356
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",
|
@@ -1362,26 +1488,26 @@ function NotFoundPage({ siteIcon }) {
|
|
1362
1488
|
children: glitchText
|
1363
1489
|
}
|
1364
1490
|
),
|
1365
|
-
/* @__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" }) })
|
1366
1492
|
] }),
|
1367
|
-
/* @__PURE__ */
|
1368
|
-
/* @__PURE__ */
|
1369
|
-
/* @__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" })
|
1370
1496
|
] }),
|
1371
|
-
/* @__PURE__ */
|
1372
|
-
/* @__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: [
|
1373
1499
|
siteIcon,
|
1374
|
-
/* @__PURE__ */
|
1500
|
+
/* @__PURE__ */ jsx33("span", { children: "Woops!" })
|
1375
1501
|
] }),
|
1376
|
-
/* @__PURE__ */
|
1377
|
-
/* @__PURE__ */
|
1378
|
-
/* @__PURE__ */
|
1379
|
-
/* @__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" })
|
1380
1506
|
] })
|
1381
1507
|
] })
|
1382
1508
|
] }),
|
1383
|
-
/* @__PURE__ */
|
1384
|
-
/* @__PURE__ */
|
1509
|
+
/* @__PURE__ */ jsxs10("div", { className: "fixed inset-0 pointer-events-none overflow-hidden -z-10", children: [
|
1510
|
+
/* @__PURE__ */ jsx33(
|
1385
1511
|
"div",
|
1386
1512
|
{
|
1387
1513
|
className: "absolute inset-0 opacity-[0.02] dark:opacity-[0.05]",
|
@@ -1394,7 +1520,7 @@ function NotFoundPage({ siteIcon }) {
|
|
1394
1520
|
}
|
1395
1521
|
}
|
1396
1522
|
),
|
1397
|
-
Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */
|
1523
|
+
Array.from({ length: 6 }).map((_, i) => /* @__PURE__ */ jsx33(
|
1398
1524
|
"div",
|
1399
1525
|
{
|
1400
1526
|
className: "absolute w-2 h-2 bg-purple-500/20 rounded-full animate-bounce",
|
@@ -1411,23 +1537,19 @@ function NotFoundPage({ siteIcon }) {
|
|
1411
1537
|
] });
|
1412
1538
|
}
|
1413
1539
|
|
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
1540
|
// src/components/language-detector.tsx
|
1419
1541
|
import { useLocale, useTranslations } from "next-intl";
|
1420
1542
|
import { useRouter } from "next/navigation";
|
1421
|
-
import { useEffect as
|
1422
|
-
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";
|
1423
1545
|
function LanguageDetector({ i18nConfig }) {
|
1424
|
-
const [show, setShow] =
|
1425
|
-
const [detectedLocale, setDetectedLocale] =
|
1546
|
+
const [show, setShow] = useState2(false);
|
1547
|
+
const [detectedLocale, setDetectedLocale] = useState2(null);
|
1426
1548
|
const currentLocale = useLocale();
|
1427
1549
|
const router = useRouter();
|
1428
1550
|
const t = useTranslations("languageDetection");
|
1429
1551
|
const LANGUAGE_PREFERENCE_KEY = `${i18nConfig.detector.storagePrefix}-${i18nConfig.detector.storageKey}`;
|
1430
|
-
|
1552
|
+
useEffect2(() => {
|
1431
1553
|
const browserLang = navigator.language.split("-")[0];
|
1432
1554
|
const savedPreference = localStorage.getItem(LANGUAGE_PREFERENCE_KEY);
|
1433
1555
|
const preference = savedPreference ? JSON.parse(savedPreference) : null;
|
@@ -1475,31 +1597,31 @@ function LanguageDetector({ i18nConfig }) {
|
|
1475
1597
|
setShow(false);
|
1476
1598
|
};
|
1477
1599
|
if (!detectedLocale || !show) return null;
|
1478
|
-
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"}
|
1479
1601
|
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__ */
|
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: [
|
1486
1608
|
t("description"),
|
1487
1609
|
" ",
|
1488
|
-
/* @__PURE__ */
|
1610
|
+
/* @__PURE__ */ jsx34("span", { className: "text-purple-500 font-semibold", children: detectedLocale === "zh" ? "\u4E2D\u6587" : "English" }),
|
1489
1611
|
"?"
|
1490
1612
|
] })
|
1491
1613
|
] }),
|
1492
|
-
/* @__PURE__ */
|
1614
|
+
/* @__PURE__ */ jsx34(
|
1493
1615
|
"button",
|
1494
1616
|
{
|
1495
1617
|
onClick: handleClose,
|
1496
1618
|
className: "text-gray-500 hover:text-gray-700",
|
1497
|
-
children: /* @__PURE__ */
|
1619
|
+
children: /* @__PURE__ */ jsx34(globalLucideIcons.X, { className: "h-5 w-5" })
|
1498
1620
|
}
|
1499
1621
|
)
|
1500
1622
|
] }),
|
1501
|
-
/* @__PURE__ */
|
1502
|
-
/* @__PURE__ */
|
1623
|
+
/* @__PURE__ */ jsxs11("div", { className: "flex items-center gap-3", children: [
|
1624
|
+
/* @__PURE__ */ jsx34(
|
1503
1625
|
"button",
|
1504
1626
|
{
|
1505
1627
|
onClick: handleClose,
|
@@ -1507,7 +1629,7 @@ function LanguageDetector({ i18nConfig }) {
|
|
1507
1629
|
children: t("close")
|
1508
1630
|
}
|
1509
1631
|
),
|
1510
|
-
/* @__PURE__ */
|
1632
|
+
/* @__PURE__ */ jsx34(
|
1511
1633
|
"button",
|
1512
1634
|
{
|
1513
1635
|
onClick: handleLanguageChange,
|
@@ -1517,7 +1639,7 @@ function LanguageDetector({ i18nConfig }) {
|
|
1517
1639
|
)
|
1518
1640
|
] })
|
1519
1641
|
] }),
|
1520
|
-
/* @__PURE__ */
|
1642
|
+
/* @__PURE__ */ jsx34("div", { className: "absolute inset-0 bg-linear-to-r from-transparent via-purple-200/30 to-transparent animate-shimmer" })
|
1521
1643
|
] }) }) });
|
1522
1644
|
}
|
1523
1645
|
|
@@ -1526,7 +1648,7 @@ import { usePathname, useRouter as useRouter2 } from "next/navigation";
|
|
1526
1648
|
import { useLocale as useLocale2 } from "next-intl";
|
1527
1649
|
|
1528
1650
|
// src/ui/dropdown-menu.tsx
|
1529
|
-
import * as
|
1651
|
+
import * as React33 from "react";
|
1530
1652
|
import * as DropdownMenuPrimitive from "@radix-ui/react-dropdown-menu";
|
1531
1653
|
|
1532
1654
|
// ../lib/src/utils.ts
|
@@ -1537,12 +1659,12 @@ function cn(...inputs) {
|
|
1537
1659
|
}
|
1538
1660
|
|
1539
1661
|
// src/ui/dropdown-menu.tsx
|
1540
|
-
import { jsx as
|
1662
|
+
import { jsx as jsx35, jsxs as jsxs12 } from "react/jsx-runtime";
|
1541
1663
|
var DropdownMenu = DropdownMenuPrimitive.Root;
|
1542
1664
|
var DropdownMenuTrigger = DropdownMenuPrimitive.Trigger;
|
1543
|
-
var DropdownMenuSubTrigger =
|
1665
|
+
var DropdownMenuSubTrigger = React33.forwardRef((_a, ref) => {
|
1544
1666
|
var _b = _a, { className, inset, children } = _b, props = __objRest(_b, ["className", "inset", "children"]);
|
1545
|
-
return /* @__PURE__ */
|
1667
|
+
return /* @__PURE__ */ jsxs12(
|
1546
1668
|
DropdownMenuPrimitive.SubTrigger,
|
1547
1669
|
__spreadProps(__spreadValues({
|
1548
1670
|
ref,
|
@@ -1554,15 +1676,15 @@ var DropdownMenuSubTrigger = React30.forwardRef((_a, ref) => {
|
|
1554
1676
|
}, props), {
|
1555
1677
|
children: [
|
1556
1678
|
children,
|
1557
|
-
/* @__PURE__ */
|
1679
|
+
/* @__PURE__ */ jsx35(globalLucideIcons.ChevronRight, { className: "ml-auto" })
|
1558
1680
|
]
|
1559
1681
|
})
|
1560
1682
|
);
|
1561
1683
|
});
|
1562
1684
|
DropdownMenuSubTrigger.displayName = DropdownMenuPrimitive.SubTrigger.displayName;
|
1563
|
-
var DropdownMenuSubContent =
|
1685
|
+
var DropdownMenuSubContent = React33.forwardRef((_a, ref) => {
|
1564
1686
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
1565
|
-
return /* @__PURE__ */
|
1687
|
+
return /* @__PURE__ */ jsx35(
|
1566
1688
|
DropdownMenuPrimitive.SubContent,
|
1567
1689
|
__spreadValues({
|
1568
1690
|
ref,
|
@@ -1574,9 +1696,9 @@ var DropdownMenuSubContent = React30.forwardRef((_a, ref) => {
|
|
1574
1696
|
);
|
1575
1697
|
});
|
1576
1698
|
DropdownMenuSubContent.displayName = DropdownMenuPrimitive.SubContent.displayName;
|
1577
|
-
var DropdownMenuContent =
|
1699
|
+
var DropdownMenuContent = React33.forwardRef((_a, ref) => {
|
1578
1700
|
var _b = _a, { className, sideOffset = 4 } = _b, props = __objRest(_b, ["className", "sideOffset"]);
|
1579
|
-
return /* @__PURE__ */
|
1701
|
+
return /* @__PURE__ */ jsx35(DropdownMenuPrimitive.Portal, { children: /* @__PURE__ */ jsx35(
|
1580
1702
|
DropdownMenuPrimitive.Content,
|
1581
1703
|
__spreadValues({
|
1582
1704
|
ref,
|
@@ -1589,9 +1711,9 @@ var DropdownMenuContent = React30.forwardRef((_a, ref) => {
|
|
1589
1711
|
) });
|
1590
1712
|
});
|
1591
1713
|
DropdownMenuContent.displayName = DropdownMenuPrimitive.Content.displayName;
|
1592
|
-
var DropdownMenuItem =
|
1714
|
+
var DropdownMenuItem = React33.forwardRef((_a, ref) => {
|
1593
1715
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
1594
|
-
return /* @__PURE__ */
|
1716
|
+
return /* @__PURE__ */ jsx35(
|
1595
1717
|
DropdownMenuPrimitive.Item,
|
1596
1718
|
__spreadValues({
|
1597
1719
|
ref,
|
@@ -1604,9 +1726,9 @@ var DropdownMenuItem = React30.forwardRef((_a, ref) => {
|
|
1604
1726
|
);
|
1605
1727
|
});
|
1606
1728
|
DropdownMenuItem.displayName = DropdownMenuPrimitive.Item.displayName;
|
1607
|
-
var DropdownMenuCheckboxItem =
|
1729
|
+
var DropdownMenuCheckboxItem = React33.forwardRef((_a, ref) => {
|
1608
1730
|
var _b = _a, { className, children, checked } = _b, props = __objRest(_b, ["className", "children", "checked"]);
|
1609
|
-
return /* @__PURE__ */
|
1731
|
+
return /* @__PURE__ */ jsxs12(
|
1610
1732
|
DropdownMenuPrimitive.CheckboxItem,
|
1611
1733
|
__spreadProps(__spreadValues({
|
1612
1734
|
ref,
|
@@ -1617,16 +1739,16 @@ var DropdownMenuCheckboxItem = React30.forwardRef((_a, ref) => {
|
|
1617
1739
|
checked
|
1618
1740
|
}, props), {
|
1619
1741
|
children: [
|
1620
|
-
/* @__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" }) }) }),
|
1621
1743
|
children
|
1622
1744
|
]
|
1623
1745
|
})
|
1624
1746
|
);
|
1625
1747
|
});
|
1626
1748
|
DropdownMenuCheckboxItem.displayName = DropdownMenuPrimitive.CheckboxItem.displayName;
|
1627
|
-
var DropdownMenuRadioItem =
|
1749
|
+
var DropdownMenuRadioItem = React33.forwardRef((_a, ref) => {
|
1628
1750
|
var _b = _a, { className, children } = _b, props = __objRest(_b, ["className", "children"]);
|
1629
|
-
return /* @__PURE__ */
|
1751
|
+
return /* @__PURE__ */ jsxs12(
|
1630
1752
|
DropdownMenuPrimitive.RadioItem,
|
1631
1753
|
__spreadProps(__spreadValues({
|
1632
1754
|
ref,
|
@@ -1636,16 +1758,16 @@ var DropdownMenuRadioItem = React30.forwardRef((_a, ref) => {
|
|
1636
1758
|
)
|
1637
1759
|
}, props), {
|
1638
1760
|
children: [
|
1639
|
-
/* @__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" }) }) }),
|
1640
1762
|
children
|
1641
1763
|
]
|
1642
1764
|
})
|
1643
1765
|
);
|
1644
1766
|
});
|
1645
1767
|
DropdownMenuRadioItem.displayName = DropdownMenuPrimitive.RadioItem.displayName;
|
1646
|
-
var DropdownMenuLabel =
|
1768
|
+
var DropdownMenuLabel = React33.forwardRef((_a, ref) => {
|
1647
1769
|
var _b = _a, { className, inset } = _b, props = __objRest(_b, ["className", "inset"]);
|
1648
|
-
return /* @__PURE__ */
|
1770
|
+
return /* @__PURE__ */ jsx35(
|
1649
1771
|
DropdownMenuPrimitive.Label,
|
1650
1772
|
__spreadValues({
|
1651
1773
|
ref,
|
@@ -1658,9 +1780,9 @@ var DropdownMenuLabel = React30.forwardRef((_a, ref) => {
|
|
1658
1780
|
);
|
1659
1781
|
});
|
1660
1782
|
DropdownMenuLabel.displayName = DropdownMenuPrimitive.Label.displayName;
|
1661
|
-
var DropdownMenuSeparator =
|
1783
|
+
var DropdownMenuSeparator = React33.forwardRef((_a, ref) => {
|
1662
1784
|
var _b = _a, { className } = _b, props = __objRest(_b, ["className"]);
|
1663
|
-
return /* @__PURE__ */
|
1785
|
+
return /* @__PURE__ */ jsx35(
|
1664
1786
|
DropdownMenuPrimitive.Separator,
|
1665
1787
|
__spreadValues({
|
1666
1788
|
ref,
|
@@ -1675,7 +1797,7 @@ var DropdownMenuShortcut = (_a) => {
|
|
1675
1797
|
} = _b, props = __objRest(_b, [
|
1676
1798
|
"className"
|
1677
1799
|
]);
|
1678
|
-
return /* @__PURE__ */
|
1800
|
+
return /* @__PURE__ */ jsx35(
|
1679
1801
|
"span",
|
1680
1802
|
__spreadValues({
|
1681
1803
|
className: cn("ml-auto text-xs tracking-widest opacity-60", className)
|
@@ -1685,12 +1807,12 @@ var DropdownMenuShortcut = (_a) => {
|
|
1685
1807
|
DropdownMenuShortcut.displayName = "DropdownMenuShortcut";
|
1686
1808
|
|
1687
1809
|
// src/ui/language-button.tsx
|
1688
|
-
import * as
|
1689
|
-
import { jsx as
|
1690
|
-
var LanguageButton =
|
1810
|
+
import * as React34 from "react";
|
1811
|
+
import { jsx as jsx36 } from "react/jsx-runtime";
|
1812
|
+
var LanguageButton = React34.forwardRef(
|
1691
1813
|
(_a, ref) => {
|
1692
1814
|
var _b = _a, { className, variant = "default", size = "default" } = _b, props = __objRest(_b, ["className", "variant", "size"]);
|
1693
|
-
return /* @__PURE__ */
|
1815
|
+
return /* @__PURE__ */ jsx36(
|
1694
1816
|
"button",
|
1695
1817
|
__spreadValues({
|
1696
1818
|
className: cn(
|
@@ -1713,7 +1835,7 @@ var LanguageButton = React31.forwardRef(
|
|
1713
1835
|
LanguageButton.displayName = "Button";
|
1714
1836
|
|
1715
1837
|
// src/components/language-switcher.tsx
|
1716
|
-
import { jsx as
|
1838
|
+
import { jsx as jsx37, jsxs as jsxs13 } from "react/jsx-runtime";
|
1717
1839
|
function LanguageSwitcher({ locales, localeLabels }) {
|
1718
1840
|
const locale = useLocale2();
|
1719
1841
|
const router = useRouter2();
|
@@ -1722,23 +1844,23 @@ function LanguageSwitcher({ locales, localeLabels }) {
|
|
1722
1844
|
const newPathname = pathname.replace(`/${locale}`, `/${newLocale}`);
|
1723
1845
|
router.push(newPathname);
|
1724
1846
|
};
|
1725
|
-
return /* @__PURE__ */
|
1726
|
-
/* @__PURE__ */
|
1847
|
+
return /* @__PURE__ */ jsxs13(DropdownMenu, { children: [
|
1848
|
+
/* @__PURE__ */ jsx37(DropdownMenuTrigger, { asChild: true, children: /* @__PURE__ */ jsx37(
|
1727
1849
|
LanguageButton,
|
1728
1850
|
{
|
1729
1851
|
variant: "ghost",
|
1730
1852
|
size: "icon",
|
1731
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",
|
1732
|
-
children: /* @__PURE__ */
|
1854
|
+
children: /* @__PURE__ */ jsx37(globalLucideIcons.Globe, { className: "h-5 w-5" })
|
1733
1855
|
}
|
1734
1856
|
) }),
|
1735
|
-
/* @__PURE__ */
|
1857
|
+
/* @__PURE__ */ jsx37(
|
1736
1858
|
DropdownMenuContent,
|
1737
1859
|
{
|
1738
1860
|
align: "end",
|
1739
1861
|
sideOffset: 5,
|
1740
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]",
|
1741
|
-
children: /* @__PURE__ */
|
1863
|
+
children: /* @__PURE__ */ jsx37("div", { className: "grid grid-cols-2 gap-1", children: locales.map((loc) => /* @__PURE__ */ jsx37(
|
1742
1864
|
DropdownMenuItem,
|
1743
1865
|
{
|
1744
1866
|
className: `
|
@@ -1760,21 +1882,21 @@ function LanguageSwitcher({ locales, localeLabels }) {
|
|
1760
1882
|
|
1761
1883
|
// src/components/script/google-analytics-script.tsx
|
1762
1884
|
import Script from "next/script";
|
1763
|
-
import { Fragment
|
1885
|
+
import { Fragment, jsx as jsx38, jsxs as jsxs14 } from "react/jsx-runtime";
|
1764
1886
|
var googleAnalyticsId = process.env.NEXT_PUBLIC_GOOGLE_ANALYTICS_ID;
|
1765
1887
|
function GoogleAnalyticsScript() {
|
1766
1888
|
if (process.env.NODE_ENV !== "production") {
|
1767
1889
|
return null;
|
1768
1890
|
}
|
1769
|
-
return /* @__PURE__ */
|
1770
|
-
/* @__PURE__ */
|
1891
|
+
return /* @__PURE__ */ jsxs14(Fragment, { children: [
|
1892
|
+
/* @__PURE__ */ jsx38(
|
1771
1893
|
Script,
|
1772
1894
|
{
|
1773
1895
|
strategy: "afterInteractive",
|
1774
1896
|
src: `https://www.googletagmanager.com/gtag/js?id=${googleAnalyticsId}`
|
1775
1897
|
}
|
1776
1898
|
),
|
1777
|
-
/* @__PURE__ */
|
1899
|
+
/* @__PURE__ */ jsx38(
|
1778
1900
|
Script,
|
1779
1901
|
{
|
1780
1902
|
id: "google-analytics",
|
@@ -1805,13 +1927,13 @@ function useGoogleAnalytics() {
|
|
1805
1927
|
|
1806
1928
|
// src/components/script/microsoft-clarity-script.tsx
|
1807
1929
|
import Script2 from "next/script";
|
1808
|
-
import { jsx as
|
1930
|
+
import { jsx as jsx39 } from "react/jsx-runtime";
|
1809
1931
|
var microsoftClarityId = process.env.NEXT_PUBLIC_MICROSOFT_CLARITY_ID;
|
1810
1932
|
function MicrosoftClarityScript() {
|
1811
1933
|
if (process.env.NODE_ENV !== "production") {
|
1812
1934
|
return null;
|
1813
1935
|
}
|
1814
|
-
return /* @__PURE__ */
|
1936
|
+
return /* @__PURE__ */ jsx39(Script2, { id: "microsoft-clarity", strategy: "afterInteractive", children: `
|
1815
1937
|
(function(c,l,a,r,i,t,y){
|
1816
1938
|
c[a]=c[a]||function(){(c[a].q=c[a].q||[]).push(arguments)};
|
1817
1939
|
t=l.createElement(r);t.async=1;t.src="https://www.clarity.ms/tag/"+i;
|