# sova-adminpanel: React admin

React + Vite admin panel для CRUD контента и специалистов.

**Файлов:** 129


## `sova-adminpanel/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/.gitignore` | Git ignore rules |
| `sova-adminpanel/Dockerfile` | Docker multistage build |
| `sova-adminpanel/README.md` | Главный README k3s-test |
| `sova-adminpanel/babel.config.js` | JavaScript |
| `sova-adminpanel/eslint.config.js` | JavaScript |
| `sova-adminpanel/index.html` | HTML entry (Vite/React) |
| `sova-adminpanel/jest.config.js` | JavaScript |
| `sova-adminpanel/jest.setup.js` | JavaScript |
| `sova-adminpanel/package.json` | NPM/Yarn зависимости и scripts |
| `sova-adminpanel/vite.config.js` | Vite bundler конфиг |


## `sova-adminpanel/.gitea/workflows/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/.gitea/workflows/build.yml` | Gitea Actions CI pipeline |


## `sova-adminpanel/docker/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/docker/entrypoint.sh` | Container entrypoint (env injection) |
| `sova-adminpanel/docker/nginx.conf` | nginx конфиг контейнера |


## `sova-adminpanel/public/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/public/env.js` | Runtime API URL (adminpanel) |
| `sova-adminpanel/public/robots.txt` | Файл проекта |


## `sova-adminpanel/src/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/App.jsx` | React-компонент |
| `sova-adminpanel/src/main.jsx` | React-компонент |


## `sova-adminpanel/src/api/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/api/apiArticle.js` | RTK Query API slice: apiArticle |
| `sova-adminpanel/src/api/apiCertificate.js` | RTK Query API slice: apiCertificate |
| `sova-adminpanel/src/api/apiContent.js` | RTK Query API slice: apiContent |
| `sova-adminpanel/src/api/apiDepartment.js` | RTK Query API slice: apiDepartment |
| `sova-adminpanel/src/api/apiDisease.js` | RTK Query API slice: apiDisease |
| `sova-adminpanel/src/api/apiFilial.js` | RTK Query API slice: apiFilial |
| `sova-adminpanel/src/api/apiIDoctor.js` | RTK Query API slice: apiIDoctor |
| `sova-adminpanel/src/api/apiKodoper.js` | RTK Query API slice: apiKodoper |
| `sova-adminpanel/src/api/apiLocation.js` | RTK Query API slice: apiLocation |
| `sova-adminpanel/src/api/apiMedicalCenter.js` | RTK Query API slice: apiMedicalCenter |
| `sova-adminpanel/src/api/apiNews.js` | RTK Query API slice: apiNews |
| `sova-adminpanel/src/api/apiSitePromo.js` | RTK Query API slice: apiSitePromo |
| `sova-adminpanel/src/api/apiSiteServices.js` | RTK Query API slice: apiSiteServices |
| `sova-adminpanel/src/api/apiSlice.js` | RTK Query API slice: apiSlice |
| `sova-adminpanel/src/api/apiSpecialist.js` | RTK Query API slice: apiSpecialist |
| `sova-adminpanel/src/api/apiStock.js` | RTK Query API slice: apiStock |


## `sova-adminpanel/src/assets/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/assets/icon.png` | PNG-изображение |
| `sova-adminpanel/src/assets/image-placeholder.png` | PNG-изображение |
| `sova-adminpanel/src/assets/logo.png` | PNG-изображение |
| `sova-adminpanel/src/assets/photo-placeholder.png` | PNG-изображение |
| `sova-adminpanel/src/assets/video-placeholder.png` | PNG-изображение |


## `sova-adminpanel/src/components/Button/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Button/Button.jsx` | React component: Button |
| `sova-adminpanel/src/components/Button/Button.module.scss` | SCSS-стили |


## `sova-adminpanel/src/components/Docs/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Docs/Certificates.jsx` | React component: Certificates |
| `sova-adminpanel/src/components/Docs/Portfolio.jsx` | React component: Portfolio |
| `sova-adminpanel/src/components/Docs/Stocks.jsx` | React component: Stocks |


## `sova-adminpanel/src/components/Editors/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Editors/CertEditor.jsx` | React component: CertEditor |
| `sova-adminpanel/src/components/Editors/TextEditor.jsx` | React component: TextEditor |


## `sova-adminpanel/src/components/Forms/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Forms/EditElementForm.jsx` | React component: EditElementForm |


## `sova-adminpanel/src/components/Input/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Input/Input.jsx` | React component: Input |
| `sova-adminpanel/src/components/Input/PhoneInput.jsx` | React component: PhoneInput |
| `sova-adminpanel/src/components/Input/TagKodoperStatic.jsx` | React component: TagKodoperStatic |
| `sova-adminpanel/src/components/Input/TagStaticInput.jsx` | React component: TagStaticInput |
| `sova-adminpanel/src/components/Input/Taginput.jsx` | React component: Taginput |


## `sova-adminpanel/src/components/Modals/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Modals/DcodeModal.jsx` | React component: DcodeModal |
| `sova-adminpanel/src/components/Modals/KodoperModal.jsx` | React component: KodoperModal |
| `sova-adminpanel/src/components/Modals/Modal.jsx` | React component: Modal |
| `sova-adminpanel/src/components/Modals/ResponseModals.jsx` | React component: ResponseModals |
| `sova-adminpanel/src/components/Modals/StockModal.jsx` | React component: StockModal |


## `sova-adminpanel/src/components/Navbar/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Navbar/Navbar.jsx` | React component: Navbar |
| `sova-adminpanel/src/components/Navbar/Navbar.module.scss` | SCSS-стили |


## `sova-adminpanel/src/components/Paginations/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Paginations/PageNav.jsx` | React component: PageNav |


## `sova-adminpanel/src/components/Placeholders/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Placeholders/ErrorComponent.jsx` | React component: ErrorComponent |
| `sova-adminpanel/src/components/Placeholders/LoadingComponent.jsx` | React component: LoadingComponent |
| `sova-adminpanel/src/components/Placeholders/NotFindElement.jsx` | React component: NotFindElement |


## `sova-adminpanel/src/components/Sidebar/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Sidebar/Sidebar.jsx` | React component: Sidebar |


## `sova-adminpanel/src/components/SidebarNavItem/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/SidebarNavItem/SidebarNavItem.jsx` | React component: SidebarNavItem |
| `sova-adminpanel/src/components/SidebarNavItem/SidebarNavItem.module.scss` | SCSS-стили |


## `sova-adminpanel/src/components/Table/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/Table/FilterBar.jsx` | React component: FilterBar |
| `sova-adminpanel/src/components/Table/TBody.jsx` | React component: TBody |
| `sova-adminpanel/src/components/Table/THead.jsx` | React component: THead |


## `sova-adminpanel/src/components/UserBurger/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/components/UserBurger/UserBurger.jsx` | React component: UserBurger |


## `sova-adminpanel/src/config/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/config/api.js` | JavaScript |
| `sova-adminpanel/src/config/contentResources.js` | JavaScript |


## `sova-adminpanel/src/hooks/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/hooks/useLostLocations.jsx` | React hook: useLostLocations |
| `sova-adminpanel/src/hooks/useNewSpecialistId.jsx` | React hook: useNewSpecialistId |
| `sova-adminpanel/src/hooks/useOutsideClick.jsx` | React hook: useOutsideClick |
| `sova-adminpanel/src/hooks/useSortedPaginated.jsx` | React hook: useSortedPaginated |
| `sova-adminpanel/src/hooks/useSorting.jsx` | React hook: useSorting |
| `sova-adminpanel/src/hooks/useSpecialist.jsx` | React hook: useSpecialist |
| `sova-adminpanel/src/hooks/useSpecialistFilter.jsx` | React hook: useSpecialistFilter |


## `sova-adminpanel/src/pages/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/pages/AddArticlePage.jsx` | React page: AddArticlePage |
| `sova-adminpanel/src/pages/AddDiseasePage.jsx` | React page: AddDiseasePage |
| `sova-adminpanel/src/pages/AddMedicalCenterPage.jsx` | React page: AddMedicalCenterPage |
| `sova-adminpanel/src/pages/AddNewsPage.jsx` | React page: AddNewsPage |
| `sova-adminpanel/src/pages/AddSitePromoPage.jsx` | React page: AddSitePromoPage |
| `sova-adminpanel/src/pages/AddSiteServicesPage.jsx` | React page: AddSiteServicesPage |
| `sova-adminpanel/src/pages/AddSpecialistPage.jsx` | React page: AddSpecialistPage |
| `sova-adminpanel/src/pages/AddStockPage.jsx` | React page: AddStockPage |
| `sova-adminpanel/src/pages/ArticleListPage.jsx` | React page: ArticleListPage |
| `sova-adminpanel/src/pages/DepartmentsListPage.jsx` | React page: DepartmentsListPage |
| `sova-adminpanel/src/pages/DiseaseListPage.jsx` | React page: DiseaseListPage |
| `sova-adminpanel/src/pages/EditArticlePage.jsx` | React page: EditArticlePage |
| `sova-adminpanel/src/pages/EditDepartmentPage.jsx` | React page: EditDepartmentPage |
| `sova-adminpanel/src/pages/EditDiseasePage.jsx` | React page: EditDiseasePage |
| `sova-adminpanel/src/pages/EditFilialPage.jsx` | React page: EditFilialPage |
| `sova-adminpanel/src/pages/EditMedicalCenterPage.jsx` | React page: EditMedicalCenterPage |
| `sova-adminpanel/src/pages/EditNewsPage.jsx` | React page: EditNewsPage |
| `sova-adminpanel/src/pages/EditSitePromoPage.jsx` | React page: EditSitePromoPage |
| `sova-adminpanel/src/pages/EditSiteServicesPage.jsx` | React page: EditSiteServicesPage |
| `sova-adminpanel/src/pages/EditSpecialistPage.jsx` | React page: EditSpecialistPage |
| `sova-adminpanel/src/pages/EditStockPage.jsx` | React page: EditStockPage |
| `sova-adminpanel/src/pages/FilialsListPage.jsx` | React page: FilialsListPage |
| `sova-adminpanel/src/pages/HomePage.jsx` | React page: HomePage |
| `sova-adminpanel/src/pages/InfoclinicListPage.jsx` | React page: InfoclinicListPage |
| `sova-adminpanel/src/pages/LoginPage.jsx` | React page: LoginPage |
| `sova-adminpanel/src/pages/LostDoctorsPage.jsx` | React page: LostDoctorsPage |
| `sova-adminpanel/src/pages/MainPage.jsx` | React page: MainPage |
| `sova-adminpanel/src/pages/MedicalCenterListPage.jsx` | React page: MedicalCenterListPage |
| `sova-adminpanel/src/pages/NewsListPage.jsx` | React page: NewsListPage |
| `sova-adminpanel/src/pages/NotFoundPage.jsx` | React page: NotFoundPage |
| `sova-adminpanel/src/pages/PricesListPage.jsx` | React page: PricesListPage |
| `sova-adminpanel/src/pages/SitePromoListPage.jsx` | React page: SitePromoListPage |
| `sova-adminpanel/src/pages/SiteServicesListPage.jsx` | React page: SiteServicesListPage |
| `sova-adminpanel/src/pages/SpecialistListPage.jsx` | React page: SpecialistListPage |
| `sova-adminpanel/src/pages/SpecialistTable.jsx` | React page: SpecialistTable |
| `sova-adminpanel/src/pages/StoksListPage.jsx` | React page: StoksListPage |
| `sova-adminpanel/src/pages/UserPage.jsx` | React page: UserPage |


## `sova-adminpanel/src/pages/__test__/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/pages/__test__/LoginPage.test.jsx` | React page: LoginPage.test |


## `sova-adminpanel/src/pages/content/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/pages/content/ContentEditPage.jsx` | React page: ContentEditPage |
| `sova-adminpanel/src/pages/content/ContentListPage.jsx` | React page: ContentListPage |
| `sova-adminpanel/src/pages/content/index.jsx` | React page: index |


## `sova-adminpanel/src/routes/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/routes/ProtectedRoute.jsx` | React-компонент |


## `sova-adminpanel/src/routes/__test__/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/routes/__test__/ProtectedRoute.test.js` | JavaScript |


## `sova-adminpanel/src/store/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/store/store.js` | JavaScript |


## `sova-adminpanel/src/store/slice/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/store/slice/authSlice.js` | JavaScript |
| `sova-adminpanel/src/store/slice/regionSlice.js` | JavaScript |
| `sova-adminpanel/src/store/slice/utilsSlice.js` | JavaScript |


## `sova-adminpanel/src/store/slice/__test__/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/store/slice/__test__/authSlice.test.js` | JavaScript |


## `sova-adminpanel/src/styles/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/styles/_colors.scss` | SCSS-стили |
| `sova-adminpanel/src/styles/theme-override.scss` | SCSS-стили |


## `sova-adminpanel/src/utils/`


| Файл | Назначение |
|------|------------|
| `sova-adminpanel/src/utils/parseSaveError.js` | JavaScript |
