diff --git a/.firebase/hosting.ZGlzdA.cache b/.firebase/hosting.ZGlzdA.cache index 6bafc1a1..8ee9e154 100644 --- a/.firebase/hosting.ZGlzdA.cache +++ b/.firebase/hosting.ZGlzdA.cache @@ -13,67 +13,61 @@ images/theme/moon.png,1711731929843,ecc5564241b756257cb0347fd5031911a05db78f3362 images/theme/sun.png,1711731877111,90764b30e4f78f1885649635408e42189e9017024ced3c14e365639cad53ae93 locales/en/buttons.json,1722640676672,6457953be047bb5cdab61a4989011c6d696a32bc222dfcd1a0da75436b70d4e9 locales/en/contacts.json,1713436022191,c08a7dc3c15d4ed3d6724eb97b48a565316f83bdcfa8e58214a37fdf393d1f80 -locales/en/dialogue.json,1722640676672,5efa149d7920741219dba88bf0323c3c676eca073c09aa2f3aad113ba13add5d locales/en/files-page.json,1722640676672,5b6eec4c9a5bc485274ad0588cbcb6d63eae86185a49d867798eb747dbc34586 locales/en/friends-page.json,1722640676673,f6e8fc0a406969cc9ee7350905c73b7e342429ce8a8f14dd841556c13f2ce73a locales/en/languages.json,1722640676673,86f84a724527c9fa36225e5c406f7789d96eafb5d53a6d7a46c0a3f8fb5565c4 locales/en/notification-links.json,1717197728718,c6ca4396072894e20ab3a2404c6eb1218fadae438479fd45f4d3f56504f89e3e locales/en/notification-messages.json,1718810762287,b2b11c9917926814ccb9e72747fc19199790603893e77aa42bb260639ab53cdf -locales/en/posts.json,1722640676674,efaa3101aca226b9f9b34b6f09912168173eaed2c931227dd2a7ee844f0ddf18 -locales/en/site-app.json,1722640676674,4dfffeb1f7ebc4ae595e1e5dccc05660e5a78e864d36cbedbd24f45c6c815a78 locales/en/translation.json,1720138557248,8ddf872227656476e67570fd01feb00d0128809bc7dc8ebffb21d0271ab99bee locales/en/validation-messages.json,1720138557248,e70e227061941c09f3c6fc8edaac0c8901e2d6996b920b474bf1cb2bf99bbb92 locales/ru/buttons.json,1722640676675,274cb5c783325a23cb4c37ae06e52ececf5cbee00677089492b700527cea54ac locales/ru/contacts.json,1713436000285,56e35639e20fc9a0f9dec41e88fc657bf93bcfda30f8b21445f67eeabbe05e83 -locales/ru/dialogue.json,1722640676675,1ad8badbce52200d995e6f2482eb37e383b14466171020cbf03661d85b88343e locales/ru/files-page.json,1722640676676,aefe193abbf8afe1eb6dc18e8f2be7ef96b3e25798c39ae4202f5785027dd258 locales/ru/friends-page.json,1722640676676,5f00b9e6df4fe71468c55213d5ee844826ec69324a6778a04364f1b50af50ff7 locales/ru/languages.json,1722640676676,bcc1511f9f2182d8b4284036d49a9a55f40233df1305194b039f711b998291ab locales/ru/notification-links.json,1717197714996,93debed3efca65418ebc093881b7abd6b5cd5022adc5bb4bb5e50caf35585019 locales/ru/notification-messages.json,1718810747453,21a636c8a6a295a8c5b379b28c1ba804a5edbddf0c31f18f2855f463204d5068 -locales/ru/posts.json,1722640676676,e5331a713de811ca626035e172dd279d6050db4213fb8e78958c6176dc6bb41f -locales/ru/site-app.json,1722640676677,32a582b1c5711c6f5a8b8098c69279cc8c841b1ab2bc2a23edf1cc74bf168c20 locales/ru/translation.json,1720138557249,a90362966bbafb6169e327c9a26519fa9a44710e65903d4d02b975385a9ef2e1 locales/ru/validation-messages.json,1720138557249,8fd4439f5798da6dc8874d810348e60b0831a68dfbe9202ceb9bd5109e3b7aa3 -index.html,1723270842639,ae2d6885879cace15cfd1e54de916747ddc6303f5cc3eed209538c329c921e99 -assets/Col-Dcn0nAZz.css,1723270842625,b0169bff5c69f064a01adaf98d8336de8acbb5928568d5ade4aa523870bd1ed2 -assets/AboutPage-BPMlePLX.js,1723270842626,30b68ecc15f5d01c8061ec34f080893a436ab54a202e01bc5ac5890ad5c5db72 -assets/CancelFriendRequestButton-Bc2ov5C5.js,1723270842625,f4d7442d6c6a26e23ccfa56ccffe8b63b76e0ff2c8fdd5e95ea719662f2a7164 -assets/Col-Dnvhie9R.js,1723270842636,2d8ace63795b6ac9663ed1117edba2d41dc6f9edfb3675d1d5336bebea13b702 -assets/DetailsBody-CZ11f3x2.css,1723270842625,48d353f49e4bad4369ee63e7bd030dbd37954ce921257b6df3d172aab1d7a7fd -assets/DetailsBody-CAFG7pXF.js,1723270842636,75003d4d2f7d04784441d2e61466eea526857b819f931560d2b2d9745f94316b -assets/DialoguesPage-p2QbX6iv.css,1723270842625,5371df0bddfb47681e48ce0ca9e7685896d51393f12ca607b881db4e695fc52c -assets/DomainSearchItem-Fu_ArJ80.js,1723270842635,ca5bf5fa67859039bb033d452cabfb696f4d484b785027681cde9f88978a649f -assets/FriendsPage-HrdWnbhx.js,1723270842635,6c4cda670e48e0ff5d84dfc0f7edf775817f1098610337e1525fb8a9a6366260 -assets/getStringDeltaByDates-yAKB53dz.js,1723270842626,490ecf7de2e2acc45d4bcea9e9a180cd4f7401e378017bf35f969bb231fb3984 -assets/DialoguesPage-BBJsSJeK.js,1723270842636,4944d4e372ed6ee25acf7895d36f8d1c2d2674249fc62412b0b52fcacb651c27 -assets/FilesPage-DsLhs2H8.css,1723270842625,7f03f9b8dfc3e946325275ce306771723e4f8b4969c30c705ec91118d680e7db -assets/FilesPage-w2s97J7I.js,1723270842636,18d4be6f975ec21e377368cfee91e44869ce49c7256a5b9eb672823c2396f60c -assets/GoToPrivateDialogue-D1h0wYIM.css,1723270842625,fac0d4187bd0cbdc14992af3b23d46938f4006b14c1e62c5fbdb67745f5db8d7 -assets/GlobalNotifications-DBQlkVUN.css,1723270842625,3e746c35b42c1364b1b3ab9ca8678890496af82a9a4958ab613710ef032ecef4 -assets/GoToPrivateDialogue-DnUdsYPp.js,1723270842636,65b953b5f2dfe488ee9d4b9947526bce7d4fa56d722f936a8484971517c94761 -assets/HomePage-BbM9EgaC.js,1723270842626,420ebfd356c03fd09b3629a94b92fd7544d1835885af028c4788e47260b11ca3 -assets/LanguagesPage-BIZLUTmp.css,1723270842625,4636f99ec7ed41d9f8c6acf2ef4a2b3b0afe15e00588b895736f7e2a75394d78 -assets/index-CIbVkkMz.css,1723270842621,86f2e104af4efeb1c96878d5e1eef64323b8c67ce04742d73b4b1a8b67af0ea4 -assets/private-dialogues.model-CJ7FPgbI.js,1723270842636,d3c97f178ae40bb7ffebacd9686d9dcb0e98e6d91b9c7b13cf9d0997d6258805 -assets/length.validator-CVQ0WEiF.js,1723270842634,f7843883210f7b9e8115dc77313cd388e5a4e4f116dca90f291716ade72b594d -assets/GlobalNotifications-DBFOWZ7p.js,1723270842639,1bd68b8cc39bdcaf9bdb8d6af7bcf4c12c0dbf9783c843f1dc39b88859c6cec8 -assets/LanguagesPage-DGQwiWEo.js,1723270842638,29017384b8adec52b91009fb55a65888ddab09ddee88a7826c375a72ed4548a7 -assets/Row-Dod_7oxk.js,1723270842638,9778606b53ba1258818e1a6ad7b051c3b465b8c27c5a93135917500bad9c1693 -assets/ProfilePage-BWNV_YvT.js,1723270842635,83d813f65a1942d812419e8eac30aef9765b8836e9f80142d527a2ceb0132f9f -assets/Row-B0z9ey_T.css,1723270842625,86bf20ca18e594e46a62ec042b9c024a6b0954291a23a927bfd64841fef05045 -assets/SearchPage-CojG2pJD.js,1723270842638,3387cd30534e270852573775f1597385577c4e05454c4ae31cb22193d3be4ccd -assets/SearchPage-CB9DbVNb.css,1723270842625,692f6d19fe571f2d0e86f525ac3e6ca8769716fffdc4fb214fcaf19def5d87a9 -assets/useDropdownController-BOzKRw5o.css,1723270842625,2757ffee441452fdea1610da57d51ac2a4c0a87e399e89a29e9d438a69066ea8 -assets/useDropdownController-CRrE4E2a.js,1723270842636,d19f6438c5cda2908188ab17d36ad4822db76c00554096294d82cb12e0b425ae -assets/UserAvatar-DRZg3fPw.js,1723270842638,90d7ea05bae098b25321b0609cf69d755775e1b0a50003cf2e0df23bd928be95 -assets/UserHeaderControlMenu-3on2FbRt.js,1723270842635,895c10b2ffbc7074d780db6353f8984553cf93acf630edd94be682c5846c5e01 -assets/UserAvatar-DQtQI0ov.css,1723270842625,8d97b33cd30166a4fe29b066914d212bfa3db656288342196cfeb9d7f10b1db7 -assets/UserContainer-BZbfYWEt.js,1723270842636,4a74bdbe5083216150ee23206a82e4f6e30568b864af6704634c901fbc83f6ee -assets/UserContainer-F13HVtWJ.css,1723270842625,6314e5c18b2a5f851950229b83263947f9607a87c0f91836ae0d85a9d35007c9 -assets/UserHeaderControlMenu-pg-d7lCs.css,1723270842625,1a82bf08219ea9b0e58d5ebe87e1a4b41401084530075888e680b6c37814f618 -assets/UserPreviewItem-BmqGmp9k.js,1723270842636,99142eecf7c0e3b749e696ec99fb39342619d5360266e5f0981d0b642d5a1635 -assets/UserPreviewItem-zAugQ05Z.css,1723270842625,388b460157f95c19e002e8399ec60cef9c766985c755950d8ff5e9e56cf48423 -assets/Virtual-pH_fEyFi.css,1723270842625,25048b873d6f04ac20fb970ec92e02b013054f5c311b705b16f752e90ea2ad70 -assets/Virtual-C0SEvTms.js,1723270842636,045a733473e7b3e2ae4004be4595cb6d864a7a3d1a0ae8edbb8dc4ef8dda63ef -assets/index-CjqgGMGy.js,1723270842657,aebb635828584352cd76a929e6a4c5c6c5f72c9b494c7f09a30e0d01e35294aa +index.html,1723285967376,f4ad2c165a49cccaff0a8422a0be869a8ef2657547d46fb5de7c70d74b30e853 +assets/AboutPage-DkLAFBIK.js,1723285967375,7138924b8183dc13d2a03f2d1257f7c73ce02ab9f9d8dd9e693634cc37cc1e1b +assets/CancelFriendRequestButton-DceLneRl.js,1723285967373,93c20ad8924f1687b82f24c38f0bc25f027d086e13efbd86c076da629b6d10b8 +assets/ButtonWithLoading-B4iPPAN8.css,1723285967373,da55a6b67d4b85652b3a58aa04fb20c6f2b428338c45a3e52a39e5cdb5db45dd +assets/ButtonWithLoading-xzTclFjq.js,1723285967375,efea44cf81e85375ca9aaf045eb2138740f74f4b68bda9a8e1e7b7f2268af0a4 +assets/DetailsBody-MDcPhNp8.js,1723285967373,f8f7f8678eadb059ccdd9ac2528f3d5bb3ab3bc60d630b519e030e1f9760abfb +assets/DetailsBody-CZ11f3x2.css,1723285967372,48d353f49e4bad4369ee63e7bd030dbd37954ce921257b6df3d172aab1d7a7fd +assets/DomainSearchItem-BW7wU-Zd.js,1723285967373,8540ab2adab51d6242105bbea1d4298fc89f1676278c7b70de2c038a954819a4 +assets/DialoguesPage-BLhK9S9x.css,1723285967372,23786c6fda602557fc5205a65a7fa5921a4bbf75642791d3c7a04f6de7748c48 +assets/FriendsPage-BYenYjnr.js,1723285967375,fc8d8cb33b1c3b346a241db131603d34844c82893bc033b29aa3c2f850039b5b +assets/DialoguesPage-5xxOpVzb.js,1723285967376,6fc968ee1abc72b8fb6e43ef7680a4b5b829591d8541cbce6066ccdf0b452028 +assets/GlobalNotifications-BWu17GVE.css,1723285967372,6580dc9993ccfe82727bfae4b5bf3296702809dfb50b1164c0f87ff8e2e2210c +assets/GoToPrivateDialogue-D1h0wYIM.css,1723285967372,fac0d4187bd0cbdc14992af3b23d46938f4006b14c1e62c5fbdb67745f5db8d7 +assets/FilesPage-D2VR_xEf.js,1723285967376,733ff565946d3eeb57b2e9704d5e4010d37ebb7189474c3a0bb6acc31bb33e8b +assets/FilesPage-DsLhs2H8.css,1723285967372,7f03f9b8dfc3e946325275ce306771723e4f8b4969c30c705ec91118d680e7db +assets/HomePage-BKFWWiUf.js,1723285967372,5be24fa88f8704b3d2dc9198e057630146478e7e8f28a3f9c14dd788042f9c4d +assets/GoToPrivateDialogue-jUH7iBfJ.js,1723285967375,f52c2726a3cc60e7379548b3ceb9aa08e3cb51c282c15e517203eec37bc09871 +assets/LanguagesPage-BIZLUTmp.css,1723285967372,4636f99ec7ed41d9f8c6acf2ef4a2b3b0afe15e00588b895736f7e2a75394d78 +assets/length.validator-CVQ0WEiF.js,1723285967373,f7843883210f7b9e8115dc77313cd388e5a4e4f116dca90f291716ade72b594d +assets/GlobalNotifications-CiMlI6Pk.js,1723285967375,07998d86bea6a9a0e29cef4449db9f32d8ae47c26344f505ea0071d55fdd3eaf +assets/index-D6t8S9A8.css,1723285967371,f872d6c2ddf8c81b4ea7a45a5dc45e3563bdafe9405ab1cbd9515c1bcbb075c1 +assets/LanguagesPage-BnoMgeNo.js,1723285967376,88b7b823190f93b3144234198298680bebabac6289c87f28e9048590d0b7e27a +assets/private-dialogues.model-CBKjfzpE.js,1723285967373,a6daa8c7ab7c509b00260aafd6682f988829698d592ba9b6961f56830ee5e7fe +assets/ProfilePage-sR7na8RM.js,1723285967373,0f67bb3aab317bca8e530b03d0eb646fdc7404e120a0f0141eaaa00ee6fd452c +assets/private-messages.model-0jbUQF7H.js,1723285967373,f257a0d026bd692b70d2fdd5a0642887ae06024a9d363c5ec800b6996fecf3c6 +assets/SearchPage-BILr4DUX.js,1723285967376,90e3294592cde29b692d50ecc23c9dd16da6c2ee028991158fa9e2fea408943a +assets/SearchPage-CB9DbVNb.css,1723285967372,692f6d19fe571f2d0e86f525ac3e6ca8769716fffdc4fb214fcaf19def5d87a9 +assets/UserContainer-DrzwvyPw.css,1723285967372,3d3575922d07d3c2099672570203fad23fed843b98ea053b69cae0fca6b99edd +assets/UserPreviewItem-zAugQ05Z.css,1723285967372,388b460157f95c19e002e8399ec60cef9c766985c755950d8ff5e9e56cf48423 +assets/UserContainer-BlAAMb2B.js,1723285967375,2f929383e1b328606fe5f530ab5bf03f42b5f6c6f8434e1d833ff8ab4ba61902 +assets/UserPreviewItem-DugrCG3f.js,1723285967376,a85c344af5e9edb660ef7ae242ca1ca7322545a08860510d43869933e8260d9f +assets/Virtual-BgcJ6Uwh.css,1723285967372,15cc5277293cc94b2419cbd0590ae49573a2634eb63f51072906ecda8997fd22 +locales/en/dialogue.json,1723271857959,a8b0ccff67232fe7edd7f5e2b7e69e8ba7cf6319d6d07960be17b2c333abcac5 +locales/en/notifications.json,1723272171971,42e709b093572646004a0e252aab519277e5927a55d775fcbdd9a28d7659ce30 +assets/Virtual-Dxci-_TT.js,1723285967375,56bfbc51664bdcab305eb586c7138eae5009a17c8a0cfd4d87ace320ac26d21d +locales/en/site-app.json,1723280937491,dc1728ac1cff377564e5b80a87a49ff0daaacd8fe574fd8cab0e7e92c83836ae +locales/en/posts.json,1723272960332,69efb3469ba98afe0267d2fe1b9f3c7b1768f6f15543e6a608a1b6904dd97baa +locales/ru/notifications.json,1723272174474,a5df04a96c73c3435606c00c756a13facbd2217ece57c8f9d33516109f6683d4 +locales/ru/dialogue.json,1723271849045,c87801b64b6ca0e3c06d4b028e72d366daa7d342c897aacee3f9c635216fa332 +locales/ru/posts.json,1723272947645,895b6604f1acf4d15d02b13ba3a72832ee2dd575402846e0de06c6895718553c +locales/ru/site-app.json,1723280917884,3b3e2f38e3536ac130962ddd6889221b761dcf63c4b5e7ef639bb8f7f6d6c242 +assets/index-CnM0dBaz.js,1723285967376,3d51d6428fceb8b86c6b31b4cfb5d20470e76796d29b6ec1285e1ff4c34b59a8 diff --git a/public/locales/en/site-app.json b/public/locales/en/site-app.json index 533e1e43..ea124251 100644 --- a/public/locales/en/site-app.json +++ b/public/locales/en/site-app.json @@ -13,5 +13,7 @@ "open_navigation_menu": "Open menu", "close_navigation_menu": "Close menu", "open_user_menu": "Open user menu", - "close_user_menu": "Close user menu" + "close_user_menu": "Close user menu", + "open_user_notifications": "Open notifications", + "close_user_notifications": "Close notifications" } \ No newline at end of file diff --git a/public/locales/ru/site-app.json b/public/locales/ru/site-app.json index 5779738a..d6853eab 100644 --- a/public/locales/ru/site-app.json +++ b/public/locales/ru/site-app.json @@ -13,5 +13,7 @@ "open_navigation_menu": "Открыть меню", "close_navigation_menu": "Закрыть меню", "open_user_menu": "Открыть меню пользователя", - "close_user_menu": "Закрыть меню пользователя" + "close_user_menu": "Закрыть меню пользователя", + "open_user_notifications": "Открыть уведомления", + "close_user_notifications": "Закрыть уведомления" } \ No newline at end of file diff --git a/src/entities/post/item/Post/ui/Post.module.scss b/src/entities/post/item/Post/ui/Post.module.scss index 90a95171..1bed8099 100644 --- a/src/entities/post/item/Post/ui/Post.module.scss +++ b/src/entities/post/item/Post/ui/Post.module.scss @@ -13,7 +13,7 @@ gap : var(--offset-small); padding : var(--offset-small); border-radius : var(--offset-small); - background : var(--bg-second-color); + background : var(--bg-ghost-color); .info { display : flex; diff --git a/src/pages/DialoguesPage/ui/DialoguesPage.module.scss b/src/pages/DialoguesPage/ui/DialoguesPage.module.scss index a8d40fdb..89558344 100644 --- a/src/pages/DialoguesPage/ui/DialoguesPage.module.scss +++ b/src/pages/DialoguesPage/ui/DialoguesPage.module.scss @@ -12,7 +12,8 @@ padding : var(--offset-small); .list { - gap : var(--offset-small); + gap : var(--offset-small); + padding : var(--offset-small); } } diff --git a/src/shared/layout/site/SiteMainLayout/ui/SiteMainLayout.tsx b/src/shared/layout/site/SiteMainLayout/ui/SiteMainLayout.tsx index 97bdd54e..1fd56734 100644 --- a/src/shared/layout/site/SiteMainLayout/ui/SiteMainLayout.tsx +++ b/src/shared/layout/site/SiteMainLayout/ui/SiteMainLayout.tsx @@ -10,7 +10,11 @@ import { } from 'react'; import classNames from 'classnames'; import css from './SiteMainLayout.module.scss'; -import { IoClose, IoMenu, IoPersonCircle } from 'react-icons/io5'; +import { + IoClose, + IoMenu, + IoNotifications, +} from 'react-icons/io5'; import { inert } from '@/shared/lib/react/inert.ts'; import { keyboardClose } from '@/shared/lib/react/keyboardClose.ts'; import { noEvent } from '@/shared/lib/react/noEvent.ts'; @@ -116,21 +120,22 @@ export const SiteMainLayout: FC = memo(function SiteMainLay diff --git a/src/shared/ui-kit/box/Virtual/ui/Virtual.module.scss b/src/shared/ui-kit/box/Virtual/ui/Virtual.module.scss index 8eba3276..623d7ab5 100644 --- a/src/shared/ui-kit/box/Virtual/ui/Virtual.module.scss +++ b/src/shared/ui-kit/box/Virtual/ui/Virtual.module.scss @@ -1,3 +1,5 @@ +$scroll-width : 10px; + .container { overflow : hidden; width : 100%; @@ -26,7 +28,7 @@ position : absolute; overflow : hidden; top : 0; - right : 1px; + right : 0; width : 0; height : 100%; background : var(--bg-ghost-color); @@ -85,11 +87,11 @@ .scrollContainer, .permanent, .loader { - padding-right : 12px; + padding-right : calc($scroll-width + var(--offset-small)); } .scrollBar { - width : 10px; + width : $scroll-width; } } } \ No newline at end of file diff --git a/src/shared/ui-kit/divider/Divider/ui/Divider.module.scss b/src/shared/ui-kit/divider/Divider/ui/Divider.module.scss new file mode 100644 index 00000000..0e90e37e --- /dev/null +++ b/src/shared/ui-kit/divider/Divider/ui/Divider.module.scss @@ -0,0 +1,11 @@ +.container { + width : 0; + height : 100%; + border-right : 1px solid var(--bg-ghost-color); + + &.horizontal { + width : 100%; + height : 0; + border-bottom : 1px dashed var(--bg-ghost-color); + } +} \ No newline at end of file diff --git a/src/shared/ui-kit/divider/Divider/ui/Divider.tsx b/src/shared/ui-kit/divider/Divider/ui/Divider.tsx new file mode 100644 index 00000000..989111f2 --- /dev/null +++ b/src/shared/ui-kit/divider/Divider/ui/Divider.tsx @@ -0,0 +1,28 @@ +import { ComponentPropsWithoutRef, FC, memo } from 'react'; +import classNames from 'classnames'; +import css from './Divider.module.scss'; + + +export enum DividerType { + VERTICAL, + HORIZONTAL +} + +export type DividerProps = + { + type: DividerType + } + & ComponentPropsWithoutRef<'div'>; + +export const Divider: FC = memo(function Divider (props) { + const { + type = DividerType.VERTICAL, + className, + ...other + } = props; + + return ( +
+ ); +}); \ No newline at end of file diff --git a/src/shared/ui-kit/inputs/InputWithError/ui/InputWithError.module.scss b/src/shared/ui-kit/inputs/InputWithError/ui/InputWithError.module.scss index f0573c16..240eca19 100644 --- a/src/shared/ui-kit/inputs/InputWithError/ui/InputWithError.module.scss +++ b/src/shared/ui-kit/inputs/InputWithError/ui/InputWithError.module.scss @@ -48,6 +48,7 @@ transition : var(--transition-medium); color : var(--bg-main-foreground-color); box-shadow : 0 0 0 0 transparent; + height : 30px; &:focus { box-shadow : 0 0 0 1px var(--primary-color), 0 5px 25px -5px var(--primary-color); diff --git a/src/shared/ui-kit/links/Link/ui/Link.module.scss b/src/shared/ui-kit/links/Link/ui/Link.module.scss index bffafef8..25bb2726 100644 --- a/src/shared/ui-kit/links/Link/ui/Link.module.scss +++ b/src/shared/ui-kit/links/Link/ui/Link.module.scss @@ -7,8 +7,7 @@ transition : var(--transition-medium); &:hover { - cursor : pointer; - text-decoration : underline; + cursor : pointer; } &.primary { @@ -19,7 +18,8 @@ color : var(--on-primary-text-color); } - &:focus { + &:focus, + &:hover { box-shadow : 0 0 0 2px var(--bg-main-color), 0 0 0 4px var(--primary-color); background : var(--bg-main-color); } @@ -33,7 +33,8 @@ color : var(--on-second-text-color); } - &:focus { + &:focus, + &:hover { box-shadow : 0 0 0 2px var(--bg-main-color), 0 0 0 4px var(--second-color); background : var(--bg-main-color); } @@ -47,7 +48,9 @@ color : var(--on-ghost-text-color); } - &:focus { + &:focus, + &:hover { + color : var(--text-main-color); box-shadow : 0 0 0 2px var(--bg-main-color), 0 0 0 4px var(--ghost-color); background : var(--bg-main-color); } diff --git a/src/widgets/notification/GlobalNotifications/ui/GlobalNotifications.module.scss b/src/widgets/notification/GlobalNotifications/ui/GlobalNotifications.module.scss index 9cb6ab43..6f132abc 100644 --- a/src/widgets/notification/GlobalNotifications/ui/GlobalNotifications.module.scss +++ b/src/widgets/notification/GlobalNotifications/ui/GlobalNotifications.module.scss @@ -3,6 +3,7 @@ position : relative; .list { - gap : var(--offset-small); + padding : var(--offset-small); + gap : var(--offset-small); } } \ No newline at end of file diff --git a/src/widgets/private-dialogue/PrivateDialogueWindow/PrivateDialogueWindowHeader/ui/PrivateDialogueWindowHeader.module.scss b/src/widgets/private-dialogue/PrivateDialogueWindow/PrivateDialogueWindowHeader/ui/PrivateDialogueWindowHeader.module.scss index f2be26d2..0814e1d0 100644 --- a/src/widgets/private-dialogue/PrivateDialogueWindow/PrivateDialogueWindowHeader/ui/PrivateDialogueWindowHeader.module.scss +++ b/src/widgets/private-dialogue/PrivateDialogueWindow/PrivateDialogueWindowHeader/ui/PrivateDialogueWindowHeader.module.scss @@ -2,7 +2,7 @@ width : 100%; padding : var(--offset-small); background : var(--bg-ghost-color); - border-radius : var(--offset-medium); + border-radius : var(--offset-small); display : flex; justify-content : space-between; align-items : center; diff --git a/src/widgets/private-dialogue/PrivateDialogueWindow/PrivateDialogueWindowInput/PrivateDialogueWindowInput.module.scss b/src/widgets/private-dialogue/PrivateDialogueWindow/PrivateDialogueWindowInput/PrivateDialogueWindowInput.module.scss index 262a32b2..98b25ef3 100644 --- a/src/widgets/private-dialogue/PrivateDialogueWindow/PrivateDialogueWindowInput/PrivateDialogueWindowInput.module.scss +++ b/src/widgets/private-dialogue/PrivateDialogueWindow/PrivateDialogueWindowInput/PrivateDialogueWindowInput.module.scss @@ -1,7 +1,7 @@ .container { width : 100%; background : var(--bg-ghost-color); - border-radius : var(--offset-medium); + border-radius : var(--offset-small); padding : var(--offset-small); display : flex; align-items : center; diff --git a/src/widgets/private-dialogue/PrivateDialogueWindow/ui/PrivateDialogueWindow.module.scss b/src/widgets/private-dialogue/PrivateDialogueWindow/ui/PrivateDialogueWindow.module.scss index c4bde41e..494e7708 100644 --- a/src/widgets/private-dialogue/PrivateDialogueWindow/ui/PrivateDialogueWindow.module.scss +++ b/src/widgets/private-dialogue/PrivateDialogueWindow/ui/PrivateDialogueWindow.module.scss @@ -1,4 +1,4 @@ -$header-height : 43px; +$header-height : 40px; $input-height : 50px; $right-side-width : 400px; diff --git a/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationLink/SiteNavigationLink.module.scss b/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationLink/SiteNavigationLink.module.scss index 42eff16d..8c89e2b7 100644 --- a/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationLink/SiteNavigationLink.module.scss +++ b/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationLink/SiteNavigationLink.module.scss @@ -1,7 +1,3 @@ -.li { - width : 30px; -} - .container { width : 100%; white-space : nowrap; @@ -41,13 +37,26 @@ } &.ghost { - background : var(--bg-second-color); + background : var(--bg-ghost-color); color : var(--text-second-color); &:focus, &:hover { + color : var(--text-main-color); box-shadow : 0 0 0 2px var(--bg-main-color), 0 0 0 4px var(--ghost-color); } } } + + &:hover { + width : 100%; + height : fit-content; + background : var(--bg-ghost-color); + border-radius : var(--offset-small); + transition : var(--transition-fast); + + .icon { + box-shadow : none !important; + } + } } \ No newline at end of file diff --git a/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationLink/SiteNavigationLink.tsx b/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationLink/SiteNavigationLink.tsx index d9ec84ee..4b792447 100644 --- a/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationLink/SiteNavigationLink.tsx +++ b/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationLink/SiteNavigationLink.tsx @@ -14,18 +14,16 @@ export const SiteNavigationLink: FC = memo(function Sit const { className, icon, children, styleType, ...other } = props; return ( -
  • - + { icon } - { children } - -
  • + { children } + ); }); \ No newline at end of file diff --git a/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationMenu/SiteNavigationMenu.tsx b/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationMenu/SiteNavigationMenu.tsx index ec3c9200..61f406ce 100644 --- a/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationMenu/SiteNavigationMenu.tsx +++ b/src/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationMenu/SiteNavigationMenu.tsx @@ -41,54 +41,62 @@ export const SiteNavigationMenu: FC = memo(function Sit className={ classNames(css.container, {}, [ className ]) }>
      - } - styleType={ LinkStyleType.GHOST } - target="_blank" - to="https://github.com/VanyaMate/product" - > - { t('github', { ns: 'contacts' }) } - - } - styleType={ LinkStyleType.GHOST } - target="_blank" - to="https://vk.com/vanya_mate" - > - { t('vk', { ns: 'contacts' }) } - +
    • + } + styleType={ LinkStyleType.GHOST } + target="_blank" + to="https://github.com/VanyaMate/product" + > + { t('github', { ns: 'contacts' }) } + +
    • +
    • + } + styleType={ LinkStyleType.GHOST } + target="_blank" + to="https://vk.com/vanya_mate" + > + { t('vk', { ns: 'contacts' }) } + +
    diff --git a/src/widgets/user/button/UserProfileOrAuthButton/ui/UserProfileOrAuthButton.tsx b/src/widgets/user/button/UserProfileOrAuthButton/ui/UserProfileOrAuthButton.tsx index 87e12bc4..15ed1c01 100644 --- a/src/widgets/user/button/UserProfileOrAuthButton/ui/UserProfileOrAuthButton.tsx +++ b/src/widgets/user/button/UserProfileOrAuthButton/ui/UserProfileOrAuthButton.tsx @@ -2,17 +2,17 @@ import { FC, memo } from 'react'; import { OpenUserAuthFormButton, } from '@/widgets/user/button/OpenUserAuthFormButton/ui/OpenUserAuthFormButton.tsx'; -import { - UserHeaderControlMenuAsync, -} from '@/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.async.tsx'; import { useStore } from '@vanyamate/sec-react'; import { $authUser } from '@/app/model/auth/auth.model.ts'; +import { + UserHeaderControlMenu, +} from '@/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.tsx'; export const UserProfileOrAuthButton: FC = memo(function UserProfileOrAuthButton () { const userData = useStore($authUser); return userData - ? + ? : ; }); \ No newline at end of file diff --git a/src/widgets/user/menu/UserControlMenu/ui/UserControlMenu.tsx b/src/widgets/user/menu/UserControlMenu/ui/UserControlMenu.tsx index 1f811af6..6e03e242 100644 --- a/src/widgets/user/menu/UserControlMenu/ui/UserControlMenu.tsx +++ b/src/widgets/user/menu/UserControlMenu/ui/UserControlMenu.tsx @@ -1,9 +1,6 @@ import { ComponentPropsWithoutRef, FC, memo } from 'react'; import classNames from 'classnames'; import css from './UserControlMenu.module.scss'; -import { - UserLogoutButton, -} from '@/features/user/button/UserLogoutButton/ui/UserLogoutButton.tsx'; import { UserSettingsLink, } from '@/features/user/link/UserSettingsLink/ui/UserSettingsLink.tsx'; @@ -24,10 +21,11 @@ export const UserControlMenu: FC = memo(function UserContr { ...other } className={ classNames(css.container, {}, [ className ]) } > - -
  • - + +
  • +
  • +
  • ); diff --git a/src/widgets/user/menu/UserHeaderControlMenu/_story/UserHeaderControlMenu.story.tsx b/src/widgets/user/menu/UserHeaderControlMenu/_story/UserHeaderControlMenu.story.tsx deleted file mode 100644 index 797c8ae4..00000000 --- a/src/widgets/user/menu/UserHeaderControlMenu/_story/UserHeaderControlMenu.story.tsx +++ /dev/null @@ -1,32 +0,0 @@ -import { Meta, StoryObj } from '@storybook/react'; -import { fn } from '@storybook/test'; -import { UserHeaderControlMenu } from '../ui/UserHeaderControlMenu.tsx'; - - -const meta = { - title : 'entities/user/button/UserHeaderControlMenu', - component: UserHeaderControlMenu, - tags : [ 'autodocs' ], - argTypes : { - user: { - id : '1', - username: 'User123', - }, - }, - args : { - onClick: fn(), - }, -} satisfies Meta; - -export default meta; -type Story = StoryObj; - -export const Default: Story = { - args: { - user : { - id : '1', - username: 'User123', - }, - onClick: fn(), - }, -}; \ No newline at end of file diff --git a/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.async.tsx b/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.async.tsx deleted file mode 100644 index 24357542..00000000 --- a/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.async.tsx +++ /dev/null @@ -1,23 +0,0 @@ -import { FC, lazy, memo, Suspense } from 'react'; -import { - ErrorBoundary, -} from '@/shared/ui-kit/errors/ErrorBoundary/ui/ErrorBoundary.tsx'; -import { Loader } from '@/shared/ui-kit/loaders/Loader/ui/Loader.tsx'; - - -export const UserHeaderControlMenu = lazy(async () => { - const { UserHeaderControlMenu } = await import('./UserHeaderControlMenu.tsx'); - return { default: UserHeaderControlMenu }; -}); - -export type UserHeaderControlMenuAsyncProps = {}; - -export const UserHeaderControlMenuAsync: FC = memo(function UserHeaderControlMenuAsync () { - return ( - }> - - - - - ); -}); \ No newline at end of file diff --git a/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.module.scss b/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.module.scss index 38942547..dfbaf85f 100644 --- a/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.module.scss +++ b/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.module.scss @@ -1,5 +1,10 @@ .container { - display : flex; - gap : var(--offset-small); - align-items : center; + .button { + padding : 0 var(--offset-small); + + .avatar { + width : 26px; + height : 26px; + } + } } \ No newline at end of file diff --git a/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.tsx b/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.tsx index fd295202..300bd168 100644 --- a/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.tsx +++ b/src/widgets/user/menu/UserHeaderControlMenu/ui/UserHeaderControlMenu.tsx @@ -1,20 +1,48 @@ import { FC, memo } from 'react'; import css from './UserHeaderControlMenu.module.scss'; -import { - UserPreviewItem, -} from '@/entities/user/item/UserPreviewItem/ui/UserPreviewItem.tsx'; import { useStore } from '@vanyamate/sec-react'; import { $authUser } from '@/app/model/auth/auth.model.ts'; +import { Dropdown } from '@/shared/ui-kit/modal/Dropdown/ui/Dropdown.tsx'; +import { + useDropdownController, +} from '@/shared/ui-kit/modal/Dropdown/hooks/useDropdownController.ts'; +import { Button } from '@/shared/ui-kit/buttons/Button/ui/Button.tsx'; +import { + UserAvatar, +} from '@/entities/user/avatar/UserAvatar/ui/UserAvatar.tsx'; +import { ButtonStyleType } from '@/shared/ui-kit/buttons/Button/types/types.ts'; +import { + UserHeaderDropdownMenu, +} from '@/widgets/user/menu/UserHeaderDropdownMenu/ui/UserHeaderDropdownMenu.tsx'; export type UserHeaderProfileButtonProps = {}; export const UserHeaderControlMenu: FC = memo(function UserHeaderControlMenu () { const userData = useStore($authUser); + const dropdown = useDropdownController(); return ( -
    - -
    + + } + > + + ); }); \ No newline at end of file diff --git a/src/widgets/user/menu/UserHeaderDropdownMenu/ui/UserHeaderDropdownMenu.module.scss b/src/widgets/user/menu/UserHeaderDropdownMenu/ui/UserHeaderDropdownMenu.module.scss new file mode 100644 index 00000000..77cef841 --- /dev/null +++ b/src/widgets/user/menu/UserHeaderDropdownMenu/ui/UserHeaderDropdownMenu.module.scss @@ -0,0 +1,25 @@ +.container { + width : 250px; + max-width : 100%; + align-items : center; + + .divider { + margin : var(--offset-small) + } + + .avatar { + width : 100px; + height : 100px; + border-radius : 50%; + overflow : hidden; + } + + .link { + width : 100%; + height : fit-content; + } + + .button { + width : 100%; + } +} \ No newline at end of file diff --git a/src/widgets/user/menu/UserHeaderDropdownMenu/ui/UserHeaderDropdownMenu.tsx b/src/widgets/user/menu/UserHeaderDropdownMenu/ui/UserHeaderDropdownMenu.tsx new file mode 100644 index 00000000..3d0cbcb2 --- /dev/null +++ b/src/widgets/user/menu/UserHeaderDropdownMenu/ui/UserHeaderDropdownMenu.tsx @@ -0,0 +1,66 @@ +import { ComponentPropsWithoutRef, FC, memo } from 'react'; +import classNames from 'classnames'; +import css from './UserHeaderDropdownMenu.module.scss'; +import { Col } from '@/shared/ui-kit/box/Col/ui/Col.tsx'; +import { + UserAvatar, +} from '@/entities/user/avatar/UserAvatar/ui/UserAvatar.tsx'; +import { useStore } from '@vanyamate/sec-react'; +import { $authUser } from '@/app/model/auth/auth.model.ts'; +import { + Divider, + DividerType, +} from '@/shared/ui-kit/divider/Divider/ui/Divider.tsx'; +import { Link } from '@/shared/ui-kit/links/Link/ui/Link.tsx'; +import { IoLogOut, IoSettings } from 'react-icons/io5'; +import { LinkStyleType } from '@/shared/ui-kit/links/Link/types/types.ts'; +import { + ButtonWithFixes, +} from '@/shared/ui-kit/buttons/ButtonWithFixes/ui/ButtonWithFixes.tsx'; +import { ButtonStyleType } from '@/shared/ui-kit/buttons/Button/types/types.ts'; +import { useTranslation } from 'react-i18next'; +import { + SiteNavigationLink, +} from '@/widgets/site/navigation/SiteNavigationMenu/ui/SiteNavigationLink/SiteNavigationLink.tsx'; + + +export type UserHeaderDropdownMenuProps = + {} + & ComponentPropsWithoutRef<'div'>; + +export const UserHeaderDropdownMenu: FC = memo(function UserHeaderDropdownMenu (props) { + const { className, ...other } = props; + const userData = useStore($authUser); + const { t } = useTranslation(); + + return ( + + + { userData.login } + + } + styleType={ LinkStyleType.GHOST } + to="/settings" + > + { t('user_settings_page') } + + + } + styleType={ ButtonStyleType.DANGER } + > + { t('logout_button') } + + + ); +}); \ No newline at end of file diff --git a/src/widgets/user/menu/UserRightSideMenu/ui/UserRightSideMenu.module.scss b/src/widgets/user/menu/UserRightSideMenu/ui/UserRightSideMenu.module.scss index b6de620c..4fe0d1e0 100644 --- a/src/widgets/user/menu/UserRightSideMenu/ui/UserRightSideMenu.module.scss +++ b/src/widgets/user/menu/UserRightSideMenu/ui/UserRightSideMenu.module.scss @@ -5,10 +5,13 @@ height : 100%; .buttons { - height : 50px; + height : 40px; + background : var(--bg-ghost-color); + padding : var(--offset-small); + border-radius : var(--offset-small); } .notifications { - height : calc(100% - 50px); + height : calc(100% - 40px - var(--offset-medium)); } } \ No newline at end of file