Опис проекту

Цей проект призначений для конвертації тексту у PDF файл. Він включає в себе функціонал для введення тексту, перегляду PDF попереднього перегляду, збереження історії в локальне сховище IndexDB конверсій та можливість відкриття і закриття бічної панелі зі списком конвертованих файлів на мобільних пристроях. Для стилізації компонентів використовується tailwindcss. В проекті також використовуються alias (@components/* ...) для більш зручного імпортування модулів.

Встановлення та запуск проекту

npm i
npm run start

Запуск тестів

npm run test

Опис основних модулів

Компоненти

  • Header.tsx: Компонент заголовка з кнопкою для відкриття бічної панелі на мобільних пристроях.
  • Sidebar.tsx: Бічна панель, яка містить список історії конвертацій та кнопку для створення нового PDF файлу.
  • List.tsx: Компонент списку, який відображає елементи історії.
  • Item.tsx: Окремий елемент списку історії.
  • MainContent.tsx: Основний компонент, який містить текстове поле для введення тексту та кнопку для конвертації тексту у PDF та функціонал для конвертації тексту в pdf.
  • TextArea.tsx: Компонент текстового поля з автоматичним зміною розміру.
  • PreviewPDF.tsx: Компонент для перегляду PDF файлу.
  • Button.tsx: Кнопка, що використовується в проекті.

Хуки

  • useAutoResizeTextArea.ts: Хук для автоматичного зміни розміру текстового поля.
  • useIndexDB.ts: Хук для керування локальним сховищем IndexDB.

Утиліти

  • api: Функції для взаємодії з API для конвертації тексту у PDF.
  • helpers: Додаткові допоміжні функції, такі як конвертація Blob в base64.
  • types: Типи, використовувані в проекті.

Контекст

  • History: створений для шарингу даних по проекту, щоб запопігти надмірній передачі пропсів