From 18ae8b9f880913a5df7c9d48bcba70ea9cf433ea Mon Sep 17 00:00:00 2001 From: Iliyan Angelov Date: Wed, 8 Oct 2025 13:46:46 +0300 Subject: [PATCH] update --- gnx-react/app/case-study/[slug]/page.tsx | 16 +- .../app/{blog => insights}/[slug]/page.tsx | 0 gnx-react/app/{blog => insights}/page.tsx | 0 gnx-react/backend/blog/README.md | 213 ++ gnx-react/backend/blog/__init__.py | 0 .../blog/__pycache__/__init__.cpython-312.pyc | Bin 0 -> 157 bytes .../blog/__pycache__/admin.cpython-312.pyc | Bin 0 -> 4232 bytes .../blog/__pycache__/apps.cpython-312.pyc | Bin 0 -> 499 bytes .../blog/__pycache__/models.cpython-312.pyc | Bin 0 -> 10269 bytes .../__pycache__/serializers.cpython-312.pyc | Bin 0 -> 6735 bytes .../blog/__pycache__/urls.cpython-312.pyc | Bin 0 -> 999 bytes .../blog/__pycache__/views.cpython-312.pyc | Bin 0 -> 10965 bytes gnx-react/backend/blog/admin.py | 98 + gnx-react/backend/blog/apps.py | 7 + gnx-react/backend/blog/management/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 168 bytes .../blog/management/commands/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 177 bytes .../__pycache__/populate_blog.cpython-312.pyc | Bin 0 -> 18653 bytes .../blog/management/commands/populate_blog.py | 414 ++++ .../backend/blog/migrations/0001_initial.py | 129 ++ gnx-react/backend/blog/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-312.pyc | Bin 0 -> 7007 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 168 bytes gnx-react/backend/blog/models.py | 178 ++ gnx-react/backend/blog/serializers.py | 113 + gnx-react/backend/blog/tests.py | 3 + gnx-react/backend/blog/urls.py | 21 + gnx-react/backend/blog/views.py | 189 ++ gnx-react/backend/case_studies/README.md | 208 ++ gnx-react/backend/case_studies/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 165 bytes .../__pycache__/admin.cpython-312.pyc | Bin 0 -> 4416 bytes .../__pycache__/apps.cpython-312.pyc | Bin 0 -> 482 bytes .../__pycache__/models.cpython-312.pyc | Bin 0 -> 13110 bytes .../__pycache__/serializers.cpython-312.pyc | Bin 0 -> 6997 bytes .../__pycache__/urls.cpython-312.pyc | Bin 0 -> 808 bytes .../__pycache__/views.cpython-312.pyc | Bin 0 -> 8438 bytes gnx-react/backend/case_studies/admin.py | 105 + gnx-react/backend/case_studies/apps.py | 7 + .../case_studies/management/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 176 bytes .../management/commands/__init__.py | 0 .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 185 bytes .../populate_case_studies.cpython-312.pyc | Bin 0 -> 14123 bytes .../commands/populate_case_studies.py | 346 +++ .../case_studies/migrations/0001_initial.py | 144 ++ .../case_studies/migrations/__init__.py | 0 .../__pycache__/0001_initial.cpython-312.pyc | Bin 0 -> 7935 bytes .../__pycache__/__init__.cpython-312.pyc | Bin 0 -> 176 bytes gnx-react/backend/case_studies/models.py | 222 ++ gnx-react/backend/case_studies/serializers.py | 111 + gnx-react/backend/case_studies/tests.py | 5 + gnx-react/backend/case_studies/urls.py | 17 + gnx-react/backend/case_studies/views.py | 138 ++ gnx-react/backend/db.sqlite3 | Bin 536576 -> 745472 bytes .../gnx/__pycache__/settings.cpython-312.pyc | Bin 5711 -> 5724 bytes .../gnx/__pycache__/urls.cpython-312.pyc | Bin 2801 -> 2940 bytes gnx-react/backend/gnx/settings.py | 4 +- gnx-react/backend/gnx/urls.py | 2 + gnx-react/backend/logs/django.log | 1264 +++++++++++ .../featured/what-is-a-blog-1200x600-1.jpeg | Bin 0 -> 67330 bytes .../thumbnails/what-is-a-blog-1200x600-1.jpeg | Bin 0 -> 67330 bytes .../featured/what-is-a-blog-1200x600-1.jpeg | Bin 0 -> 67330 bytes .../gallery/what-is-a-blog-1200x600-1.jpeg | Bin 0 -> 67330 bytes .../what-is-a-blog-1200x600-1_P4JD66T.jpeg | Bin 0 -> 67330 bytes .../what-is-a-blog-1200x600-1_aXzf0tJ.jpeg | Bin 0 -> 67330 bytes .../what-is-a-blog-1200x600-1_rzqiGWy.jpeg | Bin 0 -> 67330 bytes .../posters/what-is-a-blog-1200x600-1.jpeg | Bin 0 -> 67330 bytes .../projects/what-is-a-blog-1200x600-1.jpeg | Bin 0 -> 67330 bytes .../thumbnails/what-is-a-blog-1200x600-1.jpeg | Bin 0 -> 67330 bytes gnx-react/components/pages/blog/BlogItems.tsx | 140 +- .../components/pages/blog/BlogSingle.tsx | 466 +++-- .../components/pages/blog/LatestPost.tsx | 435 +--- .../blog/post-filter/PostFilterButtons.tsx | 63 +- .../blog/post-filter/PostFilterItems.tsx | 143 +- .../components/pages/case-study/CaseItems.tsx | 423 +--- .../pages/case-study/CaseSingle.tsx | 174 +- .../components/pages/case-study/Process.tsx | 81 +- .../pages/case-study/RelatedCase.tsx | 94 +- .../components/pages/home/HomeLatestPost.tsx | 483 +---- gnx-react/components/pages/home/Story.tsx | 96 +- .../shared/layout/footer/Footer.tsx | 27 +- .../shared/layout/header/Header.tsx | 2 + gnx-react/lib/api/blogService.ts | 437 ++++ gnx-react/lib/api/caseStudyService.ts | 375 ++++ gnx-react/lib/config/api.ts | 3 + gnx-react/lib/hooks/useBlog.ts | 250 +++ gnx-react/lib/hooks/useCaseStudy.ts | 351 ++++ gnx-react/lib/imageUtils.ts | 21 +- gnx-react/public/data/offcanvas-data.ts | 4 +- gnx-react/public/styles/main.scss | 1 + .../public/styles/pages/_blog-single.scss | 692 ++++++ .../public/styles/pages/_support-center.scss | 1849 ++++++++++++++++- 94 files changed, 8882 insertions(+), 1682 deletions(-) rename gnx-react/app/{blog => insights}/[slug]/page.tsx (100%) rename gnx-react/app/{blog => insights}/page.tsx (100%) create mode 100644 gnx-react/backend/blog/README.md create mode 100644 gnx-react/backend/blog/__init__.py create mode 100644 gnx-react/backend/blog/__pycache__/__init__.cpython-312.pyc create mode 100644 gnx-react/backend/blog/__pycache__/admin.cpython-312.pyc create mode 100644 gnx-react/backend/blog/__pycache__/apps.cpython-312.pyc create mode 100644 gnx-react/backend/blog/__pycache__/models.cpython-312.pyc create mode 100644 gnx-react/backend/blog/__pycache__/serializers.cpython-312.pyc create mode 100644 gnx-react/backend/blog/__pycache__/urls.cpython-312.pyc create mode 100644 gnx-react/backend/blog/__pycache__/views.cpython-312.pyc create mode 100644 gnx-react/backend/blog/admin.py create mode 100644 gnx-react/backend/blog/apps.py create mode 100644 gnx-react/backend/blog/management/__init__.py create mode 100644 gnx-react/backend/blog/management/__pycache__/__init__.cpython-312.pyc create mode 100644 gnx-react/backend/blog/management/commands/__init__.py create mode 100644 gnx-react/backend/blog/management/commands/__pycache__/__init__.cpython-312.pyc create mode 100644 gnx-react/backend/blog/management/commands/__pycache__/populate_blog.cpython-312.pyc create mode 100644 gnx-react/backend/blog/management/commands/populate_blog.py create mode 100644 gnx-react/backend/blog/migrations/0001_initial.py create mode 100644 gnx-react/backend/blog/migrations/__init__.py create mode 100644 gnx-react/backend/blog/migrations/__pycache__/0001_initial.cpython-312.pyc create mode 100644 gnx-react/backend/blog/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 gnx-react/backend/blog/models.py create mode 100644 gnx-react/backend/blog/serializers.py create mode 100644 gnx-react/backend/blog/tests.py create mode 100644 gnx-react/backend/blog/urls.py create mode 100644 gnx-react/backend/blog/views.py create mode 100644 gnx-react/backend/case_studies/README.md create mode 100644 gnx-react/backend/case_studies/__init__.py create mode 100644 gnx-react/backend/case_studies/__pycache__/__init__.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/__pycache__/admin.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/__pycache__/apps.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/__pycache__/models.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/__pycache__/serializers.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/__pycache__/urls.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/__pycache__/views.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/admin.py create mode 100644 gnx-react/backend/case_studies/apps.py create mode 100644 gnx-react/backend/case_studies/management/__init__.py create mode 100644 gnx-react/backend/case_studies/management/__pycache__/__init__.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/management/commands/__init__.py create mode 100644 gnx-react/backend/case_studies/management/commands/__pycache__/__init__.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/management/commands/__pycache__/populate_case_studies.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/management/commands/populate_case_studies.py create mode 100644 gnx-react/backend/case_studies/migrations/0001_initial.py create mode 100644 gnx-react/backend/case_studies/migrations/__init__.py create mode 100644 gnx-react/backend/case_studies/migrations/__pycache__/0001_initial.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/migrations/__pycache__/__init__.cpython-312.pyc create mode 100644 gnx-react/backend/case_studies/models.py create mode 100644 gnx-react/backend/case_studies/serializers.py create mode 100644 gnx-react/backend/case_studies/tests.py create mode 100644 gnx-react/backend/case_studies/urls.py create mode 100644 gnx-react/backend/case_studies/views.py create mode 100644 gnx-react/backend/media/blog/featured/what-is-a-blog-1200x600-1.jpeg create mode 100644 gnx-react/backend/media/blog/thumbnails/what-is-a-blog-1200x600-1.jpeg create mode 100644 gnx-react/backend/media/case_studies/featured/what-is-a-blog-1200x600-1.jpeg create mode 100644 gnx-react/backend/media/case_studies/gallery/what-is-a-blog-1200x600-1.jpeg create mode 100644 gnx-react/backend/media/case_studies/gallery/what-is-a-blog-1200x600-1_P4JD66T.jpeg create mode 100644 gnx-react/backend/media/case_studies/gallery/what-is-a-blog-1200x600-1_aXzf0tJ.jpeg create mode 100644 gnx-react/backend/media/case_studies/gallery/what-is-a-blog-1200x600-1_rzqiGWy.jpeg create mode 100644 gnx-react/backend/media/case_studies/posters/what-is-a-blog-1200x600-1.jpeg create mode 100644 gnx-react/backend/media/case_studies/projects/what-is-a-blog-1200x600-1.jpeg create mode 100644 gnx-react/backend/media/case_studies/thumbnails/what-is-a-blog-1200x600-1.jpeg create mode 100644 gnx-react/lib/api/blogService.ts create mode 100644 gnx-react/lib/api/caseStudyService.ts create mode 100644 gnx-react/lib/hooks/useBlog.ts create mode 100644 gnx-react/lib/hooks/useCaseStudy.ts create mode 100644 gnx-react/public/styles/pages/_blog-single.scss diff --git a/gnx-react/app/case-study/[slug]/page.tsx b/gnx-react/app/case-study/[slug]/page.tsx index 5fc60eef..7560d760 100644 --- a/gnx-react/app/case-study/[slug]/page.tsx +++ b/gnx-react/app/case-study/[slug]/page.tsx @@ -6,14 +6,22 @@ import Footer from "@/components/shared/layout/footer/Footer"; import CaseStudyScrollProgressButton from "@/components/pages/case-study/CaseStudyScrollProgressButton"; import CaseStudyInitAnimations from "@/components/pages/case-study/CaseStudyInitAnimations"; -const page = () => { +interface PageProps { + params: Promise<{ + slug: string; + }>; +} + +const page = async ({ params }: PageProps) => { + const { slug } = await params; + return (
- - - + + +