diff --git a/src/lib/components/artifact/ArtifactEditPane.svelte b/src/lib/components/artifact/ArtifactEditPane.svelte index 8c9462a6..120bd35c 100644 --- a/src/lib/components/artifact/ArtifactEditPane.svelte +++ b/src/lib/components/artifact/ArtifactEditPane.svelte @@ -10,10 +10,11 @@ import { isQuirkArtifact, getSkillGroupForSlot } from '$lib/types/api/artifact' import { createQuery } from '@tanstack/svelte-query' import { artifactQueries } from '$lib/api/queries/artifact.queries' - import { usePaneStack, type PaneConfig } from '$lib/stores/paneStack.svelte' + import { usePaneStack, type PaneConfig, type ElementType } from '$lib/stores/paneStack.svelte' import DetailsSection from '$lib/components/sidebar/details/DetailsSection.svelte' import DetailRow from '$lib/components/sidebar/details/DetailRow.svelte' import Select from '$lib/components/ui/Select.svelte' + import Slider from '$lib/components/ui/Slider.svelte' import ArtifactSkillRow from './ArtifactSkillRow.svelte' import ArtifactModifierList from './ArtifactModifierList.svelte' import ArtifactGradeDisplay from './ArtifactGradeDisplay.svelte' @@ -64,6 +65,17 @@ { value: 6, label: 'Light', color: '#e8d633' } ] + // Convert numeric element to ElementType string + const elementTypeMap: Record = { + 1: 'wind', + 2: 'fire', + 3: 'water', + 4: 'earth', + 5: 'dark', + 6: 'light' + } + const elementType = $derived(elementTypeMap[element] ?? undefined) + // Level options (1-5 for standard, fixed at 1 for quirk) const levelOptions = $derived( isQuirk @@ -189,25 +201,6 @@
- - {#if disabled} - {@const elementOption = elementOptions.find((o) => o.value === element)} - - - {elementOption?.label ?? '—'} - - {:else} - + {/if} + + {#if disabled || isQuirk} {level} {:else} - v !== undefined && (level = v)} - size="small" - contained - /> + {#if isQuirk} + 1 + {:else} +
+ (level = v)} + min={1} + max={5} + step={1} + element={elementType} + /> + {level} +
+ {/if}
@@ -395,6 +404,20 @@ color: colors.$error; } + .level-slider { + display: flex; + align-items: center; + gap: spacing.$unit; + flex: 1; + + .level-value { + font-size: typography.$font-regular; + font-weight: typography.$medium; + min-width: spacing.$unit-2x; + text-align: center; + } + } + .skills-list { display: flex; flex-direction: column; diff --git a/src/lib/components/ui/Slider.svelte b/src/lib/components/ui/Slider.svelte new file mode 100644 index 00000000..8c7dae6b --- /dev/null +++ b/src/lib/components/ui/Slider.svelte @@ -0,0 +1,155 @@ + + + + + + + + + +