diff --git a/.prettierrc b/.prettierrc new file mode 100644 index 0000000..edc55a8 --- /dev/null +++ b/.prettierrc @@ -0,0 +1,7 @@ +{ + "semi": true, + "singleQuote": false, + "printWidth": 80, + "trailingComma": "es5", + "tabWidth": 2 +} \ No newline at end of file diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..874327d --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,16 @@ +{ + "editor.formatOnSave": true, + // The number of spaces a tab is equal to. This setting is overridden + // based on the file contents when `editor.detectIndentation` is true. + "editor.tabSize": 2, + // Insert spaces when pressing Tab. This setting is overriden + // based on the file contents when `editor.detectIndentation` is true. + "editor.insertSpaces": true, + // When opening a file, `editor.tabSize` and `editor.insertSpaces` + // will be detected based on the file contents. Set to false to keep + // the values you've explicitly set, above. + "editor.detectIndentation": false, + "prettier.useTabs": false, + "prettier.configPath": ".prettierrc", + "editor.defaultFormatter": "esbenp.prettier-vscode" +} diff --git a/eslint.config.mjs b/eslint.config.mjs index 68969ae..14cbcff 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -15,6 +15,7 @@ const eslintConfig = [ rules: { "@typescript-eslint/no-unused-vars": "warn", "@typescript-eslint/no-explicit-any": "off", + "@typescript-eslint/ban-ts-comment": "off" }, }, ]; diff --git a/package-lock.json b/package-lock.json index c475577..2e2037c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -36,7 +36,10 @@ "@types/react-modal-video": "^1.2.3", "eslint": "^9", "eslint-config-next": "15.1.6", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.3", "postcss": "^8", + "prettier": "^3.4.2", "tailwindcss": "^3.4.1", "typescript": "^5" } @@ -546,6 +549,18 @@ "node": ">=14" } }, + "node_modules/@pkgr/core": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@pkgr/core/-/core-0.1.1.tgz", + "integrity": "sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==", + "dev": true, + "engines": { + "node": "^12.20.0 || ^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/@popperjs/core": { "version": "2.11.8", "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", @@ -2078,6 +2093,18 @@ } } }, + "node_modules/eslint-config-prettier": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-10.0.1.tgz", + "integrity": "sha512-lZBts941cyJyeaooiKxAtzoPHTN+GbQTJFAIdQbRhA4/8whaAraEh47Whw/ZFfrjNSnlAxqfm9i0XVAEkULjCw==", + "dev": true, + "bin": { + "eslint-config-prettier": "build/bin/cli.js" + }, + "peerDependencies": { + "eslint": ">=7.0.0" + } + }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", @@ -2278,6 +2305,36 @@ "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" } }, + "node_modules/eslint-plugin-prettier": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-5.2.3.tgz", + "integrity": "sha512-qJ+y0FfCp/mQYQ/vWQ3s7eUlFEL4PyKfAJxsnYTJ4YT73nsJBWqmEpFryxV9OeUiqmsTsYJ5Y+KDNaeP31wrRw==", + "dev": true, + "dependencies": { + "prettier-linter-helpers": "^1.0.0", + "synckit": "^0.9.1" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint-plugin-prettier" + }, + "peerDependencies": { + "@types/eslint": ">=8.0.0", + "eslint": ">=8.0.0", + "eslint-config-prettier": "*", + "prettier": ">=3.0.0" + }, + "peerDependenciesMeta": { + "@types/eslint": { + "optional": true + }, + "eslint-config-prettier": { + "optional": true + } + } + }, "node_modules/eslint-plugin-react": { "version": "7.37.4", "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.37.4.tgz", @@ -2459,6 +2516,12 @@ "dev": true, "license": "MIT" }, + "node_modules/fast-diff": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true + }, "node_modules/fast-glob": { "version": "3.3.1", "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", @@ -4398,6 +4461,33 @@ "node": ">= 0.8.0" } }, + "node_modules/prettier": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-3.4.2.tgz", + "integrity": "sha512-e9MewbtFo+Fevyuxn/4rrcDAaq0IYxPGLvObpQjiZBMAzB9IGmzlnG9RZy3FFas+eBMu2vA0CszMeduow5dIuQ==", + "dev": true, + "bin": { + "prettier": "bin/prettier.cjs" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/prettier/prettier?sponsor=1" + } + }, + "node_modules/prettier-linter-helpers": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", + "dev": true, + "dependencies": { + "fast-diff": "^1.1.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, "node_modules/prop-types": { "version": "15.8.1", "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", @@ -5312,6 +5402,22 @@ "node": ">= 4.7.0" } }, + "node_modules/synckit": { + "version": "0.9.2", + "resolved": "https://registry.npmjs.org/synckit/-/synckit-0.9.2.tgz", + "integrity": "sha512-vrozgXDQwYO72vHjUb/HnFbQx1exDjoKzqx23aXEg2a9VIg2TSFZ8FmeZpTjUCFMYw7mpX4BE2SFu8wI7asYsw==", + "dev": true, + "dependencies": { + "@pkgr/core": "^0.1.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts" + } + }, "node_modules/tailwindcss": { "version": "3.4.17", "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.17.tgz", diff --git a/package.json b/package.json index 994e632..a38ec11 100644 --- a/package.json +++ b/package.json @@ -37,8 +37,11 @@ "@types/react-modal-video": "^1.2.3", "eslint": "^9", "eslint-config-next": "15.1.6", + "eslint-config-prettier": "^10.0.1", + "eslint-plugin-prettier": "^5.2.3", "postcss": "^8", + "prettier": "^3.4.2", "tailwindcss": "^3.4.1", "typescript": "^5" } -} +} \ No newline at end of file diff --git a/src/app/layout.tsx b/src/app/layout.tsx index 64d1fc1..7ff4745 100644 --- a/src/app/layout.tsx +++ b/src/app/layout.tsx @@ -2,8 +2,8 @@ import { usePathname } from "next/navigation"; import { useEffect } from "react"; import { init_wow } from "@/utils/initWow"; -import { parallaxMouseMovement, parallaxScroll } from "@/utils/parallax" -import { headerChangeOnScroll } from "@/utils/changeHeaderOnScroll" +import { parallaxMouseMovement, parallaxScroll } from "@/utils/parallax"; +import { headerChangeOnScroll } from "@/utils/changeHeaderOnScroll"; import "swiper/css"; import "jarallax/dist/jarallax.min.css"; import "swiper/css/effect-fade"; @@ -36,9 +36,11 @@ export default function RootLayout({ window.removeEventListener("scroll", headerChangeOnScroll); }; }, [path]); + useEffect(() => { if (typeof window !== "undefined") { // Import the script only on the client side + // @ts-ignore import("bootstrap/dist/js/bootstrap.esm").then(() => { // Module is imported, you can access any exported functionality if }); @@ -46,7 +48,7 @@ export default function RootLayout({ }, []); return ( - + { var section = document.querySelectorAll(".scrollSpysection"); - // console.log(section); var sections = {}; var i = 0; Array.prototype.forEach.call(section, function (e) { + // @ts-ignore sections[e.id] = e.offsetTop; }); var scrollPosition = document.documentElement.scrollTop || document.body.scrollTop; - for (i in sections) { + for (let i in sections) { + // @ts-ignore if (sections[i] <= scrollPosition) { document .querySelector(linksContainer + ` .${activeClass}`) diff --git a/src/utils/changeHeaderOnScroll.js b/src/utils/changeHeaderOnScroll.ts similarity index 73% rename from src/utils/changeHeaderOnScroll.js rename to src/utils/changeHeaderOnScroll.ts index 1d754da..c8a354b 100644 --- a/src/utils/changeHeaderOnScroll.js +++ b/src/utils/changeHeaderOnScroll.ts @@ -3,13 +3,13 @@ export const headerChangeOnScroll = () => { var navLogoWrapLogo = document.querySelector(".nav-logo-wrap .logo"); var lightAfterScroll = document.querySelector(".light-after-scroll"); if (window.scrollY > 0) { - mainNav.classList.remove("transparent"); - mainNav.classList.add("small-height", "body-scrolled"); + mainNav?.classList.remove("transparent"); + mainNav?.classList.add("small-height", "body-scrolled"); if (navLogoWrapLogo) navLogoWrapLogo.classList.add("small-height"); if (lightAfterScroll) lightAfterScroll.classList.remove("dark"); } else if (window.scrollY === 0) { - mainNav.classList.add("transparent"); - mainNav.classList.remove("small-height", "body-scrolled"); + mainNav?.classList.add("transparent"); + mainNav?.classList.remove("small-height", "body-scrolled"); if (navLogoWrapLogo) navLogoWrapLogo.classList.remove("small-height"); if (lightAfterScroll) lightAfterScroll.classList.add("dark"); } diff --git a/src/utils/initWow.js b/src/utils/initWow.ts similarity index 99% rename from src/utils/initWow.js rename to src/utils/initWow.ts index 933162b..da5f97f 100644 --- a/src/utils/initWow.js +++ b/src/utils/initWow.ts @@ -1,5 +1,6 @@ /* eslint-disable @typescript-eslint/no-require-imports */ +// @ts-nocheck export function init_wow() { const { WOW } = require("wowjs"); setTimeout(() => { diff --git a/src/utils/menuToggle.js b/src/utils/menuToggle.ts similarity index 98% rename from src/utils/menuToggle.js rename to src/utils/menuToggle.ts index 49ce11d..eed51f5 100644 --- a/src/utils/menuToggle.js +++ b/src/utils/menuToggle.ts @@ -1,3 +1,4 @@ +// @ts-nocheck export function init_classic_menu_resize() { var mobile_nav = document.querySelector(".mobile-nav"); var desktop_nav = document.querySelector(".desktop-nav"); diff --git a/src/utils/parallax.js b/src/utils/parallax.ts similarity index 99% rename from src/utils/parallax.js rename to src/utils/parallax.ts index 2816c8c..0a418f4 100644 --- a/src/utils/parallax.js +++ b/src/utils/parallax.ts @@ -1,3 +1,4 @@ +// @ts-nocheck import Rellax from "rellax"; export const parallaxMouseMovement = () => { diff --git a/src/utils/scrollToElement.js b/src/utils/scrollToElement.js deleted file mode 100644 index 26e6b4c..0000000 --- a/src/utils/scrollToElement.js +++ /dev/null @@ -1,24 +0,0 @@ -export const scrollToElement = () => { - document.querySelectorAll('a[href^="#"]').forEach((anchor) => { - if ( - anchor.href && - anchor.href != "#" && - !anchor.hasAttribute("data-bs-toggle") - ) { - // console.log(anchor.href); - anchor.addEventListener("click", (e) => { - e.preventDefault(); - console.log("clicle"); - const id = anchor.href.split("#")[1]; - const element = document.getElementById(id); - if (element) { - const yOffset = +70; // Adjust this offset as per your layout - const y = - element.getBoundingClientRect().top + window.pageYOffset + yOffset; - window.scrollTo({ top: y, behavior: "smooth" }); - } - }); - } - }); - }; - \ No newline at end of file diff --git a/src/utils/scrollToElement.ts b/src/utils/scrollToElement.ts new file mode 100644 index 0000000..87e28f0 --- /dev/null +++ b/src/utils/scrollToElement.ts @@ -0,0 +1,24 @@ +// @ts-nocheck +export const scrollToElement = () => { + document.querySelectorAll('a[href^="#"]').forEach((anchor) => { + if ( + anchor.href && + anchor.href != "#" && + !anchor.hasAttribute("data-bs-toggle") + ) { + // console.log(anchor.href); + anchor.addEventListener("click", (e) => { + e.preventDefault(); + console.log("clicle"); + const id = anchor.href.split("#")[1]; + const element = document.getElementById(id); + if (element) { + const yOffset = +70; // Adjust this offset as per your layout + const y = + element.getBoundingClientRect().top + window.pageYOffset + yOffset; + window.scrollTo({ top: y, behavior: "smooth" }); + } + }); + } + }); +}; diff --git a/src/utils/toggleMobileMenu.js b/src/utils/toggleMobileMenu.ts similarity index 98% rename from src/utils/toggleMobileMenu.js rename to src/utils/toggleMobileMenu.ts index 6e5272d..597af9e 100644 --- a/src/utils/toggleMobileMenu.js +++ b/src/utils/toggleMobileMenu.ts @@ -1,3 +1,4 @@ +// @ts-nocheck export const toggleMobileMenu = () => { var mobile_nav = document.querySelector(".mobile-nav"); var desktop_nav = document.querySelector(".desktop-nav");