diff --git a/public/rse/character/0.webp b/public/rse/character/0.webp new file mode 100644 index 0000000..d6780d1 Binary files /dev/null and b/public/rse/character/0.webp differ diff --git a/public/rse/character/1.webp b/public/rse/character/1.webp new file mode 100644 index 0000000..5e3779d Binary files /dev/null and b/public/rse/character/1.webp differ diff --git a/public/rse/character/2.webp b/public/rse/character/2.webp new file mode 100644 index 0000000..ae74088 Binary files /dev/null and b/public/rse/character/2.webp differ diff --git a/public/rse/character/3.webp b/public/rse/character/3.webp new file mode 100644 index 0000000..6ba4d5f Binary files /dev/null and b/public/rse/character/3.webp differ diff --git a/public/rse/item/0.webp b/public/rse/item/0.webp new file mode 100644 index 0000000..749a39d Binary files /dev/null and b/public/rse/item/0.webp differ diff --git a/src/web/components/profile.ts b/src/web/components/profile.ts index a868d83..4bc52b0 100644 --- a/src/web/components/profile.ts +++ b/src/web/components/profile.ts @@ -38,6 +38,16 @@ export function getServiceLinks(handle: string, collections: string[], migration }) } + // RSE + if (collections.includes('ai.syui.rse.user')) { + services.push({ + name: 'RSE', + icon: '/service/ai.syui.rse.png', + url: `/@${handle}/at/rse`, + collection: 'ai.syui.rse.user' + }) + } + return services } diff --git a/src/web/components/rse.ts b/src/web/components/rse.ts new file mode 100644 index 0000000..c9f87e2 --- /dev/null +++ b/src/web/components/rse.ts @@ -0,0 +1,127 @@ +// RSE display component for ai.syui.rse.user collection + +export interface RseItem { + id: number + cp: number + mode: number + shiny: boolean + unique: boolean +} + +export interface RseCollection { + item: RseItem[] + character: RseItem[] + createdAt: string + updatedAt: string +} + +// Get rarity class from shiny/unique flags +function getRarityClass(item: RseItem): string { + if (item.unique) return 'unique' + if (item.shiny) return 'shiny' + return '' +} + +// Render single item/character +function renderRseItem(item: RseItem, type: 'item' | 'character'): string { + const rarityClass = getRarityClass(item) + const effectsHtml = rarityClass ? ` +
+ + ` : '' + + return ` +
+ No RSE data found for @${handle}
+