diff --git a/web/src/components/Placeholder/TileSpriteStrip.tsx b/web/src/components/Placeholder/TileSpriteStrip.tsx new file mode 100644 index 000000000..4d8e4238f --- /dev/null +++ b/web/src/components/Placeholder/TileSpriteStrip.tsx @@ -0,0 +1,67 @@ +import { cn } from "@/lib/utils"; +import type { TileSprite } from "./tileSprites"; + +interface TileSpriteStripProps { + sprite: TileSprite; + scale?: number; + className?: string; + testId?: string; +} + +const DEFAULT_SCALE = 2; + +const getAnimationName = (sprite: TileSprite, scale: number) => `tile-sprite-${sprite.name}-${scale}x`; + +const TileSpriteStrip = ({ sprite, scale = DEFAULT_SCALE, className, testId }: TileSpriteStripProps) => { + const stripWidth = sprite.frameWidth * sprite.frames; + const displayStripWidth = stripWidth * scale; + const displayStripHeight = sprite.frameHeight * scale; + const displayFrameWidth = sprite.frameWidth * scale; + const animationName = getAnimationName(sprite, scale); + + return ( + <> + +
+ > + ); +}; + +export default TileSpriteStrip; diff --git a/web/src/components/Placeholder/index.tsx b/web/src/components/Placeholder/index.tsx index 5c11483e6..a53623596 100644 --- a/web/src/components/Placeholder/index.tsx +++ b/web/src/components/Placeholder/index.tsx @@ -1,6 +1,7 @@ import { type ReactNode, useState } from "react"; import { cn } from "@/lib/utils"; import { DEFAULT_MESSAGES, type PlaceholderVariant } from "./messages"; +import TileSpriteStrip from "./TileSpriteStrip"; import { pickTileSprite } from "./tileSprites"; interface PlaceholderProps { @@ -10,17 +11,12 @@ interface PlaceholderProps { className?: string; } -const TILE_SIZE = 32; const DISPLAY_SCALE = 2; -const DISPLAY_SIZE = TILE_SIZE * DISPLAY_SCALE; const Placeholder = ({ variant, message, children, className }: PlaceholderProps) => { const [sprite] = useState(pickTileSprite); const resolvedMessage = message ?? DEFAULT_MESSAGES[variant]; const isLoading = variant === "loading"; - const stripWidth = sprite.frameWidth * sprite.frames; - const displayStripWidth = stripWidth * DISPLAY_SCALE; - const displayStripHeight = sprite.frameHeight * DISPLAY_SCALE; return ({resolvedMessage}
{children &&{meta.description}
+