Dev #1
71
.idea/workspace.xml
generated
71
.idea/workspace.xml
generated
@@ -5,11 +5,11 @@
|
|||||||
</component>
|
</component>
|
||||||
<component name="ChangeListManager">
|
<component name="ChangeListManager">
|
||||||
<list default="true" id="2a96f817-9dc2-4f3c-893a-c4974c750774" name="Changes" comment="">
|
<list default="true" id="2a96f817-9dc2-4f3c-893a-c4974c750774" name="Changes" comment="">
|
||||||
|
<change afterPath="$PROJECT_DIR$/src/shared/lib/metaInfo/index.ts" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/src/shared/lib/metaInfo/metaInfo.ts" afterDir="false" />
|
||||||
|
<change afterPath="$PROJECT_DIR$/src/shared/lib/phoneBeautify/index.ts" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/api/og-image/lib/render.ts" beforeDir="false" />
|
<change beforePath="$PROJECT_DIR$/package-lock.json" beforeDir="false" afterPath="$PROJECT_DIR$/package-lock.json" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/api/og-image/lib/template.tsx" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/api/og-image/lib/types.ts" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/api/og-image/route.ts" beforeDir="false" />
|
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/api/og/route.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/api/og/route.ts" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/app/api/og/route.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/api/og/route.ts" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/contacts/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/contacts/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/app/contacts/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/contacts/page.tsx" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/cookies/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/cookies/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/app/cookies/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/cookies/page.tsx" afterDir="false" />
|
||||||
@@ -23,8 +23,13 @@
|
|||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/app/experts/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/page.tsx" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/polinov-andrej-vladimirovich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/polinov-andrej-vladimirovich/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/app/experts/polinov-andrej-vladimirovich/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/polinov-andrej-vladimirovich/page.tsx" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/experts/volkova-goncharova-tatjana-anatolevna/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/volkova-goncharova-tatjana-anatolevna/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/app/experts/volkova-goncharova-tatjana-anatolevna/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/experts/volkova-goncharova-tatjana-anatolevna/page.tsx" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/app/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/page.tsx" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/privacy-policy/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/privacy-policy/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/app/privacy-policy/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/privacy-policy/page.tsx" afterDir="false" />
|
||||||
<change beforePath="$PROJECT_DIR$/src/app/user-agreement/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/user-agreement/page.tsx" afterDir="false" />
|
<change beforePath="$PROJECT_DIR$/src/app/user-agreement/page.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/app/user-agreement/page.tsx" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/shared/lib/clickOutside/useClickOutside.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/shared/lib/clickOutside/useClickOutside.tsx" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/shared/lib/index.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/shared/lib/index.ts" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/shared/lib/phoneBeautify/phoneBeautify.ts" beforeDir="false" afterPath="$PROJECT_DIR$/src/shared/lib/phoneBeautify/phoneBeautify.ts" afterDir="false" />
|
||||||
|
<change beforePath="$PROJECT_DIR$/src/widgets/consultation-modal/ui.tsx" beforeDir="false" afterPath="$PROJECT_DIR$/src/widgets/consultation-modal/ui.tsx" afterDir="false" />
|
||||||
</list>
|
</list>
|
||||||
<option name="SHOW_DIALOG" value="false" />
|
<option name="SHOW_DIALOG" value="false" />
|
||||||
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
<option name="HIGHLIGHT_CONFLICTS" value="true" />
|
||||||
@@ -32,7 +37,7 @@
|
|||||||
<option name="LAST_RESOLUTION" value="IGNORE" />
|
<option name="LAST_RESOLUTION" value="IGNORE" />
|
||||||
</component>
|
</component>
|
||||||
<component name="DarkyenusTimeTracker">
|
<component name="DarkyenusTimeTracker">
|
||||||
<option name="totalTimeSeconds" value="223885" />
|
<option name="totalTimeSeconds" value="226823" />
|
||||||
<option name="gitIntegration" value="true" />
|
<option name="gitIntegration" value="true" />
|
||||||
<option name="naggedAbout" value="1" />
|
<option name="naggedAbout" value="1" />
|
||||||
</component>
|
</component>
|
||||||
@@ -60,32 +65,34 @@
|
|||||||
<option name="hideEmptyMiddlePackages" value="true" />
|
<option name="hideEmptyMiddlePackages" value="true" />
|
||||||
<option name="showLibraryContents" value="true" />
|
<option name="showLibraryContents" value="true" />
|
||||||
</component>
|
</component>
|
||||||
<component name="PropertiesComponent">{
|
<component name="PropertiesComponent"><![CDATA[{
|
||||||
"keyToString": {
|
"keyToString": {
|
||||||
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
"ModuleVcsDetector.initialDetectionPerformed": "true",
|
||||||
"RunOnceActivity.ShowReadmeOnStart": "true",
|
"RunOnceActivity.ShowReadmeOnStart": "true",
|
||||||
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
"RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true",
|
||||||
"RunOnceActivity.git.unshallow": "true",
|
"RunOnceActivity.git.unshallow": "true",
|
||||||
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
"RunOnceActivity.typescript.service.memoryLimit.init": "true",
|
||||||
"git-widget-placeholder": "dev",
|
"com.intellij.ml.llm.matterhorn.ej.ui.settings.DefaultModelSelectionForGA.v1": "true",
|
||||||
"ignore.virus.scanning.warn.message": "true",
|
"git-widget-placeholder": "dev",
|
||||||
"js.debugger.nextJs.config.created.client": "true",
|
"ignore.virus.scanning.warn.message": "true",
|
||||||
"js.debugger.nextJs.config.created.server": "true",
|
"javascript.preferred.runtime.type.id": "node",
|
||||||
"junie.onboarding.icon.badge.shown": "true",
|
"js.debugger.nextJs.config.created.client": "true",
|
||||||
"list.type.of.created.stylesheet": "SCSS",
|
"js.debugger.nextJs.config.created.server": "true",
|
||||||
"node.js.detected.package.eslint": "true",
|
"junie.onboarding.icon.badge.shown": "true",
|
||||||
"node.js.detected.package.tslint": "true",
|
"list.type.of.created.stylesheet": "SCSS",
|
||||||
"node.js.selected.package.eslint": "(autodetect)",
|
"node.js.detected.package.eslint": "true",
|
||||||
"node.js.selected.package.tslint": "(autodetect)",
|
"node.js.detected.package.tslint": "true",
|
||||||
"nodejs_package_manager_path": "npm",
|
"node.js.selected.package.eslint": "(autodetect)",
|
||||||
"npm.Next.js: server-side.executor": "Run",
|
"node.js.selected.package.tslint": "(autodetect)",
|
||||||
"prettierjs.PrettierConfiguration.Package": "C:\\dev-personal\\ocenka-web\\node_modules\\prettier",
|
"nodejs_package_manager_path": "npm",
|
||||||
"settings.editor.selected.configurable": "terminal",
|
"npm.Next.js: server-side.executor": "Run",
|
||||||
"to.speed.mode.migration.done": "true",
|
"prettierjs.PrettierConfiguration.Package": "C:\\dev-projects\\ocenka-web\\node_modules\\prettier",
|
||||||
"ts.external.directory.path": "C:\\dev-personal\\ocenka-web\\node_modules\\typescript\\lib",
|
"settings.editor.selected.configurable": "terminal",
|
||||||
"vue.rearranger.settings.migration": "true"
|
"to.speed.mode.migration.done": "true",
|
||||||
|
"ts.external.directory.path": "C:\\dev-projects\\ocenka-web\\node_modules\\typescript\\lib",
|
||||||
|
"vue.rearranger.settings.migration": "true"
|
||||||
}
|
}
|
||||||
}</component>
|
}]]></component>
|
||||||
<component name="RecentsManager">
|
<component name="RecentsManager">
|
||||||
<key name="MoveFile.RECENT_KEYS">
|
<key name="MoveFile.RECENT_KEYS">
|
||||||
<recent name="C:\dev-personal\ocenka-web\public\images" />
|
<recent name="C:\dev-personal\ocenka-web\public\images" />
|
||||||
@@ -112,7 +119,7 @@
|
|||||||
<component name="SharedIndexes">
|
<component name="SharedIndexes">
|
||||||
<attachedChunks>
|
<attachedChunks>
|
||||||
<set>
|
<set>
|
||||||
<option value="bundled-js-predefined-d6986cc7102b-a71380e98a7c-JavaScript-WS-252.28238.10" />
|
<option value="bundled-js-predefined-d6986cc7102b-c7e53b3be11b-JavaScript-WS-253.28294.332" />
|
||||||
</set>
|
</set>
|
||||||
</attachedChunks>
|
</attachedChunks>
|
||||||
</component>
|
</component>
|
||||||
@@ -133,6 +140,8 @@
|
|||||||
<workItem from="1765196288370" duration="332000" />
|
<workItem from="1765196288370" duration="332000" />
|
||||||
<workItem from="1765196704782" duration="4455000" />
|
<workItem from="1765196704782" duration="4455000" />
|
||||||
<workItem from="1765279298291" duration="3352000" />
|
<workItem from="1765279298291" duration="3352000" />
|
||||||
|
<workItem from="1765365738711" duration="1288000" />
|
||||||
|
<workItem from="1765367128544" duration="6366000" />
|
||||||
</task>
|
</task>
|
||||||
<servers />
|
<servers />
|
||||||
</component>
|
</component>
|
||||||
|
|||||||
24
package-lock.json
generated
24
package-lock.json
generated
@@ -750,7 +750,8 @@
|
|||||||
"version": "3.9.1",
|
"version": "3.9.1",
|
||||||
"resolved": "https://registry.npmjs.org/@maskito/core/-/core-3.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/@maskito/core/-/core-3.9.1.tgz",
|
||||||
"integrity": "sha512-Sa3GFdgWZKRBLAVrrHbT0uI6fI8zMy2/yPvBuhxG5W4a+uYRCb9mpC52yZaUcVa7Gq4OvFIy03c53LntuXStmw==",
|
"integrity": "sha512-Sa3GFdgWZKRBLAVrrHbT0uI6fI8zMy2/yPvBuhxG5W4a+uYRCb9mpC52yZaUcVa7Gq4OvFIy03c53LntuXStmw==",
|
||||||
"license": "Apache-2.0"
|
"license": "Apache-2.0",
|
||||||
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/@maskito/kit": {
|
"node_modules/@maskito/kit": {
|
||||||
"version": "3.9.1",
|
"version": "3.9.1",
|
||||||
@@ -1103,6 +1104,7 @@
|
|||||||
"integrity": "sha512-lr3jdBw/BGj49Eps7EvqlUaoeA0xpj3pc0RoJkHpYaCHkVK7i28dKyImLQb3JVlqs3aYSXf7qYuWOW/fgZnTXQ==",
|
"integrity": "sha512-lr3jdBw/BGj49Eps7EvqlUaoeA0xpj3pc0RoJkHpYaCHkVK7i28dKyImLQb3JVlqs3aYSXf7qYuWOW/fgZnTXQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"csstype": "^3.0.2"
|
"csstype": "^3.0.2"
|
||||||
}
|
}
|
||||||
@@ -1173,6 +1175,7 @@
|
|||||||
"integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==",
|
"integrity": "sha512-4O3idHxhyzjClSMJ0a29AcoK0+YwnEqzI6oz3vlRf3xw0zbzt15MzXwItOlnr5nIth6zlY2RENLsOPvhyrKAQA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@typescript-eslint/scope-manager": "8.34.1",
|
"@typescript-eslint/scope-manager": "8.34.1",
|
||||||
"@typescript-eslint/types": "8.34.1",
|
"@typescript-eslint/types": "8.34.1",
|
||||||
@@ -1689,6 +1692,7 @@
|
|||||||
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"acorn": "bin/acorn"
|
"acorn": "bin/acorn"
|
||||||
},
|
},
|
||||||
@@ -2587,7 +2591,8 @@
|
|||||||
"version": "3.1.3",
|
"version": "3.1.3",
|
||||||
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
"resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz",
|
||||||
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
"integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/damerau-levenshtein": {
|
"node_modules/damerau-levenshtein": {
|
||||||
"version": "1.0.8",
|
"version": "1.0.8",
|
||||||
@@ -2747,7 +2752,8 @@
|
|||||||
"version": "0.0.1534754",
|
"version": "0.0.1534754",
|
||||||
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz",
|
"resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1534754.tgz",
|
||||||
"integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==",
|
"integrity": "sha512-26T91cV5dbOYnXdJi5qQHoTtUoNEqwkHcAyu/IKtjIAxiEqPMrDiRkDOPWVsGfNZGmlQVHQbZRSjD8sxagWVsQ==",
|
||||||
"license": "BSD-3-Clause"
|
"license": "BSD-3-Clause",
|
||||||
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/doctrine": {
|
"node_modules/doctrine": {
|
||||||
"version": "2.1.0",
|
"version": "2.1.0",
|
||||||
@@ -3056,6 +3062,7 @@
|
|||||||
"integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==",
|
"integrity": "sha512-GsGizj2Y1rCWDu6XoEekL3RLilp0voSePurjZIkxL3wlm5o5EC9VpgaP7lrCvjnkuLvzFBQWB3vWB3K5KQTveQ==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@eslint-community/eslint-utils": "^4.2.0",
|
"@eslint-community/eslint-utils": "^4.2.0",
|
||||||
"@eslint-community/regexpp": "^4.12.1",
|
"@eslint-community/regexpp": "^4.12.1",
|
||||||
@@ -3230,6 +3237,7 @@
|
|||||||
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
|
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@rtsao/scc": "^1.1.0",
|
"@rtsao/scc": "^1.1.0",
|
||||||
"array-includes": "^3.1.9",
|
"array-includes": "^3.1.9",
|
||||||
@@ -4719,7 +4727,8 @@
|
|||||||
"version": "1.12.9",
|
"version": "1.12.9",
|
||||||
"resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.9.tgz",
|
"resolved": "https://registry.npmjs.org/libphonenumber-js/-/libphonenumber-js-1.12.9.tgz",
|
||||||
"integrity": "sha512-VWwAdNeJgN7jFOD+wN4qx83DTPMVPPAUyx9/TUkBXKLiNkuWWk6anV0439tgdtwaJDrEdqkvdN22iA6J4bUCZg==",
|
"integrity": "sha512-VWwAdNeJgN7jFOD+wN4qx83DTPMVPPAUyx9/TUkBXKLiNkuWWk6anV0439tgdtwaJDrEdqkvdN22iA6J4bUCZg==",
|
||||||
"license": "MIT"
|
"license": "MIT",
|
||||||
|
"peer": true
|
||||||
},
|
},
|
||||||
"node_modules/lilconfig": {
|
"node_modules/lilconfig": {
|
||||||
"version": "3.1.3",
|
"version": "3.1.3",
|
||||||
@@ -5545,6 +5554,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
|
"resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz",
|
||||||
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
|
"integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"loose-envify": "^1.4.0",
|
"loose-envify": "^1.4.0",
|
||||||
"object-assign": "^4.1.1",
|
"object-assign": "^4.1.1",
|
||||||
@@ -5661,6 +5671,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/react/-/react-19.1.1.tgz",
|
||||||
"integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==",
|
"integrity": "sha512-w8nqGImo45dmMIfljjMwOGtbmC/mk4CMYhWIicdSflH91J9TyCyczcPFXJzrZ/ZXcgGRFeP6BU0BEJTw6tZdfQ==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=0.10.0"
|
"node": ">=0.10.0"
|
||||||
}
|
}
|
||||||
@@ -5670,6 +5681,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz",
|
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.1.1.tgz",
|
||||||
"integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==",
|
"integrity": "sha512-Dlq/5LAZgF0Gaz6yiqZCf6VCcZs1ghAJyrsu84Q/GT0gV+mCxbfmKNoGRKBYMJ8IEdGPqu49YWXD02GCknEDkw==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"scheduler": "^0.26.0"
|
"scheduler": "^0.26.0"
|
||||||
},
|
},
|
||||||
@@ -5682,6 +5694,7 @@
|
|||||||
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.60.0.tgz",
|
"resolved": "https://registry.npmjs.org/react-hook-form/-/react-hook-form-7.60.0.tgz",
|
||||||
"integrity": "sha512-SBrYOvMbDB7cV8ZfNpaiLcgjH/a1c7aK0lK+aNigpf4xWLO8q+o4tcvVurv3c4EOyzn/3dCsYt4GKD42VvJ/+A==",
|
"integrity": "sha512-SBrYOvMbDB7cV8ZfNpaiLcgjH/a1c7aK0lK+aNigpf4xWLO8q+o4tcvVurv3c4EOyzn/3dCsYt4GKD42VvJ/+A==",
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=18.0.0"
|
"node": ">=18.0.0"
|
||||||
},
|
},
|
||||||
@@ -5952,6 +5965,7 @@
|
|||||||
"integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
|
"integrity": "sha512-4UHg6prsrycW20fqLGPShtEvo/WyHRVRHwOP4DzkUrObWoWI05QBSfzU71TVB7PFaL104TwNaHpjlWXAZbQiNQ==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"chokidar": ">=3.0.0 <4.0.0",
|
"chokidar": ">=3.0.0 <4.0.0",
|
||||||
"immutable": "^4.0.0",
|
"immutable": "^4.0.0",
|
||||||
@@ -6642,6 +6656,7 @@
|
|||||||
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
|
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
|
"peer": true,
|
||||||
"engines": {
|
"engines": {
|
||||||
"node": ">=12"
|
"node": ">=12"
|
||||||
},
|
},
|
||||||
@@ -6797,6 +6812,7 @@
|
|||||||
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
|
"integrity": "sha512-p1diW6TqL9L07nNxvRMM7hMMw4c5XOo/1ibL4aAIGmSAt9slTE1Xgw5KWuof2uTOvCg9BY7ZRi+GaF+7sfgPeQ==",
|
||||||
"devOptional": true,
|
"devOptional": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
|
"peer": true,
|
||||||
"bin": {
|
"bin": {
|
||||||
"tsc": "bin/tsc",
|
"tsc": "bin/tsc",
|
||||||
"tsserver": "bin/tsserver"
|
"tsserver": "bin/tsserver"
|
||||||
|
|||||||
@@ -25,8 +25,8 @@ export async function GET(req: NextRequest) {
|
|||||||
">
|
">
|
||||||
<img src="${imageUrl}" style="object-fit: cover; width:100%; height:100%; opacity:0.5; position:absolute; left:0; top:0;" />
|
<img src="${imageUrl}" style="object-fit: cover; width:100%; height:100%; opacity:0.5; position:absolute; left:0; top:0;" />
|
||||||
<img src="${logoUrl}" style="width: 288px; height: 89px; position:absolute; left:10px; top:20px;" />
|
<img src="${logoUrl}" style="width: 288px; height: 89px; position:absolute; left:10px; top:20px;" />
|
||||||
<p style="position: absolute; top: 24px; right:20px; color: white; font-family: Arial, Helvetica, sans-serif; font-size: 24px; ">
|
<p style="position: absolute; top: 24px; right:20px; color: white; font-family: Arial, Helvetica, sans-serif; font-size: 20px; ">
|
||||||
☏ +7 (900) 241-34-34
|
☎ +7 (900) 241-34-34
|
||||||
</p>
|
</p>
|
||||||
<div style="position: absolute; top: 140px; left: 20px; width:100%; height:100%;">
|
<div style="position: absolute; top: 140px; left: 20px; width:100%; height:100%;">
|
||||||
<h2 style="color: white; font-family: Arial, Helvetica, sans-serif; font-size: 40px; line-height: 1;">${title}</h2>
|
<h2 style="color: white; font-family: Arial, Helvetica, sans-serif; font-size: 40px; line-height: 1;">${title}</h2>
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { Contacts } from '@/views';
|
import { Contacts } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Контакты',
|
title: 'Контакты',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Contacts />;
|
return <Contacts />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { Cookie } from '@/views';
|
import { Cookie } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Независимая оценка и судебная экспертиза',
|
title: 'Независимая оценка и судебная экспертиза',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Cookie />;
|
return <Cookie />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { ExpertBorodin } from '@/views';
|
import { ExpertBorodin } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Эксперт - Бородин Виталий Петрович',
|
title: 'Эксперт - Бородин Виталий Петрович',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertBorodin />;
|
return <ExpertBorodin />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { ExpertGulmamedov } from '@/views';
|
import { ExpertGulmamedov } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Эксперт - Гюльмамедов Явар Фирмамед-оглы',
|
title: 'Эксперт - Гюльмамедов Явар Фирмамед-оглы',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertGulmamedov />;
|
return <ExpertGulmamedov />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { ExpertYancen } from '@/views';
|
import { ExpertYancen } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Эксперт - Янцен Яна Николаевна',
|
title: 'Эксперт - Янцен Яна Николаевна',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertYancen />;
|
return <ExpertYancen />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { ExpertKaminskiy } from '@/views';
|
import { ExpertKaminskiy } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Эксперт - Каминский Дмитрий Олегович',
|
title: 'Эксперт - Каминский Дмитрий Олегович',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertKaminskiy />;
|
return <ExpertKaminskiy />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { ExpertKolodiy } from '@/views';
|
import { ExpertKolodiy } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Эксперт - Колодий Александр Сергеевич',
|
title: 'Эксперт - Колодий Александр Сергеевич',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertKolodiy />;
|
return <ExpertKolodiy />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { ExpertMikova } from '@/views';
|
import { ExpertMikova } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Эксперт - Микова Инна Георгиевна',
|
title: 'Эксперт - Микова Инна Георгиевна',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertMikova />;
|
return <ExpertMikova />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { ExpertMityaev } from '@/views';
|
import { ExpertMityaev } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Эксперт - Митяев Алексей Александрович',
|
title: 'Эксперт - Митяев Алексей Александрович',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertMityaev />;
|
return <ExpertMityaev />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { Experts } from '@/views';
|
import { Experts } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Эксперты',
|
title: 'Эксперты',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <Experts />;
|
return <Experts />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { ExpertPolinov } from '@/views';
|
import { ExpertPolinov } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Эксперт - Полинов Андрей Владимирович',
|
title: 'Эксперт - Полинов Андрей Владимирович',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertPolinov />;
|
return <ExpertPolinov />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { ExpertVolkovaGoncharova } from '@/views';
|
import { ExpertVolkovaGoncharova } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Эксперт - Волкова-Гончарова Татьяна Анатольевна',
|
title: 'Эксперт - Волкова-Гончарова Татьяна Анатольевна',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <ExpertVolkovaGoncharova />;
|
return <ExpertVolkovaGoncharova />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { Home } from '@/views';
|
import { Home } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Независимая оценка и судебная экспертиза',
|
title: 'Независимая оценка и судебная экспертиза',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function HomePage() {
|
export default function HomePage() {
|
||||||
return <Home />;
|
return <Home />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { PrivacyPolicy } from '@/views';
|
import { PrivacyPolicy } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Независимая оценка и судебная экспертиза',
|
title: 'Независимая оценка и судебная экспертиза',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <PrivacyPolicy />;
|
return <PrivacyPolicy />;
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
import { UserAgreement } from '@/views';
|
import { UserAgreement } from '@/views';
|
||||||
import type { Metadata } from 'next';
|
import type { Metadata } from 'next';
|
||||||
|
import { metaInfo } from '@shared/lib';
|
||||||
|
|
||||||
const metainfo = {
|
const metainfo = {
|
||||||
title: 'Независимая оценка и судебная экспертиза',
|
title: 'Независимая оценка и судебная экспертиза',
|
||||||
@@ -12,41 +13,7 @@ const metainfo = {
|
|||||||
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
ogImageDescription: 'Независимая оценка и судебная экспертиза',
|
||||||
};
|
};
|
||||||
|
|
||||||
export const metadata: Metadata = {
|
export const metadata: Metadata = metaInfo(metainfo);
|
||||||
title: `${metainfo.title} | ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
openGraph: {
|
|
||||||
title: metainfo.title,
|
|
||||||
description: metainfo.description,
|
|
||||||
url: metainfo.url,
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
secureUrl: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
locale: 'ru_RU',
|
|
||||||
type: 'website',
|
|
||||||
siteName: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
twitter: {
|
|
||||||
card: 'summary_large_image',
|
|
||||||
title: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
description: `${metainfo.description} ${metainfo.phone}`,
|
|
||||||
creator: '@ditraso',
|
|
||||||
images: [
|
|
||||||
{
|
|
||||||
url: `${metainfo.url}/api/og/?title=${metainfo.title}&description=${metainfo.description}`,
|
|
||||||
width: 600,
|
|
||||||
height: 315,
|
|
||||||
alt: `${metainfo.title} - ${metainfo.companyName}`,
|
|
||||||
},
|
|
||||||
],
|
|
||||||
},
|
|
||||||
};
|
|
||||||
|
|
||||||
export default function Page() {
|
export default function Page() {
|
||||||
return <UserAgreement />;
|
return <UserAgreement />;
|
||||||
|
|||||||
@@ -1,3 +1,5 @@
|
|||||||
|
'use client';
|
||||||
|
|
||||||
import { RefObject, useEffect } from 'react';
|
import { RefObject, useEffect } from 'react';
|
||||||
|
|
||||||
export function useClickOutside(
|
export function useClickOutside(
|
||||||
|
|||||||
@@ -1,2 +1,4 @@
|
|||||||
export { useClickOutside } from './clickOutside';
|
export { useClickOutside } from './clickOutside';
|
||||||
export { detectIOS } from './detectIOS';
|
export { detectIOS } from './detectIOS';
|
||||||
|
export * from './metaInfo';
|
||||||
|
export * from './phoneBeautify';
|
||||||
|
|||||||
1
src/shared/lib/metaInfo/index.ts
Normal file
1
src/shared/lib/metaInfo/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export * from './metaInfo';
|
||||||
69
src/shared/lib/metaInfo/metaInfo.ts
Normal file
69
src/shared/lib/metaInfo/metaInfo.ts
Normal file
@@ -0,0 +1,69 @@
|
|||||||
|
import { Metadata } from 'next';
|
||||||
|
|
||||||
|
type TMetaInfo = {
|
||||||
|
title: string;
|
||||||
|
description: string;
|
||||||
|
companyName: string;
|
||||||
|
phone: string;
|
||||||
|
url: string;
|
||||||
|
ogImageTitle: string;
|
||||||
|
ogImageDescription: string;
|
||||||
|
width?: number;
|
||||||
|
height?: number;
|
||||||
|
locale?: string;
|
||||||
|
creator?: string;
|
||||||
|
};
|
||||||
|
|
||||||
|
function metaInfo({ ...props }: TMetaInfo): Metadata {
|
||||||
|
const {
|
||||||
|
title,
|
||||||
|
description,
|
||||||
|
companyName,
|
||||||
|
phone,
|
||||||
|
url,
|
||||||
|
ogImageTitle,
|
||||||
|
ogImageDescription,
|
||||||
|
width = 600,
|
||||||
|
height = 315,
|
||||||
|
locale = 'ru_RU',
|
||||||
|
creator = '@ditraso',
|
||||||
|
} = props;
|
||||||
|
|
||||||
|
return {
|
||||||
|
title: `${title} | ${companyName}`,
|
||||||
|
description: `${description} ${phone}`,
|
||||||
|
openGraph: {
|
||||||
|
title: title,
|
||||||
|
description: description,
|
||||||
|
url: url,
|
||||||
|
images: [
|
||||||
|
{
|
||||||
|
url: `${url}/api/og/?title=${ogImageTitle}&description=${ogImageDescription}`,
|
||||||
|
secureUrl: `${url}/api/og/?title=${ogImageTitle}&description=${ogImageDescription}`,
|
||||||
|
width: width,
|
||||||
|
height: height,
|
||||||
|
alt: `${title} - ${companyName}`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
locale: locale,
|
||||||
|
type: 'website',
|
||||||
|
siteName: `${title} - ${companyName}`,
|
||||||
|
},
|
||||||
|
twitter: {
|
||||||
|
card: 'summary_large_image',
|
||||||
|
title: `${title} - ${companyName}`,
|
||||||
|
description: `${description} ${phone}`,
|
||||||
|
creator: creator,
|
||||||
|
images: [
|
||||||
|
{
|
||||||
|
url: `${url}/api/og/?title=${ogImageTitle}&description=${ogImageDescription}`,
|
||||||
|
width: width,
|
||||||
|
height: height,
|
||||||
|
alt: `${title} - ${companyName}`,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
export { metaInfo };
|
||||||
1
src/shared/lib/phoneBeautify/index.ts
Normal file
1
src/shared/lib/phoneBeautify/index.ts
Normal file
@@ -0,0 +1 @@
|
|||||||
|
export * from './phoneBeautify';
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
export function phoneBeautify(phone: string): string {
|
function phoneBeautify(phone: string): string {
|
||||||
const cleaned = phone.replace(/[^\d+]/g, '');
|
const cleaned = phone.replace(/[^\d+]/g, '');
|
||||||
|
|
||||||
const match = cleaned.match(/^\+?7(\d{3})(\d{3})(\d{2})(\d{2})$/);
|
const match = cleaned.match(/^\+?7(\d{3})(\d{3})(\d{2})(\d{2})$/);
|
||||||
@@ -8,3 +8,5 @@ export function phoneBeautify(phone: string): string {
|
|||||||
|
|
||||||
return `+7 (${code}) ${part1}-${part2}-${part3}`;
|
return `+7 (${code}) ${part1}-${part2}-${part3}`;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
export { phoneBeautify };
|
||||||
|
|||||||
@@ -53,6 +53,8 @@ function ConsultationModal({
|
|||||||
|
|
||||||
const modal = useModal();
|
const modal = useModal();
|
||||||
|
|
||||||
|
const handlePolicyClick = () => modal.hideModal();
|
||||||
|
|
||||||
const onSubmit = async (data: TForm) => {
|
const onSubmit = async (data: TForm) => {
|
||||||
const payload = {
|
const payload = {
|
||||||
...data,
|
...data,
|
||||||
@@ -133,8 +135,10 @@ function ConsultationModal({
|
|||||||
/>
|
/>
|
||||||
<span className={s.Agreement}>
|
<span className={s.Agreement}>
|
||||||
Нажимая на кнопку, вы даете согласие на обработку своих персональных
|
Нажимая на кнопку, вы даете согласие на обработку своих персональных
|
||||||
данных и соглашаетесь с
|
данных и соглашаетесь с{' '}
|
||||||
<Link href={'/privacy-policy'}> Политикой конфиденциальности</Link>
|
<Link href={'/privacy-policy'} onClick={handlePolicyClick}>
|
||||||
|
Политикой конфиденциальности
|
||||||
|
</Link>
|
||||||
</span>
|
</span>
|
||||||
<Button className={s.SendBtn} variant='green'>
|
<Button className={s.SendBtn} variant='green'>
|
||||||
Отправить
|
Отправить
|
||||||
|
|||||||
Reference in New Issue
Block a user