Files
iistwin/client/src/components/AddBookmarkFAB.tsx
Ильяс Султанов 17a8dc42f2 fix(ui): второй пакет ревью better-interface — каркас, чат, реестр, настройки
HIGH:
- chat: действия над сообщением доступны на мобильном (меню ⋯)
- iOS-зум: базовые input/textarea text-base, auth-экраны 16px
- контент не перекрыт нижней навигацией на iPhone (safe-area)
- контрасты: billing-оверлей, бот-кнопка, заголовки задач (text-primary)
- клавиатура: входящие на Главной, aria-label нижней навигации, триггер чата button
- confirm() → AlertDialog (сайдбар, чат, настройки)
- счётчики непрочитанных 7-8px → 10px

MEDIUM:
- офлайн-баннеры и бейджи на токенах warning/success/info/destructive
- transition-all → точечные свойства в примитивах ui
- шрифты: Inter без дублей (24 семейства → 2), letter-spacing с body убран
- prefers-reduced-motion kill-switch
- autocomplete + aria на auth/профиле, ошибки пароля у поля
- SPA: document.title + фокус на main при навигации, тост с action без таймера
- FormEditor: превью на Dialog, табы скроллятся на мобильном, без инлайн-стилей
- empty states с запросом и «Сбросить фильтры», UX-тексты
2026-08-04 19:20:59 +03:00

38 lines
1.1 KiB
TypeScript

import { Plus } from 'lucide-react';
import { useLocation } from 'wouter';
import { CreateBookmarkModal } from '@/components/CreateBookmarkModal';
import { Button } from '@/components/ui/button';
const BOOKMARKABLE_PATHS = [
'/forms/',
'/tasks/',
'/dashboard',
'/kanban/',
'/reports/',
'/home',
];
export function AddBookmarkFAB() {
const [location] = useLocation();
const isBookmarkable = BOOKMARKABLE_PATHS.some((path) => location === path || location.startsWith(path));
if (!isBookmarkable) return null;
const currentUrl = typeof window !== 'undefined' ? window.location.pathname + window.location.search : location;
return (
<CreateBookmarkModal
defaultUrl={currentUrl}
trigger={
<Button
size="icon"
className="fixed bottom-[calc(4rem+max(12px,env(safe-area-inset-bottom)))] right-[calc(1rem+env(safe-area-inset-right))] z-40 rounded-full shadow-lg md:hidden"
aria-label="Добавить закладку"
>
<Plus className="w-5 h-5" aria-hidden="true" />
</Button>
}
/>
);
}