diff --git a/.gitignore b/.gitignore new file mode 100644 index 000000000..a547bf36d --- /dev/null +++ b/.gitignore @@ -0,0 +1,24 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? diff --git a/README.md b/README.md index bcd1a1367..17a53c87e 100644 --- a/README.md +++ b/README.md @@ -1,83 +1,18 @@ -### Ветка, в которой делаете задания спринта, должна называться sprint_i, где i - номер спринта. Не переименовывайте её. - -### Откройте pull request в ветку main из ветки, где вы разрабатывали проект, и добавьте ссылку на этот pr в README.md в ветке main. -### ВАЖНО: pull request должен называться “Sprint i” (i — номер спринта). - -### Например, задания для проектной работы во втором спринте вы делаете в ветке sprint_2. Открываете из неё pull request в ветку main. Ссылку на этот pr добавляете в README.md в ветке main. После этого на платформе Практикума нажимаете «Проверить задание». - -### Также не забудьте проверить, что репозиторий публичный. ---- - - -Даже законченный проект остаётся только заготовкой, пока им не начнут пользоваться. Но сначала пользователь должен понять, зачем ему пользоваться вашим кодом. В этом помогает файл README. - -README — первое, что прочитает пользователь, когда попадёт в репозиторий на «Гитхабе». Хороший REAMDE отвечает на четыре вопроса: - -- Готов ли проект к использованию? -- В чём его польза? -- Как установить? -- Как применять? - -## Бейджи - -Быстро понять статус проекта помогают бейджи на «Гитхабе». Иногда разработчики ограничиваются парой бейджев, которые сообщат о статусе тестов кода: - -![Бэйджи](https://github.com/yandex-praktikum/mf.messenger.praktikum.yandex.images/blob/master/mf/b.png) - -Если пользователь увидит ошибку в работе тестов, то поймёт: использовать текущую версию в важном проекте — не лучшая идея. - -Бейджи помогают похвастаться достижениями: насколько популярен проект, как много разработчиков создавало этот код. Через бейджи можно даже пригласить пользователя в чат: - -![Версии](https://github.com/yandex-praktikum/mf.messenger.praktikum.yandex.images/blob/master/mf/vers.png) - -В README **Webpack** строка бейджев подробно рассказывает о покрытии кода тестами. Когда проект протестирован, это вызывает доверие пользователя. Последний бейдж приглашает присоединиться к разработке. - -Другая строка убедит пользователя в стабильности инфраструктуры и популярности проекта. Последний бейдж зовёт в чат проекта. - -## Описание - -Краткое опишите, какую задачу решает проект. Пользователь не верит обещаниям и не готов читать «полотна» текста. Поэтому в описании достаточно нескольких строк: - -![Описание](https://github.com/yandex-praktikum/mf.messenger.praktikum.yandex.images/blob/master/mf/desc.png) - -Авторы **React** дробят описание на абзацы и списки — так проще пробежаться глазами по тексту и найти ключевую информацию. - -Если у проекта есть сайт, добавьте ссылку в заголовок. - -## Установка - -Лучше всего пользователя убеждает собственный опыт. Чем быстрее он начнёт пользоваться проектом, тем раньше почувствует пользу. Для этого помогите ему установить приложение: напишите краткую пошаговую инструкцию. - -Если проект предназначен для разработчиков, добавьте информацию об установке тестовых версий. Например: - -- `npm install` — установка стабильной версии, -- `npm start` — запуск версии для разработчика, -- `npm run build:prod` — сборка стабильной версии. - -## **Примеры использования** - -Хорошо, если сразу после установки пользователь сможет решить свои задачи без изучения проекта. Это особенно верно, если ваш пользователь — не профессиональный разработчик. Но даже профессионал поймёт вас лучше, если показать примеры использования: - -![Ссылки](https://github.com/yandex-praktikum/mf.messenger.praktikum.yandex.images/blob/master/mf/link.png) - -Для более подробных инструкции добавьте новые разделы или ссылки: - -- на документацию, -- вики проекта, -- описание API. - -В учебном проекте будут полезен раздел с описанием стиля кода и правилами разработки: как работать с ветками, пул-реквестами и релизами. - -### **Команда** - -Если вы работаете в команде, укажите основных участников: им будет приятно, а новые разработчики охотнее присоединятся к проекту. «Гитхаб» — не просто инструмент, это социальная сеть разработчиков. - -![Команда](https://github.com/yandex-praktikum/mf.messenger.praktikum.yandex.images/blob/master/mf/team.png) - -### **Примеры README** - -- «[Реакт](https://github.com/facebook/react)», -- «[Эхо](https://github.com/labstack/echo)», -- «[Вебпак](https://github.com/webpack/webpack)», -- «[ТДенгине](https://github.com/taosdata/TDengine)», -- «[Соул-хантинг](https://github.com/vladpereskokov/soul-hunting/)». +

Многостраничное веб приложение "чат".

+

Установка

+ +

Ссылки на готовые страницы проекта

+ diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 000000000..18298225c --- /dev/null +++ b/package-lock.json @@ -0,0 +1,822 @@ +{ + "name": "project", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "project", + "version": "0.0.0", + "dependencies": { + "vite-plugin-handlebars": "^2.0.0" + }, + "devDependencies": { + "vite": "^5.3.1" + } + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.18.1.tgz", + "integrity": "sha512-lncuC4aHicncmbORnx+dUaAgzee9cm/PbIqgWz1PpXuwc+sa1Ct83tnqUDy/GFKleLiN7ZIeytM6KJ4cAn1SxA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.18.1.tgz", + "integrity": "sha512-F/tkdw0WSs4ojqz5Ovrw5r9odqzFjb5LIgHdHZG65dFI1lWTWRVy32KDJLKRISHgJvqUeUhdIvy43fX41znyDg==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.18.1.tgz", + "integrity": "sha512-vk+ma8iC1ebje/ahpxpnrfVQJibTMyHdWpOGZ3JpQ7Mgn/3QNHmPq7YwjZbIE7km73dH5M1e6MRRsnEBW7v5CQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.18.1.tgz", + "integrity": "sha512-IgpzXKauRe1Tafcej9STjSSuG0Ghu/xGYH+qG6JwsAUxXrnkvNHcq/NL6nz1+jzvWAnQkuAJ4uIwGB48K9OCGA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.18.1.tgz", + "integrity": "sha512-P9bSiAUnSSM7EmyRK+e5wgpqai86QOSv8BwvkGjLwYuOpaeomiZWifEos517CwbG+aZl1T4clSE1YqqH2JRs+g==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.18.1.tgz", + "integrity": "sha512-5RnjpACoxtS+aWOI1dURKno11d7krfpGDEn19jI8BuWmSBbUC4ytIADfROM1FZrFhQPSoP+KEa3NlEScznBTyQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.18.1.tgz", + "integrity": "sha512-8mwmGD668m8WaGbthrEYZ9CBmPug2QPGWxhJxh/vCgBjro5o96gL04WLlg5BA233OCWLqERy4YUzX3bJGXaJgQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.18.1.tgz", + "integrity": "sha512-dJX9u4r4bqInMGOAQoGYdwDP8lQiisWb9et+T84l2WXk41yEej8v2iGKodmdKimT8cTAYt0jFb+UEBxnPkbXEQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.18.1.tgz", + "integrity": "sha512-V72cXdTl4EI0x6FNmho4D502sy7ed+LuVW6Ym8aI6DRQ9hQZdp5sj0a2usYOlqvFBNKQnLQGwmYnujo2HvjCxQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.18.1.tgz", + "integrity": "sha512-f+pJih7sxoKmbjghrM2RkWo2WHUW8UbfxIQiWo5yeCaCM0TveMEuAzKJte4QskBp1TIinpnRcxkquY+4WuY/tg==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.18.1.tgz", + "integrity": "sha512-qb1hMMT3Fr/Qz1OKovCuUM11MUNLUuHeBC2DPPAWUYYUAOFWaxInaTwTQmc7Fl5La7DShTEpmYwgdt2hG+4TEg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.18.1.tgz", + "integrity": "sha512-7O5u/p6oKUFYjRbZkL2FLbwsyoJAjyeXHCU3O4ndvzg2OFO2GinFPSJFGbiwFDaCFc+k7gs9CF243PwdPQFh5g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.18.1.tgz", + "integrity": "sha512-pDLkYITdYrH/9Cv/Vlj8HppDuLMDUBmgsM0+N+xLtFd18aXgM9Nyqupb/Uw+HeidhfYg2lD6CXvz6CjoVOaKjQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.18.1.tgz", + "integrity": "sha512-W2ZNI323O/8pJdBGil1oCauuCzmVd9lDmWBBqxYZcOqWD6aWqJtVBQ1dFrF4dYpZPks6F+xCZHfzG5hYlSHZ6g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.18.1.tgz", + "integrity": "sha512-ELfEX1/+eGZYMaCIbK4jqLxO1gyTSOIlZr6pbC4SRYFaSIDVKOnZNMdoZ+ON0mrFDp4+H5MhwNC1H/AhE3zQLg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.18.1.tgz", + "integrity": "sha512-yjk2MAkQmoaPYCSu35RLJ62+dz358nE83VfTePJRp8CG7aMg25mEJYpXFiD+NcevhX8LxD5OP5tktPXnXN7GDw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@types/estree": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/handlebars": { + "version": "4.7.8", + "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.7.8.tgz", + "integrity": "sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==", + "dependencies": { + "minimist": "^1.2.5", + "neo-async": "^2.6.2", + "source-map": "^0.6.1", + "wordwrap": "^1.0.0" + }, + "bin": { + "handlebars": "bin/handlebars" + }, + "engines": { + "node": ">=0.4.7" + }, + "optionalDependencies": { + "uglify-js": "^3.1.4" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/nanoid": { + "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/postcss": { + "version": "8.4.39", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.39.tgz", + "integrity": "sha512-0vzE+lAiG7hZl1/9I8yzKLx3aR9Xbof3fBHKunvMfOCYAtMhrsnccJY2iTURb9EZd5+pLuiNV9/c/GZJOHsgIw==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.0.1", + "source-map-js": "^1.2.0" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/rollup": { + "version": "4.18.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.18.1.tgz", + "integrity": "sha512-Elx2UT8lzxxOXMpy5HWQGZqkrQOtrVDDa/bm9l10+U4rQnVzbL/LgZ4NOM1MPIDyHk69W4InuYDF5dzRh4Kw1A==", + "dependencies": { + "@types/estree": "1.0.5" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.18.1", + "@rollup/rollup-android-arm64": "4.18.1", + "@rollup/rollup-darwin-arm64": "4.18.1", + "@rollup/rollup-darwin-x64": "4.18.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.18.1", + "@rollup/rollup-linux-arm-musleabihf": "4.18.1", + "@rollup/rollup-linux-arm64-gnu": "4.18.1", + "@rollup/rollup-linux-arm64-musl": "4.18.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.18.1", + "@rollup/rollup-linux-riscv64-gnu": "4.18.1", + "@rollup/rollup-linux-s390x-gnu": "4.18.1", + "@rollup/rollup-linux-x64-gnu": "4.18.1", + "@rollup/rollup-linux-x64-musl": "4.18.1", + "@rollup/rollup-win32-arm64-msvc": "4.18.1", + "@rollup/rollup-win32-ia32-msvc": "4.18.1", + "@rollup/rollup-win32-x64-msvc": "4.18.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.0.tgz", + "integrity": "sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/uglify-js": { + "version": "3.18.0", + "resolved": "https://registry.npmjs.org/uglify-js/-/uglify-js-3.18.0.tgz", + "integrity": "sha512-SyVVbcNBCk0dzr9XL/R/ySrmYf0s372K6/hFklzgcp2lBFyXtw4I7BOdDjlLhE1aVqaI/SHWXWmYdlZxuyF38A==", + "optional": true, + "bin": { + "uglifyjs": "bin/uglifyjs" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/vite": { + "version": "5.3.3", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.3.3.tgz", + "integrity": "sha512-NPQdeCU0Dv2z5fu+ULotpuq5yfCS1BzKUIPhNbP3YBfAMGJXbt2nS+sbTFu+qchaqWTD+H3JK++nRwr6XIcp6A==", + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.39", + "rollup": "^4.13.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-handlebars": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/vite-plugin-handlebars/-/vite-plugin-handlebars-2.0.0.tgz", + "integrity": "sha512-+J3It0nyhPzx4nT1I+fnWH+jShTEXzm6X0Tgsggdm9IYFD7/eJ6a3ROI13HTe0CVoyaxm/fPxH5HDAKyfz7T0g==", + "dependencies": { + "handlebars": "^4.7.6", + "vite": "^5.0.0" + } + }, + "node_modules/wordwrap": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-1.0.0.tgz", + "integrity": "sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 000000000..7ffa4ff84 --- /dev/null +++ b/package.json @@ -0,0 +1,21 @@ +{ + "name": "project", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "start": "vite build && vite --port 3000" + }, + "devDependencies": { + "vite": "^5.3.1" + }, + "dependencies": { + "vite-plugin-handlebars": "^2.0.0" + }, + "engines": { + "node": "^16.9.1" + } +} diff --git a/src/404/404.css b/src/404/404.css new file mode 100644 index 000000000..a7c4ee6fd --- /dev/null +++ b/src/404/404.css @@ -0,0 +1,17 @@ +html, +body { + height: 100%; +} + +.container { + display: flex; + justify-content: center; + align-items: center; + height: 100%; +} + +.content { + text-align: center; + display: flex; + flex-direction: column; +} diff --git a/src/404/404.html b/src/404/404.html new file mode 100644 index 000000000..68e071661 --- /dev/null +++ b/src/404/404.html @@ -0,0 +1,18 @@ + + + + + + + + Document + + +
+
+ {{> H1 title="404"}} {{> description title="Не туда попали"}} {{> link + URL="../index.html" label="Назад к чатам"}} +
+
+ + diff --git a/src/500/500.html b/src/500/500.html new file mode 100644 index 000000000..e0355f2ee --- /dev/null +++ b/src/500/500.html @@ -0,0 +1,18 @@ + + + + + + + + Document + + +
+
+ {{> H1 title="500"}} {{> description title="Не туда попали"}} {{> link + URL="../index.html" label="Назад к чатам"}} +
+
+ + diff --git a/src/avatar.svg b/src/avatar.svg new file mode 100644 index 000000000..43b222024 --- /dev/null +++ b/src/avatar.svg @@ -0,0 +1,3 @@ + + + diff --git a/src/changeData/changeData.css b/src/changeData/changeData.css new file mode 100644 index 000000000..b188af179 --- /dev/null +++ b/src/changeData/changeData.css @@ -0,0 +1,28 @@ +* { + box-sizing: border-box; +} + +html, +body { + height: 100%; +} + +.container { + display: flex; + justify-content: center; + align-items: center; + height: 100%; +} + +.content { + width: 510px; +} + +.form { + width: 510px; + margin-top: 97px; +} + +.input:focus { + outline: 0; +} diff --git a/src/changeData/changeData.html b/src/changeData/changeData.html new file mode 100644 index 000000000..925d2f32b --- /dev/null +++ b/src/changeData/changeData.html @@ -0,0 +1,29 @@ + + + + + + + + Document + + +
+
+ {{> avatar }} +
+ {{> formSection for="email" type="email" id="email" name="email" + description="Почта"}} {{> formSection for="login" type="text" + id="login" name="login" description="Логин"}} {{> formSection + for="first_name" type="text" id="first_name" name="first_name" + description="Имя"}} {{> formSection for="second_name" type="text" + id="second_name" name="second_name" description="Фамилия"}} {{> + formSection for="display_name" type="text" id="display_name" + name="display_name" description="Имя в чате"}} {{> formSection + for="tel" type="tel" id="tel" name="phone" description="Телефон"}} {{> + profileButton title="Сохранить"}} +
+
+
+ + diff --git a/src/changePassword/changePassword.css b/src/changePassword/changePassword.css new file mode 100644 index 000000000..29875c251 --- /dev/null +++ b/src/changePassword/changePassword.css @@ -0,0 +1,33 @@ +* { + box-sizing: border-box; +} + +html, +body { + height: 100%; +} + +.container { + display: flex; + justify-content: center; + align-items: center; + height: 100%; +} + +.content { + width: 510px; +} + +.form { + width: 510px; + margin-top: 97px; +} + +.form__content { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #eaeaea; +} diff --git a/src/changePassword/changePassword.html b/src/changePassword/changePassword.html new file mode 100644 index 000000000..080f7b9ee --- /dev/null +++ b/src/changePassword/changePassword.html @@ -0,0 +1,26 @@ + + + + + + + + Document + + +
+
+ {{> avatar }} +
+ {{> formSection for="oldPassword" type="password" id="oldPassword" + name="oldPassword" description="Старый пароль"}} {{> formSection + for="newPassword" type="password" id="newPassword" name="newPassword" + description="Новый пароль"}} {{> formSection for="repeatPassword" + type="password" id="repeatPassword" name="repeatPassword" + description="Повторите новый пароль"}} {{> profileButton + title="Сохранить"}} +
+
+
+ + diff --git a/src/entrance/entrance.css b/src/entrance/entrance.css new file mode 100644 index 000000000..da4879d08 --- /dev/null +++ b/src/entrance/entrance.css @@ -0,0 +1,27 @@ +* { + box-sizing: border-box; +} + +html, +body { + height: 100%; +} + +.entrance__container { + display: flex; + justify-content: center; + align-items: center; + height: 100%; +} + +.entrance__content { + width: 370px; + padding: 50px 30px 30px 30px; + border-radius: 12px; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.14); +} + +.entrance__form { + display: flex; + flex-direction: column; +} diff --git a/src/entrance/entrance.html b/src/entrance/entrance.html new file mode 100644 index 000000000..c11d312e8 --- /dev/null +++ b/src/entrance/entrance.html @@ -0,0 +1,29 @@ + + + + + + + + Vite App + + +
+
+ {{> H2 title="Вход"}} +
+ {{> label for="text" description="Логин"}} {{> input type="text" + id="text" name="login"}} {{> label for="password" + description="Пароль"}} {{> input type="password" id="password" + name="password"}} + + {{> button title="Авторизоваться"}} +
+ + {{> link URL="../registration/registration.html" label="Нет аккаунта?"}} +
+
+ + diff --git a/src/index.html b/src/index.html new file mode 100644 index 000000000..8bd5deb01 --- /dev/null +++ b/src/index.html @@ -0,0 +1,18 @@ + + + + + + + + Vite App + + +
+ {{> link URL="./entrance/entrance.html" label="Вход"}} {{> link + URL="./registration/registration.html" label="Регистрация"}} {{> link + URL="./404/404.html" label="404"}} {{> link URL="./500/500.html" + label="500"}} {{> link URL="./profile/profile.html" label="profile"}} +
+ + diff --git a/src/normalize.css b/src/normalize.css new file mode 100644 index 000000000..87cd38d8a --- /dev/null +++ b/src/normalize.css @@ -0,0 +1,354 @@ +/*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */ + +/* Document + ========================================================================== */ + +/** + * 1. Correct the line height in all browsers. + * 2. Prevent adjustments of font size after orientation changes in iOS. + */ + +html { + line-height: 1.15; /* 1 */ + -webkit-text-size-adjust: 100%; /* 2 */ +} + +h1, +h2, +h3, +h4, +h5, +h6 { + margin: 0; + padding: 0; +} + +/* Sections + ========================================================================== */ + +/** + * Remove the margin in all browsers. + */ + +body { + margin: 0; +} + +/** + * Render the `main` element consistently in IE. + */ + +main { + display: block; +} + +/** + * Correct the font size and margin on `h1` elements within `section` and + * `article` contexts in Chrome, Firefox, and Safari. + */ + +h1 { + font-size: 2em; + margin: 0.67em 0; +} + +/* Grouping content + ========================================================================== */ + +/** + * 1. Add the correct box sizing in Firefox. + * 2. Show the overflow in Edge and IE. + */ + +hr { + box-sizing: content-box; /* 1 */ + height: 0; /* 1 */ + overflow: visible; /* 2 */ +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +pre { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/* Text-level semantics + ========================================================================== */ + +/** + * Remove the gray background on active links in IE 10. + */ + +a { + background-color: transparent; +} + +/** + * 1. Remove the bottom border in Chrome 57- + * 2. Add the correct text decoration in Chrome, Edge, IE, Opera, and Safari. + */ + +abbr[title] { + border-bottom: none; /* 1 */ + text-decoration: underline; /* 2 */ + text-decoration: underline dotted; /* 2 */ +} + +/** + * Add the correct font weight in Chrome, Edge, and Safari. + */ + +b, +strong { + font-weight: bolder; +} + +/** + * 1. Correct the inheritance and scaling of font size in all browsers. + * 2. Correct the odd `em` font sizing in all browsers. + */ + +code, +kbd, +samp { + font-family: monospace, monospace; /* 1 */ + font-size: 1em; /* 2 */ +} + +/** + * Add the correct font size in all browsers. + */ + +small { + font-size: 80%; +} + +/** + * Prevent `sub` and `sup` elements from affecting the line height in + * all browsers. + */ + +sub, +sup { + font-size: 75%; + line-height: 0; + position: relative; + vertical-align: baseline; +} + +sub { + bottom: -0.25em; +} + +sup { + top: -0.5em; +} + +/* Embedded content + ========================================================================== */ + +/** + * Remove the border on images inside links in IE 10. + */ + +img { + border-style: none; +} + +/* Forms + ========================================================================== */ + +/** + * 1. Change the font styles in all browsers. + * 2. Remove the margin in Firefox and Safari. + */ + +button, +input, +optgroup, +select, +textarea { + font-family: inherit; /* 1 */ + font-size: 100%; /* 1 */ + line-height: 1.15; /* 1 */ + margin: 0; /* 2 */ +} + +/** + * Show the overflow in IE. + * 1. Show the overflow in Edge. + */ + +button, +input { + /* 1 */ + overflow: visible; +} + +/** + * Remove the inheritance of text transform in Edge, Firefox, and IE. + * 1. Remove the inheritance of text transform in Firefox. + */ + +button, +select { + /* 1 */ + text-transform: none; +} + +/** + * Correct the inability to style clickable types in iOS and Safari. + */ + +button, +[type='button'], +[type='reset'], + + +/** + * Remove the inner border and padding in Firefox. + */ + +button::-moz-focus-inner, +[type='button']::-moz-focus-inner, +[type='reset']::-moz-focus-inner, +[type='submit']::-moz-focus-inner { + border-style: none; + padding: 0; +} + +/** + * Restore the focus styles unset by the previous rule. + */ + +button:-moz-focusring, +[type='button']:-moz-focusring, +[type='reset']:-moz-focusring, +[type='submit']:-moz-focusring { + outline: 1px dotted ButtonText; +} + +/** + * Correct the padding in Firefox. + */ + +fieldset { + padding: 0.35em 0.75em 0.625em; +} + +/** + * 1. Correct the text wrapping in Edge and IE. + * 2. Correct the color inheritance from `fieldset` elements in IE. + * 3. Remove the padding so developers are not caught out when they zero out + * `fieldset` elements in all browsers. + */ + +legend { + box-sizing: border-box; /* 1 */ + color: inherit; /* 2 */ + display: table; /* 1 */ + max-width: 100%; /* 1 */ + padding: 0; /* 3 */ + white-space: normal; /* 1 */ +} + +/** + * Add the correct vertical alignment in Chrome, Firefox, and Opera. + */ + +progress { + vertical-align: baseline; +} + +/** + * Remove the default vertical scrollbar in IE 10+. + */ + +textarea { + overflow: auto; +} + +/** + * 1. Add the correct box sizing in IE 10. + * 2. Remove the padding in IE 10. + */ + +[type='checkbox'], +[type='radio'] { + box-sizing: border-box; /* 1 */ + padding: 0; /* 2 */ +} + +/** + * Correct the cursor style of increment and decrement buttons in Chrome. + */ + +[type='number']::-webkit-inner-spin-button, +[type='number']::-webkit-outer-spin-button { + height: auto; +} + +/** + * 1. Correct the odd appearance in Chrome and Safari. + * 2. Correct the outline style in Safari. + */ + +/** + * Remove the inner padding in Chrome and Safari on macOS. + */ + +[type='search']::-webkit-search-decoration { + -webkit-appearance: none; +} + +/** + * 1. Correct the inability to style clickable types in iOS and Safari. + * 2. Change font properties to `inherit` in Safari. + */ + +::-webkit-file-upload-button { + -webkit-appearance: button; /* 1 */ + font: inherit; /* 2 */ +} + +/* Interactive + ========================================================================== */ + +/* + * Add the correct display in Edge, IE 10+, and Firefox. + */ + +details { + display: block; +} + +/* + * Add the correct display in all browsers. + */ + +summary { + display: list-item; +} + +/* Misc + ========================================================================== */ + +/** + * Add the correct display in IE 10+. + */ + +template { + display: none; +} + +/** + * Add the correct display in IE 10. + */ + +[hidden] { + display: none; +} diff --git a/src/partials/H1.hbs b/src/partials/H1.hbs new file mode 100644 index 000000000..11105512e --- /dev/null +++ b/src/partials/H1.hbs @@ -0,0 +1,2 @@ + +

{{title}}

\ No newline at end of file diff --git a/src/partials/H2.hbs b/src/partials/H2.hbs new file mode 100644 index 000000000..39cb9b6ec --- /dev/null +++ b/src/partials/H2.hbs @@ -0,0 +1,2 @@ + +

{{title}}

\ No newline at end of file diff --git a/src/partials/ProfileData.hbs b/src/partials/ProfileData.hbs new file mode 100644 index 000000000..8874eb564 --- /dev/null +++ b/src/partials/ProfileData.hbs @@ -0,0 +1,5 @@ + +
+
{{label}}
+
{{description}}
+
\ No newline at end of file diff --git a/src/partials/avatar.hbs b/src/partials/avatar.hbs new file mode 100644 index 000000000..b2e04f175 --- /dev/null +++ b/src/partials/avatar.hbs @@ -0,0 +1,2 @@ + +
\ No newline at end of file diff --git a/src/partials/button.hbs b/src/partials/button.hbs new file mode 100644 index 000000000..ec434fda2 --- /dev/null +++ b/src/partials/button.hbs @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/partials/description.hbs b/src/partials/description.hbs new file mode 100644 index 000000000..8ab715236 --- /dev/null +++ b/src/partials/description.hbs @@ -0,0 +1,2 @@ + +

{{title}}

\ No newline at end of file diff --git a/src/partials/formSection.hbs b/src/partials/formSection.hbs new file mode 100644 index 000000000..6fb21f8b4 --- /dev/null +++ b/src/partials/formSection.hbs @@ -0,0 +1,5 @@ + +
+ + +
\ No newline at end of file diff --git a/src/partials/input.hbs b/src/partials/input.hbs new file mode 100644 index 000000000..0daeb14fd --- /dev/null +++ b/src/partials/input.hbs @@ -0,0 +1,10 @@ +{{!-- --}} +{{! }} + + \ No newline at end of file diff --git a/src/partials/label.hbs b/src/partials/label.hbs new file mode 100644 index 000000000..c3ad96933 --- /dev/null +++ b/src/partials/label.hbs @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/partials/link.hbs b/src/partials/link.hbs new file mode 100644 index 000000000..ce10cb272 --- /dev/null +++ b/src/partials/link.hbs @@ -0,0 +1,2 @@ + +{{label}} \ No newline at end of file diff --git a/src/partials/profileButton.hbs b/src/partials/profileButton.hbs new file mode 100644 index 000000000..f632ba9bf --- /dev/null +++ b/src/partials/profileButton.hbs @@ -0,0 +1,2 @@ + + \ No newline at end of file diff --git a/src/partials/profileLink.hbs b/src/partials/profileLink.hbs new file mode 100644 index 000000000..75c6759d8 --- /dev/null +++ b/src/partials/profileLink.hbs @@ -0,0 +1,2 @@ + +{{label}} \ No newline at end of file diff --git a/src/partials/styles/H1.css b/src/partials/styles/H1.css new file mode 100644 index 000000000..0f364bc21 --- /dev/null +++ b/src/partials/styles/H1.css @@ -0,0 +1,7 @@ +.header { + font-weight: 500; + font-size: 40px; + margin: 0; + line-height: 40px; + color: #1e1e1e; +} diff --git a/src/partials/styles/H2.css b/src/partials/styles/H2.css new file mode 100644 index 000000000..0bb35814a --- /dev/null +++ b/src/partials/styles/H2.css @@ -0,0 +1,8 @@ +.entrance__header { + font-weight: 500; + font-size: 20px; + line-height: 20px; + text-align: center; + color: #1e1e1e; + margin-bottom: 40px; +} diff --git a/src/partials/styles/ProfileData.css b/src/partials/styles/ProfileData.css new file mode 100644 index 000000000..5e1232200 --- /dev/null +++ b/src/partials/styles/ProfileData.css @@ -0,0 +1,22 @@ +.section { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #eaeaea; +} + +.label { + font-weight: 500; + font-size: 13px; + line-height: 13px; + color: #1e1e1e; +} + +.description { + font-weight: 500; + font-size: 13px; + line-height: 13px; + color: #999999; +} diff --git a/src/partials/styles/avatar.css b/src/partials/styles/avatar.css new file mode 100644 index 000000000..3a8de3be4 --- /dev/null +++ b/src/partials/styles/avatar.css @@ -0,0 +1,16 @@ +.avatar { + width: 130px; + margin: 0 auto; + padding: 45px; + background-color: #efefef; + border-radius: 50%; +} + +.avatar__image { + display: inline-block; + background-image: url('../../avatar.svg'); + background-size: cover; + background-repeat: no-repeat; + width: 40px; + height: 40px; +} diff --git a/src/partials/styles/button.css b/src/partials/styles/button.css new file mode 100644 index 000000000..8eb919361 --- /dev/null +++ b/src/partials/styles/button.css @@ -0,0 +1,12 @@ +.entrance__button { + padding: 12px 70px; + background-color: #3369f3; + margin-top: 143px; + color: #fff; + font-weight: 500; + font-size: 13px; + line-height: 13px; + border: 0px; + text-align: center; + border-radius: 8px; +} diff --git a/src/partials/styles/description.css b/src/partials/styles/description.css new file mode 100644 index 000000000..67acd0ec9 --- /dev/null +++ b/src/partials/styles/description.css @@ -0,0 +1,6 @@ +.description { + font-weight: 500; + font-size: 20px; + line-height: 20px; + color: #1e1e1e; +} diff --git a/src/partials/styles/formSection.css b/src/partials/styles/formSection.css new file mode 100644 index 000000000..2a6e6850b --- /dev/null +++ b/src/partials/styles/formSection.css @@ -0,0 +1,24 @@ +.form__content { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 10px; + padding-bottom: 10px; + border-bottom: 1px solid #eaeaea; +} + +.label { + font-weight: 500; + font-size: 13px; + line-height: 13px; + color: #1e1e1e; +} + +.input { + border: none; + text-align: right; + font-weight: 500; + font-size: 13px; + line-height: 13px; + color: #999999; +} diff --git a/src/partials/styles/input.css b/src/partials/styles/input.css new file mode 100644 index 000000000..a86669075 --- /dev/null +++ b/src/partials/styles/input.css @@ -0,0 +1,15 @@ +.entrance__input { + font-weight: 500; + font-size: 13px; + line-height: 13px; + padding-bottom: 7px; + color: #1e1e1e; + border: 0px; + margin-bottom: 16px; + border-bottom: 1px solid #3369f3; +} + +.entrance__input:focus { + outline: 0; + outline-offset: 0; +} diff --git a/src/partials/styles/label.css b/src/partials/styles/label.css new file mode 100644 index 000000000..c8093262a --- /dev/null +++ b/src/partials/styles/label.css @@ -0,0 +1,7 @@ +.label { + font-weight: 500; + font-size: 9px; + line-height: 9px; + margin-bottom: 8px; + color: #999999; +} diff --git a/src/partials/styles/link.css b/src/partials/styles/link.css new file mode 100644 index 000000000..d22a4acb8 --- /dev/null +++ b/src/partials/styles/link.css @@ -0,0 +1,10 @@ +.entrance__link { + display: block; + margin-top: 14px; + font-weight: 500; + font-size: 11px; + line-height: 11px; + color: #3369f3; + text-align: center; + text-decoration: none; +} diff --git a/src/partials/styles/profileButton.css b/src/partials/styles/profileButton.css new file mode 100644 index 000000000..78041ed43 --- /dev/null +++ b/src/partials/styles/profileButton.css @@ -0,0 +1,17 @@ +.button { + padding: 12px 70px; + width: 280px; + font-weight: 500; + font-size: 13px; + margin-top: 50px; + margin-left: 116px; + line-height: 13px; + color: #fff; + background-color: #3369f3; + border: none; + border-radius: 8px; +} + +.button:hover { + cursor: pointer; +} diff --git a/src/partials/styles/profileLink.css b/src/partials/styles/profileLink.css new file mode 100644 index 000000000..bd2648ec6 --- /dev/null +++ b/src/partials/styles/profileLink.css @@ -0,0 +1,9 @@ +.link { + font-weight: 500; + font-size: 13px; + line-height: 13px; + padding-bottom: 10px; + border-bottom: 1px solid #eaeaea; + text-decoration: none; + color: #3369f3; +} diff --git a/src/profile/profile.css b/src/profile/profile.css new file mode 100644 index 000000000..337a26e27 --- /dev/null +++ b/src/profile/profile.css @@ -0,0 +1,44 @@ +* { + box-sizing: border-box; +} + +html, +body { + height: 100%; +} + +.container { + display: flex; + justify-content: center; + align-items: center; + height: 100%; +} + +.content { + width: 510px; +} + +.name { + text-align: center; + margin-top: 20px; + font-weight: 600; + font-size: 16px; + line-height: 16px; + color: #1e1e1e; + margin-bottom: 60px; +} + +.container__link { + display: flex; + flex-direction: column; + gap: 10px; + margin-top: 50px; +} + +.exit { + font-weight: 500; + font-size: 13px; + text-decoration: none; + line-height: 13px; + color: #ff0000; +} diff --git a/src/profile/profile.html b/src/profile/profile.html new file mode 100644 index 000000000..1e342c64c --- /dev/null +++ b/src/profile/profile.html @@ -0,0 +1,33 @@ + + + + + + + + Document + + +
+
+ + {{> avatar }} +
Иван
+
+ {{> ProfileData label="Почта" description="pochta@yandex.ru" }} {{> + ProfileData label="Логин" description="ivanivanov" }} {{> ProfileData + label="Имя" description="Иван" }} {{> ProfileData label="Фамилия" + description="Иванов" }} {{> ProfileData label="Имя в чате" + description="Иван" }} {{> ProfileData label="Телефон" description="+7 + (909) 967 30 30" }} +
+ +
+
+ + diff --git a/src/registration/registration.css b/src/registration/registration.css new file mode 100644 index 000000000..b56a0e76f --- /dev/null +++ b/src/registration/registration.css @@ -0,0 +1,27 @@ +* { + box-sizing: border-box; +} + +html, +body { + height: 100%; +} + +.registration__container { + display: flex; + justify-content: center; + align-items: center; + height: 670px; +} + +.registration__content { + width: 370px; + padding: 50px 30px 30px 30px; + border-radius: 12px; + box-shadow: 0px 0px 6px rgba(0, 0, 0, 0.14); +} + +.registration__form { + display: flex; + flex-direction: column; +} diff --git a/src/registration/registration.html b/src/registration/registration.html new file mode 100644 index 000000000..6e832b618 --- /dev/null +++ b/src/registration/registration.html @@ -0,0 +1,32 @@ + + + + + + Document + + + + +
+
+ {{> H2 title="Регистрация"}} +
+ {{> label for="email" description="Почта"}} {{> input type="email" + id="email" name="email"}} {{> label for="login" description="Логин"}} + {{> input type="text" id="login" name="login"}} {{> label + for="first_name" description="Имя"}} {{> input type="text" + id="first_name" name="first_name"}} {{> label for="second_name" + description="Фамилия"}} {{> input type="text" id="second_name" + name="second_name"}} {{> label for="phone" description="Телефон"}} {{> + input type="tel" id="phone" name="phone"}} {{> label for="password" + description="Пароль"}} {{> input type="password" id="password" + name="password"}} {{> label for="PasswordRepeat" description="Пароль + (ещё раз)"}} {{> input type="password" id="PasswordRepeat" + name="password"}} {{> button title="Зарегестрироваться"}} +
+ {{> link URL="../entrance/entrance.html" label="Войти"}} +
+
+ + diff --git a/src/style.css b/src/style.css new file mode 100644 index 000000000..87a28fc72 --- /dev/null +++ b/src/style.css @@ -0,0 +1,12 @@ +.container { + font-size: 60px; + text-align: center; + display: flex; + flex-direction: column; + gap: 20px; +} + +a { + font-size: 30px; + text-decoration: none; +} diff --git a/vite.config.js b/vite.config.js new file mode 100644 index 000000000..6269f8e2f --- /dev/null +++ b/vite.config.js @@ -0,0 +1,39 @@ +import { resolve } from 'path'; +import { defineConfig } from 'vite'; +import handlebars from 'vite-plugin-handlebars'; + +export default defineConfig({ + root: resolve(__dirname, 'src'), + build: { + outDir: resolve(__dirname, 'dist'), + rollupOptions: { + input: { + index: resolve(__dirname, './src/index.html'), + entrance: resolve(__dirname, './src/entrance/entrance.html'), + registration: resolve( + __dirname, + './src/registration/registration.html' + ), + error: resolve(__dirname, './src/404/404.html'), + error2: resolve(__dirname, './src/500/500.html'), + profile: resolve(__dirname, './src/profile/profile.html'), + changeData: resolve(__dirname, './src/changeData/changeData.html'), + changePassword: resolve( + __dirname, + './src/changePassword/changePassword.html' + ), + }, + }, + }, + server: { + port: 3000, + }, + plugins: [ + handlebars({ + partialDirectory: resolve(__dirname, 'src/partials'), + context: { + username: 'PETER', + }, + }), + ], +});