import { Button } from '@/shared/components/button';
import { useDeviceFlags } from '@/shared/hooks';
import styles from './brandTabs.module.scss';
import { QuickFilters } from '../quickFilters';
export const BrandTabs = ({
brands,
activeBrandCode,
onBrandClick,
quickFilters,
activeQuickFilterCode,
onQuickFilterClick,
}) => {
const { isDesktop } = useDeviceFlags();
const hasBrands = brands.length > 0;
const hasQuickFilters = quickFilters.length > 0;
if (!hasBrands && !hasQuickFilters) {
return null;
}
return (
<div className={styles.container}>
{hasBrands && (
<div className={styles.brands}>
{brands.map(({ id, name, code }) => {
const isSelected = activeBrandCode === code;
const handleClick = () => {
onBrandClick(code);
};
return (
<Button
key={id}
type="button"
variant="tab"
isActive={isSelected}
onClick={handleClick}
className={styles.btn}
>
{name}
</Button>
);
})}
</div>
)}
{!isDesktop && hasQuickFilters && (
<QuickFilters
items={quickFilters}
activeCode={activeQuickFilterCode}
onClick={onQuickFilterClick}
/>
)}
</div>
);
}; const BrandButtonsList = ({
brands,
activeBrandCode,
onBrandClick,
}) => {
return (
<>
{brands.map(({ id, name, code }) => {
const isSelected = activeBrandCode === code;
const handleClick = () => {
onBrandClick(code);
};
return (
<Button
key={id}
type="button"
variant="tab"
isActive={isSelected}
onClick={handleClick}
className={styles.btn}
>
{name}
</Button>
);
})}
</>
);
};
export const BrandTabs = ({
brands,
activeBrandCode,
onBrandClick,
quickFilters,
activeQuickFilterCode,
onQuickFilterClick,
}) => {
const { isDesktop } = useDeviceFlags();
const hasBrands = brands.length > 0;
const hasQuickFilters = quickFilters.length > 0;
if (!hasBrands && !hasQuickFilters) {
return null;
}
return (
<div className={styles.container}>
{hasBrands && (
<div className={styles.brands}>
<BrandButtonsList
brands={brands}
activeBrandCode={activeBrandCode}
onBrandClick={onBrandClick}
/>
</div>
)}
{!isDesktop && hasQuickFilters && (
<QuickFilters
items={quickFilters}
activeCode={activeQuickFilterCode}
onClick={onQuickFilterClick}
/>
)}
</div>
);
}; export const OrderDate = ({ date }) => {
const formatOrderDate = (value) => {
const options = { year: 'numeric', month: 'long', day: 'numeric' };
return new Date(value).toLocaleDateString('ru-RU', options);
};
const formattedDate = formatOrderDate(date);
return <div>{formattedDate}</div>;
}; const RU_DATE_FORMATTER = new Intl.DateTimeFormat('ru-RU', {
year: 'numeric',
month: 'long',
day: 'numeric',
});
export const formatOrderDate = (date) => {
return RU_DATE_FORMATTER.format(new Date(date));
}; import { formatOrderDate } from '../utils/dateUtils';
export const OrderDate = ({ date }) => {
const formattedDate = formatOrderDate(date);
return <div>{formattedDate}</div>;
}; const UserInfo = ({ user }) => {
return (
<div>
<p>Имя: {user.name}</p>
<p>Возраст: {user.age}</p>
</div>
);
};
export const UserProfile = ({ user }) => {
return (
<section>
<h2>Профиль</h2>
<UserInfo user={user} />
</section>
);
};
const userName = userObject.name
const userAge = userObject.age
<UserInfo name={userName} age={userAge} />
const UserInfo = ({ name, age }: UserInfoProps )=> {
return (
<div>
<p>Имя: {name}</p>
<p>Возраст: {age}</p>
</div>
);
} useEffect(() => {
if (isInitialLoad && !allMessages.length && isNewMessageReceived) {
return;
}
scrollToBottom(scrollableDivRef, 'auto');
setIsInitialLoad(false);
}, [isInitialLoad, allMessages, isNewMessageReceived]); useEffect(() => {
const shouldSkipScroll = isInitialLoad && allMessages.length === 0 && isNewMessageReceived;
if (shouldSkipScroll) {
return;
}
scrollToBottom(scrollableDivRef, 'auto');
setIsInitialLoad(false);
}, [isInitialLoad, allMessages.length, isNewMessageReceived]);
const VehicleInfo = ({ techniqueCard }) => {
return (
<div>
{techniqueCard.specialVehicle && techniqueCard.specialVehicle.model
? techniqueCard.specialVehicle.model.data
: 'Нет данных'}
</div>
);
}; const VehicleInfo = ({ techniqueCard }) => {
const specialVehicle = techniqueCard?.specialVehicle;
const modelData = specialVehicle?.model?.data;
const modelToDisplay = modelData ?? 'Нет данных';
return <div>{modelToDisplay}</div>;
}; const calculatePrice = (price) => {
if (price > 1000) {
return price - price * 0.15;
}
return price;
}; const DISCOUNT_THRESHOLD = 1000;
const DISCOUNT_RATE = 0.15;
const calculatePrice = (price) => {
if (price > DISCOUNT_THRESHOLD) {
return price - price * DISCOUNT_RATE;
}
return price;
};