Initial Commit
35
.gitignore
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
# Dependencias de Node.js
|
||||
node_modules/
|
||||
.cache/
|
||||
public/
|
||||
|
||||
# Archivos de log y reporte
|
||||
npm-debug.log*
|
||||
yarn-debug.log*
|
||||
yarn-error.log*
|
||||
gatsby-error.log
|
||||
|
||||
# Archivos del sistema operativo
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
|
||||
# Configuración de entorno y archivos locales
|
||||
.env
|
||||
.env.*
|
||||
!.env.example
|
||||
|
||||
# Editor de código y herramientas de desarrollo
|
||||
.idea/
|
||||
.vscode/
|
||||
*.sublime-workspace
|
||||
|
||||
# Archivos de bloqueo de paquetes
|
||||
package-lock.json
|
||||
yarn.lock
|
||||
|
||||
# Archivos de test y coverage
|
||||
coverage/
|
||||
|
||||
# Archivos de resultados de compilaciones
|
||||
dist/
|
||||
out/
|
||||
@ -1,9 +1,25 @@
|
||||
module.exports = {
|
||||
siteMetadata: {
|
||||
title: 'Iteck',
|
||||
description: 'Iteck - Multi-Purpose React.js Gatsby Template',
|
||||
author: 'ThemesCamp',
|
||||
title: 'Nextream',
|
||||
description: 'Nextream - Tech & IT Solutions',
|
||||
author: 'Nextream.net',
|
||||
},
|
||||
plugins: ['gatsby-plugin-resolve-src', 'gatsby-plugin-eslint'],
|
||||
plugins: ['gatsby-plugin-resolve-src', 'gatsby-plugin-eslint',
|
||||
{
|
||||
resolve: `gatsby-plugin-intl`,
|
||||
options: {
|
||||
// language JSON resource path
|
||||
path: `${__dirname}/src/intl`,
|
||||
// supported language
|
||||
languages: [`en`, `es`],
|
||||
// language file path
|
||||
defaultLanguage: `es`,
|
||||
// option to redirect to `/ko` when connecting `/`
|
||||
redirect: true,
|
||||
// Utilizar la URL del recurso JSON de idioma desde las variables de entorno
|
||||
remoteJsonUrl: `http://localhost:8000/data/language/languages.json`,
|
||||
},
|
||||
},
|
||||
],
|
||||
trailingSlash: 'always',
|
||||
};
|
||||
|
||||
@ -33,5 +33,11 @@ exports.onCreateWebpackConfig = ({
|
||||
);
|
||||
}
|
||||
}
|
||||
// Add path-browserify to the fallback configuration
|
||||
config.resolve.fallback = {
|
||||
...config.resolve.fallback,
|
||||
path: require.resolve('path-browserify'),
|
||||
};
|
||||
|
||||
actions.replaceWebpackConfig(config);
|
||||
};
|
||||
|
||||
403
package-lock.json
generated
@ -9,13 +9,17 @@
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"axios": "^0.27.2",
|
||||
"dompurify": "^3.1.6",
|
||||
"gatsby": "^4.24.1",
|
||||
"gatsby-plugin-intl": "^5.10.0",
|
||||
"gatsby-plugin-resolve-src": "^2.1.0",
|
||||
"lightgallery": "^2.5.0",
|
||||
"mini-css-extract-plugin": "^2.7.7",
|
||||
"path-browserify": "^1.0.1",
|
||||
"rc-slider": "^10.0.1",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-intl": "^6.6.8",
|
||||
"react-modal-video": "^1.2.9",
|
||||
"swiper": "^8.3.2"
|
||||
},
|
||||
@ -1793,11 +1797,11 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/runtime": {
|
||||
"version": "7.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz",
|
||||
"integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==",
|
||||
"version": "7.25.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
|
||||
"integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
|
||||
"dependencies": {
|
||||
"regenerator-runtime": "^0.13.4"
|
||||
"regenerator-runtime": "^0.14.0"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=6.9.0"
|
||||
@ -1815,6 +1819,11 @@
|
||||
"node": ">=6.9.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@babel/runtime/node_modules/regenerator-runtime": {
|
||||
"version": "0.14.1",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
|
||||
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
|
||||
},
|
||||
"node_modules/@babel/template": {
|
||||
"version": "7.18.10",
|
||||
"resolved": "https://registry.npmjs.org/@babel/template/-/template-7.18.10.tgz",
|
||||
@ -1942,6 +1951,112 @@
|
||||
"node": ">= 4"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/ecma402-abstract": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz",
|
||||
"integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==",
|
||||
"dependencies": {
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/fast-memoize": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz",
|
||||
"integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/icu-messageformat-parser": {
|
||||
"version": "2.7.8",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz",
|
||||
"integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/icu-skeleton-parser": "1.8.2",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/icu-skeleton-parser": {
|
||||
"version": "1.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz",
|
||||
"integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/intl": {
|
||||
"version": "2.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.4.tgz",
|
||||
"integrity": "sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/fast-memoize": "2.2.0",
|
||||
"@formatjs/icu-messageformat-parser": "2.7.8",
|
||||
"@formatjs/intl-displaynames": "6.6.8",
|
||||
"@formatjs/intl-listformat": "7.5.7",
|
||||
"intl-messageformat": "10.5.14",
|
||||
"tslib": "^2.4.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"typescript": "^4.7 || 5"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/intl-displaynames": {
|
||||
"version": "6.6.8",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.6.8.tgz",
|
||||
"integrity": "sha512-Lgx6n5KxN16B3Pb05z3NLEBQkGoXnGjkTBNCZI+Cn17YjHJ3fhCeEJJUqRlIZmJdmaXQhjcQVDp6WIiNeRYT5g==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/intl-listformat": {
|
||||
"version": "7.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.5.7.tgz",
|
||||
"integrity": "sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/intl-localematcher": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz",
|
||||
"integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==",
|
||||
"dependencies": {
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/intl-pluralrules": {
|
||||
"version": "5.2.14",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.2.14.tgz",
|
||||
"integrity": "sha512-l6Ev7aOGXJSh5EPDEqzsbyufdCCKXZk993QXRQebLsB0TXRhIyF4alqjdMEatLwIigK/Mka8kiVIOLeFP5Cj9Q==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@formatjs/intl-relativetimeformat": {
|
||||
"version": "11.2.14",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-11.2.14.tgz",
|
||||
"integrity": "sha512-g1tor23+Z8DUzT9VAlMHzdeNxyhnD6sgaFRFxti6+4cODdaG4mudo77Th8ONg8Z3El2Ienf+CXcCNzJpOG1E7A==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@gatsbyjs/parcel-namer-relative-to-cwd": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-1.9.0.tgz",
|
||||
@ -3463,6 +3578,15 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/hoist-non-react-statics": {
|
||||
"version": "3.3.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz",
|
||||
"integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==",
|
||||
"dependencies": {
|
||||
"@types/react": "*",
|
||||
"hoist-non-react-statics": "^3.3.0"
|
||||
}
|
||||
},
|
||||
"node_modules/@types/http-cache-semantics": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
|
||||
@ -6369,6 +6493,11 @@
|
||||
"url": "https://github.com/fb55/domhandler?sponsor=1"
|
||||
}
|
||||
},
|
||||
"node_modules/dompurify": {
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
|
||||
"integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ=="
|
||||
},
|
||||
"node_modules/domutils": {
|
||||
"version": "2.8.0",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
|
||||
@ -8544,6 +8673,24 @@
|
||||
"gatsby": "^2 || ^3 || ^4"
|
||||
}
|
||||
},
|
||||
"node_modules/gatsby-plugin-intl": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/gatsby-plugin-intl/-/gatsby-plugin-intl-5.10.0.tgz",
|
||||
"integrity": "sha512-dqJB/M7IVHL52HR+vUArxzMNRd49DThQeLgm1ToPpSrdMcscbQvnbPyQ2kn3boJGXtjkY0boDWiQM5/t/xCk+w==",
|
||||
"dependencies": {
|
||||
"@babel/runtime": "^7.21.0",
|
||||
"@formatjs/intl-pluralrules": "^5.1.10",
|
||||
"@formatjs/intl-relativetimeformat": "^11.1.10",
|
||||
"browser-lang": "^0.2.1",
|
||||
"intl": "^1.2.5",
|
||||
"react-intl": "^6.3.2"
|
||||
}
|
||||
},
|
||||
"node_modules/gatsby-plugin-intl/node_modules/browser-lang": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/browser-lang/-/browser-lang-0.2.1.tgz",
|
||||
"integrity": "sha512-+xmtsTxVZKWrKHoNUQp4Tm7BEXlnMwOMAHZAh1SSot1+n04qHLFIH0K5anX52k5BkcauggbaNlWT8f3bVwDh/Q=="
|
||||
},
|
||||
"node_modules/gatsby-plugin-page-creator": {
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-4.24.0.tgz",
|
||||
@ -9376,6 +9523,14 @@
|
||||
"tslib": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"node_modules/hoist-non-react-statics": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
|
||||
"integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
|
||||
"dependencies": {
|
||||
"react-is": "^16.7.0"
|
||||
}
|
||||
},
|
||||
"node_modules/hosted-git-info": {
|
||||
"version": "3.0.8",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
|
||||
@ -9649,6 +9804,22 @@
|
||||
"node": ">= 0.4"
|
||||
}
|
||||
},
|
||||
"node_modules/intl": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/intl/-/intl-1.2.5.tgz",
|
||||
"integrity": "sha512-rK0KcPHeBFBcqsErKSpvZnrOmWOj+EmDkyJ57e90YWaQNqbcivcqmKDlHEeNprDWOsKzPsh1BfSpPQdDvclHVw=="
|
||||
},
|
||||
"node_modules/intl-messageformat": {
|
||||
"version": "10.5.14",
|
||||
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz",
|
||||
"integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/fast-memoize": "2.2.0",
|
||||
"@formatjs/icu-messageformat-parser": "2.7.8",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"node_modules/invariant": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
|
||||
@ -11748,6 +11919,11 @@
|
||||
"cross-spawn": "^6.0.5"
|
||||
}
|
||||
},
|
||||
"node_modules/path-browserify": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
|
||||
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
|
||||
},
|
||||
"node_modules/path-case": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz",
|
||||
@ -12999,6 +13175,32 @@
|
||||
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
|
||||
"integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
|
||||
},
|
||||
"node_modules/react-intl": {
|
||||
"version": "6.6.8",
|
||||
"resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.8.tgz",
|
||||
"integrity": "sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==",
|
||||
"dependencies": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/icu-messageformat-parser": "2.7.8",
|
||||
"@formatjs/intl": "2.10.4",
|
||||
"@formatjs/intl-displaynames": "6.6.8",
|
||||
"@formatjs/intl-listformat": "7.5.7",
|
||||
"@types/hoist-non-react-statics": "^3.3.1",
|
||||
"@types/react": "16 || 17 || 18",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"intl-messageformat": "10.5.14",
|
||||
"tslib": "^2.4.0"
|
||||
},
|
||||
"peerDependencies": {
|
||||
"react": "^16.6.0 || 17 || 18",
|
||||
"typescript": "^4.7 || 5"
|
||||
},
|
||||
"peerDependenciesMeta": {
|
||||
"typescript": {
|
||||
"optional": true
|
||||
}
|
||||
}
|
||||
},
|
||||
"node_modules/react-is": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
||||
@ -16771,11 +16973,18 @@
|
||||
}
|
||||
},
|
||||
"@babel/runtime": {
|
||||
"version": "7.19.0",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.19.0.tgz",
|
||||
"integrity": "sha512-eR8Lo9hnDS7tqkO7NsV+mKvCmv5boaXFSZ70DnfhcgiEne8hv9oCEd36Klw74EtizEqLsy4YnW8UWwpBVolHZA==",
|
||||
"version": "7.25.6",
|
||||
"resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.25.6.tgz",
|
||||
"integrity": "sha512-VBj9MYyDb9tuLq7yzqjgzt6Q+IBQLrGZfdjOekyEirZPHxXWoTSGUTMrpsfi58Up73d13NfYLv8HT9vmznjzhQ==",
|
||||
"requires": {
|
||||
"regenerator-runtime": "^0.13.4"
|
||||
"regenerator-runtime": "^0.14.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"regenerator-runtime": {
|
||||
"version": "0.14.1",
|
||||
"resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.1.tgz",
|
||||
"integrity": "sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"@babel/runtime-corejs3": {
|
||||
@ -16878,6 +17087,104 @@
|
||||
}
|
||||
}
|
||||
},
|
||||
"@formatjs/ecma402-abstract": {
|
||||
"version": "2.0.0",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/ecma402-abstract/-/ecma402-abstract-2.0.0.tgz",
|
||||
"integrity": "sha512-rRqXOqdFmk7RYvj4khklyqzcfQl9vEL/usogncBHRZfZBDOwMGuSRNFl02fu5KGHXdbinju+YXyuR+Nk8xlr/g==",
|
||||
"requires": {
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@formatjs/fast-memoize": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/fast-memoize/-/fast-memoize-2.2.0.tgz",
|
||||
"integrity": "sha512-hnk/nY8FyrL5YxwP9e4r9dqeM6cAbo8PeU9UjyXojZMNvVad2Z06FAVHyR3Ecw6fza+0GH7vdJgiKIVXTMbSBA==",
|
||||
"requires": {
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@formatjs/icu-messageformat-parser": {
|
||||
"version": "2.7.8",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/icu-messageformat-parser/-/icu-messageformat-parser-2.7.8.tgz",
|
||||
"integrity": "sha512-nBZJYmhpcSX0WeJ5SDYUkZ42AgR3xiyhNCsQweFx3cz/ULJjym8bHAzWKvG5e2+1XO98dBYC0fWeeAECAVSwLA==",
|
||||
"requires": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/icu-skeleton-parser": "1.8.2",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@formatjs/icu-skeleton-parser": {
|
||||
"version": "1.8.2",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/icu-skeleton-parser/-/icu-skeleton-parser-1.8.2.tgz",
|
||||
"integrity": "sha512-k4ERKgw7aKGWJZgTarIcNEmvyTVD9FYh0mTrrBMHZ1b8hUu6iOJ4SzsZlo3UNAvHYa+PnvntIwRPt1/vy4nA9Q==",
|
||||
"requires": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@formatjs/intl": {
|
||||
"version": "2.10.4",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl/-/intl-2.10.4.tgz",
|
||||
"integrity": "sha512-56483O+HVcL0c7VucAS2tyH020mt9XTozZO67cwtGg0a7KWDukS/FzW3OnvaHmTHDuYsoPIzO+ZHVfU6fT/bJw==",
|
||||
"requires": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/fast-memoize": "2.2.0",
|
||||
"@formatjs/icu-messageformat-parser": "2.7.8",
|
||||
"@formatjs/intl-displaynames": "6.6.8",
|
||||
"@formatjs/intl-listformat": "7.5.7",
|
||||
"intl-messageformat": "10.5.14",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@formatjs/intl-displaynames": {
|
||||
"version": "6.6.8",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-displaynames/-/intl-displaynames-6.6.8.tgz",
|
||||
"integrity": "sha512-Lgx6n5KxN16B3Pb05z3NLEBQkGoXnGjkTBNCZI+Cn17YjHJ3fhCeEJJUqRlIZmJdmaXQhjcQVDp6WIiNeRYT5g==",
|
||||
"requires": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@formatjs/intl-listformat": {
|
||||
"version": "7.5.7",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-listformat/-/intl-listformat-7.5.7.tgz",
|
||||
"integrity": "sha512-MG2TSChQJQT9f7Rlv+eXwUFiG24mKSzmF144PLb8m8OixyXqn4+YWU+5wZracZGCgVTVmx8viCf7IH3QXoiB2g==",
|
||||
"requires": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@formatjs/intl-localematcher": {
|
||||
"version": "0.5.4",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-localematcher/-/intl-localematcher-0.5.4.tgz",
|
||||
"integrity": "sha512-zTwEpWOzZ2CiKcB93BLngUX59hQkuZjT2+SAQEscSm52peDW/getsawMcWF1rGRpMCX6D7nSJA3CzJ8gn13N/g==",
|
||||
"requires": {
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@formatjs/intl-pluralrules": {
|
||||
"version": "5.2.14",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-pluralrules/-/intl-pluralrules-5.2.14.tgz",
|
||||
"integrity": "sha512-l6Ev7aOGXJSh5EPDEqzsbyufdCCKXZk993QXRQebLsB0TXRhIyF4alqjdMEatLwIigK/Mka8kiVIOLeFP5Cj9Q==",
|
||||
"requires": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@formatjs/intl-relativetimeformat": {
|
||||
"version": "11.2.14",
|
||||
"resolved": "https://registry.npmjs.org/@formatjs/intl-relativetimeformat/-/intl-relativetimeformat-11.2.14.tgz",
|
||||
"integrity": "sha512-g1tor23+Z8DUzT9VAlMHzdeNxyhnD6sgaFRFxti6+4cODdaG4mudo77Th8ONg8Z3El2Ienf+CXcCNzJpOG1E7A==",
|
||||
"requires": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/intl-localematcher": "0.5.4",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"@gatsbyjs/parcel-namer-relative-to-cwd": {
|
||||
"version": "1.9.0",
|
||||
"resolved": "https://registry.npmjs.org/@gatsbyjs/parcel-namer-relative-to-cwd/-/parcel-namer-relative-to-cwd-1.9.0.tgz",
|
||||
@ -17922,6 +18229,15 @@
|
||||
"@types/node": "*"
|
||||
}
|
||||
},
|
||||
"@types/hoist-non-react-statics": {
|
||||
"version": "3.3.5",
|
||||
"resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz",
|
||||
"integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==",
|
||||
"requires": {
|
||||
"@types/react": "*",
|
||||
"hoist-non-react-statics": "^3.3.0"
|
||||
}
|
||||
},
|
||||
"@types/http-cache-semantics": {
|
||||
"version": "4.0.1",
|
||||
"resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz",
|
||||
@ -20110,6 +20426,11 @@
|
||||
"domelementtype": "^2.2.0"
|
||||
}
|
||||
},
|
||||
"dompurify": {
|
||||
"version": "3.1.6",
|
||||
"resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.1.6.tgz",
|
||||
"integrity": "sha512-cTOAhc36AalkjtBpfG6O8JimdTMWNXjiePT2xQH/ppBGi/4uIpmj8eKyIkMJErXWARyINV/sB38yf8JCLF5pbQ=="
|
||||
},
|
||||
"domutils": {
|
||||
"version": "2.8.0",
|
||||
"resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz",
|
||||
@ -21864,6 +22185,26 @@
|
||||
"webpack-merge": "^5.8.0"
|
||||
}
|
||||
},
|
||||
"gatsby-plugin-intl": {
|
||||
"version": "5.10.0",
|
||||
"resolved": "https://registry.npmjs.org/gatsby-plugin-intl/-/gatsby-plugin-intl-5.10.0.tgz",
|
||||
"integrity": "sha512-dqJB/M7IVHL52HR+vUArxzMNRd49DThQeLgm1ToPpSrdMcscbQvnbPyQ2kn3boJGXtjkY0boDWiQM5/t/xCk+w==",
|
||||
"requires": {
|
||||
"@babel/runtime": "^7.21.0",
|
||||
"@formatjs/intl-pluralrules": "^5.1.10",
|
||||
"@formatjs/intl-relativetimeformat": "^11.1.10",
|
||||
"browser-lang": "^0.2.1",
|
||||
"intl": "^1.2.5",
|
||||
"react-intl": "^6.3.2"
|
||||
},
|
||||
"dependencies": {
|
||||
"browser-lang": {
|
||||
"version": "0.2.1",
|
||||
"resolved": "https://registry.npmjs.org/browser-lang/-/browser-lang-0.2.1.tgz",
|
||||
"integrity": "sha512-+xmtsTxVZKWrKHoNUQp4Tm7BEXlnMwOMAHZAh1SSot1+n04qHLFIH0K5anX52k5BkcauggbaNlWT8f3bVwDh/Q=="
|
||||
}
|
||||
}
|
||||
},
|
||||
"gatsby-plugin-page-creator": {
|
||||
"version": "4.24.0",
|
||||
"resolved": "https://registry.npmjs.org/gatsby-plugin-page-creator/-/gatsby-plugin-page-creator-4.24.0.tgz",
|
||||
@ -22332,6 +22673,14 @@
|
||||
"tslib": "^2.0.3"
|
||||
}
|
||||
},
|
||||
"hoist-non-react-statics": {
|
||||
"version": "3.3.2",
|
||||
"resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz",
|
||||
"integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==",
|
||||
"requires": {
|
||||
"react-is": "^16.7.0"
|
||||
}
|
||||
},
|
||||
"hosted-git-info": {
|
||||
"version": "3.0.8",
|
||||
"resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-3.0.8.tgz",
|
||||
@ -22516,6 +22865,22 @@
|
||||
"side-channel": "^1.0.4"
|
||||
}
|
||||
},
|
||||
"intl": {
|
||||
"version": "1.2.5",
|
||||
"resolved": "https://registry.npmjs.org/intl/-/intl-1.2.5.tgz",
|
||||
"integrity": "sha512-rK0KcPHeBFBcqsErKSpvZnrOmWOj+EmDkyJ57e90YWaQNqbcivcqmKDlHEeNprDWOsKzPsh1BfSpPQdDvclHVw=="
|
||||
},
|
||||
"intl-messageformat": {
|
||||
"version": "10.5.14",
|
||||
"resolved": "https://registry.npmjs.org/intl-messageformat/-/intl-messageformat-10.5.14.tgz",
|
||||
"integrity": "sha512-IjC6sI0X7YRjjyVH9aUgdftcmZK7WXdHeil4KwbjDnRWjnVitKpAx3rr6t6di1joFp5188VqKcobOPA6mCLG/w==",
|
||||
"requires": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/fast-memoize": "2.2.0",
|
||||
"@formatjs/icu-messageformat-parser": "2.7.8",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"invariant": {
|
||||
"version": "2.2.4",
|
||||
"resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz",
|
||||
@ -24056,6 +24421,11 @@
|
||||
"cross-spawn": "^6.0.5"
|
||||
}
|
||||
},
|
||||
"path-browserify": {
|
||||
"version": "1.0.1",
|
||||
"resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz",
|
||||
"integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g=="
|
||||
},
|
||||
"path-case": {
|
||||
"version": "3.0.4",
|
||||
"resolved": "https://registry.npmjs.org/path-case/-/path-case-3.0.4.tgz",
|
||||
@ -24891,6 +25261,23 @@
|
||||
"resolved": "https://registry.npmjs.org/react-error-overlay/-/react-error-overlay-6.0.11.tgz",
|
||||
"integrity": "sha512-/6UZ2qgEyH2aqzYZgQPxEnz33NJ2gNsnHA2o5+o4wW9bLM/JYQitNP9xPhsXwC08hMMovfGe/8retsdDsczPRg=="
|
||||
},
|
||||
"react-intl": {
|
||||
"version": "6.6.8",
|
||||
"resolved": "https://registry.npmjs.org/react-intl/-/react-intl-6.6.8.tgz",
|
||||
"integrity": "sha512-M0pkhzcgV31h++2901BiRXWl69hp2zPyLxRrSwRjd1ErXbNoubz/f4M6DrRTd4OiSUrT4ajRQzrmtS5plG4FtA==",
|
||||
"requires": {
|
||||
"@formatjs/ecma402-abstract": "2.0.0",
|
||||
"@formatjs/icu-messageformat-parser": "2.7.8",
|
||||
"@formatjs/intl": "2.10.4",
|
||||
"@formatjs/intl-displaynames": "6.6.8",
|
||||
"@formatjs/intl-listformat": "7.5.7",
|
||||
"@types/hoist-non-react-statics": "^3.3.1",
|
||||
"@types/react": "16 || 17 || 18",
|
||||
"hoist-non-react-statics": "^3.3.2",
|
||||
"intl-messageformat": "10.5.14",
|
||||
"tslib": "^2.4.0"
|
||||
}
|
||||
},
|
||||
"react-is": {
|
||||
"version": "16.13.1",
|
||||
"resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz",
|
||||
|
||||
@ -16,13 +16,17 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"axios": "^0.27.2",
|
||||
"dompurify": "^3.1.6",
|
||||
"gatsby": "^4.24.1",
|
||||
"gatsby-plugin-intl": "^5.10.0",
|
||||
"gatsby-plugin-resolve-src": "^2.1.0",
|
||||
"lightgallery": "^2.5.0",
|
||||
"mini-css-extract-plugin": "^2.7.7",
|
||||
"path-browserify": "^1.0.1",
|
||||
"rc-slider": "^10.0.1",
|
||||
"react": "^17.0.2",
|
||||
"react-dom": "^17.0.2",
|
||||
"react-intl": "^6.6.8",
|
||||
"react-modal-video": "^1.2.9",
|
||||
"swiper": "^8.3.2"
|
||||
},
|
||||
|
||||
33
src/common/api.js
Normal file
@ -0,0 +1,33 @@
|
||||
class Api {
|
||||
constructor() {
|
||||
if (!Api.instance) {
|
||||
Api.instance = this;
|
||||
}
|
||||
return Api.instance;
|
||||
}
|
||||
|
||||
async get(endpoint, jsonFile) {
|
||||
const data = await this.readJsonFile(jsonFile);
|
||||
if (!data[endpoint]) {
|
||||
throw new Error(`Error fetching ${endpoint}: Endpoint not found`);
|
||||
}
|
||||
return data[endpoint];
|
||||
}
|
||||
|
||||
async readJsonFile(jsonFile) {
|
||||
const filePath = `/data/${jsonFile}`;
|
||||
const response = await fetch(filePath);
|
||||
if (!response.ok) {
|
||||
throw new Error(`Error fetching ${jsonFile}: ${response.statusText}`);
|
||||
}
|
||||
const data = await response.json();
|
||||
return data;
|
||||
}
|
||||
|
||||
// Otros métodos HTTP (POST, PUT, DELETE, etc.) pueden ser añadidos aquí si es necesario
|
||||
}
|
||||
|
||||
const instance = new Api();
|
||||
Object.freeze(instance);
|
||||
|
||||
export default instance;
|
||||
22
src/common/urlHelper.js
Normal file
@ -0,0 +1,22 @@
|
||||
let instance = null;
|
||||
|
||||
class UrlHelper {
|
||||
constructor(locale) {
|
||||
if (!instance) {
|
||||
this.locale = locale;
|
||||
instance = this;
|
||||
}
|
||||
|
||||
return instance;
|
||||
}
|
||||
|
||||
setLocale(locale) {
|
||||
this.locale = locale;
|
||||
}
|
||||
|
||||
getLocalizedUrl(path) {
|
||||
return `/${this.locale}${path}`;
|
||||
}
|
||||
}
|
||||
|
||||
export default UrlHelper;
|
||||
@ -1,7 +1,12 @@
|
||||
import React from 'react';
|
||||
import DOMPurify from 'dompurify';
|
||||
import aboutData from 'data/ITCreative/about.json';
|
||||
import { useIntl } from "gatsby-plugin-intl";
|
||||
|
||||
const About = () => {
|
||||
const intl = useIntl();
|
||||
const title_1= DOMPurify.sanitize(intl.formatMessage({ id: "header_1" }).trim().replace(/^"|"$/g, ''));
|
||||
|
||||
return (
|
||||
<section className="about style-7">
|
||||
<div className="container">
|
||||
@ -13,8 +18,8 @@ const About = () => {
|
||||
<img src="/assets/img/line_l.png" alt="" />
|
||||
<h5> About Us </h5>
|
||||
</div>
|
||||
<h2 className="">
|
||||
Meet With <span> A House </span> <br /> Of Creatives.
|
||||
<h2 className="" dangerouslySetInnerHTML={{ __html: title_1 }}>
|
||||
|
||||
</h2>
|
||||
</div>
|
||||
<div className="text mb-30">
|
||||
|
||||
34
src/components/Navbars/LanguageSelector/LanguageSelector.jsx
Normal file
@ -0,0 +1,34 @@
|
||||
import React from 'react';
|
||||
import { changeLocale, IntlContextConsumer } from 'gatsby-plugin-intl';
|
||||
|
||||
const LanguageSelector = () => {
|
||||
|
||||
|
||||
|
||||
return (
|
||||
<div>
|
||||
<IntlContextConsumer>
|
||||
{({ languages, language: currentLocale }) => (
|
||||
<div>
|
||||
<button className="icon-35 dropdown-toggle p-0 border-0 bg-transparent rounded-circle img-cover text-white" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<img src={currentLocale === 'en' ? '/assets/img/lang.png' : '/assets/img/lang-es.png'} alt="Language flag" />
|
||||
</button>
|
||||
<ul className="dropdown-menu" aria-labelledby="dropdownMenuButton1">
|
||||
{languages.map((language) => (
|
||||
<button className="dropdown-item"
|
||||
key={language}
|
||||
onClick={() => changeLocale(language)}
|
||||
disabled={language === currentLocale}>
|
||||
{language === 'en' ? 'English' : 'Español'}
|
||||
</button>
|
||||
))}
|
||||
</ul>
|
||||
</div> // Cerrar el elemento contenedor
|
||||
)}
|
||||
</IntlContextConsumer>
|
||||
|
||||
</div>
|
||||
);
|
||||
};
|
||||
|
||||
export default LanguageSelector
|
||||
53
src/components/Navbars/LanguageSelector/LanguageSwitcher.jsx
Normal file
@ -0,0 +1,53 @@
|
||||
import React, { useEffect, useState } from 'react';
|
||||
import { IntlProvider, useIntl } from 'gatsby-plugin-intl';
|
||||
import { navigate } from 'gatsby';
|
||||
|
||||
const LanguageSwitcher = () => {
|
||||
const [messages, setMessages] = useState({});
|
||||
const [languages, setLanguages] = useState([]);
|
||||
const intl = useIntl();
|
||||
const currentLanguage = intl.locale;
|
||||
|
||||
useEffect(() => {
|
||||
const fetchMessages = async () => {
|
||||
try {
|
||||
const response = await fetch('/data/language/languages.json');
|
||||
const data = await response.json();
|
||||
setMessages(data);
|
||||
setLanguages(Object.keys(data));
|
||||
} catch (error) {
|
||||
console.error('Error fetching texts:', error);
|
||||
}
|
||||
};
|
||||
|
||||
fetchMessages();
|
||||
}, []);
|
||||
|
||||
const handleLanguageChange = (newLanguage) => {
|
||||
const path = window.location.pathname;
|
||||
const newPath = `/${newLanguage}${path.substring(3)}`;
|
||||
navigate(newPath);
|
||||
};
|
||||
|
||||
return (
|
||||
<IntlProvider locale={currentLanguage} messages={messages[currentLanguage]}>
|
||||
<div>
|
||||
<button className="icon-35 dropdown-toggle p-0 border-0 bg-transparent rounded-circle img-cover text-white" type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<img src={currentLanguage === 'en' ? '/assets/img/lang.png' : '/assets/img/lang-es.png'} alt="Language flag" />
|
||||
</button>
|
||||
<ul className="dropdown-menu" aria-labelledby="dropdownMenuButton1">
|
||||
{languages.map((lang) => (
|
||||
<button className="dropdown-item"
|
||||
key={lang}
|
||||
onClick={() => handleLanguageChange(lang)}
|
||||
disabled={lang === currentLanguage}>
|
||||
{lang === 'en' ? 'English' : 'Español'}
|
||||
</button>
|
||||
))}
|
||||
</ul>
|
||||
</div>
|
||||
</IntlProvider>
|
||||
);
|
||||
};
|
||||
|
||||
export default LanguageSwitcher;
|
||||
@ -1,6 +1,7 @@
|
||||
import React, { useEffect, useRef } from 'react';
|
||||
import navbarScrollEffect from "common/navbarScrollEffect";
|
||||
import scrollToSection from 'common/scrollToSection';
|
||||
import LanguageSelector from '../LanguageSelector/LanguageSwitcher';
|
||||
|
||||
const OnePageNav = () => {
|
||||
const navbarRef = useRef(null);
|
||||
@ -100,15 +101,7 @@ const OnePageNav = () => {
|
||||
<i className="bi bi-search"></i>
|
||||
</a>
|
||||
<div className="dropdown" onMouseMove={handleMouseMove} onMouseLeave={handleMouseLeave}>
|
||||
<button
|
||||
className="icon-35 dropdown-toggle p-0 border-0 bg-transparent rounded-circle img-cover text-white"
|
||||
type="button" id="dropdownMenuButton1" data-bs-toggle="dropdown" aria-expanded="false">
|
||||
<img src="/assets/img/lang.png" alt="" />
|
||||
</button>
|
||||
<ul className="dropdown-menu" aria-labelledby="dropdownMenuButton1">
|
||||
<li><a className="dropdown-item" href="#">English</a></li>
|
||||
<li><a className="dropdown-item" href="#">Arabic</a></li>
|
||||
</ul>
|
||||
<LanguageSelector />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,15 +1,37 @@
|
||||
import React from 'react';
|
||||
import React,{ useEffect, useState } from 'react';
|
||||
import { Link } from 'gatsby';
|
||||
import aboutData from 'data/Software/about.json';
|
||||
import DOMPurify from 'dompurify';
|
||||
import { useIntl, FormattedMessage } from "gatsby-plugin-intl";
|
||||
import api from '../../common/api';
|
||||
import UrlHelper from '../../common/urlHelper';
|
||||
|
||||
const About = () => {
|
||||
const intl = useIntl();
|
||||
const about_title1= DOMPurify.sanitize(intl.formatMessage({ id: "about_title1" }).trim().replace(/^"|"$/g, ''));
|
||||
const about_title5= DOMPurify.sanitize(intl.formatMessage({ id: "about_title5" }).trim().replace(/^"|"$/g, ''));
|
||||
const [dataAbout, setAboutData] = useState({numbers: [], features: []});
|
||||
const urlHelper = new UrlHelper(intl.locale);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
const response = await api.get('about','about.json');
|
||||
setAboutData(response);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
|
||||
fetchData();
|
||||
}, []);
|
||||
|
||||
return (
|
||||
<section className="about section-padding style-3" data-scroll-index="3">
|
||||
<div className="top-content">
|
||||
<div className="img img-left">
|
||||
<img src="/assets/img/about/style_3_1.png" alt="" />
|
||||
{
|
||||
aboutData.numbers.map((number, index) => (
|
||||
dataAbout.numbers.map((number, index) => (
|
||||
<div className="info-circle" key={index}>
|
||||
<div className="cont">
|
||||
<h2>{ number.value }</h2>
|
||||
@ -23,23 +45,20 @@ const About = () => {
|
||||
<div className="row gx-0 justify-content-end">
|
||||
<div className="col-lg-5">
|
||||
<div className="info">
|
||||
<div className="section-head long-shape mb-40 style-3">
|
||||
<h3>Iteck’s <span>Mission & Vision</span></h3>
|
||||
<div className="section-head long-shape mb-40 style-3" dangerouslySetInnerHTML={{ __html: about_title1 }}>
|
||||
|
||||
</div>
|
||||
<h5 className="h5">
|
||||
“It is only when they go wrong that machines remind you how powerful they are.”
|
||||
{intl.formatMessage({ id: "about_title2" })}
|
||||
</h5>
|
||||
<div className="text mb-20">
|
||||
Iteck Co is the partner of choice for many of the world’s leading enterprises, SMEs
|
||||
and technology challengers. We help businesses elevate their value through custom
|
||||
software development, product design, QA and consultancy services.
|
||||
{intl.formatMessage({ id: "about_title3" })}
|
||||
</div>
|
||||
<div className="text mb-70">
|
||||
Iteck specializes in technological and IT-related services such as product
|
||||
engineering, warranty management, building cloud, etc.
|
||||
{intl.formatMessage({ id: "about_title4" })}
|
||||
</div>
|
||||
<Link to="/page-about-5" className="btn rounded-pill bg-blue2 sm-butn text-white">
|
||||
<span>More About Us</span>
|
||||
<Link to={urlHelper.getLocalizedUrl('/page-about-5')} className="btn rounded-pill bg-blue2 sm-butn text-white">
|
||||
<span><FormattedMessage id="more_about" defaultMessage="Loading..." /></span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
@ -51,20 +70,19 @@ const About = () => {
|
||||
<div className="row">
|
||||
<div className="col-lg-5">
|
||||
<div className="info pe-lg-5">
|
||||
<div className="section-head mb-40 style-3">
|
||||
<h3>Iteck’s <span>Technology</span></h3>
|
||||
<div className="section-head mb-40 style-3" dangerouslySetInnerHTML={{ __html: about_title5 }}>
|
||||
|
||||
</div>
|
||||
<div className="text mb-30">
|
||||
Our team can assist you in transforming your business through latest tech
|
||||
capabilities to stay ahead of the curve.
|
||||
{intl.formatMessage({ id: "about_title6" })}
|
||||
</div>
|
||||
<ul>
|
||||
{
|
||||
aboutData.features.map((feature, index) => (<li key={index}> <i className="bi bi-star-fill me-3"></i> { feature }</li>))
|
||||
dataAbout.features.map((feature, index) => (<li key={index}> <i className="bi bi-star-fill me-3"></i> { feature }</li>))
|
||||
}
|
||||
</ul>
|
||||
<Link to="/page-about-5" className="btn rounded-pill border-blue2 hover-blue2 mt-60 sm-butn">
|
||||
<span>How We Works</span>
|
||||
<Link to={urlHelper.getLocalizedUrl('/page-about-5')} className="btn rounded-pill border-blue2 hover-blue2 mt-60 sm-butn">
|
||||
<span>{intl.formatMessage({ id: "about_title7" })}</span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
@ -78,4 +96,5 @@ const About = () => {
|
||||
)
|
||||
}
|
||||
|
||||
|
||||
export default About
|
||||
@ -1,19 +1,40 @@
|
||||
import React from 'react';
|
||||
import React,{ useEffect, useState } from 'react';
|
||||
import { Link } from 'gatsby';
|
||||
import DOMPurify from 'dompurify';
|
||||
import data from 'data/Software/blog.json';
|
||||
import { useIntl } from "gatsby-plugin-intl";
|
||||
import api from '../../common/api';
|
||||
|
||||
const Blog = () => {
|
||||
const intl = useIntl();
|
||||
const blog_title1= DOMPurify.sanitize(intl.formatMessage({ id: "blog_title1" }).trim().replace(/^"|"$/g, ''));
|
||||
|
||||
const [dataBlog, setBlogs] = useState({blogs: [], faq: [],clients: []});
|
||||
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
const response = await api.get('blog','blog.json');
|
||||
setBlogs(response);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
|
||||
fetchData();
|
||||
}, []);
|
||||
return (
|
||||
<section className="blog section-padding style-3" data-scroll-index="7">
|
||||
<div className="container">
|
||||
<div className="row gx-0 justify-content-between">
|
||||
<div className="col-lg-5">
|
||||
<div className="blog-content">
|
||||
<div className="section-head style-3 d-flex align-items-center mb-50">
|
||||
<h3>Iteck’s <span>Journal</span></h3> <Link to="/page-blog-5" className="text-muted ms-5 ps-5 mt-2">All Articles <i className="bi bi-chevron-right ms-1"></i></Link>
|
||||
<div className="section-head style-3 d-flex align-items-center mb-50" >
|
||||
<div dangerouslySetInnerHTML={{ __html: blog_title1 }}></div>
|
||||
<Link to="/page-blog-5" className="text-muted ms-5 ps-5 mt-2">{intl.formatMessage({ id: "all_articles" })} <i className="bi bi-chevron-right ms-1"></i></Link>
|
||||
</div>
|
||||
{
|
||||
data.blogs.map((post, i) => (
|
||||
dataBlog.blogs.map((post, i) => (
|
||||
<div className={`card border-0 bg-transparent rounded-0 ${i !== data.blogs.length - 1 ? 'border-bottom brd-gray':''} pb-4 mb-4`} key={i}>
|
||||
<div className="row align-items-center">
|
||||
<div className="col-lg-4">
|
||||
@ -60,7 +81,7 @@ const Blog = () => {
|
||||
</div>
|
||||
<div className="accordion" id="accordionExample">
|
||||
{
|
||||
data.faq.map((item, index) => (
|
||||
dataBlog.faq.map((item, index) => (
|
||||
<div className="accordion-item" key={index}>
|
||||
<h2 className="accordion-header" id={`heading${index+1}`}>
|
||||
<button className={`accordion-button ${index === 0 ? '':'collapsed'}`} type="button" data-bs-toggle="collapse" data-bs-target={`#collapse${index+1}`} aria-expanded="true" aria-controls={`collapse${index+1}`}>
|
||||
@ -85,7 +106,7 @@ const Blog = () => {
|
||||
<div className="client-logos mt-100">
|
||||
<div className="row align-items-center">
|
||||
{
|
||||
data.clients.map((client, index) => (
|
||||
dataBlog.clients.map((client, index) => (
|
||||
<div className="col-6 col-lg-2" key={index}>
|
||||
<a href="#" className="img d-block">
|
||||
<img src={client} alt="" />
|
||||
|
||||
@ -86,7 +86,7 @@ const Footer = () => {
|
||||
</div>
|
||||
<div className="col-lg-6">
|
||||
<small className="small">
|
||||
© 2022 Copyrights by <a href="#" className="fw-bold text-decoration-underline">Iteck Co.</a> All Rights Reserved. Designed by <a href="#" className="fw-bold text-decoration-underline">ThemesCamp</a>
|
||||
© 2024 Copyrights by <a href="#" className="fw-bold text-decoration-underline">Nextream</a> All Rights Reserved. Designed by <a href="#" className="fw-bold text-decoration-underline">Nextream</a>
|
||||
</small>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,6 +1,11 @@
|
||||
import React from 'react';
|
||||
import DOMPurify from 'dompurify';
|
||||
import { useIntl } from "gatsby-plugin-intl";
|
||||
|
||||
const Header = () => {
|
||||
const intl = useIntl();
|
||||
const header_1= DOMPurify.sanitize(intl.formatMessage({ id: "header_1" }).trim().replace(/^"|"$/g, ''));
|
||||
|
||||
return (
|
||||
<header className="style-3 overflow-hidden" data-scroll-index="0">
|
||||
<div className="container">
|
||||
@ -8,29 +13,27 @@ const Header = () => {
|
||||
<div className="row">
|
||||
<div className="col-lg-5">
|
||||
<div className="info">
|
||||
<h1 className="h1">Make your life easier with help from <span>Iteck</span></h1>
|
||||
<p className="p">We help businesses elevate their value through custom software development, product design, QA & consultancy services.</p>
|
||||
<h5 className="h5">Get Free Quote! <span className="fw-normal ms-1">We’ll contact back in 24h</span></h5>
|
||||
<h1 className="h1" dangerouslySetInnerHTML={{ __html: header_1 }}></h1>
|
||||
<p className="p">{intl.formatMessage({ id: "header_2" })}</p>
|
||||
<h5 className="h5">{intl.formatMessage({ id: "get_free_quotes" })} <span className="fw-normal ms-1">{intl.formatMessage({ id: "header_3" })}</span></h5>
|
||||
<form action="contact.php" className="form mt-30" method="post">
|
||||
<div className="row gx-3">
|
||||
<div className="col-6">
|
||||
<div className="form-group input-with-icon">
|
||||
<input type="text" className="form-control" placeholder="Your Email *" />
|
||||
<input type="text" className="form-control" placeholder={intl.formatMessage({ id: "your_email" })} />
|
||||
<span className="input-icon"><i className="far fa-envelope"></i></span>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-6">
|
||||
<div className="form-group">
|
||||
<select className="form-select" defaultValue={"Your inquiry about"}>
|
||||
<option value="">Your inquiry about</option>
|
||||
<option value="">Your inquiry about</option>
|
||||
<option value="">Your inquiry about</option>
|
||||
<option value="">{intl.formatMessage({ id: "inquiry_about" })}</option>
|
||||
</select>
|
||||
</div>
|
||||
</div>
|
||||
<div className="col-12">
|
||||
<button className="btn dark-butn hover-darkBlue rounded-pill w-100 mt-3">
|
||||
<span>Request A Consultation</span>
|
||||
<span>{intl.formatMessage({ id: "request_a_consultation" })}</span>
|
||||
</button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,13 +1,15 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'gatsby';
|
||||
import projects from 'data/Software/projects.json';
|
||||
import { useIntl } from "gatsby-plugin-intl";
|
||||
|
||||
const Projects = () => {
|
||||
const intl = useIntl();
|
||||
return (
|
||||
<section className="projects section-padding style-3" data-scroll-index="4">
|
||||
<div className="container">
|
||||
<div className="section-head style-3 text-center">
|
||||
<h3>Our Featured <span>Projects</span></h3>
|
||||
<h3>{intl.formatMessage({ id: "our_featured" })} <span>{intl.formatMessage({ id: "projects" })}</span></h3>
|
||||
</div>
|
||||
<div className="content">
|
||||
<div className="row">
|
||||
@ -15,11 +17,11 @@ const Projects = () => {
|
||||
projects.map((project, i) => (
|
||||
<div className={i === 0 ? 'col-lg-7' : i === 1 ? 'col-lg-5' : 'col-lg-6'} key={i}>
|
||||
<div className="project-card d-block mb-30 style-3">
|
||||
<Link to="/page-single-project-5" className="img img-cover d-block">
|
||||
<Link to={ project.link } className="img img-cover d-block">
|
||||
<img src={project.image} alt="" />
|
||||
</Link>
|
||||
<div className="info">
|
||||
<h5 className="h5"><Link to="/page-single-project-5">{ project.title }</Link></h5>
|
||||
<h5 className="h5"><Link to={ project.link }>{ project.title }</Link></h5>
|
||||
<small className="small"><a href="#">{ project.description }</a></small>
|
||||
</div>
|
||||
</div>
|
||||
@ -28,8 +30,8 @@ const Projects = () => {
|
||||
}
|
||||
</div>
|
||||
<div className="text-center">
|
||||
<Link to="/page-portfolio-5" className="btn rounded-pill bg-blue2 sm-butn mt-60 text-white">
|
||||
<span>See All Projects</span>
|
||||
<Link to="http://surteloya.com" className="btn rounded-pill bg-blue2 sm-butn mt-60 text-white">
|
||||
<span>{intl.formatMessage({ id: "see_all_projects" })}</span>
|
||||
</Link>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,13 +1,15 @@
|
||||
import React from 'react';
|
||||
import { Link } from 'gatsby';
|
||||
import { useIntl } from "gatsby-plugin-intl";
|
||||
import services from 'data/Software/services.json';
|
||||
|
||||
const Services = () => {
|
||||
const intl = useIntl();
|
||||
return (
|
||||
<section className="services style-3 section-padding pb-70" data-scroll-index="2">
|
||||
<div className="container">
|
||||
<div className="section-head style-3 d-flex align-items-center">
|
||||
<h3>Our Main <span>Services</span></h3> <Link to="/page-services-5" className="text-muted ms-5 ps-5 mt-2">See full services <i className="bi bi-chevron-right ms-1"></i></Link>
|
||||
<h3>{intl.formatMessage({ id: "our_main" })} <span>{intl.formatMessage({ id: "services" })}</span></h3> <Link to="/page-services-5" className="text-muted ms-5 ps-5 mt-2">{intl.formatMessage({ id: "see_full_services" })} <i className="bi bi-chevron-right ms-1"></i></Link>
|
||||
</div>
|
||||
<div className="row">
|
||||
{
|
||||
@ -22,7 +24,7 @@ const Services = () => {
|
||||
<div className="text">
|
||||
{ service.details }
|
||||
</div>
|
||||
<Link to="/page-portfolio-5"><span>see projects</span> <i className="bi bi-chevron-right ms-1"></i></Link>
|
||||
<Link to="/page-portfolio-5"><span>{intl.formatMessage({ id: "see_projects" })}</span> <i className="bi bi-chevron-right ms-1"></i></Link>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@ -1,7 +1,9 @@
|
||||
import React from 'react';
|
||||
import React , { useEffect, useState }from 'react';
|
||||
import { Swiper, SwiperSlide } from 'swiper/react';
|
||||
import SwiperCore, { Pagination, Navigation, Autoplay } from 'swiper';
|
||||
import testimonials from 'data/Software/testimonials.json';
|
||||
import { useIntl } from "gatsby-plugin-intl";
|
||||
//import testimonials from 'data/Software/testimonials.json';
|
||||
import api from '../../common/api';
|
||||
|
||||
import "swiper/css";
|
||||
import 'swiper/css/autoplay';
|
||||
@ -11,12 +13,27 @@ import 'swiper/css/pagination';
|
||||
SwiperCore.use([Pagination, Navigation, Autoplay]);
|
||||
|
||||
const Testimonials = () => {
|
||||
const intl = useIntl();
|
||||
const [testimonials, setTestimonials] = useState([]);
|
||||
|
||||
useEffect(() => {
|
||||
const fetchData = async () => {
|
||||
try {
|
||||
const response = await api.get('testimonials', 'testimonials.json');
|
||||
setTestimonials(response);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
}
|
||||
};
|
||||
|
||||
fetchData();
|
||||
}, []);
|
||||
return (
|
||||
<section className="testimonials style-3" data-scroll-index="1">
|
||||
<div className="container">
|
||||
<div className="content section-padding">
|
||||
<div className="section-head style-3">
|
||||
<h3>Loved By Thousand <span>Clients</span></h3>
|
||||
<h3> {intl.formatMessage({ id: "loved_thousands" })} <span>{intl.formatMessage({ id: "clients" })}</span></h3>
|
||||
</div>
|
||||
<div className="testimonial-slider style-3">
|
||||
<Swiper
|
||||
|
||||
@ -2,21 +2,25 @@
|
||||
{
|
||||
"image": "/assets/img/projects/3.png",
|
||||
"title": "Catty Boxes NFT Blockchain",
|
||||
"description": "Game Development"
|
||||
"description": "Game Development",
|
||||
"link":"http://surteloya.com"
|
||||
},
|
||||
{
|
||||
"image": "/assets/img/projects/4.png",
|
||||
"title": "Catty Boxes NFT Blockchain",
|
||||
"description": "Game Development"
|
||||
"description": "Game Development",
|
||||
"link":"http://surteloya.com"
|
||||
},
|
||||
{
|
||||
"image": "/assets/img/projects/5.png",
|
||||
"title": "Catty Boxes NFT Blockchain",
|
||||
"description": "Game Development"
|
||||
"description": "Game Development",
|
||||
"link":"http://surteloya.com"
|
||||
},
|
||||
{
|
||||
"image": "/assets/img/projects/6.png",
|
||||
"title": "Catty Boxes NFT Blockchain",
|
||||
"description": "Game Development"
|
||||
"description": "Game Development",
|
||||
"link":"http://surteloya.com"
|
||||
}
|
||||
]
|
||||
30
src/intl/en.json
Normal file
@ -0,0 +1,30 @@
|
||||
{
|
||||
"welcome": "Welcome to our website",
|
||||
"features": "Features",
|
||||
"get_free_quotes": "Get Free Quotes!",
|
||||
"built_with_best_features": "Built With Best Features & Good UX",
|
||||
"header_1":" Make your life easier with help from <span>Nextream</span>",
|
||||
"header_2":"We help businesses elevate their value through custom software development, product design, QA & consultancy services.",
|
||||
"header_3":"We’ll contact back in 24h",
|
||||
"inquiry_about":"Your inquiry about",
|
||||
"request_a_consultation":"Request a consultation!",
|
||||
"about_title1":"<h3>Nextream’s <span>Mission & Vision</span></h3>",
|
||||
"about_title2":"“It is only when they go wrong that machines remind you how powerful they are.”",
|
||||
"about_title3":" Nextream Co is the partner of choice for many of the world’s leading enterprises, SMEs and technology challengers. We help businesses elevate their value through custom software development, product design, QA and consultancy services.",
|
||||
"about_title4":" Nextream specializes in technological and IT-related services such as product engineering, warranty management, building cloud, etc.",
|
||||
"about_title5":"<h3>Nextream’s <span>Technology</span></h3>",
|
||||
"about_title6":"Our team can assist you in transforming your business through latest tech capabilities to stay ahead of the curve.",
|
||||
"about_title7":"How We Works",
|
||||
"more_about":"More About Us",
|
||||
"loved_thousands":"Loved By Thousand",
|
||||
"clients":"Clients",
|
||||
"our_main":"Our Main",
|
||||
"services":"Services",
|
||||
"see_full_services":"See Full Services",
|
||||
"see_projects":"See Projects",
|
||||
"our_featured":"Our Featured",
|
||||
"projects":"Projects",
|
||||
"see_all_projects":"See All Projects",
|
||||
"blog_title1":"<h3>Nextream's <span>Journal</span></h3>",
|
||||
"all_articles":"All Articles"
|
||||
}
|
||||
31
src/intl/es.json
Normal file
@ -0,0 +1,31 @@
|
||||
{
|
||||
"welcome": "Bienvenido a nuestro sitio web",
|
||||
"features": "Características",
|
||||
"get_free_quotes": "¡Obtenga una cotización gratuita!",
|
||||
"built_with_best_features": "Construido con las mejores características y buena UX",
|
||||
"header_1":"Haz tu vida más fácil con la ayuda de <span>Nextream</span>",
|
||||
"header_2":"Ayudamos a las empresas a aumentar su valor mediante el desarrollo de software personalizado, diseño de productos, control de calidad y servicios de consultoría.",
|
||||
"header_3":"Nos pondremos en contacto en 24h.",
|
||||
"inquiry_about":"Su consulta sobre",
|
||||
"request_a_consultation":"¡Solicite una consulta!",
|
||||
"your_email":"Su correo electrónico *",
|
||||
"about_title1":"<h3>Nextream’s <span>Misión & Vision</span></h3>",
|
||||
"about_title2":"“Sólo cuando funcionan mal las máquinas te recuerdan lo poderosas que son.”",
|
||||
"about_title3":" Nextream Co es el socio elegido por muchas de las empresas, pymes y desafíos tecnológicos líderes del mundo. Ayudamos a las empresas a aumentar su valor mediante el desarrollo de software personalizado, diseño de productos, control de calidad y servicios de consultoría.",
|
||||
"about_title4":" Nextream está especializado en servicios tecnológicos y relacionados con TI como ingeniería de producto, gestión de garantías, construcción de nube, etc.",
|
||||
"about_title5":"<h3>Nextream’s <span>Tecnología</span></h3>",
|
||||
"about_title6":"Nuestro equipo puede ayudarlo a transformar su negocio a través de las últimas capacidades tecnológicas para mantenerse a la vanguardia.",
|
||||
"about_title7":"Cómo trabajamos",
|
||||
"more_about":"Más sobre nosotros",
|
||||
"loved_thousands":"Amado por miles de",
|
||||
"clients":"Clientes",
|
||||
"our_main":"Nuestros principales",
|
||||
"services":"Servicios",
|
||||
"see_full_services":"Ver los Servicios",
|
||||
"see_projects":"Ver el proyecto",
|
||||
"our_featured":"Nuestros Actuales",
|
||||
"projects":"Proyectos",
|
||||
"see_all_projects":"Ver todo los proyectos",
|
||||
"blog_title1":"<h3>Nextream <span>Noticias</span></h3> ",
|
||||
"all_articles":"Ver artículos"
|
||||
}
|
||||
@ -1,59 +1,47 @@
|
||||
import React, { useEffect } from 'react';
|
||||
import React from 'react';
|
||||
//= Layout
|
||||
import PreviewLayout from 'layouts/Preview';
|
||||
import MainLayout from 'layouts/Main';
|
||||
//= Components
|
||||
import Header from 'components/Preview/Header';
|
||||
import Features from 'components/Preview/Features';
|
||||
import Demos from 'components/Preview/Demos';
|
||||
import InnerPages from 'components/Preview/InnerPages';
|
||||
import BuyNow from 'components/Preview/BuyNow';
|
||||
import Portfolio from 'components/Preview/Portfolio';
|
||||
import Codei from 'components/Preview/Codei';
|
||||
import BestFeatures from 'components/Preview/BestFeatures';
|
||||
import Responsive from 'components/Preview/Responsive';
|
||||
import AllFeatures from 'components/Preview/AllFeatures';
|
||||
import Testimonials from 'components/Preview/Testimonials';
|
||||
import CallToAction from 'components/Preview/CallToAction';
|
||||
//= Scripts
|
||||
import { fixPreviewStylesheetOrder } from 'common/fixStylesheetsOrder';
|
||||
|
||||
const LandingPreview = () => {
|
||||
useEffect(() => {
|
||||
document.body.classList.add('index-main');
|
||||
return () => document.body.classList.remove('index-main');
|
||||
}, []);
|
||||
|
||||
useEffect(() => {
|
||||
fixPreviewStylesheetOrder();
|
||||
}, []);
|
||||
import Navbar from 'components/Navbars/SoftwareNav/OnePageNav';
|
||||
import Header from 'components/Software/Header';
|
||||
import Testimonials from 'components/Software/Testimonials';
|
||||
import Services from 'components/Software/Services';
|
||||
import About from 'components/Software/About';
|
||||
import Projects from 'components/Software/Projects';
|
||||
import Pricing from 'components/Software/Pricing';
|
||||
import Team from 'components/Software/Team';
|
||||
import Blog from 'components/Software/Blog';
|
||||
import ChatBanner from 'components/Software/ChatBanner';
|
||||
import Footer from 'components/Software/Footer';
|
||||
|
||||
const HomeSoftwareCompanyOnePage = () => {
|
||||
return (
|
||||
<PreviewLayout>
|
||||
<MainLayout>
|
||||
<Navbar />
|
||||
<Header />
|
||||
<Features />
|
||||
<Demos />
|
||||
<InnerPages />
|
||||
<BuyNow />
|
||||
<Portfolio />
|
||||
<Codei />
|
||||
<BestFeatures />
|
||||
<Responsive />
|
||||
<AllFeatures />
|
||||
<Testimonials />
|
||||
<CallToAction />
|
||||
</PreviewLayout>
|
||||
);
|
||||
};
|
||||
<main>
|
||||
<Testimonials />
|
||||
<Services />
|
||||
<About />
|
||||
<Projects />
|
||||
<Pricing />
|
||||
<Team />
|
||||
<Blog />
|
||||
<ChatBanner />
|
||||
</main>
|
||||
<Footer />
|
||||
</MainLayout>
|
||||
)
|
||||
}
|
||||
|
||||
export const Head = () => {
|
||||
return (
|
||||
<>
|
||||
<title>Iteck - Preview</title>
|
||||
<title>Nextream - Tech & IT Solutions</title>
|
||||
<link rel="stylesheet" href="/assets/css/lib/bootstrap.min.css" />
|
||||
<link rel="stylesheet" href="/assets/css/style.css" />
|
||||
<link rel="stylesheet" href="/landing-preview/css/preview-style.css" />
|
||||
</>
|
||||
);
|
||||
};
|
||||
)
|
||||
}
|
||||
|
||||
export default LandingPreview;
|
||||
export default HomeSoftwareCompanyOnePage;
|
||||
|
Before Width: | Height: | Size: 25 KiB After Width: | Height: | Size: 134 KiB |
BIN
static/assets/img/about/style_3_2_copy.png
Normal file
|
After Width: | Height: | Size: 25 KiB |
|
Before Width: | Height: | Size: 1.1 KiB After Width: | Height: | Size: 22 KiB |
BIN
static/assets/img/header/logo_sh_l2.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
static/assets/img/lang-es.png
Normal file
|
After Width: | Height: | Size: 88 KiB |
|
Before Width: | Height: | Size: 1.6 KiB After Width: | Height: | Size: 5.1 KiB |
BIN
static/assets/img/logo_b21.png
Normal file
|
After Width: | Height: | Size: 1.6 KiB |
|
Before Width: | Height: | Size: 1.3 KiB After Width: | Height: | Size: 5.4 KiB |
BIN
static/assets/img/logo_ll3.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
28
static/data/about.json
Normal file
@ -0,0 +1,28 @@
|
||||
{
|
||||
"about": {
|
||||
"numbers": [
|
||||
{
|
||||
"value": "1,2k",
|
||||
"title": "Projects done"
|
||||
},
|
||||
{
|
||||
"value": "165",
|
||||
"title": "satisfied clients"
|
||||
},
|
||||
{
|
||||
"value": "26",
|
||||
"title": "awards winner"
|
||||
},
|
||||
{
|
||||
"value": "15",
|
||||
"title": "years of experience"
|
||||
}
|
||||
],
|
||||
"features": [
|
||||
"Latest IT Solutions & Integration With Blockchain",
|
||||
"Over 100+ Payment Gateways Support",
|
||||
"AI Machine & Deep Learning",
|
||||
"Dedicated Support 24/7"
|
||||
]
|
||||
}
|
||||
}
|
||||
66
static/data/blog.json
Normal file
@ -0,0 +1,66 @@
|
||||
{
|
||||
"blog":{
|
||||
"blogs": [
|
||||
{
|
||||
"cover": "/assets/img/blog/6.png",
|
||||
"type": "tips & tricks",
|
||||
"time": "12 Days ago",
|
||||
"title": "How To Become A Python Develop Expert",
|
||||
"userImage": "a",
|
||||
"username": "Admin",
|
||||
"comments": "24",
|
||||
"views": "774k"
|
||||
},
|
||||
{
|
||||
"cover": "/assets/img/blog/7.png",
|
||||
"type": "News",
|
||||
"time": "5 Days ago",
|
||||
"title": "AI With Fingerprint",
|
||||
"userImage": "a",
|
||||
"username": "David",
|
||||
"comments": "24",
|
||||
"views": "774k"
|
||||
},
|
||||
{
|
||||
"cover": "/assets/img/blog/8.png",
|
||||
"type": "tips & tricks",
|
||||
"time": "1 month ago",
|
||||
"title": "Solutions For Big Data Issue, Expert Perspective",
|
||||
"userImage": "a",
|
||||
"username": "Moussa",
|
||||
"comments": "24",
|
||||
"views": "774k"
|
||||
}
|
||||
],
|
||||
"faq": [
|
||||
{
|
||||
"question": "How Benefit That I Got When Choose Basic Plan?",
|
||||
"answer": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
},
|
||||
{
|
||||
"question": "Can I Pay With Paypal or Payoneer?",
|
||||
"answer": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
},
|
||||
{
|
||||
"question": "How Long For A Standard Project?",
|
||||
"answer": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
},
|
||||
{
|
||||
"question": "How About Data Security & NDA Agreement?",
|
||||
"answer": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
},
|
||||
{
|
||||
"question": "Can We Make An Own Tailored-AI ?",
|
||||
"answer": "Through the collaboration with customers in discussing needs and demand, we're able to attain mutual understanding, gain customer trust to offer appropriate advice"
|
||||
}
|
||||
],
|
||||
"clients": [
|
||||
"/assets/img/logos/1.png",
|
||||
"/assets/img/logos/2.png",
|
||||
"/assets/img/logos/3.png",
|
||||
"/assets/img/logos/4.png",
|
||||
"/assets/img/logos/5.png",
|
||||
"/assets/img/logos/6.png"
|
||||
]
|
||||
}
|
||||
}
|
||||
20
static/data/footer.json
Normal file
@ -0,0 +1,20 @@
|
||||
{
|
||||
"address": "223 Thatcher Road St, Brookly, Manhattan, NY 10463, United States",
|
||||
"phone": "+031 5689 89 98",
|
||||
"email": "contact@Itecksolution.co",
|
||||
"usefulLinks": [
|
||||
{ "link": "/home-saas-technology", "title": "Home" },
|
||||
{ "link": "/page-about-5", "title": "About Iteck" },
|
||||
{ "link": "/page-portfolio-5", "title": "Projects" },
|
||||
{ "link": "/page-about-5", "title": "How It Works" },
|
||||
{ "link": "/page-blog-5", "title": "Blog" },
|
||||
{ "link": "/page-contact-5", "title": "Contact" }
|
||||
],
|
||||
"services": [
|
||||
{ "link": "/page-services-5", "title": "It Consultation" },
|
||||
{ "link": "/page-services-5", "title": "Software Development" },
|
||||
{ "link": "/page-services-5", "title": "AI Machine Learning" },
|
||||
{ "link": "/page-services-5", "title": "Data Security" },
|
||||
{ "link": "/page-services-5", "title": "Cloud Services" }
|
||||
]
|
||||
}
|
||||
64
static/data/language/languages.json
Normal file
@ -0,0 +1,64 @@
|
||||
{
|
||||
"es":{
|
||||
|
||||
"welcome": "Bienvenido a nuestro sitio web",
|
||||
"features": "Características",
|
||||
"get_free_quotes": "¡Obtenga una cotización gratuita!",
|
||||
"built_with_best_features": "Construido con las mejores características y buena UX",
|
||||
"header_1":"Haz tu vida más fácil con la ayuda de <span>Nextream</span>",
|
||||
"header_2":"Ayudamos a las empresas a aumentar su valor mediante el desarrollo de software personalizado, diseño de productos, control de calidad y servicios de consultoría.",
|
||||
"header_3":"Nos pondremos en contacto en 24h.",
|
||||
"inquiry_about":"Su consulta sobre",
|
||||
"request_a_consultation":"¡Solicite una consulta!",
|
||||
"your_email":"Su correo electrónico *",
|
||||
"about_title1":"<h3>Nextream’s <span>Misión & Vision</span></h3>",
|
||||
"about_title2":"“Sólo cuando funcionan mal las máquinas te recuerdan lo poderosas que son.”",
|
||||
"about_title3":" Nextream Co es el socio elegido por muchas de las empresas, pymes y desafíos tecnológicos líderes del mundo. Ayudamos a las empresas a aumentar su valor mediante el desarrollo de software personalizado, diseño de productos, control de calidad y servicios de consultoría.",
|
||||
"about_title4":" Nextream está especializado en servicios tecnológicos y relacionados con TI como ingeniería de producto, gestión de garantías, construcción de nube, etc.",
|
||||
"about_title5":"<h3>Nextream’s <span>Tecnología</span></h3>",
|
||||
"about_title6":"Nuestro equipo puede ayudarlo a transformar su negocio a través de las últimas capacidades tecnológicas para mantenerse a la vanguardia.",
|
||||
"about_title7":"Cómo trabajamos",
|
||||
"more_about":"Más sobre nosotros",
|
||||
"loved_thousands":"Amado por miles de",
|
||||
"clients":"Clientes",
|
||||
"our_main":"Nuestros principales",
|
||||
"services":"Servicios",
|
||||
"see_full_services":"Ver los Servicios",
|
||||
"see_projects":"Ver el proyecto",
|
||||
"our_featured":"Nuestros Actuales",
|
||||
"projects":"Proyectos",
|
||||
"see_all_projects":"Ver todo los proyectos",
|
||||
"blog_title1":"<h3>Nextream <span>Noticias</span></h3> ",
|
||||
"all_articles":"Ver artículos"
|
||||
},
|
||||
"en": {
|
||||
"welcome": "Welcome to our website",
|
||||
"features": "Features",
|
||||
"get_free_quotes": "Get Free Quotes!",
|
||||
"built_with_best_features": "Built With Best Features & Good UX",
|
||||
"header_1":" Make your life easier with help from <span>Nextream</span>",
|
||||
"header_2":"We help businesses elevate their value through custom software development, product design, QA & consultancy services.",
|
||||
"header_3":"We’ll contact back in 24h",
|
||||
"inquiry_about":"Your inquiry about",
|
||||
"request_a_consultation":"Request a consultation!",
|
||||
"about_title1":"<h3>Nextream’s <span>Mission & Vision</span></h3>",
|
||||
"about_title2":"“It is only when they go wrong that machines remind you how powerful they are.”",
|
||||
"about_title3":" Nextream Co is the partner of choice for many of the world’s leading enterprises, SMEs and technology challengers. We help businesses elevate their value through custom software development, product design, QA and consultancy services.",
|
||||
"about_title4":" Nextream specializes in technological and IT-related services such as product engineering, warranty management, building cloud, etc.",
|
||||
"about_title5":"<h3>Nextream’s <span>Technology</span></h3>",
|
||||
"about_title6":"Our team can assist you in transforming your business through latest tech capabilities to stay ahead of the curve.",
|
||||
"about_title7":"How We Works",
|
||||
"more_about":"More About Us",
|
||||
"loved_thousands":"Loved By Thousand",
|
||||
"clients":"Clients",
|
||||
"our_main":"Our Main",
|
||||
"services":"Services",
|
||||
"see_full_services":"See Full Services",
|
||||
"see_projects":"See Projects",
|
||||
"our_featured":"Our Featured",
|
||||
"projects":"Projects",
|
||||
"see_all_projects":"See All Projects",
|
||||
"blog_title1":"<h3>Nextream's <span>Journal</span></h3>",
|
||||
"all_articles":"All Articles"
|
||||
}
|
||||
}
|
||||
25
static/data/plans.json
Normal file
@ -0,0 +1,25 @@
|
||||
[
|
||||
{
|
||||
"title": "Standard",
|
||||
"description": "Basic features",
|
||||
"price": "$29",
|
||||
"features": [
|
||||
"3 Projects",
|
||||
"6 Months Support & SEO",
|
||||
"Basic Dashboard"
|
||||
]
|
||||
},
|
||||
{
|
||||
"title": "Pro",
|
||||
"recommended": true,
|
||||
"description": "Premium features",
|
||||
"price": "$59",
|
||||
"features": [
|
||||
"Unlimited Projects",
|
||||
"Lifetime Support & SEO Experts Consult",
|
||||
"Advance Dashboard",
|
||||
"Data Security & Backup",
|
||||
"Cloud Hosting & Domain"
|
||||
]
|
||||
}
|
||||
]
|
||||
26
static/data/projects.json
Normal file
@ -0,0 +1,26 @@
|
||||
[
|
||||
{
|
||||
"image": "/assets/img/projects/3.png",
|
||||
"title": "Catty Boxes NFT Blockchain",
|
||||
"description": "Game Development",
|
||||
"link":"http://surteloya.com"
|
||||
},
|
||||
{
|
||||
"image": "/assets/img/projects/4.png",
|
||||
"title": "Catty Boxes NFT Blockchain",
|
||||
"description": "Game Development",
|
||||
"link":"http://surteloya.com"
|
||||
},
|
||||
{
|
||||
"image": "/assets/img/projects/5.png",
|
||||
"title": "Catty Boxes NFT Blockchain",
|
||||
"description": "Game Development",
|
||||
"link":"http://surteloya.com"
|
||||
},
|
||||
{
|
||||
"image": "/assets/img/projects/6.png",
|
||||
"title": "Catty Boxes NFT Blockchain",
|
||||
"description": "Game Development",
|
||||
"link":"http://surteloya.com"
|
||||
}
|
||||
]
|
||||
22
static/data/services.json
Normal file
@ -0,0 +1,22 @@
|
||||
[
|
||||
{
|
||||
"icon": "/assets/img/icons/serv_icons/10.png",
|
||||
"title": "IT Consultation",
|
||||
"details": "We provide best IT solutions for any type of business as stragegy, management."
|
||||
},
|
||||
{
|
||||
"icon": "/assets/img/icons/serv_icons/11.png",
|
||||
"title": "Software Development",
|
||||
"details": "We bring methods for design and development as website, mobile app, etc"
|
||||
},
|
||||
{
|
||||
"icon": "/assets/img/icons/serv_icons/12.png",
|
||||
"title": "Data Security",
|
||||
"details": "Analys & Management Big Data alway big issue of companies management."
|
||||
},
|
||||
{
|
||||
"icon": "/assets/img/icons/serv_icons/13.png",
|
||||
"title": "AI Machine Learning",
|
||||
"details": "Turn AI & Machine Learning in the life. Enhance the quality and the effeciency"
|
||||
}
|
||||
]
|
||||
27
static/data/team.json
Normal file
@ -0,0 +1,27 @@
|
||||
[
|
||||
{
|
||||
"picture": "/assets/img/team/1.jpeg",
|
||||
"name": "Michael Edwards",
|
||||
"position": "CEO Founder"
|
||||
},
|
||||
{
|
||||
"picture": "/assets/img/team/2.jpeg",
|
||||
"name": "Bobby Kane",
|
||||
"position": "CTO"
|
||||
},
|
||||
{
|
||||
"picture": "/assets/img/team/3.jpeg",
|
||||
"name": "Robert Downey Jr",
|
||||
"position": "Project Manager"
|
||||
},
|
||||
{
|
||||
"picture": "/assets/img/team/4.jpeg",
|
||||
"name": "Andrew Robertson",
|
||||
"position": "Marketing Leader"
|
||||
},
|
||||
{
|
||||
"picture": "/assets/img/team/5.jpeg",
|
||||
"name": "Alexander Avery",
|
||||
"position": "Creative Director"
|
||||
}
|
||||
]
|
||||
22
static/data/testimonials.json
Normal file
@ -0,0 +1,22 @@
|
||||
{
|
||||
"testimonials": [
|
||||
{
|
||||
"text": "“We encountered a problem with processing big data and after only 1 week, all fixed, professional, fast & affordable price!”",
|
||||
"image": "/assets/img/testimonials/testi.jpeg",
|
||||
"author": "Robert Downey Jr",
|
||||
"positon": "Technical Leader at Airbnb"
|
||||
},
|
||||
{
|
||||
"text": "“Iteck is 1st our choice for cloud service methods. Extremely security and fast support.”",
|
||||
"image": "/assets/img/testimonials/user1.jpeg",
|
||||
"author": "Conor McGregor",
|
||||
"positon": "CTO at IBM"
|
||||
},
|
||||
{
|
||||
"text": "“Iteck’s Experts really is amazing! high speciality, professional and friendly. Our profit increased so much. Really very satisfied!”",
|
||||
"image": "/assets/img/testimonials/user2.jpeg",
|
||||
"author": "Lucas Digne",
|
||||
"positon": "Product Management at Invisionapp"
|
||||
}
|
||||
]
|
||||
}
|
||||