diff --git a/src/lib/components/party/edit/YouTubeUrlInput.svelte b/src/lib/components/party/edit/YouTubeUrlInput.svelte index 7301d3bc..aeff77fc 100644 --- a/src/lib/components/party/edit/YouTubeUrlInput.svelte +++ b/src/lib/components/party/edit/YouTubeUrlInput.svelte @@ -5,6 +5,7 @@ * Validates YouTube URLs and shows a thumbnail preview when valid. */ import { untrack } from 'svelte' + import Input from '$lib/components/ui/Input.svelte' interface Props { /** YouTube URL value */ @@ -96,9 +97,8 @@ }) }) - function handleInput(e: Event) { - const target = e.target as HTMLInputElement - inputValue = target.value + function handleInput() { + // inputValue is already updated via bind:value // Update bound value immediately if valid (so Save captures it) if (isValidYouTubeUrl(inputValue)) { const newValue = inputValue.trim() || null @@ -132,33 +132,20 @@
- {#if label} - - {/if} -
- - {#if inputValue && !disabled} - - {/if} -
- - {#if showError} -

Please enter a valid YouTube URL

- {/if} + {#if showPreview && thumbnailUrl}
@@ -194,99 +181,6 @@ gap: $unit; } - .input-label { - font-size: $font-small; - font-weight: $medium; - color: var(--text-secondary); - } - - .input-container { - display: flex; - align-items: center; - background-color: var(--input-bg); - border-radius: $input-corner; - padding: 0; - @include smooth-transition($duration-quick, background-color, outline); - - &:hover:not(.disabled) { - background-color: var(--input-bg-hover); - } - - &:focus-within:not(.disabled) { - outline: 2px solid $water-text-20; - outline-offset: -2px; - } - - &.error { - outline: 2px solid $fire-text-20; - outline-offset: -2px; - } - - &.disabled { - opacity: 0.5; - cursor: not-allowed; - } - - &.contained { - background-color: var(--input-bound-bg); - - &:hover:not(.disabled) { - background-color: var(--input-bound-bg-hover); - } - } - } - - .url-input { - flex: 1; - background: transparent; - border: none; - color: var(--text-primary); - font-size: $font-regular; - font-family: inherit; - padding: calc($unit * 1.75) $unit-2x; - outline: none; - - &::placeholder { - color: var(--text-tertiary); - } - - &:disabled { - cursor: not-allowed; - } - } - - .clear-button { - display: flex; - align-items: center; - justify-content: center; - width: 24px; - height: 24px; - margin-right: $unit; - padding: 0; - border: none; - background: transparent; - color: var(--text-secondary); - cursor: pointer; - border-radius: $unit-half; - @include smooth-transition($duration-quick, background-color, color); - - &:hover { - background-color: $grey-80; - color: var(--text-primary); - } - - svg { - width: 14px; - height: 14px; - } - } - - .error-message { - margin: 0; - font-size: $font-small; - color: $fire-text-20; - } - .preview-card { background-color: var(--input-bound-bg); border-radius: $page-corner; diff --git a/src/lib/components/sidebar/PartyEditSidebar.svelte b/src/lib/components/sidebar/PartyEditSidebar.svelte index 262ba12a..602c5f13 100644 --- a/src/lib/components/sidebar/PartyEditSidebar.svelte +++ b/src/lib/components/sidebar/PartyEditSidebar.svelte @@ -280,17 +280,51 @@
-
- - +
+

Details

+
+ + +
+ Raid + +
+
+
+ + + +
+ {#snippet children()} @@ -314,36 +348,7 @@ {/if} - - - - - {#snippet children()} - - {/snippet} - - +
+
+ {#snippet children()} @@ -392,11 +399,50 @@ padding-bottom: $unit-2x; } + .top-section { + display: flex; + flex-direction: column; + gap: $unit-2x; + padding: 0 $unit; + + h3 { + margin: 0; + font-size: $font-name; + font-weight: $medium; + color: var(--text-primary); + padding: 0 $unit; + } + } + .top-fields { display: flex; flex-direction: column; gap: $unit-2x; - padding: 0 $unit-2x; + padding: 0 $unit; + + // Override Input label styling to match DetailRow + :global(.label) { + color: var(--text-secondary) !important; + font-size: $font-regular !important; + font-weight: normal !important; + } + } + + .divider { + border: none; + border-top: 1px solid var(--border-color, rgba(255, 255, 255, 0.04)); + margin: 0; + } + + .raid-field { + display: flex; + flex-direction: column; + gap: $unit-half; + } + + .raid-label { + font-size: $font-regular; + color: var(--text-secondary); } .raid-select-button {