|
940 | 940 | profiles.filter((p: any) => p.isSystem && p.audioOnly).slice(0, 3), |
941 | 941 | ); |
942 | 942 | let customProfiles = $derived(profiles.filter((p: any) => !p.isSystem)); |
943 | | - let selectedIsVideoProfile = $derived(() => { |
944 | | - const profile = profiles.find((p: any) => p.id === selectedProfileId); |
945 | | - return profile && !profile.audioOnly; |
946 | | - }); |
947 | 943 | </script> |
948 | 944 |
|
949 | 945 | <div class="download-form"> |
|
1003 | 999 | <div class="profile-quick-select"> |
1004 | 1000 | <div class="profile-group"> |
1005 | 1001 | <span class="profile-group-label">Video + Audio</span> |
1006 | | - <p class="profile-help-text">Complete video with AAC audio</p> |
1007 | 1002 | <div class="profile-buttons"> |
1008 | 1003 | {#each videoProfiles as profile} |
1009 | 1004 | <button |
|
1018 | 1013 | </button> |
1019 | 1014 | {/each} |
1020 | 1015 | </div> |
| 1016 | + <div class="audio-quality-row"> |
| 1017 | + <span class="audio-quality-label">Audio Quality</span> |
| 1018 | + <select bind:value={audioQuality} disabled={loading} class="audio-quality-select"> |
| 1019 | + <option value="0">High</option> |
| 1020 | + <option value="5">Medium</option> |
| 1021 | + <option value="9">Low</option> |
| 1022 | + </select> |
| 1023 | + </div> |
1021 | 1024 | </div> |
1022 | 1025 |
|
1023 | 1026 | <div class="profile-group"> |
1024 | 1027 | <span class="profile-group-label">Audio Only</span> |
1025 | | - <p class="profile-help-text">Extract audio in MP3, FLAC, or AAC</p> |
1026 | 1028 | <div class="profile-buttons"> |
1027 | 1029 | {#each audioProfiles as profile} |
1028 | 1030 | <button |
|
1071 | 1073 | </div> |
1072 | 1074 | </div> |
1073 | 1075 |
|
1074 | | - {#if selectedIsVideoProfile()} |
1075 | | - <div class="profile-group"> |
1076 | | - <span class="profile-group-label">Audio Quality</span> |
1077 | | - <div class="audio-quality-select"> |
1078 | | - <select bind:value={audioQuality} disabled={loading}> |
1079 | | - <option value="0">High</option> |
1080 | | - <option value="5">Medium</option> |
1081 | | - <option value="9">Low</option> |
1082 | | - </select> |
1083 | | - </div> |
1084 | | - </div> |
1085 | | - {/if} |
1086 | 1076 | </div> |
1087 | 1077 | {:else if customProfiles.length > 0} |
1088 | 1078 | <div class="profile-quick-select"> |
|
1438 | 1428 | letter-spacing: 0.05em; |
1439 | 1429 | } |
1440 | 1430 |
|
1441 | | - .profile-help-text { |
1442 | | - font-size: 0.75rem; |
1443 | | - color: var(--text-tertiary); |
1444 | | - margin-top: 2px; |
1445 | | - margin-bottom: var(--spacing-xs); |
1446 | | - line-height: 1.3; |
1447 | | - } |
1448 | | -
|
1449 | 1431 | .profile-buttons { |
1450 | 1432 | display: flex; |
1451 | 1433 | gap: var(--spacing-sm); |
|
1515 | 1497 | color: var(--text-primary); |
1516 | 1498 | } |
1517 | 1499 |
|
1518 | | - .audio-quality-select select { |
| 1500 | + .audio-quality-row { |
| 1501 | + display: flex; |
| 1502 | + align-items: center; |
| 1503 | + gap: var(--spacing-sm); |
| 1504 | + margin-top: var(--spacing-sm); |
| 1505 | + } |
| 1506 | +
|
| 1507 | + .audio-quality-label { |
| 1508 | + font-size: 0.75rem; |
| 1509 | + color: var(--text-tertiary); |
| 1510 | + font-weight: 500; |
| 1511 | + } |
| 1512 | +
|
| 1513 | + .audio-quality-select { |
| 1514 | + flex: 1; |
1519 | 1515 | padding: var(--spacing-sm) var(--spacing-md); |
1520 | 1516 | background: var(--bg-tertiary); |
1521 | 1517 | border: 1px solid var(--border); |
|
1526 | 1522 | transition: all var(--transition-fast); |
1527 | 1523 | } |
1528 | 1524 |
|
1529 | | - .audio-quality-select select:focus { |
| 1525 | + .audio-quality-select:focus { |
1530 | 1526 | outline: none; |
1531 | 1527 | border-color: var(--accent-primary); |
1532 | 1528 | } |
|
0 commit comments