karin-plugin-kkk 2.23.1 → 2.24.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.
@@ -1370,6 +1370,7 @@ var init_ViteLogo = __esmMin(() => {
1370
1370
  var init_DefaultLayout = __esmMin(() => {
1371
1371
  init_dist();
1372
1372
  init_clsx();
1373
+ init_date_fns();
1373
1374
  init_lucide_react();
1374
1375
  __toESM(require_react(), 1);
1375
1376
  init_GlowImage();
@@ -1510,7 +1511,17 @@ var init_DefaultLayout = __esmMin(() => {
1510
1511
  })] })
1511
1512
  ]
1512
1513
  })
1513
- }) : (0, import_jsx_runtime$36.jsx)("div", { className: "h-24" })]
1514
+ }) : (0, import_jsx_runtime$36.jsx)("div", {
1515
+ className: "h-24 flex items-center justify-center px-4",
1516
+ children: (0, import_jsx_runtime$36.jsx)("span", {
1517
+ className: "text-xl font-medium text-center leading-relaxed select-none opacity-5",
1518
+ style: {
1519
+ mixBlendMode: "difference",
1520
+ color: "#ffffff"
1521
+ },
1522
+ children: (() => `【法律声明】karin-plugin-kkk 软件作品的完整著作权及相关衍生权利均归作者ikenxuan所有,依据《GNU通用公共许可证第3版》(GPL-3.0)之规定授权公开发布。任何未遵守GPL-3.0协议条款的商业使用行为,均构成对本著作权的侵权行为。完整协议文本查阅地址:https://github.com/ikenxuan/karin-plugin-kkk?tab=GPL-3.0-1-ov-file | 溯源时间戳:${format(/* @__PURE__ */ new Date(), "yyyy-MM-dd HH:mm:ss")} | 移除本声明的行为,视为违反GPL-3.0协议约定,作者保留追究相关主体法律责任的权利。`)()
1523
+ })
1524
+ })]
1514
1525
  }) });
1515
1526
  };
1516
1527
  });
@@ -2211,7 +2222,7 @@ var init_Dynamic = __esmMin(() => {
2211
2222
  className: "flex overflow-hidden gap-8 py-1 pr-2 w-full",
2212
2223
  style: { scrollbarWidth: "thin" },
2213
2224
  children: [items.slice(0, visibleCount).map((c, idx) => {
2214
- const avatar = c.avatar_thumb?.url_list[0];
2225
+ const avatar = c.avatar_url;
2215
2226
  return (0, import_jsx_runtime$34.jsxs)("div", {
2216
2227
  className: "flex flex-col items-center min-w-38 w-38 shrink-0",
2217
2228
  children: [
@@ -2412,13 +2423,17 @@ var init_VideoWork = __esmMin(() => {
2412
2423
  children: ["@", props.data.username]
2413
2424
  }), (0, import_jsx_runtime$33.jsxs)("div", {
2414
2425
  className: "flex gap-2 items-center text-4xl text-default-500",
2415
- children: [(0, import_jsx_runtime$33.jsx)(Hash, {
2416
- size: 32,
2417
- className: "text-default-400"
2418
- }), (0, import_jsx_runtime$33.jsxs)("span", {
2419
- className: "select-text",
2420
- children: ["抖音号: ", props.data.抖音号]
2421
- })]
2426
+ children: [
2427
+ (0, import_jsx_runtime$33.jsx)(Hash, { size: 32 }),
2428
+ (0, import_jsx_runtime$33.jsxs)("span", {
2429
+ className: "select-text",
2430
+ children: ["抖音号: ", props.data.抖音号]
2431
+ }),
2432
+ props.data.cooperation_info?.subscriber_role && (0, import_jsx_runtime$33.jsx)("span", {
2433
+ className: "ml-5 px-3 py-1 rounded-xl bg-default-200 text-3xl",
2434
+ children: props.data.cooperation_info.subscriber_role
2435
+ })
2436
+ ]
2422
2437
  })]
2423
2438
  })]
2424
2439
  }), (0, import_jsx_runtime$33.jsxs)("div", {
@@ -2487,8 +2502,8 @@ var init_VideoWork = __esmMin(() => {
2487
2502
  ]
2488
2503
  })]
2489
2504
  });
2490
- CoCreatorsInfo$1 = ({ info }) => {
2491
- const creators = info?.co_creators ?? [];
2505
+ CoCreatorsInfo$1 = ({ info, subscriberNickname }) => {
2506
+ const creators = (info?.co_creators ?? []).filter((c) => !subscriberNickname || c.nickname !== subscriberNickname);
2492
2507
  if (creators.length === 0) return null;
2493
2508
  const items = creators.slice(0, 50);
2494
2509
  const listRef = import_react$35.useRef(null);
@@ -2512,9 +2527,9 @@ var init_VideoWork = __esmMin(() => {
2512
2527
  className: "flex overflow-hidden gap-8 py-1 pr-2 w-full",
2513
2528
  style: { scrollbarWidth: "thin" },
2514
2529
  children: [items.slice(0, visibleCount).map((c, idx) => {
2515
- const avatar = c.avatar_thumb?.url_list[0];
2530
+ const avatar = c.avatar_url;
2516
2531
  return (0, import_jsx_runtime$33.jsxs)("div", {
2517
- className: "flex flex-col items-center min-w-38 w-38 shrink-0",
2532
+ className: "flex flex-col items-center min-w-42 w-42 shrink-0",
2518
2533
  children: [
2519
2534
  (0, import_jsx_runtime$33.jsx)("div", {
2520
2535
  className: "flex justify-center items-center bg-white rounded-full w-30 h-30",
@@ -2525,7 +2540,7 @@ var init_VideoWork = __esmMin(() => {
2525
2540
  })
2526
2541
  }),
2527
2542
  (0, import_jsx_runtime$33.jsx)("div", {
2528
- className: "overflow-hidden mt-6 w-full text-3xl font-medium leading-tight text-center truncate whitespace-nowrap select-text text-foreground-700",
2543
+ className: "overflow-hidden mt-6 w-full text-3xl font-medium leading-tight text-center truncate whitespace-nowrap select-text text-foreground",
2529
2544
  children: c.nickname || "未提供"
2530
2545
  }),
2531
2546
  (0, import_jsx_runtime$33.jsx)("div", {
@@ -2538,7 +2553,7 @@ var init_VideoWork = __esmMin(() => {
2538
2553
  className: "flex flex-col items-center min-w-38 w-38 shrink-0",
2539
2554
  children: [
2540
2555
  (0, import_jsx_runtime$33.jsx)("div", {
2541
- className: "flex justify-center items-center rounded-full bg-default-200 w-38 h-38",
2556
+ className: "flex justify-center items-center rounded-full bg-default-200 w-30 h-30",
2542
2557
  children: (0, import_jsx_runtime$33.jsx)("span", {
2543
2558
  className: "text-[42px] leading-none text-foreground-500",
2544
2559
  children: "···"
@@ -2586,7 +2601,10 @@ var init_VideoWork = __esmMin(() => {
2586
2601
  children: [coCreatorCount, "人共创"]
2587
2602
  })]
2588
2603
  })
2589
- }), (0, import_jsx_runtime$33.jsx)(CoCreatorsInfo$1, { info: props.data.cooperation_info })]
2604
+ }), (0, import_jsx_runtime$33.jsx)(CoCreatorsInfo$1, {
2605
+ info: props.data.cooperation_info,
2606
+ subscriberNickname: props.data.username
2607
+ })]
2590
2608
  }), (0, import_jsx_runtime$33.jsxs)("div", {
2591
2609
  className: "flex justify-between items-start px-20 pb-20",
2592
2610
  children: [(0, import_jsx_runtime$33.jsx)(UserInfoSection$3, { ...props }), (0, import_jsx_runtime$33.jsx)("div", {
@@ -2813,7 +2831,7 @@ var init_ImageWork = __esmMin(() => {
2813
2831
  className: "flex overflow-hidden gap-8 py-1 pr-2 w-full",
2814
2832
  style: { scrollbarWidth: "thin" },
2815
2833
  children: [items.slice(0, visibleCount).map((c, idx) => {
2816
- const avatar = c.avatar_thumb?.url_list[0];
2834
+ const avatar = c.avatar_url;
2817
2835
  return (0, import_jsx_runtime$32.jsxs)("div", {
2818
2836
  className: "flex flex-col items-center min-w-38 w-38 shrink-0",
2819
2837
  children: [
@@ -4295,80 +4313,87 @@ var init_UserList$1 = __esmMin(() => {
4295
4313
  })
4296
4314
  }),
4297
4315
  (0, import_jsx_runtime$25.jsxs)("div", {
4298
- className: "relative z-10 p-8 flex items-center gap-8",
4316
+ className: "relative z-10 p-6 flex flex-col gap-4",
4299
4317
  children: [(0, import_jsx_runtime$25.jsxs)("div", {
4300
- className: "relative shrink-0",
4301
- children: [(0, import_jsx_runtime$25.jsx)("div", {
4302
- className: "w-28 h-28 rounded-full p-1 bg-default-100/20 backdrop-blur-md border border-default-200/30 shadow-lg",
4303
- children: (0, import_jsx_runtime$25.jsx)("img", {
4304
- src: props.avatar_img,
4305
- alt: "Avatar",
4306
- className: "w-full h-full rounded-full object-cover"
4307
- })
4308
- }), (0, import_jsx_runtime$25.jsxs)("div", {
4309
- className: `absolute -bottom-1 -right-1 px-3 py-1 rounded-full border-2 border-background flex items-center gap-1.5 shadow-md ${props.switch ? "bg-success text-white" : "bg-danger-500 text-default-100"}`,
4310
- children: [(0, import_jsx_runtime$25.jsx)("div", { className: `w-1.5 h-1.5 rounded-full ${props.switch ? "bg-white" : "bg-default-300"}` }), (0, import_jsx_runtime$25.jsx)("span", {
4311
- className: "text-[10px] font-bold uppercase tracking-wider leading-none",
4312
- children: props.switch ? "ON" : "OFF"
4313
- })]
4314
- })]
4315
- }), (0, import_jsx_runtime$25.jsxs)("div", {
4316
- className: "flex-1 min-w-0",
4318
+ className: "flex items-center gap-4",
4317
4319
  children: [
4320
+ (0, import_jsx_runtime$25.jsx)("div", {
4321
+ className: "w-20 h-20 rounded-full p-1 bg-default-100/20 backdrop-blur-md border border-default-200/30 shadow-lg shrink-0",
4322
+ children: (0, import_jsx_runtime$25.jsx)("img", {
4323
+ src: props.avatar_img,
4324
+ alt: "Avatar",
4325
+ className: "w-full h-full rounded-full object-cover"
4326
+ })
4327
+ }),
4318
4328
  (0, import_jsx_runtime$25.jsxs)("div", {
4319
- className: "mb-3",
4329
+ className: "flex-1 min-w-0",
4320
4330
  children: [(0, import_jsx_runtime$25.jsx)("h3", {
4321
- className: "text-2xl font-black tracking-tight text-foreground truncate drop-shadow-sm",
4331
+ className: "text-3xl font-black tracking-tight text-foreground truncate drop-shadow-sm mb-1.5",
4322
4332
  children: props.username
4323
- }), (0, import_jsx_runtime$25.jsx)("div", {
4324
- className: "flex items-center gap-2 mt-1",
4325
- children: (0, import_jsx_runtime$25.jsxs)("span", {
4326
- className: "px-1.5 py-0.5 rounded-md bg-default-100/50 border border-default-200/50 text-[10px] font-mono font-bold text-default-500 flex items-center gap-1",
4327
- children: [(0, import_jsx_runtime$25.jsx)(RiHashtag, { className: "w-2.5 h-2.5 opacity-70" }), props.short_id]
4328
- })
4333
+ }), (0, import_jsx_runtime$25.jsxs)("span", {
4334
+ className: "inline-flex items-center gap-1 px-2 py-1 rounded-md bg-default-100/50 border border-default-200/50 text-xs font-mono font-bold text-default-500",
4335
+ children: [(0, import_jsx_runtime$25.jsx)(RiHashtag, { className: "w-3 h-3 opacity-70" }), props.short_id]
4329
4336
  })]
4330
4337
  }),
4331
- (0, import_jsx_runtime$25.jsx)("div", {
4332
- className: "flex flex-wrap gap-2 mb-4",
4333
- children: Object.entries(pushTypeConfig).map(([type, config$1]) => {
4334
- const isActive = props.pushTypes?.includes(type);
4335
- const Icon = config$1.icon;
4336
- return (0, import_jsx_runtime$25.jsxs)("div", {
4337
- className: `px-2 py-0.5 rounded-md border flex items-center gap-1.5 transition-colors duration-200 ${isActive ? config$1.color : "bg-default-100/50 text-default-400 border-transparent dark:bg-default-100/10"}`,
4338
- children: [(0, import_jsx_runtime$25.jsx)(Icon, { className: `w-3 h-3 ${isActive ? "" : "opacity-50"}` }), (0, import_jsx_runtime$25.jsx)("span", {
4339
- className: "text-[10px] font-bold",
4340
- children: config$1.label
4341
- })]
4342
- }, type);
4343
- })
4344
- }),
4345
4338
  (0, import_jsx_runtime$25.jsxs)("div", {
4346
- className: "flex items-center gap-2 w-full",
4347
- children: [
4348
- (0, import_jsx_runtime$25.jsxs)("div", {
4349
- className: "flex-1 flex flex-col items-center justify-center py-1.5 px-2 rounded-lg bg-content2/20 border border-default-200/20 backdrop-blur-sm",
4350
- children: [(0, import_jsx_runtime$25.jsx)(RiGroupLine, { className: "w-3.5 h-3.5 mb-0.5 text-default-400" }), (0, import_jsx_runtime$25.jsx)("span", {
4351
- className: "text-sm font-bold font-mono text-default-600 leading-none",
4352
- children: props.fans
4353
- })]
4354
- }),
4355
- (0, import_jsx_runtime$25.jsxs)("div", {
4356
- className: "flex-1 flex flex-col items-center justify-center py-1.5 px-2 rounded-lg bg-content2/20 border border-default-200/20 backdrop-blur-sm",
4357
- children: [(0, import_jsx_runtime$25.jsx)(RiHeart3Line, { className: "w-3.5 h-3.5 mb-0.5 text-default-400" }), (0, import_jsx_runtime$25.jsx)("span", {
4358
- className: "text-sm font-bold font-mono text-default-600 leading-none",
4359
- children: props.total_favorited
4360
- })]
4361
- }),
4362
- (0, import_jsx_runtime$25.jsxs)("div", {
4363
- className: "flex-1 flex flex-col items-center justify-center py-1.5 px-2 rounded-lg bg-content2/20 border border-default-200/20 backdrop-blur-sm",
4364
- children: [(0, import_jsx_runtime$25.jsx)(RiUserFollowLine, { className: "w-3.5 h-3.5 mb-0.5 text-default-400" }), (0, import_jsx_runtime$25.jsx)("span", {
4365
- className: "text-sm font-bold font-mono text-default-600 leading-none",
4366
- children: props.following_count
4367
- })]
4368
- })
4369
- ]
4339
+ className: `px-4 py-2 rounded-full border-2 border-background flex items-center gap-2 shadow-md shrink-0 ${props.switch ? "bg-success text-white" : "bg-danger-500 text-default-100"}`,
4340
+ children: [(0, import_jsx_runtime$25.jsx)("div", { className: `w-2 h-2 rounded-full ${props.switch ? "bg-white" : "bg-default-300"}` }), (0, import_jsx_runtime$25.jsx)("span", {
4341
+ className: "text-xs font-bold uppercase tracking-wider leading-none",
4342
+ children: props.switch ? "ON" : "OFF"
4343
+ })]
4370
4344
  })
4371
4345
  ]
4346
+ }), (0, import_jsx_runtime$25.jsxs)("div", {
4347
+ className: "flex gap-6",
4348
+ children: [(0, import_jsx_runtime$25.jsx)("div", {
4349
+ className: "flex gap-2.5",
4350
+ children: Object.entries(pushTypeConfig).map(([type, config$1]) => {
4351
+ const isActive = props.pushTypes?.includes(type);
4352
+ const Icon = config$1.icon;
4353
+ return (0, import_jsx_runtime$25.jsxs)("div", {
4354
+ className: `px-2.5 py-3 rounded-xl border flex flex-col items-center gap-2.5 transition-colors duration-200 ${isActive ? config$1.color : "bg-default-100/50 text-default-400 border-transparent dark:bg-default-100/10"}`,
4355
+ children: [(0, import_jsx_runtime$25.jsx)(Icon, { className: `w-5 h-5 ${isActive ? "" : "opacity-50"}` }), (0, import_jsx_runtime$25.jsx)("span", {
4356
+ className: "text-xs font-bold whitespace-nowrap tracking-wide",
4357
+ style: { writingMode: "vertical-rl" },
4358
+ children: config$1.label
4359
+ })]
4360
+ }, type);
4361
+ })
4362
+ }), (0, import_jsx_runtime$25.jsx)("div", {
4363
+ className: "flex-1 flex flex-col gap-2",
4364
+ children: [
4365
+ {
4366
+ icon: RiGroupLine,
4367
+ value: props.fans,
4368
+ label: "粉丝"
4369
+ },
4370
+ {
4371
+ icon: RiHeart3Line,
4372
+ value: props.total_favorited,
4373
+ label: "获赞"
4374
+ },
4375
+ {
4376
+ icon: RiUserFollowLine,
4377
+ value: props.following_count,
4378
+ label: "关注"
4379
+ }
4380
+ ].map((item, index) => {
4381
+ const Icon = item.icon;
4382
+ return (0, import_jsx_runtime$25.jsxs)("div", {
4383
+ className: "flex items-center gap-3 px-4 py-2 rounded-lg bg-content2/30 border border-default-200/30 backdrop-blur-sm",
4384
+ children: [(0, import_jsx_runtime$25.jsx)(Icon, { className: "w-5 h-5 text-default-400 shrink-0" }), (0, import_jsx_runtime$25.jsxs)("div", {
4385
+ className: "flex items-baseline gap-2 flex-1",
4386
+ children: [(0, import_jsx_runtime$25.jsx)("span", {
4387
+ className: "text-base font-bold font-mono text-foreground",
4388
+ children: item.value
4389
+ }), (0, import_jsx_runtime$25.jsx)("span", {
4390
+ className: "text-xs text-default-400 font-medium",
4391
+ children: item.label
4392
+ })]
4393
+ })]
4394
+ }, index);
4395
+ })
4396
+ })]
4372
4397
  })]
4373
4398
  })
4374
4399
  ]
@@ -4559,11 +4584,101 @@ var init_videoInfo$1 = __esmMin(() => {
4559
4584
  className: "relative",
4560
4585
  children: [(0, import_jsx_runtime$24.jsxs)("div", {
4561
4586
  className: "absolute inset-0 overflow-hidden -z-10",
4562
- children: [(0, import_jsx_runtime$24.jsx)("img", {
4563
- src: props.data.image_url,
4564
- alt: "",
4565
- className: "w-full h-full object-cover scale-150 blur-[120px] saturate-[1.8] opacity-50"
4566
- }), (0, import_jsx_runtime$24.jsx)("div", { className: "absolute inset-0 bg-linear-to-b from-default-50/70 via-default-50/50 to-default-50/70 dark:from-black/40 dark:via-black/30 dark:to-black/40" })]
4587
+ children: [
4588
+ (0, import_jsx_runtime$24.jsx)("img", {
4589
+ src: props.data.image_url,
4590
+ alt: "",
4591
+ className: "w-full h-full object-cover scale-150 blur-[120px] saturate-[1.8] opacity-50"
4592
+ }),
4593
+ (0, import_jsx_runtime$24.jsx)("div", { className: "absolute inset-0 bg-linear-to-b from-default-50/70 via-default-50/50 to-default-50/70 dark:from-black/40 dark:via-black/30 dark:to-black/40" }),
4594
+ (0, import_jsx_runtime$24.jsx)("div", {
4595
+ className: "absolute inset-0 pointer-events-none opacity-[0.35] mix-blend-overlay dark:mix-blend-soft-light",
4596
+ children: (0, import_jsx_runtime$24.jsxs)("svg", {
4597
+ className: "w-full h-full",
4598
+ xmlns: "http://www.w3.org/2000/svg",
4599
+ children: [(0, import_jsx_runtime$24.jsxs)("defs", { children: [(0, import_jsx_runtime$24.jsxs)("filter", {
4600
+ id: "douyinNoise",
4601
+ children: [
4602
+ (0, import_jsx_runtime$24.jsx)("feTurbulence", {
4603
+ type: "fractalNoise",
4604
+ baseFrequency: "1.2",
4605
+ numOctaves: "3",
4606
+ stitchTiles: "stitch"
4607
+ }),
4608
+ (0, import_jsx_runtime$24.jsx)("feColorMatrix", {
4609
+ type: "saturate",
4610
+ values: "0"
4611
+ }),
4612
+ (0, import_jsx_runtime$24.jsxs)("feComponentTransfer", { children: [
4613
+ (0, import_jsx_runtime$24.jsx)("feFuncR", {
4614
+ type: "discrete",
4615
+ tableValues: "0 1"
4616
+ }),
4617
+ (0, import_jsx_runtime$24.jsx)("feFuncG", {
4618
+ type: "discrete",
4619
+ tableValues: "0 1"
4620
+ }),
4621
+ (0, import_jsx_runtime$24.jsx)("feFuncB", {
4622
+ type: "discrete",
4623
+ tableValues: "0 1"
4624
+ })
4625
+ ] }),
4626
+ (0, import_jsx_runtime$24.jsx)("feComponentTransfer", { children: (0, import_jsx_runtime$24.jsx)("feFuncA", {
4627
+ type: "linear",
4628
+ slope: "2",
4629
+ intercept: "-0.5"
4630
+ }) })
4631
+ ]
4632
+ }), (0, import_jsx_runtime$24.jsxs)("mask", {
4633
+ id: "noiseMask",
4634
+ children: [(0, import_jsx_runtime$24.jsxs)("linearGradient", {
4635
+ id: "noiseGradient",
4636
+ x1: "0%",
4637
+ y1: "0%",
4638
+ x2: "0%",
4639
+ y2: "100%",
4640
+ children: [
4641
+ (0, import_jsx_runtime$24.jsx)("stop", {
4642
+ offset: "0%",
4643
+ stopColor: "white",
4644
+ stopOpacity: "1"
4645
+ }),
4646
+ (0, import_jsx_runtime$24.jsx)("stop", {
4647
+ offset: "15%",
4648
+ stopColor: "white",
4649
+ stopOpacity: "0.6"
4650
+ }),
4651
+ (0, import_jsx_runtime$24.jsx)("stop", {
4652
+ offset: "50%",
4653
+ stopColor: "white",
4654
+ stopOpacity: "0.15"
4655
+ }),
4656
+ (0, import_jsx_runtime$24.jsx)("stop", {
4657
+ offset: "85%",
4658
+ stopColor: "white",
4659
+ stopOpacity: "0.6"
4660
+ }),
4661
+ (0, import_jsx_runtime$24.jsx)("stop", {
4662
+ offset: "100%",
4663
+ stopColor: "white",
4664
+ stopOpacity: "1"
4665
+ })
4666
+ ]
4667
+ }), (0, import_jsx_runtime$24.jsx)("rect", {
4668
+ width: "100%",
4669
+ height: "100%",
4670
+ fill: "url(#noiseGradient)"
4671
+ })]
4672
+ })] }), (0, import_jsx_runtime$24.jsx)("rect", {
4673
+ width: "100%",
4674
+ height: "100%",
4675
+ filter: "url(#douyinNoise)",
4676
+ mask: "url(#noiseMask)",
4677
+ fill: "white"
4678
+ })]
4679
+ })
4680
+ })
4681
+ ]
4567
4682
  }), (0, import_jsx_runtime$24.jsx)("div", {
4568
4683
  className: "relative w-full overflow-hidden text-default-900",
4569
4684
  children: (0, import_jsx_runtime$24.jsxs)("div", {
@@ -13017,56 +13132,95 @@ var init_GlobalStatistics = __esmMin(() => {
13017
13132
  children: [(0, import_jsx_runtime.jsx)("div", { className: "w-5 h-24 rounded-full bg-violet-500" }), (0, import_jsx_runtime.jsxs)("div", {
13018
13133
  className: "flex flex-col",
13019
13134
  children: [(0, import_jsx_runtime.jsx)("h2", {
13020
- className: "text-[5rem] font-black tracking-tight leading-none text-slate-900 dark:text-white",
13135
+ className: "text-[5rem] font-black tracking-tight leading-none text-default-900/90",
13021
13136
  children: "平台详情"
13022
13137
  }), (0, import_jsx_runtime.jsx)("span", {
13023
- className: "text-2xl font-medium tracking-[0.15em] uppercase text-slate-400 dark:text-slate-500 mt-2",
13138
+ className: "text-2xl font-medium tracking-[0.15em] uppercase text-default-500/70 mt-2",
13024
13139
  children: "PLATFORMS"
13025
13140
  })]
13026
13141
  })]
13027
- }), (0, import_jsx_runtime.jsx)("div", {
13028
- className: "space-y-18",
13029
- children: Object.entries(platformStats).map(([platform, count]) => {
13030
- const maxCount = Math.max(...Object.values(platformStats));
13031
- const percentage = maxCount > 0 ? count / maxCount * 100 : 0;
13032
- const config$1 = platformConfig[platform];
13033
- return (0, import_jsx_runtime.jsxs)("div", {
13034
- className: "relative",
13035
- children: [(0, import_jsx_runtime.jsxs)("div", {
13036
- className: "flex items-center gap-8 mb-6",
13037
- children: [
13038
- (0, import_jsx_runtime.jsx)("img", {
13039
- src: config$1.logo,
13040
- alt: config$1.name,
13041
- className: "h-24 w-auto object-contain"
13042
- }),
13043
- (0, import_jsx_runtime.jsxs)("div", {
13044
- className: "flex-1",
13045
- children: [(0, import_jsx_runtime.jsx)("div", {
13142
+ }), (0, import_jsx_runtime.jsxs)("div", {
13143
+ className: "flex flex-col items-center gap-20",
13144
+ children: [(0, import_jsx_runtime.jsx)("div", {
13145
+ className: "relative w-full h-200 flex items-center justify-center",
13146
+ children: (0, import_jsx_runtime.jsx)("svg", {
13147
+ width: "1200",
13148
+ height: "1000",
13149
+ viewBox: "0 0 1200 1000",
13150
+ children: (0, import_jsx_runtime.jsx)(VictoryPie, {
13151
+ standalone: false,
13152
+ width: 1200,
13153
+ height: 1e3,
13154
+ data: Object.entries(platformStats).map(([platform, count]) => {
13155
+ const config$1 = platformConfig[platform];
13156
+ const total = Object.values(platformStats).reduce((sum, c) => sum + c, 0);
13157
+ const percentage = total > 0 ? (count / total * 100).toFixed(0) : "0";
13158
+ return {
13159
+ x: config$1.name,
13160
+ y: count,
13161
+ label: `${config$1.name} ${percentage}%\n${formatNumber$4(count)}次`,
13162
+ fill: config$1.color
13163
+ };
13164
+ }),
13165
+ innerRadius: 220,
13166
+ radius: 320,
13167
+ padAngle: 3,
13168
+ colorScale: Object.keys(platformStats).map((platform) => platformConfig[platform].color),
13169
+ style: { labels: {
13170
+ fontSize: 40,
13171
+ fontFamily: "HarmonyOSHans-Regular",
13172
+ fontWeight: "bold",
13173
+ fill: useDarkTheme ? "#fff" : "#000"
13174
+ } },
13175
+ labelRadius: 400
13176
+ })
13177
+ })
13178
+ }), (0, import_jsx_runtime.jsx)("div", {
13179
+ className: "w-full grid grid-cols-2 gap-x-16 gap-y-8",
13180
+ children: Object.entries(platformStats).map(([platform, count]) => {
13181
+ if (count === 0) return null;
13182
+ const config$1 = platformConfig[platform];
13183
+ const total = Object.values(platformStats).reduce((sum, c) => sum + c, 0);
13184
+ const percentage = total > 0 ? (count / total * 100).toFixed(1) : "0.0";
13185
+ return (0, import_jsx_runtime.jsxs)("div", {
13186
+ className: "flex items-center gap-8",
13187
+ children: [(0, import_jsx_runtime.jsx)("div", {
13188
+ className: "w-14 h-14 rounded-lg shrink-0",
13189
+ style: { backgroundColor: config$1.color }
13190
+ }), (0, import_jsx_runtime.jsxs)("div", {
13191
+ className: "flex-1",
13192
+ children: [
13193
+ (0, import_jsx_runtime.jsx)("div", {
13046
13194
  className: "text-4xl font-bold text-default-900/90 mb-2",
13047
13195
  children: config$1.name
13048
- }), (0, import_jsx_runtime.jsx)("div", {
13049
- className: "text-2xl text-default-600/80",
13196
+ }),
13197
+ (0, import_jsx_runtime.jsx)("div", {
13198
+ className: "text-2xl text-default-600/80 mb-2",
13050
13199
  children: config$1.nameEn
13051
- })]
13052
- }),
13053
- (0, import_jsx_runtime.jsx)("div", {
13054
- className: "text-[5rem] font-black text-default-900/90",
13055
- children: formatWithCommas(count)
13056
- })
13057
- ]
13058
- }), (0, import_jsx_runtime.jsx)("div", {
13059
- className: "relative h-18 bg-default-200/30 rounded-full overflow-hidden",
13060
- children: (0, import_jsx_runtime.jsx)("div", {
13061
- className: "absolute inset-y-0 left-0 rounded-full transition-all duration-500",
13062
- style: {
13063
- width: `${percentage}%`,
13064
- backgroundColor: config$1.color
13065
- }
13066
- })
13067
- })]
13068
- }, platform);
13069
- })
13200
+ }),
13201
+ (0, import_jsx_runtime.jsxs)("div", {
13202
+ className: "text-3xl text-default-600/80",
13203
+ children: [
13204
+ (0, import_jsx_runtime.jsx)("span", {
13205
+ className: "font-black text-default-900/90",
13206
+ children: formatWithCommas(count)
13207
+ }),
13208
+ " ",
13209
+ (0, import_jsx_runtime.jsxs)("span", {
13210
+ className: "text-2xl ml-2",
13211
+ children: [
13212
+ "(",
13213
+ percentage,
13214
+ "%)"
13215
+ ]
13216
+ })
13217
+ ]
13218
+ })
13219
+ ]
13220
+ })]
13221
+ }, platform);
13222
+ })
13223
+ })]
13070
13224
  })]
13071
13225
  }),
13072
13226
  (0, import_jsx_runtime.jsxs)("div", { children: [(0, import_jsx_runtime.jsxs)("div", {
@@ -142,9 +142,7 @@ interface DouyinDynamicProps extends BaseComponentProps {
142
142
  cooperation_info?: {
143
143
  co_creator_nums: number;
144
144
  co_creators: Array<{
145
- avatar_thumb: {
146
- url_list: string[];
147
- };
145
+ avatar_url?: string;
148
146
  nickname: string;
149
147
  role_title: string;
150
148
  }>;
@@ -209,9 +207,7 @@ interface DouyinImageWorkProps extends BaseComponentProps {
209
207
  cooperation_info?: {
210
208
  co_creator_nums: number;
211
209
  co_creators: Array<{
212
- avatar_thumb: {
213
- url_list: string[];
214
- };
210
+ avatar_url?: string;
215
211
  nickname: string;
216
212
  role_title: string;
217
213
  }>;
@@ -451,12 +447,11 @@ interface DouyinVideoWorkProps extends BaseComponentProps {
451
447
  cooperation_info?: {
452
448
  co_creator_nums: number;
453
449
  co_creators: Array<{
454
- avatar_thumb: {
455
- url_list: string[];
456
- };
450
+ avatar_url?: string;
457
451
  nickname: string;
458
452
  role_title: string;
459
453
  }>;
454
+ subscriber_role?: string;
460
455
  };
461
456
  };
462
457
  /** 预生成的二维码数据URL */
@@ -1,4 +1,4 @@
1
1
  import "./rolldown-runtime-BMXAG3ag.js";
2
2
  import "./vendor-DxfKHvj-.js";
3
- import { r as reactServerRender, t as template_default } from "./template-CnW8M_F0.js";
3
+ import { r as reactServerRender, t as template_default } from "./template-DekmxKd7.js";
4
4
  export { template_default as default, reactServerRender };
package/lib/index.js CHANGED
@@ -1,5 +1,5 @@
1
1
  import "./core_chunk/rolldown-runtime-BMXAG3ag.js";
2
- import "./core_chunk/main-BdZy8WYB.js";
2
+ import "./core_chunk/main-1eljaHiz.js";
3
3
  import "./core_chunk/vendor-DxfKHvj-.js";
4
- import "./core_chunk/template-CnW8M_F0.js";
4
+ import "./core_chunk/template-DekmxKd7.js";
5
5
  export {};