feat: artifact set display

This commit is contained in:
2026-03-20 22:33:44 +07:00 Unverified
parent 3c52cc1228
commit 4cabdb5691
3 changed files with 36 additions and 3 deletions
Vendored
+5
View File
@@ -3,6 +3,11 @@ declare module "*.woff2" {
export default file; export default file;
} }
declare module "*.woff" {
const file: string;
export default file;
}
declare module "*.svg" { declare module "*.svg" {
const file: string; const file: string;
export default file; export default file;
Binary file not shown.
+31 -3
View File
@@ -18,6 +18,7 @@ import { featherImage } from "@/assets/feather";
import { EnkaIcon } from "@/assets/icons"; import { EnkaIcon } from "@/assets/icons";
import { library } from "@/assets/icons-library"; import { library } from "@/assets/icons-library";
import shadeSvg from "@/assets/shade.svg" with { type: "file" }; import shadeSvg from "@/assets/shade.svg" with { type: "file" };
import iconFontFile from "@/assets/shicon.woff" with { type: "file" };
import fontFile from "@/assets/shinshin.woff2" with { type: "file" }; import fontFile from "@/assets/shinshin.woff2" with { type: "file" };
import { star } from "@/assets/stars"; import { star } from "@/assets/stars";
import { TalentSvg } from "@/assets/talent"; import { TalentSvg } from "@/assets/talent";
@@ -35,6 +36,7 @@ const cache = new TTLCache();
const deduper = new Deduplicator(); const deduper = new Deduplicator();
const font = file(fontFile); const font = file(fontFile);
const iconFont = file(iconFontFile);
const shade = file(shadeSvg); const shade = file(shadeSvg);
queueMicrotask(async () => { queueMicrotask(async () => {
@@ -520,8 +522,8 @@ export function card(app: App) {
</div> </div>
</div> </div>
{/* stats table */} {/* stats table */}
<div tw="text-white flex flex-col pt-[1.5em] pr-[3%] grow text-[.95em] justify-between"> <div tw="text-white flex flex-col pt-[2em] pr-[3%] grow text-[.95em] justify-between">
<div /> {/* justify spacer */} {/* <div /> justify spacer */}
{statRows.map((r, i) => ( {statRows.map((r, i) => (
<div tw="flex items-center whitespace-nowrap"> <div tw="flex items-center whitespace-nowrap">
<EnkaIcon <EnkaIcon
@@ -556,6 +558,29 @@ export function card(app: App) {
)} )}
</div> </div>
))} ))}
<div
tw="flex w-full pt-[.5em] gap-[.5em]"
style={{
textShadow:
"0 .08em .1em rgba(0,0,0,.4),0 .1em .3em rgba(0,0,0,.4)",
}}
>
<div tw="w-[2em] h-[2em] shrink-0 text-[1.15em] bg-[#00000030] flex justify-center items-center font-[shicon] leading-[2.3em] rounded-[.2em]">
</div>
<div tw="flex flex-col grow justify-center gap-[.1em]">
{artifactSets.map((s) => (
<div tw="flex text-[.9em]">
<div tw="grow flex justify-center items-center leading-none text-[#90ee90] whitespace-nowrap overflow-ellipsis overflow-hidden px-[.3em]">
{s.set}
</div>
<div tw="bg-[#00000030] rounded-[.2em] justify-center items-center w-[2em] ml-[.5em] shrink-0">
{s.count}
</div>
</div>
))}
</div>
</div>
</div> </div>
</div> </div>
{/* right section */} {/* right section */}
@@ -629,7 +654,10 @@ export function card(app: App) {
</div> </div>
</div>, </div>,
{ {
fonts: [await font.arrayBuffer()], fonts: [
await font.arrayBuffer(),
await iconFont.arrayBuffer(),
],
height, height,
persistentImages: [ persistentImages: [
{ data: await shade.arrayBuffer(), src: "shade" }, { data: await shade.arrayBuffer(), src: "shade" },