This commit is contained in:
Andras Schmelczer 2026-06-28 11:59:44 +01:00
parent f1601257c7
commit c2070693fb
68 changed files with 2305 additions and 212 deletions

View file

@ -105,17 +105,12 @@ export default function FeatureBrowser({
return (
<>
<div className="shrink-0 p-2 border-b border-warm-200 dark:border-navy-700">
<div className="shrink-0 px-2 py-1.5 border-b border-warm-200 dark:border-navy-700">
<SearchInput
value={search}
onChange={setSearch}
placeholder={t('filters.searchFeatures')}
/>
{!search && (
<p className="mt-2 px-1 text-xs leading-relaxed text-warm-500 dark:text-warm-400">
{t('filters.chooseFilters')}
</p>
)}
</div>
<div>
{mergedGrouped.map((group) => {

View file

@ -159,6 +159,26 @@ export function ActiveFiltersPanel({
{t('filters.clearAll')}
</span>
)}
<span
role="button"
tabIndex={0}
data-video-hide="ai-cta"
title={t('filters.findingPerfectPostcode')}
aria-label={t('filters.findingPerfectPostcode')}
onClick={(e) => {
e.stopPropagation();
onShowPhilosophy();
}}
onKeyDown={(e) => {
if (e.key === 'Enter' || e.key === ' ') {
e.stopPropagation();
onShowPhilosophy();
}
}}
className="flex text-warm-500 hover:text-teal-600 dark:text-warm-300 dark:hover:text-teal-300"
>
<LightbulbIcon className="w-4 h-4" />
</span>
<ChevronIcon
direction={collapsed ? 'down' : 'up'}
className="w-4 h-4 text-warm-500 dark:text-warm-300"
@ -181,16 +201,6 @@ export function ActiveFiltersPanel({
isLoggedIn={isLoggedIn}
onLoginRequired={onLoginRequired}
/>
<div className="px-3 pb-2 space-y-2">
<button
onClick={onShowPhilosophy}
data-video-hide="ai-cta"
className="w-full px-3 py-1.5 rounded-lg border border-warm-200 dark:border-warm-700 bg-white dark:bg-warm-800 hover:bg-warm-50 dark:hover:bg-warm-700 text-teal-600 dark:text-teal-400 font-medium text-sm flex items-center justify-center gap-2"
>
<LightbulbIcon />
{t('filters.findingPerfectPostcode')}
</button>
</div>
{enabledFeatureList.length === 0 && activeEntryCount === 0 && (
<p className="px-3 py-1.5 text-xs text-warm-400 dark:text-warm-500">
{t('filters.addFiltersHint')}

View file

@ -167,7 +167,7 @@ export function AddFilterPanel({
{(!collapsed || !isLicensed) && (
<div className="flex min-h-0 flex-1 flex-col">
{!collapsed && (
<div ref={setContainer} className="min-h-0 flex-1 overflow-y-auto">
<div ref={setContainer} className="min-h-0 flex-1 overflow-y-auto md:min-h-[12rem]">
<FeatureBrowser
availableFeatures={availableFeatures}
allFeatures={allFeatures}
@ -185,32 +185,19 @@ export function AddFilterPanel({
</div>
)}
{!isLicensed && (
<div className="mt-auto shrink-0 flex flex-col items-center px-5 pt-4 pb-0 border-t border-warm-200 dark:border-warm-700">
<p className="text-sm text-warm-600 dark:text-warm-400 text-center leading-relaxed mb-1">
{isLoggedIn ? t('filters.upgradePrompt') : t('filters.registerPrompt')}
</p>
<p className="text-xs text-warm-400 dark:text-warm-500 text-center mb-4">
{isLoggedIn ? t('filters.oneTimeLifetime') : t('filters.registerSubPrompt')}
<div className="mt-auto shrink-0 flex flex-col items-center gap-2 px-3 pt-3 pb-2.5 border-t border-warm-200 dark:border-warm-700">
<p className="text-sm text-warm-600 dark:text-warm-400 text-center leading-snug">
{isLoggedIn ? t('filters.upgradePrompt') : t('filters.registerPrompt')}{' '}
<span className="text-xs text-warm-400 dark:text-warm-500">
{isLoggedIn ? t('filters.oneTimeLifetime') : t('filters.registerSubPrompt')}
</span>
</p>
<button
onClick={isLoggedIn ? onUpgradeClick : onRegisterClick}
className="px-5 py-2.5 rounded-lg bg-gradient-to-r from-teal-500 to-teal-600 hover:from-teal-600 hover:to-teal-700 text-white font-medium text-sm shadow-sm hover:shadow-md"
className="w-full px-5 py-2 rounded-lg bg-gradient-to-r from-teal-500 to-teal-600 hover:from-teal-600 hover:to-teal-700 text-white font-medium text-sm shadow-sm hover:shadow-md"
>
{isLoggedIn ? t('filters.upgradeToFullMap') : t('filters.registerCta')}
</button>
<svg
viewBox="0 120 1600 230"
className="w-full mt-4 block shrink-0"
preserveAspectRatio="xMidYMax meet"
>
<path
d="M0,350 C400,150 1200,150 1600,350 Z"
className="fill-green-500 dark:fill-green-600"
/>
<path d="M100,350 C450,180 1150,180 1500,350 Z" fill="#000" opacity="0.08" />
<path d="M250,350 C550,220 1050,220 1350,350 Z" fill="#000" opacity="0.06" />
<image href="/house.png" x="735" y="110" width="130" height="120" />
</svg>
</div>
)}
</div>