fix build commit

This commit is contained in:
2026-03-06 14:14:05 -05:00
parent 04b9793773
commit 98f0a68110
5 changed files with 6 additions and 95 deletions

View File

@@ -1,90 +0,0 @@
<template>
<aside class="w-64 flex-shrink-0">
<div class="sticky top-20 bg-gray-800 rounded-xl border border-gray-700 p-4 space-y-5">
<h2 class="text-sm font-semibold text-gray-300 uppercase tracking-wider">Filters</h2>
<CityFilter :city="filters.city" @change="$emit('set-city', $event)" />
<div>
<label class="block text-xs font-medium text-gray-400 mb-1">Quality</label>
<select
class="w-full bg-gray-900 border border-gray-600 rounded-lg px-3 py-2 text-sm text-gray-200 focus:outline-none focus:border-amber-500"
:value="filters.quality"
@change="$emit('set-quality', Number(($event.target as HTMLSelectElement).value) as AlbionQuality)"
>
<option v-for="q in QUALITIES" :key="q.value" :value="q.value">{{ q.label }}</option>
</select>
</div>
<CategoryFilter :categories="filters.categories" @toggle="$emit('toggle-category', $event)" />
<TierFilter :tiers="filters.tiers" @toggle="$emit('toggle-tier', $event)" />
<TaxInput :tax-rate="filters.taxRate" @change="$emit('set-tax-rate', $event)" />
<div>
<label class="block text-xs font-medium text-gray-400 mb-1">Min Profit (silver)</label>
<input
type="number"
class="w-full bg-gray-900 border border-gray-600 rounded-lg px-3 py-2 text-sm text-gray-200 focus:outline-none focus:border-amber-500"
:value="filters.minProfit"
@input="$emit('set-min-profit', Number(($event.target as HTMLInputElement).value))"
min="0"
step="1000"
/>
</div>
<div class="space-y-2">
<label class="flex items-center gap-2 cursor-pointer select-none">
<input
type="checkbox"
class="w-4 h-4 rounded accent-amber-500"
:checked="filters.hideStale"
@change="$emit('set-hide-stale', ($event.target as HTMLInputElement).checked)"
/>
<span class="text-xs text-gray-300">Hide stale prices</span>
</label>
<label class="flex items-center gap-2 cursor-pointer select-none">
<input
type="checkbox"
class="w-4 h-4 rounded accent-amber-500"
:checked="filters.hideMissing"
@change="$emit('set-hide-missing', ($event.target as HTMLInputElement).checked)"
/>
<span class="text-xs text-gray-300">Hide missing prices</span>
</label>
</div>
<div class="pt-1 border-t border-gray-700 text-xs text-gray-500">
{{ resultCount }} results shown
</div>
</div>
</aside>
</template>
<script setup lang="ts">
import CityFilter from './CityFilter.vue'
import CategoryFilter from './CategoryFilter.vue'
import TierFilter from './TierFilter.vue'
import TaxInput from './TaxInput.vue'
import type { FilterState } from '../../types/filters'
import type { AlbionCity, AlbionQuality } from '../../types/api'
import type { Tier, ItemCategory } from '../../types/crafting'
import { QUALITIES } from '../../data/constants'
defineProps<{
filters: FilterState
resultCount: number
}>()
defineEmits<{
'set-city': [city: AlbionCity]
'set-quality': [quality: AlbionQuality]
'toggle-tier': [tier: Tier]
'toggle-category': [category: ItemCategory]
'set-tax-rate': [rate: number]
'set-min-profit': [value: number]
'set-hide-stale': [value: boolean]
'set-hide-missing': [value: boolean]
}>()
</script>

View File

@@ -29,6 +29,8 @@ defineEmits<{
function tierActiveClass(tier: Tier): string { function tierActiveClass(tier: Tier): string {
const classes: Record<Tier, string> = { const classes: Record<Tier, string> = {
2: 'bg-stone-600 border-stone-500 text-white',
3: 'bg-stone-500 border-stone-400 text-white',
4: 'bg-blue-600 border-blue-500 text-white', 4: 'bg-blue-600 border-blue-500 text-white',
5: 'bg-green-600 border-green-500 text-white', 5: 'bg-green-600 border-green-500 text-white',
6: 'bg-yellow-600 border-yellow-500 text-white', 6: 'bg-yellow-600 border-yellow-500 text-white',

View File

@@ -281,7 +281,7 @@ const STATION: Record<JournalType, { label: string; cls: string }> = {
toolmaker: { label: 'Toolmaker', cls: 'bg-orange-900/30 border border-orange-700/40 text-orange-400' }, toolmaker: { label: 'Toolmaker', cls: 'bg-orange-900/30 border border-orange-700/40 text-orange-400' },
} }
const VARIANT_INFO: Record<string, { label: string; cls: string }> = { const VARIANT_INFO = {
avalon: { label: 'Avalon', cls: 'bg-violet-600/30 text-violet-300 border border-violet-600/40' }, avalon: { label: 'Avalon', cls: 'bg-violet-600/30 text-violet-300 border border-violet-600/40' },
crystal: { label: 'Crystal', cls: 'bg-cyan-600/30 text-cyan-300 border border-cyan-600/40' }, crystal: { label: 'Crystal', cls: 'bg-cyan-600/30 text-cyan-300 border border-cyan-600/40' },
artifact: { label: 'Artifact', cls: 'bg-amber-600/30 text-amber-300 border border-amber-600/40' }, artifact: { label: 'Artifact', cls: 'bg-amber-600/30 text-amber-300 border border-amber-600/40' },
@@ -380,7 +380,7 @@ function startEdit(itemId: string, current: number) {
function saveEdit(itemId: string) { function saveEdit(itemId: string) {
const v = Math.ceil(Number(inputValue.value)) const v = Math.ceil(Number(inputValue.value))
if (!inputValue.value && inputValue.value !== 0) { if (!inputValue.value) {
clearManualPrice(itemId, filters.value.city) clearManualPrice(itemId, filters.value.city)
} else if (v > 0) { } else if (v > 0) {
setManualPrice(itemId, filters.value.city, v) setManualPrice(itemId, filters.value.city, v)

View File

@@ -70,9 +70,8 @@ import { ref, computed } from 'vue'
import { tierStyle, itemImageUrl } from '../utils/formatting' import { tierStyle, itemImageUrl } from '../utils/formatting'
import PriceCell from '../components/PriceCell.vue' import PriceCell from '../components/PriceCell.vue'
import { ENCHANTMENTS } from '../data/constants' import { ENCHANTMENTS } from '../data/constants'
import type { Enchantment } from '../types/crafting'
function enchantedId(baseId: string, enchant: Enchantment): string { function enchantedId(baseId: string, enchant: number): string {
return enchant === 0 ? baseId : `${baseId}_LEVEL${enchant}` return enchant === 0 ? baseId : `${baseId}_LEVEL${enchant}`
} }

View File

@@ -219,7 +219,7 @@ export function enchantTextStyle(enc: number): { color: string } {
return { color: map[enc] ?? '#9ca3af' } return { color: map[enc] ?? '#9ca3af' }
} }
export function tierEnchantStyle(tier: number, enchantment: number): object { export function tierEnchantStyle(tier: number, enchantment: number): Record<string, string> {
const base = tierStyle(tier) const base = tierStyle(tier)
if (enchantment === 0) return base if (enchantment === 0) return base
return { return {