From 127c55ec9389903bdd122ae86eb5f26c15e91415 Mon Sep 17 00:00:00 2001 From: tresabhi <43380238+tresabhi@users.noreply.github.com> Date: Sun, 27 Sep 2026 17:04:15 -0500 Subject: [PATCH] migrate to soapstone --- .agents/skills/repo-boundaries/SKILL.md | 13 ++ .../skills/repo-boundaries/agents/openai.yaml | 3 + README.md | 1 - bun.lock | 21 ++- packages/varuna/package.json | 11 -- packages/varuna/src/index.ts | 125 ------------------ packages/varuna/tsconfig.json | 3 - packages/website/package.json | 2 +- packages/website/src/stores/app/index.ts | 4 +- .../website/src/stores/compareEphemeral.ts | 6 +- .../website/src/stores/comparePersistent.ts | 4 +- packages/website/src/stores/embedBreakdown.ts | 4 +- .../website/src/stores/embedState/index.ts | 4 +- packages/website/src/stores/gallery.ts | 4 +- packages/website/src/stores/guess.ts | 4 +- packages/website/src/stores/mixer.ts | 4 +- packages/website/src/stores/performance.ts | 4 +- packages/website/src/stores/playlist.ts | 4 +- packages/website/src/stores/session.ts | 4 +- packages/website/src/stores/tankFilters.ts | 4 +- .../src/stores/tankPerformanceSort/index.ts | 4 +- packages/website/src/stores/tankopedia.ts | 4 +- .../src/stores/tankopediaPersistent/index.ts | 4 +- packages/website/src/stores/tankopediaSort.ts | 4 +- packages/website/src/stores/tierList.ts | 4 +- 25 files changed, 61 insertions(+), 188 deletions(-) create mode 100644 .agents/skills/repo-boundaries/SKILL.md create mode 100644 .agents/skills/repo-boundaries/agents/openai.yaml delete mode 100644 packages/varuna/package.json delete mode 100644 packages/varuna/src/index.ts delete mode 100644 packages/varuna/tsconfig.json diff --git a/.agents/skills/repo-boundaries/SKILL.md b/.agents/skills/repo-boundaries/SKILL.md new file mode 100644 index 000000000..ca2a2ce6d --- /dev/null +++ b/.agents/skills/repo-boundaries/SKILL.md @@ -0,0 +1,13 @@ +--- +name: repo-boundaries +description: Apply the user's persistent repository boundaries whenever working in their projects. +--- + +# Repo Boundaries + +Apply these boundaries to all work in the user's repositories: + +- Never run any Git command or invoke Git through a shell, script, or tool. This includes read-only commands such as status, diff, and log. Use ordinary file inspection and editing tools instead. +- Never edit `bun.lock`, including regenerating or formatting it. When dependency manifests change, leave the lockfile alone; the user will update it by running `bun install`. + +These are firm constraints, not preferences to revisit for a task. Continue useful work within them and explain any limitation if a requested result would require crossing either boundary. diff --git a/.agents/skills/repo-boundaries/agents/openai.yaml b/.agents/skills/repo-boundaries/agents/openai.yaml new file mode 100644 index 000000000..37b4d88ef --- /dev/null +++ b/.agents/skills/repo-boundaries/agents/openai.yaml @@ -0,0 +1,3 @@ +interface: + display_name: "Repo Boundaries" + short_description: "Respect repository editing boundaries" diff --git a/README.md b/README.md index da6ce8ef5..1c9982d1f 100644 --- a/README.md +++ b/README.md @@ -13,7 +13,6 @@ If you intend to contribute to the code, note that you may need to check out sen | [packages/core](packages/core) | | | Mutual internal code shared between all other packages. | | [packages/i18n](packages/i18n) | | [Crowdin](https://crowdin.com/project/blitzkrieg) | Translations served as JSON shared across all other packages, including some utility code. | | [packages/scripts](packages/scripts) | | | CLI utilities for the development and deployment of BlitzKit services. | -| [packages/varuna](packages/varuna) | Varuna | [NPM](https://www.npmjs.com/package/varuna) | React and Astro-oriented state management library, awaiting separation from BlitzKit. Unavailable from NPM at this time. | | [packages/website](packages/website) | BlitzKit | https://blitzkit.app | The BlitzKit website provides a wide range of tools, APIs, and interconnects all other services. | ## Submodules diff --git a/bun.lock b/bun.lock index 2d40f8548..29b59fc3d 100644 --- a/bun.lock +++ b/bun.lock @@ -93,15 +93,6 @@ "yaml": "^2.8.1", }, }, - "packages/varuna": { - "name": "varuna", - "dependencies": { - "@types/lodash-es": "^4.17.12", - "immer": "^10.1.3", - "lodash-es": "^4.17.21", - "react": "^19.1.1", - }, - }, "packages/website": { "name": "@blitzkit/website", "dependencies": { @@ -141,12 +132,12 @@ "react-dom": "^19.2.4", "react-error-boundary": "^6.1.3", "react-promise-suspense": "^0.3.4", + "soapstone": "^1.0.0", "three": "^0.180.0", "three-stdlib": "^2.36.0", "transliteration": "^2.6.1", "typescript": "^5.9.3", "urlon": "^3.1.0", - "varuna": "workspace:*", "vite": "^7.1.9", }, }, @@ -2162,6 +2153,8 @@ "smol-toml": ["smol-toml@1.4.2", "", {}, "sha512-rInDH6lCNiEyn3+hH8KVGFdbjc099j47+OSgbMrfDYX1CmXLfdKd7qi6IfcWj2wFxvSVkuI46M+wPGYfEOEj6g=="], + "soapstone": ["soapstone@1.0.0", "", { "dependencies": { "immer": "^11.1.8", "lodash-es": "^4.18.1", "react": "^19.2.7" }, "peerDependencies": { "typescript": "^5" } }, "sha512-Jlf8aCY9aCvgQR3y/aGhkXyC7vAox05J+dply+0wm567UIOYlCiwSR1MhAkZIRIXtOnoUERBrVz4mDYBrQYBDA=="], + "socks": ["socks@2.8.7", "", { "dependencies": { "ip-address": "^10.0.1", "smart-buffer": "^4.2.0" } }, "sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A=="], "socks-proxy-agent": ["socks-proxy-agent@7.0.0", "", { "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", "socks": "^2.6.2" } }, "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww=="], @@ -2392,8 +2385,6 @@ "uzip-module": ["uzip-module@1.0.3", "", {}, "sha512-AMqwWZaknLM77G+VPYNZLEruMGWGzyigPK3/Whg99B3S6vGHuqsyl5ZrOv1UUF3paGK1U6PM0cnayioaryg/fA=="], - "varuna": ["varuna@workspace:packages/varuna"], - "vfile": ["vfile@6.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile-message": "^4.0.0" } }, "sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q=="], "vfile-location": ["vfile-location@5.0.3", "", { "dependencies": { "@types/unist": "^3.0.0", "vfile": "^6.0.0" } }, "sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg=="], @@ -2692,6 +2683,12 @@ "simple-swizzle/is-arrayish": ["is-arrayish@0.3.4", "", {}, "sha512-m6UrgzFVUYawGBh1dUsWR5M2Clqic9RVXC/9f8ceNlv2IcO9j9J/z8UoCLPqtsPBFNzEpfR3xftohbfqDx8EQA=="], + "soapstone/immer": ["immer@11.1.18", "", {}, "sha512-EQyQtLiYW029lyoczMl/Hh4Xu7cDecSc58JRYpHyL4tIAu3eqd1yJzQX04d2BZHDkzFFvm6qJEJWOtfDSWAXbQ=="], + + "soapstone/lodash-es": ["lodash-es@4.18.1", "", {}, "sha512-J8xewKD/Gk22OZbhpOVSwcs60zhd95ESDwezOFuA3/099925PdHJ7OFHNTGtajL3AlZkykD32HykiMo+BIBI8A=="], + + "soapstone/react": ["react@19.3.0", "", {}, "sha512-E8LUcbtBWt20bbl2YoHfx4ZDBdxVTfOKtCZn9cDSJ4l6/nuoApcpIBcj47t2wZoVX8g2ZHuMHbiShgCR1T5Sog=="], + "source-map-support/source-map": ["source-map@0.6.1", "", {}, "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g=="], "stats-gl/three": ["three@0.170.0", "", {}, "sha512-FQK+LEpYc0fBD+J8g6oSEyyNzjp+Q7Ks1C568WWaoMRLW+TkNNWmenWeGgJjV105Gd+p/2ql1ZcjYvNiPZBhuQ=="], diff --git a/packages/varuna/package.json b/packages/varuna/package.json deleted file mode 100644 index 61c334de6..000000000 --- a/packages/varuna/package.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "name": "varuna", - "type": "module", - "main": "src/index.ts", - "dependencies": { - "@types/lodash-es": "^4.17.12", - "immer": "^10.1.3", - "lodash-es": "^4.17.21", - "react": "^19.1.1" - } -} diff --git a/packages/varuna/src/index.ts b/packages/varuna/src/index.ts deleted file mode 100644 index 3cde9a71a..000000000 --- a/packages/varuna/src/index.ts +++ /dev/null @@ -1,125 +0,0 @@ -import { produce } from "immer"; -import { debounce, merge } from "lodash-es"; -import { useEffect, useRef, useState } from "react"; - -export class Varuna { - private listeners = new Set<(state: Type) => void>(); - - private initialized = false; - private _initial?: Type; - private _state?: Type; - - constructor( - private creator: Type | ((...args: Arguments[]) => Type), - private persistence?: string - ) { - if (typeof creator !== "function") this.initialize(creator); - } - - private initialize(initial: Type) { - let data = initial; - - if (this.persistence && typeof localStorage !== "undefined") { - const dehydrated = localStorage.getItem(this.persistence); - - if (dehydrated) { - const rehydrated = JSON.parse(dehydrated) as unknown; - data = merge(data, rehydrated); - } - - window.addEventListener("beforeunload", this.store.bind(this)); - } - - this.initialized = true; - this._initial = data; - this._state = data; - } - - useInitialization(...args: Arguments[]) { - const initializedThisMount = useRef(false); - - if (initializedThisMount.current) return; - - if (typeof this.creator !== "function") { - throw new Error("Provider must be used with a function creator"); - } - - this.initialize((this.creator as (...args: Arguments[]) => Type)(...args)); - initializedThisMount.current = true; - } - - private dispatch() { - const state = this.state; - this.listeners.forEach((callback) => callback(state)); - } - - on(slicer: (state: Type) => Slice, callback: (state: Slice) => void) { - let last = slicer(this.state); - - function listener(state: Type) { - const next = slicer(state); - - if (next !== last) { - callback(next); - last = next; - } - } - - this.listeners.add(listener); - - return () => { - this.listeners.delete(listener); - }; - } - - mutate(mutator: (state: Type) => void) { - this.set(produce(this.state, mutator)); - } - - private assertInitialized() { - if (!this.initialized) { - throw new Error("Varuna store used before initialization"); - } - } - - get state() { - this.assertInitialized(); - return this._state as Type; - } - - set(state: Type) { - this.assertInitialized(); - this._state = state; - this.dispatch(); - this.storeDeferred(); - } - - get initial() { - this.assertInitialized(); - return this._initial as Type; - } - - use( - slicer: (state: Type) => Slice = (state) => state as unknown as Slice - ) { - return this.useDeferred(slicer, slicer(this.state)); - } - - useDeferred(slicer: (state: Type) => Slice, initial: Slice) { - const instance = this; - const [slice, setSlice] = useState(initial); - - useEffect(() => { - setSlice(slicer(instance.state)); - return instance.on(slicer, setSlice); - }, []); - - return slice; - } - - store() { - localStorage.setItem(this.persistence!, JSON.stringify(this.state)); - } - - storeDeferred = debounce(this.store.bind(this), 500); -} diff --git a/packages/varuna/tsconfig.json b/packages/varuna/tsconfig.json deleted file mode 100644 index 4082f16a5..000000000 --- a/packages/varuna/tsconfig.json +++ /dev/null @@ -1,3 +0,0 @@ -{ - "extends": "../../tsconfig.json" -} diff --git a/packages/website/package.json b/packages/website/package.json index 35bb2418e..aefefa988 100644 --- a/packages/website/package.json +++ b/packages/website/package.json @@ -45,12 +45,12 @@ "react-dom": "^19.2.4", "react-error-boundary": "^6.1.3", "react-promise-suspense": "^0.3.4", + "soapstone": "^1.0.0", "three": "^0.180.0", "three-stdlib": "^2.36.0", "transliteration": "^2.6.1", "typescript": "^5.9.3", "urlon": "^3.1.0", - "varuna": "workspace:*", "vite": "^7.1.9" } } diff --git a/packages/website/src/stores/app/index.ts b/packages/website/src/stores/app/index.ts index 6b15394f2..82a57ec99 100644 --- a/packages/website/src/stores/app/index.ts +++ b/packages/website/src/stores/app/index.ts @@ -1,4 +1,4 @@ -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; export interface WargamingLogin { token: string; @@ -14,7 +14,7 @@ export interface App { }; } -export const App = new Varuna( +export const App = new Soapstone( { developerMode: false, policiesAgreementIndex: -1, diff --git a/packages/website/src/stores/compareEphemeral.ts b/packages/website/src/stores/compareEphemeral.ts index 2c5a2a6e3..42b8f223a 100644 --- a/packages/website/src/stores/compareEphemeral.ts +++ b/packages/website/src/stores/compareEphemeral.ts @@ -1,4 +1,4 @@ -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; import type { DuelMember } from "./duel"; export interface CompareMember extends DuelMember { @@ -15,9 +15,9 @@ export interface CompareEphemeral { }; } -export const CompareEphemeral = new Varuna< +export const CompareEphemeral = new Soapstone< CompareEphemeral, - Record + [Record] >((crewSkills) => ({ crewSkills, equalize: false, diff --git a/packages/website/src/stores/comparePersistent.ts b/packages/website/src/stores/comparePersistent.ts index 3f6b0db96..6fa4d6d8f 100644 --- a/packages/website/src/stores/comparePersistent.ts +++ b/packages/website/src/stores/comparePersistent.ts @@ -1,4 +1,4 @@ -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; export type DeltaMode = "none" | "percentage" | "absolute"; @@ -6,7 +6,7 @@ export interface ComparePersistent { deltaMode: DeltaMode; } -export const ComparePersistent = new Varuna( +export const ComparePersistent = new Soapstone( { deltaMode: "none" }, "compare-2" ); diff --git a/packages/website/src/stores/embedBreakdown.ts b/packages/website/src/stores/embedBreakdown.ts index ecdb13481..7336c43ac 100644 --- a/packages/website/src/stores/embedBreakdown.ts +++ b/packages/website/src/stores/embedBreakdown.ts @@ -1,9 +1,9 @@ import { type IndividualTankStats } from "@blitzkit/core"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; type EmbedBreakdown = Record; -export const EmbedBreakdown = new Varuna( +export const EmbedBreakdown = new Soapstone( {}, "embed-breakdown-2" ); diff --git a/packages/website/src/stores/embedState/index.ts b/packages/website/src/stores/embedState/index.ts index 04abd855c..60ab337a6 100644 --- a/packages/website/src/stores/embedState/index.ts +++ b/packages/website/src/stores/embedState/index.ts @@ -1,5 +1,5 @@ import * as radixColors from "@radix-ui/colors"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; import { type EmbedConfigItemType, EmbedItemType, @@ -103,6 +103,6 @@ export type EmbedConfigItem = ( export type EmbedStateStore = Record; -export const EmbedState = new Varuna( +export const EmbedState = new Soapstone( (data) => data ); diff --git a/packages/website/src/stores/gallery.ts b/packages/website/src/stores/gallery.ts index 238431771..d7a1db872 100644 --- a/packages/website/src/stores/gallery.ts +++ b/packages/website/src/stores/gallery.ts @@ -1,7 +1,7 @@ -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; interface Gallery { search?: string; } -export const Gallery = new Varuna({}); +export const Gallery = new Soapstone({}); diff --git a/packages/website/src/stores/guess.ts b/packages/website/src/stores/guess.ts index 0a3e94f49..0d91fa0fd 100644 --- a/packages/website/src/stores/guess.ts +++ b/packages/website/src/stores/guess.ts @@ -1,6 +1,6 @@ import type { TankDefinition } from "@blitzkit/core"; import { times } from "lodash-es"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; export enum GuessState { Correct, @@ -18,7 +18,7 @@ export interface Guess { tiers: number[]; } -export const Guess = new Varuna((tank) => ({ +export const Guess = new Soapstone((tank) => ({ tank, guessState: GuessState.NotGuessed, totalGuesses: 0, diff --git a/packages/website/src/stores/mixer.ts b/packages/website/src/stores/mixer.ts index 9669268c1..a7d20c4d0 100644 --- a/packages/website/src/stores/mixer.ts +++ b/packages/website/src/stores/mixer.ts @@ -3,7 +3,7 @@ import type { TankDefinition, TurretDefinition, } from "@blitzkit/core"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; export interface Mixer { hull: TankDefinition; @@ -18,4 +18,4 @@ export interface Mixer { }; } -export const Mixer = new Varuna((data) => data); +export const Mixer = new Soapstone((data) => data); diff --git a/packages/website/src/stores/performance.ts b/packages/website/src/stores/performance.ts index ef1f81841..628d6ba58 100644 --- a/packages/website/src/stores/performance.ts +++ b/packages/website/src/stores/performance.ts @@ -1,5 +1,5 @@ import type { Samples } from "@blitzkit/core"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; export interface Performance { playerCountPeriod: PlayerCountPeriod; @@ -7,6 +7,6 @@ export interface Performance { export type PlayerCountPeriod = keyof Samples; -export const Performance = new Varuna({ +export const Performance = new Soapstone({ playerCountPeriod: "total", }); diff --git a/packages/website/src/stores/playlist.ts b/packages/website/src/stores/playlist.ts index f2f2ba132..b5d42bc5a 100644 --- a/packages/website/src/stores/playlist.ts +++ b/packages/website/src/stores/playlist.ts @@ -1,4 +1,4 @@ -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; export interface PlaylistEntry { id: number; @@ -11,4 +11,4 @@ export interface Playlist { list?: PlaylistEntry[]; } -export const Playlist = new Varuna({}, "playlist"); +export const Playlist = new Soapstone({}, "playlist"); diff --git a/packages/website/src/stores/session.ts b/packages/website/src/stores/session.ts index f51ced8f7..860eb500c 100644 --- a/packages/website/src/stores/session.ts +++ b/packages/website/src/stores/session.ts @@ -3,7 +3,7 @@ import type { IndividualTankStats, Region, } from "@blitzkit/core"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; interface SessionBase { columns: CompositeStatsKey[]; @@ -25,7 +25,7 @@ interface SessionNotTracking extends SessionBase { type Session = SessionTracking | SessionNotTracking; -export const Session = new Varuna( +export const Session = new Soapstone( { columns: [ "cumulative_battles", diff --git a/packages/website/src/stores/tankFilters.ts b/packages/website/src/stores/tankFilters.ts index 296592a03..ab6033cda 100644 --- a/packages/website/src/stores/tankFilters.ts +++ b/packages/website/src/stores/tankFilters.ts @@ -5,7 +5,7 @@ import type { TankClass, TankType, } from "@blitzkit/protos"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; export interface TankFilters { tiers: number[]; @@ -26,7 +26,7 @@ export interface TankFilters { showUnowned: boolean; } -export const TankFilters = new Varuna({ +export const TankFilters = new Soapstone({ tiers: [], nations: [], classes: [], diff --git a/packages/website/src/stores/tankPerformanceSort/index.ts b/packages/website/src/stores/tankPerformanceSort/index.ts index 3e9006d06..ebb5f14c6 100644 --- a/packages/website/src/stores/tankPerformanceSort/index.ts +++ b/packages/website/src/stores/tankPerformanceSort/index.ts @@ -1,5 +1,5 @@ import type en from "@blitzkit/i18n/strings/en.json"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; export type TankPerformanceSortType = keyof typeof en.website.tools.performance.table.stats; @@ -9,7 +9,7 @@ export interface TankPerformanceSort { direction: -1 | 1; } -export const TankPerformanceSort = new Varuna({ +export const TankPerformanceSort = new Soapstone({ type: "winrate", direction: -1, }); diff --git a/packages/website/src/stores/tankopedia.ts b/packages/website/src/stores/tankopedia.ts index b441fc0b9..f244c371a 100644 --- a/packages/website/src/stores/tankopedia.ts +++ b/packages/website/src/stores/tankopedia.ts @@ -5,7 +5,7 @@ import type { TankDefinition, } from "@blitzkit/protos"; import type { Vector3 } from "three"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; import { api } from "../api/dynamic"; import type { ArmorType } from "../components/SpacedArmorScene"; import type { ExternalModuleVariant } from "../components/SpacedArmorSceneComponent"; @@ -117,7 +117,7 @@ interface Tankopedia { const skills = await api.skills(); const models = await api.models(); -export const Tankopedia = new Varuna((tank) => ({ +export const Tankopedia = new Soapstone((tank) => ({ disturbed: false, revealed: false, diff --git a/packages/website/src/stores/tankopediaPersistent/index.ts b/packages/website/src/stores/tankopediaPersistent/index.ts index bf4a618e1..62ea18a73 100644 --- a/packages/website/src/stores/tankopediaPersistent/index.ts +++ b/packages/website/src/stores/tankopediaPersistent/index.ts @@ -1,5 +1,5 @@ import type en from "@blitzkit/i18n/strings/en.json"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; export type TankopediaSortBy = keyof typeof en.website.common.tank_search.sort; export type TankopediaSortDirection = "ascending" | "descending"; @@ -23,7 +23,7 @@ export interface TankopediaPersistent { }; } -export const TankopediaPersistent = new Varuna( +export const TankopediaPersistent = new Soapstone( { hideTankModelUnderArmor: false, wireframe: false, diff --git a/packages/website/src/stores/tankopediaSort.ts b/packages/website/src/stores/tankopediaSort.ts index 45e3b169a..112eff789 100644 --- a/packages/website/src/stores/tankopediaSort.ts +++ b/packages/website/src/stores/tankopediaSort.ts @@ -1,4 +1,4 @@ -import { Varuna } from 'varuna'; +import { Soapstone } from 'soapstone'; import { type TankopediaSortBy, type TankopediaSortDirection, @@ -9,7 +9,7 @@ export interface TankSort { direction: TankopediaSortDirection; } -export const TankSort = new Varuna({ +export const TankSort = new Soapstone({ by: 'meta.none', direction: 'descending', }); diff --git a/packages/website/src/stores/tierList.ts b/packages/website/src/stores/tierList.ts index c82d009c4..8c323b5b8 100644 --- a/packages/website/src/stores/tierList.ts +++ b/packages/website/src/stores/tierList.ts @@ -1,5 +1,5 @@ import { enableMapSet } from "immer"; -import { Varuna } from "varuna"; +import { Soapstone } from "soapstone"; import { tierListRows } from "../components/TierList/Table/constants"; export interface TierList { @@ -8,7 +8,7 @@ export interface TierList { placedTanks: Set; } -export const TierList = new Varuna({ +export const TierList = new Soapstone({ dragging: false, rows: tierListRows.map((row) => ({ name: row.name, tanks: [] })), placedTanks: new Set(),