Files
kspguti-schedule/src/features/add-group/index.tsx
kilyabin 808d577964 feat: исправление мобильной версии и улучшение UX
- Исправлена мобильная версия: добавлена горизонтальная прокрутка навигации,
  оптимизированы отступы и размеры элементов для touch-интерфейсов
- Устранено зависание на мобильных: удален бесконечный цикл в date-serializer.ts
- Улучшена читаемость: сделаны светлее описание пар, дни недели и текст
  последнего обновления (текущий день остается выделенным)
- Добавлена автоматическая прокрутка до текущего дня при загрузке страницы
- Добавлено отображение 'Пары нет' для отмененных пар при замене
- Оптимизированы скрипты установки: добавлена проверка зависимостей перед
  установкой для ускорения повторных запусков
- Исправлено отображение адреса и аудитории на мобильных устройствах
- Улучшены диалоги и touch-цели для мобильных устройств
2025-11-23 00:13:51 +04:00

60 lines
1.9 KiB
TypeScript
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
import React from 'react'
import { Button } from '@/shadcn/ui/button'
import { MdAdd } from 'react-icons/md'
import {
Dialog,
DialogContent,
DialogDescription,
DialogFooter,
DialogHeader,
DialogTitle,
} from '@/shadcn/ui/dialog'
import Link from 'next/link'
import Image from 'next/image'
import { BsTelegram } from 'react-icons/bs'
import { SlSocialVkontakte } from 'react-icons/sl'
import { TELEGRAM_CONTACT_URL } from '@/shared/constants/urls'
export function AddGroupButton() {
const [popupVisible, setPopupVisible] = React.useState(false)
const handleOpenPopup = () => {
setPopupVisible(true)
}
return (
<>
<Button variant='secondary' size='icon' className="min-w-[44px] min-h-[44px] md:min-w-0 md:min-h-0" onClick={handleOpenPopup}><MdAdd /></Button>
<Popup open={popupVisible} onClose={() => setPopupVisible(false)} />
</>
)
}
function Popup({ open, onClose }: {
open: boolean
onClose: () => any
}) {
return (
<Dialog open={open} onOpenChange={isOpen => !isOpen && onClose()}>
<DialogContent className="sm:max-w-[425px]">
<DialogHeader>
<DialogTitle>Добавить группу</DialogTitle>
</DialogHeader>
<DialogDescription>
Если вы хотите добавить свою группу на сайт, скиньтесь всей группой и задонатьте мне 500
</DialogDescription>
<DialogDescription>
Для меня это будет очень хорошая поддержка🥺🥺🥺
</DialogDescription>
<DialogDescription>
</DialogDescription>
<DialogFooter className='!justify-start !flex-row mt-3 gap-3'>
<Link href={TELEGRAM_CONTACT_URL}>
<Button tabIndex={-1} className='gap-3'><BsTelegram /> Мой Telegram</Button>
</Link>
</DialogFooter>
</DialogContent>
</Dialog>
)
}