import { useState } from 'react' import { useQuery, useMutation, useQueryClient } from '@tanstack/react-query' import { useTranslation } from 'react-i18next' import { Link } from 'react-router-dom' import { tariffsApi, TariffListItem, TariffDetail, TariffCreateRequest, TariffUpdateRequest, PeriodPrice, ServerInfo } from '../api/tariffs' // Icons const BackIcon = () => ( ) const PlusIcon = () => ( ) const EditIcon = () => ( ) const TrashIcon = () => ( ) const CheckIcon = () => ( ) const XIcon = () => ( ) const InfinityIcon = () => ( ) const CalendarIcon = () => ( ) const SunIcon = () => ( ) // Type selection modal interface TariffTypeSelectProps { onSelect: (isDaily: boolean) => void onClose: () => void } function TariffTypeSelect({ onSelect, onClose }: TariffTypeSelectProps) { return (
Оплата за период
0 = безлимитный трафик
Влияет на доступность перехода между тарифами
Добавьте периоды и цены для тарифа. Пользователи смогут выбирать из добавленных периодов.
{/* Add new period */}Выберите серверы, доступные на этом тарифе.
{servers.length === 0 ? (Нет доступных серверов
) : ( servers.map(server => { const isSelected = selectedSquads.includes(server.squad_uuid) return (0 = докупка недоступна
0 = без ограничений
Пользователь сам выбирает срок подписки
Пользователь сам выбирает объём трафика при покупке
Определяет, когда сбрасывается использованный трафик у подписчиков этого тарифа
Ежедневное списание
Списывается ежедневно с баланса пользователя
Выберите серверы, доступные на этом тарифе.
{servers.length === 0 ? (Нет доступных серверов
) : ( servers.map(server => { const isSelected = selectedSquads.includes(server.squad_uuid) return (0 = докупка недоступна
0 = без ограничений
Определяет, когда сбрасывается использованный трафик у подписчиков этого тарифа
{t('admin.tariffs.subtitle')}
{t('admin.tariffs.noTariffs')}
{t('admin.tariffs.confirmDeleteText')}