Add one change & crime
This commit is contained in:
parent
8e4c56bb0d
commit
54fbcb1ea6
17 changed files with 306 additions and 154 deletions
|
|
@ -27,6 +27,7 @@ interface TravelTimeCardProps {
|
|||
timeRange: [number, number] | null;
|
||||
useBest: boolean;
|
||||
noChange: boolean;
|
||||
oneChange: boolean;
|
||||
noBuses: boolean;
|
||||
isPinned: boolean;
|
||||
isActive: boolean;
|
||||
|
|
@ -39,6 +40,7 @@ interface TravelTimeCardProps {
|
|||
onDragEnd: () => void;
|
||||
onToggleBest: () => void;
|
||||
onToggleNoChange: () => void;
|
||||
onToggleOneChange: () => void;
|
||||
onToggleNoBuses: () => void;
|
||||
onRemove: () => void;
|
||||
filterImpact?: number;
|
||||
|
|
@ -52,6 +54,7 @@ export function TravelTimeCard({
|
|||
timeRange,
|
||||
useBest,
|
||||
noChange,
|
||||
oneChange,
|
||||
noBuses,
|
||||
isPinned,
|
||||
isActive,
|
||||
|
|
@ -64,6 +67,7 @@ export function TravelTimeCard({
|
|||
onDragEnd,
|
||||
onToggleBest,
|
||||
onToggleNoChange,
|
||||
onToggleOneChange,
|
||||
onToggleNoBuses,
|
||||
onRemove,
|
||||
filterImpact,
|
||||
|
|
@ -75,6 +79,7 @@ export function TravelTimeCard({
|
|||
const [showInfo, setShowInfo] = useState(false);
|
||||
const [showBestInfo, setShowBestInfo] = useState(false);
|
||||
const [showNoChangeInfo, setShowNoChangeInfo] = useState(false);
|
||||
const [showOneChangeInfo, setShowOneChangeInfo] = useState(false);
|
||||
const [showNoBusesInfo, setShowNoBusesInfo] = useState(false);
|
||||
|
||||
const handleDestinationSelect = useCallback(
|
||||
|
|
@ -169,6 +174,20 @@ export function TravelTimeCard({
|
|||
<InfoIcon className="w-3 h-3" />
|
||||
</IconButton>
|
||||
</div>
|
||||
<div className="flex items-center gap-0.5">
|
||||
<PillToggle
|
||||
label={t('travel.oneChange')}
|
||||
active={oneChange}
|
||||
onClick={onToggleOneChange}
|
||||
size="xs"
|
||||
/>
|
||||
<IconButton
|
||||
onClick={() => setShowOneChangeInfo(true)}
|
||||
title={t('travel.oneChangeTitle')}
|
||||
>
|
||||
<InfoIcon className="w-3 h-3" />
|
||||
</IconButton>
|
||||
</div>
|
||||
<div className="flex items-center gap-0.5">
|
||||
<PillToggle
|
||||
label={t('travel.noBuses')}
|
||||
|
|
@ -201,6 +220,14 @@ export function TravelTimeCard({
|
|||
</InfoPopup>
|
||||
)}
|
||||
|
||||
{showOneChangeInfo && (
|
||||
<InfoPopup title={t('travel.oneChangeTitle')} onClose={() => setShowOneChangeInfo(false)}>
|
||||
<p className="text-sm text-warm-700 dark:text-warm-300 leading-relaxed">
|
||||
<Trans i18nKey="travel.oneChangeDesc" components={{ strong: <strong /> }} />
|
||||
</p>
|
||||
</InfoPopup>
|
||||
)}
|
||||
|
||||
{showNoBusesInfo && (
|
||||
<InfoPopup title={t('travel.noBusesTitle')} onClose={() => setShowNoBusesInfo(false)}>
|
||||
<p className="text-sm text-warm-700 dark:text-warm-300 leading-relaxed">
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue