diff --git a/src/pages/ru/generators/[slug].astro b/src/pages/ru/generators/[slug].astro deleted file mode 100644 index 09e3804..0000000 --- a/src/pages/ru/generators/[slug].astro +++ /dev/null @@ -1,227 +0,0 @@ ---- -import { generators } from '../../../data/generators'; -import BaseLayout from '../../../layouts/BaseLayout.astro'; -import AdBanner from '../../../components/AdBanner.astro'; -import SeoBlock from '../../../components/SeoBlock.astro'; - -import NumberGenerator from '../../../components/generators/NumberGenerator.astro'; -import ColorGenerator from '../../../components/generators/ColorGenerator.astro'; -import PasswordGenerator from '../../../components/generators/PasswordGenerator.astro'; -import LotteryGenerator from '../../../components/generators/LotteryGenerator.astro'; -import DiceGenerator from '../../../components/generators/DiceGenerator.astro'; -import CardGenerator from '../../../components/generators/CardGenerator.astro'; -import CoinGenerator from '../../../components/generators/CoinGenerator.astro'; -import ListGenerator from '../../../components/generators/ListGenerator.astro'; -import UuidGenerator from '../../../components/generators/UuidGenerator.astro'; -import WheelSpinner from '../../../components/generators/WheelSpinner.astro'; - -export function getStaticPaths() { - return generators.map((g) => ({ - params: { slug: g.slug }, - props: { generator: g }, - })); -} - -const { generator } = Astro.props; -const { slug } = Astro.params; - -const seoContent: Record = { - numbers: { - howTo: [ - 'Введите минимальное значение в поле «От».', - 'Введите максимальное значение в поле «До».', - 'Нажмите «Сгенерировать» — случайное число появится мгновенно.', - 'Нажмите на число, чтобы скопировать его в буфер обмена.', - ], - whenTo: [ - 'Выбор победителя в розыгрыше или конкурсе.', - 'Определение случайного первого игрока в настольной игре.', - 'Быстрое принятие решения между пронумерованными вариантами.', - 'Генерация тестовых данных с числами в заданном диапазоне.', - ], - }, - colors: { - howTo: [ - 'Нажмите «Сгенерировать», чтобы получить случайный цвет.', - 'Цвет отображается в форматах HEX, RGB и HSL одновременно.', - 'Нажмите на иконку копирования рядом с нужным форматом.', - ], - whenTo: [ - 'Поиск вдохновения для цветовой палитры.', - 'Случайный выбор цвета для дизайна или иллюстрации.', - 'Генерация тестовых данных с цветовыми значениями.', - ], - }, - password: { - howTo: [ - 'Задайте длину пароля с помощью ползунка.', - 'Выберите типы символов: заглавные, строчные, цифры, спецсимволы.', - 'Нажмите «Сгенерировать» — готовый пароль появится на экране.', - 'Нажмите на пароль, чтобы скопировать его.', - ], - whenTo: [ - 'Создание надёжного пароля для нового аккаунта.', - 'Генерация секретного ключа или токена.', - 'Регулярное обновление паролей для повышения безопасности.', - ], - }, - lottery: { - howTo: [ - 'Укажите диапазон чисел в полях «От» и «До».', - 'Задайте количество чисел для розыгрыша.', - 'Нажмите «Тянуть» — выпавшие числа появятся на экране.', - 'Нажмите «Копировать», чтобы сохранить результат.', - ], - whenTo: [ - 'Розыгрыш лотерейных номеров.', - 'Жеребьёвка участников конкурса.', - 'Случайный выбор нескольких уникальных чисел.', - ], - }, - dice: { - howTo: [ - 'Укажите количество кубиков (до 20).', - 'Выберите количество граней: d4, d6, d8, d10, d12, d20 или d100.', - 'Нажмите «Бросить» — результаты отобразятся мгновенно.', - 'Нажмите «Копировать», чтобы сохранить результат.', - ], - whenTo: [ - 'Броски в настольных ролевых играх (D&D и другие).', - 'Генерация случайных чисел для настольных игр.', - 'Проверка вероятностей и симуляции.', - ], - }, - cards: { - howTo: [ - 'Укажите количество карт для розыгрыша.', - 'Включите «Разрешить повторения», если нужны дубли.', - 'Нажмите «Тянуть» — карты появятся на экране.', - 'Нажмите «Копировать», чтобы скопировать результат.', - ], - whenTo: [ - 'Случайная раздача карт для карточных игр.', - 'Выбор случайных карт для гаданий.', - 'Генерация случайных комбинаций карт для тестирования.', - ], - }, - coin: { - howTo: [ - 'Выберите количество монет с помощью ползунка.', - 'Нажмите «Подбросить» — орёл или решка.', - 'При нескольких монетах отображается итоговый счёт.', - 'Нажмите «Копировать», чтобы сохранить результат.', - ], - whenTo: [ - 'Принятие решений по принципу «орёл или решка».', - 'Определение очерёдности в игре.', - 'Симуляция случайных событий с равной вероятностью.', - ], - }, - list: { - howTo: [ - 'Введите список элементов — по одному на строку.', - 'Укажите, сколько элементов выбрать.', - 'При необходимости разрешите повторения.', - 'Нажмите «Выбрать» — победители выделятся на экране.', - ], - whenTo: [ - 'Розыгрыш победителей конкурса.', - 'Случайное распределение задач между участниками команды.', - 'Выбор случайного варианта из списка.', - ], - }, - uuid: { - howTo: [ - 'Выберите тип: UUID v4, Hex или Base64.', - 'Для Hex и Base64 задайте длину в байтах.', - 'Укажите количество токенов.', - 'Нажмите «Сгенерировать» и скопируйте результат.', - ], - whenTo: [ - 'Генерация уникальных идентификаторов для баз данных.', - 'Создание токенов для API и сессий.', - 'Генерация случайных ключей шифрования.', - ], - }, - wheel: { - howTo: [ - 'Введите варианты в поле — по одному на строку (от 2 до 24).', - 'Колесо обновляется автоматически.', - 'Нажмите «Крутить» и дождитесь результата.', - 'Победитель выделяется — скопируйте его кнопкой «Копировать».', - ], - whenTo: [ - 'Случайный выбор победителя розыгрыша.', - 'Принятие решений в команде.', - 'Распределение ролей или задач между участниками.', - ], - }, -}; - -const seo = seoContent[slug] ?? { howTo: [], whenTo: [] }; ---- - - -
- - -
-
- - randify -
-

- Генератор {generator.ruTitle.toLowerCase()} -

-

{generator.ruDescription}

-
- -
- {slug === 'numbers' && } - {slug === 'colors' && } - {slug === 'password' && } - {slug === 'lottery' && } - {slug === 'dice' && } - {slug === 'cards' && } - {slug === 'coin' && } - {slug === 'list' && } - {slug === 'uuid' && } - {slug === 'wheel' && } -
- -
- -
- - -
-
diff --git a/src/pages/ru/generators/cards.astro b/src/pages/ru/generators/cards.astro new file mode 100644 index 0000000..3f5d976 --- /dev/null +++ b/src/pages/ru/generators/cards.astro @@ -0,0 +1,40 @@ +--- +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import CardGenerator from '../../../components/generators/CardGenerator.astro'; +import AdBanner from '../../../components/AdBanner.astro'; +import SeoBlock from '../../../components/SeoBlock.astro'; +import { generators } from '../../../data/generators'; + +const generator = generators.find((g) => g.slug === 'cards')!; +--- + + +
+ +
+
+ + randify +
+

Генератор карт

+

{generator.ruDescription}

+
+
+
+ +
+
diff --git a/src/pages/ru/generators/coin.astro b/src/pages/ru/generators/coin.astro new file mode 100644 index 0000000..9399ebc --- /dev/null +++ b/src/pages/ru/generators/coin.astro @@ -0,0 +1,40 @@ +--- +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import CoinGenerator from '../../../components/generators/CoinGenerator.astro'; +import AdBanner from '../../../components/AdBanner.astro'; +import SeoBlock from '../../../components/SeoBlock.astro'; +import { generators } from '../../../data/generators'; + +const generator = generators.find((g) => g.slug === 'coin')!; +--- + + +
+ +
+
+ + randify +
+

Подбросить монетку

+

{generator.ruDescription}

+
+
+
+ +
+
diff --git a/src/pages/ru/generators/colors.astro b/src/pages/ru/generators/colors.astro new file mode 100644 index 0000000..039f4ca --- /dev/null +++ b/src/pages/ru/generators/colors.astro @@ -0,0 +1,39 @@ +--- +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import ColorGenerator from '../../../components/generators/ColorGenerator.astro'; +import AdBanner from '../../../components/AdBanner.astro'; +import SeoBlock from '../../../components/SeoBlock.astro'; +import { generators } from '../../../data/generators'; + +const generator = generators.find((g) => g.slug === 'colors')!; +--- + + +
+ +
+
+ + randify +
+

Генератор цветов

+

{generator.ruDescription}

+
+
+
+ +
+
diff --git a/src/pages/ru/generators/dice.astro b/src/pages/ru/generators/dice.astro new file mode 100644 index 0000000..7ff73ab --- /dev/null +++ b/src/pages/ru/generators/dice.astro @@ -0,0 +1,40 @@ +--- +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import DiceGenerator from '../../../components/generators/DiceGenerator.astro'; +import AdBanner from '../../../components/AdBanner.astro'; +import SeoBlock from '../../../components/SeoBlock.astro'; +import { generators } from '../../../data/generators'; + +const generator = generators.find((g) => g.slug === 'dice')!; +--- + + +
+ +
+
+ + randify +
+

Бросить кубик онлайн

+

{generator.ruDescription}

+
+
+
+ +
+
diff --git a/src/pages/ru/generators/list.astro b/src/pages/ru/generators/list.astro new file mode 100644 index 0000000..00ef839 --- /dev/null +++ b/src/pages/ru/generators/list.astro @@ -0,0 +1,40 @@ +--- +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import ListGenerator from '../../../components/generators/ListGenerator.astro'; +import AdBanner from '../../../components/AdBanner.astro'; +import SeoBlock from '../../../components/SeoBlock.astro'; +import { generators } from '../../../data/generators'; + +const generator = generators.find((g) => g.slug === 'list')!; +--- + + +
+ +
+
+ + randify +
+

Случайный выбор из списка

+

{generator.ruDescription}

+
+
+
+ +
+
diff --git a/src/pages/ru/generators/lottery.astro b/src/pages/ru/generators/lottery.astro new file mode 100644 index 0000000..6419aa5 --- /dev/null +++ b/src/pages/ru/generators/lottery.astro @@ -0,0 +1,40 @@ +--- +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import LotteryGenerator from '../../../components/generators/LotteryGenerator.astro'; +import AdBanner from '../../../components/AdBanner.astro'; +import SeoBlock from '../../../components/SeoBlock.astro'; +import { generators } from '../../../data/generators'; + +const generator = generators.find((g) => g.slug === 'lottery')!; +--- + + +
+ +
+
+ + randify +
+

Генератор лотереи

+

{generator.ruDescription}

+
+
+
+ +
+
diff --git a/src/pages/ru/generators/numbers.astro b/src/pages/ru/generators/numbers.astro new file mode 100644 index 0000000..3a1871f --- /dev/null +++ b/src/pages/ru/generators/numbers.astro @@ -0,0 +1,41 @@ +--- +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import NumberGenerator from '../../../components/generators/NumberGenerator.astro'; +import AdBanner from '../../../components/AdBanner.astro'; +import SeoBlock from '../../../components/SeoBlock.astro'; +import { generators } from '../../../data/generators'; + +const generator = generators.find((g) => g.slug === 'numbers')!; +--- + + +
+ +
+
+ + randify +
+

Генератор чисел

+

{generator.ruDescription}

+
+
+
+ +
+
diff --git a/src/pages/ru/generators/password.astro b/src/pages/ru/generators/password.astro new file mode 100644 index 0000000..e41ff34 --- /dev/null +++ b/src/pages/ru/generators/password.astro @@ -0,0 +1,40 @@ +--- +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import PasswordGenerator from '../../../components/generators/PasswordGenerator.astro'; +import AdBanner from '../../../components/AdBanner.astro'; +import SeoBlock from '../../../components/SeoBlock.astro'; +import { generators } from '../../../data/generators'; + +const generator = generators.find((g) => g.slug === 'password')!; +--- + + +
+ +
+
+ + randify +
+

Генератор паролей

+

{generator.ruDescription}

+
+
+
+ +
+
diff --git a/src/pages/ru/generators/uuid.astro b/src/pages/ru/generators/uuid.astro new file mode 100644 index 0000000..d5c61b3 --- /dev/null +++ b/src/pages/ru/generators/uuid.astro @@ -0,0 +1,40 @@ +--- +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import UuidGenerator from '../../../components/generators/UuidGenerator.astro'; +import AdBanner from '../../../components/AdBanner.astro'; +import SeoBlock from '../../../components/SeoBlock.astro'; +import { generators } from '../../../data/generators'; + +const generator = generators.find((g) => g.slug === 'uuid')!; +--- + + +
+ +
+
+ + randify +
+

Генератор UUID и токенов

+

{generator.ruDescription}

+
+
+
+ +
+
diff --git a/src/pages/ru/generators/wheel.astro b/src/pages/ru/generators/wheel.astro new file mode 100644 index 0000000..bafb5f3 --- /dev/null +++ b/src/pages/ru/generators/wheel.astro @@ -0,0 +1,40 @@ +--- +import BaseLayout from '../../../layouts/BaseLayout.astro'; +import WheelSpinner from '../../../components/generators/WheelSpinner.astro'; +import AdBanner from '../../../components/AdBanner.astro'; +import SeoBlock from '../../../components/SeoBlock.astro'; +import { generators } from '../../../data/generators'; + +const generator = generators.find((g) => g.slug === 'wheel')!; +--- + + +
+ +
+
+ + randify +
+

Колесо фортуны онлайн

+

{generator.ruDescription}

+
+
+
+ +
+