feat(library): local lossless index, filters, and conserve dedicated page (#871)

* feat(library): local lossless index, filters, and conserve dedicated page

Add SQLite-backed lossless album browse and advanced-search filtering,
wire All Albums and artist/album lossless drill-down mode, and hide the
standalone /lossless-albums nav entry from sidebar visibility settings
(conserved route, default off).

* docs(release): note lossless local index in CHANGELOG and credits (PR #871)
This commit is contained in:
cucadmuh
2026-05-27 00:02:46 +03:00
committed by GitHub
parent 418b25914a
commit a8cfff0b62
65 changed files with 1615 additions and 138 deletions
+30
View File
@@ -0,0 +1,30 @@
import { Gem } from 'lucide-react';
import { useTranslation } from 'react-i18next';
interface Props {
active: boolean;
onChange: (next: boolean) => void;
}
export default function LosslessFilterButton({ active, onChange }: Props) {
const { t } = useTranslation();
const tooltip = active ? t('albums.losslessTooltipOn') : t('albums.losslessTooltipOff');
const activeStyle = active ? { background: 'var(--accent)', color: 'var(--ctp-crust)' } : {};
return (
<button
type="button"
className={`btn btn-surface${active ? ' btn-sort-active' : ''}`}
onClick={() => onChange(!active)}
aria-pressed={active}
data-tooltip={tooltip}
data-tooltip-pos="bottom"
style={{
display: 'flex', alignItems: 'center', gap: '0.4rem', ...activeStyle,
}}
>
<Gem size={14} />
{t('albums.losslessLabel')}
</button>
);
}